Ajout : vim/install : plugin recover.
[tool/hledger.git] / vim / syntax / hledger.vim
1 " Language: hledger
2 " Maintainer: Julien Moutinho <julm+vim@autogeree.net>
3 " URL: http://autogeree.net/~julm/src/vim/syntax/hledger.vim
4 " Last Change: Mon, 21 Jul 2014 00:00:00 +0200 - initial version
5 " Usage: autocmd BufNewFile,BufRead *.hledger,*.journal,*.ledger setfiletype hledger
6
7 if exists("b:current_syntax")
8 finish
9 endif
10
11 syn clear
12 syn sync fromstart
13 syn sync linebreaks=1
14
15 syn match hledgerComment ";.*"
16 syn match hledgerNumberOdd /[0-9][0-9]*/ contained
17 syn match hledgerNumber /[0-9][0-9]*/ contained
18 syn match hledgerAccountSeparatorOdd ":" contained
19 syn match hledgerAccountSeparator ":" contained
20
21 syn region hledgerInclude start=/^!include/ end=/^/
22 syn region hledgerDirective start=/^[A-Z]/ end=/^/ contains=hledgerComment
23
24 syn region hledgerTransaction start=/^\d[^ ]\+/ end=/^\s*$/
25 syn match hledgerTransactionHead "^[0-9/]\+\( [0-9:]\+\)\?\(=[0-9/]\+\( [0-9:]\+\)\?\)\?\(\s\+[!*]\)\?" contained containedin=hledgerTransaction nextgroup=hledgerTransactionDescription
26 syn match hledgerTransactionDate "[0-9/]\+\( [0-9:]\+\)\?" contained containedin=hledgerTransactionHead
27 syn match hledgerTransactionDescription "\s[^;]\+"ms=s+1 contained containedin=hledgerTransaction
28 syn match hledgerTransactionComment ";.*" contained containedin=hledgerTransaction,hledgerPosting,hledgerPostingOdd
29
30 syn match hledgerPostingAmountOdd " \(\s*[^; ]\+\)\+"ms=s+0 contained containedin=hledgerPostingOdd contains=hledgerNumberOdd
31 syn match hledgerPostingAmount " \(\s*[^; ]\+\)\+"ms=s+0 contained containedin=hledgerPosting contains=hledgerNumber
32 syn match hledgerPostingAccountOdd "^\s\+[^; ]\([^; ]\|\s[^; ]\+\)*" contained containedin=hledgerPostingOdd nextgroup=hledgerPostingAmountOdd contains=hledgerNumberOdd,hledgerAccountSeparatorOdd
33 syn match hledgerPostingAccount "^\s\+[^; ]\([^; ]\|\s[^; ]\+\)*" contained containedin=hledgerPosting nextgroup=hledgerPostingAmount contains=hledgerNumber,hledgerAccountSeparator
34 syn region hledgerPostingOdd start=/^\s\+[^; ]/ end=/^/ contained containedin=hledgerTransaction nextgroup=hledgerPosting
35 syn region hledgerPosting start=/^\s\+[^; ]/ end=/^/ contained containedin=hledgerTransaction nextgroup=hledgerPostingOdd
36
37 syn match hledgerTag /[^;, :]\+:[^;,]*/ contained containedin=hledgerTransactionComment nextgroup=hledgerTagValue
38 syn match hledgerTagValue /[^;, :]:[^,;]*/ms=s+2 contained containedin=hledgerTag
39
40 if version >= 508 || !exists("did_hledger_syntax_inits")
41 if version < 508
42 let did_hledger_syntax_inits = 1
43 command! -nargs=+ HiLink hi link <args>
44 else
45 command! -nargs=+ HiLink hi def link <args>
46 endif
47 hi SpecialKey gui=bold guifg=lightgoldenrod
48 hi Comment term=bold cterm=bold ctermfg=6 ctermbg=0 gui=bold guifg=#4169E1
49 hi Comment term=bold cterm=bold ctermfg=6 ctermbg=0 gui=bold guifg=#4169E1
50 HiLink hledgerComment Comment
51 hi hledgerInclude term=bold cterm=bold gui=bold
52 hi hledgerDirective term=bold cterm=bold gui=bold
53 hi hledgerAccountSeparatorOdd term=bold cterm=bold ctermfg=3 ctermbg=none gui=bold guifg=DarkGoldenrod2 guibg=gray90
54 hi hledgerAccountSeparator term=bold cterm=bold ctermfg=3 ctermbg=none gui=bold guifg=DarkGoldenrod2 guibg=lightgreen
55 hi hledgerNumberOdd term=bold cterm=bold ctermfg=4 ctermbg=none gui=bold guifg=blue guibg=gray90
56 hi hledgerNumber term=bold cterm=bold ctermfg=4 ctermbg=none gui=bold guifg=blue guibg=lightgreen
57 hi hledgerPostingOdd cterm=bold ctermbg=none guibg=NONE
58 hi hledgerPosting cterm=bold ctermbg=none guibg=NONE
59 hi hledgerPostingAccountOdd term=underline cterm=bold ctermfg=0 ctermbg=none guifg=gray30 guibg=gray90
60 hi hledgerPostingAccount term=underline cterm=bold ctermfg=0 ctermbg=none guifg=gray30 guibg=lightgreen
61 hi hledgerPostingAmountOdd cterm=bold ctermfg=3 ctermbg=none gui=bold guifg=DarkGoldenrod2 guibg=gray90
62 hi hledgerPostingAmount cterm=bold ctermfg=3 ctermbg=none gui=bold guifg=DarkGoldenrod2 guibg=lightgreen
63 hi hledgerTag term=bold cterm=bold ctermfg=3 ctermbg=none gui=bold guifg=orange
64 hi hledgerTagValue term=bold cterm=bold ctermfg=1 ctermbg=none gui=NONE guifg=red
65 hi hledgerTransaction cterm=bold ctermbg=none gui=bold
66 hi hledgerTransactionComment term=bold cterm=bold ctermfg=6 ctermbg=none gui=bold guifg=#4169E1
67 hi hledgerTransactionDate cterm=bold ctermfg=5 ctermbg=none gui=bold guibg=lightgoldenrod
68 hi hledgerTransactionDescription cterm=bold ctermfg=5 ctermbg=none gui=bold
69 hi hledgerTransactionHead term=bold cterm=bold ctermfg=3 ctermbg=none gui=bold guifg=purple guibg=lightgoldenrod
70 delcommand HiLink
71 endif
72
73 let b:current_syntax = "hledger"