Improve eclipselsp jar search logic.
- Set default value to $HOME/eclipse.jdt.ls - Make JAR search regexp more specific. - Allow to set the VSCode extensions folder as ale_java_eclipselsp_path.
This commit is contained in:
parent
63abd2dfef
commit
53db52e713
3 changed files with 26 additions and 17 deletions
|
@ -3,7 +3,7 @@
|
||||||
|
|
||||||
let s:version_cache = {}
|
let s:version_cache = {}
|
||||||
|
|
||||||
call ale#Set('java_eclipselsp_path', 'eclipse.jdt.ls')
|
call ale#Set('java_eclipselsp_path', ale#path#Simplify($HOME . '/eclipse.jdt.ls'))
|
||||||
call ale#Set('java_eclipselsp_executable', 'java')
|
call ale#Set('java_eclipselsp_executable', 'java')
|
||||||
|
|
||||||
function! ale_linters#java#eclipselsp#Executable(buffer) abort
|
function! ale_linters#java#eclipselsp#Executable(buffer) abort
|
||||||
|
@ -16,20 +16,27 @@ endfunction
|
||||||
|
|
||||||
function! ale_linters#java#eclipselsp#JarPath(buffer) abort
|
function! ale_linters#java#eclipselsp#JarPath(buffer) abort
|
||||||
let l:path = ale_linters#java#eclipselsp#TargetPath(a:buffer)
|
let l:path = ale_linters#java#eclipselsp#TargetPath(a:buffer)
|
||||||
let l:path = l:path . '/org.eclipse.jdt.ls.product/target/repository/plugins'
|
|
||||||
|
|
||||||
let l:files = globpath(l:path, 'org.eclipse.equinox.launcher_*.jar', 1, 1)
|
" Search jar file within repository path when manually built using mvn
|
||||||
|
let l:repo_path = l:path . '/org.eclipse.jdt.ls.product/target/repository'
|
||||||
|
let l:files = globpath(l:repo_path, '**/plugins/org.eclipse.equinox.launcher_\d\.\d\.\d\d\d\.*\.jar', 1, 1)
|
||||||
|
|
||||||
if empty(l:files)
|
if len(l:files) == 1
|
||||||
return ''
|
return l:files[0]
|
||||||
endif
|
endif
|
||||||
|
|
||||||
return l:files[0]
|
" Search jar file within VSCode extensions folder.
|
||||||
|
let l:files = globpath(l:path, '**/plugins/org.eclipse.equinox.launcher_\d\.\d\.\d\d\d\.*\.jar', 1, 1)
|
||||||
|
|
||||||
|
if len(l:files) == 1
|
||||||
|
return l:files[0]
|
||||||
|
endif
|
||||||
|
|
||||||
|
return ''
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
function! ale_linters#java#eclipselsp#ConfigurationPath(buffer) abort
|
function! ale_linters#java#eclipselsp#ConfigurationPath(buffer) abort
|
||||||
let l:path = ale_linters#java#eclipselsp#TargetPath(a:buffer)
|
let l:path = fnamemodify(ale_linters#java#eclipselsp#JarPath(a:buffer), ':p:h:h')
|
||||||
let l:path = l:path . '/org.eclipse.jdt.ls.product/target/repository'
|
|
||||||
|
|
||||||
if has('win32')
|
if has('win32')
|
||||||
let l:path = l:path . '/config_win'
|
let l:path = l:path . '/config_win'
|
||||||
|
|
|
@ -104,7 +104,7 @@ This variable can be changed to use a different executable for java.
|
||||||
===============================================================================
|
===============================================================================
|
||||||
eclipselsp *ale-java-eclipselsp*
|
eclipselsp *ale-java-eclipselsp*
|
||||||
|
|
||||||
To enable Java LSP linter you need to clone and build the eclipse.jdt.ls
|
To enable Eclipse LSP linter you need to clone and build the eclipse.jdt.ls
|
||||||
language server from https://github.com/eclipse/eclipse.jdt.ls. Simply
|
language server from https://github.com/eclipse/eclipse.jdt.ls. Simply
|
||||||
clone the source code repo and then build the plugin:
|
clone the source code repo and then build the plugin:
|
||||||
|
|
||||||
|
@ -114,21 +114,23 @@ Note: currently, the build can only run when launched with JDK 8. JDK 9 or more
|
||||||
recent versions can be used to run the server though.
|
recent versions can be used to run the server though.
|
||||||
|
|
||||||
After build completes the files required to run the language server will be
|
After build completes the files required to run the language server will be
|
||||||
located inside the repositoy folder `eclipse.jdt.ls`. Ensure to set
|
located inside the repository folder `eclipse.jdt.ls`. Please ensure to set
|
||||||
|g:ale_java_eclipselsp_path| to the absolute path of that folder.
|
|g:ale_java_eclipselsp_path| to the absolute path of that folder.
|
||||||
|
|
||||||
You could customize compiler options and code assists of the server.
|
You could customize compiler options and code assists of the server.
|
||||||
Under your project folder, modify the file
|
Under your project folder, modify the file `.settings/org.eclipse.jdt.core.prefs`
|
||||||
`.settings/org.eclipse.jdt.core.prefs` with options presented at
|
with options presented at
|
||||||
https://help.eclipse.org/neon/topic/org.eclipse.jdt.doc.isv/reference/api/org/eclipse/jdt/core/JavaCore.html.
|
https://help.eclipse.org/neon/topic/org.eclipse.jdt.doc.isv/reference/api/org/eclipse/jdt/core/JavaCore.html.
|
||||||
|
|
||||||
g:ale_java_eclipselsp_path *g:ale_java_eclipselsp_path*
|
g:ale_java_eclipselsp_path *g:ale_java_eclipselsp_path*
|
||||||
*b:ale_java_eclipselsp_path*
|
*b:ale_java_eclipselsp_path*
|
||||||
|
|
||||||
Type: |String|
|
Type: |String|
|
||||||
Default: `'eclipse.jdt.ls'`
|
Default: `'$HOME/eclipse.jdt.ls'`
|
||||||
|
|
||||||
Absolute path to the location of the eclipse.jdt.ls repository folder.
|
Absolute path to the location of the eclipse.jdt.ls repository folder. Or if
|
||||||
|
you have VSCode extension installed the absolute path to the VSCode extensions
|
||||||
|
folder (e.g. $HOME/.vscode/extensions in Linux).
|
||||||
|
|
||||||
|
|
||||||
g:ale_java_eclipselsp_executable *g:ale_java_eclipse_executable*
|
g:ale_java_eclipselsp_executable *g:ale_java_eclipse_executable*
|
||||||
|
|
|
@ -3,12 +3,12 @@ Before:
|
||||||
let b:ale_java_eclipselsp_path = '/home/user/eclipse.dst.ls'
|
let b:ale_java_eclipselsp_path = '/home/user/eclipse.dst.ls'
|
||||||
call ale#test#SetFilename('dummy.java')
|
call ale#test#SetFilename('dummy.java')
|
||||||
|
|
||||||
let b:cfg = '/home/user/eclipse.dst.ls/org.eclipse.jdt.ls.product/target/repository/config_linux'
|
let b:cfg = '/testplugin/test/config_linux'
|
||||||
|
|
||||||
if has('win32')
|
if has('win32')
|
||||||
let b:cfg = '\home\user\eclipse.dst.ls\org.eclipse.jdt.ls.product\target\repository\config_win'
|
let b:cfg = 'C:\testplugin\test\config_win'
|
||||||
elseif has('macunix')
|
elseif has('macunix')
|
||||||
let b:cfg = '/home/user/eclipse.dst.ls/org.eclipse.jdt.ls.product/target/repository/config_mac'
|
let b:cfg = '/testplugin/test/config_mac'
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
|
||||||
|
|
Reference in a new issue