summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBjorn Neergaard <bjorn@neersighted.com>2016-10-20 09:23:23 -0500
committerBjorn Neergaard <bjorn@neersighted.com>2016-10-20 09:23:23 -0500
commitc34664120b53e48ae6719a11fbd0a46f233a4ac9 (patch)
tree22a1eae8b8bc5e37b50d467edc4756ccccc540a3
parenta34fb0a6a7f920cd4d9a3e50facf51f8d5defea2 (diff)
downloadale-c34664120b53e48ae6719a11fbd0a46f233a4ac9.zip
Add ansible-lint support and factor out PEP8 handler
-rw-r--r--ale_linters/ansible/ansible-lint.vim15
-rw-r--r--ale_linters/python/flake8.vim42
-rw-r--r--autoload/ale/handlers.vim37
3 files changed, 53 insertions, 41 deletions
diff --git a/ale_linters/ansible/ansible-lint.vim b/ale_linters/ansible/ansible-lint.vim
new file mode 100644
index 00000000..ee2465fb
--- /dev/null
+++ b/ale_linters/ansible/ansible-lint.vim
@@ -0,0 +1,15 @@
+" Author: w0rp <devw0rp@gmail.com>
+" Description: ansible-lint for ansible-yaml files
+
+if exists('g:loaded_ale_linters_ansible_ansiblelint')
+ finish
+endif
+
+let g:loaded_ale_linters_ansible_ansiblelint = 1
+
+call ale#linter#Define('ansible', {
+\ 'name': 'ansible',
+\ 'executable': 'ansible',
+\ 'command': g:ale#util#stdin_wrapper . ' .yml ansible-lint -p',
+\ 'callback': 'ale#handlers#HandlePEP8Format',
+\})
diff --git a/ale_linters/python/flake8.vim b/ale_linters/python/flake8.vim
index cc4c604f..bf7c1a16 100644
--- a/ale_linters/python/flake8.vim
+++ b/ale_linters/python/flake8.vim
@@ -7,49 +7,9 @@ endif
let g:loaded_ale_linters_python_flake8 = 1
-function! ale_linters#python#flake8#Handle(buffer, lines)
- " Matches patterns line the following:
- "
- " stdin:6:6: E111 indentation is not a multiple of four
- let l:pattern = '^stdin:\(\d\+\):\(\d\+\): \([^ ]\+\) \(.\+\)$'
- let l:output = []
-
- for l:line in a:lines
- let l:match = matchlist(l:line, l:pattern)
-
- if len(l:match) == 0
- continue
- endif
-
- let l:line = l:match[1] + 0
- let l:column = l:match[2] + 0
- let l:code = l:match[3]
- let l:text = l:code . ': ' . l:match[4]
- let l:type = l:code[0] ==# 'E' ? 'E' : 'W'
-
- if (l:code ==# 'W291' || l:code ==# 'W293') && !g:ale_warn_about_trailing_whitespace
- " Skip warnings for trailing whitespace if the option is off.
- continue
- endif
-
- " vcol is Needed to indicate that the column is a character.
- call add(l:output, {
- \ 'bufnr': a:buffer,
- \ 'lnum': l:line,
- \ 'vcol': 0,
- \ 'col': l:column,
- \ 'text': l:text,
- \ 'type': l:type,
- \ 'nr': -1,
- \})
- endfor
-
- return l:output
-endfunction
-
call ale#linter#Define('python', {
\ 'name': 'flake8',
\ 'executable': 'flake8',
\ 'command': 'flake8 -',
-\ 'callback': 'ale_linters#python#flake8#Handle',
+\ 'callback': 'ale#handlers#HandlePEP8Format',
\})
diff --git a/autoload/ale/handlers.vim b/autoload/ale/handlers.vim
index 5322bfb2..a8d2572f 100644
--- a/autoload/ale/handlers.vim
+++ b/autoload/ale/handlers.vim
@@ -103,6 +103,43 @@ function! ale#handlers#HandleCppCheckFormat(buffer, lines) abort
endfunction
+function! ale#handlers#HandlePEP8Format(buffer, lines)
+ " Matches patterns line the following:
+ "
+ " Matches patterns line the following:
+ "
+ " stdin:6:6: E111 indentation is not a multiple of four
+ " test.yml:35: [EANSIBLE0002] Trailing whitespace
+ let l:pattern = '^' . s:path_pattern . ':\(\d\+\):\?\(\d\+\)\?: \[\?\(\([[:alpha:]]\)[[:alnum:]]\+\)\]\? \(.*\)$'
+ let l:output = []
+
+ for l:line in a:lines
+ let l:match = matchlist(l:line, l:pattern)
+
+ if len(l:match) == 0
+ continue
+ endif
+
+ let l:code = l:match[3]
+ if (l:code ==# 'W291' || l:code ==# 'W293' || l:code ==# 'EANSIBLE002')
+ \ && !g:ale_warn_about_trailing_whitespace
+ " Skip warnings for trailing whitespace if the option is off.
+ continue
+ endif
+
+ call add(l:output, {
+ \ 'bufnr': a:buffer,
+ \ 'lnum': l:match[1] + 0,
+ \ 'vcol': 0,
+ \ 'col': l:match[2] + 0,
+ \ 'text': l:code . ': ' . l:match[5],
+ \ 'type': l:match[4] ==# 'E' ? 'E' : 'W',
+ \ 'nr': -1,
+ \})
+ endfor
+
+ return l:output
+endfunction
function! ale#handlers#HandleCSSLintFormat(buffer, lines) abort
" Matches patterns line the following: