diff --git a/melodactyl/contrib/vim/syntax/melodactyl.vim b/melodactyl/contrib/vim/syntax/melodactyl.vim deleted file mode 100644 index ba809193..00000000 --- a/melodactyl/contrib/vim/syntax/melodactyl.vim +++ /dev/null @@ -1,110 +0,0 @@ -" Vim syntax file -" Language: Melodactyl configuration file -" Maintainer: Doug Kearns - -" TODO: make this melodactyl specific - shared dactyl config? - -if exists("b:current_syntax") - finish -endif - -let s:cpo_save = &cpo -set cpo&vim - -syn include @javascriptTop syntax/javascript.vim -unlet b:current_syntax - -syn include @cssTop syntax/css.vim -unlet b:current_syntax - -syn match melodactylCommandStart "\%(^\s*:\=\)\@<=" nextgroup=melodactylCommand,melodactylAutoCmd - -syn keyword melodactylCommand run ab[breviate] abc[lear] addo[ns] au[tocmd] ba[ck] bd[elete] bw[ipeout] bun[load] - \ tabc[lose] bma[rk] bmarks b[uffer] buffers files ls tabs ca[bbrev] cabc[lear] cd chd[ir] clistk[eys] clk cm[ap] cmapc[lear] - \ cno[remap] colo[rscheme] comc[lear] com[mand] contexts cuna[bbrev] cunm[ap] delbm[arks] delc[ommand] delmac[ros] delm[arks] - \ delqm[arks] dels[tyle] dia[log] displayp[ane] dp[ane] dpope[n] doautoa[ll] do[autocmd] downl[oads] dl dpcl[ose] ec[ho] - \ echoe[rr] echom[sg] el[se] elsei[f] elif em[enu] en[dif] fi exe[cute] exta[dd] extde[lete] extd[isable] exte[nable] - \ extens[ions] exts exto[ptions] extp[references] extu[pdate] f[ilter] fini[sh] fo[rward] fw frameo[nly] ha[rdcopy] h[elp] - \ helpa[ll] hi[ghlight] hist[ory] hs ia[bbrev] iabc[lear] if ilistk[eys] ilk im[ap] imapc[lear] ino[remap] iuna[bbrev] - \ iunm[ap] javas[cript] js ju[mps] keepa[lt] let listc[ommands] lc listk[eys] lk listo[ptions] lo load loadplugins lpl macros - \ map mapc[lear] ma[rk] marks mediav[iew] mes[sages] messc[lear] mkm[elodactylrc] nlistk[eys] nlk nm[ap] nmapc[lear] - \ nno[remap] noh[lfind] no[remap] norm[al] nunm[ap] o[pen] pa[geinfo] pagest[yle] pas playern[ext] playerpa[use] playerp[lay] - \ playerpr[ev] players[top] plistk[eys] plk pm[ap] pmapc[lear] pno[remap] pref[erences] prefs punm[ap] pw[d] qma[rk] qmarks - \ qu[eue] q[uit] quita[ll] qa[ll] redr[aw] re[load] reloada[ll] res[tart] runt[ime] sav[eas] w[rite] scrip[tnames] see[k] - \ se[t] setg[lobal] setl[ocal] sil[ent] sort[view] so[urce] st[op] stopa[ll] sty[le] styled[isable] styd[isable] - \ stylee[nable] stye[nable] stylet[oggle] styt[oggle] tab taba[ttach] tabde[tach] tabd[o] bufd[o] tabdu[plicate] tabl[ast] - \ bl[ast] tabm[ove] tabn[ext] tn[ext] bn[ext] tabo[nly] tabopen t[open] tabnew tabp[revious] tp[revious] tabN[ext] tN[ext] - \ bp[revious] bN[ext] tabr[ewind] tabfir[st] br[ewind] bf[irst] time tlistk[eys] tlk tm[ap] tmapc[lear] tno[remap] - \ toolbarh[ide] tbh[ide] toolbars[how] tbs[how] toolbart[oggle] tbt[oggle] tunm[ap] una[bbreviate] unl[et] unm[ap] verb[ose] - \ ve[rsion] vie[wsource] vlistk[eys] vlk vm[ap] vmapc[lear] vno[remap] vol[ume] vunm[ap] wqa[ll] wq xa[ll] y[ank] zo[om] - \ contained - -syn match melodactylCommand "!" contained - -syn keyword melodactylAutoCmd au[tocmd] contained nextgroup=melodactylAutoEventList skipwhite - -syn keyword melodactylAutoEvent BookmarkAdd ColorScheme DOMLoad DownloadPost Fullscreen LocationChange PageLoadPre PageLoad - \ ShellCmdPost TrackChangePre TrackChange ViewChangePre ViewChange StreamStart StreamPause StreamEnd StreamStop Enter - \ LeavePre Leave - \ contained - -syn match melodactylAutoEventList "\(\a\+,\)*\a\+" contained contains=melodactylAutoEvent - -syn region melodactylSet matchgroup=melodactylCommand start="\%(^\s*:\=\)\@<=\<\%(setl\%[ocal]\|setg\%[lobal]\|set\=\)\=\>" - \ end="$" keepend oneline contains=melodactylOption,melodactylString - -syn keyword melodactylOption activate act altwildmode awim autocomplete au cdpath cd complete cpt defsearch ds editor - \ encoding enc eventignore ei extendedhinttags eht fileencoding fenc findcase fc followhints fh guioptions go helpfile hf - \ hintinputs hin hintkeys hk hintmatching hm hinttags ht hinttimeout hto history hi loadplugins lpl mapleader ml maxitems - \ messages msgs newtab nextpattern pageinfo pa passkeys pk popups pps previouspattern repeat runtimepath rtp scroll scr shell - \ sh shellcmdflag shcf showstatuslinks ssli showtabline stal suggestengines titlestring urlseparator urlsep us verbose vbs - \ wildanchor wia wildcase wic wildignore wig wildmode wim wildsort wis wordseparators wsp - \ contained nextgroup=melodactylSetMod - -let s:toggleOptions = ["banghist", "bh", "errorbells", "eb", "exrc", "ex", "fullscreen", "fs", "hlfind", "hlf", "incfind", - \ "if", "insertmode", "im", "jsdebugger", "jsd", "more", "online", "showmode", "smd", "shuffle", "strictfocus", "sf", - \ "usermode", "um", "visualbell", "vb"] -execute 'syn match melodactylOption "\<\%(no\|inv\)\=\%(' . - \ join(s:toggleOptions, '\|') . - \ '\)\>!\=" contained nextgroup=melodactylSetMod' - -syn match melodactylSetMod "\%(\<[a-z_]\+\)\@<=&" contained - -syn region melodactylJavaScript start="\%(^\s*\%(javascript\|js\)\s\+\)\@<=" end="$" contains=@javascriptTop keepend oneline -syn region melodactylJavaScript matchgroup=melodactylJavaScriptDelimiter - \ start="\%(^\s*\%(javascript\|js\)\s\+\)\@<=<<\s*\z(\h\w*\)"hs=s+2 end="^\z1$" contains=@javascriptTop fold - -let s:cssRegionStart = '\%(^\s*sty\%[le]!\=\s\+\%(-\%(n\|name\)\%(\s\+\|=\)\S\+\s\+\)\=[^-]\S\+\s\+\)\@<=' -execute 'syn region melodactylCss start="' . s:cssRegionStart . '" end="$" contains=@cssTop keepend oneline' -execute 'syn region melodactylCss matchgroup=melodactylCssDelimiter' - \ 'start="' . s:cssRegionStart . '<<\s*\z(\h\w*\)"hs=s+2 end="^\z1$" contains=@cssTop fold' - -syn match melodactylNotation "<[0-9A-Za-z-]\+>" - -syn match melodactylComment +".*$+ contains=melodactylTodo,@Spell -syn keyword melodactylTodo FIXME NOTE TODO XXX contained - -syn region melodactylString start="\z(["']\)" end="\z1" skip="\\\\\|\\\z1" oneline - -syn match melodactylLineComment +^\s*".*$+ contains=melodactylTodo,@Spell - -" NOTE: match vim.vim highlighting group names -hi def link melodactylAutoCmd melodactylCommand -hi def link melodactylAutoEvent Type -hi def link melodactylCommand Statement -hi def link melodactylComment Comment -hi def link melodactylJavaScriptDelimiter Delimiter -hi def link melodactylCssDelimiter Delimiter -hi def link melodactylNotation Special -hi def link melodactylLineComment Comment -hi def link melodactylOption PreProc -hi def link melodactylSetMod melodactylOption -hi def link melodactylString String -hi def link melodactylTodo Todo - -let b:current_syntax = "melodactyl" - -let &cpo = s:cpo_save -unlet s:cpo_save - -" vim: tw=130 et ts=4 sw=4: diff --git a/pentadactyl/contrib/vim/syntax/pentadactyl.vim b/pentadactyl/contrib/vim/syntax/pentadactyl.vim deleted file mode 100644 index fe4eeabf..00000000 --- a/pentadactyl/contrib/vim/syntax/pentadactyl.vim +++ /dev/null @@ -1,110 +0,0 @@ -" Vim syntax file -" Language: Pentadactyl configuration file -" Maintainer: Doug Kearns - -" TODO: make this pentadactyl specific - shared dactyl config? - -if exists("b:current_syntax") - finish -endif - -let s:cpo_save = &cpo -set cpo&vim - -syn include @javascriptTop syntax/javascript.vim -unlet b:current_syntax - -syn include @cssTop syntax/css.vim -unlet b:current_syntax - -syn match pentadactylCommandStart "\%(^\s*:\=\)\@<=" nextgroup=pentadactylCommand,pentadactylAutoCmd - -syn keyword pentadactylCommand run ab[breviate] abc[lear] addo[ns] au[tocmd] ba[ck] bd[elete] bw[ipeout] bun[load] - \ tabc[lose] bma[rk] bmarks b[uffer] buffers files ls tabs ca[bbrev] cabc[lear] cd chd[ir] clistk[eys] clk cm[ap] cmapc[lear] - \ cno[remap] colo[rscheme] comc[lear] com[mand] contexts cookies ck cuna[bbrev] cunm[ap] delbm[arks] delc[ommand] delmac[ros] - \ delm[arks] delqm[arks] dels[tyle] dia[log] doautoa[ll] do[autocmd] downl[oads] dl ec[ho] echoe[rr] echom[sg] el[se] - \ elsei[f] elif em[enu] en[dif] fi exe[cute] exta[dd] extde[lete] extd[isable] exte[nable] extens[ions] exts exto[ptions] - \ extp[references] extu[pdate] fini[sh] fo[rward] fw frameo[nly] ha[rdcopy] h[elp] helpa[ll] hi[ghlight] hist[ory] hs - \ ia[bbrev] iabc[lear] if ilistk[eys] ilk im[ap] imapc[lear] ino[remap] iuna[bbrev] iunm[ap] javas[cript] js ju[mps] - \ keepa[lt] let listc[ommands] lc listk[eys] lk listo[ptions] lo loadplugins lpl macros map mapc[lear] ma[rk] marks - \ mes[sages] messc[lear] mkp[entadactylrc] nlistk[eys] nlk nm[ap] nmapc[lear] nno[remap] noh[lfind] no[remap] norm[al] - \ nunm[ap] o[pen] pa[geinfo] pagest[yle] pas pref[erences] prefs pw[d] qma[rk] qmarks q[uit] quita[ll] qa[ll] redr[aw] - \ re[load] reloada[ll] res[tart] runt[ime] sa[nitize] sav[eas] w[rite] sbcl[ose] scrip[tnames] se[t] setg[lobal] - \ setl[ocal] sideb[ar] sb[ar] sbope[n] sil[ent] so[urce] st[op] stopa[ll] sty[le] styled[isable] styd[isable] - \ stylee[nable] stye[nable] stylet[oggle] styt[oggle] tab taba[ttach] tabde[tach] tabd[o] bufd[o] tabdu[plicate] - \ tabl[ast] bl[ast] tabm[ove] tabn[ext] tn[ext] bn[ext] tabo[nly] tabopen t[open] tabnew tabp[revious] tp[revious] - \ tabN[ext] tN[ext] bp[revious] bN[ext] tabr[ewind] tabfir[st] br[ewind] bf[irst] time tlistk[eys] tlk tm[ap] tmapc[lear] - \ tno[remap] toolbarh[ide] tbh[ide] toolbars[how] tbs[how] toolbart[oggle] tbt[oggle] tunm[ap] una[bbreviate] u[ndo] - \ undoa[ll] unl[et] unm[ap] verb[ose] ve[rsion] vie[wsource] vlistk[eys] vlk vm[ap] vmapc[lear] vno[remap] vunm[ap] - \ winc[lose] wc[lose] wind[ow] winon[ly] wino[pen] wo[pen] wqa[ll] wq xa[ll] y[ank] zo[om] - \ contained - -syn match pentadactylCommand "!" contained - -syn keyword pentadactylAutoCmd au[tocmd] contained nextgroup=pentadactylAutoEventList skipwhite - -syn keyword pentadactylAutoEvent BookmarkAdd BookmarkChange BookmarkRemove ColorScheme DOMLoad DownloadPost Fullscreen - \ LocationChange PageLoadPre PageLoad PrivateMode Sanitize ShellCmdPost Enter LeavePre Leave - \ contained - -syn match pentadactylAutoEventList "\(\a\+,\)*\a\+" contained contains=pentadactylAutoEvent - -syn region pentadactylSet matchgroup=pentadactylCommand start="\%(^\s*:\=\)\@<=\<\%(setl\%[ocal]\|setg\%[lobal]\|set\=\)\=\>" - \ end="$" keepend oneline contains=pentadactylOption,pentadactylString - -syn keyword pentadactylOption activate act altwildmode awim autocomplete au cdpath cd complete cpt cookieaccept ca - \ cookielifetime cl cookies ck defsearch ds editor encoding enc eventignore ei extendedhinttags eht fileencoding fenc - \ findcase fc followhints fh guioptions go helpfile hf hintinputs hin hintkeys hk hintmatching hm hinttags ht hinttimeout hto - \ history hi loadplugins lpl mapleader ml maxitems messages msgs newtab nextpattern pageinfo pa passkeys pk popups pps - \ previouspattern runtimepath rtp sanitizeitems si sanitizeshutdown ss sanitizetimespan sts scroll scr shell sh shellcmdflag - \ shcf showstatuslinks ssli showtabline stal suggestengines titlestring urlseparator urlsep us verbose vbs wildanchor wia - \ wildcase wic wildignore wig wildmode wim wildsort wis wordseparators wsp - \ contained nextgroup=pentadactylSetMod - -let s:toggleOptions = ["banghist", "bh", "errorbells", "eb", "exrc", "ex", "fullscreen", "fs", "hlfind", "hlf", "incfind", - \ "if", "insertmode", "im", "jsdebugger", "jsd", "more", "online", "private", "pornmode", "showmode", "smd", "strictfocus", - \ "sf", "usermode", "um", "visualbell", "vb"] -execute 'syn match pentadactylOption "\<\%(no\|inv\)\=\%(' . - \ join(s:toggleOptions, '\|') . - \ '\)\>!\=" contained nextgroup=pentadactylSetMod' - -syn match pentadactylSetMod "\%(\<[a-z_]\+\)\@<=&" contained - -syn region pentadactylJavaScript start="\%(^\s*\%(javascript\|js\)\s\+\)\@<=" end="$" contains=@javascriptTop keepend oneline -syn region pentadactylJavaScript matchgroup=pentadactylJavaScriptDelimiter - \ start="\%(^\s*\%(javascript\|js\)\s\+\)\@<=<<\s*\z(\h\w*\)"hs=s+2 end="^\z1$" contains=@javascriptTop fold - -let s:cssRegionStart = '\%(^\s*sty\%[le]!\=\s\+\%(-\%(n\|name\)\%(\s\+\|=\)\S\+\s\+\)\=[^-]\S\+\s\+\)\@<=' -execute 'syn region pentadactylCss start="' . s:cssRegionStart . '" end="$" contains=@cssTop keepend oneline' -execute 'syn region pentadactylCss matchgroup=pentadactylCssDelimiter' - \ 'start="' . s:cssRegionStart . '<<\s*\z(\h\w*\)"hs=s+2 end="^\z1$" contains=@cssTop fold' - -syn match pentadactylNotation "<[0-9A-Za-z-]\+>" - -syn match pentadactylComment +".*$+ contains=pentadactylTodo,@Spell -syn keyword pentadactylTodo FIXME NOTE TODO XXX contained - -syn region pentadactylString start="\z(["']\)" end="\z1" skip="\\\\\|\\\z1" oneline - -syn match pentadactylLineComment +^\s*".*$+ contains=pentadactylTodo,@Spell - -" NOTE: match vim.vim highlighting group names -hi def link pentadactylAutoCmd pentadactylCommand -hi def link pentadactylAutoEvent Type -hi def link pentadactylCommand Statement -hi def link pentadactylComment Comment -hi def link pentadactylJavaScriptDelimiter Delimiter -hi def link pentadactylCssDelimiter Delimiter -hi def link pentadactylNotation Special -hi def link pentadactylLineComment Comment -hi def link pentadactylOption PreProc -hi def link pentadactylSetMod pentadactylOption -hi def link pentadactylString String -hi def link pentadactylTodo Todo - -let b:current_syntax = "pentadactyl" - -let &cpo = s:cpo_save -unlet s:cpo_save - -" vim: tw=130 et ts=4 sw=4: diff --git a/teledactyl/contrib/vim/syntax/teledactyl.vim b/teledactyl/contrib/vim/syntax/teledactyl.vim deleted file mode 100644 index 769720f0..00000000 --- a/teledactyl/contrib/vim/syntax/teledactyl.vim +++ /dev/null @@ -1,103 +0,0 @@ -" Vim syntax file -" Language: Teledactyl configuration file -" Maintainer: Doug Kearns - -" TODO: make this teledactyl specific - shared dactyl config? - -if exists("b:current_syntax") - finish -endif - -let s:cpo_save = &cpo -set cpo&vim - -syn include @javascriptTop syntax/javascript.vim -unlet b:current_syntax - -syn include @cssTop syntax/css.vim -unlet b:current_syntax - -syn match teledactylCommandStart "\%(^\s*:\=\)\@<=" nextgroup=teledactylCommand,teledactylAutoCmd - -syn keyword teledactylCommand run ab[breviate] abc[lear] addo[ns] au[tocmd] bd[elete] bw[ipeout] bun[load] tabc[lose] - \ ca[bbrev] cabc[lear] cd chd[ir] clistk[eys] clk cm[ap] cmapc[lear] cno[remap] colo[rscheme] comc[lear] com[mand] con[tact] - \ contacts addr[essbook] contexts copy[to] cuna[bbrev] cunm[ap] delc[ommand] delmac[ros] delm[arks] dels[tyle] dia[log] - \ doautoa[ll] do[autocmd] ec[ho] echoe[rr] echom[sg] el[se] elsei[f] elif em[enu] empty[trash] en[dif] fi exe[cute] exta[dd] - \ extde[lete] extd[isable] exte[nable] extens[ions] exts exto[ptions] extp[references] extu[pdate] fini[sh] frameo[nly] - \ get[messages] go[to] ha[rdcopy] h[elp] helpa[ll] hi[ghlight] ia[bbrev] iabc[lear] if ilistk[eys] ilk im[ap] imapc[lear] - \ ino[remap] iuna[bbrev] iunm[ap] javas[cript] js keepa[lt] let listc[ommands] lc listk[eys] lk listo[ptions] lo loadplugins - \ lpl macros m[ail] map mapc[lear] ma[rk] marks mes[sages] messc[lear] mkt[eledactylrc] move[to] nlistk[eys] nlk nm[ap] - \ nmapc[lear] nno[remap] noh[lfind] no[remap] norm[al] nunm[ap] pa[geinfo] pagest[yle] pas pref[erences] prefs pw[d] q[uit] - \ re[load] res[tart] runt[ime] sav[eas] w[rite] scrip[tnames] se[t] setg[lobal] setl[ocal] sil[ent] so[urce] st[op] sty[le] - \ styled[isable] styd[isable] stylee[nable] stye[nable] stylet[oggle] styt[oggle] tab tabd[o] bufd[o] tabl[ast] bl[ast] - \ tabn[ext] tn[ext] bn[ext] tabp[revious] tp[revious] tabN[ext] tN[ext] bp[revious] bN[ext] tabr[ewind] tabfir[st] br[ewind] - \ bf[irst] time tlistk[eys] tlk tm[ap] tmapc[lear] tno[remap] tunm[ap] una[bbreviate] unl[et] unm[ap] verb[ose] ve[rsion] - \ vie[wsource] vlistk[eys] vlk vm[ap] vmapc[lear] vno[remap] vunm[ap] y[ank] zo[om] - \ contained - -syn match teledactylCommand "!" contained - -syn keyword teledactylAutoCmd au[tocmd] contained nextgroup=teledactylAutoEventList skipwhite - -syn keyword teledactylAutoEvent DOMLoad FolderLoad PageLoadPre PageLoad Enter Leave LeavePre contained - -syn match teledactylAutoEventList "\(\a\+,\)*\a\+" contained contains=teledactylAutoEvent - -syn region teledactylSet matchgroup=teledactylCommand start="\%(^\s*:\=\)\@<=\<\%(setl\%[ocal]\|setg\%[lobal]\|set\=\)\=\>" - \ end="$" keepend oneline contains=teledactylOption,teledactylString - -syn keyword teledactylOption altwildmode awim archivefolder autocomplete au cdpath cd complete cpt editor eventignore ei - \ extendedhinttags eht fileencoding fenc findcase fc followhints fh guioptions go helpfile hf hintinputs hin hintkeys hk - \ hintmatching hm hinttags ht hinttimeout hto history hi layout loadplugins lpl mapleader ml maxitems messages msgs - \ nextpattern pageinfo pa passkeys pk previouspattern runtimepath rtp scroll scr shell sh shellcmdflag shcf showstatuslinks - \ ssli showtabline stal smtpserver smtp titlestring urlseparator urlsep us verbose vbs wildanchor wia wildcase wic wildignore - \ wig wildmode wim wildsort wis wordseparators wsp - \ contained nextgroup=teledactylSetMod - -let s:toggleOptions = ["autoexternal", "ae", "banghist", "bh", "errorbells", "eb", "exrc", "ex", "fullscreen", "fs", - \ "hlfind", "hlf", "incfind", "if", "insertmode", "im", "jsdebugger", "jsd", "more", "online", "showmode", "smd", - \ "strictfocus", "sf", "usermode", "um", "visualbell", "vb"] -execute 'syn match teledactylOption "\<\%(no\|inv\)\=\%(' . - \ join(s:toggleOptions, '\|') . - \ '\)\>!\=" contained nextgroup=teledactylSetMod' - -syn match teledactylSetMod "\%(\<[a-z_]\+\)\@<=&" contained - -syn region teledactylJavaScript start="\%(^\s*\%(javascript\|js\)\s\+\)\@<=" end="$" contains=@javascriptTop keepend oneline -syn region teledactylJavaScript matchgroup=teledactylJavaScriptDelimiter - \ start="\%(^\s*\%(javascript\|js\)\s\+\)\@<=<<\s*\z(\h\w*\)"hs=s+2 end="^\z1$" contains=@javascriptTop fold - -let s:cssRegionStart = '\%(^\s*sty\%[le]!\=\s\+\%(-\%(n\|name\)\%(\s\+\|=\)\S\+\s\+\)\=[^-]\S\+\s\+\)\@<=' -execute 'syn region teledactylCss start="' . s:cssRegionStart . '" end="$" contains=@cssTop keepend oneline' -execute 'syn region teledactylCss matchgroup=teledactylCssDelimiter' - \ 'start="' . s:cssRegionStart . '<<\s*\z(\h\w*\)"hs=s+2 end="^\z1$" contains=@cssTop fold' - -syn match teledactylNotation "<[0-9A-Za-z-]\+>" - -syn match teledactylComment +".*$+ contains=teledactylTodo,@Spell -syn keyword teledactylTodo FIXME NOTE TODO XXX contained - -syn region teledactylString start="\z(["']\)" end="\z1" skip="\\\\\|\\\z1" oneline - -syn match teledactylLineComment +^\s*".*$+ contains=teledactylTodo,@Spell - -" NOTE: match vim.vim highlighting group names -hi def link teledactylAutoCmd teledactylCommand -hi def link teledactylAutoEvent Type -hi def link teledactylCommand Statement -hi def link teledactylComment Comment -hi def link teledactylJavaScriptDelimiter Delimiter -hi def link teledactylCssDelimiter Delimiter -hi def link teledactylNotation Special -hi def link teledactylLineComment Comment -hi def link teledactylOption PreProc -hi def link teledactylSetMod teledactylOption -hi def link teledactylString String -hi def link teledactylTodo Todo - -let b:current_syntax = "teledactyl" - -let &cpo = s:cpo_save -unlet s:cpo_save - -" vim: tw=130 et ts=4 sw=4: