mirror of
https://github.com/amix/vimrc
synced 2025-08-14 19:24:59 +08:00
Updated Vim plugins
This commit is contained in:
110
sources_non_forked/ale/autoload/ale/uri/jdt.vim
Normal file
110
sources_non_forked/ale/autoload/ale/uri/jdt.vim
Normal file
@ -0,0 +1,110 @@
|
||||
" Author: yoshi1123 <yoshi1@tutanota.com>
|
||||
" Description: Functions for working with jdt:// URIs.
|
||||
|
||||
function! s:OpenJDTLink(root, uri, line, column, options, result) abort
|
||||
if has_key(a:result, 'error')
|
||||
" no-custom-checks
|
||||
echoerr a:result.error.message
|
||||
|
||||
return
|
||||
endif
|
||||
|
||||
let l:contents = a:result['result']
|
||||
|
||||
if type(l:contents) is# type(v:null)
|
||||
" no-custom-checks
|
||||
echoerr 'File content not found'
|
||||
endif
|
||||
|
||||
" disable autocmd when opening buffer
|
||||
autocmd! AleURISchemes
|
||||
call ale#util#Open(a:uri, a:line, a:column, a:options)
|
||||
autocmd AleURISchemes BufNewFile,BufReadPre jdt://** call ale#uri#jdt#ReadJDTLink(expand('<amatch>'))
|
||||
|
||||
if !empty(getbufvar(bufnr(''), 'ale_lsp_root', ''))
|
||||
return
|
||||
endif
|
||||
|
||||
let b:ale_lsp_root = a:root
|
||||
set filetype=java
|
||||
|
||||
call setline(1, split(l:contents, '\n'))
|
||||
call cursor(a:line, a:column)
|
||||
normal! zz
|
||||
|
||||
setlocal buftype=nofile nomodified nomodifiable readonly
|
||||
endfunction
|
||||
|
||||
" Load new buffer with jdt:// contents and jump to line and column.
|
||||
function! ale#uri#jdt#OpenJDTLink(encoded_uri, line, column, options, conn_id) abort
|
||||
let l:found_eclipselsp = v:false
|
||||
|
||||
for l:linter in ale#linter#Get('java')
|
||||
if l:linter.name is# 'eclipselsp'
|
||||
let l:found_eclipselsp = v:true
|
||||
endif
|
||||
endfor
|
||||
|
||||
if !l:found_eclipselsp
|
||||
throw 'eclipselsp not running'
|
||||
endif
|
||||
|
||||
let l:root = a:conn_id[stridx(a:conn_id, ':')+1:]
|
||||
let l:uri = a:encoded_uri
|
||||
call ale#lsp_linter#SendRequest(
|
||||
\ bufnr(''),
|
||||
\ 'eclipselsp',
|
||||
\ [0, 'java/classFileContents', {'uri': ale#util#ToURI(l:uri)}],
|
||||
\ function('s:OpenJDTLink', [l:root, l:uri, a:line, a:column, a:options])
|
||||
\)
|
||||
endfunction
|
||||
|
||||
function! s:ReadClassFileContents(uri, result) abort
|
||||
if has_key(a:result, 'error')
|
||||
" no-custom-checks
|
||||
echoerr a:result.error.message
|
||||
|
||||
return
|
||||
endif
|
||||
|
||||
let l:contents = a:result['result']
|
||||
|
||||
if type(l:contents) is# type(v:null)
|
||||
" no-custom-checks
|
||||
echoerr 'File content not found'
|
||||
endif
|
||||
|
||||
call setline(1, split(l:contents, '\n'))
|
||||
|
||||
setlocal buftype=nofile nomodified nomodifiable readonly
|
||||
endfunction
|
||||
|
||||
" Read jdt:// contents, as part of current project, into current buffer.
|
||||
function! ale#uri#jdt#ReadJDTLink(encoded_uri) abort
|
||||
if !empty(getbufvar(bufnr(''), 'ale_lsp_root', ''))
|
||||
return
|
||||
endif
|
||||
|
||||
let l:linter_map = ale#lsp_linter#GetLSPLinterMap()
|
||||
|
||||
for l:conn_id in keys(l:linter_map)
|
||||
if l:linter_map[l:conn_id] is# 'eclipselsp'
|
||||
let l:root = l:conn_id[stridx(l:conn_id, ':')+1:]
|
||||
endif
|
||||
endfor
|
||||
|
||||
if l:root is# v:null
|
||||
throw 'eclipselsp not running'
|
||||
endif
|
||||
|
||||
let l:uri = a:encoded_uri
|
||||
let b:ale_lsp_root = l:root
|
||||
set filetype=java
|
||||
|
||||
call ale#lsp_linter#SendRequest(
|
||||
\ bufnr(''),
|
||||
\ 'eclipselsp',
|
||||
\ [0, 'java/classFileContents', {'uri': ale#util#ToURI(l:uri)}],
|
||||
\ function('s:ReadClassFileContents', [l:uri])
|
||||
\)
|
||||
endfunction
|
Reference in New Issue
Block a user