This helps to avoid confusion when an account is not seperated from the amount by two spaces or a tab but only by one space. In these cases the amount will now be highlighted as if it belongs to the account name. Thanks to user 'plaindocs' for reporting this.
49 lines
1.8 KiB
VimL
49 lines
1.8 KiB
VimL
" Vim syntax file
|
|
" filetype: ledger
|
|
" Version: 0.1.0
|
|
" by Johann Klähn; Use according to the terms of the GPL>=2.
|
|
" by Stefan Karrmann; Use according to the terms of the GPL>=2.
|
|
" by Wolfgang Oertl; Use according to the terms of the GPL>=2.
|
|
" Revision history
|
|
" 2009-06-12 J. Klähn: Use all available columns for foldtext
|
|
" 2009-03-25 J. Klähn: Allow Metadata
|
|
" in transactions and postings (Ledger 3.0)
|
|
" Also fixed alignment for multi-byte-characters
|
|
" 2009-01-28 S.Karrmann: minor fixes
|
|
" 2009-01-27 third version by S.Karrmann.
|
|
" better extraction of the amount of the posting
|
|
" decimal separator can be one of '.' and ','.
|
|
" 2005-02-05 first version (partly copied from ledger.vim 0.0.1)
|
|
" vim:ts=2:sw=2:sts=2:foldmethod=marker
|
|
|
|
if version < 600
|
|
syntax clear
|
|
elseif exists("b:current_sytax")
|
|
finish
|
|
endif
|
|
|
|
" for debugging
|
|
syntax clear
|
|
|
|
" region: a transaction containing postings
|
|
syn region transNorm start=/^[[:digit:]~]/ skip=/^\s/ end=/^/
|
|
\ fold keepend transparent contains=transDate, Metadata, Posting
|
|
syn match transDate /^\d\S\+/ contained
|
|
syn match Metadata /^\s\+;.*/ contained
|
|
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
|
|
|
|
|
|
highlight default link transDate Question
|
|
highlight default link Metadata PreProc
|
|
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"
|
|
|
|
let b:current_syntax = "ledger"
|