patch 9.2.0225: runtime(compiler): No compiler plugin for just

Problem:  runtime(compiler): No compiler plugin for just
Solution: Add a compiler plugin for the just command runner, add a test
          (Aditya Malik)

Sets makeprg and a custom errorformat to parse just's multi-line
error output into quickfix entries with file, line, column, and
message. Includes a test.

Reference:
- https://github.com/casey/just

closes: #19773

Signed-off-by: Aditya Malik <adityamalik2833@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
This commit is contained in:
Aditya Malik
2026-03-22 16:46:41 +00:00
committed by Christian Brabandt
parent 9e55474849
commit e147b635fc
4 changed files with 57 additions and 0 deletions
+1
View File
@@ -80,6 +80,7 @@ runtime/compiler/jjs.vim @dkearns
runtime/compiler/jq.vim @vito-c
runtime/compiler/jshint.vim @dkearns
runtime/compiler/jsonlint.vim @dkearns
runtime/compiler/just.vim @Alarcritty
runtime/compiler/make.vim @Konfekt
runtime/compiler/mypy.vim @Konfekt
runtime/compiler/pandoc.vim @Konfekt
+23
View File
@@ -0,0 +1,23 @@
" Vim compiler file
" Compiler: Just
" Maintainer: Alarcritty
" Last Change: 2026 Mar 20
if exists("current_compiler")
finish
endif
let current_compiler = "just"
let s:cpo_save = &cpo
set cpo-=C
CompilerSet makeprg=just
CompilerSet errorformat=
\%Eerror:\ %m,
\%C%\\s%#——▶\ %f:%l:%c,
\%-C%.%#,
\%-G%.%#
let &cpo = s:cpo_save
unlet s:cpo_save
+31
View File
@@ -734,4 +734,35 @@ func Test_compiler_spotbugs_properties()
let &shellslash = save_shellslash
endfunc
func Test_compiler_just()
CheckFeature quickfix
compiler just
call assert_equal('just', b:current_compiler)
call assert_equal('just', &makeprg)
let verbose_efm = execute('verbose set efm')
call assert_match('Last set from .*[/\\]compiler[/\\]just.vim ', verbose_efm)
" Test that the errorformat can parse just error output
let lines =<< trim END
error: Variable `name` not defined
——▶ justfile:2:15
2echo {{name}}
│ ^^^^
END
call writefile(lines, 'Xjusterr.txt')
cgetfile Xjusterr.txt
let l = getqflist()
call assert_equal(1, len(l))
call assert_equal('E', l[0].type)
call assert_equal('Variable `name` not defined', l[0].text)
call assert_equal(2, l[0].lnum)
call assert_equal(15, l[0].col)
call setqflist([])
call delete('Xjusterr.txt')
compiler make
endfunc
" vim: shiftwidth=2 sts=2 expandtab
+2
View File
@@ -734,6 +734,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
225,
/**/
224,
/**/