summaryrefslogtreecommitdiff
path: root/contrib/ledger.vim
diff options
context:
space:
mode:
authorJohn Wiegley <johnw@newartisans.com>2009-01-28 17:16:20 -0400
committerJohn Wiegley <johnw@newartisans.com>2009-01-28 17:16:20 -0400
commit024e10cbfad2e17e76223219cf7271557019d739 (patch)
tree6c0af4de3f1129d78f1259c354330a557a6f725c /contrib/ledger.vim
parente08959aab6d7d6adcb23912e38303f90f865e055 (diff)
downloadfork-ledger-024e10cbfad2e17e76223219cf7271557019d739.tar.gz
fork-ledger-024e10cbfad2e17e76223219cf7271557019d739.tar.bz2
fork-ledger-024e10cbfad2e17e76223219cf7271557019d739.zip
Updated ledger.vim to the latest version.
Diffstat (limited to 'contrib/ledger.vim')
-rw-r--r--contrib/ledger.vim41
1 files changed, 25 insertions, 16 deletions
diff --git a/contrib/ledger.vim b/contrib/ledger.vim
index df63feb8..2efce5be 100644
--- a/contrib/ledger.vim
+++ b/contrib/ledger.vim
@@ -1,19 +1,24 @@
" Vim syntax file
" filetype: ledger
-" Version: 0.0.2
+" Version: 0.0.4
+" 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
-" 2005-02-05 first version (partly copied from ledger.vim 0.0.1)
-
+" 2009-01-28 S.Karrmann: minor fixes
+" 2009-01-27 third version by S.Karrmann.
+" better extraction of the amount of the transaction
+" decimal separator can be one of '.' and ','.
+" 2005-02-05 first version (partly copied from ledger.vim 0.0.1)
+
if version < 600
- syntax clear
+ syntax clear
elseif exists("b:current_sytax")
- finish
+ finish
endif
-
+
" for debugging
syntax clear
-
+
" region: a normal transaction
syn region transNorm start=/^\d/ skip=/^\s/ end=/^/ fold keepend transparent contains=transDate
syn match transDate /^\d\S\+/ contained
@@ -21,26 +26,30 @@ syn match Comment /^;.*$/
" highlight default link transNorm Question
highlight default link Comment SpecialKey
highlight default link transDate Question
-
+
" folding: how to represent a transaction in one line.
-function! MyFoldText()
- let line = strpart(getline(v:foldstart), 0, 65)
+function! LedgerFoldText()
+ let line = strpart(getline(v:foldstart), 0, 99)
" get the amount at the end of the second line
let line2 = getline(v:foldstart+1)
- let pos = match(line2, "[0-9.]*$")
- let line2 = strpart(line2, pos)
+ let lst = matchlist(line2,'\([0-9]\+\%([,.][0-9]\+\)\=\|[,.][0-9]\+\)\s*\%([A-Za-z$€¢]\+\s*\)\=\%(\s*;.*\)\=$')
+ if (len(lst) == 0)
+ let line2 = ""
+ else
+ let line2 = lst[1]
+ endif
let pad_len = 80 - strlen(line) - strlen(line2)
- if (pad_len < 0) then
+ if (pad_len < 0)
pad_len = 0
endif
let pad = strpart(" ", 0, pad_len)
return line . pad . line2
endfunction
-set foldtext=MyFoldText()
+set foldtext=LedgerFoldText()
set foldmethod=syntax
-
+
" syncinc is easy: search for the first transaction.
syn sync clear
syn sync match ledgerSync grouphere transNorm "^\d"
-
+
let b:current_syntax = "ledger"