Don't serialize the full LSP symbol when collaborating
Co-Authored-By: Nathan Sobo <nathan@zed.dev>
This commit is contained in:
parent
72ad3c2897
commit
fad335b2ba
7 changed files with 68 additions and 55 deletions
|
@ -233,49 +233,50 @@ impl LspExt for RustLsp {
|
|||
|
||||
fn label_for_symbol(
|
||||
&self,
|
||||
symbol: &lsp::SymbolInformation,
|
||||
name: &str,
|
||||
kind: lsp::SymbolKind,
|
||||
language: &Language,
|
||||
) -> Option<CodeLabel> {
|
||||
let (text, filter_range, display_range) = match symbol.kind {
|
||||
let (text, filter_range, display_range) = match kind {
|
||||
lsp::SymbolKind::METHOD | lsp::SymbolKind::FUNCTION => {
|
||||
let text = format!("fn {} () {{}}", symbol.name);
|
||||
let filter_range = 3..3 + symbol.name.len();
|
||||
let text = format!("fn {} () {{}}", name);
|
||||
let filter_range = 3..3 + name.len();
|
||||
let display_range = 0..filter_range.end;
|
||||
(text, filter_range, display_range)
|
||||
}
|
||||
lsp::SymbolKind::STRUCT => {
|
||||
let text = format!("struct {} {{}}", symbol.name);
|
||||
let filter_range = 7..7 + symbol.name.len();
|
||||
let text = format!("struct {} {{}}", name);
|
||||
let filter_range = 7..7 + name.len();
|
||||
let display_range = 0..filter_range.end;
|
||||
(text, filter_range, display_range)
|
||||
}
|
||||
lsp::SymbolKind::ENUM => {
|
||||
let text = format!("enum {} {{}}", symbol.name);
|
||||
let filter_range = 5..5 + symbol.name.len();
|
||||
let text = format!("enum {} {{}}", name);
|
||||
let filter_range = 5..5 + name.len();
|
||||
let display_range = 0..filter_range.end;
|
||||
(text, filter_range, display_range)
|
||||
}
|
||||
lsp::SymbolKind::INTERFACE => {
|
||||
let text = format!("trait {} {{}}", symbol.name);
|
||||
let filter_range = 6..6 + symbol.name.len();
|
||||
let text = format!("trait {} {{}}", name);
|
||||
let filter_range = 6..6 + name.len();
|
||||
let display_range = 0..filter_range.end;
|
||||
(text, filter_range, display_range)
|
||||
}
|
||||
lsp::SymbolKind::CONSTANT => {
|
||||
let text = format!("const {}: () = ();", symbol.name);
|
||||
let filter_range = 6..6 + symbol.name.len();
|
||||
let text = format!("const {}: () = ();", name);
|
||||
let filter_range = 6..6 + name.len();
|
||||
let display_range = 0..filter_range.end;
|
||||
(text, filter_range, display_range)
|
||||
}
|
||||
lsp::SymbolKind::MODULE => {
|
||||
let text = format!("mod {} {{}}", symbol.name);
|
||||
let filter_range = 4..4 + symbol.name.len();
|
||||
let text = format!("mod {} {{}}", name);
|
||||
let filter_range = 4..4 + name.len();
|
||||
let display_range = 0..filter_range.end;
|
||||
(text, filter_range, display_range)
|
||||
}
|
||||
lsp::SymbolKind::TYPE_PARAMETER => {
|
||||
let text = format!("type {} {{}}", symbol.name);
|
||||
let filter_range = 5..5 + symbol.name.len();
|
||||
let text = format!("type {} {{}}", name);
|
||||
let filter_range = 5..5 + name.len();
|
||||
let display_range = 0..filter_range.end;
|
||||
(text, filter_range, display_range)
|
||||
}
|
||||
|
@ -456,7 +457,6 @@ mod tests {
|
|||
}
|
||||
|
||||
#[test]
|
||||
#[allow(deprecated)]
|
||||
fn test_rust_label_for_symbol() {
|
||||
let language = rust();
|
||||
let grammar = language.grammar().unwrap();
|
||||
|
@ -474,14 +474,7 @@ mod tests {
|
|||
let highlight_keyword = grammar.highlight_id_for_name("keyword").unwrap();
|
||||
|
||||
assert_eq!(
|
||||
language.label_for_symbol(&lsp::SymbolInformation {
|
||||
kind: lsp::SymbolKind::FUNCTION,
|
||||
name: "hello".to_string(),
|
||||
location: lsp::Location::new("file://a".parse().unwrap(), Default::default()),
|
||||
container_name: Default::default(),
|
||||
deprecated: Default::default(),
|
||||
tags: Default::default(),
|
||||
}),
|
||||
language.label_for_symbol("hello", lsp::SymbolKind::FUNCTION),
|
||||
Some(CodeLabel {
|
||||
text: "fn hello".to_string(),
|
||||
filter_range: 3..8,
|
||||
|
@ -490,14 +483,7 @@ mod tests {
|
|||
);
|
||||
|
||||
assert_eq!(
|
||||
language.label_for_symbol(&lsp::SymbolInformation {
|
||||
kind: lsp::SymbolKind::TYPE_PARAMETER,
|
||||
name: "World".to_string(),
|
||||
location: lsp::Location::new("file://a".parse().unwrap(), Default::default()),
|
||||
container_name: Default::default(),
|
||||
deprecated: Default::default(),
|
||||
tags: Default::default(),
|
||||
}),
|
||||
language.label_for_symbol("World", lsp::SymbolKind::TYPE_PARAMETER),
|
||||
Some(CodeLabel {
|
||||
text: "type World".to_string(),
|
||||
filter_range: 5..10,
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue