neovim

Neovim text editor
git clone https://git.dasho.dev/neovim.git
Log | Files | Refs | README

chaiscript.vim (1204B)


      1 " Vim indent file
      2 " Language:     ChaiScript
      3 " Maintainer:	Jason Turner <lefticus 'at' gmail com>
      4 " Last Change: 	2022 Apr 06
      5 
      6 " Only load this indent file when no other was loaded.
      7 if exists("b:did_indent")
      8  finish
      9 endif
     10 let b:did_indent = 1
     11 
     12 setlocal indentexpr=GetChaiScriptIndent()
     13 setlocal autoindent
     14 
     15 let b:undo_indent = "setl ai< inde<"
     16 
     17 " Only define the function once.
     18 if exists("*GetChaiScriptIndent")
     19  finish
     20 endif
     21 
     22 function! GetChaiScriptIndent()
     23  " Find a non-blank line above the current line.
     24  let lnum = prevnonblank(v:lnum - 1)
     25 
     26  " Hit the start of the file, use zero indent.
     27  if lnum == 0
     28    return 0
     29  endif
     30 
     31  " Add a 'shiftwidth' after lines that start a block:
     32  " lines containing a {
     33  let ind = indent(lnum)
     34  let flag = 0
     35  let prevline = getline(lnum)
     36  if prevline =~ '^.*{.*'
     37    let ind = ind + shiftwidth()
     38    let flag = 1
     39  endif
     40 
     41  " Subtract a 'shiftwidth' after lines containing a { followed by a }
     42  " to keep it balanced
     43  if flag == 1 && prevline =~ '.*{.*}.*'
     44    let ind = ind - shiftwidth()
     45  endif
     46 
     47  " Subtract a 'shiftwidth' on lines ending with }
     48  if getline(v:lnum) =~ '^\s*\%(}\)'
     49    let ind = ind - shiftwidth()
     50  endif
     51 
     52  return ind
     53 endfunction