Skip to content

Commit da40d73

Browse files
lakshaygalerque
authored andcommitted
fix: Improve errorformat for hledger
The original errorformat was specified as a multiline format followed by an "ignore non-matching lines format". I encountered some cases where this was problematic: 1. hledger errors have a lot of context spread across multiple lines. Matching everything with 1 multiline format causes vim to move all that information into a single error line which becomes very hard to read. 2. Removing non-matching lines makes it so that if an error is not recognized by efm then it is completely discarded. This can hide errors from the user. For example, in case of an unbalanced transaction hledger prints something like: ``` hledger: Error: <filename>:<line1>-<line2>: <line1> | <date> <payee> | <posting-line1> <amount> | <posting-line2> <amount> | <posting-line3> <amount> | ... This transaction is unbalanced. The real postings' sum should be 0 but is: <delta> Consider adjusting this entry's amounts, or adding missing postings. ``` This error message does not match the old errorformat in the plugin.
1 parent 58561ed commit da40d73

File tree

1 file changed

+3
-3
lines changed

1 file changed

+3
-3
lines changed

compiler/ledger.vim

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ if !b:is_hledger
3333
exe 'CompilerSet makeprg='.substitute(g:ledger_bin, ' ', '\\ ', 'g').'\ -f\ ' . substitute(shellescape(expand(g:ledger_main)), ' ', '\\ ', 'g') . '\ '.substitute(g:ledger_extra_options, ' ', '\\ ', 'g').'\ source\ ' . shellescape(expand(g:ledger_main))
3434
else
3535
exe 'CompilerSet makeprg='.substitute(g:ledger_bin, ' ', '\\ ', 'g').'\ -f\ ' . substitute(shellescape(expand(g:ledger_main)), ' ', '\\ ', 'g') . '\ check\ '. substitute(g:ledger_extra_options, ' ', '\\ ', 'g')
36-
CompilerSet errorformat=%Ehledger:\ %trror:\ %f:%l:%c%.%#:,%-C\ \ \|\\s%#,%-C\%l\ \|%.%#,%-C\ \ \|\\s%#,%-C\ \ \|%p^,%+C%m,%-Z\\s%#
37-
" Skip all other lines:
38-
CompilerSet errorformat+=%-G%.%#
36+
CompilerSet errorformat=hledger:\ %trror:\ %f:%l:%c:
37+
CompilerSet errorformat+=hledger:\ %trror:\ %f:%l:
38+
CompilerSet errorformat+=hledger:\ %trror:\ %f:%l-%.%#:
3939
endif

0 commit comments

Comments
 (0)