From 057348959c452348253c3cce7eca1efdd5d89aa9 Mon Sep 17 00:00:00 2001 From: Andreas Louv Date: Wed, 12 Apr 2023 10:23:07 +0200 Subject: [PATCH] Add support for a 'goto ...' language server --- autoload/lsp/buffer.vim | 4 ++++ autoload/lsp/lsp.vim | 10 +++++----- doc/lsp.txt | 4 ++++ 3 files changed, 13 insertions(+), 5 deletions(-) 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 } < -- 2.48.1