summaryrefslogtreecommitdiff
path: root/ale_linters/javascript/eslint.vim
diff options
context:
space:
mode:
authorw0rp <devw0rp@gmail.com>2016-09-09 00:23:26 +0100
committerw0rp <devw0rp@gmail.com>2016-09-09 00:23:26 +0100
commit11c11e578f22cda52048fdec1354f9675b413495 (patch)
tree6609b83f02e56f3d151deb0599ca349dbbce6e3a /ale_linters/javascript/eslint.vim
downloadale-11c11e578f22cda52048fdec1354f9675b413495.zip
Add linting with eslint in NeoVim, with a few bugs.
Diffstat (limited to 'ale_linters/javascript/eslint.vim')
-rw-r--r--ale_linters/javascript/eslint.vim41
1 files changed, 41 insertions, 0 deletions
diff --git a/ale_linters/javascript/eslint.vim b/ale_linters/javascript/eslint.vim
new file mode 100644
index 00000000..d6763eef
--- /dev/null
+++ b/ale_linters/javascript/eslint.vim
@@ -0,0 +1,41 @@
+if exists('g:loaded_ale_linters_javascript_eslint')
+ finish
+endif
+
+let g:loaded_ale_linters_javascript_eslint = 1
+
+function! ale_linters#javascript#eslint#Handle(lines)
+ " Matches patterns line the following:
+ "
+ " <text>:47:14: Missing trailing comma. [Warning/comma-dangle]
+ " <text>:56:41: Missing semicolon. [Error/semi]
+ let pattern = '^<text>:\(\d\+\):\(\d\+\): \(.\+\) \[\(.\+\)/\(.\+\)\]'
+ let output = []
+
+ for line in a:lines
+ let match = matchlist(line, pattern)
+
+ if len(match) == 0
+ break
+ endif
+
+ " vcol is Needed to indicate that the column is a character.
+ call add(output, {
+ \ 'bufnr': bufnr('%'),
+ \ 'lnum': match[1] + 0,
+ \ 'vcol': 0,
+ \ 'col': match[2] + 0,
+ \ 'text': match[3] . '(' . match[5] . ')',
+ \ 'type': match[4] ==# 'Warning' ? 'W' : 'E',
+ \ 'nr': -1,
+ \})
+ endfor
+
+ return output
+endfunction
+
+call ALEAddLinter('javascript', {
+\ 'executable': 'eslint',
+\ 'command': 'eslint -f unix --stdin',
+\ 'callback': 'ale_linters#javascript#eslint#Handle',
+\})