diff options
Diffstat (limited to 'indent/beancount.vim')
-rw-r--r-- | indent/beancount.vim | 32 |
1 files changed, 16 insertions, 16 deletions
diff --git a/indent/beancount.vim b/indent/beancount.vim index cfc8aa6..4303986 100644 --- a/indent/beancount.vim +++ b/indent/beancount.vim @@ -1,44 +1,44 @@ -if exists("b:did_indent") +if exists('b:did_indent') finish endif let b:did_indent = 1 setlocal indentexpr=GetBeancountIndent(v:lnum) -if exists("*GetBeancountIndent") +if exists('*GetBeancountIndent') finish endif function! s:IsDirective(str) - return a:str =~ '\v^\s*(\d{4}-\d{2}-\d{2}|pushtag|poptag|option|plugin|include)' + return a:str =~# '\v^\s*(\d{4}-\d{2}-\d{2}|pushtag|poptag|option|plugin|include)' endfunction -function! s:IsPost(str) - return a:str =~ '\v^\s*(Assets|Liabilities|Expenses|Equity|Income):' +function! s:IsPosting(str) + return a:str =~# '\v^\s*[A-Z]\w+:' endfunction function! s:IsMetadata(str) - return a:str =~ '\v^\s*\w+:\s' + return a:str =~# '\v^\s*[a-z][a-zA-Z0-9\-_]+:' endfunction function! s:IsTransaction(str) " The final \S represents the flag (e.g. * or !). - return a:str =~ '\v^\s*\d{4}-\d{2}-\d{2}\s+(txn\s+)?\S(\s|$)' + return a:str =~# '\v^\s*\d{4}-\d{2}-\d{2}\s+(txn\s+)?\S(\s|$)' endfunction function GetBeancountIndent(line_num) - let this_line = getline(a:line_num) - let prev_line = getline(a:line_num - 1) + let l:this_line = getline(a:line_num) + let l:prev_line = getline(a:line_num - 1) " Don't touch comments - if this_line =~ '\v^\s*;' | return -1 | endif + if l:this_line =~# '\v^\s*;' | return -1 | endif " This is a new directive or previous line is blank. - if prev_line =~ '^\s*$' || s:IsDirective(this_line) | return 0 | endif + if l:prev_line =~# '^\s*$' || s:IsDirective(l:this_line) | return 0 | endif " Previous line is transaction or this is a posting. - if s:IsTransaction(prev_line) || s:IsPost(this_line) | return &sw | endif - if s:IsMetadata(this_line) - let this_indent = indent(a:line_num - 1) - if ! s:IsMetadata(prev_line) | let this_indent += &sw | endif - return this_indent + if s:IsTransaction(l:prev_line) || s:IsPosting(l:this_line) | return &shiftwidth | endif + if s:IsMetadata(l:this_line) + let l:this_indent = indent(a:line_num - 1) + if ! s:IsMetadata(l:prev_line) | let l:this_indent += &shiftwidth | endif + return l:this_indent endif return -1 endfunction |