summaryrefslogtreecommitdiff
path: root/contrib
diff options
context:
space:
mode:
authorJohann Klähn <kljohann@gmail.com>2009-06-17 12:40:50 +0200
committerJohann Klähn <kljohann@gmail.com>2009-06-17 12:40:50 +0200
commit9701548f7e634f9a19295e34f624264343b78f0b (patch)
treed54b8ba29177a0b33ff2c5101105f1601bf0d5a9 /contrib
parentb96df34d75e9c0afde5b1706c00a6c8a58b2fff4 (diff)
downloadfork-ledger-9701548f7e634f9a19295e34f624264343b78f0b.tar.gz
fork-ledger-9701548f7e634f9a19295e34f624264343b78f0b.tar.bz2
fork-ledger-9701548f7e634f9a19295e34f624264343b78f0b.zip
vim: highlight account names
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.
Diffstat (limited to 'contrib')
-rw-r--r--contrib/vim/ftplugin/ledger.vim2
-rw-r--r--contrib/vim/syntax/ledger.vim14
2 files changed, 11 insertions, 5 deletions
diff --git a/contrib/vim/ftplugin/ledger.vim b/contrib/vim/ftplugin/ledger.vim
index 4e8bfcf1..cef0d81e 100644
--- a/contrib/vim/ftplugin/ledger.vim
+++ b/contrib/vim/ftplugin/ledger.vim
@@ -85,7 +85,7 @@ function! s:multibyte_strlen(text) "{{{2
return strlen(substitute(a:text, ".", "x", "g"))
endfunction "}}}
-function s:get_columns(win) "{{{2
+function! s:get_columns(win) "{{{2
" As long as vim doesn't provide a command natively,
" we have to compute the available columns.
" see :help todo.txt -> /Add argument to winwidth()/
diff --git a/contrib/vim/syntax/ledger.vim b/contrib/vim/syntax/ledger.vim
index aac6c2fa..1c1968e4 100644
--- a/contrib/vim/syntax/ledger.vim
+++ b/contrib/vim/syntax/ledger.vim
@@ -26,15 +26,21 @@ endif
syntax clear
" region: a transaction containing postings
-syn region transNorm start=/^\d/ skip=/^\s/ end=/^/
- \ fold keepend transparent contains=transDate, Metadata
+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 Comment SpecialKey
-highlight default link Metadata SpecialKey
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