From 065a63af515c8dadd0e7e2b4704aed709c796e72 Mon Sep 17 00:00:00 2001 From: Caleb Maclennan Date: Fri, 3 Feb 2023 18:38:40 +0300 Subject: [PATCH 1/3] refactor: Use easier to maintain syntax --- syntax/ledger.vim | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/syntax/ledger.vim b/syntax/ledger.vim index 0cb85fe..4d7d6db 100644 --- a/syntax/ledger.vim +++ b/syntax/ledger.vim @@ -19,7 +19,11 @@ endif let s:oe = '\%#=1' let s:lb1 = '\@1<=' -let s:line_comment_chars = b:is_hledger ? ';*#' : ';|*#%' +if b:is_hledger + syn match ledgerComment /^[;*#].*$/ +else + syn match ledgerComment /^[;*#|%].*$/ +endif let s:fb = get(g:, 'ledger_fold_blanks', 0) let s:skip = s:fb > 0 ? '\|^\n' : '' @@ -67,7 +71,6 @@ syn match ledgerOneCharDirective /^\%(P\|A\|Y\|N\|D\|C\)\s/ syn region ledgerBlockComment start=/^comment/ end=/^end comment/ syn region ledgerBlockTest start=/^test/ end=/^end test/ -exe 'syn match ledgerComment /^['.s:line_comment_chars.'].*$/' " Tags (metadata) are handled a bit differntly in ledger-cli vs. hledger even " though they both nested in commens the same way. From 0d786924b6146471a8cac1a18568bda1688ce825 Mon Sep 17 00:00:00 2001 From: Caleb Maclennan Date: Fri, 3 Feb 2023 18:39:12 +0300 Subject: [PATCH 2/3] chore: Explicitly note all synatx is case neutral --- syntax/ledger.vim | 2 ++ 1 file changed, 2 insertions(+) diff --git a/syntax/ledger.vim b/syntax/ledger.vim index 4d7d6db..b54d86c 100644 --- a/syntax/ledger.vim +++ b/syntax/ledger.vim @@ -19,6 +19,8 @@ endif let s:oe = '\%#=1' let s:lb1 = '\@1<=' +syntax case ignore + if b:is_hledger syn match ledgerComment /^[;*#].*$/ else From bd8ea4a9e434b5544f13898ca504f875c9823a07 Mon Sep 17 00:00:00 2001 From: Caleb Maclennan Date: Sat, 4 Feb 2023 02:31:27 +0300 Subject: [PATCH 3/3] chore: Cleanup keyword handling --- syntax/ledger.vim | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/syntax/ledger.vim b/syntax/ledger.vim index b54d86c..4f65a22 100644 --- a/syntax/ledger.vim +++ b/syntax/ledger.vim @@ -15,17 +15,21 @@ if !exists ('b:is_hledger') let b:is_hledger = get(g:, 'ledger_is_hledger', 0) == 1 endif -" Force old regex engine (:help two-engines) -let s:oe = '\%#=1' -let s:lb1 = '\@1<=' syntax case ignore +syntax keyword ledgerTodo contained fixme todo +syntax case match if b:is_hledger - syn match ledgerComment /^[;*#].*$/ + syntax match ledgerComment /\v^[;*#].*$/ else - syn match ledgerComment /^[;*#|%].*$/ + syntax match ledgerComment /\v^[;*#|%].*$/ endif +syntax match ledgerComment contains=ledgerTodo,@Spell + +" Force old regex engine (:help two-engines) +let s:oe = '\%#=1' +let s:lb1 = '\@1<=' let s:fb = get(g:, 'ledger_fold_blanks', 0) let s:skip = s:fb > 0 ? '\|^\n' : '' @@ -116,9 +120,6 @@ syn region ledgerApply exe 'syn match ledgerApplyHead '. \ '/'.s:oe.'\%(^apply\s\+\)\@<=\S.*$/ contained' -syntax keyword ledgerTodo FIXME TODO - \ contained containedin=ledgerComment,ledgerTransaction,ledgerTransactionMetadata,ledgerPostingMetadata - highlight default link ledgerComment Comment highlight default link ledgerBlockComment Comment highlight default link ledgerBlockTest Comment