]> git.lizzy.rs Git - rust.git/commitdiff
Move to vscode-languageclient 7.0.0-next.9
authorkjeremy <kjeremy@gmail.com>
Tue, 1 Sep 2020 16:53:07 +0000 (12:53 -0400)
committerkjeremy <kjeremy@gmail.com>
Wed, 2 Sep 2020 13:40:59 +0000 (09:40 -0400)
Stabilizes call hierarchy and semantic tokens features.

13 files changed:
Cargo.lock
crates/rust-analyzer/Cargo.toml
crates/rust-analyzer/src/caps.rs
crates/rust-analyzer/src/handlers.rs
crates/rust-analyzer/src/main_loop.rs
crates/rust-analyzer/src/semantic_tokens.rs
crates/rust-analyzer/src/to_proto.rs
editors/code/package-lock.json
editors/code/package.json
editors/code/src/client.ts
editors/code/src/commands.ts
editors/code/src/ctx.ts
editors/code/src/util.ts

index cec4462f2045429574028263e68f24f9aefd981a..0780257b43272a9fd9fcab6834b79e203234df99 100644 (file)
@@ -778,9 +778,9 @@ dependencies = [
 
 [[package]]
 name = "lsp-types"
-version = "0.79.0"
+version = "0.80.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7f1f86677fdbe8df5f88b99131b1424e50aad27bbe3e5900d221bc414bd72e9b"
+checksum = "f4265e2715bdacbb4dad029fce525e420cd66dc0af24ff9cb996a8ab48ac92ef"
 dependencies = [
  "base64",
  "bitflags",
index e06956d6c600fb070f20e8b2f7169a5b8da801d1..8db0b0d72f1ea051b79767247769d103899ac079 100644 (file)
@@ -21,7 +21,7 @@ env_logger = { version = "0.7.1", default-features = false }
 itertools = "0.9.0"
 jod-thread = "0.1.0"
 log = "0.4.8"
-lsp-types = { version = "0.79.0", features = ["proposed"] }
+lsp-types = { version = "0.80.0", features = ["proposed"] }
 parking_lot = "0.11.0"
 pico-args = "0.3.1"
 oorandom = "11.1.2"
index 92a743fd8e7b5f028f8707b7c49f237e9c943907..de4bc281335ef805ae7c7f4618efece42abe49ec 100644 (file)
@@ -6,7 +6,7 @@
     CodeActionProviderCapability, CodeLensOptions, CompletionOptions,
     DocumentOnTypeFormattingOptions, FoldingRangeProviderCapability, HoverProviderCapability,
     ImplementationProviderCapability, RenameOptions, RenameProviderCapability, SaveOptions,
-    SelectionRangeProviderCapability, SemanticTokensDocumentProvider, SemanticTokensLegend,
+    SelectionRangeProviderCapability, SemanticTokensFullOptions, SemanticTokensLegend,
     SemanticTokensOptions, ServerCapabilities, SignatureHelpOptions, TextDocumentSyncCapability,
     TextDocumentSyncKind, TextDocumentSyncOptions, TypeDefinitionProviderCapability,
     WorkDoneProgressOptions,
@@ -76,10 +76,8 @@ pub fn server_capabilities(client_caps: &ClientCapabilities) -> ServerCapabiliti
                     token_modifiers: semantic_tokens::SUPPORTED_MODIFIERS.to_vec(),
                 },
 
-                document_provider: Some(SemanticTokensDocumentProvider::Edits {
-                    edits: Some(true),
-                }),
-                range_provider: Some(true),
+                full: Some(SemanticTokensFullOptions::Delta { delta: Some(true) }),
+                range: Some(true),
                 work_done_progress_options: Default::default(),
             }
             .into(),
index d62dd058985c7411d2134f76bea2747d574de378..64cb4d96cbb5d3047fda15b769224cc402380920 100644 (file)
@@ -17,8 +17,8 @@
     CallHierarchyOutgoingCall, CallHierarchyOutgoingCallsParams, CallHierarchyPrepareParams,
     CodeActionKind, CodeLens, Command, CompletionItem, Diagnostic, DocumentFormattingParams,
     DocumentHighlight, DocumentSymbol, FoldingRange, FoldingRangeParams, HoverContents, Location,
-    Position, PrepareRenameResponse, Range, RenameParams, SemanticTokensEditResult,
-    SemanticTokensEditsParams, SemanticTokensParams, SemanticTokensRangeParams,
+    Position, PrepareRenameResponse, Range, RenameParams, SemanticTokensDeltaParams,
+    SemanticTokensFullDeltaResult, SemanticTokensParams, SemanticTokensRangeParams,
     SemanticTokensRangeResult, SemanticTokensResult, SymbolInformation, SymbolTag,
     TextDocumentIdentifier, Url, WorkspaceEdit,
 };
@@ -1171,11 +1171,11 @@ pub(crate) fn handle_call_hierarchy_outgoing(
     Ok(Some(res))
 }
 
-pub(crate) fn handle_semantic_tokens(
+pub(crate) fn handle_semantic_tokens_full(
     snap: GlobalStateSnapshot,
     params: SemanticTokensParams,
 ) -> Result<Option<SemanticTokensResult>> {
-    let _p = profile::span("handle_semantic_tokens");
+    let _p = profile::span("handle_semantic_tokens_full");
 
     let file_id = from_proto::file_id(&snap, &params.text_document.uri)?;
     let text = snap.analysis.file_text(file_id)?;
@@ -1190,11 +1190,11 @@ pub(crate) fn handle_semantic_tokens(
     Ok(Some(semantic_tokens.into()))
 }
 
-pub(crate) fn handle_semantic_tokens_edits(
+pub(crate) fn handle_semantic_tokens_full_delta(
     snap: GlobalStateSnapshot,
-    params: SemanticTokensEditsParams,
-) -> Result<Option<SemanticTokensEditResult>> {
-    let _p = profile::span("handle_semantic_tokens_edits");
+    params: SemanticTokensDeltaParams,
+) -> Result<Option<SemanticTokensFullDeltaResult>> {
+    let _p = profile::span("handle_semantic_tokens_full_delta");
 
     let file_id = from_proto::file_id(&snap, &params.text_document.uri)?;
     let text = snap.analysis.file_text(file_id)?;
@@ -1209,9 +1209,9 @@ pub(crate) fn handle_semantic_tokens_edits(
 
     if let Some(prev_id) = &cached_tokens.result_id {
         if *prev_id == params.previous_result_id {
-            let edits = to_proto::semantic_token_edits(&cached_tokens, &semantic_tokens);
+            let delta = to_proto::semantic_token_delta(&cached_tokens, &semantic_tokens);
             *cached_tokens = semantic_tokens;
-            return Ok(Some(edits.into()));
+            return Ok(Some(delta.into()));
         }
     }
 
index 355caaee200b8c3b5b7c78095e281a057f5da76e..8d3132581d461e0019849f2321969092bea25670 100644 (file)
@@ -407,9 +407,11 @@ fn on_request(&mut self, request_received: Instant, req: Request) -> Result<()>
             .on::<lsp_types::request::CallHierarchyOutgoingCalls>(
                 handlers::handle_call_hierarchy_outgoing,
             )?
-            .on::<lsp_types::request::SemanticTokensRequest>(handlers::handle_semantic_tokens)?
-            .on::<lsp_types::request::SemanticTokensEditsRequest>(
-                handlers::handle_semantic_tokens_edits,
+            .on::<lsp_types::request::SemanticTokensFullRequest>(
+                handlers::handle_semantic_tokens_full,
+            )?
+            .on::<lsp_types::request::SemanticTokensFullDeltaRequest>(
+                handlers::handle_semantic_tokens_full_delta,
             )?
             .on::<lsp_types::request::SemanticTokensRangeRequest>(
                 handlers::handle_semantic_tokens_range,
index 9db7b8af581edf57ee7f431b03400d2e319aeae6..1225d3e35a9050b02238dd299f275ec4e4c08163 100644 (file)
@@ -31,7 +31,6 @@ macro_rules! define_semantic_token_types {
             SemanticTokenType::MACRO,
             SemanticTokenType::VARIABLE,
             SemanticTokenType::PARAMETER,
-            SemanticTokenType::LABEL,
             $($ident),*
         ];
     };
index a8173a338e444beafd0a9efc98dad3ca6ad59195..16aab52c2b3e2d9b7e36993f8da3f671b72cc8db 100644 (file)
@@ -334,13 +334,13 @@ pub(crate) fn semantic_tokens(
     builder.build()
 }
 
-pub(crate) fn semantic_token_edits(
+pub(crate) fn semantic_token_delta(
     previous: &lsp_types::SemanticTokens,
     current: &lsp_types::SemanticTokens,
-) -> lsp_types::SemanticTokensEdits {
+) -> lsp_types::SemanticTokensDelta {
     let result_id = current.result_id.clone();
     let edits = semantic_tokens::diff_tokens(&previous.data, &current.data);
-    lsp_types::SemanticTokensEdits { result_id, edits }
+    lsp_types::SemanticTokensDelta { result_id, edits }
 }
 
 fn semantic_token_type_and_modifiers(
index 0c74561f195ad32f5b8e21ea548314267ac3749a..63ba4bdf18fdd1b29cdfa8319022e14db81ccd92 100644 (file)
             }
         },
         "vscode-jsonrpc": {
-            "version": "5.1.0-next.1",
-            "resolved": "https://registry.npmjs.org/vscode-jsonrpc/-/vscode-jsonrpc-5.1.0-next.1.tgz",
-            "integrity": "sha512-mwLDojZkbmpizSJSmp690oa9FB9jig18SIDGZeBCvFc2/LYSRvMm/WwWtMBJuJ1MfFh7rZXfQige4Uje5Z9NzA=="
+            "version": "6.0.0-next.5",
+            "resolved": "https://registry.npmjs.org/vscode-jsonrpc/-/vscode-jsonrpc-6.0.0-next.5.tgz",
+            "integrity": "sha512-IAgsltQPwg/pXOPsdXgbUTCaO9VSKZwirZN5SGtkdYQ/R3VjeC4v00WTVvoNayWMZpoC3O9u0ogqmsKzKhVasQ=="
         },
         "vscode-languageclient": {
-            "version": "7.0.0-next.1",
-            "resolved": "https://registry.npmjs.org/vscode-languageclient/-/vscode-languageclient-7.0.0-next.1.tgz",
-            "integrity": "sha512-JrjCUhLpQZxQ5VpWpilOHDMhVsn0fdN5jBh1uFNhSr5c2loJvRdr9Km2EuSQOFfOQsBKx0+xvY8PbsypNEcJ6w==",
+            "version": "7.0.0-next.9",
+            "resolved": "https://registry.npmjs.org/vscode-languageclient/-/vscode-languageclient-7.0.0-next.9.tgz",
+            "integrity": "sha512-lFO+rN/i72CM2va6iKXq1lD7pJg8J93KEXf0w0boWVqU+DJhWzLrV3pXl8Xk1nCv//qOAyhlc/nx2KZCTeRF/A==",
             "requires": {
                 "semver": "^6.3.0",
-                "vscode-languageserver-protocol": "3.16.0-next.2"
+                "vscode-languageserver-protocol": "3.16.0-next.7"
             }
         },
         "vscode-languageserver-protocol": {
-            "version": "3.16.0-next.2",
-            "resolved": "https://registry.npmjs.org/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.16.0-next.2.tgz",
-            "integrity": "sha512-atmkGT/W6tF0cx4SaWFYtFs2UeSeC28RPiap9myv2YZTaTCFvTBEPNWrU5QRKfkyM0tbgtGo6T3UCQ8tkDpjzA==",
+            "version": "3.16.0-next.7",
+            "resolved": "https://registry.npmjs.org/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.16.0-next.7.tgz",
+            "integrity": "sha512-tOjrg+K3RddJ547zpC9/LAgTbzadkPuHlqJFFWIcKjVhiJOh73XyY+Ngcu9wukGaTsuSGjJ0W8rlmwanixa0FQ==",
             "requires": {
-                "vscode-jsonrpc": "5.1.0-next.1",
-                "vscode-languageserver-types": "3.16.0-next.1"
+                "vscode-jsonrpc": "6.0.0-next.5",
+                "vscode-languageserver-types": "3.16.0-next.3"
             }
         },
         "vscode-languageserver-types": {
-            "version": "3.16.0-next.1",
-            "resolved": "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.16.0-next.1.tgz",
-            "integrity": "sha512-tZFUSbyjUcrh+qQf13ALX4QDdOfDX0cVaBFgy7ktJ0VwS7AW/yRKgGPSxVqqP9OCMNPdqP57O5q47w2pEwfaUg=="
+            "version": "3.16.0-next.3",
+            "resolved": "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.16.0-next.3.tgz",
+            "integrity": "sha512-s/z5ZqSe7VpoXJ6JQcvwRiPPA3nG0nAcJ/HH03zoU6QaFfnkcgPK+HshC3WKPPnC2G08xA0iRB6h7kmyBB5Adg=="
         },
         "vscode-test": {
             "version": "1.4.0",
index 7828407ad239fc232ec19c5b037277a306cbbfed..6fc4464dfacb0f85904f2383a88c3aaedd959263 100644 (file)
@@ -36,7 +36,7 @@
     },
     "dependencies": {
         "node-fetch": "^2.6.0",
-        "vscode-languageclient": "7.0.0-next.1"
+        "vscode-languageclient": "7.0.0-next.9"
     },
     "devDependencies": {
         "@rollup/plugin-commonjs": "^13.0.2",
index f5db55b8cc34c9e597455aed4590268fa7b2adb0..1ba2352ee04e9f437a1ee1b9f5ef2498d1680a43 100644 (file)
@@ -1,10 +1,7 @@
-import * as lc from 'vscode-languageclient';
+import * as lc from 'vscode-languageclient/node';
 import * as vscode from 'vscode';
 import * as ra from '../src/lsp_ext';
-import * as Is from 'vscode-languageclient/lib/utils/is';
-
-import { CallHierarchyFeature } from 'vscode-languageclient/lib/callHierarchy.proposed';
-import { SemanticTokensFeature } from 'vscode-languageclient/lib/semanticTokens.proposed';
+import * as Is from 'vscode-languageclient/lib/common/utils/is';
 import { assert } from './util';
 
 function renderCommand(cmd: ra.CommandLink) {
@@ -57,7 +54,7 @@ export function createClient(serverPath: string, cwd: string): lc.LanguageClient
                         return hover;
                     },
                     (error) => {
-                        client.logFailedRequest(lc.HoverRequest.type, error);
+                        client.handleFailedRequest(lc.HoverRequest.type, error, null);
                         return Promise.resolve(null);
                     });
             },
@@ -140,12 +137,6 @@ export function createClient(serverPath: string, cwd: string): lc.LanguageClient
     );
 
     // To turn on all proposed features use: client.registerProposedFeatures();
-    // Here we want to enable CallHierarchyFeature and SemanticTokensFeature
-    // since they are available on stable.
-    // Note that while these features are stable in vscode their LSP protocol
-    // implementations are still in the "proposed" category for 3.16.
-    client.registerFeature(new CallHierarchyFeature(client));
-    client.registerFeature(new SemanticTokensFeature(client));
     client.registerFeature(new ExperimentalFeatures());
 
     return client;
index d0faf4745a2ccfe5e83707e687af7773c10f55e6..69f2836ad93b2279da65f911d139eea03ada8bc6 100644 (file)
@@ -63,7 +63,7 @@ export function memoryUsage(ctx: Ctx): Cmd {
         provideTextDocumentContent(_uri: vscode.Uri): vscode.ProviderResult<string> {
             if (!vscode.window.activeTextEditor) return '';
 
-            return ctx.client.sendRequest(ra.memoryUsage, null).then((mem) => {
+            return ctx.client.sendRequest(ra.memoryUsage, null).then((mem: any) => {
                 return 'Per-query memory usage:\n' + mem + '\n(note: database has been cleared)';
             });
         }
@@ -121,7 +121,7 @@ export function joinLines(ctx: Ctx): Cmd {
             textDocument: { uri: editor.document.uri.toString() },
         });
         editor.edit((builder) => {
-            client.protocol2CodeConverter.asTextEdits(items).forEach((edit) => {
+            client.protocol2CodeConverter.asTextEdits(items).forEach((edit: any) => {
                 builder.replace(edit.range, edit.newText);
             });
         });
@@ -140,8 +140,8 @@ export function onEnter(ctx: Ctx): Cmd {
             position: client.code2ProtocolConverter.asPosition(
                 editor.selection.active,
             ),
-        }).catch(_error => {
-            // client.logFailedRequest(OnEnterRequest.type, error);
+        }).catch((_error: any) => {
+            // client.handleFailedRequest(OnEnterRequest.type, error, null);
             return null;
         });
         if (!lcEdits) return false;
index 543f7e02e389b0840fb874b6c4a62899d35873e0..d39864d330e1de2024303a0a1d3f56a4b8271c7c 100644 (file)
@@ -1,5 +1,5 @@
 import * as vscode from 'vscode';
-import * as lc from 'vscode-languageclient';
+import * as lc from 'vscode-languageclient/node';
 import * as ra from './lsp_ext';
 
 import { Config } from './config';
index ec208750274c1a33dd52485dacf3dbfcf5017790..08159b43c3e1ebb62a4ca87b59b666b5c826d74a 100644 (file)
@@ -1,4 +1,4 @@
-import * as lc from "vscode-languageclient";
+import * as lc from "vscode-languageclient/node";
 import * as vscode from "vscode";
 import { strict as nativeAssert } from "assert";
 import { spawnSync } from "child_process";