summaryrefslogtreecommitdiff
path: root/ale_linters/fish/fish.vim
diff options
context:
space:
mode:
authorNiraj Thapaliya <nthapaliya@users.noreply.github.com>2017-12-25 23:50:08 -0600
committerNiraj Thapaliya <nthapaliya@users.noreply.github.com>2017-12-26 12:25:17 -0600
commite2d3dca48644136d62346d45d8b031a138e18700 (patch)
tree90e4a1234ba1e9fb907399c3ec41e065f430722c /ale_linters/fish/fish.vim
parente43e7065da17f45e4cce127a319ceee0a0311883 (diff)
downloadale-e2d3dca48644136d62346d45d8b031a138e18700.zip
Support for fish file linting
Diffstat (limited to 'ale_linters/fish/fish.vim')
-rw-r--r--ale_linters/fish/fish.vim36
1 files changed, 36 insertions, 0 deletions
diff --git a/ale_linters/fish/fish.vim b/ale_linters/fish/fish.vim
new file mode 100644
index 00000000..19158cb0
--- /dev/null
+++ b/ale_linters/fish/fish.vim
@@ -0,0 +1,36 @@
+" Author: Niraj Thapaliya - https://github.com/nthapaliya
+" Description: Lints fish files using fish -n
+
+function! ale_linters#fish#fish#Handle(buffer, lines) abort
+ " Matches patterns such as:
+ "
+ " home/.config/fish/functions/foo.fish (line 1): Missing end to balance this function definition
+ " function foo
+ " ^
+ " <W> fish: Error while reading file .config/fish/functions/foo.fish
+ let l:pattern = '^.* (line \(\d\+\)): \(.*\)$'
+ let l:output = []
+
+ let l:i = 0
+ while l:i < len(a:lines)
+ let l:match = matchlist(a:lines[l:i], l:pattern)
+ if len(l:match) && len(l:match[2])
+ call add(l:output, {
+ \ 'col': len(a:lines[l:i + 2]),
+ \ 'lnum': str2nr(l:match[1]),
+ \ 'text': l:match[2],
+ \})
+ endif
+ let l:i += 1
+ endwhile
+
+ return l:output
+endfunction
+
+call ale#linter#Define('fish', {
+\ 'name': 'fish',
+\ 'output_stream': 'stderr',
+\ 'executable': 'fish',
+\ 'command': 'fish -n %t',
+\ 'callback': 'ale_linters#fish#fish#Handle',
+\})