Merge clangd's inactiveRegions
with existing diagnostics (#26737)
Closes: https://github.com/zed-industries/zed/issues/13089 This PR attempts to resolve the issues discussed in my previous PR #26146. Release Notes: - Fixed: `inactiveRegions` doesn't replace existing diagnostics anymore
This commit is contained in:
parent
8f1023360d
commit
d9dcc59334
6 changed files with 164 additions and 23 deletions
|
@ -1557,6 +1557,13 @@ impl Buffer {
|
|||
self.send_operation(op, true, cx);
|
||||
}
|
||||
|
||||
pub fn get_diagnostics(&self, server_id: LanguageServerId) -> Option<&DiagnosticSet> {
|
||||
let Ok(idx) = self.diagnostics.binary_search_by_key(&server_id, |v| v.0) else {
|
||||
return None;
|
||||
};
|
||||
Some(&self.diagnostics[idx].1)
|
||||
}
|
||||
|
||||
fn request_autoindent(&mut self, cx: &mut Context<Self>) {
|
||||
if let Some(indent_sizes) = self.compute_autoindents() {
|
||||
let indent_sizes = cx.background_spawn(indent_sizes);
|
||||
|
|
|
@ -229,8 +229,14 @@ impl CachedLspAdapter {
|
|||
self.adapter.code_action_kinds()
|
||||
}
|
||||
|
||||
pub fn process_diagnostics(&self, params: &mut lsp::PublishDiagnosticsParams) {
|
||||
self.adapter.process_diagnostics(params)
|
||||
pub fn process_diagnostics(
|
||||
&self,
|
||||
params: &mut lsp::PublishDiagnosticsParams,
|
||||
server_id: LanguageServerId,
|
||||
existing_diagnostics: Option<&'_ Buffer>,
|
||||
) {
|
||||
self.adapter
|
||||
.process_diagnostics(params, server_id, existing_diagnostics)
|
||||
}
|
||||
|
||||
pub async fn process_completions(&self, completion_items: &mut [lsp::CompletionItem]) {
|
||||
|
@ -443,7 +449,13 @@ pub trait LspAdapter: 'static + Send + Sync {
|
|||
delegate: &dyn LspAdapterDelegate,
|
||||
) -> Option<LanguageServerBinary>;
|
||||
|
||||
fn process_diagnostics(&self, _: &mut lsp::PublishDiagnosticsParams) {}
|
||||
fn process_diagnostics(
|
||||
&self,
|
||||
_: &mut lsp::PublishDiagnosticsParams,
|
||||
_: LanguageServerId,
|
||||
_: Option<&'_ Buffer>,
|
||||
) {
|
||||
}
|
||||
|
||||
/// Post-processes completions provided by the language server.
|
||||
async fn process_completions(&self, _: &mut [lsp::CompletionItem]) {}
|
||||
|
@ -2060,8 +2072,6 @@ impl LspAdapter for FakeLspAdapter {
|
|||
unreachable!();
|
||||
}
|
||||
|
||||
fn process_diagnostics(&self, _: &mut lsp::PublishDiagnosticsParams) {}
|
||||
|
||||
fn disk_based_diagnostic_sources(&self) -> Vec<String> {
|
||||
self.disk_based_diagnostics_sources.clone()
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue