[[package]]
name = "lsp-types"
-version = "0.82.0"
+version = "0.83.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "db895abb8527cf59e3de893ab2acf52cf904faeb65e60ea6f373e11fe86464e8"
+checksum = "25e0bd4b95038f2c23bda332ba0ca684e8dda765db1f9bdb63dc4c3e01f3b456"
dependencies = [
"base64",
"bitflags",
itertools = "0.9.0"
jod-thread = "0.1.0"
log = "0.4.8"
-lsp-types = { version = "0.82.0", features = ["proposed"] }
+lsp-types = { version = "0.83.0", features = ["proposed"] }
parking_lot = "0.11.0"
pico-args = "0.3.1"
oorandom = "11.1.2"
references_provider: Some(OneOf::Left(true)),
document_highlight_provider: Some(OneOf::Left(true)),
document_symbol_provider: Some(OneOf::Left(true)),
- workspace_symbol_provider: Some(true),
+ workspace_symbol_provider: Some(OneOf::Left(true)),
code_action_provider: Some(code_action_provider),
code_lens_provider: Some(CodeLensOptions { resolve_provider: Some(true) }),
document_formatting_provider: Some(OneOf::Left(true)),
CodeActionKind::REFACTOR_INLINE,
CodeActionKind::REFACTOR_REWRITE,
]),
+ resolve_provider: None,
work_done_progress_options: Default::default(),
})
})
pub call_info_full: bool,
pub lens: LensConfig,
pub hover: HoverConfig,
+ pub semantic_tokens_refresh: bool,
pub with_sysroot: bool,
pub linked_projects: Vec<LinkedProject>,
call_info_full: true,
lens: LensConfig::default(),
hover: HoverConfig::default(),
+ semantic_tokens_refresh: false,
linked_projects: Vec::new(),
root_path,
}
self.client_caps.hover_actions = get_bool("hoverActions");
self.client_caps.status_notification = get_bool("statusNotification");
}
+
+ if let Some(workspace_caps) = caps.workspace.as_ref() {
+ if let Some(refresh_support) =
+ workspace_caps.semantic_tokens.as_ref().and_then(|it| it.refresh_support)
+ {
+ self.semantic_tokens_refresh = refresh_support;
+ }
+ }
}
}
"trivially_copy_pass_by_ref",
),
),
+ code_description: None,
source: Some(
"clippy",
),
],
),
tags: None,
+ data: None,
},
fixes: [],
},
"E0277",
),
),
+ code_description: None,
source: Some(
"rustc",
),
message: "can\'t compare `{integer}` with `&str`\nthe trait `std::cmp::PartialEq<&str>` is not implemented for `{integer}`",
related_information: None,
tags: None,
+ data: None,
},
fixes: [],
},
Error,
),
code: None,
+ code_description: None,
source: Some(
"rustc",
),
],
),
tags: None,
+ data: None,
},
fixes: [],
},
Error,
),
code: None,
+ code_description: None,
source: Some(
"rustc",
),
],
),
tags: None,
+ data: None,
},
fixes: [],
},
"E0053",
),
),
+ code_description: None,
source: Some(
"rustc",
),
message: "method `next` has an incompatible type for trait\nexpected type `fn(&mut ty::list_iter::ListIterator<\'list, M>) -> std::option::Option<&ty::Ref<M>>`\n found type `fn(&ty::list_iter::ListIterator<\'list, M>) -> std::option::Option<&\'list ty::Ref<M>>`",
related_information: None,
tags: None,
+ data: None,
},
fixes: [],
},
"E0308",
),
),
+ code_description: None,
source: Some(
"rustc",
),
message: "mismatched types\nexpected usize, found u32",
related_information: None,
tags: None,
+ data: None,
},
fixes: [],
},
"unused_variables",
),
),
+ code_description: None,
source: Some(
"rustc",
),
Unnecessary,
],
),
+ data: None,
},
fixes: [
CodeAction {
"unused_variables",
),
),
+ code_description: None,
source: Some(
"rustc",
),
Unnecessary,
],
),
+ data: None,
},
fixes: [
CodeAction {
"unused_variables",
),
),
+ code_description: None,
source: Some(
"rustc",
),
Unnecessary,
],
),
+ data: None,
},
fixes: [
CodeAction {
"E0061",
),
),
+ code_description: None,
source: Some(
"rustc",
),
],
),
tags: None,
+ data: None,
},
fixes: [],
},
"let_and_return",
),
),
+ code_description: None,
source: Some(
"clippy",
),
],
),
tags: None,
+ data: None,
},
fixes: [
CodeAction {
range: in_macro_location.range,
severity,
code: code.clone().map(lsp_types::NumberOrString::String),
+ code_description: None,
source: Some(source.clone()),
message: message.clone(),
related_information: Some(information_for_additional_diagnostic),
tags: if tags.is_empty() { None } else { Some(tags.clone()) },
+ data: None,
};
Some(MappedRustDiagnostic {
range: location.range,
severity,
code: code.clone().map(lsp_types::NumberOrString::String),
+ code_description: None,
source: Some(source.clone()),
message,
related_information: if related_information.is_empty() {
Some(related_information.clone())
},
tags: if tags.is_empty() { None } else { Some(tags.clone()) },
+ data: None,
};
let main_diagnostic =
range: to_proto::range(&line_index, d.range),
severity: Some(to_proto::diagnostic_severity(d.severity)),
code: None,
+ code_description: None,
source: Some("rust-analyzer".to_string()),
message: d.message,
related_information: None,
tags: if d.unused { Some(vec![DiagnosticTag::Unnecessary]) } else { None },
+ data: None,
})
.collect();
Ok(diagnostics)
.collect::<Vec<_>>();
self.update_file_notifications_on_threadpool(subscriptions);
+
+ // Refresh semantic tokens if the client supports it.
+ if self.config.semantic_tokens_refresh {
+ self.semantic_tokens_cache.lock().clear();
+ self.send_request::<lsp_types::request::SemanticTokensRefesh>((), |_, _| ());
+ }
}
if let Some(diagnostic_changes) = self.diagnostics.take_changes() {
let detail = target.description.clone();
let kind = symbol_kind(target.kind);
let (uri, range, selection_range) = location_info(snap, target)?;
- Ok(lsp_types::CallHierarchyItem { name, kind, tags: None, detail, uri, range, selection_range })
+ Ok(lsp_types::CallHierarchyItem {
+ name,
+ kind,
+ tags: None,
+ detail,
+ uri,
+ range,
+ selection_range,
+ data: None,
+ })
}
pub(crate) fn code_action_kind(kind: AssistKind) -> lsp_types::CodeActionKind {
}
},
"vscode-jsonrpc": {
- "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=="
+ "version": "6.0.0-next.7",
+ "resolved": "https://registry.npmjs.org/vscode-jsonrpc/-/vscode-jsonrpc-6.0.0-next.7.tgz",
+ "integrity": "sha512-1nG+6cuTtpzmXe7yYfO9GCkYlyV6Ai+jDnwidHiT2T7zhc+bJM+VTtc0T/CdTlDyTNTqIcCj0V1nD4TcVjJ7Ug=="
},
"vscode-languageclient": {
- "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==",
+ "version": "7.0.0-next.12",
+ "resolved": "https://registry.npmjs.org/vscode-languageclient/-/vscode-languageclient-7.0.0-next.12.tgz",
+ "integrity": "sha512-OrzvOvhS5o26C0KctTJC7hkwh3avCwkVhllzy42AqwpIUZ3p2aVqkSG2uVxaeodq8ThBb3TLgtg50vxyWs6FEg==",
"requires": {
"semver": "^6.3.0",
- "vscode-languageserver-protocol": "3.16.0-next.7"
+ "vscode-languageserver-protocol": "3.16.0-next.10"
}
},
"vscode-languageserver-protocol": {
- "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==",
+ "version": "3.16.0-next.10",
+ "resolved": "https://registry.npmjs.org/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.16.0-next.10.tgz",
+ "integrity": "sha512-YRTctHUZvts0Z1xXKNYU0ha0o+Tlgtwr+6O8OmDquM086N8exiSKBMwMC+Ra1QtIE+1mfW43Wxsme2FnMkAS9A==",
"requires": {
- "vscode-jsonrpc": "6.0.0-next.5",
- "vscode-languageserver-types": "3.16.0-next.3"
+ "vscode-jsonrpc": "6.0.0-next.7",
+ "vscode-languageserver-types": "3.16.0-next.4"
}
},
"vscode-languageserver-types": {
- "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=="
+ "version": "3.16.0-next.4",
+ "resolved": "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.16.0-next.4.tgz",
+ "integrity": "sha512-NlKJyGcET/ZBCCLBYIPaGo2c37R03bPYeWXozUtnjyye7+9dhlbMSODyoG2INcQf8zFmB4qhm2UOJjgYEgPCNA=="
},
"vscode-test": {
"version": "1.4.0",
},
"dependencies": {
"node-fetch": "^2.6.1",
- "vscode-languageclient": "7.0.0-next.9"
+ "vscode-languageclient": "7.0.0-next.12"
},
"devDependencies": {
"@rollup/plugin-commonjs": "^13.0.2",
log.warn("LSP request timed out", { method: reqType.method, param, error });
throw error;
}
-
- if (error.code === lc.ErrorCodes.RequestCancelled) {
+ if (error.code === lc.LSPErrorCodes.RequestCancelled) {
throw error;
}
- if (error.code !== lc.ErrorCodes.ContentModified) {
+ if (error.code !== lc.LSPErrorCodes.ContentModified) {
log.warn("LSP request failed", { method: reqType.method, param, error });
throw error;
}