Some checks failed
Detach Plugins / check (FlyGrep.vim) (push) Has been cancelled
Detach Plugins / check (GitHub.vim) (push) Has been cancelled
Detach Plugins / check (JavaUnit.vim) (push) Has been cancelled
Detach Plugins / check (SourceCounter.vim) (push) Has been cancelled
Detach Plugins / check (cpicker.nvim) (push) Has been cancelled
Detach Plugins / check (dein-ui.vim) (push) Has been cancelled
Detach Plugins / check (git.vim) (push) Has been cancelled
Detach Plugins / check (iedit.vim) (push) Has been cancelled
Detach Plugins / check (scrollbar.vim) (push) Has been cancelled
Detach Plugins / check (vim-chat) (push) Has been cancelled
Detach Plugins / check (vim-cheat) (push) Has been cancelled
Detach Plugins / check (vim-todo) (push) Has been cancelled
Detach Plugins / check (xmake.vim) (push) Has been cancelled
test / Linux (nvim, nightly) (push) Has been cancelled
test / Linux (nvim, v0.3.8) (push) Has been cancelled
test / Linux (nvim, v0.4.0) (push) Has been cancelled
test / Linux (nvim, v0.4.2) (push) Has been cancelled
test / Linux (nvim, v0.4.3) (push) Has been cancelled
test / Linux (nvim, v0.4.4) (push) Has been cancelled
test / Linux (nvim, v0.5.0) (push) Has been cancelled
test / Linux (nvim, v0.5.1) (push) Has been cancelled
test / Linux (nvim, v0.6.0) (push) Has been cancelled
test / Linux (nvim, v0.6.1) (push) Has been cancelled
test / Linux (nvim, v0.7.0) (push) Has been cancelled
test / Linux (nvim, v0.7.2) (push) Has been cancelled
test / Linux (nvim, v0.8.0) (push) Has been cancelled
test / Linux (nvim, v0.8.1) (push) Has been cancelled
test / Linux (nvim, v0.8.2) (push) Has been cancelled
test / Linux (nvim, v0.8.3) (push) Has been cancelled
test / Linux (nvim, v0.9.0) (push) Has been cancelled
test / Linux (nvim, v0.9.1) (push) Has been cancelled
test / Linux (true, vim, v7.4.052) (push) Has been cancelled
test / Linux (true, vim, v7.4.1689) (push) Has been cancelled
test / Linux (true, vim, v7.4.629) (push) Has been cancelled
test / Linux (true, vim, v8.0.0027) (push) Has been cancelled
test / Linux (true, vim, v8.0.0183) (push) Has been cancelled
test / Linux (vim, nightly) (push) Has been cancelled
test / Linux (vim, v8.0.0184) (push) Has been cancelled
test / Linux (vim, v8.0.1453) (push) Has been cancelled
test / Linux (vim, v8.1.2269) (push) Has been cancelled
test / Linux (vim, v8.2.2434) (push) Has been cancelled
test / Linux (vim, v8.2.3995) (push) Has been cancelled
test / Windows (nvim, nightly) (push) Has been cancelled
test / Windows (nvim, v0.3.8) (push) Has been cancelled
test / Windows (nvim, v0.4.2) (push) Has been cancelled
test / Windows (nvim, v0.4.3) (push) Has been cancelled
test / Windows (nvim, v0.4.4) (push) Has been cancelled
test / Windows (nvim, v0.5.0) (push) Has been cancelled
test / Windows (nvim, v0.5.1) (push) Has been cancelled
test / Windows (nvim, v0.6.0) (push) Has been cancelled
test / Windows (nvim, v0.6.1) (push) Has been cancelled
test / Windows (nvim, v0.7.0) (push) Has been cancelled
test / Windows (nvim, v0.7.2) (push) Has been cancelled
test / Windows (nvim, v0.8.0) (push) Has been cancelled
test / Windows (nvim, v0.8.1) (push) Has been cancelled
test / Windows (nvim, v0.8.2) (push) Has been cancelled
test / Windows (nvim, v0.8.3) (push) Has been cancelled
test / Windows (nvim, v0.9.0) (push) Has been cancelled
test / Windows (nvim, v0.9.1) (push) Has been cancelled
test / Windows (vim, nightly) (push) Has been cancelled
test / Windows (vim, v7.4.1185) (push) Has been cancelled
test / Windows (vim, v7.4.1689) (push) Has been cancelled
test / Windows (vim, v8.0.0027) (push) Has been cancelled
test / Windows (vim, v8.0.1453) (push) Has been cancelled
test / Windows (vim, v8.1.2269) (push) Has been cancelled
test / Windows (vim, v8.2.2434) (push) Has been cancelled
test / Windows (vim, v8.2.3995) (push) Has been cancelled
docker / docker (push) Has been cancelled
mirror / check (coding) (push) Has been cancelled
mirror / check (gitee) (push) Has been cancelled
mirror / check (gitlab) (push) Has been cancelled
73 lines
1.7 KiB
VimL
73 lines
1.7 KiB
VimL
" don't spam the user when Vim is started in Vi compatibility mode
|
|
let s:cpo_save = &cpo
|
|
set cpo&vim
|
|
|
|
" go#lsp#lsp#Position returns the LSP text position. If no arguments are
|
|
" provided, the cursor position is assumed. Otherwise, there should be two
|
|
" arguments: the line and the column.
|
|
function! go#lsp#lsp#Position(...)
|
|
if a:0 < 2
|
|
let [l:line, l:col] = getpos('.')[1:2]
|
|
else
|
|
let l:line = a:1
|
|
let l:col = a:2
|
|
endif
|
|
let l:content = getline(l:line)
|
|
|
|
" LSP uses 0-based lines.
|
|
return [l:line - 1, s:character(l:line, l:col-1)]
|
|
endfunction
|
|
|
|
function! s:strlen(str) abort
|
|
let l:runes = split(a:str, '\zs')
|
|
return len(l:runes) + len(filter(l:runes, 'char2nr(v:val)>=0x10000'))
|
|
endfunction
|
|
|
|
function! s:character(line, col) abort
|
|
return s:strlen(getline(a:line)[:col([a:line, a:col - 1])])
|
|
endfunction
|
|
|
|
" go#lsp#PositionOf returns len(content[0:units]) where units is utf-16 code
|
|
" units. This is mostly useful for converting LSP text position to vim
|
|
" position.
|
|
function! go#lsp#lsp#PositionOf(content, units, ...) abort
|
|
if a:units == 0
|
|
return 1
|
|
endif
|
|
|
|
let l:remaining = a:units
|
|
let l:str = ''
|
|
for l:rune in split(a:content, '\zs')
|
|
if l:remaining < 0
|
|
break
|
|
endif
|
|
let l:remaining -= 1
|
|
if char2nr(l:rune) >= 0x10000
|
|
let l:remaining -= 1
|
|
endif
|
|
let l:str = l:str . l:rune
|
|
endfor
|
|
|
|
return len(l:str)
|
|
endfunction
|
|
|
|
function! go#lsp#lsp#SeverityToErrorType(severity) abort
|
|
if a:severity == 1
|
|
return 'E'
|
|
elseif a:severity == 2
|
|
return 'W'
|
|
elseif a:severity == 3
|
|
return 'I'
|
|
elseif a:severity == 4
|
|
return 'I'
|
|
endif
|
|
|
|
return ''
|
|
endfunction
|
|
|
|
" restore Vi compatibility settings
|
|
let &cpo = s:cpo_save
|
|
unlet s:cpo_save
|
|
|
|
" vim: sw=2 ts=2 et
|