diff options
Diffstat (limited to 'syntax')
-rw-r--r-- | syntax/vifm.vim | 437 |
1 files changed, 437 insertions, 0 deletions
diff --git a/syntax/vifm.vim b/syntax/vifm.vim new file mode 100644 index 00000000..c585ccd8 --- /dev/null +++ b/syntax/vifm.vim @@ -0,0 +1,437 @@ +if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'vifm') == -1 + +" vifm syntax file +" Maintainer: xaizek <xaizek@posteo.net> +" Last Change: September 18, 2017 +" Inspired By: Vim syntax file by Dr. Charles E. Campbell, Jr. + +if exists('b:current_syntax') + finish +endif + +let b:current_syntax = 'vifm' + +let s:cpo_save = &cpo +set cpo-=C + +" General commands +syntax keyword vifmCommand contained alink apropos bmark bmarks bmgo change + \ chmod chown clone compare cope[n] co[py] cq[uit] d[elete] delbmarks + \ delm[arks] di[splay] dirs e[dit] el[se] empty en[dif] exi[t] file fin[d] + \ fini[sh] gr[ep] h[elp] histnext his[tory] histprev jobs locate ls lstrash + \ marks mes[sages] mkdir m[ove] noh[lsearch] on[ly] popd pushd pu[t] pw[d] + \ q[uit] redr[aw] reg[isters] rename restart restore rlink screen sh[ell] + \ siblnext siblprev sor[t] sp[lit] s[ubstitute] touch tr trashes tree sync + \ undol[ist] ve[rsion] vie[w] vifm vs[plit] winc[md] w[rite] wq x[it] y[ank] + \ nextgroup=vifmArgs + +" commands that might be prepended to a command without changing everything else +syntax keyword vifmPrefixCommands contained windo winrun + +" Map commands +syntax keyword vifmMap contained dm[ap] dn[oremap] du[nmap] map mm[ap] + \ mn[oremap] mu[nmap] nm[ap] nn[oremap] no[remap] nun[map] qm[ap] qn[oremap] + \ qun[map] unm[ap] vm[ap] vn[oremap] vu[nmap] + \ skipwhite nextgroup=vifmMapArgs +syntax keyword vifmCMapAbbr contained ca[bbrev] cm[ap] cnorea[bbrev] cno[remap] + \ cuna[bbrev] cu[nmap] + \ skipwhite nextgroup=vifmCMapArgs + +" Other commands +syntax keyword vifmAutocmdCommand contained au[tocmd] nextgroup=vifmAutoEvent +syntax keyword vifmCdCommand contained cd +syntax keyword vifmCmdCommand contained com[mand] nextgroup=vifmCmdCommandName +syntax keyword vifmColoCommand contained colo[rscheme] +syntax keyword vifmHiCommand contained hi[ghlight] +syntax keyword vifmInvertCommand contained invert +syntax keyword vifmLetCommand contained let +syntax keyword vifmUnletCommand contained unl[et] +syntax keyword vifmSetCommand contained se[t] setl[ocal] setg[lobal] +syntax keyword vifmSoCommand contained so[urce] +syntax keyword vifmMarkCommand contained ma[rk] +syntax keyword vifmFtCommand contained filet[ype] filex[type] filev[iewer] +syntax keyword vifmExprCommand contained if ec[ho] elsei[f] exe[cute] +syntax keyword vifmNormalCommand contained norm[al] + \ nextgroup=vifmColonSubcommand +syntax match vifmPatternCommands contained /\<\(filter\(!\|\>\)\|select\(!\|\>\)\|unselect\>\)/ skipwhite + \ nextgroup=vifmPattern + +" List of event names for autocommands (case insensitive) +syntax case ignore +syntax keyword vifmAutoEvent contained DirEnter nextgroup=vifmStatementC +syntax case match + +" Builtin functions +syntax match vifmBuiltinFunction + \ '\(chooseopt\|expand\|executable\|filetype\|getpanetype\|has\|layoutis\|paneisat\|system\|term\)\ze(' + +" Operators +syntax match vifmOperator "\(==\|!=\|>=\?\|<=\?\|\.\|-\|+\|&&\|||\)" skipwhite + +" Highlight groups +syntax keyword vifmHiArgs contained cterm ctermfg ctermbg +syntax case ignore +syntax keyword vifmHiGroups contained WildMenu Border Win CmdLine CurrLine + \ OtherLine Directory Link Socket Device Executable Selected BrokenLink + \ TopLine TopLineSel StatusLine JobLine SuggestBox Fifo ErrorMsg CmpMismatch + \ AuxWin +syntax keyword vifmHiStyles contained bold underline reverse inverse standout + \ none +syntax keyword vifmHiColors contained black red green yellow blue magenta cyan + \ white default lightblack lightred lightgreen lightyellow lightblue + \ lightmagenta lightcyan lightwhite Grey0 NavyBlue DarkBlue Blue3 Blue3_2 + \ Blue1 DarkGreen DeepSkyBlue4 DeepSkyBlue4_2 DeepSkyBlue4_3 DodgerBlue3 + \ DodgerBlue2 Green4 SpringGreen4 Turquoise4 DeepSkyBlue3 DeepSkyBlue3_2 + \ DodgerBlue1 Green3 SpringGreen3 DarkCyan LightSeaGreen DeepSkyBlue2 + \ DeepSkyBlue1 Green3_2 SpringGreen3_2 SpringGreen2 Cyan3 DarkTurquoise + \ Turquoise2 Green1 SpringGreen2_2 SpringGreen1 MediumSpringGreen Cyan2 + \ Cyan1 DarkRed DeepPink4 Purple4 Purple4_2 Purple3 BlueViolet Orange4 + \ Grey37 MediumPurple4 SlateBlue3 SlateBlue3_2 RoyalBlue1 Chartreuse4 + \ DarkSeaGreen4 PaleTurquoise4 SteelBlue SteelBlue3 CornflowerBlue + \ Chartreuse3 DarkSeaGreen4_2 CadetBlue CadetBlue_2 SkyBlue3 SteelBlue1 + \ Chartreuse3_2 PaleGreen3 SeaGreen3 Aquamarine3 MediumTurquoise + \ SteelBlue1_2 Chartreuse2 SeaGreen2 SeaGreen1 SeaGreen1_2 Aquamarine1 + \ DarkSlateGray2 DarkRed_2 DeepPink4_2 DarkMagenta DarkMagenta_2 DarkViolet + \ Purple Orange4_2 LightPink4 Plum4 MediumPurple3 MediumPurple3_2 SlateBlue1 + \ Yellow4 Wheat4 Grey53 LightSlateGrey MediumPurple LightSlateBlue Yellow4_2 + \ DarkOliveGreen3 DarkSeaGreen LightSkyBlue3 LightSkyBlue3_2 SkyBlue2 + \ Chartreuse2_2 DarkOliveGreen3_2 PaleGreen3_2 DarkSeaGreen3 DarkSlateGray3 + \ SkyBlue1 Chartreuse1 LightGreen_2 LightGreen_3 PaleGreen1 Aquamarine1_2 + \ DarkSlateGray1 Red3 DeepPink4_3 MediumVioletRed Magenta3 DarkViolet_2 + \ Purple_2 DarkOrange3 IndianRed HotPink3 MediumOrchid3 MediumOrchid + \ MediumPurple2 DarkGoldenrod LightSalmon3 RosyBrown Grey63 MediumPurple2_2 + \ MediumPurple1 Gold3 DarkKhaki NavajoWhite3 Grey69 LightSteelBlue3 + \ LightSteelBlue Yellow3 DarkOliveGreen3_3 DarkSeaGreen3_2 DarkSeaGreen2 + \ LightCyan3 LightSkyBlue1 GreenYellow DarkOliveGreen2 PaleGreen1_2 + \ DarkSeaGreen2_2 DarkSeaGreen1 PaleTurquoise1 Red3_2 DeepPink3 DeepPink3_2 + \ Magenta3_2 Magenta3_3 Magenta2 DarkOrange3_2 IndianRed_2 HotPink3_2 + \ HotPink2 Orchid MediumOrchid1 Orange3 LightSalmon3_2 LightPink3 Pink3 + \ Plum3 Violet Gold3_2 LightGoldenrod3 Tan MistyRose3 Thistle3 Plum2 + \ Yellow3_2 Khaki3 LightGoldenrod2 LightYellow3 Grey84 LightSteelBlue1 + \ Yellow2 DarkOliveGreen1 DarkOliveGreen1_2 DarkSeaGreen1_2 Honeydew2 + \ LightCyan1 Red1 DeepPink2 DeepPink1 DeepPink1_2 Magenta2_2 Magenta1 + \ OrangeRed1 IndianRed1 IndianRed1_2 HotPink HotPink_2 MediumOrchid1_2 + \ DarkOrange Salmon1 LightCoral PaleVioletRed1 Orchid2 Orchid1 Orange1 + \ SandyBrown LightSalmon1 LightPink1 Pink1 Plum1 Gold1 LightGoldenrod2_2 + \ LightGoldenrod2_3 NavajoWhite1 MistyRose1 Thistle1 Yellow1 LightGoldenrod1 + \ Khaki1 Wheat1 Cornsilk1 Grey100 Grey3 Grey7 Grey11 Grey15 Grey19 Grey23 + \ Grey27 Grey30 Grey35 Grey39 Grey42 Grey46 Grey50 Grey54 Grey58 Grey62 + \ Grey66 Grey70 Grey74 Grey78 Grey82 Grey85 Grey89 Grey93 + +syntax case match + +" Options +syntax keyword vifmOption contained aproposprg autochpos caseoptions cdpath cd + \ chaselinks classify columns co confirm cf cpoptions cpo cvoptions + \ deleteprg dotdirs dotfiles dirsize fastrun fillchars fcs findprg + \ followlinks fusehome gdefault grepprg history hi hlsearch hls iec + \ ignorecase ic iooptions incsearch is laststatus lines locateprg ls + \ lsoptions lsview milleroptions millerview mintimeoutlen number nu + \ numberwidth nuw previewprg relativenumber rnu rulerformat ruf runexec + \ scrollbind scb scrolloff so sort sortgroups sortorder sortnumbers shell sh + \ shortmess shm sizefmt slowfs smartcase scs statusline stl suggestoptions + \ syscalls tabstop timefmt timeoutlen title tm trash trashdir ts tuioptions + \ to undolevels ul vicmd viewcolumns vifminfo vimhelp vixcmd wildmenu wmnu + \ wildstyle wordchars wrap wrapscan ws + +" Disabled boolean options +syntax keyword vifmOption contained noautochpos nocf nochaselinks nodotfiles + \ nofastrun nofollowlinks nohlsearch nohls noiec noignorecase noic + \ noincsearch nois nolaststatus nols nolsview nomillerview nonumber nonu + \ norelativenumber nornu noscrollbind noscb norunexec nosmartcase noscs + \ nosortnumbers nosyscalls notitle notrash novimhelp nowildmenu nowmnu + \ nowrap nowrapscan nows + +" Inverted boolean options +syntax keyword vifmOption contained invautochpos invcf invchaselinks invdotfiles + \ invfastrun invfollowlinks invhlsearch invhls inviec invignorecase invic + \ invincsearch invis invlaststatus invls invlsview invmillerview invnumber + \ invnu invrelativenumber invrnu invscrollbind invscb invrunexec invsmartcase + \ invscs invsortnumbers invsyscalls invtitle invtrash invvimhelp invwildmenu + \ invwmnu invwrap invwrapscan invws + +" Expressions +syntax region vifmStatement start='^\(\s\|:\)*' + \ skip='\(\n\s*\\\)\|\(\n\s*".*$\)' end='$' keepend + \ contains=vifmCommand,vifmCmdCommand,vifmCmdCommandSt,vifmMarkCommandSt + \,vifmFtCommandSt,vifmCMapAbbr,vifmMap,vifmMapSt,vifmCMapSt,vifmExecute + \,vifmComment,vifmInlineComment,vifmNotComment,vifmExprCommandSt,vifmNormalCommandSt + \,vifmCdCommandSt,vifmSet,vifmArgument,vifmSoCommandSt,vifmPrefixCommands + \,vifmAutocmdCommand,vifmAutoEvent,vifmPatternCommands +" Contained statement with highlighting of angle-brace notation. +syntax region vifmStatementCN start='\(\s\|:\)*' + \ skip='\(\n\s*\\\)\|\(\n\s*".*$\)' end='$' keepend contained + \ contains=vifmCommand,vifmCmdCommand,vifmCmdCommandSt,vifmMarkCommandSt + \,vifmFtCommandStN,vifmCMapAbbr,vifmMap,vifmMapSt,vifmCMapSt,vifmExecute + \,vifmComment,vifmInlineComment,vifmNotComment,vifmExprCommandSt,vifmNormalCommandSt + \,vifmNotation,vifmCdCommandStN,vifmSetN,vifmArgument,vifmSoCommand + \,vifmSoCommandStN,vifmInvertCommand,vifmInvertCommandStN,vifmPrefixCommands +" Contained statement without highlighting of angle-brace notation. +syntax region vifmStatementC start='\(\s\|:\)*' + \ skip='\(\n\s*\\\)\|\(\n\s*".*$\)' end='$' keepend contained + \ contains=vifmCommand,vifmCmdCommand,vifmCmdCommandSt,vifmMarkCommandSt + \,vifmFtCommandSt,vifmCMapAbbr,vifmMap,vifmMapSt,vifmCMapSt,vifmExecute + \,vifmComment,vifmInlineComment,vifmNotComment,vifmExprCommandSt,vifmNormalCommandSt + \,vifmCdCommandSt,vifmSet,vifmArgument,vifmSoCommand,vifmSoCommandSt + \,vifmInvertCommand,vifmInvertCommandSt,vifmPrefixCommands + \,vifmAutocmdCommand,vifmAutoEvent,vifmPatternCommands +syntax region vifmCmdCommandSt start='^\(\s\|:\)*com\%[mand]\>' + \ skip='\(\n\s*\\\)\|\(\n\s*".*$\)' end='$' keepend + \ contains=vifmCmdCommand,vifmComment,vifmInlineComment,vifmNotComment +syntax region vifmCmdCommandName contained start='!\?\s\+[a-zA-Z]\+' end='\ze\s' + \ skip='\(\s*\\\)\|\(\s*".*$\)' + \ nextgroup=vifmCmdArgs +syntax region vifmCmdArgs start='\(\s*\n\s*\\\)\?\s*\S\+' + \ end='\s' skip='\(\n\s*\\\)\|\(\n\s*".*$\)' + \ contained + \ contains=vifmColonSubcommand,vifmComment +syntax region vifmColoCommandSt start='^\(\s\|:\)*colo\%[rscheme]\>' end='$' + \ keepend oneline contains=vifmColoCommand +syntax region vifmInvertCommandSt start='\(\s\|:\)*invert\>' end='$\||' + \ keepend oneline contains=vifmInvertCommand +syntax region vifmInvertCommandStN start='\(\s\|:\)*invert\>' end='$\||' + \ contained keepend oneline contains=vifmInvertCommand,vifmNotation +syntax region vifmSoCommandSt start='\(\s\|:\)*so\%[urce]\>' end='$\||' + \ keepend oneline contains=vifmSoCommand,vifmEnvVar,vifmStringInExpr +syntax region vifmSoCommandStN start='\(\s\|:\)*so\%[urce]\>' end='$\||' + \ contained keepend oneline + \ contains=vifmSoCommand,vifmEnvVar,vifmNotation,vifmStringInExpr +syntax region vifmMarkCommandSt start='^\(\s\|:\)*ma\%[rk]\>' end='$' keepend + \ oneline contains=vifmMarkCommand +syntax region vifmCdCommandSt start='\(\s\|:\)*cd\>' end='$\||' keepend oneline + \ contains=vifmCdCommand,vifmEnvVar,vifmStringInExpr +" Highlight for :cd command with highlighting of angle-brace notation. +syntax region vifmCdCommandStN start='\(\s\|:\)*cd\>' end='$\||' keepend oneline + \ contained + \ contains=vifmCdCommand,vifmEnvVar,vifmNotation,vifmStringInExpr +syntax region vifmFtCommandSt start='\(\s\|:\)*file[tvx]' + \ skip='\(\n\s*\\\)\|\(\n\s*".*$\)' end='$' keepend + \ contains=vifmFtCommand,vifmComment,vifmFtBeginning +syntax region vifmFtCommandStN start='\(\s\|:\)*file[tvx]' + \ skip='\(\n\s*\\\)\|\(\n\s*".*$\)' end='$\|\(<[cC][rR]>\)' keepend + \ contains=vifmComment,vifmNotation,vifmFtBeginning +syntax region vifmMapSt start='^\(\s\|:\)*\(map\|mm\%[ap]\|mn\%[oremap]\|mu\%[nmap]\|nm\%[ap]\|nn\%[oremap]\|no\%[remap]\|nun\%[map]\|qm\%[ap]\|qn\%[oremap]\|qun\%[map]\|unm\%[ap]\|vm\%[ap]\|vn\%[oremap]\|vu\%[nmap]\)' + \ skip='\(\n\s*\\\)\|\(\n\s*".*$\)' end='$' keepend + \ contains=vifmMap +syntax region vifmCMapSt + \ start='^\(\s\|:\)*\(cm\%[ap]\|cno\%[remap]\|cu\%[nmap]\)' + \ skip='\(\n\s*\\\)\|\(\n\s*".*$\)' end='$' keepend + \ contains=vifmCMapAbbr +syntax region vifmExprCommandSt + \ start='\<\(if\|ec\%[ho]\|elsei\%[f]\|exe\%[cute]\)\>' + \ end='$\||' + \ contains=vifmExprCommand,vifmString,vifmStringInExpr,vifmBuiltinFunction + \,vifmOperator,vifmEnvVar,vifmNumber +syntax region vifmNormalCommandSt start='\(\s\|:\)*norm\%[al]\>' end='$' keepend + \ oneline + \ contains=vifmNormalCommand,vifmComment +syntax region vifmExecute start='!' skip='\(\n\s*\\\)\|\(\n\s*".*$\)' end='$' + \ keepend + \ contains=vifmNotation,vifmComment +syntax region vifmMapArgs start='\ze\S\+' + \ end='\ze.' skip='\(\n\s*\\\)\|\(\n\s*".*$\)' + \ contained + \ nextgroup=vifmMapLhs +syntax region vifmCMapArgs start='\S\+' + \ end='\n\s*\\' skip='\(\n\s*\\\)\|\(\n\s*".*$\)' + \ contained + \ contains=vifmMapLhs,vifmMapCRhs +syntax region vifmMapLhs start='\S\+' + \ end='\ze\s' skip='\(\s*\\\)\|\(\s*".*$\)' + \ contained + \ contains=vifmNotation,vifmComment + \ nextgroup=vifmMapRhs +syntax region vifmMapRhs start='.' + \ end='\ze<[cC][rR]>' skip='\(\s*\\\)\|\(\s*".*$\)' + \ contained keepend + \ contains=vifmNotation,vifmComment,vifmColonSubcommandN + \ nextgroup=vifmMapRhs +syntax region vifmMapCRhs start='\s' + \ end='<[cC][rR]>' skip='\(\s*\\\)\|\(\s*".*$\)' + \ contained keepend + \ contains=vifmNotation,vifmComment,vifmSubcommandN +syntax region vifmColonSubcommand start='\s*\(\s*\n\s*\\\)\?:\s*\S\+' + \ end='$' skip='\s*\n\(\s*\\\)\|\(\s*".*$\)' + \ contained + \ contains=vifmStatementC +" Contained sub command with highlighting of angle-brace notation. +syntax region vifmColonSubcommandN start='\s*\(\s*\n\s*\\\)\?:\s*\S\+' + \ end='\ze<[cC][rR]>\|$' skip='\s*\n\(\s*\\\)\|\(\s*".*$\)' keepend + \ contained + \ contains=vifmStatementCN +syntax region vifmSubcommandN start='\s*\(\s*\n\s*\\\)\?:\?\s*\S\+' + \ end='\ze<[cC][rR]>\|$' skip='\s*\n\(\s*\\\)\|\(\s*".*$\)' keepend + \ contained + \ contains=vifmStatementCN +" Non-empty pattern or form [!][{]{*.ext,*.e}[}], [!][/]/regex/[/][iI] or +" <mime-type-globs>, possibly multi-line. +" [!]/regexp/[iI]+ +syntax region vifmPattern contained + \ start='!\?/\ze\(\n\s*\\\|\n\s*".*$\|[^/]\|\\/\)\+/' + \ skip='\(\n\s*\\\)\|\(\n\s*".*$\)' end='/[iI]*\ze\s\|/\ze\S\+\s' keepend + \ contains=vifmComment,vifmInlineComment,vifmNotComment,vifmNotPattern +" [!]//regexp//[iI]+ +syntax region vifmPattern contained + \ start='!\?//\ze\(/[^/]\|\n\s*\\\|\n\s*".*$\|[^/]\|\\/\)\+//' + \ skip='/[^/]\|\(\n\s*\\\)\|\(\n\s*".*$\)' end='//[iI]*' keepend + \ contains=vifmComment,vifmInlineComment,vifmNotComment,vifmNotPattern +" [!]{regexp} +syntax region vifmPattern contained + \ start='!\?{[^}]' skip='\(\n\s*\\\)\|\(\n\s*".*$\)' end='}' keepend + \ contains=vifmComment,vifmInlineComment,vifmNotComment,vifmNotPattern +" [!]{{regexp}} +syntax region vifmPattern contained + \ start='!\?{{\ze.\{-}}}' skip='\(\n\s*\\\)\|\(\n\s*".*$\)' end='}}' keepend + \ contains=vifmComment,vifmInlineComment,vifmNotComment,vifmNotPattern +" [!]<regexp> +syntax region vifmPattern contained + \ start='!\?<[^>]' skip='\(\n\s*\\\)\|\(\n\s*".*$\)' end='>' keepend + \ contains=vifmComment,vifmInlineComment,vifmNotComment,vifmNotPattern +syntax match vifmNotPattern contained '!\?\({{}}\|\<//\>\|////\)' +syntax region vifmHi + \ start='^\(\s\|:\)*\<hi\%[ghlight]\>' skip='\(\n\s*\\\)\|\(\n\s*".*$\)' + \ end='$' keepend + \ contains=vifmHiCommand,vifmHiArgs,vifmHiGroups,vifmHiStyles,vifmHiColors + \,vifmNumber,vifmComment,vifmInlineComment,vifmNotComment,vifmHiClear + \,vifmPattern +syntax region vifmFtBeginning contained + \ start='\<\(filet\%[ype]\|filext\%[ype]\|filev\%[iewer]\)\>\s\+\S' + \ skip='\(\n\s*\\\)\|\(\n\s*".*$\)' + \ end='\s' keepend + \ contains=vifmFtCommand,vifmPattern + +" common highlight for :command arguments +syntax region vifmArgs start='!\?\zs\(\s*\S\+\|[^a-zA-Z]\)' + \ skip='\(\n\s*\\\)\|\(\n\s*".*$\)' end='|\|$' + \ contained + \ contains=vifmStringInExpr + +syntax region vifmSet + \ start='\(\s\|:\)*\<\(se\%[t]\|setg\%[lobal]\|setl\%[ocal]\)\>' + \ skip='\(\n\s*\\\)\|\(\n\s*".*$\)' end='$' + \ keepend + \ contains=vifmSetCommand,vifmOption,vifmSetAssignSQS,vifmSetAssignDQS + \,vifmSetAssignNS,vifmComment,vifmInlineComment,vifmNotComment +syntax region vifmSetN + \ start='\(\s\|:\)*\<\(se\%[t]\|setg\%[lobal]\|setl\%[ocal]\)\>' + \ skip='\(\n\s*\\\)\|\(\n\s*".*$\)' end='$' + \ keepend + \ contains=vifmSetCommand,vifmOption,vifmSetAssignSQS,vifmSetAssignDQS + \,vifmSetAssignNSN,vifmComment,vifmInlineComment,vifmNotComment,vifmNotation +syntax region vifmSet2 contained + \ start='^\(\s\|:\)*\<\(se\%[t]\|setg\%[lobal]\|setl\%[ocal]\)\>' + \ skip='\(\n\s*\\\)\|\(\n\s*".*$\)' end='$' + \ keepend + \ contains=vifmSetCommand,vifmOption,vifmSetAssignSQS,vifmSetAssignDQS + \,vifmSetAssignNSN,vifmComment,vifmInlineComment,vifmNotComment,vifmNotation + +" Highlight for =value part of :set arguments of form option=value + +" For single quoted string (check that it starts with =') +syntax region vifmSetAssignSQS contained + \ start="='" skip=+\\\\\|\\'+ end=+'+ keepend + \ contains=vifmString +" For double quoted string (check that it starts with =") +syntax region vifmSetAssignDQS contained + \ start='="' skip=+\\\\\|\\"+ end=+"+ keepend + \ contains=vifmString +" For not strings (check that it doesn't start with either =' or =") +syntax region vifmSetAssignNS contained + \ start='=[^"'' ]' skip='\(\n\s*\\\)\|\(\n\s*".*$\)\|^.*\S.*\\\s' end='^\s*\\\s\|[^\\]\s\|$' + \ extend + \ contains=vifmNumber,vifmComment,vifmInlineComment +" For not strings (check that it doesn't start with either =' or =") +syntax region vifmSetAssignNSN contained + \ start='=[^"'' ]' skip='\(\n\s*\\\)\|\(\n\s*".*$\)\|^.*\S.*\\\s' end='^\s*\\\s\|[^\\]\s\|$' + \ extend + \ contains=vifmNumber,vifmComment,vifmInlineComment,vifmNotation + +syntax region vifmLet + \ start='^\(\s\|:\)*\<let\>' skip='\(\n\s*\\\)\|\(\n\s*".*$\)' end='$' + \ keepend + \ contains=vifmLetCommand,vifmEnvVar,vifmString,vifmStringInExpr,vifmComment + \,vifmInlineComment,vifmNotComment +syntax region vifmUnlet + \ start='^\(\s\|:\)*\<unl\%[et]\>' skip='\(\n\s*\\\)\|\(\n\s*".*$\)' end='$' + \ keepend + \ contains=vifmUnletCommand,vifmEnvVar,vifmComment,vifmInlineComment,vifmNotComment +syntax region vifmString contained start=+="+hs=s+1 skip=+\\\\\|\\"+ end=+"+ +syntax region vifmString contained start=+='+hs=s+1 skip=+\\\\\|\\'+ end=+'+ +syntax region vifmStringInExpr contained start=+=\@<="+hs=s+1 skip=+\\\\\|\\"+ + \ end=+"+ +syntax region vifmStringInExpr contained start=+=\@<='+hs=s+1 + \ skip=+\\\\\|\\'\|''+ end=+'+ +syntax region vifmStringInExpr contained start=+[.( ]"+hs=s+1 skip=+\\\\\|\\"+ + \ end=+"+ +syntax region vifmStringInExpr contained start=+[.( ]'+hs=s+1 + \ skip=+\\\\\|\\'\|''+ end=+'+ +syntax region vifmArgument contained start=+"+ skip=+\\\\\|\\"+ end=+"+ +syntax region vifmArgument contained start=+'+ skip=+\\\\\|\\'\|''+ end=+'+ +syntax match vifmEnvVar contained /\$[0-9a-zA-Z_]\+/ +syntax match vifmNumber contained /\d\+/ + +" Ange-bracket notation +syntax case ignore +syntax match vifmNotation '<\(esc\|cr\|space\|del\|nop\|\(s-\)\?tab\|home\|end\|left\|right\|up\|down\|bs\|delete\|pageup\|pagedown\|\([acms]-\)\?f\d\{1,2\}\|c-s-[a-z[\]^_]\|s-c-[a-z[\]^_]\|c-[a-z[\]^_]\|[am]-c-[a-z]\|c-[am]-[a-z]\|[am]-[a-z]\)>' +syntax case match + +" Whole line comment +syntax region vifmComment contained contains=@Spell start='^\(\s\|:\)*"' end='$' +" Comment at the end of a line +syntax match vifmInlineComment contained contains=@Spell '\s"[^"]*$' +" This prevents highlighting non-first line of multi-line command +syntax match vifmNotComment contained '\s"[^"]*\(\(\n\s*\(\\\|"\)\)\@!\|$\)' + +" Empty line +syntax match vifmEmpty /^\s*$/ + +" :highlight clear +syntax match vifmHiClear contained /\s*\<clear\>\s*/ + +" Check spelling only in syntax elements marked with @Spell +syntax spell notoplevel + +" Highlight +highlight link vifmAutocmdCommand Statement +highlight link vifmPatternCommands Statement +highlight link vifmComment Comment +highlight link vifmInlineComment Comment +highlight link vifmCommand Statement +highlight link vifmPrefixCommands Statement +highlight link vifmCdCommand Statement +highlight link vifmCmdCommand Statement +highlight link vifmColoCommand Statement +highlight link vifmHiCommand Statement +highlight link vifmHiClear Statement +highlight link vifmInvertCommand Statement +highlight link vifmMarkCommand Statement +highlight link vifmFtCommand Statement +highlight link vifmExprCommand Statement +highlight link vifmNormalCommand Statement +highlight link vifmLetCommand Statement +highlight link vifmUnletCommand Statement +highlight link vifmSetCommand Statement +highlight link vifmSoCommand Statement +highlight link vifmBuiltinFunction Function +highlight link vifmOperator Operator +highlight link vifmMap Statement +highlight link vifmCMapAbbr Statement +highlight link vifmHiArgs Type +highlight link vifmAutoEvent Type +highlight link vifmHiGroups Identifier +highlight link vifmPattern String +highlight link vifmHiStyles PreProc +highlight link vifmHiColors Special +highlight link vifmOption PreProc +highlight link vifmNotation Special +highlight link vifmString String +highlight link vifmStringInExpr String +highlight link vifmEnvVar PreProc +highlight link vifmNumber Number + +let &cpo = s:cpo_save +unlet s:cpo_save + +" vim: set tabstop=2 softtabstop=2 shiftwidth=2 noexpandtab cinoptions-=(0 : + +endif |