chore: Bump lsp-types to 0.97.0 (#12928)
This also includes https://github.com/gluon-lang/lsp-types/pull/287, which should significantly reduce the time it takes for us to deserialize completion lists. Release Notes: - N/A
This commit is contained in:
parent
21764c38dd
commit
7798f64d1b
22 changed files with 344 additions and 191 deletions
|
@ -185,7 +185,7 @@ impl LspCommand for PrepareRename {
|
|||
) -> lsp::TextDocumentPositionParams {
|
||||
lsp::TextDocumentPositionParams {
|
||||
text_document: lsp::TextDocumentIdentifier {
|
||||
uri: lsp::Url::from_file_path(path).unwrap(),
|
||||
uri: lsp::Uri::from_file_path(path).unwrap().into(),
|
||||
},
|
||||
position: point_to_lsp(self.position),
|
||||
}
|
||||
|
@ -309,7 +309,7 @@ impl LspCommand for PerformRename {
|
|||
lsp::RenameParams {
|
||||
text_document_position: lsp::TextDocumentPositionParams {
|
||||
text_document: lsp::TextDocumentIdentifier {
|
||||
uri: lsp::Url::from_file_path(path).unwrap(),
|
||||
uri: lsp::Uri::from_file_path(path).unwrap().into(),
|
||||
},
|
||||
position: point_to_lsp(self.position),
|
||||
},
|
||||
|
@ -428,7 +428,7 @@ impl LspCommand for GetDefinition {
|
|||
lsp::GotoDefinitionParams {
|
||||
text_document_position_params: lsp::TextDocumentPositionParams {
|
||||
text_document: lsp::TextDocumentIdentifier {
|
||||
uri: lsp::Url::from_file_path(path).unwrap(),
|
||||
uri: lsp::Uri::from_file_path(path).unwrap().into(),
|
||||
},
|
||||
position: point_to_lsp(self.position),
|
||||
},
|
||||
|
@ -521,7 +521,7 @@ impl LspCommand for GetImplementation {
|
|||
lsp::GotoImplementationParams {
|
||||
text_document_position_params: lsp::TextDocumentPositionParams {
|
||||
text_document: lsp::TextDocumentIdentifier {
|
||||
uri: lsp::Url::from_file_path(path).unwrap(),
|
||||
uri: lsp::Uri::from_file_path(path).unwrap().into(),
|
||||
},
|
||||
position: point_to_lsp(self.position),
|
||||
},
|
||||
|
@ -622,7 +622,7 @@ impl LspCommand for GetTypeDefinition {
|
|||
lsp::GotoTypeDefinitionParams {
|
||||
text_document_position_params: lsp::TextDocumentPositionParams {
|
||||
text_document: lsp::TextDocumentIdentifier {
|
||||
uri: lsp::Url::from_file_path(path).unwrap(),
|
||||
uri: lsp::Uri::from_file_path(path).unwrap().into(),
|
||||
},
|
||||
position: point_to_lsp(self.position),
|
||||
},
|
||||
|
@ -818,7 +818,7 @@ async fn location_links_from_lsp(
|
|||
let target_buffer_handle = project
|
||||
.update(&mut cx, |this, cx| {
|
||||
this.open_local_buffer_via_lsp(
|
||||
target_uri,
|
||||
target_uri.into(),
|
||||
language_server.server_id(),
|
||||
lsp_adapter.name.clone(),
|
||||
cx,
|
||||
|
@ -925,7 +925,7 @@ impl LspCommand for GetReferences {
|
|||
lsp::ReferenceParams {
|
||||
text_document_position: lsp::TextDocumentPositionParams {
|
||||
text_document: lsp::TextDocumentIdentifier {
|
||||
uri: lsp::Url::from_file_path(path).unwrap(),
|
||||
uri: lsp::Uri::from_file_path(path).unwrap().into(),
|
||||
},
|
||||
position: point_to_lsp(self.position),
|
||||
},
|
||||
|
@ -954,7 +954,7 @@ impl LspCommand for GetReferences {
|
|||
let target_buffer_handle = project
|
||||
.update(&mut cx, |this, cx| {
|
||||
this.open_local_buffer_via_lsp(
|
||||
lsp_location.uri,
|
||||
lsp_location.uri.into(),
|
||||
language_server.server_id(),
|
||||
lsp_adapter.name.clone(),
|
||||
cx,
|
||||
|
@ -1092,7 +1092,7 @@ impl LspCommand for GetDocumentHighlights {
|
|||
lsp::DocumentHighlightParams {
|
||||
text_document_position_params: lsp::TextDocumentPositionParams {
|
||||
text_document: lsp::TextDocumentIdentifier {
|
||||
uri: lsp::Url::from_file_path(path).unwrap(),
|
||||
uri: lsp::Uri::from_file_path(path).unwrap().into(),
|
||||
},
|
||||
position: point_to_lsp(self.position),
|
||||
},
|
||||
|
@ -1239,7 +1239,7 @@ impl LspCommand for GetHover {
|
|||
lsp::HoverParams {
|
||||
text_document_position_params: lsp::TextDocumentPositionParams {
|
||||
text_document: lsp::TextDocumentIdentifier {
|
||||
uri: lsp::Url::from_file_path(path).unwrap(),
|
||||
uri: lsp::Uri::from_file_path(path).unwrap().into(),
|
||||
},
|
||||
position: point_to_lsp(self.position),
|
||||
},
|
||||
|
@ -1461,7 +1461,7 @@ impl LspCommand for GetCompletions {
|
|||
) -> lsp::CompletionParams {
|
||||
lsp::CompletionParams {
|
||||
text_document_position: lsp::TextDocumentPositionParams::new(
|
||||
lsp::TextDocumentIdentifier::new(lsp::Url::from_file_path(path).unwrap()),
|
||||
lsp::TextDocumentIdentifier::new(lsp::Uri::from_file_path(path).unwrap().into()),
|
||||
point_to_lsp(self.position),
|
||||
),
|
||||
context: Default::default(),
|
||||
|
@ -1760,7 +1760,7 @@ impl LspCommand for GetCodeActions {
|
|||
|
||||
lsp::CodeActionParams {
|
||||
text_document: lsp::TextDocumentIdentifier::new(
|
||||
lsp::Url::from_file_path(path).unwrap(),
|
||||
lsp::Uri::from_file_path(path).unwrap().into(),
|
||||
),
|
||||
range: range_to_lsp(self.range.to_point_utf16(buffer)),
|
||||
work_done_progress_params: Default::default(),
|
||||
|
@ -1932,7 +1932,7 @@ impl LspCommand for OnTypeFormatting {
|
|||
) -> lsp::DocumentOnTypeFormattingParams {
|
||||
lsp::DocumentOnTypeFormattingParams {
|
||||
text_document_position: lsp::TextDocumentPositionParams::new(
|
||||
lsp::TextDocumentIdentifier::new(lsp::Url::from_file_path(path).unwrap()),
|
||||
lsp::TextDocumentIdentifier::new(lsp::Uri::from_file_path(path).unwrap().into()),
|
||||
point_to_lsp(self.position),
|
||||
),
|
||||
ch: self.trigger.clone(),
|
||||
|
@ -2274,8 +2274,9 @@ impl InlayHints {
|
|||
Some(((uri, range), server_id)) => Some((
|
||||
LanguageServerId(server_id as usize),
|
||||
lsp::Location {
|
||||
uri: lsp::Url::parse(&uri)
|
||||
.context("invalid uri in hint part {part:?}")?,
|
||||
uri: lsp::Uri::from_file_path(&uri)
|
||||
.context("invalid uri in hint part {part:?}")?
|
||||
.into(),
|
||||
range: lsp::Range::new(
|
||||
point_to_lsp(PointUtf16::new(
|
||||
range.start.row,
|
||||
|
@ -2435,7 +2436,7 @@ impl LspCommand for InlayHints {
|
|||
) -> lsp::InlayHintParams {
|
||||
lsp::InlayHintParams {
|
||||
text_document: lsp::TextDocumentIdentifier {
|
||||
uri: lsp::Url::from_file_path(path).unwrap(),
|
||||
uri: lsp::Uri::from_file_path(path).unwrap().into(),
|
||||
},
|
||||
range: range_to_lsp(self.range.to_point_utf16(buffer)),
|
||||
work_done_progress_params: Default::default(),
|
||||
|
@ -2591,7 +2592,7 @@ impl LspCommand for LinkedEditingRange {
|
|||
let position = self.position.to_point_utf16(&buffer.snapshot());
|
||||
lsp::LinkedEditingRangeParams {
|
||||
text_document_position_params: lsp::TextDocumentPositionParams::new(
|
||||
lsp::TextDocumentIdentifier::new(lsp::Url::from_file_path(path).unwrap()),
|
||||
lsp::TextDocumentIdentifier::new(lsp::Uri::from_file_path(path).unwrap().into()),
|
||||
point_to_lsp(position),
|
||||
),
|
||||
work_done_progress_params: Default::default(),
|
||||
|
|
|
@ -58,7 +58,7 @@ impl LspCommand for ExpandMacro {
|
|||
) -> ExpandMacroParams {
|
||||
ExpandMacroParams {
|
||||
text_document: lsp::TextDocumentIdentifier {
|
||||
uri: lsp::Url::from_file_path(path).unwrap(),
|
||||
uri: lsp::Uri::from_file_path(path).unwrap().into(),
|
||||
},
|
||||
position: point_to_lsp(self.position),
|
||||
}
|
||||
|
|
|
@ -61,7 +61,7 @@ use lsp::{
|
|||
DiagnosticSeverity, DiagnosticTag, DidChangeWatchedFilesRegistrationOptions,
|
||||
DocumentHighlightKind, Edit, FileSystemWatcher, LanguageServer, LanguageServerBinary,
|
||||
LanguageServerId, LspRequestFuture, MessageActionItem, OneOf, ServerCapabilities,
|
||||
ServerHealthStatus, ServerStatus, TextEdit,
|
||||
ServerHealthStatus, ServerStatus, TextEdit, Uri,
|
||||
};
|
||||
use lsp_command::*;
|
||||
use node_runtime::NodeRuntime;
|
||||
|
@ -2158,7 +2158,7 @@ impl Project {
|
|||
/// LanguageServerName is owned, because it is inserted into a map
|
||||
pub fn open_local_buffer_via_lsp(
|
||||
&mut self,
|
||||
abs_path: lsp::Url,
|
||||
abs_path: lsp::Uri,
|
||||
language_server_id: LanguageServerId,
|
||||
language_server_name: LanguageServerName,
|
||||
cx: &mut ModelContext<Self>,
|
||||
|
@ -2458,13 +2458,15 @@ impl Project {
|
|||
cx.observe_release(buffer, |this, buffer, cx| {
|
||||
if let Some(file) = File::from_dyn(buffer.file()) {
|
||||
if file.is_local() {
|
||||
let uri = lsp::Url::from_file_path(file.abs_path(cx)).unwrap();
|
||||
let uri = lsp::Uri::from_file_path(file.abs_path(cx)).unwrap();
|
||||
for server in this.language_servers_for_buffer(buffer, cx) {
|
||||
server
|
||||
.1
|
||||
.notify::<lsp::notification::DidCloseTextDocument>(
|
||||
lsp::DidCloseTextDocumentParams {
|
||||
text_document: lsp::TextDocumentIdentifier::new(uri.clone()),
|
||||
text_document: lsp::TextDocumentIdentifier::new(
|
||||
uri.clone().into(),
|
||||
),
|
||||
},
|
||||
)
|
||||
.log_err();
|
||||
|
@ -2496,8 +2498,8 @@ impl Project {
|
|||
}
|
||||
|
||||
let abs_path = file.abs_path(cx);
|
||||
let uri = lsp::Url::from_file_path(&abs_path)
|
||||
.unwrap_or_else(|()| panic!("Failed to register file {abs_path:?}"));
|
||||
let uri = lsp::Uri::from_file_path(&abs_path)
|
||||
.unwrap_or_else(|_| panic!("Failed to register file {abs_path:?}"));
|
||||
let initial_snapshot = buffer.text_snapshot();
|
||||
let language = buffer.language().cloned();
|
||||
let worktree_id = file.worktree_id(cx);
|
||||
|
@ -2533,7 +2535,7 @@ impl Project {
|
|||
.notify::<lsp::notification::DidOpenTextDocument>(
|
||||
lsp::DidOpenTextDocumentParams {
|
||||
text_document: lsp::TextDocumentItem::new(
|
||||
uri.clone(),
|
||||
uri.clone().into(),
|
||||
adapter.language_id(&language),
|
||||
0,
|
||||
initial_snapshot.text(),
|
||||
|
@ -2591,12 +2593,14 @@ impl Project {
|
|||
}
|
||||
|
||||
self.buffer_snapshots.remove(&buffer.remote_id());
|
||||
let file_url = lsp::Url::from_file_path(old_path).unwrap();
|
||||
let file_url = lsp::Uri::from_file_path(old_path).unwrap();
|
||||
for (_, language_server) in self.language_servers_for_buffer(buffer, cx) {
|
||||
language_server
|
||||
.notify::<lsp::notification::DidCloseTextDocument>(
|
||||
lsp::DidCloseTextDocumentParams {
|
||||
text_document: lsp::TextDocumentIdentifier::new(file_url.clone()),
|
||||
text_document: lsp::TextDocumentIdentifier::new(
|
||||
file_url.clone().into(),
|
||||
),
|
||||
},
|
||||
)
|
||||
.log_err();
|
||||
|
@ -2755,7 +2759,7 @@ impl Project {
|
|||
let buffer = buffer.read(cx);
|
||||
let file = File::from_dyn(buffer.file())?;
|
||||
let abs_path = file.as_local()?.abs_path(cx);
|
||||
let uri = lsp::Url::from_file_path(abs_path).unwrap();
|
||||
let uri = lsp::Uri::from_file_path(abs_path).unwrap();
|
||||
let next_snapshot = buffer.text_snapshot();
|
||||
|
||||
let language_servers: Vec<_> = self
|
||||
|
@ -2836,7 +2840,7 @@ impl Project {
|
|||
.notify::<lsp::notification::DidChangeTextDocument>(
|
||||
lsp::DidChangeTextDocumentParams {
|
||||
text_document: lsp::VersionedTextDocumentIdentifier::new(
|
||||
uri.clone(),
|
||||
uri.clone().into(),
|
||||
next_version,
|
||||
),
|
||||
content_changes,
|
||||
|
@ -2851,7 +2855,7 @@ impl Project {
|
|||
let worktree_id = file.worktree_id(cx);
|
||||
let abs_path = file.as_local()?.abs_path(cx);
|
||||
let text_document = lsp::TextDocumentIdentifier {
|
||||
uri: lsp::Url::from_file_path(abs_path).unwrap(),
|
||||
uri: lsp::Uri::from_file_path(abs_path).unwrap().into(),
|
||||
};
|
||||
|
||||
for (_, _, server) in self.language_servers_for_worktree(worktree_id) {
|
||||
|
@ -3891,11 +3895,11 @@ impl Project {
|
|||
let snapshot = versions.last().unwrap();
|
||||
let version = snapshot.version;
|
||||
let initial_snapshot = &snapshot.snapshot;
|
||||
let uri = lsp::Url::from_file_path(file.abs_path(cx)).unwrap();
|
||||
let uri = lsp::Uri::from_file_path(file.abs_path(cx)).unwrap();
|
||||
language_server.notify::<lsp::notification::DidOpenTextDocument>(
|
||||
lsp::DidOpenTextDocumentParams {
|
||||
text_document: lsp::TextDocumentItem::new(
|
||||
uri,
|
||||
uri.into(),
|
||||
adapter.language_id(&language),
|
||||
version,
|
||||
initial_snapshot.text(),
|
||||
|
@ -4497,10 +4501,13 @@ impl Project {
|
|||
lsp::OneOf::Left(workspace_folder) => &workspace_folder.uri,
|
||||
lsp::OneOf::Right(base_uri) => base_uri,
|
||||
};
|
||||
base_uri.to_file_path().ok().and_then(|file_path| {
|
||||
(file_path.to_str() == Some(abs_path))
|
||||
.then_some(rp.pattern.as_str())
|
||||
})
|
||||
lsp::Uri::from(base_uri.clone())
|
||||
.to_file_path()
|
||||
.ok()
|
||||
.and_then(|file_path| {
|
||||
(file_path.to_str() == Some(abs_path))
|
||||
.then_some(rp.pattern.as_str())
|
||||
})
|
||||
}
|
||||
};
|
||||
if let Some(relative_glob_pattern) = relative_glob_pattern {
|
||||
|
@ -4589,10 +4596,9 @@ impl Project {
|
|||
disk_based_sources: &[String],
|
||||
cx: &mut ModelContext<Self>,
|
||||
) -> Result<()> {
|
||||
let abs_path = params
|
||||
.uri
|
||||
let abs_path = Uri::from(params.uri.clone())
|
||||
.to_file_path()
|
||||
.map_err(|_| anyhow!("URI is not a file"))?;
|
||||
.map_err(|_| anyhow!("URI `{}` is not a file", params.uri.as_str()))?;
|
||||
let mut diagnostics = Vec::default();
|
||||
let mut primary_diagnostic_group_ids = HashMap::default();
|
||||
let mut sources_by_group_id = HashMap::default();
|
||||
|
@ -5273,9 +5279,9 @@ impl Project {
|
|||
tab_size: NonZeroU32,
|
||||
cx: &mut AsyncAppContext,
|
||||
) -> Result<Vec<(Range<Anchor>, String)>> {
|
||||
let uri = lsp::Url::from_file_path(abs_path)
|
||||
let uri = lsp::Uri::from_file_path(abs_path)
|
||||
.map_err(|_| anyhow!("failed to convert abs path to uri"))?;
|
||||
let text_document = lsp::TextDocumentIdentifier::new(uri);
|
||||
let text_document = lsp::TextDocumentIdentifier::new(uri.into());
|
||||
let capabilities = &language_server.capabilities();
|
||||
|
||||
let formatting_provider = capabilities.document_formatting_provider.as_ref();
|
||||
|
@ -5580,7 +5586,8 @@ impl Project {
|
|||
lsp_symbols
|
||||
.into_iter()
|
||||
.filter_map(|(symbol_name, symbol_kind, symbol_location)| {
|
||||
let abs_path = symbol_location.uri.to_file_path().ok()?;
|
||||
let abs_path: lsp::Uri = symbol_location.uri.into();
|
||||
let abs_path = abs_path.to_file_path().ok()?;
|
||||
let source_worktree = source_worktree.upgrade()?;
|
||||
let source_worktree_id = source_worktree.read(cx).id();
|
||||
|
||||
|
@ -5682,7 +5689,7 @@ impl Project {
|
|||
};
|
||||
|
||||
let symbol_abs_path = resolve_path(&worktree_abs_path, &symbol.path.path);
|
||||
let symbol_uri = if let Ok(uri) = lsp::Url::from_file_path(symbol_abs_path) {
|
||||
let symbol_uri = if let Ok(uri) = lsp::Uri::from_file_path(symbol_abs_path) {
|
||||
uri
|
||||
} else {
|
||||
return Task::ready(Err(anyhow!("invalid symbol path")));
|
||||
|
@ -6602,8 +6609,7 @@ impl Project {
|
|||
for operation in operations {
|
||||
match operation {
|
||||
lsp::DocumentChangeOperation::Op(lsp::ResourceOp::Create(op)) => {
|
||||
let abs_path = op
|
||||
.uri
|
||||
let abs_path = Uri::from(op.uri)
|
||||
.to_file_path()
|
||||
.map_err(|_| anyhow!("can't convert URI to path"))?;
|
||||
|
||||
|
@ -6627,12 +6633,10 @@ impl Project {
|
|||
}
|
||||
|
||||
lsp::DocumentChangeOperation::Op(lsp::ResourceOp::Rename(op)) => {
|
||||
let source_abs_path = op
|
||||
.old_uri
|
||||
let source_abs_path = Uri::from(op.old_uri)
|
||||
.to_file_path()
|
||||
.map_err(|_| anyhow!("can't convert URI to path"))?;
|
||||
let target_abs_path = op
|
||||
.new_uri
|
||||
let target_abs_path = Uri::from(op.new_uri)
|
||||
.to_file_path()
|
||||
.map_err(|_| anyhow!("can't convert URI to path"))?;
|
||||
fs.rename(
|
||||
|
@ -6649,8 +6653,7 @@ impl Project {
|
|||
}
|
||||
|
||||
lsp::DocumentChangeOperation::Op(lsp::ResourceOp::Delete(op)) => {
|
||||
let abs_path = op
|
||||
.uri
|
||||
let abs_path: PathBuf = Uri::from(op.uri)
|
||||
.to_file_path()
|
||||
.map_err(|_| anyhow!("can't convert URI to path"))?;
|
||||
let options = op
|
||||
|
@ -6671,7 +6674,7 @@ impl Project {
|
|||
let buffer_to_edit = this
|
||||
.update(cx, |this, cx| {
|
||||
this.open_local_buffer_via_lsp(
|
||||
op.text_document.uri.clone(),
|
||||
op.text_document.uri.clone().into(),
|
||||
language_server.server_id(),
|
||||
lsp_adapter.name.clone(),
|
||||
cx,
|
||||
|
@ -8004,7 +8007,9 @@ impl Project {
|
|||
PathChange::AddedOrUpdated => lsp::FileChangeType::CHANGED,
|
||||
};
|
||||
Some(lsp::FileEvent {
|
||||
uri: lsp::Url::from_file_path(abs_path.join(path)).unwrap(),
|
||||
uri: lsp::Uri::from_file_path(abs_path.join(path))
|
||||
.unwrap()
|
||||
.into(),
|
||||
typ,
|
||||
})
|
||||
})
|
||||
|
|
|
@ -7,7 +7,6 @@ use language::{
|
|||
tree_sitter_rust, tree_sitter_typescript, Diagnostic, FakeLspAdapter, LanguageConfig,
|
||||
LanguageMatcher, LineEnding, OffsetRangeExt, Point, ToPoint,
|
||||
};
|
||||
use lsp::Url;
|
||||
use parking_lot::Mutex;
|
||||
use pretty_assertions::assert_eq;
|
||||
use serde_json::json;
|
||||
|
@ -379,7 +378,9 @@ async fn test_managing_language_servers(cx: &mut gpui::TestAppContext) {
|
|||
.await
|
||||
.text_document,
|
||||
lsp::TextDocumentItem {
|
||||
uri: lsp::Url::from_file_path("/the-root/test.rs").unwrap(),
|
||||
uri: lsp::Uri::from_file_path("/the-root/test.rs")
|
||||
.unwrap()
|
||||
.into(),
|
||||
version: 0,
|
||||
text: "const A: i32 = 1;".to_string(),
|
||||
language_id: "rust".to_string(),
|
||||
|
@ -405,7 +406,9 @@ async fn test_managing_language_servers(cx: &mut gpui::TestAppContext) {
|
|||
.await
|
||||
.text_document,
|
||||
lsp::VersionedTextDocumentIdentifier::new(
|
||||
lsp::Url::from_file_path("/the-root/test.rs").unwrap(),
|
||||
lsp::Uri::from_file_path("/the-root/test.rs")
|
||||
.unwrap()
|
||||
.into(),
|
||||
1
|
||||
)
|
||||
);
|
||||
|
@ -426,7 +429,9 @@ async fn test_managing_language_servers(cx: &mut gpui::TestAppContext) {
|
|||
.await
|
||||
.text_document,
|
||||
lsp::TextDocumentItem {
|
||||
uri: lsp::Url::from_file_path("/the-root/package.json").unwrap(),
|
||||
uri: lsp::Uri::from_file_path("/the-root/package.json")
|
||||
.unwrap()
|
||||
.into(),
|
||||
version: 0,
|
||||
text: "{\"a\": 1}".to_string(),
|
||||
language_id: "json".to_string(),
|
||||
|
@ -465,7 +470,9 @@ async fn test_managing_language_servers(cx: &mut gpui::TestAppContext) {
|
|||
.await
|
||||
.text_document,
|
||||
lsp::VersionedTextDocumentIdentifier::new(
|
||||
lsp::Url::from_file_path("/the-root/test2.rs").unwrap(),
|
||||
lsp::Uri::from_file_path("/the-root/test2.rs")
|
||||
.unwrap()
|
||||
.into(),
|
||||
1
|
||||
)
|
||||
);
|
||||
|
@ -480,14 +487,22 @@ async fn test_managing_language_servers(cx: &mut gpui::TestAppContext) {
|
|||
.receive_notification::<lsp::notification::DidSaveTextDocument>()
|
||||
.await
|
||||
.text_document,
|
||||
lsp::TextDocumentIdentifier::new(lsp::Url::from_file_path("/the-root/Cargo.toml").unwrap())
|
||||
lsp::TextDocumentIdentifier::new(
|
||||
lsp::Uri::from_file_path("/the-root/Cargo.toml")
|
||||
.unwrap()
|
||||
.into()
|
||||
)
|
||||
);
|
||||
assert_eq!(
|
||||
fake_json_server
|
||||
.receive_notification::<lsp::notification::DidSaveTextDocument>()
|
||||
.await
|
||||
.text_document,
|
||||
lsp::TextDocumentIdentifier::new(lsp::Url::from_file_path("/the-root/Cargo.toml").unwrap())
|
||||
lsp::TextDocumentIdentifier::new(
|
||||
lsp::Uri::from_file_path("/the-root/Cargo.toml")
|
||||
.unwrap()
|
||||
.into()
|
||||
)
|
||||
);
|
||||
|
||||
// Renames are reported only to servers matching the buffer's language.
|
||||
|
@ -503,7 +518,11 @@ async fn test_managing_language_servers(cx: &mut gpui::TestAppContext) {
|
|||
.receive_notification::<lsp::notification::DidCloseTextDocument>()
|
||||
.await
|
||||
.text_document,
|
||||
lsp::TextDocumentIdentifier::new(lsp::Url::from_file_path("/the-root/test2.rs").unwrap()),
|
||||
lsp::TextDocumentIdentifier::new(
|
||||
lsp::Uri::from_file_path("/the-root/test2.rs")
|
||||
.unwrap()
|
||||
.into()
|
||||
),
|
||||
);
|
||||
assert_eq!(
|
||||
fake_rust_server
|
||||
|
@ -511,7 +530,9 @@ async fn test_managing_language_servers(cx: &mut gpui::TestAppContext) {
|
|||
.await
|
||||
.text_document,
|
||||
lsp::TextDocumentItem {
|
||||
uri: lsp::Url::from_file_path("/the-root/test3.rs").unwrap(),
|
||||
uri: lsp::Uri::from_file_path("/the-root/test3.rs")
|
||||
.unwrap()
|
||||
.into(),
|
||||
version: 0,
|
||||
text: rust_buffer2.update(cx, |buffer, _| buffer.text()),
|
||||
language_id: "rust".to_string(),
|
||||
|
@ -553,7 +574,11 @@ async fn test_managing_language_servers(cx: &mut gpui::TestAppContext) {
|
|||
.receive_notification::<lsp::notification::DidCloseTextDocument>()
|
||||
.await
|
||||
.text_document,
|
||||
lsp::TextDocumentIdentifier::new(lsp::Url::from_file_path("/the-root/test3.rs").unwrap(),),
|
||||
lsp::TextDocumentIdentifier::new(
|
||||
lsp::Uri::from_file_path("/the-root/test3.rs")
|
||||
.unwrap()
|
||||
.into(),
|
||||
),
|
||||
);
|
||||
assert_eq!(
|
||||
fake_json_server
|
||||
|
@ -561,7 +586,9 @@ async fn test_managing_language_servers(cx: &mut gpui::TestAppContext) {
|
|||
.await
|
||||
.text_document,
|
||||
lsp::TextDocumentItem {
|
||||
uri: lsp::Url::from_file_path("/the-root/test3.json").unwrap(),
|
||||
uri: lsp::Uri::from_file_path("/the-root/test3.json")
|
||||
.unwrap()
|
||||
.into(),
|
||||
version: 0,
|
||||
text: rust_buffer2.update(cx, |buffer, _| buffer.text()),
|
||||
language_id: "json".to_string(),
|
||||
|
@ -587,7 +614,9 @@ async fn test_managing_language_servers(cx: &mut gpui::TestAppContext) {
|
|||
.await
|
||||
.text_document,
|
||||
lsp::VersionedTextDocumentIdentifier::new(
|
||||
lsp::Url::from_file_path("/the-root/test3.json").unwrap(),
|
||||
lsp::Uri::from_file_path("/the-root/test3.json")
|
||||
.unwrap()
|
||||
.into(),
|
||||
1
|
||||
)
|
||||
);
|
||||
|
@ -616,7 +645,9 @@ async fn test_managing_language_servers(cx: &mut gpui::TestAppContext) {
|
|||
.await
|
||||
.text_document,
|
||||
lsp::TextDocumentItem {
|
||||
uri: lsp::Url::from_file_path("/the-root/test.rs").unwrap(),
|
||||
uri: lsp::Uri::from_file_path("/the-root/test.rs")
|
||||
.unwrap()
|
||||
.into(),
|
||||
version: 0,
|
||||
text: rust_buffer.update(cx, |buffer, _| buffer.text()),
|
||||
language_id: "rust".to_string(),
|
||||
|
@ -637,13 +668,17 @@ async fn test_managing_language_servers(cx: &mut gpui::TestAppContext) {
|
|||
],
|
||||
[
|
||||
lsp::TextDocumentItem {
|
||||
uri: lsp::Url::from_file_path("/the-root/package.json").unwrap(),
|
||||
uri: lsp::Uri::from_file_path("/the-root/package.json")
|
||||
.unwrap()
|
||||
.into(),
|
||||
version: 0,
|
||||
text: json_buffer.update(cx, |buffer, _| buffer.text()),
|
||||
language_id: "json".to_string(),
|
||||
},
|
||||
lsp::TextDocumentItem {
|
||||
uri: lsp::Url::from_file_path("/the-root/test3.json").unwrap(),
|
||||
uri: lsp::Uri::from_file_path("/the-root/test3.json")
|
||||
.unwrap()
|
||||
.into(),
|
||||
version: 0,
|
||||
text: rust_buffer2.update(cx, |buffer, _| buffer.text()),
|
||||
language_id: "json".to_string(),
|
||||
|
@ -655,7 +690,9 @@ async fn test_managing_language_servers(cx: &mut gpui::TestAppContext) {
|
|||
cx.update(|_| drop(json_buffer));
|
||||
let close_message = lsp::DidCloseTextDocumentParams {
|
||||
text_document: lsp::TextDocumentIdentifier::new(
|
||||
lsp::Url::from_file_path("/the-root/package.json").unwrap(),
|
||||
lsp::Uri::from_file_path("/the-root/package.json")
|
||||
.unwrap()
|
||||
.into(),
|
||||
),
|
||||
};
|
||||
assert_eq!(
|
||||
|
@ -845,15 +882,21 @@ async fn test_reporting_fs_changes_to_language_servers(cx: &mut gpui::TestAppCon
|
|||
&*file_changes.lock(),
|
||||
&[
|
||||
lsp::FileEvent {
|
||||
uri: lsp::Url::from_file_path("/the-root/src/b.rs").unwrap(),
|
||||
uri: lsp::Uri::from_file_path("/the-root/src/b.rs")
|
||||
.unwrap()
|
||||
.into(),
|
||||
typ: lsp::FileChangeType::DELETED,
|
||||
},
|
||||
lsp::FileEvent {
|
||||
uri: lsp::Url::from_file_path("/the-root/src/c.rs").unwrap(),
|
||||
uri: lsp::Uri::from_file_path("/the-root/src/c.rs")
|
||||
.unwrap()
|
||||
.into(),
|
||||
typ: lsp::FileChangeType::CREATED,
|
||||
},
|
||||
lsp::FileEvent {
|
||||
uri: lsp::Url::from_file_path("/the-root/target/y/out/y2.rs").unwrap(),
|
||||
uri: lsp::Uri::from_file_path("/the-root/target/y/out/y2.rs")
|
||||
.unwrap()
|
||||
.into(),
|
||||
typ: lsp::FileChangeType::CREATED,
|
||||
},
|
||||
]
|
||||
|
@ -890,7 +933,7 @@ async fn test_single_file_worktrees_diagnostics(cx: &mut gpui::TestAppContext) {
|
|||
.update_diagnostics(
|
||||
LanguageServerId(0),
|
||||
lsp::PublishDiagnosticsParams {
|
||||
uri: Url::from_file_path("/dir/a.rs").unwrap(),
|
||||
uri: Uri::from_file_path("/dir/a.rs").unwrap().into(),
|
||||
version: None,
|
||||
diagnostics: vec![lsp::Diagnostic {
|
||||
range: lsp::Range::new(lsp::Position::new(0, 4), lsp::Position::new(0, 5)),
|
||||
|
@ -907,7 +950,7 @@ async fn test_single_file_worktrees_diagnostics(cx: &mut gpui::TestAppContext) {
|
|||
.update_diagnostics(
|
||||
LanguageServerId(0),
|
||||
lsp::PublishDiagnosticsParams {
|
||||
uri: Url::from_file_path("/dir/b.rs").unwrap(),
|
||||
uri: Uri::from_file_path("/dir/b.rs").unwrap().into(),
|
||||
version: None,
|
||||
diagnostics: vec![lsp::Diagnostic {
|
||||
range: lsp::Range::new(lsp::Position::new(0, 4), lsp::Position::new(0, 5)),
|
||||
|
@ -996,7 +1039,7 @@ async fn test_omitted_diagnostics(cx: &mut gpui::TestAppContext) {
|
|||
.update_diagnostics(
|
||||
server_id,
|
||||
lsp::PublishDiagnosticsParams {
|
||||
uri: Url::from_file_path("/root/dir/b.rs").unwrap(),
|
||||
uri: Uri::from_file_path("/root/dir/b.rs").unwrap().into(),
|
||||
version: None,
|
||||
diagnostics: vec![lsp::Diagnostic {
|
||||
range: lsp::Range::new(lsp::Position::new(0, 4), lsp::Position::new(0, 5)),
|
||||
|
@ -1013,7 +1056,7 @@ async fn test_omitted_diagnostics(cx: &mut gpui::TestAppContext) {
|
|||
.update_diagnostics(
|
||||
server_id,
|
||||
lsp::PublishDiagnosticsParams {
|
||||
uri: Url::from_file_path("/root/other.rs").unwrap(),
|
||||
uri: Uri::from_file_path("/root/other.rs").unwrap().into(),
|
||||
version: None,
|
||||
diagnostics: vec![lsp::Diagnostic {
|
||||
range: lsp::Range::new(lsp::Position::new(0, 8), lsp::Position::new(0, 9)),
|
||||
|
@ -1148,7 +1191,7 @@ async fn test_disk_based_diagnostics_progress(cx: &mut gpui::TestAppContext) {
|
|||
);
|
||||
|
||||
fake_server.notify::<lsp::notification::PublishDiagnostics>(lsp::PublishDiagnosticsParams {
|
||||
uri: Url::from_file_path("/dir/a.rs").unwrap(),
|
||||
uri: Uri::from_file_path("/dir/a.rs").unwrap().into(),
|
||||
version: None,
|
||||
diagnostics: vec![lsp::Diagnostic {
|
||||
range: lsp::Range::new(lsp::Position::new(0, 9), lsp::Position::new(0, 10)),
|
||||
|
@ -1200,7 +1243,7 @@ async fn test_disk_based_diagnostics_progress(cx: &mut gpui::TestAppContext) {
|
|||
|
||||
// Ensure publishing empty diagnostics twice only results in one update event.
|
||||
fake_server.notify::<lsp::notification::PublishDiagnostics>(lsp::PublishDiagnosticsParams {
|
||||
uri: Url::from_file_path("/dir/a.rs").unwrap(),
|
||||
uri: Uri::from_file_path("/dir/a.rs").unwrap().into(),
|
||||
version: None,
|
||||
diagnostics: Default::default(),
|
||||
});
|
||||
|
@ -1213,7 +1256,7 @@ async fn test_disk_based_diagnostics_progress(cx: &mut gpui::TestAppContext) {
|
|||
);
|
||||
|
||||
fake_server.notify::<lsp::notification::PublishDiagnostics>(lsp::PublishDiagnosticsParams {
|
||||
uri: Url::from_file_path("/dir/a.rs").unwrap(),
|
||||
uri: Uri::from_file_path("/dir/a.rs").unwrap().into(),
|
||||
version: None,
|
||||
diagnostics: Default::default(),
|
||||
});
|
||||
|
@ -1322,7 +1365,7 @@ async fn test_restarting_server_with_diagnostics_published(cx: &mut gpui::TestAp
|
|||
// Publish diagnostics
|
||||
let fake_server = fake_servers.next().await.unwrap();
|
||||
fake_server.notify::<lsp::notification::PublishDiagnostics>(lsp::PublishDiagnosticsParams {
|
||||
uri: Url::from_file_path("/dir/a.rs").unwrap(),
|
||||
uri: Uri::from_file_path("/dir/a.rs").unwrap().into(),
|
||||
version: None,
|
||||
diagnostics: vec![lsp::Diagnostic {
|
||||
range: lsp::Range::new(lsp::Position::new(0, 0), lsp::Position::new(0, 0)),
|
||||
|
@ -1402,7 +1445,7 @@ async fn test_restarted_server_reporting_invalid_buffer_version(cx: &mut gpui::T
|
|||
// Before restarting the server, report diagnostics with an unknown buffer version.
|
||||
let fake_server = fake_servers.next().await.unwrap();
|
||||
fake_server.notify::<lsp::notification::PublishDiagnostics>(lsp::PublishDiagnosticsParams {
|
||||
uri: lsp::Url::from_file_path("/dir/a.rs").unwrap(),
|
||||
uri: lsp::Uri::from_file_path("/dir/a.rs").unwrap().into(),
|
||||
version: Some(10000),
|
||||
diagnostics: Vec::new(),
|
||||
});
|
||||
|
@ -1578,7 +1621,7 @@ async fn test_transforming_diagnostics(cx: &mut gpui::TestAppContext) {
|
|||
|
||||
// Report some diagnostics for the initial version of the buffer
|
||||
fake_server.notify::<lsp::notification::PublishDiagnostics>(lsp::PublishDiagnosticsParams {
|
||||
uri: lsp::Url::from_file_path("/dir/a.rs").unwrap(),
|
||||
uri: lsp::Uri::from_file_path("/dir/a.rs").unwrap().into(),
|
||||
version: Some(open_notification.text_document.version),
|
||||
diagnostics: vec![
|
||||
lsp::Diagnostic {
|
||||
|
@ -1664,7 +1707,7 @@ async fn test_transforming_diagnostics(cx: &mut gpui::TestAppContext) {
|
|||
|
||||
// Ensure overlapping diagnostics are highlighted correctly.
|
||||
fake_server.notify::<lsp::notification::PublishDiagnostics>(lsp::PublishDiagnosticsParams {
|
||||
uri: lsp::Url::from_file_path("/dir/a.rs").unwrap(),
|
||||
uri: lsp::Uri::from_file_path("/dir/a.rs").unwrap().into(),
|
||||
version: Some(open_notification.text_document.version),
|
||||
diagnostics: vec![
|
||||
lsp::Diagnostic {
|
||||
|
@ -1756,7 +1799,7 @@ async fn test_transforming_diagnostics(cx: &mut gpui::TestAppContext) {
|
|||
|
||||
// Handle out-of-order diagnostics
|
||||
fake_server.notify::<lsp::notification::PublishDiagnostics>(lsp::PublishDiagnosticsParams {
|
||||
uri: lsp::Url::from_file_path("/dir/a.rs").unwrap(),
|
||||
uri: lsp::Uri::from_file_path("/dir/a.rs").unwrap().into(),
|
||||
version: Some(change_notification_2.text_document.version),
|
||||
diagnostics: vec![
|
||||
lsp::Diagnostic {
|
||||
|
@ -2350,14 +2393,14 @@ async fn test_definition(cx: &mut gpui::TestAppContext) {
|
|||
fake_server.handle_request::<lsp::request::GotoDefinition, _, _>(|params, _| async move {
|
||||
let params = params.text_document_position_params;
|
||||
assert_eq!(
|
||||
params.text_document.uri.to_file_path().unwrap(),
|
||||
Uri::from(params.text_document.uri).to_file_path().unwrap(),
|
||||
Path::new("/dir/b.rs"),
|
||||
);
|
||||
assert_eq!(params.position, lsp::Position::new(0, 22));
|
||||
|
||||
Ok(Some(lsp::GotoDefinitionResponse::Scalar(
|
||||
lsp::Location::new(
|
||||
lsp::Url::from_file_path("/dir/a.rs").unwrap(),
|
||||
lsp::Uri::from_file_path("/dir/a.rs").unwrap().into(),
|
||||
lsp::Range::new(lsp::Position::new(0, 9), lsp::Position::new(0, 10)),
|
||||
),
|
||||
)))
|
||||
|
@ -2665,7 +2708,7 @@ async fn test_apply_code_actions_with_commands(cx: &mut gpui::TestAppContext) {
|
|||
edit: lsp::WorkspaceEdit {
|
||||
changes: Some(
|
||||
[(
|
||||
lsp::Url::from_file_path("/dir/a.ts").unwrap(),
|
||||
lsp::Uri::from_file_path("/dir/a.ts").unwrap().into(),
|
||||
vec![lsp::TextEdit {
|
||||
range: lsp::Range::new(
|
||||
lsp::Position::new(0, 0),
|
||||
|
@ -3496,9 +3539,9 @@ async fn test_grouped_diagnostics(cx: &mut gpui::TestAppContext) {
|
|||
.await
|
||||
.unwrap();
|
||||
|
||||
let buffer_uri = Url::from_file_path("/the-dir/a.rs").unwrap();
|
||||
let buffer_uri = Uri::from_file_path("/the-dir/a.rs").unwrap();
|
||||
let message = lsp::PublishDiagnosticsParams {
|
||||
uri: buffer_uri.clone(),
|
||||
uri: buffer_uri.clone().into(),
|
||||
diagnostics: vec![
|
||||
lsp::Diagnostic {
|
||||
range: lsp::Range::new(lsp::Position::new(1, 8), lsp::Position::new(1, 9)),
|
||||
|
@ -3506,7 +3549,7 @@ async fn test_grouped_diagnostics(cx: &mut gpui::TestAppContext) {
|
|||
message: "error 1".to_string(),
|
||||
related_information: Some(vec![lsp::DiagnosticRelatedInformation {
|
||||
location: lsp::Location {
|
||||
uri: buffer_uri.clone(),
|
||||
uri: buffer_uri.clone().into(),
|
||||
range: lsp::Range::new(lsp::Position::new(1, 8), lsp::Position::new(1, 9)),
|
||||
},
|
||||
message: "error 1 hint 1".to_string(),
|
||||
|
@ -3519,7 +3562,7 @@ async fn test_grouped_diagnostics(cx: &mut gpui::TestAppContext) {
|
|||
message: "error 1 hint 1".to_string(),
|
||||
related_information: Some(vec![lsp::DiagnosticRelatedInformation {
|
||||
location: lsp::Location {
|
||||
uri: buffer_uri.clone(),
|
||||
uri: buffer_uri.clone().into(),
|
||||
range: lsp::Range::new(lsp::Position::new(1, 8), lsp::Position::new(1, 9)),
|
||||
},
|
||||
message: "original diagnostic".to_string(),
|
||||
|
@ -3533,7 +3576,7 @@ async fn test_grouped_diagnostics(cx: &mut gpui::TestAppContext) {
|
|||
related_information: Some(vec![
|
||||
lsp::DiagnosticRelatedInformation {
|
||||
location: lsp::Location {
|
||||
uri: buffer_uri.clone(),
|
||||
uri: buffer_uri.clone().into(),
|
||||
range: lsp::Range::new(
|
||||
lsp::Position::new(1, 13),
|
||||
lsp::Position::new(1, 15),
|
||||
|
@ -3543,7 +3586,7 @@ async fn test_grouped_diagnostics(cx: &mut gpui::TestAppContext) {
|
|||
},
|
||||
lsp::DiagnosticRelatedInformation {
|
||||
location: lsp::Location {
|
||||
uri: buffer_uri.clone(),
|
||||
uri: buffer_uri.clone().into(),
|
||||
range: lsp::Range::new(
|
||||
lsp::Position::new(1, 13),
|
||||
lsp::Position::new(1, 15),
|
||||
|
@ -3560,7 +3603,7 @@ async fn test_grouped_diagnostics(cx: &mut gpui::TestAppContext) {
|
|||
message: "error 2 hint 1".to_string(),
|
||||
related_information: Some(vec![lsp::DiagnosticRelatedInformation {
|
||||
location: lsp::Location {
|
||||
uri: buffer_uri.clone(),
|
||||
uri: buffer_uri.clone().into(),
|
||||
range: lsp::Range::new(lsp::Position::new(2, 8), lsp::Position::new(2, 17)),
|
||||
},
|
||||
message: "original diagnostic".to_string(),
|
||||
|
@ -3573,7 +3616,7 @@ async fn test_grouped_diagnostics(cx: &mut gpui::TestAppContext) {
|
|||
message: "error 2 hint 2".to_string(),
|
||||
related_information: Some(vec![lsp::DiagnosticRelatedInformation {
|
||||
location: lsp::Location {
|
||||
uri: buffer_uri,
|
||||
uri: buffer_uri.into(),
|
||||
range: lsp::Range::new(lsp::Position::new(2, 8), lsp::Position::new(2, 17)),
|
||||
},
|
||||
message: "original diagnostic".to_string(),
|
||||
|
@ -3790,14 +3833,14 @@ async fn test_rename(cx: &mut gpui::TestAppContext) {
|
|||
changes: Some(
|
||||
[
|
||||
(
|
||||
lsp::Url::from_file_path("/dir/one.rs").unwrap(),
|
||||
lsp::Uri::from_file_path("/dir/one.rs").unwrap().into(),
|
||||
vec![lsp::TextEdit::new(
|
||||
lsp::Range::new(lsp::Position::new(0, 6), lsp::Position::new(0, 9)),
|
||||
"THREE".to_string(),
|
||||
)],
|
||||
),
|
||||
(
|
||||
lsp::Url::from_file_path("/dir/two.rs").unwrap(),
|
||||
lsp::Uri::from_file_path("/dir/two.rs").unwrap().into(),
|
||||
vec![
|
||||
lsp::TextEdit::new(
|
||||
lsp::Range::new(
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue