Skip to content

Commit 797692c

Browse files
authored
Refactor textDocument/definition to use it's own method (#1150)
1 parent 3757a2e commit 797692c

File tree

3 files changed

+19
-3
lines changed

3 files changed

+19
-3
lines changed

autoload/LanguageClient.vim

+8-2
Original file line numberDiff line numberDiff line change
@@ -932,11 +932,17 @@ function! LanguageClient#textDocument_switchSourceHeader(...) abort
932932
endfunction
933933

934934
function! LanguageClient#textDocument_definition(...) abort
935+
let l:Callback = get(a:000, 1, v:null)
935936
let l:params = {
936-
\ 'method': 'textDocument/definition',
937+
\ 'filename': LSP#filename(),
938+
\ 'text': LSP#text(),
939+
\ 'line': LSP#line(),
940+
\ 'character': LSP#character(),
941+
\ 'handle': s:IsFalse(l:Callback),
942+
\ 'gotoCmd': v:null,
937943
\ }
938944
call extend(l:params, get(a:000, 0, {}))
939-
return call('LanguageClient#findLocations', [l:params] + a:000[1:])
945+
return LanguageClient#Call('textDocument/definition', l:params, l:Callback)
940946
endfunction
941947

942948
function! LanguageClient#textDocument_typeDefinition(...) abort

src/language_server_protocol.rs

+10-1
Original file line numberDiff line numberDiff line change
@@ -1658,10 +1658,19 @@ impl LanguageClient {
16581658
Ok(Value::Null)
16591659
}
16601660

1661+
#[tracing::instrument(level = "info", skip(self))]
1662+
pub fn text_document_definition(&self, params: &Value) -> Result<Value> {
1663+
let params = json!({
1664+
"method": lsp_types::request::GotoDefinition::METHOD,
1665+
})
1666+
.combine(params);
1667+
let result = self.find_locations(&params)?;
1668+
Ok(result)
1669+
}
1670+
16611671
#[tracing::instrument(level = "info", skip(self))]
16621672
pub fn text_document_references(&self, params: &Value) -> Result<Value> {
16631673
let include_declaration: bool = try_get("includeDeclaration", params)?.unwrap_or(true);
1664-
// TODO: cleanup.
16651674
let params = json!({
16661675
"method": lsp_types::request::References::METHOD,
16671676
"context": ReferenceContext {

src/rpchandler.rs

+1
Original file line numberDiff line numberDiff line change
@@ -90,6 +90,7 @@ impl LanguageClient {
9090
request::CodeActionRequest::METHOD => self.text_document_code_action(&params),
9191
request::Completion::METHOD => self.text_document_completion(&params),
9292
request::SignatureHelpRequest::METHOD => self.text_document_signature_help(&params),
93+
request::GotoDefinition::METHOD => self.text_document_definition(&params),
9394
request::References::METHOD => self.text_document_references(&params),
9495
request::Formatting::METHOD => self.text_document_formatting(&params),
9596
request::RangeFormatting::METHOD => self.text_document_range_formatting(&params),

0 commit comments

Comments
 (0)