summaryrefslogtreecommitdiff
path: root/contrib/vim/syntax/ledger.vim
diff options
context:
space:
mode:
authorJohann Klähn <kljohann@gmail.com>2009-11-19 14:00:35 +0100
committerJohann Klähn <kljohann@gmail.com>2010-02-21 19:48:00 +0100
commit50889bf2b8b670e6aa4fd4a6d547cdc53d45f198 (patch)
treefab7945c571a774218654df0d6a7e878ab7ac06e /contrib/vim/syntax/ledger.vim
parentcc9110a43a1e2d006de8d24a84bbfb2c6918cf33 (diff)
downloadfork-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.vim25
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"