diff options
author | w0rp <devw0rp@gmail.com> | 2023-09-09 14:01:00 +0100 |
---|---|---|
committer | w0rp <devw0rp@gmail.com> | 2023-09-09 14:01:00 +0100 |
commit | d2c2bbf2dc470e5d796519bbc6060bf0bcebc1c1 (patch) | |
tree | ac4230832d4d67525fa5badb28a14e1c3bfeafdf /ale_linters | |
parent | 79a2dc2d8a6e1644e9c8e648f9c0e417d5400097 (diff) | |
download | ale-d2c2bbf2dc470e5d796519bbc6060bf0bcebc1c1.zip |
Add `--globals vim` to luacheck automatically
luacheck will run with `--globals vim` automatically if the file is in
runtimepath and `--globals` hasn't already been configured.
Diffstat (limited to 'ale_linters')
-rw-r--r-- | ale_linters/lua/luacheck.vim | 37 |
1 files changed, 36 insertions, 1 deletions
diff --git a/ale_linters/lua/luacheck.vim b/ale_linters/lua/luacheck.vim index 34be2b5a..16dc08a5 100644 --- a/ale_linters/lua/luacheck.vim +++ b/ale_linters/lua/luacheck.vim @@ -4,8 +4,43 @@ call ale#Set('lua_luacheck_executable', 'luacheck') call ale#Set('lua_luacheck_options', '') +function! s:IsInRuntimepath(buffer) abort + let l:runtimepath_dirs = split(&runtimepath, ',') + + for l:dir in ale#path#Upwards(expand('#' . a:buffer . ':p:h')) + for l:runtime_dir in l:runtimepath_dirs + if l:dir is# l:runtime_dir + return 1 + endif + endfor + endfor + + return 0 +endfunction + function! ale_linters#lua#luacheck#GetCommand(buffer) abort - return '%e' . ale#Pad(ale#Var(a:buffer, 'lua_luacheck_options')) + let l:options = ale#Var(a:buffer, 'lua_luacheck_options') + + " Add `--globals vim` by default if the file is in runtimepath. + if l:options !~# '--globals' + let l:in_runtime = getbufvar(a:buffer, 'ale_in_runtimepath', v:null) + + if l:in_runtime is v:null + let l:in_runtime = s:IsInRuntimepath(a:buffer) + " Save the result of check this buffer so we only check once. + call setbufvar(a:buffer, 'ale_in_runtimepath', l:in_runtime) + endif + + if l:in_runtime + if !empty(l:options) + let l:options .= ' ' + endif + + let l:options .= '--globals vim' + endif + endif + + return '%e' . ale#Pad(l:options) \ . ' --formatter plain --codes --filename %s -' endfunction |