codekingpro/portable-devtools
114k
1" Vim indent file2" Language: Nushell3" Maintainer: El Kasztano4" URL: https://github.com/elkasztano/nushell-syntax-vim5" License: MIT <https://opensource.org/license/mit>6" Last Change: 2025 Sep 057 8" Only load if no other indent file is loaded9if exists("b:did_indent")10 finish11endif12let b:did_indent = 113 14setlocal cindent15setlocal cinoptions=L0,(s,Ws,J1,j1,+0,f5,m1,i016setlocal cinkeys=0{,0},!^F,o,O,0[,0],0),0#17 18setlocal autoindent19setlocal indentkeys=0{,0},!^F,o,O,0[,0],0),0#20 21setlocal shiftwidth=222setlocal softtabstop=223setlocal expandtab24 25setlocal indentexpr=GetNuIndent(v:lnum)26 27let b:undo_indent = "setl ai< cin< cink< cino< et< inde< indk< sts< sw<"28 29" only define once30if exists("*GetNuIndent")31 finish32endif33 34let s:save_cpo = &cpo35set cpo&vim36 37function GetNuIndent(lnum)38 let prevlnum = prevnonblank(v:lnum - 1) "get number of last non blank line39 let line = getline(a:lnum)40 let synname = synIDattr(synID(a:lnum, 1, 1), "name")41 if (synname == "nuString") || (synname == "nuComment")42 return -143 endif44 if getline(prevlnum) =~ '\%(^.*[$\|^.*[\s*#.*$\)'45 return (prevlnum > 0) * indent(prevlnum) + shiftwidth()46 endif47 if getline(v:lnum) =~ "^\s*]\>"48 return (prevlnum > 0) * indent(prevlnum) - shiftwidth()49 endif50 return cindent(a:lnum)51endfunction52 53let &cpo = s:save_cpo54unlet s:save_cpo55 