From: Yegappan Lakshmanan Date: Thu, 1 Jun 2023 05:03:45 +0000 (-0700) Subject: getbufoneline() is supported only starting from Vim 9.0.0916 X-Git-Url: http://www.git.stargrave.org/?a=commitdiff_plain;h=70514fa23467d75eeab4211dee73b57b8b334787;p=vim-lsp.git getbufoneline() is supported only starting from Vim 9.0.0916 --- diff --git a/autoload/lsp/outline.vim b/autoload/lsp/outline.vim index 4665131..88d6a43 100644 --- a/autoload/lsp/outline.vim +++ b/autoload/lsp/outline.vim @@ -194,7 +194,7 @@ def OutlineHighlightCurrentSymbol() # Highlight the selected symbol var col: number = - bnr->getbufoneline(symbolTable[mid].outlineLine)->match('\S') + 1 + util.GetBufOneLine(bnr, symbolTable[mid].outlineLine)->match('\S') + 1 prop_add(symbolTable[mid].outlineLine, col, {bufnr: bnr, type: 'LspOutlineHighlight', length: symbolTable[mid].name->len()}) diff --git a/autoload/lsp/symbol.vim b/autoload/lsp/symbol.vim index 38725e1..0cf0edb 100644 --- a/autoload/lsp/symbol.vim +++ b/autoload/lsp/symbol.vim @@ -350,7 +350,7 @@ def PeekLocations(lspserver: dict, locations: list>, endif var lnum = range.start.line + 1 - var text: string = bnr->getbufoneline(lnum) + var text: string = util.GetBufOneLine(bnr, lnum) menuItems->add($'{lnum}: {text}') endfor @@ -392,7 +392,7 @@ export def ShowLocations(lspserver: dict, locations: list>, if !bnr->bufloaded() bnr->bufload() endif - var text: string = bnr->getbufoneline(range.start.line + 1)->trim("\t ", 1) + var text: string = util.GetBufOneLine(bnr, range.start.line + 1)->trim("\t ", 1) qflist->add({filename: fname, lnum: range.start.line + 1, col: util.GetLineByteFromPos(bnr, range.start) + 1, diff --git a/autoload/lsp/textedit.vim b/autoload/lsp/textedit.vim index 02859de..92cd742 100644 --- a/autoload/lsp/textedit.vim +++ b/autoload/lsp/textedit.vim @@ -173,7 +173,7 @@ export def ApplyTextEdits(bnr: number, text_edits: list>): void # lines. var dellastline: bool = false if start_line == 0 && bnr->getbufinfo()[0].linecount == 1 && - bnr->getbufoneline(1) == '' + util.GetBufOneLine(bnr, 1) == '' dellastline = true endif diff --git a/autoload/lsp/util.vim b/autoload/lsp/util.vim index a02f655..2000ba2 100644 --- a/autoload/lsp/util.vim +++ b/autoload/lsp/util.vim @@ -290,4 +290,13 @@ export def FindNearestRootDir(startDir: string, files: list): string return sortedList[0] enddef +export def GetBufOneLine(bnr: number, lnum: number): string + if exists_compiled('*getbufoneline') + # getbufoneline() was introduced in patch 9.0.0916 + return bnr->getbufoneline(lnum) + else + return bnr->getbufline(lnum)[0] + endif +enddef + # vim: tabstop=8 shiftwidth=2 softtabstop=2 diff --git a/test/clangd_tests.vim b/test/clangd_tests.vim index 7c29d3a..6177618 100644 --- a/test/clangd_tests.vim +++ b/test/clangd_tests.vim @@ -464,14 +464,14 @@ def g:Test_LspDiag_Multi() assert_equal([1, 5], [line('.'), col('.')]) var ids = popup_list() assert_equal(1, ids->len()) - assert_match('Incompatible pointer to integer', getbufoneline(ids[0]->winbufnr(), 1, '$')) + assert_match('Incompatible pointer to integer', getbufoneline(ids[0]->winbufnr(), 1)) popup_clear() cursor(1, 6) :LspDiagHere assert_equal([1, 9], [line('.'), col('.')]) ids = popup_list() assert_equal(1, ids->len()) - assert_match('Initializer element is not', getbufoneline(ids[0]->winbufnr(), 1, '$')) + assert_match('Initializer element is not', getbufoneline(ids[0]->winbufnr(), 1)) popup_clear() # Line without diagnostics