From: Andreas Louv Date: Wed, 12 Apr 2023 08:23:07 +0000 (+0200) Subject: Add support for a 'goto ...' language server X-Git-Url: http://www.git.stargrave.org/?a=commitdiff_plain;h=057348959c452348253c3cce7eca1efdd5d89aa9;p=vim-lsp.git Add support for a 'goto ...' language server --- diff --git a/autoload/lsp/buffer.vim b/autoload/lsp/buffer.vim index 8618286..c9f4ff7 100644 --- a/autoload/lsp/buffer.vim +++ b/autoload/lsp/buffer.vim @@ -47,6 +47,10 @@ export def BufLspServerGet(bnr: number, domain: string = null_string): dict 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, } diff --git a/autoload/lsp/lsp.vim b/autoload/lsp/lsp.vim index d8bf557..0c84678 100644 --- a/autoload/lsp/lsp.vim +++ b/autoload/lsp/lsp.vim @@ -255,7 +255,7 @@ enddef # Go to a definition using "textDocument/definition" LSP request export def GotoDefinition(peek: bool, cmdmods: string) - var lspserver: dict = buf.CurbufGetServerChecked() + var lspserver: dict = 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 = buf.CurbufGetServerChecked() + var lspserver: dict = 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 = buf.CurbufGetServerChecked() + var lspserver: dict = 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 = buf.CurbufGetServerChecked() + var lspserver: dict = 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 - var lspserver: dict = buf.CurbufGetServerChecked() + var lspserver: dict = buf.CurbufGetServerChecked('definition') if lspserver->empty() return v:null endif diff --git a/doc/lsp.txt b/doc/lsp.txt index 4f373ba..ea71aba 100644 --- a/doc/lsp.txt +++ b/doc/lsp.txt @@ -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 } <