?? ocaml.vim
字號:
" Vim syntax file" Language: OCAML" Filenames: *.ml *.mli *.mll *.mly" Maintainers: Markus Mottl <mottl@miss.wu-wien.ac.at>" Karl-Heinz Sylla <Karl-Heinz.Sylla@gmd.de>" URL: http://miss.wu-wien.ac.at/~mottl/vim/syntax/ocaml.vim" Last Change: 2001 May 10" 2001 Feb 19 - small fix for functors" 2000 May 05 - small fix for optional arguments" For version 5.x: Clear all syntax items" For version 6.x: Quit when a syntax file was already loadedif version < 600 syntax clearelseif exists("b:current_syntax") finishendif" OCAML is case sensitive.syn case match" lowercase identifier - the standard way to matchsyn match ocamlLCIdentifier /\<\(\l\|_\)\(\w\|'\)*\>/syn match ocamlKeyChar "|"" Errorssyn match ocamlBraceErr "}"syn match ocamlBrackErr "\]"syn match ocamlParenErr ")"syn match ocamlArrErr "|]"syn match ocamlCommentErr "\*)"syn match ocamlCountErr "\<downto\>"syn match ocamlCountErr "\<to\>"syn match ocamlDoErr "\<do\>"syn match ocamlDoneErr "\<done\>"syn match ocamlThenErr "\<then\>"" Error-highlighting of "end" without synchronization:" as keyword or as error (default)if exists("ocaml_noend_error") syn match ocamlKeyword "\<end\>"else syn match ocamlEndErr "\<end\>"endif" Some convenient clusterssyn cluster ocamlAllErrs contains=ocamlBraceErr,ocamlBrackErr,ocamlParenErr,ocamlCommentErr,ocamlCountErr,ocamlDoErr,ocamlDoneErr,ocamlEndErr,ocamlThenErrsyn cluster ocamlAENoParen contains=ocamlBraceErr,ocamlBrackErr,ocamlCommentErr,ocamlCountErr,ocamlDoErr,ocamlDoneErr,ocamlEndErr,ocamlThenErrsyn cluster ocamlContained contains=ocamlTodo,ocamlPreDef,ocamlModParam,ocamlModParam1,ocamlPreMPRestr,ocamlMPRestr,ocamlMPRestr1,ocamlMPRestr2,ocamlMPRestr3,ocamlModRHS,ocamlFuncWith,ocamlFuncStruct,ocamlModTypeRestr,ocamlModTRWith,ocamlWith,ocamlWithRest,ocamlModType,ocamlFullMod" Enclosing delimiterssyn region ocamlEncl transparent matchgroup=ocamlKeyword start="(" matchgroup=ocamlKeyword end=")" contains=ALLBUT,@ocamlContained,ocamlParenErrsyn region ocamlEncl transparent matchgroup=ocamlKeyword start="{" matchgroup=ocamlKeyword end="}" contains=ALLBUT,@ocamlContained,ocamlBraceErrsyn region ocamlEncl transparent matchgroup=ocamlKeyword start="\[" matchgroup=ocamlKeyword end="\]" contains=ALLBUT,@ocamlContained,ocamlBrackErrsyn region ocamlEncl transparent matchgroup=ocamlKeyword start="\[|" matchgroup=ocamlKeyword end="|\]" contains=ALLBUT,@ocamlContained,ocamlArrErr" Commentssyn region ocamlComment start="(\*" end="\*)" contains=ocamlComment,ocamlTodosyn keyword ocamlTodo contained TODO FIXME XXX" Objectssyn region ocamlEnd matchgroup=ocamlKeyword start="\<object\>" matchgroup=ocamlKeyword end="\<end\>" contains=ALLBUT,@ocamlContained,ocamlEndErr" Blockssyn region ocamlEnd matchgroup=ocamlKeyword start="\<begin\>" matchgroup=ocamlKeyword end="\<end\>" contains=ALLBUT,@ocamlContained,ocamlEndErr" "for"syn region ocamlNone matchgroup=ocamlKeyword start="\<for\>" matchgroup=ocamlKeyword end="\<\(to\|downto\)\>" contains=ALLBUT,@ocamlContained,ocamlCountErr" "do"syn region ocamlDo matchgroup=ocamlKeyword start="\<do\>" matchgroup=ocamlKeyword end="\<done\>" contains=ALLBUT,@ocamlContained,ocamlDoneErr" "if"syn region ocamlNone matchgroup=ocamlKeyword start="\<if\>" matchgroup=ocamlKeyword end="\<then\>" contains=ALLBUT,@ocamlContained,ocamlThenErr"" Modules" "struct"syn region ocamlStruct matchgroup=ocamlModule start="\<struct\>" matchgroup=ocamlModule end="\<end\>" contains=ALLBUT,@ocamlContained,ocamlEndErr" "sig"syn region ocamlSig matchgroup=ocamlModule start="\<sig\>" matchgroup=ocamlModule end="\<end\>" contains=ALLBUT,@ocamlContained,ocamlEndErr,ocamlModulesyn region ocamlModSpec matchgroup=ocamlKeyword start="\<module\>" matchgroup=ocamlModule end="\<\u\(\w\|'\)*\>" contained contains=@ocamlAllErrs,ocamlComment skipwhite skipempty nextgroup=ocamlModTRWith,ocamlMPRestr" "open"syn region ocamlNone matchgroup=ocamlKeyword start="\<open\>" matchgroup=ocamlModule end="\<\u\(\w\|'\)*\(\.\u\(\w\|'\)*\)*\>" contains=@ocamlAllErrs,ocamlComment" "include"syn region ocamlNone matchgroup=ocamlKeyword start="\<include\>" matchgroup=ocamlModPath end="\<\(\u\(\w\|'\)*\.\)*\w\(\w\|'\)*\>" contains=o@ocamlAllErrs,camlComment" "module" - somewhat complicated stuff ;-)syn region ocamlModule matchgroup=ocamlKeyword start="\<module\>" matchgroup=ocamlModule end="\<\u\(\w\|'\)*\>" contains=@ocamlAllErrs,ocamlComment skipwhite skipempty nextgroup=ocamlPreDefsyn region ocamlPreDef start="."me=e-1 matchgroup=ocamlKeyword end="\l\|="me=e-1 contained contains=@ocamlAllErrs,ocamlComment,ocamlModParam,ocamlModTypeRestr,ocamlModTRWith nextgroup=ocamlModPreRHSsyn region ocamlModParam start="([^*]" end=")" contained contains=@ocamlAENoParen,ocamlModParam1syn match ocamlModParam1 "\<\u\(\w\|'\)*\>" contained skipwhite skipempty nextgroup=ocamlPreMPRestrsyn region ocamlPreMPRestr start="."me=e-1 end=")"me=e-1 contained contains=@ocamlAllErrs,ocamlComment,ocamlMPRestr,ocamlModTypeRestrsyn region ocamlMPRestr start=":" end="."me=e-1 contained contains=@ocamlComment skipwhite skipempty nextgroup=ocamlMPRestr1,ocamlMPRestr2,ocamlMPRestr3syn region ocamlMPRestr1 matchgroup=ocamlModule start="\ssig\s\=" matchgroup=ocamlModule end="\<end\>" contained contains=ALLBUT,@ocamlContained,ocamlEndErr,ocamlModulesyn region ocamlMPRestr2 start="\sfunctor\(\s\|(\)\="me=e-1 matchgroup=ocamlKeyword end="->" contained contains=@ocamlAllErrs,ocamlComment,ocamlModParam skipwhite skipempty nextgroup=ocamlFuncWith,ocamlMPRestr2syn match ocamlMPRestr3 "\w\(\w\|'\)*\(\.\w\(\w\|'\)*\)*" containedsyn match ocamlModPreRHS "=" contained skipwhite skipempty nextgroup=ocamlModParam,ocamlFullModsyn region ocamlModRHS start="." end=".\w\|([^*]"me=e-2 contained contains=ocamlComment skipwhite skipempty nextgroup=ocamlModParam,ocamlFullModsyn match ocamlFullMod "\<\u\(\w\|'\)*\(\.\u\(\w\|'\)*\)*" contained skipwhite skipempty nextgroup=ocamlFuncWithsyn region ocamlFuncWith start="("me=e-1 end=")" contained contains=ocamlComment,ocamlWith,ocamlFuncStruct skipwhite skipempty nextgroup=ocamlFuncWithsyn region ocamlFuncStruct matchgroup=ocamlModule start="[^a-zA-Z]struct\>"hs=s+1 matchgroup=ocamlModule end="\<end\>" contains=ALLBUT,@ocamlContained,ocamlEndErrsyn match ocamlModTypeRestr "\<\w\(\w\|'\)*\(\.\w\(\w\|'\)*\)*\>" containedsyn region ocamlModTRWith start=":\s*("hs=s+1 end=")" contained contains=@ocamlAENoParen,ocamlWithsyn match ocamlWith "\<\(\u\(\w\|'\)*\.\)*\w\(\w\|'\)*\>" contained skipwhite skipempty nextgroup=ocamlWithRestsyn region ocamlWithRest start="[^)]" end=")"me=e-1 contained contains=ALLBUT,@ocamlContained" "module type"syn region ocamlKeyword start="\<module\s*type\>" matchgroup=ocamlModule end="\<\w\(\w\|'\)*\>" contains=ocamlComment skipwhite skipempty nextgroup=ocamlMTDefsyn match ocamlMTDef "=\s*\w\(\w\|'\)*\>"hs=s+1,me=ssyn keyword ocamlKeyword and as assert classsyn keyword ocamlKeyword constraint elsesyn keyword ocamlKeyword exception external fun functionsyn keyword ocamlKeyword in inherit initializersyn keyword ocamlKeyword land lazy let matchsyn keyword ocamlKeyword method mutable new ofsyn keyword ocamlKeyword parser private raise recsyn keyword ocamlKeyword try typesyn keyword ocamlKeyword val virtual when while withsyn keyword ocamlType array bool char exn float format intsyn keyword ocamlType list option string unitsyn keyword ocamlOperator asr lor lsl lsr lxor mod not orsyn keyword ocamlBoolean true falsesyn match ocamlConstructor "(\s*)"syn match ocamlConstructor "\[\s*\]"syn match ocamlConstructor "\[|\s*>|]"syn match ocamlConstructor "\[<\s*>\]"syn match ocamlConstructor "\u\(\w\|'\)*\>"" Polymorphic variantssyn match ocamlConstructor "`\w\(\w\|'\)*\>"" Module prefixsyn match ocamlModPath "\u\(\w\|'\)*\."he=e-1syn match ocamlCharacter "'.'\|'\\\d\d\d'\|'\\[\'ntbr]'"syn match ocamlCharErr "'\\\d\d'\|'\\\d'"syn match ocamlCharErr "'\\[^\'ntbr]'"syn region ocamlString start=+"+ skip=+\\\\\|\\"+ end=+"+syn match ocamlFunDef "->"syn match ocamlRefAssign ":="syn match ocamlTopStop ";;"syn match ocamlOperator "\^"syn match ocamlOperator "::"syn match ocamlOperator "<-"syn match ocamlAnyVar "\<_\>"syn match ocamlKeyChar "!"syn match ocamlKeyChar "|[^\]]"me=e-1syn match ocamlKeyChar ";"syn match ocamlKeyChar "\~"syn match ocamlKeyChar "?"syn match ocamlKeyChar "\*"syn match ocamlKeyChar "="syn match ocamlNumber "\<-\=\d\+\>"syn match ocamlNumber "\<-\=0[x|X]\x\+\>"syn match ocamlNumber "\<-\=0[o|O]\o\+\>"syn match ocamlNumber "\<-\=0[b|B][01]\+\>"syn match ocamlFloat "\<-\=\d\+\.\d*\([eE][-+]\=\d\+\)\=[fl]\=\>"" Labelssyn match ocamlLabel "\~\(\l\|_\)\(\w\|'\)*"lc=1syn match ocamlLabel "?\(\l\|_\)\(\w\|'\)*"lc=1syn region ocamlLabel transparent matchgroup=ocamlLabel start="?(\(\l\|_\)\(\w\|'\)*"lc=2 end=")"me=e-1 contains=ALLBUT,@ocamlContained,ocamlParenErr" Synchronizationsyn sync minlines=50syn sync maxlines=500syn sync match ocamlDoSync grouphere ocamlDo "\<do\>"syn sync match ocamlDoSync groupthere ocamlDo "\<done\>"syn sync match ocamlEndSync grouphere ocamlEnd "\<\(begin\|object\)\>"syn sync match ocamlEndSync groupthere ocamlEnd "\<end\>"syn sync match ocamlStructSync grouphere ocamlStruct "\<struct\>"syn sync match ocamlStructSync groupthere ocamlStruct "\<end\>"syn sync match ocamlSigSync grouphere ocamlSig "\<sig\>"syn sync match ocamlSigSync groupthere ocamlSig "\<end\>"" Define the default highlighting." For version 5.7 and earlier: only when not done already" For version 5.8 and later: only when an item doesn't have highlighting yetif version >= 508 || !exists("did_ocaml_syntax_inits") if version < 508 let did_ocaml_syntax_inits = 1 command -nargs=+ HiLink hi link <args> else command -nargs=+ HiLink hi def link <args> endif HiLink ocamlBraceErr Error HiLink ocamlBrackErr Error HiLink ocamlParenErr Error HiLink ocamlArrErr Error HiLink ocamlCommentErr Error HiLink ocamlCountErr Error HiLink ocamlDoErr Error HiLink ocamlDoneErr Error HiLink ocamlEndErr Error HiLink ocamlThenErr Error HiLink ocamlCharErr Error HiLink ocamlComment Comment HiLink ocamlModPath Include HiLink ocamlModule Include HiLink ocamlModParam1 Include HiLink ocamlModType Include HiLink ocamlMPRestr3 Include HiLink ocamlFullMod Include HiLink ocamlModTypeRestr Include HiLink ocamlWith Include HiLink ocamlMTDef Include HiLink ocamlConstructor Constant HiLink ocamlModPreRHS Keyword HiLink ocamlMPRestr2 Keyword HiLink ocamlKeyword Keyword HiLink ocamlFunDef Keyword HiLink ocamlRefAssign Keyword HiLink ocamlKeyChar Keyword HiLink ocamlAnyVar Keyword HiLink ocamlTopStop Keyword HiLink ocamlOperator Keyword HiLink ocamlBoolean Boolean HiLink ocamlCharacter Character HiLink ocamlNumber Number HiLink ocamlFloat Float HiLink ocamlString String HiLink ocamlLabel Identifier HiLink ocamlType Type HiLink ocamlTodo Todo HiLink ocamlEncl Keyword delcommand HiLinkendiflet b:current_syntax = "ocaml"" vim: ts=28
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -