diff options
Diffstat (limited to '')
| -rw-r--r-- | indent/odin.vim | 41 | 
1 files changed, 41 insertions, 0 deletions
| diff --git a/indent/odin.vim b/indent/odin.vim new file mode 100644 index 00000000..b00b5387 --- /dev/null +++ b/indent/odin.vim @@ -0,0 +1,41 @@ +if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'odin') == -1 + +if exists("b:did_indent") +  finish +endif +let b:did_indent = 1 + +setlocal nosmartindent +setlocal nolisp +setlocal autoindent + +setlocal indentexpr=GetOdinIndent(v:lnum) + +if exists("*GetOdinIndent") +  finish +endif + +function! GetOdinIndent(lnum) +  let prev = prevnonblank(a:lnum-1) + +  if prev == 0 +    return 0 +  endif + +  let prevline = getline(prev) +  let line = getline(a:lnum) + +  let ind = indent(prev) + +  if prevline =~ '[({]\s*$' +    let ind += &sw +  endif + +  if line =~ '^\s*[)}]' +    let ind -= &sw +  endif + +  return ind +endfunction + +endif | 
