]> Sergey Matveev's repositories - vim-lsp.git/commitdiff
Add support for a 'goto ...' language server
authorAndreas Louv <andreas@louv.dk>
Wed, 12 Apr 2023 08:23:07 +0000 (10:23 +0200)
committerAndreas Louv <andreas@louv.dk>
Thu, 13 Apr 2023 21:58:31 +0000 (23:58 +0200)
autoload/lsp/buffer.vim
autoload/lsp/lsp.vim
doc/lsp.txt

index 861828621218925e5ca421e7f1ab17d6ddc3460b..c9f4ff7b2a22d04880b3df1a1440f0e68a9ec0c4 100644 (file)
@@ -47,6 +47,10 @@ export def BufLspServerGet(bnr: number, domain: string = null_string): dict<any>
 
   var SupportedCheckFns = {
     'completion': (lspserver) => lspserver.isCompletionProvider,
+    'definition': (lspserver) => lspserver.isDefinitionProvider,
+    'declaration': (lspserver) => lspserver.isDeclarationProvider,
+    'typeDefinition': (lspserver) => lspserver.isTypeDefinitionProvider,
+    'implementation': (lspserver) => lspserver.isImplementationProvider,
     'documentFormatting': (lspserver) => lspserver.isDocumentFormattingProvider,
   }
 
index d8bf5575b09a53c5b82b610079fa1f632a8563a5..0c8467818d9767bd8dc99d3f266607bfea33ba5b 100644 (file)
@@ -255,7 +255,7 @@ enddef
 
 # Go to a definition using "textDocument/definition" LSP request
 export def GotoDefinition(peek: bool, cmdmods: string)
-  var lspserver: dict<any> = buf.CurbufGetServerChecked()
+  var lspserver: dict<any> = buf.CurbufGetServerChecked('definition')
   if lspserver->empty()
     return
   endif
@@ -265,7 +265,7 @@ enddef
 
 # Go to a declaration using "textDocument/declaration" LSP request
 export def GotoDeclaration(peek: bool, cmdmods: string)
-  var lspserver: dict<any> = buf.CurbufGetServerChecked()
+  var lspserver: dict<any> = buf.CurbufGetServerChecked('declaration')
   if lspserver->empty()
     return
   endif
@@ -275,7 +275,7 @@ enddef
 
 # Go to a type definition using "textDocument/typeDefinition" LSP request
 export def GotoTypedef(peek: bool, cmdmods: string)
-  var lspserver: dict<any> = buf.CurbufGetServerChecked()
+  var lspserver: dict<any> = buf.CurbufGetServerChecked('typeDefinition')
   if lspserver->empty()
     return
   endif
@@ -285,7 +285,7 @@ enddef
 
 # Go to a implementation using "textDocument/implementation" LSP request
 export def GotoImplementation(peek: bool, cmdmods: string)
-  var lspserver: dict<any> = buf.CurbufGetServerChecked()
+  var lspserver: dict<any> = buf.CurbufGetServerChecked('implementation')
   if lspserver->empty()
     return
   endif
@@ -1045,7 +1045,7 @@ enddef
 
 # Function to use with the 'tagfunc' option.
 export def TagFunc(pat: string, flags: string, info: dict<any>): any
-  var lspserver: dict<any> = buf.CurbufGetServerChecked()
+  var lspserver: dict<any> = buf.CurbufGetServerChecked('definition')
   if lspserver->empty()
     return v:null
   endif
index 4f373ba06bbf0101bb8ca6568b72807de02ab039..ea71abafc648265ee94ac244c6db50fd68ed1175 100644 (file)
@@ -1365,6 +1365,10 @@ servers should be used for a given method.  The following flags are supported
 >
 #{
        completion: true,
+       definition: true,
+       declaration: true,
+       typeDefinition: true,
+       implementation: true,
        documentFormatting: true
 }
 <