All patches and comments are welcome. Please squash your changes to logical
commits before using git-format-patch and git-send-email to
patches@git.madduck.net.
If you'd read over the Git project's submission guidelines and adhered to them,
I'd be especially grateful.
1 " Author: Horacio Sanson <https://github.com/hsanson>
2 " Description: Support for the Java language server https://github.com/georgewfraser/vscode-javac
4 call ale#Set('java_javalsp_executable', '')
5 call ale#Set('java_javalsp_config', {})
7 function! ale_linters#java#javalsp#Executable(buffer) abort
8 return ale#Var(a:buffer, 'java_javalsp_executable')
11 function! ale_linters#java#javalsp#Config(buffer) abort
12 let l:defaults = { 'java': { 'classPath': [], 'externalDependencies': [] } }
13 let l:config = ale#Var(a:buffer, 'java_javalsp_config')
15 " Ensure the config dictionary contains both classPath and
16 " externalDependencies keys to avoid a NPE crash on Java Language Server.
17 call extend(l:config, l:defaults, 'keep')
18 call extend(l:config['java'], l:defaults['java'], 'keep')
23 function! ale_linters#java#javalsp#Command(buffer) abort
24 let l:executable = ale_linters#java#javalsp#Executable(a:buffer)
26 if fnamemodify(l:executable, ':t') is# 'java'
27 " For backward compatibility.
29 \ ale#Escape(l:executable),
30 \ '--add-exports jdk.compiler/com.sun.tools.javac.api=javacs',
31 \ '--add-exports jdk.compiler/com.sun.tools.javac.code=javacs',
32 \ '--add-exports jdk.compiler/com.sun.tools.javac.comp=javacs',
33 \ '--add-exports jdk.compiler/com.sun.tools.javac.main=javacs',
34 \ '--add-exports jdk.compiler/com.sun.tools.javac.tree=javacs',
35 \ '--add-exports jdk.compiler/com.sun.tools.javac.model=javacs',
36 \ '--add-exports jdk.compiler/com.sun.tools.javac.util=javacs',
37 \ '--add-opens jdk.compiler/com.sun.tools.javac.api=javacs',
38 \ '-m javacs/org.javacs.Main',
41 return join(l:cmd, ' ')
43 return ale#Escape(l:executable)
47 call ale#linter#Define('java', {
49 \ 'aliases': ['java_language_server'],
51 \ 'executable': function('ale_linters#java#javalsp#Executable'),
52 \ 'command': function('ale_linters#java#javalsp#Command'),
54 \ 'project_root': function('ale#java#FindProjectRoot'),
55 \ 'lsp_config': function('ale_linters#java#javalsp#Config')