updated for version 7.0072
This commit is contained in:
@ -1,41 +1,229 @@
|
||||
" Vim syntax file
|
||||
" Language: Mathematica
|
||||
" Maintainer: Wolfgang Waltenberger <wwalten@ben.tuwien.ac.at>
|
||||
" Last Change: Thu 26 Apr 2001 13:20:03 CEST
|
||||
" Maintainer: steve layland <layland@wolfram.com>
|
||||
" Last Change: Tue May 10 18:31:00 CDT 2005
|
||||
" Source: http://vim.sourceforge.net/scripts/script.php?script_id=1273
|
||||
" http://members.wri.com/layland/vim/syntax/mma.vim
|
||||
"
|
||||
" NOTE:
|
||||
" Empty .m files will automatically be presumed as Matlab files
|
||||
" unless you have the following in your .vimrc:
|
||||
"
|
||||
" let filetype_m="mma"
|
||||
"
|
||||
" I also recommend setting the default 'Comment' hilighting to something
|
||||
" other than the color used for 'Function', since both are plentiful in
|
||||
" most mathematica files, and they are often the same color (when using
|
||||
" background=dark). I use
|
||||
"
|
||||
" hi Comment ctermfg=darkcyan
|
||||
"
|
||||
" darkgreen also looks good on my terminal.
|
||||
"
|
||||
" Credits:
|
||||
" o Original Mathematica syntax version written by
|
||||
" Wolfgang Waltenberger <wwalten@ben.tuwien.ac.at>
|
||||
" o Some ideas like the CommentStar,CommentTitle were adapted
|
||||
" from the Java vim syntax file by Claudio Fleiner. Thanks!
|
||||
" o Everything else written by steve <layland@wolfram.com>
|
||||
"
|
||||
" TODO:
|
||||
" folding
|
||||
" fix nesting
|
||||
" finish populating popular symbols
|
||||
|
||||
if version < 600
|
||||
syntax clear
|
||||
elseif exists("b:current_syntax")
|
||||
finish
|
||||
finish
|
||||
endif
|
||||
|
||||
syn match mmaError "\*)"
|
||||
syn match mmaFixme "FIXME"
|
||||
syn region mmaComment start=+(\*+ end=+\*)+ skipempty contains=mmaFixme
|
||||
syn match mmaMessage "\a*::\a*"
|
||||
syn region mmaString start=+'+ end=+'+
|
||||
syn region mmaString start=+"+ end=+"+
|
||||
syn region mmaString start=+\\\"+ end=+\"+
|
||||
syn region mmaString start=+\"+ end=+\"+
|
||||
" Group Definitions:
|
||||
syntax cluster mmaNotes contains=mmaTodo,mmaFixme
|
||||
syntax cluster mmaComments contains=mmaComment,mmaFunctionComment,mmaItem,mmaFunctionTitle,mmaCommentStar
|
||||
syntax cluster mmaCommentStrings contains=mmaLooseQuote,mmaCommentString,mmaUnicode
|
||||
syntax cluster mmaStrings contains=@mmaCommentStrings,mmaString
|
||||
syntax cluster mmaTop contains=mmaOperator,mmaGenericFunction,mmaPureFunction,mmaVariable
|
||||
|
||||
syn match mmaVariable "$\a*"
|
||||
" Variables:
|
||||
" Dollar sign variables
|
||||
syntax match mmaVariable "$\a\+\d*"
|
||||
" Preceding contexts
|
||||
syntax match mmaVariable "`\=\a\+\d*`"
|
||||
|
||||
syn match mmaPattern "[A-Za-z01-9`]*_\{1,3}"
|
||||
syn match mmaPattern "[A-Za-z01-9`]*_\{1,3}\(Integer\|Real\|Pattern\|Symbol\)"
|
||||
syn match mmaPattern "[A-Za-z01-9`]*_\{1,3}\(Rational\|Complex\|Head\)"
|
||||
syn match mmaPattern "[A-Za-z01-9`]*_\{1,3}?[A-Za-z01-9`]*"
|
||||
" Numbers:
|
||||
syntax match mmaNumber "\<\%(\d\+\.\=\d*\|\d*\.\=\d\+\)\>"
|
||||
syntax match mmaNumber "`\d\+\>"
|
||||
|
||||
" prefix/infix/postfix notations
|
||||
syn match mmaGenericFunction "[A-Za-z01-9`]*\s*\(\[\|@\)"he=e-1
|
||||
syn match mmaGenericFunction "[A-Za-z01-9`]*\s*\(/@\|@@\)"he=e-2
|
||||
syn match mmaGenericFunction "\~\s*[A-Za-z01-9`]*\s*\~"hs=s+1,he=e-1
|
||||
syn match mmaGenericFunction "//\s*[A-Za-z01-9`]*"hs=s+2
|
||||
syn match mmaOperator "/;"
|
||||
" Predefined Constants:
|
||||
" to list all predefined Symbols would be too insane...
|
||||
" it's probably smarter to define a select few, and get the rest from
|
||||
" context if absolutely necessary.
|
||||
" TODO - populate this with other often used Symbols
|
||||
|
||||
syn match mmaPureFunction "#\d*"
|
||||
syn match mmaPureFunction "&"
|
||||
" standard fixed symbols:
|
||||
syntax keyword mmaVariable True False None Automatic All Null C General
|
||||
|
||||
syn match mmaUnicode "\\\[[a-zA-Z01-9]*\]"
|
||||
" mathematical constants:
|
||||
syntax keyword mmaVariable Pi I E Infinity ComplexInfinity Indeterminate GoldenRatio EulerGamma Degree Catalan Khinchin Glaisher
|
||||
|
||||
" stream data / atomic heads:
|
||||
syntax keyword mmaVariable Byte Character Expression Number Real String Word EndOfFile Integer Symbol
|
||||
|
||||
" sets:
|
||||
syntax keyword mmaVariable Integers Complexes Reals Booleans Rationals
|
||||
|
||||
" character classes:
|
||||
syntax keyword mmaPattern DigitCharacter LetterCharacter WhitespaceCharacter WordCharacter EndOfString StartOfString EndOfLine StartOfLine WordBoundary
|
||||
|
||||
" SelectionMove directions/units:
|
||||
syntax keyword mmaVariable Next Previous After Before Character Word Expression TextLine CellContents Cell CellGroup EvaluationCell ButtonCell GeneratedCell Notebook
|
||||
syntax keyword mmaVariable CellTags CellStyle CellLabel
|
||||
|
||||
" TableForm positions:
|
||||
syntax keyword mmaVariable Above Below Left Right
|
||||
|
||||
" colors:
|
||||
syntax keyword mmaVariable Black Blue Brown Cyan Gray Green Magenta Orange Pink Purple Red White Yellow
|
||||
|
||||
" function attributes
|
||||
syntax keyword mmaVariable Protected Listable OneIdentity Orderless Flat Constant NumericFunction Locked ReadProtected HoldFirst HoldRest HoldAll HoldAllComplete SequenceHold NHoldFirst NHoldRest NHoldAll Temporary Stub
|
||||
|
||||
" Strings:
|
||||
" "string"
|
||||
" 'string' is not accepted (until literal strings are supported!)
|
||||
syntax region mmaString start=+\\\@<!"+ skip=+\\\@<!\\\%(\\\\\)*"+ end=+"+
|
||||
syntax region mmaCommentString oneline start=+\\\@<!"+ skip=+\\\@<!\\\%(\\\\\)*"+ end=+"+ contained
|
||||
|
||||
" Function Usage Messages:
|
||||
" "SymbolName::item"
|
||||
syntax match mmaMessage "$\=\a\+\d*::\a\+\d*"
|
||||
|
||||
" Pure Functions:
|
||||
syntax match mmaPureFunction "#\%(#\|\d\+\)\="
|
||||
syntax match mmaPureFunction "&"
|
||||
|
||||
" Named Functions:
|
||||
" Since everything is pretty much a function, get this straight
|
||||
" from context
|
||||
syntax match mmaGenericFunction "[A-Za-z0-9`]\+\s*\%([@[]\|/:\|/\=/@\)\@=" contains=mmaOperator
|
||||
syntax match mmaGenericFunction "\~\s*[^~]\+\s*\~"hs=s+1,he=e-1 contains=mmaOperator,mmaBoring
|
||||
syntax match mmaGenericFunction "//\s*[A-Za-z0-9`]\+"hs=s+2 contains=mmaOperator
|
||||
|
||||
" Comment Keywords:
|
||||
syntax keyword mmaTodo TODO NOTE HEY contained
|
||||
syntax match mmaTodo "X\{3,}" contained
|
||||
syntax keyword mmaFixme FIX[ME] FIXTHIS BROKEN contained
|
||||
" yay pirates...
|
||||
syntax match mmaFixme "\%(Y\=A\+R\+G\+\|GRR\+\|CR\+A\+P\+\)\%(!\+\)\=" contained
|
||||
syntax match mmaemPHAsis "\(_\+\)[ a-zA-Z0-9]\+\1" contained
|
||||
|
||||
" Comment Sections:
|
||||
" this:
|
||||
" :that:
|
||||
syntax match mmaItem "\%(^[( |*\t]*\)\@<=\%(:\+\|\a\)[a-zA-Z0-9 ]\+:" contained contains=@mmaNotes
|
||||
|
||||
" Actual Mathematica Comments:
|
||||
" (* *)
|
||||
" allow nesting (* (* *) *) even though the frontend
|
||||
" won't always like it.
|
||||
syntax region mmaComment start=+(\*+ end=+\*)+ skipempty contains=@mmaNotes,mmaItem,@mmaCommentStrings,mmaemPHAsis,mmaComment
|
||||
|
||||
" Function Comments:
|
||||
" just like a normal comment except the first sentance is Special ala Java
|
||||
" (** *)
|
||||
" TODO - fix this for nesting, or not...
|
||||
syntax region mmaFunctionComment start="(\*\*\+" end="\*\+)" contains=@mmaNotes,mmaItem,mmaFunctionTitle,@mmaCommentStrings,mmaemPHAsis,mmaComment
|
||||
syntax region mmaFunctionTitle contained matchgroup=mmaFunctionComment start="\%((\*\*[ *]*\)" matchgroup=mmaFunctionTitle keepend end=".[.!-]\=\s*$" end="[.!-][ \t\r<&]"me=e-1 end="\%(\*\+)\)\@=" contained contains=@mmaNotes,mmaItem,mmaCommentStar
|
||||
|
||||
" catch remaining (**********)'s
|
||||
syntax match mmaComment "(\*\*\+)"
|
||||
" catch preceding *
|
||||
syntax match mmaCommentStar "^\s*\*\+" contained
|
||||
|
||||
" Patterns:
|
||||
" Each pattern marker below can be Blank[] (_), BlankSequence[] (__)
|
||||
" or BlankNullSequence[] (___). Most examples below can also be
|
||||
" combined, for example Pattern tests with Default values.
|
||||
"
|
||||
" _Head Anonymous patterns
|
||||
" name_Head
|
||||
" name:(_Head|_Head2) Named patterns
|
||||
"
|
||||
" _Head : val
|
||||
" name:_Head:val Default values
|
||||
"
|
||||
" _Head?testQ,
|
||||
" _Head?(test[#]&) Pattern tests
|
||||
"
|
||||
" name_Head/;test[name] Conditionals
|
||||
"
|
||||
" _Head:. Predefined Default
|
||||
"
|
||||
" .. ... Pattern Repeat
|
||||
|
||||
syntax match mmaPatternError "\%(_\{4,}\|)\s*&\s*)\@!\)" contained
|
||||
|
||||
"pattern name:
|
||||
syntax match mmaPattern "[A-Za-z0-9`]\+\s*:\+[=>]\@!" contains=mmaOperator
|
||||
"pattern default:
|
||||
syntax match mmaPattern ": *[^ ,]\+[\], ]\@=" contains=@mmaCommentStrings,@mmaTop,mmaOperator
|
||||
"pattern head/test:
|
||||
syntax match mmaPattern "[A-Za-z0-9`]*_\+\%(\a\+\)\=\%(?([^)]\+)\|?[^\]},]\+\)\=" contains=@mmaTop,@mmaCommentStrings,mmaPatternError
|
||||
|
||||
" Operators:
|
||||
" /: ^= ^:= UpValue
|
||||
" /; Conditional
|
||||
" := = DownValue
|
||||
" == === ||
|
||||
" != =!= && Logic
|
||||
" >= <= < >
|
||||
" += -= *=
|
||||
" /= ++ -- Math
|
||||
" ^*
|
||||
" -> :> Rules
|
||||
" @@ @@@ Apply
|
||||
" /@ //@ Map
|
||||
" /. //. Replace
|
||||
" // @ Function application
|
||||
" <> ~~ String/Pattern join
|
||||
" ~ infix operator
|
||||
" . : Pattern operators
|
||||
syntax match mmaOperator "\%(@\{1,3}\|//[.@]\=\)"
|
||||
syntax match mmaOperator "\%(/[;:@.]\=\|\^\=:\==\)"
|
||||
syntax match mmaOperator "\%([-:=]\=>\|<=\=\)"
|
||||
"syntax match mmaOperator "\%(++\=\|--\=\|[/+-*]=\|[^*]\)"
|
||||
syntax match mmaOperator "[*+=^.:?-]"
|
||||
syntax match mmaOperator "\%(\~\~\=\)"
|
||||
syntax match mmaOperator "\%(=\{2,3}\|=\=!=\|||\=\|&&\|!\)" contains=ALLBUT,mmaPureFunction
|
||||
|
||||
|
||||
" Special Characters:
|
||||
" \[Name] named character
|
||||
" \ooo octal
|
||||
" \.xx 2 digit hex
|
||||
" \:xxxx 4 digit hex (multibyte unicode)
|
||||
syntax match mmaUnicode "\\\[\w\+\d*\]"
|
||||
syntax match mmaUnicode "\\\%(\x\{3}\|\.\x\{2}\|:\x\{4}\)"
|
||||
|
||||
" Syntax Errors:
|
||||
syntax match mmaError "\*)" containedin=ALLBUT,@mmaComments,@mmaStrings
|
||||
syntax match mmaError "\%([&:|+*/?~-]\{3,}\|[.=]\{4,}\|_\@<=\.\{2,}\|`\{2,}\)" containedin=ALLBUT,@mmaComments,@mmaStrings
|
||||
|
||||
" Punctuation:
|
||||
" things that shouldn't really be highlighted, or highlighted
|
||||
" in they're own group if you _really_ want. :)
|
||||
" ( ) { }
|
||||
" TODO - use Delimiter group?
|
||||
syntax match mmaBoring "[(){}]" contained
|
||||
|
||||
" Function Arguments:
|
||||
" anything between brackets []
|
||||
" TODO - make good folds for this.
|
||||
"syntax region mmaArgument start="\[" end="]" containedin=ALLBUT,@mmaComments,@mmaCommentStrings transparent fold
|
||||
"syntax sync fromstart
|
||||
"set foldmethod=syntax
|
||||
"set foldminlines=10
|
||||
|
||||
if version >= 508 || !exists("did_mma_syn_inits")
|
||||
if version < 508
|
||||
@ -45,17 +233,33 @@ if version >= 508 || !exists("did_mma_syn_inits")
|
||||
command -nargs=+ HiLink hi def link <args>
|
||||
endif
|
||||
|
||||
HiLink mmaOperator Operator
|
||||
HiLink mmaVariable Identifier
|
||||
HiLink mmaString String
|
||||
HiLink mmaUnicode String
|
||||
HiLink mmaMessage Identifier
|
||||
HiLink mmaPattern Identifier
|
||||
HiLink mmaGenericFunction Function
|
||||
HiLink mmaError Error
|
||||
HiLink mmaFixme Error
|
||||
HiLink mmaComment Comment
|
||||
HiLink mmaPureFunction Operator
|
||||
" NOTE - the following links are not guaranteed to
|
||||
" look good under all colorschemes. You might need to
|
||||
" :so $VIMRUNTIME/syntax/hitest.vim and tweak these to
|
||||
" look good in yours
|
||||
|
||||
HiLink mmaComment Comment
|
||||
HiLink mmaCommentStar Comment
|
||||
HiLink mmaFunctionComment Comment
|
||||
HiLink mmaLooseQuote Comment
|
||||
HiLink mmaGenericFunction Function
|
||||
HiLink mmaOperator Operator
|
||||
HiLink mmaPatternOp Operator
|
||||
HiLink mmaPureFunction Operator
|
||||
HiLink mmaVariable Identifier
|
||||
HiLink mmaString String
|
||||
HiLink mmaCommentString String
|
||||
HiLink mmaUnicode String
|
||||
HiLink mmaMessage Type
|
||||
HiLink mmaNumber Type
|
||||
HiLink mmaPattern Type
|
||||
HiLink mmaError Error
|
||||
HiLink mmaFixme Error
|
||||
HiLink mmaPatternError Error
|
||||
HiLink mmaTodo Todo
|
||||
HiLink mmaemPHAsis Special
|
||||
HiLink mmaFunctionTitle Special
|
||||
HiLink mmaItem Preproc
|
||||
|
||||
delcommand HiLink
|
||||
endif
|
||||
|
||||
Reference in New Issue
Block a user