-
Notifications
You must be signed in to change notification settings - Fork 53
/
javascript.vim
34 lines (29 loc) · 1.03 KB
/
javascript.vim
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
" return full path with the trailing slash
" or an empty string if we're not in an npm project
fun! s:GetNodeModulesAbsPath ()
let lcd_saved = fnameescape(getcwd())
silent! exec "lcd" expand('%:p:h')
let path = finddir('node_modules', '.;')
exec "lcd" lcd_saved
" fnamemodify will return full path with trailing slash;
" if no node_modules found, we're safe
return path is '' ? '' : fnamemodify(path, ':p')
endfun
" return full path of local eslint executable
" or an empty string if no executable found
fun! s:GetEslintExec (node_modules)
let eslint_guess = a:node_modules is '' ? '' : a:node_modules . '.bin/eslint'
return exepath(eslint_guess)
endfun
" if eslint_exec found successfully, set it for the current buffer
fun! s:LetEslintExec (eslint_exec)
if a:eslint_exec isnot ''
let b:syntastic_javascript_eslint_exec = a:eslint_exec
endif
endfun
fun! s:main ()
let node_modules = s:GetNodeModulesAbsPath()
let eslint_exec = s:GetEslintExec(node_modules)
call s:LetEslintExec(eslint_exec)
endfun
call s:main()