" Language: ledger " License: GNU General Public License, version 3 or later (at your option) " Maintainer: Julien Moutinho " URL: http://doc.autogeree.net/coop/hcompta " Usage: autocmd BufNewFile,BufRead *.ledger,*.journal setfiletype ledger if exists("b:current_syntax") finish endif syn clear syn sync fromstart syn sync linebreaks=1 syn match ledgerComment ";.*" syn match ledgerNumberOdd /[0-9][0-9]*/ contained syn match ledgerNumber /[0-9][0-9]*/ contained syn match ledgerAccountSeparator ":" contained syn match ledgerAccountSeparatorOdd ":" contained syn match ledgerAccountParen /[()]/ contained syn match ledgerAccountParenOdd /[()]/ contained syn match ledgerAccountBracket /[[\]]/ contained syn match ledgerAccountBracketOdd /[[\]]/ contained syn region ledgerInclude start=/^!include/ end=/^/ syn region ledgerDirective start=/^[A-Z]/ end=/^/ contains=ledgerComment syn region ledgerTransaction start=/^\d[^ ]\+/ end=/^\s*$/ syn match ledgerTransactionHead "^[0-9/-]\+\( [0-9:]\+\)\?\(=[0-9/-]\+\( [0-9:]\+\)\?\)\?\(\s\+[!*]\)\?" contained containedin=ledgerTransaction nextgroup=ledgerTransactionDescription syn match ledgerTransactionDate "[0-9/-]\+\( [0-9:]\+\)\?" contained containedin=ledgerTransactionHead syn match ledgerTransactionDescription "\s[^;]\+"ms=s+1 contained containedin=ledgerTransaction syn match ledgerTransactionComment ";.*" contained containedin=ledgerTransaction,ledgerPosting,ledgerPostingOdd syn match ledgerPostingAmountOdd " \(\s*[^; ]\+\)\+"ms=s+0 contained containedin=ledgerPostingOdd contains=ledgerNumberOdd syn match ledgerPostingAmount " \(\s*[^; ]\+\)\+"ms=s+0 contained containedin=ledgerPosting contains=ledgerNumber syn match ledgerPostingAccountOdd "^\s\+[^; ]\([^; ]\|\s[^; ]\+\)*" contained containedin=ledgerPostingOdd nextgroup=ledgerPostingAmountOdd contains=ledgerNumberOdd,ledgerAccountSeparatorOdd,ledgerAccountParenOdd,ledgerAccountBracketOdd syn match ledgerPostingAccount "^\s\+[^; ]\([^; ]\|\s[^; ]\+\)*" contained containedin=ledgerPosting nextgroup=ledgerPostingAmount contains=ledgerNumber,ledgerAccountSeparator,ledgerAccountParen,ledgerAccountBracket syn region ledgerPostingOdd start=/^\s\+[^; ]/ end=/^/ contained containedin=ledgerTransaction nextgroup=ledgerPosting syn region ledgerPosting start=/^\s\+[^; ]/ end=/^/ contained containedin=ledgerTransaction nextgroup=ledgerPostingOdd syn match ledgerTag /[^;, :]\+:[^;,]*/ contained containedin=ledgerTransactionComment nextgroup=ledgerTagValue syn match ledgerTagValue /[^;, :]:[^,;]*/ms=s+2 contained containedin=ledgerTag if version >= 508 || !exists("did_ledger_syntax_inits") if version < 508 let did_ledger_syntax_inits = 1 command! -nargs=+ HiLink hi link else command! -nargs=+ HiLink hi def link endif hi SpecialKey gui=bold guifg=lightgoldenrod hi Comment term=bold cterm=bold ctermfg=6 ctermbg=0 gui=bold guifg=#4169E1 hi Comment term=bold cterm=bold ctermfg=6 ctermbg=0 gui=bold guifg=#4169E1 HiLink ledgerComment Comment hi ledgerInclude term=bold cterm=bold gui=bold hi ledgerDirective term=bold cterm=bold gui=bold hi ledgerAccountSeparatorOdd term=bold cterm=bold ctermfg=3 ctermbg=none gui=bold guifg=DarkGoldenrod2 guibg=gray90 hi ledgerAccountParenOdd term=bold cterm=bold ctermfg=3 ctermbg=none gui=bold guifg=DarkGoldenrod2 guibg=gray90 hi ledgerAccountBracketOdd term=bold cterm=bold ctermfg=3 ctermbg=none gui=bold guifg=DarkGoldenrod2 guibg=gray90 hi ledgerAccountSeparator term=bold cterm=bold ctermfg=3 ctermbg=none gui=bold guifg=DarkGoldenrod2 guibg=lightgreen hi ledgerAccountParen term=bold cterm=bold ctermfg=3 ctermbg=none gui=bold guifg=DarkGoldenrod2 guibg=lightgreen hi ledgerAccountBracket term=bold cterm=bold ctermfg=3 ctermbg=none gui=bold guifg=DarkGoldenrod2 guibg=lightgreen hi ledgerNumberOdd term=bold cterm=bold ctermfg=4 ctermbg=none gui=bold guifg=blue guibg=gray90 hi ledgerNumber term=bold cterm=bold ctermfg=4 ctermbg=none gui=bold guifg=blue guibg=lightgreen hi ledgerPostingOdd cterm=bold ctermbg=none guibg=NONE hi ledgerPosting cterm=bold ctermbg=none guibg=NONE hi ledgerPostingAccountOdd term=underline cterm=bold ctermfg=0 ctermbg=none guifg=gray30 guibg=gray90 hi ledgerPostingAccount term=underline cterm=bold ctermfg=0 ctermbg=none guifg=gray30 guibg=lightgreen hi ledgerPostingAmountOdd cterm=bold ctermfg=3 ctermbg=none gui=bold guifg=DarkGoldenrod2 guibg=gray90 hi ledgerPostingAmount cterm=bold ctermfg=3 ctermbg=none gui=bold guifg=DarkGoldenrod2 guibg=lightgreen hi ledgerTag term=bold cterm=bold ctermfg=3 ctermbg=none gui=bold guifg=orange hi ledgerTagValue term=bold cterm=bold ctermfg=1 ctermbg=none gui=NONE guifg=red hi ledgerTransaction cterm=bold ctermbg=none gui=bold hi ledgerTransactionComment term=bold cterm=bold ctermfg=6 ctermbg=none gui=bold guifg=#4169E1 hi ledgerTransactionDate cterm=bold ctermfg=5 ctermbg=none gui=bold guibg=lightgoldenrod hi ledgerTransactionDescription cterm=bold ctermfg=5 ctermbg=none gui=bold hi ledgerTransactionHead term=bold cterm=bold ctermfg=3 ctermbg=none gui=bold guifg=purple guibg=lightgoldenrod delcommand HiLink endif let b:current_syntax = "ledger"