From 732d8e3ed6deb1b16bf47e21ce1a823e5e23228b Mon Sep 17 00:00:00 2001 From: Marcus Zanona Date: Thu, 9 Nov 2017 09:49:44 -0200 Subject: Add support for linting less files with lessc --- ale_linters/less/lessc.vim | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100755 ale_linters/less/lessc.vim (limited to 'ale_linters/less/lessc.vim') diff --git a/ale_linters/less/lessc.vim b/ale_linters/less/lessc.vim new file mode 100755 index 00000000..3f6e265f --- /dev/null +++ b/ale_linters/less/lessc.vim @@ -0,0 +1,36 @@ +" Author: zanona , w0rp +" Description: This file adds support for checking Less code with lessc. + +call ale#Set('less_lessc_options', '') + +function! ale_linters#less#lessc#GetCommand(buffer) abort + return 'lessc' + \ . ' --no-color --lint ' + \ . ale#Var(a:buffer, 'less_lessc_options') + \ . ' %t' +endfunction + +function! ale_linters#less#lessc#Handle(buffer, lines) abort + " Matches patterns like the following: + let l:pattern = '^\(\w\+\): \(.\{-}\) in \(.\{-}\) on line \(\d\+\), column \(\d\+\):$' + let l:output = [] + + for l:match in ale#util#GetMatches(a:lines, l:pattern) + call add(l:output, { + \ 'lnum': l:match[4] + 0, + \ 'col': l:match[5] + 0, + \ 'text': l:match[2], + \ 'type': 'E', + \}) + endfor + + return l:output +endfunction + +call ale#linter#Define('less', { +\ 'name': 'lessc', +\ 'executable': 'lessc', +\ 'output_stream': 'stderr', +\ 'command_callback': 'ale_linters#less#lessc#GetCommand', +\ 'callback': 'ale_linters#less#lessc#Handle', +\}) -- cgit v1.2.3 From decf8188bc07a097e855af2b424d68374438c635 Mon Sep 17 00:00:00 2001 From: Marcus Zanona Date: Thu, 9 Nov 2017 13:39:38 -0200 Subject: Adjust formatting on less#lessc linter --- ale_linters/less/lessc.vim | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'ale_linters/less/lessc.vim') diff --git a/ale_linters/less/lessc.vim b/ale_linters/less/lessc.vim index 3f6e265f..941607b6 100755 --- a/ale_linters/less/lessc.vim +++ b/ale_linters/less/lessc.vim @@ -5,9 +5,9 @@ call ale#Set('less_lessc_options', '') function! ale_linters#less#lessc#GetCommand(buffer) abort return 'lessc' - \ . ' --no-color --lint ' - \ . ale#Var(a:buffer, 'less_lessc_options') - \ . ' %t' + \ . ' --no-color --lint' + \ . ' ' . ale#Var(a:buffer, 'less_lessc_options') + \ . ' %t' endfunction function! ale_linters#less#lessc#Handle(buffer, lines) abort -- cgit v1.2.3 From 7ed82ab712324eb410279b95d852659e97ff9021 Mon Sep 17 00:00:00 2001 From: Marcus Zanona Date: Thu, 9 Nov 2017 13:40:13 -0200 Subject: Adjust author info on less#lessc linter --- ale_linters/less/lessc.vim | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'ale_linters/less/lessc.vim') diff --git a/ale_linters/less/lessc.vim b/ale_linters/less/lessc.vim index 941607b6..db871ac2 100755 --- a/ale_linters/less/lessc.vim +++ b/ale_linters/less/lessc.vim @@ -1,4 +1,4 @@ -" Author: zanona , w0rp +" Author: zanona " Description: This file adds support for checking Less code with lessc. call ale#Set('less_lessc_options', '') -- cgit v1.2.3 From 4bc31fcd18bda03f0de516be0380d6885cdd3d9b Mon Sep 17 00:00:00 2001 From: Marcus Zanona Date: Thu, 9 Nov 2017 13:45:14 -0200 Subject: Fix imported files path lookup on less#lessc linter Ale saves a temporary file (%t) which does not share the same path as the original file, breaking import statements with relative URLs. This fix sends content to `lessc` over stdin and adds the current file (%s) as one of the included paths, so statements like `@import '../utils' will correctly resolve based on the current file path. --- ale_linters/less/lessc.vim | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'ale_linters/less/lessc.vim') diff --git a/ale_linters/less/lessc.vim b/ale_linters/less/lessc.vim index db871ac2..1c5df915 100755 --- a/ale_linters/less/lessc.vim +++ b/ale_linters/less/lessc.vim @@ -4,10 +4,10 @@ call ale#Set('less_lessc_options', '') function! ale_linters#less#lessc#GetCommand(buffer) abort - return 'lessc' - \ . ' --no-color --lint' + return 'cat %t | lessc' + \ . ' --no-color --lint --include-path=' . expand('%:p:h') \ . ' ' . ale#Var(a:buffer, 'less_lessc_options') - \ . ' %t' + \ . ' -' endfunction function! ale_linters#less#lessc#Handle(buffer, lines) abort -- cgit v1.2.3 From 1ad7d5e6ca34c285dc7abbb98222b05a32b4f70d Mon Sep 17 00:00:00 2001 From: Marcus Zanona Date: Thu, 9 Nov 2017 19:52:08 -0200 Subject: Remove unnecessary cat command from less#lessc --- ale_linters/less/lessc.vim | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'ale_linters/less/lessc.vim') diff --git a/ale_linters/less/lessc.vim b/ale_linters/less/lessc.vim index 1c5df915..76b7f133 100755 --- a/ale_linters/less/lessc.vim +++ b/ale_linters/less/lessc.vim @@ -4,7 +4,7 @@ call ale#Set('less_lessc_options', '') function! ale_linters#less#lessc#GetCommand(buffer) abort - return 'cat %t | lessc' + return 'lessc' \ . ' --no-color --lint --include-path=' . expand('%:p:h') \ . ' ' . ale#Var(a:buffer, 'less_lessc_options') \ . ' -' -- cgit v1.2.3 From cd5da50531d55c003de495d8b151c60c5dbf26eb Mon Sep 17 00:00:00 2001 From: w0rp Date: Sun, 12 Nov 2017 11:25:24 +0000 Subject: Add tests for the command and executable callbacks, and make them use local node_modulse esxecutables like other linters --- ale_linters/less/lessc.vim | 25 +++++++++++++++++++------ 1 file changed, 19 insertions(+), 6 deletions(-) (limited to 'ale_linters/less/lessc.vim') diff --git a/ale_linters/less/lessc.vim b/ale_linters/less/lessc.vim index 76b7f133..8b7985a3 100755 --- a/ale_linters/less/lessc.vim +++ b/ale_linters/less/lessc.vim @@ -1,12 +1,25 @@ -" Author: zanona +" Author: zanona , w0rp " Description: This file adds support for checking Less code with lessc. +call ale#Set('less_lessc_executable', 'lessc') call ale#Set('less_lessc_options', '') +call ale#Set('less_lessc_use_global', 0) + +function! ale_linters#less#lessc#GetExecutable(buffer) abort + return ale#node#FindExecutable(a:buffer, 'less_lessc', [ + \ 'node_modules/.bin/lessc', + \]) +endfunction function! ale_linters#less#lessc#GetCommand(buffer) abort - return 'lessc' - \ . ' --no-color --lint --include-path=' . expand('%:p:h') - \ . ' ' . ale#Var(a:buffer, 'less_lessc_options') + let l:executable = ale_linters#less#lessc#GetExecutable(a:buffer) + let l:dir = expand('#' . a:buffer . ':p:h') + let l:options = ale#Var(a:buffer, 'less_lessc_options') + + return ale#Escape(l:executable) + \ . ' --no-color --lint' + \ . ' --include-path=' . ale#Escape(l:dir) + \ . (!empty(l:options) ? ' ' . l:options : '') \ . ' -' endfunction @@ -29,8 +42,8 @@ endfunction call ale#linter#Define('less', { \ 'name': 'lessc', -\ 'executable': 'lessc', -\ 'output_stream': 'stderr', +\ 'executable_callback': 'ale_linters#less#lessc#GetExecutable', \ 'command_callback': 'ale_linters#less#lessc#GetCommand', \ 'callback': 'ale_linters#less#lessc#Handle', +\ 'output_stream': 'stderr', \}) -- cgit v1.2.3 From 7edcb2210b2b60d5eaf81381e5d9443369576c28 Mon Sep 17 00:00:00 2001 From: w0rp Date: Sun, 12 Nov 2017 11:35:01 +0000 Subject: Show problems from other files for lessc --- ale_linters/less/lessc.vim | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) (limited to 'ale_linters/less/lessc.vim') diff --git a/ale_linters/less/lessc.vim b/ale_linters/less/lessc.vim index 8b7985a3..108679de 100755 --- a/ale_linters/less/lessc.vim +++ b/ale_linters/less/lessc.vim @@ -24,17 +24,24 @@ function! ale_linters#less#lessc#GetCommand(buffer) abort endfunction function! ale_linters#less#lessc#Handle(buffer, lines) abort + let l:dir = expand('#' . a:buffer . ':p:h') " Matches patterns like the following: let l:pattern = '^\(\w\+\): \(.\{-}\) in \(.\{-}\) on line \(\d\+\), column \(\d\+\):$' let l:output = [] for l:match in ale#util#GetMatches(a:lines, l:pattern) - call add(l:output, { + let l:item = { \ 'lnum': l:match[4] + 0, \ 'col': l:match[5] + 0, \ 'text': l:match[2], \ 'type': 'E', - \}) + \} + + if l:match[3] isnot# '-' + let l:item.filename = ale#path#GetAbsPath(l:dir, l:match[3]) + endif + + call add(l:output, l:item) endfor return l:output -- cgit v1.2.3