aboutsummaryrefslogtreecommitdiff
path: root/helix-term/src/application.rs
diff options
context:
space:
mode:
authorMichael Davis2023-08-27 18:32:17 +0000
committerBlaž Hrastnik2024-02-25 15:12:43 +0000
commit8141a4a1ab78084df94c19e6225fc3c64a05b88f (patch)
tree2ff8039cbdb1f282e7451ae0140f7576cc6e64e5 /helix-term/src/application.rs
parentdfa5382c51978c6a582d4586c65aa0f677be2ee8 (diff)
LSP: Key diagnostics off file path instead of URI
URIs need to be normalized to be comparable. For example a language server could send a URI for a path containing '+' as '%2B' but we might encode this in something like 'Document::url' as just '+'. We can normalize the URI straight into a PathBuf though since this is the only value we compare these diagnostics URIs against. This also covers edge-cases like windows drive letter capitalization.
Diffstat (limited to 'helix-term/src/application.rs')
-rw-r--r--helix-term/src/application.rs6
1 files changed, 2 insertions, 4 deletions
diff --git a/helix-term/src/application.rs b/helix-term/src/application.rs
index 30df3981..0ef200c2 100644
--- a/helix-term/src/application.rs
+++ b/helix-term/src/application.rs
@@ -753,9 +753,7 @@ impl Application {
let lang_conf = doc.language.clone();
if let Some(lang_conf) = &lang_conf {
- if let Some(old_diagnostics) =
- self.editor.diagnostics.get(&params.uri)
- {
+ if let Some(old_diagnostics) = self.editor.diagnostics.get(&path) {
if !lang_conf.persistent_diagnostic_sources.is_empty() {
// Sort diagnostics first by severity and then by line numbers.
// Note: The `lsp::DiagnosticSeverity` enum is already defined in decreasing order
@@ -788,7 +786,7 @@ impl Application {
// Insert the original lsp::Diagnostics here because we may have no open document
// for diagnosic message and so we can't calculate the exact position.
// When using them later in the diagnostics picker, we calculate them on-demand.
- let diagnostics = match self.editor.diagnostics.entry(params.uri) {
+ let diagnostics = match self.editor.diagnostics.entry(path) {
Entry::Occupied(o) => {
let current_diagnostics = o.into_mut();
// there may entries of other language servers, which is why we can't overwrite the whole entry