diff --git a/ftplugin/template.vim b/ftplugin/template.vim index 2396d92..a5e5d80 100644 --- a/ftplugin/template.vim +++ b/ftplugin/template.vim @@ -2,23 +2,24 @@ " File: ftplugin/template.vim " Author: Luc Hermitte " -" Version: 2.3.0 +" Version: 3.5.3 " Created: 13th nov 2002 -" Last Update: $Date$ +" Last Update: 27th Nov 2015 "------------------------------------------------------------------------ " Description: ftplugin for mu-template's template files " It makes sure that the syntax coloration and ftplugins loaded match the " filetype aimed by the template file, while &filetype values 'template'. -" +" "------------------------------------------------------------------------ -" History: +" History: +" v3.5.3. Syntax file for templates that embeds some of vim syntax +" v2.3.0. +" n_CTRL-W_f overriden to follow s:Include() calls in template-files. " 30th May 2004: v1.02 " Installation comment changed. -> better recognition of the target ft " 16th Apr 2006: v1.0.0 " empty b:ft won't load every ftplugin -" v2.3.0. -" n_CTRL-W_f overriden to follow s:Include() calls in template-files. -" TODO: +" TODO: " (*) Auto install the patch for $HOME/.vim/filetype.vim: " Hint: source a hook for template files from filetype.vim, and check " filetype.vim sources the hook. @@ -41,6 +42,7 @@ if exists('b:ft') && strlen(b:ft) && b:ft != 'template' exe 'runtime! syntax/'.b:ft.'.vim' exe 'runtime! ftplugin/'.b:ft.'.vim ftplugin/'.b:ft.'_*.vim ftplugin/'.b:ft.'/*.vim' endif +runtime syntax/template.vim nnoremap f :call OpenFile() diff --git a/syntax/template.vim b/syntax/template.vim new file mode 100644 index 0000000..d82de5d --- /dev/null +++ b/syntax/template.vim @@ -0,0 +1,320 @@ +"============================================================================= +" File: syntax/template.vim {{{1 +" Author: Luc Hermitte +" +" Version: 3.5.3. +let s:k_version = '353' +" Created: 27th Nov 2015 +" Last Update: +"------------------------------------------------------------------------ +" Description: +" Syntax file for mu-template template-files +" +" +" Most of this code is stolen from Charles E. Campbell's syntax.vim file +" v7.4-35. +"------------------------------------------------------------------------ +" History: «history» +" TODO: «missing features» +" }}}1 +"============================================================================= + +" Quit when a syntax file was already loaded {{{1 +let s:keepcpo= &cpo +set cpo&vim + +syn keyword mutMuT contained MuT VimL +" Only the commands that make sense in template-file. +syn cluster vimCommandList contains=vimLet,vimCall + +"------------------------------------------------------------------------ +" Automatically generated keyword lists: {{{1 +" vimTodo: contains common special-notices for comments {{{2 +" Use the vimCommentGroup cluster to add your own. +syn keyword vimTodo contained COMBAK FIXME TODO XXX +syn cluster vimCommentGroup contains=vimTodo,@Spell + + +" regular vim commands {{{2 +syn keyword vimCommand contained retu[rn] call[l] exe[cute] +" Function Names {{{2 +syn keyword vimFuncName contained abs and argidx asin browse buflisted bufnr byteidx ceil cindent complete confirm cosh cursor did_filetype empty eventhandler exists expr8 filereadable finddir floor fnamemodify foldlevel foreground get getchar getcmdline getcmdwintype getfontname getftime getloclist getpos getregtype getwinposx glob has hasmapto histget hlID indent inputdialog inputsave invert items len line localtime luaeval mapcheck matchaddpos matchend max mode nr2char pow pumvisible range reltimestr remote_peek remove resolve screenattr screenrow searchpair server2client setcharsearch setloclist setqflist settabwinvar shellescape sin soundfold split str2float strchars strftime string strpart strtrans submatch synconcealed synIDattr synstack systemlist tabpagenr tagfiles tan tempname toupper trunc undofile uniq virtcol wildmenumode wincol winline winrestcmd winsaveview writefile +syn keyword vimFuncName contained acos append arglistid atan browsedir bufloaded bufwinnr byteidxcomp changenr clearmatches complete_add copy count deepcopy diff_filler escape executable exp extend filewritable findfile fmod foldclosed foldtext function getbufline getcharmod getcmdpos getcurpos getfperm getftype getmatches getqflist gettabvar getwinposy glob2regpat has_key histadd histnr hostname index inputlist inputsecret isdirectory join libcall line2byte log map match matcharg matchlist min mzeval or prevnonblank py3eval readfile remote_expr remote_read rename reverse screenchar search searchpairpos serverlist setcmdpos setmatches setreg setwinvar shiftwidth sinh spellbadword sqrt str2nr strdisplaywidth stridx strlen strridx strwidth substitute synID synIDtrans system tabpagebuflist tabpagewinnr taglist tanh tolower tr type undotree values visualmode winbufnr winheight winnr winrestview winwidth xor +syn keyword vimFuncName contained add argc argv atan2 bufexists bufname byte2line call char2nr col complete_check cos cscope_connection delete diff_hlID eval exepath expand feedkeys filter float2nr fnameescape foldclosedend foldtextresult garbagecollect getbufvar getcharsearch getcmdtype getcwd getfsize getline getpid getreg gettabwinvar getwinvar globpath haslocaldir histdel hlexists iconv input inputrestore insert islocked keys libcallnr lispindent log10 maparg matchadd matchdelete matchstr mkdir nextnonblank pathshorten printf pyeval reltime remote_foreground remote_send repeat round screencol searchdecl searchpos setbufvar setline setpos settabvar sha256 simplify sort spellsuggest + +"--- syntax here and above generated by mkvimvim --- +" Special Vim Highlighting (not automatic) {{{1 +" Numbers {{{2 +" ======= +syn match vimNumber "\<\d\+\%(\.\d\+\%([eE][+-]\=\d\+\)\=\)\=" skipwhite nextgroup=vimGlobal,vimSubst,vimCommand +syn match vimNumber "-\d\+\%(\.\d\+\%([eE][+-]\=\d\+\)\=\)\=" skipwhite nextgroup=vimGlobal,vimSubst,vimCommand +syn match vimNumber "\<0[xX]\x\+" +syn match vimNumber "\%(^\|[^a-zA-Z]\)\zs#\x\{6}" + +" All vimCommands are contained by vimIsCommands. {{{2 +syn match vimCmdSep "[:|]\+" skipwhite nextgroup=vimAddress,vimAutoCmd,vimCommand,vimExtCmd,vimFilter,vimLet,vimMap,vimMark,vimSet,vimSyntax,vimUserCmd +syn match vimIsCommand "\<\h\w*\>" contains=vimCommand +syn match vimVar contained "\<\h[a-zA-Z0-9#_]*\>" +syn match vimVar "\<[bwglsav]:\h[a-zA-Z0-9#_]*\>" +syn match vimFBVar contained "\<[bwglsav]:\h[a-zA-Z0-9#_]*\>" +syn keyword vimCommand contained in + +" Operators: {{{2 +" ========= +" COMBAK: vimOperParen used to have "oneline" +syn cluster vimOperGroup contains=vimEnvvar,vimFunc,vimFuncVar,vimOper,vimOperParen,vimNumber,vimString,vimRegister,vimContinue +syn match vimOper "\(==\|!=\|>=\|<=\|=\~\|!\~\|>\|<\|=\)[?#]\{0,2}" skipwhite nextgroup=vimString,vimSpecFile +syn match vimOper "||\|&&\|[-+.]" skipwhite nextgroup=vimString,vimSpecFile +syn region vimOperParen matchgroup=vimParenSep start="(" end=")" contains=@vimOperGroup +syn region vimOperParen matchgroup=vimSep start="{" end="}" contains=@vimOperGroup nextgroup=vimVar,vimFuncVar +if !exists("g:vimsyn_noerror") && !exists("g:vimsyn_noopererror") + syn match vimOperError ")" +endif + +" Functions : Tag is provided for those who wish to highlight tagged functions {{{2 +syn cluster vimFuncList contains=vimCommand,vimFunctionError,vimFuncKey,Tag,vimFuncSID +syn match vimFuncSID contained "\c\|\!\\@]"+lc=1 skip=+\\\\\|\\"+ end=+"+ contains=@vimStringGroup +syn region vimString oneline keepend start=+[^:a-zA-Z>!\\@]'+lc=1 end=+'+ +syn region vimString oneline start=+=!+lc=1 skip=+\\\\\|\\!+ end=+!+ contains=@vimStringGroup +syn region vimString oneline start="=+"lc=1 skip="\\\\\|\\+" end="+" contains=@vimStringGroup +syn region vimString oneline start="\s/\s*\A"lc=1 skip="\\\\\|\\+" end="/" contains=@vimStringGroup +syn match vimString contained +"[^"]*\\$+ skipnl nextgroup=vimStringCont +syn match vimStringCont contained +\(\\\\\|.\)\{-}[^\\]"+ + +" 'String': {{{2 +syn match vimString "[^(,]'[^']\{-}\zs'" + +" Echo and Execute -- prefer strings! {{{2 +" ================ +syn region vimExecute oneline excludenl matchgroup=vimCommand start="\" skip="\(\\\\\)*\\|" end="$\||\|<[cC][rR]>" contains=vimFuncVar,vimIsCommand,vimOper,vimNotation,vimOperParen,vimString,vimVar + + +" Angle-Bracket Notation (tnx to Michael Geddes) {{{2 +" ====================== +syn case ignore +syn match vimNotation "\(\\\|\)\=<\([scamd]-\)\{0,4}x\=\(f\d\{1,2}\|[^ \t:]\|cr\|lf\|linefeed\|return\|k\=del\%[ete]\|bs\|backspace\|tab\|esc\|right\|left\|help\|undo\|insert\|ins\|k\=home\|k\=end\|kplus\|kminus\|kdivide\|kmultiply\|kenter\|kpoint\|space\|k\=\(page\)\=\(\|down\|up\|k\d\>\)\)>" contains=vimBracket +syn match vimNotation "\(\\\|\)\=<\([scam2-4]-\)\{0,4}\(right\|left\|middle\)\(mouse\)\=\(drag\|release\)\=>" contains=vimBracket +syn match vimNotation "\(\\\|\)\=<\(bslash\|plug\|sid\|space\|bar\|nop\|nul\|lt\)>" contains=vimBracket +syn match vimNotation '\(\\\|\)\=[0-9a-z"%#:.\-=]'he=e-1 contains=vimBracket +syn match vimNotation '\(\\\|\)\=<\%(q-\)\=\(line[12]\|count\|bang\|reg\|args\|f-args\|lt\)>' contains=vimBracket +syn match vimNotation "\(\\\|\)\=<\([cas]file\|abuf\|amatch\|cword\|cWORD\|client\)>" contains=vimBracket +syn match vimBracket contained "[\\<>]" +syn case match + +" Let {{{2 +" === +syn keyword vimLet let unl[et] skipwhite nextgroup=vimVar,vimFuncVar contained + +" Additional IsCommand, here by reasons of precedence {{{2 +" ==================== +syn match vimIsCommand "\s*\a\+" transparent contains=vimCommand,vimNotation + +" Beginners - Patterns that involve ^ {{{2 +" Modified for syntax/template.vim +" ========= +syn match vimLineComment +[ \t:]*".*$+ contains=@vimCommentGroup,vimCommentString,vimCommentTitle contained +syn match vimCommentTitle '"\s*\%([sS]:\|\h\w*#\)\=\u\w*\(\s\+\u\w*\)*:'hs=s+1 contained contains=vimCommentTitleLeader,vimTodo,@vimCommentGroup +" syn match vimContinue "^\s*\\" +syn region vimString start="^\s*\\\z(['"]\)" skip='\\\\\|\\\z1' end="\z1" oneline keepend contains=@vimStringGroup,vimContinue +syn match vimCommentTitleLeader '"\s\+'ms=s+1 contained + + +" Highlighting Settings {{{2 +" ==================== + + +if !exists("g:vimsyn_noerror") + hi def link vimBehaveError vimError + hi def link vimCollClassErr vimError + hi def link vimErrSetting vimError + hi def link vimEmbedError vimError + hi def link vimFTError vimError + hi def link vimFunctionError vimError + hi def link vimFunc vimError + hi def link vimHiAttribList vimError + hi def link vimHiCtermError vimError + hi def link vimHiKeyError vimError + hi def link vimKeyCodeError vimError + hi def link vimMapModErr vimError + hi def link vimSubstFlagErr vimError + hi def link vimSynCaseError vimError + hi def link vimBufnrWarn vimWarn +endif + +hi def link vimAbb vimCommand +hi def link vimAddress vimMark +hi def link vimAugroupError vimError +hi def link vimAugroupKey vimCommand +hi def link vimAuHighlight vimHighlight +hi def link vimAutoCmdOpt vimOption +hi def link vimAutoCmd vimCommand +hi def link vimAutoEvent Type +hi def link vimAutoSet vimCommand +hi def link vimBehaveModel vimBehave +hi def link vimBehave vimCommand +hi def link vimBracket Delimiter +hi def link vimCmplxRepeat SpecialChar +hi def link vimCommand Statement +hi def link vimComment Comment +hi def link vimCommentString vimString +hi def link vimCommentTitle PreProc +hi def link vimCondHL vimCommand +hi def link vimContinue Special +hi def link vimCtrlChar SpecialChar +hi def link vimEchoHLNone vimGroup +hi def link vimEchoHL vimCommand +hi def link vimElseIfErr Error +hi def link vimElseif vimCondHL +hi def link vimEnvvar PreProc +hi def link vimError Error +hi def link vimFBVar vimVar +hi def link vimFgBgAttrib vimHiAttrib +hi def link vimFold Folded +hi def link vimFTCmd vimCommand +hi def link vimFTOption vimSynType +hi def link vimFuncKey vimCommand +hi def link vimFuncName Function +hi def link vimFuncSID Special +hi def link vimFuncVar Identifier +hi def link vimGroupAdd vimSynOption +hi def link vimGroupName vimGroup +hi def link vimGroupRem vimSynOption +hi def link vimGroupSpecial Special +hi def link vimGroup Type +hi def link vimHiAttrib PreProc +hi def link vimHiClear vimHighlight +hi def link vimHiCtermFgBg vimHiTerm +hi def link vimHiCTerm vimHiTerm +hi def link vimHighlight vimCommand +hi def link vimHiGroup vimGroupName +hi def link vimHiGuiFgBg vimHiTerm +hi def link vimHiGuiFont vimHiTerm +hi def link vimHiGuiRgb vimNumber +hi def link vimHiGui vimHiTerm +hi def link vimHiNmbr Number +hi def link vimHiStartStop vimHiTerm +hi def link vimHiTerm Type +hi def link vimHLGroup vimGroup +hi def link vimHLMod PreProc +hi def link vimInsert vimString +hi def link vimKeyCode vimSpecFile +hi def link vimKeyword Statement +hi def link vimLet vimCommand +hi def link vimLineComment vimComment +hi def link vimMapBang vimCommand +hi def link vimMapModKey vimFuncSID +hi def link vimMapMod vimBracket +hi def link vimMap vimCommand +hi def link vimMark Number +hi def link vimMarkNumber vimNumber +hi def link vimMenuMod vimMapMod +hi def link vimMenuNameMore vimMenuName +hi def link vimMenuName PreProc +hi def link vimMtchComment vimComment +hi def link vimNorm vimCommand +hi def link vimNotation Special +hi def link vimNotFunc vimCommand +hi def link vimNotPatSep vimString +hi def link vimNumber Number +hi def link vimOperError Error +hi def link vimOper Operator +hi def link vimOption PreProc +hi def link vimParenSep Delimiter +hi def link vimPatSepErr vimPatSep +hi def link vimPatSepR vimPatSep +hi def link vimPatSep SpecialChar +hi def link vimPatSepZone vimString +hi def link vimPatSepZ vimPatSep +hi def link vimPattern Type +hi def link vimPlainMark vimMark +hi def link vimPlainRegister vimRegister +hi def link vimRegister SpecialChar +hi def link vimScriptDelim Comment +hi def link vimSearchDelim Statement +hi def link vimSearch vimString +hi def link vimSep Delimiter +hi def link vimSetMod vimOption +hi def link vimSetSep Statement +hi def link vimSetString vimString +hi def link vimSpecFile Identifier +hi def link vimSpecFileMod vimSpecFile +hi def link vimSpecial Type +hi def link vimStatement Statement +hi def link vimStringCont vimString +hi def link vimString String +hi def link vimSubst1 vimSubst +hi def link vimSubstDelim Delimiter +hi def link vimSubstFlags Special +hi def link vimSubstSubstr SpecialChar +hi def link vimSubstTwoBS vimString +hi def link vimSubst vimCommand +hi def link vimSynCaseError Error +hi def link vimSynCase Type +hi def link vimSyncC Type +hi def link vimSyncError Error +hi def link vimSyncGroupName vimGroupName +hi def link vimSyncGroup vimGroupName +hi def link vimSyncKey Type +hi def link vimSyncNone Type +hi def link vimSynContains vimSynOption +hi def link vimSynError Error +hi def link vimSynKeyContainedin vimSynContains +hi def link vimSynKeyOpt vimSynOption +hi def link vimSynMtchGrp vimSynOption +hi def link vimSynMtchOpt vimSynOption +hi def link vimSynNextgroup vimSynOption +hi def link vimSynNotPatRange vimSynRegPat +hi def link vimSynOption Special +hi def link vimSynPatRange vimString +hi def link vimSynRegOpt vimSynOption +hi def link vimSynRegPat vimString +hi def link vimSynReg Type +hi def link vimSyntax vimCommand +hi def link vimSynType vimSpecial +hi def link vimTodo Todo +hi def link vimUnmap vimMap +hi def link vimUserAttrbCmpltFunc Special +hi def link vimUserAttrbCmplt vimSpecial +hi def link vimUserAttrbKey vimOption +hi def link vimUserAttrb vimSpecial +hi def link vimUserCmdError Error +hi def link vimUserCommand vimCommand +hi def link vimUserFunc Normal +hi def link vimVar Identifier +hi def link vimWarn WarningMsg + +hi def link mutMuT Special + + +" }}}1 +syn match mutMuTCommand excludenl "\v^(MuT|VimL):\s*" contains=mutMuT skipwhite nextgroup=@vimComment,@vimCommandList,vimLineComment +"------------------------------------------------------------------------ +let &cpo = s:keepcpo +unlet s:keepcpo +"============================================================================= +" vim:ts=18 fdm=marker noexpandtab