diff options
author | Johann Klähn <kljohann@gmail.com> | 2009-11-19 14:00:35 +0100 |
---|---|---|
committer | Johann Klähn <kljohann@gmail.com> | 2010-02-21 19:48:00 +0100 |
commit | 50889bf2b8b670e6aa4fd4a6d547cdc53d45f198 (patch) | |
tree | fab7945c571a774218654df0d6a7e878ab7ac06e /contrib/vim/syntax/ledger.vim | |
parent | cc9110a43a1e2d006de8d24a84bbfb2c6918cf33 (diff) | |
download | fork-ledger-50889bf2b8b670e6aa4fd4a6d547cdc53d45f198.tar.gz fork-ledger-50889bf2b8b670e6aa4fd4a6d547cdc53d45f198.tar.bz2 fork-ledger-50889bf2b8b670e6aa4fd4a6d547cdc53d45f198.zip |
vim. polish syntax highlighting
Diffstat (limited to 'contrib/vim/syntax/ledger.vim')
-rw-r--r-- | contrib/vim/syntax/ledger.vim | 25 |
1 files changed, 18 insertions, 7 deletions
diff --git a/contrib/vim/syntax/ledger.vim b/contrib/vim/syntax/ledger.vim index 8914cf2a..c96e4c3c 100644 --- a/contrib/vim/syntax/ledger.vim +++ b/contrib/vim/syntax/ledger.vim @@ -24,26 +24,37 @@ endif " for debugging syntax clear - + +" DATE[=EDATE] [*|!] [(CODE)] DESC <-- first line of transaction +" ACCOUNT AMOUNT [; NOTE] <-- posting + " region: a transaction containing postings syn region transNorm start=/^[[:digit:]~]/ skip=/^\s/ end=/^/ - \ fold keepend transparent contains=transDate, Metadata, Posting + \ fold keepend transparent contains=transDate,Metadata,Posting syn match transDate /^\d\S\+/ contained -syn match Metadata /^\s\+;.*/ contained +syn match Metadata /^\s\+;.*/ contained contains=MetadataTag syn match Comment /^;.*$/ " every space in an account name shall be surrounded by two non-spaces " every account name ends with a tab, two spaces or the end of the line syn match Account /^\s\+\zs\%(\S \S\|\S\)\+\ze\%([ ]\{2,}\|\t\s*\|\s*$\)/ contained -syn match Posting /^\s\+[^[:blank:];].*$/ contained transparent contains=Account +syn match Posting /^\s\+[^[:blank:];].*$/ contained transparent contains=Account,Amount +" FIXME: add other symbols? +let s:currency = '\([$€£¢]\|\w\+\)' +let s:figures = '\d\+\([.,]\d\+\)*' +let s:amount = '-\?\('.s:figures.'\s*'.s:currency.'\|'.s:currency.'\s*'.s:figures.'\)' +exe 'syn match Amount /'.s:amount.'/ contained' +syn match MetadataTag /:\zs[^:]\+\ze:\|;\s*\zs[^:]\+\ze:[^:]\+$/ contained -highlight default link transDate Question -highlight default link Metadata PreProc +highlight default link transDate Constant +highlight default link Metadata Tag +highlight default link MetadataTag Type +highlight default link Amount Number highlight default link Comment Comment highlight default link Account Identifier " syncinc is easy: search for the first transaction. syn sync clear -syn sync match ledgerSync grouphere transNorm "^\d" +syn sync match ledgerSync grouphere transNorm "^[[:digit:]~]" let b:current_syntax = "ledger" |