From: Yegappan Lakshmanan Date: Thu, 20 Jan 2022 02:43:56 +0000 (-0800) Subject: Skip remote files X-Git-Url: http://www.git.stargrave.org/?a=commitdiff_plain;h=c2e8d7e3fda225acadc6e980fb1037cb1539f0ec;p=vim-lsp.git Skip remote files --- diff --git a/autoload/lsp.vim b/autoload/lsp.vim index a8308b0..21eb567 100644 --- a/autoload/lsp.vim +++ b/autoload/lsp.vim @@ -31,6 +31,7 @@ if has('patch-8.2.4019') util.ClearTraceLogs = util_import.ClearTraceLogs util.GetLineByteFromPos = util_import.GetLineByteFromPos util.PushCursorToTagStack = util_import.PushCursorToTagStack + util.LspUriRemote = util_import.LspUriRemote diag.UpdateDiags = diag_import.UpdateDiags diag.DiagsGetErrorCount = diag_import.DiagsGetErrorCount diag.ShowAllDiags = diag_import.ShowAllDiags @@ -49,7 +50,8 @@ else ServerTrace, ClearTraceLogs, GetLineByteFromPos, - PushCursorToTagStack} from './util.vim' + PushCursorToTagStack, + LspUriRemote} from './util.vim' import {DiagRemoveFile, UpdateDiags, DiagsGetErrorCount, @@ -69,6 +71,7 @@ else util.ClearTraceLogs = ClearTraceLogs util.GetLineByteFromPos = GetLineByteFromPos util.PushCursorToTagStack = PushCursorToTagStack + util.LspUriRemote = LspUriRemote diag.DiagRemoveFile = DiagRemoveFile diag.UpdateDiags = UpdateDiags diag.DiagsGetErrorCount = DiagsGetErrorCount @@ -162,7 +165,7 @@ enddef # Go to a definition using "textDocument/definition" LSP request def lsp#gotoDefinition(peek: bool) var ftype: string = &filetype - if ftype == '' || @% == '' + if ftype == '' || @% == '' || !bufnrToServer->has_key(bufnr()) return endif @@ -182,7 +185,7 @@ enddef # Go to a declaration using "textDocument/declaration" LSP request def lsp#gotoDeclaration(peek: bool) var ftype: string = &filetype - if ftype == '' + if ftype == '' || @% == '' || !bufnrToServer->has_key(bufnr()) return endif @@ -202,7 +205,7 @@ enddef # Go to a type definition using "textDocument/typeDefinition" LSP request def lsp#gotoTypedef(peek: bool) var ftype: string = &filetype - if ftype == '' + if ftype == '' || @% == '' || !bufnrToServer->has_key(bufnr()) return endif @@ -222,7 +225,7 @@ enddef # Go to a implementation using "textDocument/implementation" LSP request def lsp#gotoImplementation(peek: bool) var ftype: string = &filetype - if ftype == '' + if ftype == '' || @% == '' || !bufnrToServer->has_key(bufnr()) return endif @@ -243,7 +246,7 @@ enddef # Invoked from an insert-mode mapping, so return an empty string. def lsp#showSignature(): string var ftype: string = &filetype - if ftype == '' + if ftype == '' || @% == '' || !bufnrToServer->has_key(bufnr()) return '' endif @@ -257,11 +260,6 @@ def lsp#showSignature(): string return '' endif - var fname: string = @% - if fname == '' - return '' - endif - # first send all the changes in the current buffer to the LSP server listener_flush() lspserver.showSignature() @@ -270,6 +268,10 @@ enddef # buffer change notification listener def lsp#bufchange_listener(bnr: number, start: number, end: number, added: number, changes: list>) + if !bufnrToServer->has_key(bnr) + return + endif + var ftype = bnr->getbufvar('&filetype') var lspserver: dict = s:lspGetServer(ftype) if lspserver->empty() || !lspserver.running @@ -327,7 +329,7 @@ def lsp#leftInsertMode() :unlet b:LspDiagsUpdatePending var ftype: string = &filetype - if ftype == '' + if ftype == '' || @% == '' || !bufnrToServer->has_key(bufnr()) return endif @@ -345,6 +347,11 @@ def lsp#addFile(bnr: number): void return endif + # Skip remote files + if util.LspUriRemote(bnr->bufname()->fnamemodify(":p")) + return + endif + var ftype: string = bnr->getbufvar('&filetype') if ftype == '' return @@ -533,7 +540,7 @@ enddef # in a quickfix list def lsp#showDiagnostics(): void var ftype = &filetype - if ftype == '' || @% == '' + if ftype == '' || @% == '' || !bufnrToServer->has_key(bufnr()) return endif @@ -553,7 +560,7 @@ enddef # Show the diagnostic message for the current line def lsp#showCurrentDiag() var ftype = &filetype - if ftype == '' || @% == '' + if ftype == '' || @% == '' || !bufnrToServer->has_key(bufnr()) return endif @@ -572,7 +579,7 @@ enddef def lsp#showCurrentDiagInStatusLine() var ftype = &filetype - if ftype == '' || @% == '' + if ftype == '' || @% == '' || !bufnrToServer->has_key(bufnr()) return endif @@ -623,6 +630,10 @@ enddef # Insert mode completion handler. Used when 24x7 completion is enabled # (default). def lsp#complete() + if !bufnrToServer->has_key(bufnr()) + return + endif + var cur_col: number = col('.') var line: string = getline('.') @@ -660,6 +671,10 @@ enddef # omni complete handler def lsp#omniFunc(findstart: number, base: string): any + if !bufnrToServer->has_key(bufnr()) + return + endif + var ftype: string = &filetype var lspserver: dict = s:lspGetServer(ftype) @@ -708,7 +723,7 @@ enddef # location def lsp#hover() var ftype = &filetype - if ftype == '' + if ftype == '' || @% == '' || !bufnrToServer->has_key(bufnr()) return endif @@ -717,18 +732,13 @@ def lsp#hover() return endif - var fname = @% - if fname == '' - return - endif - lspserver.hover() enddef # show symbol references def lsp#showReferences(peek: bool) var ftype = &filetype - if ftype == '' + if ftype == '' || @% == '' || !bufnrToServer->has_key(bufnr()) return endif @@ -742,18 +752,13 @@ def lsp#showReferences(peek: bool) return endif - var fname = @% - if fname == '' - return - endif - lspserver.showReferences(peek) enddef # highlight all the places where a symbol is referenced def lsp#docHighlight() var ftype = &filetype - if ftype == '' + if ftype == '' || @% == '' || !bufnrToServer->has_key(bufnr()) return endif @@ -767,11 +772,6 @@ def lsp#docHighlight() return endif - var fname = @% - if fname == '' - return - endif - lspserver.docHighlight() enddef @@ -788,7 +788,8 @@ def lsp#requestDocSymbols() endif var ftype = &filetype - if ftype == '' + var fname = @% + if ftype == '' || fname == '' || !bufnrToServer->has_key(bufnr()) return endif @@ -800,11 +801,6 @@ def lsp#requestDocSymbols() return endif - var fname = @% - if fname == '' - return - endif - lspserver.getDocSymbols(fname) enddef @@ -822,7 +818,8 @@ def lsp#textDocFormat(range_args: number, line1: number, line2: number) endif var ftype = &filetype - if ftype == '' + var fname = @% + if ftype == '' || fname == '' || !bufnrToServer->has_key(bufnr()) return endif @@ -836,11 +833,6 @@ def lsp#textDocFormat(range_args: number, line1: number, line2: number) return endif - var fname = @% - if fname == '' - return - endif - if range_args > 0 lspserver.textDocFormat(fname, true, line1, line2) else @@ -855,7 +847,8 @@ enddef # Uses LSP "callHierarchy/incomingCalls" request def lsp#incomingCalls() var ftype = &filetype - if ftype == '' + var fname = @% + if ftype == '' || fname == '' || !bufnrToServer->has_key(bufnr()) return endif @@ -869,11 +862,6 @@ def lsp#incomingCalls() return endif - var fname = @% - if fname == '' - return - endif - lspserver.incomingCalls(fname) enddef @@ -887,7 +875,7 @@ enddef # Uses LSP "textDocument/rename" request def lsp#rename() var ftype = &filetype - if ftype == '' + if ftype == '' || @% == '' || !bufnrToServer->has_key(bufnr()) return endif @@ -901,11 +889,6 @@ def lsp#rename() return endif - var fname = @% - if fname == '' - return - endif - var newName: string = input("Rename symbol: ", expand('')) if newName == '' return @@ -918,7 +901,8 @@ enddef # Uses LSP "textDocument/codeAction" request def lsp#codeAction() var ftype = &filetype - if ftype == '' + var fname = @% + if ftype == '' || fname == '' || !bufnrToServer->has_key(bufnr()) return endif @@ -932,11 +916,6 @@ def lsp#codeAction() return endif - var fname = @% - if fname == '' - return - endif - lspserver.codeAction(fname) enddef @@ -944,7 +923,7 @@ enddef # Uses LSP "workspace/symbol" request def lsp#symbolSearch(queryArg: string) var ftype = &filetype - if ftype == '' + if ftype == '' || @% == '' || !bufnrToServer->has_key(bufnr()) return endif @@ -958,11 +937,6 @@ def lsp#symbolSearch(queryArg: string) return endif - var fname = @% - if fname == '' - return - endif - var query: string = queryArg if query == '' query = input("Lookup symbol: ", expand('')) @@ -1068,7 +1042,8 @@ enddef # visually select a range of positions around the current cursor. def lsp#selectionRange() var ftype = &filetype - if ftype == '' + var fname = @% + if ftype == '' || fname == '' || !bufnrToServer->has_key(bufnr()) return endif @@ -1082,11 +1057,6 @@ def lsp#selectionRange() return endif - var fname = @% - if fname == '' - return - endif - # TODO: Also support passing a range lspserver.selectionRange(fname) enddef @@ -1094,7 +1064,8 @@ enddef # fold the entire document def lsp#foldDocument() var ftype = &filetype - if ftype == '' + var fname = @% + if ftype == '' || fname == '' || !bufnrToServer->has_key(bufnr()) return endif @@ -1108,11 +1079,6 @@ def lsp#foldDocument() return endif - var fname = @% - if fname == '' - return - endif - if &foldmethod != 'manual' util.ErrMsg("Error: Only works when 'foldmethod' is 'manual'") return diff --git a/autoload/util.vim b/autoload/util.vim index e815e22..fe478ed 100644 --- a/autoload/util.vim +++ b/autoload/util.vim @@ -69,6 +69,12 @@ export def LspUriToFile(uri: string): string return uri_decoded enddef +# Returns if the URI refers to a remote file (e.g. ssh://) +# Credit: vim-lsp plugin +export def LspUriRemote(uri: string): bool + return uri =~# '^\w\+::' || uri =~# '^[a-z][a-z0-9+.-]*://' +enddef + # Convert a Vim filename to an LSP URI (file://) def ConvertFilenameToUri(fname: string): string var uri: string = fnamemodify(fname, ':p')