diff --git a/.github/MAINTAINERS b/.github/MAINTAINERS index 236e3567cc..a43aebfa69 100644 --- a/.github/MAINTAINERS +++ b/.github/MAINTAINERS @@ -239,7 +239,7 @@ runtime/ftplugin/nginx.vim @chr4 runtime/ftplugin/nim.vim @ribru17 runtime/ftplugin/nroff.vim @averms runtime/ftplugin/nsis.vim @k-takata -runtime/ftplugin/nu.vim @mrcjkb +runtime/ftplugin/nu.vim @elkasztano runtime/ftplugin/octave.vim @dkearns runtime/ftplugin/ondir.vim @jparise runtime/ftplugin/opencl.vim @Freed-Wu @@ -380,6 +380,7 @@ runtime/indent/mma.vim @dkearns runtime/indent/mojo.vim @ribru17 runtime/indent/nginx.vim @chr4 runtime/indent/nsis.vim @k-takata +runtime/indent/nu.vim @elkasztano runtime/indent/occam.vim @dkearns runtime/indent/perl.vim @petdance runtime/indent/php.vim @2072 @@ -568,6 +569,7 @@ runtime/syntax/ninja.vim @nico runtime/syntax/nix.vim @equill runtime/syntax/nroff.vim @jmarshall runtime/syntax/nsis.vim @k-takata +runtime/syntax/nu.vim @elkasztano runtime/syntax/odin.vim @habamax runtime/syntax/omnimark.vim @kennypete runtime/syntax/ondir.vim @jparise diff --git a/runtime/ftplugin/nu.vim b/runtime/ftplugin/nu.vim index 9efbc3b099..a24bb21dd8 100644 --- a/runtime/ftplugin/nu.vim +++ b/runtime/ftplugin/nu.vim @@ -1,13 +1,17 @@ " Vim filetype plugin -" Language: Nu -" Maintainer: Marc Jakobi -" Last Change: 2024 Aug 31 +" Language: Nushell +" Maintainer: El Kasztano +" URL: https://github.com/elkasztano/nushell-syntax-vim +" License: MIT +" Last Change: 2025 Sep 05 -if exists('b:did_ftplugin') +if exists("b:did_ftplugin") finish endif let b:did_ftplugin = 1 setlocal commentstring=#\ %s +setlocal comments-=:// +setlocal formatoptions=tcroql -let b:undo_ftplugin = 'setl com<' +let b:undo_ftplugin = "setl fo< cms< com<" diff --git a/runtime/indent/nu.vim b/runtime/indent/nu.vim new file mode 100644 index 0000000000..e6b981f9f7 --- /dev/null +++ b/runtime/indent/nu.vim @@ -0,0 +1,54 @@ +" Vim indent file +" Language: Nushell +" Maintainer: El Kasztano +" URL: https://github.com/elkasztano/nushell-syntax-vim +" License: MIT +" Last Change: 2025 Sep 05 + +" Only load if no other indent file is loaded +if exists("b:did_indent") + finish +endif +let b:did_indent = 1 + +setlocal cindent +setlocal cinoptions=L0,(s,Ws,J1,j1,+0,f5,m1,i0 +setlocal cinkeys=0{,0},!^F,o,O,0[,0],0),0# + +setlocal autoindent +setlocal indentkeys=0{,0},!^F,o,O,0[,0],0),0# + +setlocal shiftwidth=2 +setlocal softtabstop=2 +setlocal expandtab + +setlocal indentexpr=GetNuIndent(v:lnum) + +let b:undo_indent = "setl ai< cin< cink< cino< et< inde< indk< sts< sw<" + +" only define once +if exists("*GetNuIndent") + finish +endif + +let s:save_cpo = &cpo +set cpo&vim + +function GetNuIndent(lnum) + let prevlnum = prevnonblank(v:lnum - 1) "get number of last non blank line + let line = getline(a:lnum) + let synname = synIDattr(synID(a:lnum, 1, 1), "name") + if (synname == "nuString") || (synname == "nuComment") + return -1 + endif + if getline(prevlnum) =~ '\%(^.*[$\|^.*[\s*#.*$\)' + return (prevlnum > 0) * indent(prevlnum) + shiftwidth() + endif + if getline(v:lnum) =~ "^\s*]\>" + return (prevlnum > 0) * indent(prevlnum) - shiftwidth() + endif + return cindent(a:lnum) +endfunction + +let &cpo = s:save_cpo +unlet s:save_cpo diff --git a/runtime/syntax/nu.vim b/runtime/syntax/nu.vim new file mode 100644 index 0000000000..0d0c80ec32 --- /dev/null +++ b/runtime/syntax/nu.vim @@ -0,0 +1,720 @@ +" Vim syntax file +" Language: Nushell +" Maintainer: El Kasztano +" URL: https://github.com/elkasztano/nushell-syntax-vim +" License: MIT +" Last Change: 2025 Sep 05 + +if exists("b:current_syntax") + finish +endif + +syn iskeyword @,192-255,-,_ + +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" nextgroup=nuIdtfr,nuSubCmd,nuDefflag skipwhite display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" nextgroup=nuIdtfr,nuSubCmd,nuDefflag skipwhite display +syn match nuCmd "\" nextgroup=nuIdtfr,nuSubCmd,nuDefflag skipwhite display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" nextgroup=nuIdtfr skipwhite display +syn match nuCmd "\" nextgroup=nuIdtfr skipwhite display +syn match nuCmd "\" nextgroup=nuIdtfr skipwhite display +syn match nuCmd "\" nextgroup=nuIdtfr skipwhite display +syn match nuCmd "\" nextgroup=nuIdtfr skipwhite display +syn match nuCmd "\" nextgroup=nuIdtfr skipwhite display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" nextgroup=nuPrpty skipwhite display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" nextgroup=nuPrpty skipwhite display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" nextgroup=nuPrpty skipwhite display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\ " display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" nextgroup=nuIdtfr skipwhite display +syn match nuCmd "\" nextgroup=nuIdtfr skipwhite display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" nextgroup=nuIdtfr skipwhite display +syn match nuCmd "\" display +syn match nuCmd "\" nextgroup=nuIdtfr skipwhite display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" nextgroup=nuIdtfr skipwhite display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" nextgroup=nuPrpty skipwhite display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" nextgroup=nuPrpty skipwhite display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" nextgroup=nuPrpty skipwhite display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" nextgroup=nuIdtfr skipwhite display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" nextgroup=nuPrpty skipwhite display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display +syn match nuCmd "\" display + +syn match nuNumber "\([a-zA-Z_\.]\+\d*\)\@" display +syn match nuOp "+" display +syn match nuOp "/" display +syn match nuOp "\*" display +syn match nuOp "!=" display +syn match nuOp "=\~" display +syn match nuOp "\!\~" display +syn match nuOp "\" nextgroup=nuPrpty skipwhite display +syn match nuOp "\" nextgroup=nuPrpty skipwhite display +syn match nuOp "\" display +syn match nuOp "\" nextgroup=nuPrpty skipwhite display +syn match nuOp "\" nextgroup=nuPrpty skipwhite display +syn match nuOp "\" nextgroup=nuPrpty skipwhite display +syn match nuOp "\" display +syn match nuOp "\" display +syn match nuOp "\" display +syn match nuOp "\" display +syn match nuOp "\" display +syn match nuOp "\" display +syn match nuOp "\" display +syn match nuOp "\.\.\." display + +syn match nuVar "\$[^?\])} \t]\+" + +syn match nuIdtfr :\(-\+\)\@![^? \t"=]\+: contained + +syn region nuSubCmd start=/"/ skip=/\\./ end=/"/ contained + +syn match nuPrpty '\w\+' contained + +syn keyword nuType any binary bool cell-path closure datetime directory duration error filesize float glob int list nothing number path range record string table true false null + +syn keyword nuCondi if then else + +syn match nuUnit "b\>" contained +syn match nuUnit "kb\>" contained +syn match nuUnit "mb\>" contained +syn match nuUnit "gb\>" contained +syn match nuUnit "tb\>" contained +syn match nuUnit "pb\>" contained +syn match nuUnit "eb\>" contained +syn match nuUnit "kib\>" contained +syn match nuUnit "mib\>" contained +syn match nuUnit "gib\>" contained +syn match nuUnit "tib\>" contained +syn match nuUnit "pib\>" contained +syn match nuUnit "eib\>" contained + +syn match nuDur "ns\>" contained +syn match nuDur "us\>" contained +syn match nuDur "ms\>" contained +syn match nuDur "sec\>" contained +syn match nuDur "min\>" contained +syn match nuDur "hr\>" contained +syn match nuDur "day\>" contained +syn match nuDur "wk\>" contained + +syn match nuFlag "\<-\k\+" + +syn match nuDefflag "\<--env\>" display contained nextgroup=nuIdtfr skipwhite +syn match nuDefflag "\<--wrapped\>" display contained nextgroup=nuIdtfr skipwhite + +syn match nuSysEsc "\^\k\+" display + +syn match nuSqrbr "\[" display +syn match nuSqrbr "\]" display +syn match nuSqrbr ":" display + +syn region nuString start=/\v"/ skip=/\v\\./ end=/\v"/ contains=nuEscaped +syn region nuString start='\'' end='\'' +syn region nuString start='`' end='`' +syn region nuString start=/r#\+'/ end=/#\+/ contains=nuString + +syn region nuStrInt start=/$'/ end=/'/ contains=nuNested +syn region nuStrInt start=/$"/ skip=/\\./ end=/"/ contains=nuNested,nuEscaped + +syn region nuNested start="("hs=s+1 end=")"he=e-1 contained contains=nuAnsi +syn match nuAnsi "ansi[a-zA-Z0-9;' -]\+)"me=e-1 contained + +syn match nuClosure "|\(\w\|, \)\+|" + +syn match nuDot ")\.\(\k\|\.\)\+"ms=s+1 display + +syn match nuEscaped "\\\\" display +syn match nuEscaped :\\": display +syn match nuEscaped "\\n" display +syn match nuEscaped "\\t" display +syn match nuEscaped "\\r" display + +hi def link nuCmd Keyword +hi def link nuComment Comment +hi def link nuTodo Todo +hi def link nuString Constant +hi def link nuChar Constant +hi def link nuOp Operator +hi def link nuVar PreProc +hi def link nuSqrBr Special +hi def link nuIdtfr Identifier +hi def link nuType Type +hi def link nuUnit Type +hi def link nuDur Type +hi def link nuPrpty Special +hi def link nuSubCmd Identifier +hi def link nuStrInt Constant +hi def link nuNested PreProc +hi def link nuFlag Special +hi def link nuEscaped Special +hi def link nuCondi Type +hi def link nuClosure Type +hi def link nuNumber Number +hi def link nuDot Special +hi def link nuSysEsc PreProc +hi def link nuAnsi Special +hi def link nuDefflag Special + +let b:current_syntax = "nu"