Skip to content

Commit 9138b45

Browse files
Nicolas SCHMAUCHPsickOSSH
authored andcommitted
Add j2lint linter for Jinja2 templates
1 parent 4217461 commit 9138b45

File tree

7 files changed

+40
-0
lines changed

7 files changed

+40
-0
lines changed

ale_linters/jinja2/j2lint.vim

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
" Description: linter for Jinja2 using j2lint
2+
3+
call ale#Set('jinja2_j2lint_executable', 'j2lint')
4+
5+
function! ale_linters#jinja2#j2lint#GetCommand(buffer) abort
6+
let l:executable = ale#Var(a:buffer, 'jinja2_j2lint_executable')
7+
8+
let l:exec_args = l:executable =~? 'pipenv\|poetry\|uv$'
9+
\ ? ' run j2lint'
10+
\ : ''
11+
12+
return ale#Escape(l:executable) . l:exec_args
13+
\ . ' %t'
14+
endfunction
15+
16+
call ale#linter#Define('jinja2', {
17+
\ 'name': 'j2lint',
18+
\ 'executable': {b -> ale#Var(b, 'jinja2_j2lint_executable')},
19+
\ 'command': function('ale_linters#jinja2#j2lint#GetCommand'),
20+
\ 'callback': 'ale#handlers#unix#HandleAsError',
21+
\})

doc/ale-jinja.txt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,5 +8,9 @@ djlint *ale-jinja-djlint*
88

99
See |ale-html-djlint|
1010

11+
===============================================================================
12+
j2lint *ale-jinja-j2lint*
13+
14+
1115
===============================================================================
1216
vim:tw=78:ts=2:sts=2:sw=2:ft=help:norl:

doc/ale-supported-languages-and-tools.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -336,6 +336,7 @@ Notes:
336336
* `xo`
337337
* Jinja
338338
* djlint
339+
* j2lint
339340
* JSON
340341
* `VSCode JSON language server`
341342
* `biome`

doc/ale.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3634,6 +3634,7 @@ documented in additional help files.
36343634
xo....................................|ale-javascript-xo|
36353635
jinja...................................|ale-jinja-options|
36363636
djlint................................|ale-jinja-djlint|
3637+
j2lint................................|ale-jinja-j2lint|
36373638
json....................................|ale-json-options|
36383639
biome.................................|ale-json-biome|
36393640
clang-format..........................|ale-json-clangformat|

ftdetect/jinja2.vim

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
au BufNewFile,BufRead *.j2 set filetype=jinja2

supported-tools.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -346,6 +346,7 @@ formatting.
346346
* [xo](https://github.com/sindresorhus/xo)
347347
* Jinja
348348
* [djlint](https://djlint.com/)
349+
* [j2lint](https://github.com/aristanetworks/j2lint/)
349350
* JSON
350351
* [VSCode JSON language server](https://github.com/hrsh7th/vscode-langservers-extracted)
351352
* [biome](https://biomejs.dev/)

test/linter/test_j2lint.vader

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
Before:
2+
call ale#assert#SetUpLinterTest('jinja2', 'j2lint')
3+
4+
After:
5+
call ale#assert#TearDownLinterTest()
6+
7+
Execute(The j2lint executable should be configurable):
8+
let g:ale_jinja2_j2lint_executable = '~/.local/bin/j2lint'
9+
10+
AssertLinter '~/.local/bin/j2lint',
11+
\ ale#Escape('~/.local/bin/j2lint'). ' %t'

0 commit comments

Comments
 (0)