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 = {}
|
||||
|
||||
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')
|
||||
|
||||
function! ale_linters#java#eclipselsp#Executable(buffer) abort
|
||||
|
@ -16,20 +16,27 @@ endfunction
|
|||
|
||||
function! ale_linters#java#eclipselsp#JarPath(buffer) abort
|
||||
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)
|
||||
return ''
|
||||
if len(l:files) == 1
|
||||
return l:files[0]
|
||||
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
|
||||
|
||||
function! ale_linters#java#eclipselsp#ConfigurationPath(buffer) abort
|
||||
let l:path = ale_linters#java#eclipselsp#TargetPath(a:buffer)
|
||||
let l:path = l:path . '/org.eclipse.jdt.ls.product/target/repository'
|
||||
let l:path = fnamemodify(ale_linters#java#eclipselsp#JarPath(a:buffer), ':p:h:h')
|
||||
|
||||
if has('win32')
|
||||
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*
|
||||
|
||||
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
|
||||
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.
|
||||
|
||||
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.
|
||||
|
||||
You could customize compiler options and code assists of the server.
|
||||
Under your project folder, modify the file
|
||||
`.settings/org.eclipse.jdt.core.prefs` with options presented at
|
||||
Under your project folder, modify the file `.settings/org.eclipse.jdt.core.prefs`
|
||||
with options presented at
|
||||
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*
|
||||
*b:ale_java_eclipselsp_path*
|
||||
|
||||
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*
|
||||
|
|
|
@ -3,12 +3,12 @@ Before:
|
|||
let b:ale_java_eclipselsp_path = '/home/user/eclipse.dst.ls'
|
||||
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')
|
||||
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')
|
||||
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
|
||||
|
||||
|
||||
|
|
Reference in a new issue