mirror of
https://github.com/sheerun/vim-polyglot.git
synced 2025-11-13 05:53:50 -05:00
Add ledger support, closes #488
This commit is contained in:
52
indent/ledger.vim
Normal file
52
indent/ledger.vim
Normal file
@@ -0,0 +1,52 @@
|
||||
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'ledger') == -1
|
||||
|
||||
" Vim filetype indent file
|
||||
" filetype: ledger
|
||||
" by Johann Klähn; Use according to the terms of the GPL>=2.
|
||||
" vim:ts=2:sw=2:sts=2:foldmethod=marker
|
||||
|
||||
scriptencoding utf-8
|
||||
|
||||
if exists('b:did_indent')
|
||||
finish
|
||||
endif
|
||||
let b:did_indent = 1
|
||||
|
||||
setl autoindent
|
||||
setl indentexpr=GetLedgerIndent()
|
||||
|
||||
if exists('*GetLedgerIndent')
|
||||
finish
|
||||
endif
|
||||
|
||||
function GetLedgerIndent(...)
|
||||
" You can pass in a line number when calling this function manually.
|
||||
let lnum = a:0 > 0 ? a:1 : v:lnum
|
||||
" If this line is empty look at (the indentation of) the last line.
|
||||
" Note that inside of a transaction no blank lines are allowed.
|
||||
let line = getline(lnum)
|
||||
let prev = getline(lnum - 1)
|
||||
|
||||
if line =~# '^\s\+\S'
|
||||
" Lines that already are indented (→postings, sub-directives) keep their indentation.
|
||||
return &shiftwidth
|
||||
elseif line =~# '^\s*$'
|
||||
" Current line is empty, try to guess its type based on the previous line.
|
||||
if prev =~# '^\([[:digit:]~=]\|\s\+\S\)'
|
||||
" This is very likely a posting or a sub-directive.
|
||||
" While lines following the start of a transaction are automatically
|
||||
" indented you will have to indent the first line following a
|
||||
" pre-declaration manually. This makes it easier to type long lists of
|
||||
" 'account' pre-declarations without sub-directives, for example.
|
||||
return &shiftwidth
|
||||
else
|
||||
return 0
|
||||
endif
|
||||
else
|
||||
" Everything else is not indented:
|
||||
" start of transactions, pre-declarations, apply/end-lines
|
||||
return 0
|
||||
endif
|
||||
endf
|
||||
|
||||
endif
|
||||
Reference in New Issue
Block a user