Skip to content

Commit 1fabcde

Browse files
authored
feat: LSP document symbol (#5532)
# Description ## Problem Resolves #5533 ## Summary With this you can see where you are at any time, and jump to any symbol in the document. https://github.com/user-attachments/assets/74ebdb36-cd51-4afc-a33e-775156c1317b ## Additional Context None ## Documentation Check one: - [x] No documentation needed. - [ ] Documentation included in this PR. - [ ] **[For Experimental Features]** Documentation to be submitted in a separate PR. # PR Checklist - [x] I have tested the changes locally. - [ ] I have formatted the changes with [Prettier](https://prettier.io/) and/or `cargo fmt` on default settings.
1 parent 5bbce79 commit 1fabcde

File tree

7 files changed

+817
-26
lines changed

7 files changed

+817
-26
lines changed

compiler/noirc_frontend/src/ast/expression.rs

Lines changed: 9 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -800,12 +800,8 @@ impl FunctionDefinition {
800800
return_visibility: Visibility::Private,
801801
}
802802
}
803-
}
804-
805-
impl Display for FunctionDefinition {
806-
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
807-
writeln!(f, "{:?}", self.attributes)?;
808803

804+
pub fn signature(&self) -> String {
809805
let parameters = vecmap(&self.parameters, |Param { visibility, pattern, typ, span: _ }| {
810806
if *visibility == Visibility::Public {
811807
format!("{pattern}: {visibility} {typ}")
@@ -827,15 +823,14 @@ impl Display for FunctionDefinition {
827823
format!(" -> {}", self.return_type)
828824
};
829825

830-
write!(
831-
f,
832-
"fn {}({}){}{} {}",
833-
self.name,
834-
parameters.join(", "),
835-
return_type,
836-
where_clause_str,
837-
self.body
838-
)
826+
format!("fn {}({}){}{}", self.name, parameters.join(", "), return_type, where_clause_str)
827+
}
828+
}
829+
830+
impl Display for FunctionDefinition {
831+
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
832+
writeln!(f, "{:?}", self.attributes)?;
833+
write!(f, "fn {} {}", self.signature(), self.body)
839834
}
840835
}
841836

tooling/lsp/src/lib.rs

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,10 @@ use async_lsp::{
2121
use fm::{codespan_files as files, FileManager};
2222
use fxhash::FxHashSet;
2323
use lsp_types::{
24-
request::{HoverRequest, InlayHintRequest, PrepareRenameRequest, References, Rename},
24+
request::{
25+
DocumentSymbolRequest, HoverRequest, InlayHintRequest, PrepareRenameRequest, References,
26+
Rename,
27+
},
2528
CodeLens,
2629
};
2730
use nargo::{
@@ -45,10 +48,10 @@ use notifications::{
4548
on_did_open_text_document, on_did_save_text_document, on_exit, on_initialized,
4649
};
4750
use requests::{
48-
on_code_lens_request, on_formatting, on_goto_declaration_request, on_goto_definition_request,
49-
on_goto_type_definition_request, on_hover_request, on_initialize, on_inlay_hint_request,
50-
on_prepare_rename_request, on_profile_run_request, on_references_request, on_rename_request,
51-
on_shutdown, on_test_run_request, on_tests_request,
51+
on_code_lens_request, on_document_symbol_request, on_formatting, on_goto_declaration_request,
52+
on_goto_definition_request, on_goto_type_definition_request, on_hover_request, on_initialize,
53+
on_inlay_hint_request, on_prepare_rename_request, on_profile_run_request,
54+
on_references_request, on_rename_request, on_shutdown, on_test_run_request, on_tests_request,
5255
};
5356
use serde_json::Value as JsonValue;
5457
use thiserror::Error;
@@ -126,6 +129,7 @@ impl NargoLspService {
126129
.request::<request::GotoDefinition, _>(on_goto_definition_request)
127130
.request::<request::GotoDeclaration, _>(on_goto_declaration_request)
128131
.request::<request::GotoTypeDefinition, _>(on_goto_type_definition_request)
132+
.request::<DocumentSymbolRequest, _>(on_document_symbol_request)
129133
.request::<References, _>(on_references_request)
130134
.request::<PrepareRenameRequest, _>(on_prepare_rename_request)
131135
.request::<Rename, _>(on_rename_request)

0 commit comments

Comments
 (0)