Commit graph

785 commits

Author SHA1 Message Date
kjeremy c6a50aead7 npm update 2020-04-22 10:58:50 -04:00
bors[bot] e7bb260fbb
Merge #4081
4081: Work around crlf in syntax tree r=matklad a=Veetaha

Workarounds fixes #4067 

Co-authored-by: veetaha <veetaha2@gmail.com>
2020-04-22 11:05:18 +00:00
veetaha c12d0e0214 Refactor the workaround a bit 2020-04-22 12:35:03 +03:00
veetaha 07bd4bedcb Work around crlf in syntax tree 2020-04-22 12:33:11 +03:00
veetaha 61a931425d Fix .rast tmGrammar to account for numbers in identifiers 2020-04-22 02:00:58 +03:00
Timo Freiberg 74780a15f6 Jump to sourceChanges in other files 2020-04-21 23:04:44 +02:00
Aleksey Kladov ca61356b01 Add semantic tag for unresolved references
This is a quick way to implement unresolved reference diagnostics.
For example, adding to VS Code config

    "editor.tokenColorCustomizationsExperimental": {
        "unresolvedReference": "#FF0000"
    },

will highlight all unresolved refs in red.
2020-04-18 21:28:51 +02:00
Edwin Cheng 177becea98 Add proc-macro cli command for rust-analyzer 2020-04-16 21:13:57 +08:00
Edwin Cheng a4b0ce07f8 Add config for proc_macro 2020-04-16 19:28:06 +08:00
bors[bot] aa887d7ab4
Merge #3948
3948: fix: inlay hints config desyncronization between the frontend and the backend r=matklad a=Veetaha

See the explanation in the issue comment:
https://github.com/rust-analyzer/rust-analyzer/issues/3924#issuecomment-612444566

Workaround-ly fixes: #3924

Co-authored-by: veetaha <veetaha2@gmail.com>
2020-04-16 09:35:42 +00:00
bors[bot] f1a07dbf55
Merge #3962
3962: Fix parentModule shortcut conflict r=matklad a=CodeSandwich

The default parentModule shortcut conflicts with VSCode's built-in undo selection

Co-authored-by: Igor Żuk <igor.zuk@protonmail.com>
2020-04-15 10:11:20 +00:00
kjeremy d7efe54515 Bump @types/vscode and vscode-languageclient 2020-04-14 10:20:16 -04:00
Igor Żuk f8fb009cad
Fix parentModule shortcut conflict
The default parentModule shortcut conflicts with VSCode's built-in undo selection
2020-04-13 12:13:55 +02:00
veetaha 7534266156 fix: inlay hints config desyncronization between the frontend and the backend
See the explanation in the issue comment:
https://github.com/rust-analyzer/rust-analyzer/issues/3924#issuecomment-612444566
2020-04-11 20:01:54 +03:00
bors[bot] 372414d27b
Merge #3942
3942: vscode: fix typing bug in config r=matklad a=Veetaha

I noticed that the type of nullable properties in config is actually non-nullable
![Screenshot from 2020-04-11 15-29-45](https://user-images.githubusercontent.com/36276403/79043702-6a686d80-7c09-11ea-9ae8-f1a777c7d0f2.png)


Co-authored-by: veetaha <veetaha2@gmail.com>
2020-04-11 13:26:17 +00:00
veetaha 12e23bd60b vscode: fix typing bug in config 2020-04-11 15:40:49 +03:00
veetaha f778242a37 vscode: fix indent 2020-04-11 15:37:06 +03:00
kjeremy 6f0f86d2c5 Enable the SemanticTokensFeature by default
This is covered under vscode's "editor.semanticHighlighting.enabled"
setting plus the user has to have a theme that has opted into highlighting.

Bumps required vscode stable to 1.44
2020-04-08 15:45:39 -04:00
kjeremy b8426f426a Update some packages 2020-04-07 11:17:54 -04:00
Aleksey Kladov 501c5b45ac Better config scheme & defaults 2020-04-07 08:51:52 +02:00
Aleksey Kladov ec3fb1cdb4
Merge pull request #3853 from matklad/cf
Make control token modifier less ambiguous
2020-04-06 11:53:56 +02:00
Aleksey Kladov 48bc0ca745 Make control token modifier less ambiguous
In textmate, keyword.control is used for all kinds of things; in fact,
the default scope mapping for keyword is keyword.control!

So let's add a less ambiguous controlFlow modifier

See Microsoft/vscode#94367
2020-04-06 09:57:50 +02:00
bors[bot] 45b9d6d553
Merge #3844
3844: vscode: restore removed default values r=matklad a=Veetaha

After refactoring the config we forgot to set defaults for
some properties like workspaceLoaded, callInfo.full, etc.
This commit restored them to being turned on by defult,
as well added defaults for other props to be more explicit
on their defualt value.
cc @matklad 

Co-authored-by: veetaha <veetaha2@gmail.com>
2020-04-04 13:32:18 +00:00
veetaha 90959b29e0 vscode: log server binary path 2020-04-04 16:10:06 +03:00
veetaha 486cb5b79a vscode: restore removed default values
After refactoring the config we forgot to set defaults for
some properties like workspaceLoaded, callInfo.full, etc.
This commit restored them to being turned on by defult,
as well added defaults for other props to be more explicit
on their defualt value.
2020-04-04 15:57:23 +03:00
Aleksey Kladov ab29806f32 Include grammar for syntax trees into vsix 2020-04-03 20:00:06 +02:00
Aleksey Kladov 2a968d4554 Set semantic tokens supertypes 2020-04-03 14:09:12 +02:00
kjeremy db102c4766 Bumps vsce to 1.75
Fixes a security vulnerability
2020-04-02 12:03:30 -04:00
Aleksey Kladov 9ca69994af Fix semantic coloring 2020-04-02 15:52:25 +02:00
Aleksey Kladov 407ab946ab better wording 2020-04-02 14:39:37 +02:00
Aleksey Kladov 8a788c764f Allow fully overriding check and fmt commands 2020-04-02 14:35:51 +02:00
Aleksey Kladov 7a4ebd2c8d Remove vscode_lldb setting 2020-04-02 12:56:14 +02:00
Aleksey Kladov 48c58309cc Lean onto default implementation of configs 2020-04-02 12:47:58 +02:00
Aleksey Kladov e4cf40a152 New config in package.json 2020-04-02 12:27:09 +02:00
veetaha 036a8aee2a vscode: postrefactor 2020-04-02 11:13:38 +03:00
veetaha e763b279a8 vscode: postrefactor variable names 2020-04-02 11:13:38 +03:00
veetaha d453281bb2 vscode: add goto definition from rust file to syntax tree editor 2020-04-02 11:13:16 +03:00
bors[bot] 98f7842e40
Merge #3820
3820: Remove old syntax highlighting r=matklad a=matklad



bors r+
🤖

Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
2020-04-02 07:55:11 +00:00
Aleksey Kladov 309fc70155 Remove old syntax highlighting 2020-04-02 09:52:27 +02:00
bors[bot] f0ba01cd43
Merge #3817
3817: vscode: highlight syntax tree ro editor r=matklad a=Veetaha

Small textmate grammar declaration to make rust-analyzer syntax tree more easily inspectable:
Btw, if we change the file extension of our `ra_syntax/test_data/**` files to `.rast` they should be highlighted in vscode too.

The colors of the tokens are actually going to be color-theme dependent, or you can customize them via:
```jsonc
{
    "editor.tokenColorCustomizations": {
        "textMateRules": [ { "scope": "name", "settings": { /* */ } } ] 
    }
}
```
![image](https://user-images.githubusercontent.com/36276403/78204947-99f9d600-74a3-11ea-8315-cb1c87810c7c.png)

Related: #3682

Co-authored-by: veetaha <veetaha2@gmail.com>
2020-04-02 07:32:14 +00:00
veetaha 62ed01a107 vscode: add highlighting of syntax tree 2020-04-02 05:38:52 +03:00
veetaha f4f79383b1 vscode: add support for light themes and color customization for syntax tree highlights 2020-04-02 01:20:08 +03:00
kjeremy e88ee75ffb rollup 2.3.2 2020-04-01 14:44:30 -04:00
bors[bot] f77fc158fc
Merge #3780 #3787
3780: Simplify r=matklad a=Veetaha

I absolutely love tha fact that removing `.clone()` simplifies the code comparing to other languages where it's actually the contrary (ahem ~~`std::move()`~~)

3787: vscode: add syntax tree inspection hovers and highlights r=matklad a=Veetaha

![inspect-tree](https://user-images.githubusercontent.com/36276403/78029767-c7426900-7369-11ea-9ed6-b8a0f8e05bac.gif)
I implemented the reverse mapping (when you hover in the rust editor), but it seems overcomplicated, so I removed it

Related #3682 

Co-authored-by: veetaha <veetaha2@gmail.com>
Co-authored-by: Veetaha <veetaha2@gmail.com>
2020-03-31 17:40:03 +00:00
veetaha 90cc8cc528 vscode: small refactor 2020-03-31 20:29:07 +03:00
veetaha f3612b7024 vscode: scroll to the syntax node in rust editor when highlighting 2020-03-31 20:28:10 +03:00
Veetaha 3b09768ebc
vscode: apply review nits 2020-03-31 19:06:07 +03:00
Aleksey Kladov 6343ddd009 Revert accidental package.json changes 2020-03-31 17:00:15 +02:00
bors[bot] fa3c7742af
Merge #3790
3790: Better names for config structs r=matklad a=matklad



bors r+
🤖

Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
2020-03-31 14:06:03 +00:00
veetaha 4fbca1c64d vscode: use ctx.subscriptions instead of local .disposables 2020-03-31 16:57:03 +03:00
Aleksey Kladov f5b01d6544 WIP: uniformalize external tools config 2020-03-31 15:55:05 +02:00
kjeremy b3b8d31c5e Update node deps 2020-03-31 09:47:53 -04:00
veetaha 09a760e52e vscode: add syntax tree inspection hovers and highlights 2020-03-31 16:20:59 +03:00
Tim 3eb45b9922 Pass string instread of WorkspaceFolder 2020-03-31 10:24:01 +01:00
Tim 9ef1e9efc6 Remove unnecessary null check 2020-03-31 09:11:22 +01:00
Tim a781a58fe2 Throw error if no folder is opened 2020-03-31 09:06:52 +01:00
Tim 6e535915bd Use namespace import 2020-03-31 09:06:46 +01:00
Tim 768aa4259f Add basic task support
This adds basic support for running `cargo build`, `cargo run`, etc.
2020-03-30 21:23:21 +01:00
Kirill Bulatov b892a48740 Code review fixes
Co-Authored-By: Veetaha <veetaha2@gmail.com>
2020-03-30 13:39:14 +03:00
Kirill Bulatov 8a23bec2cd Style fixes 2020-03-30 13:39:14 +03:00
Kirill Bulatov a9dd442733 Send the config from the client 2020-03-30 13:39:14 +03:00
Kirill Bulatov 019f269a0a Process configuration response draft 2020-03-30 13:39:14 +03:00
Kirill Bulatov 8c4aab0c80 Client side draft 2020-03-30 13:39:14 +03:00
Veetaha 51156cbf03
vscode: fix release tag retrieval
Co-Authored-By: Laurențiu Nicola <lnicola@users.noreply.github.com>
2020-03-27 11:05:37 +02:00
veetaha 0072aa31ed vscode: show release tag with along with the commit hash for RA version command 2020-03-27 00:38:03 +02:00
bors[bot] d2619bf0ca
Merge #3725
3725: vscode: fix local devel and remove disposables memory leak on server restrart r=matklad a=Veetaha



Co-authored-by: veetaha <veetaha2@gmail.com>
2020-03-26 21:47:26 +00:00
veetaha 261ef1c455 vscode: small post-refactor 2020-03-26 23:45:01 +02:00
veetaha e1a5e9565b vscode: fix memory leak on server restart
The memory leak was because on the server restrart the array of extensionContext.substiptions was not cleared
2020-03-26 23:44:19 +02:00
veetaha 68ff71e3ab vscode: fix local devel
The value of releaseTag is not undefined, but null in actual package.json
2020-03-26 23:42:40 +02:00
bors[bot] ece8fa81bb
Merge #3726
3726: vscode: refactor analyzer status r=matklad a=Veetaha



Co-authored-by: veetaha <veetaha2@gmail.com>
2020-03-26 09:49:12 +00:00
veetaha d1721021ef vscode: refactor analyzer status 2020-03-25 21:00:04 +02:00
Aleksey Kladov aed535fa7a Use the right arch name for x86 (32 bit) 2020-03-25 10:51:03 +01:00
Matt Hooper 6f239a581a Extension types and rendering 2020-03-24 23:22:41 +01:00
bors[bot] 1d6024e460
Merge #3695
3695: vscode: simplify and refactor config r=matklad a=Veetaha

Removed unnecessary interfaces, changed `cfg` to be a getter to ensure the fresh values any time possible.
Migrated from explicit casts to implicit.

Co-authored-by: veetaha <veetaha2@gmail.com>
2020-03-24 09:03:40 +00:00
bors[bot] c6db6e2352
Merge #3696 #3698 #3703
3696: vscode: more type safety r=matklad a=Veetaha



3698: Consider references when applying postfix completions r=matklad a=SomeoneToIgnore

Sometimes my RA debugging workflow breaks because `.dbg` is applied to the variable that is used later in the code.
It's safer to consider the refences to avoid this for completions that may trigger the move.

3703: Don't try to enable proposed API's on stable r=matklad a=matklad



bors r+
🤖

Co-authored-by: veetaha <veetaha2@gmail.com>
Co-authored-by: Kirill Bulatov <mail4score@gmail.com>
Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
2020-03-24 08:54:30 +00:00
Aleksey Kladov be4977da7f Don't try to enable proposed API's on stable 2020-03-24 09:34:54 +01:00
veetaha 4cee3e9f22 vscode: more type safety 2020-03-24 01:11:36 +02:00
veetaha 65e2d8a0c8 vscode: simplify and refactor config 2020-03-24 01:00:57 +02:00
Veetaha 95b5129a8a
vscode: remove unnecessary code
This cancel is unnecessary since we cancel the previous inlay hints requests in `fetchHints()` method itself. This is not a hard error, we just called cancel() 2 times.
2020-03-20 21:23:56 +02:00
Aleksey Kladov 8ee7780ca9 ⬆️ npm 2020-03-20 13:07:43 +01:00
Aleksey Kladov 4b5435b52b Make from-source install use cargo installed binary by default 2020-03-20 13:07:12 +01:00
Aleksey Kladov 7adcadd279 Downgrade vscode-langaugeclient
Looks like it broke completion :(
2020-03-19 15:08:10 +01:00
Aleksey Kladov 13af63a403
Merge pull request #3641 from darinmorrison/rollup-typescript
Some improvements to rollup and ts config
2020-03-19 11:26:00 +01:00
Aleksey Kladov 8f8f6b47de ⬆️ npm 2020-03-19 10:30:41 +01:00
Aleksey Kladov 3d1cb5e20f Simplify extension tag sniffing 2020-03-19 09:37:03 +01:00
bors[bot] aca3c3086e
Merge #3629
3629: Alternative aproach to plugin auto update r=matklad a=matklad

This is very much WIP (as in, I haven't run this once), but I like the result so far.

cc @Veetaha 

The primary focus here on simplification:

* local simplification of data structures and control-flow: using union of strings instead of an enum, using unwrapped GitHub API responses
* global simplification of control flow: all logic is now in `main.ts`, implemented as linear functions without abstractions. This is stateful side-effective code, so arguments from [Carmack](http://number-none.com/blow/john_carmack_on_inlined_code.html) very much apply. We need all user interractions, all mutations, and all network requests to happen in a single file. 
* as a side-effect of condensing everything to functions, we can get rid of various enums. The enums were basically a reified control flow:

```
enum E { A, B }

fn foo() -> E {
    if cond { E::A } else { E::B }
}

fn bar(e: E) {
    match e {
        E::A => do_a(),
        E::B => do_b(),
    }
}

==>>

fn all() {
    if cond { do_a() } else { do_b() }
}
```

* simplification of model: we don't need to reinstall on settings update, we can just ask the user to reload, we don't need to handle nightly=>stable fallback, we can ask the user to reinstall extension, (todo) we don't need to parse out the date from the version, we can use build id for nightly and for stable we can write the info directly into package.json.

Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
2020-03-19 08:06:48 +00:00
Aleksey Kladov fb6e655de8 Rewrite auto-update
Everything now happens in main.ts, in the bootstrap family of
functions. The current flow is:

* check everything only on extension installation.
* if the user is on nightly channel, try to download the nightly
  extension and reload.
* when we install nightly extension, we persist its release id, so
  that we can check if the current release is different.
* if server binary was not downloaded by the current version of the
  extension, redownload it (we persist the version of ext that
  downloaded the server).
2020-03-19 09:04:59 +01:00
Darin Morrison 630888df5b Target es2019 (code 1.43 uses chromium 78) 2020-03-18 16:30:34 -06:00
Darin Morrison 0ec20234a7 Add typing annotations for rollup config 2020-03-18 16:30:34 -06:00
Darin Morrison 482a7c2262 Update deps; regen lock file; fix minimist CVE 2020-03-18 10:36:11 -06:00
Emil Lauridsen e154132c91 Remove outDirOverrides 2020-03-17 14:55:44 +01:00
Emil Lauridsen 9e7dbb1abd Remove unused config from VSCode ext 2020-03-17 14:47:05 +01:00
Emil Lauridsen f5a2fcf8f5 Change existing OUT_DIR override config to make use of new infrastructure 2020-03-17 14:47:05 +01:00
Emil Lauridsen 33c6c7abc6 Support loading OUT_DIR from cargo check at launch 2020-03-17 14:47:05 +01:00
Aleksey Kladov ae662617a2 Separate persistent mutable state from config
That way, we clearly see which things are not change, and we also
clearly see which things are persistent.
2020-03-16 22:02:11 +01:00
Aleksey Kladov a00bab5781 ⬆️ npm 2020-03-16 14:57:32 +01:00
bors[bot] 200c275c2e
Merge #3534
3534: Feature: vscode impl nightlies download and installation r=Veetaha a=Veetaha

I need to test things more, but the core shape of the code is quite well-formed.
The main problem is that we save the release date only for nightlies and there are no means to get the release date of the stable extension (i.e. for this we would need to consult the github releases via a network request, or we would need to somehow save this info into package.json or any other file accessible from the extension code during the deployment step, but this will be very hard I guess).
So there is an invariant that the users can install nightly only from our extension and they can't do it manually, because when installing the nightly `.vsix` we actually save its release date to `globalState`

Closes: #3402

TODO:
- [x] More manual tests and documentation

cc @matklad @lnicola 

Co-authored-by: Veetaha <gerzoh1@gmail.com>
Co-authored-by: Veetaha <veetaha2@gmail.com>
2020-03-16 10:26:31 +00:00
Veetaha 5a0041c5aa
vscode-postrefactor: migrate to arrow functions 2020-03-16 12:19:26 +02:00
Veetaha fc47274541
vscode-postrefactor: fix syntax error 2020-03-16 12:18:30 +02:00
Veetaha d38d59fed8
vscode-postrefactor: prefer arrow functions 2020-03-16 12:17:36 +02:00