mirror of https://github.com/helix-editor/helix
feat: add a config option to exclude declaration from LSP references (#6886)
* feat: added the config option to exclude declaration from reference query Fixes: #5344 * fix: review * fix: reviewpull/6905/head
parent
222be0f1e7
commit
2836ea2ac4
|
@ -128,6 +128,7 @@ The following statusline elements can be configured:
|
||||||
| `display-inlay-hints` | Display inlay hints[^2] | `false` |
|
| `display-inlay-hints` | Display inlay hints[^2] | `false` |
|
||||||
| `display-signature-help-docs` | Display docs under signature help popup | `true` |
|
| `display-signature-help-docs` | Display docs under signature help popup | `true` |
|
||||||
| `snippets` | Enables snippet completions. Requires a server restart (`:lsp-restart`) to take effect after `:config-reload`/`:set`. | `true` |
|
| `snippets` | Enables snippet completions. Requires a server restart (`:lsp-restart`) to take effect after `:config-reload`/`:set`. | `true` |
|
||||||
|
| `goto-reference-include-declaration` | Include declaration in the goto references popup. | `true` |
|
||||||
|
|
||||||
[^1]: By default, a progress spinner is shown in the statusline beside the file path.
|
[^1]: By default, a progress spinner is shown in the statusline beside the file path.
|
||||||
[^2]: You may also have to activate them in the LSP config for them to appear, not just in Helix.
|
[^2]: You may also have to activate them in the LSP config for them to appear, not just in Helix.
|
||||||
|
|
|
@ -1167,6 +1167,7 @@ impl Client {
|
||||||
&self,
|
&self,
|
||||||
text_document: lsp::TextDocumentIdentifier,
|
text_document: lsp::TextDocumentIdentifier,
|
||||||
position: lsp::Position,
|
position: lsp::Position,
|
||||||
|
include_declaration: bool,
|
||||||
work_done_token: Option<lsp::ProgressToken>,
|
work_done_token: Option<lsp::ProgressToken>,
|
||||||
) -> Option<impl Future<Output = Result<Value>>> {
|
) -> Option<impl Future<Output = Result<Value>>> {
|
||||||
let capabilities = self.capabilities.get().unwrap();
|
let capabilities = self.capabilities.get().unwrap();
|
||||||
|
@ -1183,7 +1184,7 @@ impl Client {
|
||||||
position,
|
position,
|
||||||
},
|
},
|
||||||
context: lsp::ReferenceContext {
|
context: lsp::ReferenceContext {
|
||||||
include_declaration: true,
|
include_declaration,
|
||||||
},
|
},
|
||||||
work_done_progress_params: lsp::WorkDoneProgressParams { work_done_token },
|
work_done_progress_params: lsp::WorkDoneProgressParams { work_done_token },
|
||||||
partial_result_params: lsp::PartialResultParams {
|
partial_result_params: lsp::PartialResultParams {
|
||||||
|
|
|
@ -1078,13 +1078,19 @@ pub fn goto_implementation(cx: &mut Context) {
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn goto_reference(cx: &mut Context) {
|
pub fn goto_reference(cx: &mut Context) {
|
||||||
|
let config = cx.editor.config();
|
||||||
let (view, doc) = current!(cx.editor);
|
let (view, doc) = current!(cx.editor);
|
||||||
let language_server = language_server!(cx.editor, doc);
|
let language_server = language_server!(cx.editor, doc);
|
||||||
let offset_encoding = language_server.offset_encoding();
|
let offset_encoding = language_server.offset_encoding();
|
||||||
|
|
||||||
let pos = doc.position(view.id, offset_encoding);
|
let pos = doc.position(view.id, offset_encoding);
|
||||||
|
|
||||||
let future = match language_server.goto_reference(doc.identifier(), pos, None) {
|
let future = match language_server.goto_reference(
|
||||||
|
doc.identifier(),
|
||||||
|
pos,
|
||||||
|
config.lsp.goto_reference_include_declaration,
|
||||||
|
None,
|
||||||
|
) {
|
||||||
Some(future) => future,
|
Some(future) => future,
|
||||||
None => {
|
None => {
|
||||||
cx.editor
|
cx.editor
|
||||||
|
|
|
@ -354,6 +354,8 @@ pub struct LspConfig {
|
||||||
pub display_inlay_hints: bool,
|
pub display_inlay_hints: bool,
|
||||||
/// Whether to enable snippet support
|
/// Whether to enable snippet support
|
||||||
pub snippets: bool,
|
pub snippets: bool,
|
||||||
|
/// Whether to include declaration in the goto reference query
|
||||||
|
pub goto_reference_include_declaration: bool,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Default for LspConfig {
|
impl Default for LspConfig {
|
||||||
|
@ -365,6 +367,7 @@ impl Default for LspConfig {
|
||||||
display_signature_help_docs: true,
|
display_signature_help_docs: true,
|
||||||
display_inlay_hints: false,
|
display_inlay_hints: false,
|
||||||
snippets: true,
|
snippets: true,
|
||||||
|
goto_reference_include_declaration: true,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue