diff options
author | Adam Stankiewicz <sheerun@sher.pl> | 2020-09-10 16:38:32 +0200 |
---|---|---|
committer | Adam Stankiewicz <sheerun@sher.pl> | 2020-09-10 16:38:32 +0200 |
commit | 05ff14bfdaeca8def902c644d119f3946009bf14 (patch) | |
tree | e6e9dbb371a1e4ecf4d4f72e05589248f82494ae /indent | |
parent | 9243367ba376050621e4c05e8f0439742c1f0f82 (diff) | |
download | vim-polyglot-05ff14bfdaeca8def902c644d119f3946009bf14.tar.gz vim-polyglot-05ff14bfdaeca8def902c644d119f3946009bf14.zip |
Add odin support, closes #544
Diffstat (limited to 'indent')
-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 |