diff options
author | Sean Dewar <seandewar@users.noreply.github.com> | 2022-11-24 10:23:50 +0000 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-11-24 10:23:50 +0000 |
commit | 868d8d69627c4b8fd5225da0dff5905f75645946 (patch) | |
tree | 56f21690606a99140cfc2df4422626d56b1fca51 /runtime/indent/obse.vim | |
parent | c9adbcafaec6c7aecb01e8f06a423a74b0a01116 (diff) | |
download | rneovim-868d8d69627c4b8fd5225da0dff5905f75645946.tar.gz rneovim-868d8d69627c4b8fd5225da0dff5905f75645946.tar.bz2 rneovim-868d8d69627c4b8fd5225da0dff5905f75645946.zip |
vim-patch:partial:b59ae59a5870 (#21170)
Update runtime files
https://github.com/vim/vim/commit/b59ae59a58706e454ef8c78276f021b1f58466e7
- Omit `map()` lambda arg comment. Not worth mentioning for legacy script
(and is already hinted at below).
- Cherry-pick latest `'thesaurusfunc'` example.
- Skip `optwin.vim` `'keyprotocol'` change.
- 🧜♀️
Co-authored-by: Bram Moolenaar <Bram@vim.org>
Diffstat (limited to 'runtime/indent/obse.vim')
-rw-r--r-- | runtime/indent/obse.vim | 55 |
1 files changed, 55 insertions, 0 deletions
diff --git a/runtime/indent/obse.vim b/runtime/indent/obse.vim new file mode 100644 index 0000000000..6603723dba --- /dev/null +++ b/runtime/indent/obse.vim @@ -0,0 +1,55 @@ +" Vim indent file +" Language: Oblivion Language (obl) +" Original Creator: Kat <katisntgood@gmail.com> +" Maintainer: Kat <katisntgood@gmail.com> +" Created: 01 November 2021 +" Last Change: 13 November 2022 + +if exists("b:did_indent") + finish +endif +let b:did_indent = 1 +let b:undo_indent = 'setlocal indentkeys< indentexpr<' + +setlocal indentexpr=GetOblIndent() +setlocal indentkeys+==~endif,=~else,=~loop,=~end + +if exists("*GetOblIndent") + finish +endif +let s:keepcpo = &cpo +set cpo&vim + +let s:SKIP_LINES = '^\s*\(;.*\)' +function! GetOblIndent() + + let lnum = prevnonblank(v:lnum - 1) + let cur_text = getline(v:lnum) + if lnum == 0 + return 0 + endif + let prev_text = getline(lnum) + let found_cont = 0 + let ind = indent(lnum) + + " indent next line on start terms + let i = match(prev_text, '\c^\s*\(\s\+\)\?\(\(if\|while\|foreach\|begin\|else\%[if]\)\>\)') + if i >= 0 + let ind += shiftwidth() + if strpart(prev_text, i, 1) == '|' && has('syntax_items') + \ && synIDattr(synID(lnum, i, 1), "name") =~ '\(Comment\|String\)$' + let ind -= shiftwidth() + endif + endif + " indent current line on end/else terms + if cur_text =~ '\c^\s*\(\s\+\)\?\(\(loop\|endif\|else\%[if]\)\>\)' + let ind = ind - shiftwidth() + " if we are at a begin block just go to column 0 + elseif cur_text =~ '\c^\s*\(\s\+\)\?\(\(begin\|end\)\>\)' + let ind = 0 + endif + return ind +endfunction + +let &cpo = s:keepcpo +unlet s:keepcpo |