mirror of
https://github.com/rust-lang/rust-analyzer.git
synced 2025-11-03 05:13:35 +00:00
Fix minor things
This commit is contained in:
parent
dc6e6d2b86
commit
0a4d7dcdda
3 changed files with 20 additions and 21 deletions
|
|
@ -213,7 +213,6 @@ fn structure_node(node: &SyntaxNode, config: &FileStructureConfig) -> Option<Str
|
||||||
detail: it.ty().map(|ty| ty.to_string()),
|
detail: it.ty().map(|ty| ty.to_string()),
|
||||||
deprecated: false,
|
deprecated: false,
|
||||||
};
|
};
|
||||||
|
|
||||||
Some(node)
|
Some(node)
|
||||||
},
|
},
|
||||||
ast::ExternBlock(it) => {
|
ast::ExternBlock(it) => {
|
||||||
|
|
|
||||||
|
|
@ -3083,7 +3083,7 @@ macro_rules! _config_data {
|
||||||
}) => {
|
}) => {
|
||||||
/// Default config values for this grouping.
|
/// Default config values for this grouping.
|
||||||
#[allow(non_snake_case)]
|
#[allow(non_snake_case)]
|
||||||
#[derive(Debug, Clone )]
|
#[derive(Debug, Clone)]
|
||||||
struct $name { $($field: $ty,)* }
|
struct $name { $($field: $ty,)* }
|
||||||
|
|
||||||
impl_for_config_data!{
|
impl_for_config_data!{
|
||||||
|
|
|
||||||
|
|
@ -567,7 +567,7 @@ pub(crate) fn handle_document_symbol(
|
||||||
let file_id = try_default!(from_proto::file_id(&snap, ¶ms.text_document.uri)?);
|
let file_id = try_default!(from_proto::file_id(&snap, ¶ms.text_document.uri)?);
|
||||||
let line_index = snap.file_line_index(file_id)?;
|
let line_index = snap.file_line_index(file_id)?;
|
||||||
|
|
||||||
let mut parents: Vec<(lsp_types::DocumentSymbol, Option<usize>)> = Vec::new();
|
let mut symbols: Vec<(lsp_types::DocumentSymbol, Option<usize>)> = Vec::new();
|
||||||
|
|
||||||
let config = snap.config.document_symbol(None);
|
let config = snap.config.document_symbol(None);
|
||||||
|
|
||||||
|
|
@ -576,38 +576,38 @@ pub(crate) fn handle_document_symbol(
|
||||||
file_id,
|
file_id,
|
||||||
)?;
|
)?;
|
||||||
|
|
||||||
for symbol in structure_nodes {
|
for node in structure_nodes {
|
||||||
let mut tags = Vec::new();
|
let mut tags = Vec::new();
|
||||||
if symbol.deprecated {
|
if node.deprecated {
|
||||||
tags.push(SymbolTag::DEPRECATED)
|
tags.push(SymbolTag::DEPRECATED)
|
||||||
};
|
};
|
||||||
|
|
||||||
#[allow(deprecated)]
|
#[allow(deprecated)]
|
||||||
let doc_symbol = lsp_types::DocumentSymbol {
|
let symbol = lsp_types::DocumentSymbol {
|
||||||
name: symbol.label,
|
name: node.label,
|
||||||
detail: symbol.detail,
|
detail: node.detail,
|
||||||
kind: to_proto::structure_node_kind(symbol.kind),
|
kind: to_proto::structure_node_kind(node.kind),
|
||||||
tags: Some(tags),
|
tags: Some(tags),
|
||||||
deprecated: Some(symbol.deprecated),
|
deprecated: Some(node.deprecated),
|
||||||
range: to_proto::range(&line_index, symbol.node_range),
|
range: to_proto::range(&line_index, node.node_range),
|
||||||
selection_range: to_proto::range(&line_index, symbol.navigation_range),
|
selection_range: to_proto::range(&line_index, node.navigation_range),
|
||||||
children: None,
|
children: None,
|
||||||
};
|
};
|
||||||
parents.push((doc_symbol, symbol.parent));
|
symbols.push((symbol, node.parent));
|
||||||
}
|
}
|
||||||
|
|
||||||
// Builds hierarchy from a flat list, in reverse order (so that indices make sense)
|
// Builds hierarchy from a flat list, in reverse order (so that the indices make sense)
|
||||||
let document_symbols = {
|
let document_symbols = {
|
||||||
let mut acc = Vec::new();
|
let mut acc = Vec::new();
|
||||||
while let Some((mut node, parent_idx)) = parents.pop() {
|
while let Some((mut symbol, parent_idx)) = symbols.pop() {
|
||||||
if let Some(children) = &mut node.children {
|
if let Some(children) = &mut symbol.children {
|
||||||
children.reverse();
|
children.reverse();
|
||||||
}
|
}
|
||||||
let parent = match parent_idx {
|
let parent = match parent_idx {
|
||||||
None => &mut acc,
|
None => &mut acc,
|
||||||
Some(i) => parents[i].0.children.get_or_insert_with(Vec::new),
|
Some(i) => symbols[i].0.children.get_or_insert_with(Vec::new),
|
||||||
};
|
};
|
||||||
parent.push(node);
|
parent.push(symbol);
|
||||||
}
|
}
|
||||||
acc.reverse();
|
acc.reverse();
|
||||||
acc
|
acc
|
||||||
|
|
@ -617,7 +617,7 @@ pub(crate) fn handle_document_symbol(
|
||||||
document_symbols.into()
|
document_symbols.into()
|
||||||
} else {
|
} else {
|
||||||
let url = to_proto::url(&snap, file_id);
|
let url = to_proto::url(&snap, file_id);
|
||||||
let mut symbol_information = Vec::<SymbolInformation>::new();
|
let mut symbol_information = Vec::new();
|
||||||
for symbol in document_symbols {
|
for symbol in document_symbols {
|
||||||
flatten_document_symbol(&symbol, None, &url, &mut symbol_information);
|
flatten_document_symbol(&symbol, None, &url, &mut symbol_information);
|
||||||
}
|
}
|
||||||
|
|
@ -654,7 +654,7 @@ pub(crate) fn handle_workspace_symbol(
|
||||||
let _p = tracing::info_span!("handle_workspace_symbol").entered();
|
let _p = tracing::info_span!("handle_workspace_symbol").entered();
|
||||||
|
|
||||||
let config = snap.config.workspace_symbol(None);
|
let config = snap.config.workspace_symbol(None);
|
||||||
let (all_symbols, libs) = decide_search_scope_and_kind(¶ms, &config);
|
let (all_symbols, libs) = decide_search_kind_and_scope(¶ms, &config);
|
||||||
|
|
||||||
let query = {
|
let query = {
|
||||||
let query: String = params.query.chars().filter(|&c| c != '#' && c != '*').collect();
|
let query: String = params.query.chars().filter(|&c| c != '#' && c != '*').collect();
|
||||||
|
|
@ -677,7 +677,7 @@ pub(crate) fn handle_workspace_symbol(
|
||||||
|
|
||||||
return Ok(Some(lsp_types::WorkspaceSymbolResponse::Nested(res)));
|
return Ok(Some(lsp_types::WorkspaceSymbolResponse::Nested(res)));
|
||||||
|
|
||||||
fn decide_search_scope_and_kind(
|
fn decide_search_kind_and_scope(
|
||||||
params: &WorkspaceSymbolParams,
|
params: &WorkspaceSymbolParams,
|
||||||
config: &WorkspaceSymbolConfig,
|
config: &WorkspaceSymbolConfig,
|
||||||
) -> (bool, bool) {
|
) -> (bool, bool) {
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue