summaryrefslogtreecommitdiff
path: root/ale_linters
diff options
context:
space:
mode:
Diffstat (limited to 'ale_linters')
-rw-r--r--ale_linters/asciidoc/write-good.vim9
-rw-r--r--ale_linters/haml/hamllint.vim29
-rw-r--r--ale_linters/help/write-good.vim9
-rw-r--r--ale_linters/html/write-good.vim9
-rw-r--r--ale_linters/mail/proselint.vim9
-rw-r--r--ale_linters/mail/vale.vim9
-rw-r--r--ale_linters/make/checkmake.vim24
-rw-r--r--ale_linters/markdown/remark_lint.vim28
-rw-r--r--ale_linters/markdown/write-good.vim9
-rw-r--r--ale_linters/nroff/write-good.vim9
-rw-r--r--ale_linters/php/phan.vim36
-rw-r--r--ale_linters/php/phpmd.vim2
-rw-r--r--ale_linters/pod/write-good.vim9
-rw-r--r--ale_linters/rst/write-good.vim9
-rw-r--r--ale_linters/rust/cargo.vim2
-rw-r--r--ale_linters/sh/shellcheck.vim5
-rw-r--r--ale_linters/tex/write-good.vim9
-rw-r--r--ale_linters/texinfo/write-good.vim9
-rw-r--r--ale_linters/text/write-good.vim9
-rw-r--r--ale_linters/xhtml/write-good.vim9
20 files changed, 237 insertions, 6 deletions
diff --git a/ale_linters/asciidoc/write-good.vim b/ale_linters/asciidoc/write-good.vim
new file mode 100644
index 00000000..c986cc6c
--- /dev/null
+++ b/ale_linters/asciidoc/write-good.vim
@@ -0,0 +1,9 @@
+" Author: Sumner Evans <sumner.evans98@gmail.com>
+" Description: write-good for AsciiDoc files
+
+call ale#linter#Define('asciidoc', {
+\ 'name': 'write-good',
+\ 'executable_callback': 'ale#handlers#writegood#GetExecutable',
+\ 'command_callback': 'ale#handlers#writegood#GetCommand',
+\ 'callback': 'ale#handlers#writegood#Handle',
+\})
diff --git a/ale_linters/haml/hamllint.vim b/ale_linters/haml/hamllint.vim
index b1a6aa57..d6633599 100644
--- a/ale_linters/haml/hamllint.vim
+++ b/ale_linters/haml/hamllint.vim
@@ -1,6 +1,31 @@
-" Author: Patrick Lewis - https://github.com/patricklewis
+" Author: Patrick Lewis - https://github.com/patricklewis, thenoseman - https://github.com/thenoseman
" Description: haml-lint for Haml files
+function! ale_linters#haml#hamllint#GetCommand(buffer) abort
+ let l:prefix = ''
+
+ let l:rubocop_config_file_path = ale#path#FindNearestFile(a:buffer, '.rubocop.yml')
+ let l:hamllint_config_file_path = ale#path#FindNearestFile(a:buffer, '.haml-lint.yml')
+
+ " Set HAML_LINT_RUBOCOP_CONF variable as it is needed for haml-lint to
+ " pick up the rubocop config.
+ "
+ " See https://github.com/brigade/haml-lint/blob/master/lib/haml_lint/linter/rubocop.rb#L89
+ " HamlLint::Linter::RuboCop#rubocop_flags
+ if !empty(l:rubocop_config_file_path)
+ if ale#Has('win32')
+ let l:prefix = 'set HAML_LINT_RUBOCOP_CONF=' . ale#Escape(l:rubocop_config_file_path) . ' &&'
+ else
+ let l:prefix = 'HAML_LINT_RUBOCOP_CONF=' . ale#Escape(l:rubocop_config_file_path)
+ endif
+ endif
+
+ return (!empty(l:prefix) ? l:prefix . ' ' : '')
+ \ . 'haml-lint'
+ \ . (!empty(l:hamllint_config_file_path) ? ' --config ' . ale#Escape(l:hamllint_config_file_path) : '')
+ \ . ' %t'
+endfunction
+
function! ale_linters#haml#hamllint#Handle(buffer, lines) abort
" Matches patterns like the following:
" <path>:51 [W] RuboCop: Use the new Ruby 1.9 hash syntax.
@@ -21,6 +46,6 @@ endfunction
call ale#linter#Define('haml', {
\ 'name': 'hamllint',
\ 'executable': 'haml-lint',
-\ 'command': 'haml-lint %t',
+\ 'command_callback': 'ale_linters#haml#hamllint#GetCommand',
\ 'callback': 'ale_linters#haml#hamllint#Handle'
\})
diff --git a/ale_linters/help/write-good.vim b/ale_linters/help/write-good.vim
new file mode 100644
index 00000000..11254cd2
--- /dev/null
+++ b/ale_linters/help/write-good.vim
@@ -0,0 +1,9 @@
+" Author: Sumner Evans <sumner.evans98@gmail.com>
+" Description: write-good for vim Help files
+
+call ale#linter#Define('help', {
+\ 'name': 'write-good',
+\ 'executable_callback': 'ale#handlers#writegood#GetExecutable',
+\ 'command_callback': 'ale#handlers#writegood#GetCommand',
+\ 'callback': 'ale#handlers#writegood#Handle',
+\})
diff --git a/ale_linters/html/write-good.vim b/ale_linters/html/write-good.vim
new file mode 100644
index 00000000..9fae8821
--- /dev/null
+++ b/ale_linters/html/write-good.vim
@@ -0,0 +1,9 @@
+" Author: Sumner Evans <sumner.evans98@gmail.com>
+" Description: write-good for nroff files
+
+call ale#linter#Define('html', {
+\ 'name': 'write-good',
+\ 'executable_callback': 'ale#handlers#writegood#GetExecutable',
+\ 'command_callback': 'ale#handlers#writegood#GetCommand',
+\ 'callback': 'ale#handlers#writegood#Handle',
+\})
diff --git a/ale_linters/mail/proselint.vim b/ale_linters/mail/proselint.vim
new file mode 100644
index 00000000..82c8d1f8
--- /dev/null
+++ b/ale_linters/mail/proselint.vim
@@ -0,0 +1,9 @@
+" Author: Daniel M. Capella https://github.com/polyzen
+" Description: proselint for mail files
+
+call ale#linter#Define('mail', {
+\ 'name': 'proselint',
+\ 'executable': 'proselint',
+\ 'command': 'proselint %t',
+\ 'callback': 'ale#handlers#unix#HandleAsWarning',
+\})
diff --git a/ale_linters/mail/vale.vim b/ale_linters/mail/vale.vim
new file mode 100644
index 00000000..9b30bf65
--- /dev/null
+++ b/ale_linters/mail/vale.vim
@@ -0,0 +1,9 @@
+" Author: chew-z https://github.com/chew-z
+" Description: vale for Markdown files
+
+call ale#linter#Define('mail', {
+\ 'name': 'vale',
+\ 'executable': 'vale',
+\ 'command': 'vale --output=line %t',
+\ 'callback': 'ale#handlers#unix#HandleAsWarning',
+\})
diff --git a/ale_linters/make/checkmake.vim b/ale_linters/make/checkmake.vim
new file mode 100644
index 00000000..3dd8cc91
--- /dev/null
+++ b/ale_linters/make/checkmake.vim
@@ -0,0 +1,24 @@
+" Author: aurieh - https://github.com/aurieh
+
+function! ale_linters#make#checkmake#Handle(buffer, lines) abort
+ let l:pattern = '\v^(\d+):(.+):(.+)$'
+ let l:output = []
+
+ for l:match in ale#util#GetMatches(a:lines, l:pattern)
+ let l:text = l:match[2] . ': ' . l:match[3]
+ call add(l:output, {
+ \ 'bufnr': a:buffer,
+ \ 'lnum': l:match[1] + 0,
+ \ 'type': 'E',
+ \ 'text': l:text,
+ \})
+ endfor
+ return l:output
+endfunction
+
+call ale#linter#Define('make', {
+\ 'name': 'checkmake',
+\ 'executable': 'checkmake',
+\ 'command': 'checkmake %s --format="{{.LineNumber}}:{{.Rule}}:{{.Violation}}"',
+\ 'callback': 'ale_linters#make#checkmake#Handle',
+\})
diff --git a/ale_linters/markdown/remark_lint.vim b/ale_linters/markdown/remark_lint.vim
new file mode 100644
index 00000000..5b3b3d47
--- /dev/null
+++ b/ale_linters/markdown/remark_lint.vim
@@ -0,0 +1,28 @@
+" Author rhysd https://rhysd.github.io/
+" Description: remark-lint for Markdown files
+
+function! ale_linters#markdown#remark_lint#Handle(buffer, lines) abort
+ " matches: ' 1:4 warning Incorrect list-item indent: add 1 space list-item-indent remark-lint'
+ let l:pattern = '^ \+\(\d\+\):\(\d\+\) \(warning\|error\) \(.\+\)$'
+ let l:output = []
+
+ for l:match in ale#util#GetMatches(a:lines, l:pattern)
+ call add(l:output, {
+ \ 'lnum': l:match[1] + 0,
+ \ 'col': l:match[2] + 0,
+ \ 'type': l:match[3] is# 'error' ? 'E' : 'W',
+ \ 'text': l:match[4],
+ \})
+ endfor
+
+ return l:output
+endfunction
+
+call ale#linter#Define('markdown', {
+\ 'name': 'remark-lint',
+\ 'executable': 'remark',
+\ 'command': 'remark --no-stdout --no-color %s',
+\ 'callback': 'ale_linters#markdown#remark_lint#Handle',
+\ 'lint_file': 1,
+\ 'output_stream': 'stderr',
+\})
diff --git a/ale_linters/markdown/write-good.vim b/ale_linters/markdown/write-good.vim
new file mode 100644
index 00000000..21dbff1a
--- /dev/null
+++ b/ale_linters/markdown/write-good.vim
@@ -0,0 +1,9 @@
+" Author: Sumner Evans <sumner.evans98@gmail.com>
+" Description: write-good for Markdown files
+
+call ale#linter#Define('markdown', {
+\ 'name': 'write-good',
+\ 'executable_callback': 'ale#handlers#writegood#GetExecutable',
+\ 'command_callback': 'ale#handlers#writegood#GetCommand',
+\ 'callback': 'ale#handlers#writegood#Handle',
+\})
diff --git a/ale_linters/nroff/write-good.vim b/ale_linters/nroff/write-good.vim
new file mode 100644
index 00000000..d318fb28
--- /dev/null
+++ b/ale_linters/nroff/write-good.vim
@@ -0,0 +1,9 @@
+" Author: Sumner Evans <sumner.evans98@gmail.com>
+" Description: write-good for nroff files
+
+call ale#linter#Define('nroff', {
+\ 'name': 'write-good',
+\ 'executable_callback': 'ale#handlers#writegood#GetExecutable',
+\ 'command_callback': 'ale#handlers#writegood#GetCommand',
+\ 'callback': 'ale#handlers#writegood#Handle',
+\})
diff --git a/ale_linters/php/phan.vim b/ale_linters/php/phan.vim
new file mode 100644
index 00000000..f3b3d48f
--- /dev/null
+++ b/ale_linters/php/phan.vim
@@ -0,0 +1,36 @@
+" Author: diegoholiveira <https://github.com/diegoholiveira>
+" Description: static analyzer for PHP
+
+" Define the minimum severity
+let g:ale_php_phan_minimum_severity = get(g:, 'ale_php_phan_minimum_severity', 0)
+
+function! ale_linters#php#phan#GetCommand(buffer) abort
+ return 'phan -y '
+ \ . ale#Var(a:buffer, 'php_phan_minimum_severity')
+ \ . ' %s'
+endfunction
+
+function! ale_linters#php#phan#Handle(buffer, lines) abort
+ " Matches against lines like the following:
+ "
+ " /path/to/some-filename.php:18 ERRORTYPE message
+ let l:pattern = '^.*:\(\d\+\)\s\(\w\+\)\s\(.\+\)$'
+ let l:output = []
+
+ for l:match in ale#util#GetMatches(a:lines, l:pattern)
+ call add(l:output, {
+ \ 'lnum': l:match[1] + 0,
+ \ 'text': l:match[3],
+ \ 'type': 'W',
+ \})
+ endfor
+
+ return l:output
+endfunction
+
+call ale#linter#Define('php', {
+\ 'name': 'phan',
+\ 'executable': 'phan',
+\ 'command_callback': 'ale_linters#php#phan#GetCommand',
+\ 'callback': 'ale_linters#php#phan#Handle',
+\})
diff --git a/ale_linters/php/phpmd.vim b/ale_linters/php/phpmd.vim
index 29d8103a..e4192c70 100644
--- a/ale_linters/php/phpmd.vim
+++ b/ale_linters/php/phpmd.vim
@@ -14,7 +14,7 @@ function! ale_linters#php#phpmd#Handle(buffer, lines) abort
" Matches against lines like the following:
"
" /path/to/some-filename.php:18 message
- let l:pattern = '^.*:\(\d\+\)\t\(.\+\)$'
+ let l:pattern = '^.*:\(\d\+\)\s\+\(.\+\)$'
let l:output = []
for l:match in ale#util#GetMatches(a:lines, l:pattern)
diff --git a/ale_linters/pod/write-good.vim b/ale_linters/pod/write-good.vim
new file mode 100644
index 00000000..14ed5c0c
--- /dev/null
+++ b/ale_linters/pod/write-good.vim
@@ -0,0 +1,9 @@
+" Author: Sumner Evans <sumner.evans98@gmail.com>
+" Description: write-good for Pod files
+
+call ale#linter#Define('pod', {
+\ 'name': 'write-good',
+\ 'executable_callback': 'ale#handlers#writegood#GetExecutable',
+\ 'command_callback': 'ale#handlers#writegood#GetCommand',
+\ 'callback': 'ale#handlers#writegood#Handle',
+\})
diff --git a/ale_linters/rst/write-good.vim b/ale_linters/rst/write-good.vim
new file mode 100644
index 00000000..12137dbf
--- /dev/null
+++ b/ale_linters/rst/write-good.vim
@@ -0,0 +1,9 @@
+" Author: Sumner Evans <sumner.evans98@gmail.com>
+" Description: write-good for reStructuredText files
+
+call ale#linter#Define('rst', {
+\ 'name': 'write-good',
+\ 'executable_callback': 'ale#handlers#writegood#GetExecutable',
+\ 'command_callback': 'ale#handlers#writegood#GetCommand',
+\ 'callback': 'ale#handlers#writegood#Handle',
+\})
diff --git a/ale_linters/rust/cargo.vim b/ale_linters/rust/cargo.vim
index f19061ad..c887ea79 100644
--- a/ale_linters/rust/cargo.vim
+++ b/ale_linters/rust/cargo.vim
@@ -26,6 +26,6 @@ call ale#linter#Define('rust', {
\ 'executable_callback': 'ale_linters#rust#cargo#GetCargoExecutable',
\ 'command_callback': 'ale_linters#rust#cargo#GetCommand',
\ 'callback': 'ale#handlers#rust#HandleRustErrors',
-\ 'output_stream': 'stdout',
+\ 'output_stream': 'both',
\ 'lint_file': 1,
\})
diff --git a/ale_linters/sh/shellcheck.vim b/ale_linters/sh/shellcheck.vim
index b47ba19f..68844a05 100644
--- a/ale_linters/sh/shellcheck.vim
+++ b/ale_linters/sh/shellcheck.vim
@@ -43,11 +43,12 @@ function! ale_linters#sh#shellcheck#GetCommand(buffer) abort
let l:exclude_option = ale#Var(a:buffer, 'sh_shellcheck_exclusions')
let l:dialect = ale_linters#sh#shellcheck#GetDialectArgument(a:buffer)
- return ale_linters#sh#shellcheck#GetExecutable(a:buffer)
+ return ale#path#BufferCdString(a:buffer)
+ \ . ale#Escape(ale_linters#sh#shellcheck#GetExecutable(a:buffer))
\ . (!empty(l:dialect) ? ' -s ' . l:dialect : '')
\ . (!empty(l:options) ? ' ' . l:options : '')
\ . (!empty(l:exclude_option) ? ' -e ' . l:exclude_option : '')
- \ . ' -f gcc -'
+ \ . ' -x -f gcc -'
endfunction
call ale#linter#Define('sh', {
diff --git a/ale_linters/tex/write-good.vim b/ale_linters/tex/write-good.vim
new file mode 100644
index 00000000..dc59de2e
--- /dev/null
+++ b/ale_linters/tex/write-good.vim
@@ -0,0 +1,9 @@
+" Author: Sumner Evans <sumner.evans98@gmail.com>
+" Description: write-good for TeX files
+
+call ale#linter#Define('tex', {
+\ 'name': 'write-good',
+\ 'executable_callback': 'ale#handlers#writegood#GetExecutable',
+\ 'command_callback': 'ale#handlers#writegood#GetCommand',
+\ 'callback': 'ale#handlers#writegood#Handle',
+\})
diff --git a/ale_linters/texinfo/write-good.vim b/ale_linters/texinfo/write-good.vim
new file mode 100644
index 00000000..8104c634
--- /dev/null
+++ b/ale_linters/texinfo/write-good.vim
@@ -0,0 +1,9 @@
+" Author: Sumner Evans <sumner.evans98@gmail.com>
+" Description: write-good for Texinfo files
+
+call ale#linter#Define('texinfo', {
+\ 'name': 'write-good',
+\ 'executable_callback': 'ale#handlers#writegood#GetExecutable',
+\ 'command_callback': 'ale#handlers#writegood#GetCommand',
+\ 'callback': 'ale#handlers#writegood#Handle',
+\})
diff --git a/ale_linters/text/write-good.vim b/ale_linters/text/write-good.vim
new file mode 100644
index 00000000..ff76ce42
--- /dev/null
+++ b/ale_linters/text/write-good.vim
@@ -0,0 +1,9 @@
+" Author: Sumner Evans <sumner.evans98@gmail.com>
+" Description: write-good for text files
+
+call ale#linter#Define('text', {
+\ 'name': 'write-good',
+\ 'executable_callback': 'ale#handlers#writegood#GetExecutable',
+\ 'command_callback': 'ale#handlers#writegood#GetCommand',
+\ 'callback': 'ale#handlers#writegood#Handle',
+\})
diff --git a/ale_linters/xhtml/write-good.vim b/ale_linters/xhtml/write-good.vim
new file mode 100644
index 00000000..83d1863b
--- /dev/null
+++ b/ale_linters/xhtml/write-good.vim
@@ -0,0 +1,9 @@
+" Author: Sumner Evans <sumner.evans98@gmail.com>
+" Description: write-good for XHTML files
+
+call ale#linter#Define('xhtml', {
+\ 'name': 'write-good',
+\ 'executable_callback': 'ale#handlers#writegood#GetExecutable',
+\ 'command_callback': 'ale#handlers#writegood#GetCommand',
+\ 'callback': 'ale#handlers#writegood#Handle',
+\})