Merge remote branch 'kljohann/master' into next

This commit is contained in:
John Wiegley 2010-03-04 13:41:35 -05:00
commit 9143fbcdf1
3 changed files with 50 additions and 8 deletions

View file

@ -2,7 +2,7 @@
This is the ledger filetype for vim.
Copy each file to the corresponding directory in your ~/.vim directory.
Then include the following line in your .vimrc or in ~/.vim/filetype.vim
au BufNewFile,BufRead *.ldg,*.ledger setf ledger
au BufNewFile,BufRead *.ldg,*.ledger setf ledger | comp ledger
You can also use a modeline like this in every ledger file
vim:filetype=ledger

View file

@ -0,0 +1,31 @@
" Vim Compiler File
" Compiler: ledger
" by Johann Klähn; Use according to the terms of the GPL>=2.
" vim:ts=2:sw=2:sts=2:foldmethod=marker
if exists("current_compiler")
finish
endif
let current_compiler = "ledger"
if exists(":CompilerSet") != 2
command -nargs=* CompilerSet setlocal <args>
endif
if ! exists("g:ledger_bin") || ! executable(g:ledger_bin)
if executable('ledger')
let g:ledger_bin = 'ledger'
else
echoerr "ledger command not found. Set g:ledger_bin or extend $PATH."
finish
endif
endif
" %-G throws away blank lines, everything else is assumed to be part of a
" multi-line error message.
CompilerSet errorformat=%-G,%EWhile\ parsing\ file\ \"%f\"\\,\ line\ %l:%.%#,%ZError:\ %m,%C%.%#
" unfortunately there is no 'check file' command,
" so we will just use a query that returns no results. ever.
exe 'CompilerSet makeprg='.g:ledger_bin.'\ -f\ %\ reg\ not\ ''.*''\ \>\ /dev/null'

View file

@ -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"