Commit graph

58 commits

Author SHA1 Message Date
Olivier Goffart
8ecc834333 LSP: forward the diagnostic from the preview to the editor
Because the preview might have more diagnostics.
2021-05-18 16:12:30 +02:00
Olivier Goffart
fd2f8eb3fb Make sure to make the UI thread also exit when the LSP server panics 2021-05-07 11:54:30 +02:00
Olivier Goffart
3ebeb1654c LSP: don't advertize things we don't support 2021-05-07 11:15:09 +02:00
Simon Hausmann
7240f5c5e9 Fix loading of relative paths on Windows
We use std::fs::canonicalize() and that may produce paths like

    `\\\\?\\C:\\foobar\\baz.60`

where the leading `\?` disables all parsing.

When `baz.60` imports another `.60` file using a relative path `../fob.60`,
we call `Path::join()`, which really just appends strings, producing

    ``\\\\?\\C:\\foobar\\../fob.60`

When calling `canonicalize()` again on this path, the function fails,
because any parsing was disabled,
so neither the forward slash nor the .. are resolved.

So while the forward slash handling could be solved with `components()` we
still run into

    https://users.rust-lang.org/t/unable-to-parse-relative-directories-in-windows-unc-paths/8164

To circumvent all this, use the dunce crate to canonicalize in a way on Windows
that avoids UNC paths.
2021-04-27 11:02:23 +02:00
Olivier Goffart
f620351cbf Go to definition of structs
Also add the struct in the outline
2021-04-24 15:06:58 +02:00
Olivier Goffart
f0050c2a08 LSP: add outline 2021-04-24 15:06:58 +02:00
Olivier Goffart
847f3b26e4 Hide internal type in auto-completions 2021-04-23 15:06:37 +02:00
Olivier Goffart
5f15c9b363 LSP: goto definition on a "PREVIEW" comment will show the preview 2021-04-23 14:45:48 +02:00
Olivier Goffart
dc7a782fd5 LSP: don't advertize things we don't support 2021-04-22 20:15:07 +02:00
Simon Hausmann
e6d8f0c900 lsp: Provide a simple implementation of the color representation request
This allows conveniently picking colors through the color picker, for recognized
color literals.
2021-04-20 11:23:55 +02:00
Olivier Goffart
59654472d2 LSP: color providers 2021-04-18 23:27:14 +02:00
Olivier Goffart
63844a5907 LSP: auto-completion in paths
For import and @image
2021-04-18 15:16:12 +02:00
Olivier Goffart
80e92e3ed5 LSP: Use snippets for keyword completion 2021-04-18 13:14:41 +02:00
Olivier Goffart
06f2223bb2 LSP: move code around 2021-04-17 12:50:47 +02:00
Olivier Goffart
131f4d6682 LSP: Improvements on complete ergonomics 2021-04-17 08:57:42 +02:00
Olivier Goffart
deaaef8cd3 LSP Preview: detect if the component to preview is a Window
Then we don't need to wrap Window in Window
2021-04-16 11:34:21 +02:00
Olivier Goffart
546d4aa689 LSP: completion of property names in binding
If there is already a ':' or a '=>'
2021-04-16 11:34:21 +02:00
Olivier Goffart
fe14099af9 Go to definition of callback connection and two ways binding 2021-04-16 09:23:44 +02:00
Olivier Goffart
702b3fc67a Jump to definition of a property 2021-04-16 08:59:33 +02:00
Olivier Goffart
4ce2929b34 LSP: Move the completion code to its own module 2021-04-16 07:59:16 +02:00
Olivier Goffart
bcce36385d LSP: code action to preview a particular component 2021-04-15 18:55:57 +02:00
Olivier Goffart
0e69ac1036 LSP: Auto complete the class names 2021-04-14 19:19:51 +02:00
Olivier Goffart
a3d29c6ba0 LSP: Jump to definition when the cursor is in a import statement 2021-04-14 18:50:12 +02:00
Olivier Goffart
130cc22207 LSP: fix completion or go to symbol of the file url constains special characters
such as space or so.
We were not decoding the URL properly if the URL was encoded
2021-04-14 18:09:44 +02:00
Olivier Goffart
9ce63b80b9 VS extension: Add a status bar bar item with status of the preview 2021-04-14 15:01:25 +02:00
Olivier Goffart
84e0b24550 Some refactoring of the syntax_nodes module
Ensure that the node always contains the write kind by panicking
if it doesn't.

Add some documentation for the macro that declares them
2021-04-14 11:46:49 +02:00
Olivier Goffart
7a65f31cc1 the source_file is not optional 2021-04-13 17:26:24 +02:00
Olivier Goffart
84501e630a Rename SyntaxNodeWithSourceFile to SyntaxNode
Same for SyntaxToken
2021-04-13 17:10:56 +02:00
Olivier Goffart
bc757d2367 LSP: disable the debug tooltip 2021-04-12 19:54:50 +02:00
Simon Hausmann
ae5eb7b24a Fix updates of the preview on Windows
Use the same cannonical path for `preview::load_preview` and `preview::set_contents`.
Rust's `cannonicalize()` function produces a UNC path, so it's important to use
on both call sites to that we can find the same doc.
2021-04-09 17:56:49 +02:00
Simon Hausmann
5e8b738b70 Don't automatically show the preview window when reloading
When the user closes the window explicitly, don't make it suddnely pop up again when editing the .60.
2021-04-09 10:32:03 +02:00
Olivier Goffart
8a08e06ee0 LSP: fix completion of properties for local items 2021-04-08 07:54:15 +02:00
Olivier Goffart
81ebb2177e LSP: completion of properties 2021-04-07 23:55:46 +02:00
Olivier Goffart
4f35865a00 Fix panic of the LSP when queriing a token that is not in the document
This can happen in case of parse error, then the document don't constains all the tokens
2021-04-07 11:58:42 +02:00
Olivier Goffart
4aa18feba9 Remove debug output 2021-04-07 08:58:31 +02:00
Olivier Goffart
b195f1be96 LSP preview: use the cache from the LSP, and refresh when the content change 2021-04-06 13:18:37 +02:00
Simon Hausmann
33a9a40e55 Remove outdated comment
Amends 1e4921de13
2021-04-06 13:12:59 +02:00
Simon Hausmann
af33d439a9 Simplify LSP thread startup
After commit 1e4921de13 we don't need wait anymore,
the preview requests themselves will be queued.
2021-04-06 12:44:13 +02:00
Simon Hausmann
b81803774b Start the LSP thread when the gui thread is ready
This way we can serve preview requests immediately.

This basically makes post_event safe to call before the event loop is entered.
The events will be queued up and sent when the event loop
is created and we have access
to the proxy, which will take over the queue.
2021-04-06 11:40:17 +02:00
Simon Hausmann
d9db07db2a Try to gracefully terminate the LSP server when requested 2021-04-06 11:10:30 +02:00
Simon Hausmann
9f2924a642 Begin swapping the event loops in the lsp
Run the preview in the main thread, as required for winit, and run the LSP
main loop in a secondary thread.

At least three more follow-up changes are needed, but this gets the
preview showing for example on macOS.
2021-04-06 10:40:34 +02:00
Olivier Goffart
0cd13d245d LSP: better diagnostic reporting
Don't put the filename in the message, it is already there.
Also handle Warnings as Warnings
2021-04-04 14:48:50 +02:00
Olivier Goffart
309a9274e1 LSP: preview window
Currently not yet live preview from the open document content, but that should totaly be doable
2021-04-03 10:00:12 +02:00
Simon Hausmann
87b320f216 Fix LSP on Windows
Use `to_file_path` to extract the correct path. Just calling `path()` will return something
like `//%3a/Users/blah` instead of `c:\Users\blah`
2021-04-01 13:44:10 +02:00
Simon Hausmann
ffe4ba84b5 Fix LSP diagnostics not disappearing when fixed
To clear diagnostics we must send out empty ones. That means we must always send them for all loaded files and the main file.
2021-03-31 20:47:42 +02:00
Olivier Goffart
014e13b05f Make Diagnostic field private 2021-03-15 10:37:24 +01:00
Olivier Goffart
730b1ccff2 Refactor diagnostic: Merge BuildDiagnostic and FileDiagnostic 2021-03-12 19:32:50 +01:00
Olivier Goffart
11e0be5130 Add the SourceLocation into the Diagnostic 2021-03-12 12:49:19 +01:00
Olivier Goffart
968dfaae87 Put what is the FileDiagnostics into the SourceFile so the SourceFile has the content 2021-03-11 16:23:46 +01:00
Olivier Goffart
57804b64a3 Don't use the canonical path for diagnostics 2020-12-28 15:07:49 +01:00