blob: feaae92de2b2ed03405b5002d09f93a885d7276c (
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
|
let g:ledger_bin = 'hledger'
let g:ledger_is_hledger = v:true
let g:ledger_align_at = 50
let g:ledger_maxwidth = 80
let g:ledger_commodity_before = 0
let g:ledger_align_commodity = 1
let g:ledger_align_last = v:true
let g:ledger_decimal_sep = '.'
let g:ledger_commodity_sep = ' '
let g:ledger_date_format = '%Y-%m-%d'
let g:ledger_extra_options = ''
let g:ledger_main = expand('$LEDGER_FILE')
function! HLedgerEntry() abort
let l:output = systemlist(join(['hledger', 'print', '--match', getline('.')]))
" Filter out warnings
let l:output = filter(l:output, "v:val !~? '^Warning: '")
" Errors may occur
if v:shell_error
echomsg join(l:output)
return
endif
" Append output so we insert instead of overwrite, then delete line
call append('.', l:output)
normal! "_dd
endfunction
function! s:ledger_keymap() abort
" formatprg is used in vim-ledger. Thus equalprg is used here.
let &l:equalprg = 'hledger -f- print'
noremap { ?^\d<CR>
noremap } /^\d<CR>
noremap <silent> <buffer> * :call ledger#transaction_state_toggle(line('.'), ' *!')<CR>
inoremap <silent> <buffer> <c-x><c-x> <c-o>:call HLedgerEntry()<CR>
endfunction
au FileType ledger call s:ledger_keymap()
|