blob: df63feb87133fcc26379dd1b0ff4c0811892b5e9 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
|
" Vim syntax file
" filetype: ledger
" Version: 0.0.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)
if version < 600
syntax clear
elseif exists("b:current_sytax")
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
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)
" 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 pad_len = 80 - strlen(line) - strlen(line2)
if (pad_len < 0) then
pad_len = 0
endif
let pad = strpart(" ", 0, pad_len)
return line . pad . line2
endfunction
set foldtext=MyFoldText()
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"
|