Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 1 | " Vim syntax file |
| 2 | " Language: Mathematica |
Bram Moolenaar | 34cdc3e | 2005-05-18 22:24:46 +0000 | [diff] [blame] | 3 | " Maintainer: steve layland <layland@wolfram.com> |
Bram Moolenaar | b8ff1fb | 2012-02-04 21:59:01 +0100 | [diff] [blame] | 4 | " Last Change: 2012 Feb 03 by Thilo Six |
Riley Bruins | 0a08306 | 2024-06-03 20:40:45 +0200 | [diff] [blame] | 5 | " 2024 May 24 by Riley Bruins <ribru17@gmail.com> (remove 'commentstring') |
Bram Moolenaar | 9e54a0e | 2006-04-14 20:42:25 +0000 | [diff] [blame] | 6 | " Source: http://members.wri.com/layland/vim/syntax/mma.vim |
| 7 | " http://vim.sourceforge.net/scripts/script.php?script_id=1273 |
Bram Moolenaar | 5c73622 | 2010-01-06 20:54:52 +0100 | [diff] [blame] | 8 | " Id: $Id: mma.vim,v 1.4 2006/04/14 20:40:38 vimboss Exp $ |
Bram Moolenaar | 34cdc3e | 2005-05-18 22:24:46 +0000 | [diff] [blame] | 9 | " NOTE: |
Bram Moolenaar | b8ff1fb | 2012-02-04 21:59:01 +0100 | [diff] [blame] | 10 | " |
Bram Moolenaar | 34cdc3e | 2005-05-18 22:24:46 +0000 | [diff] [blame] | 11 | " Empty .m files will automatically be presumed as Matlab files |
| 12 | " unless you have the following in your .vimrc: |
| 13 | " |
| 14 | " let filetype_m="mma" |
| 15 | " |
Bram Moolenaar | 6c391a7 | 2021-09-09 21:55:11 +0200 | [diff] [blame] | 16 | " I also recommend setting the default 'Comment' highlighting to something |
Bram Moolenaar | 34cdc3e | 2005-05-18 22:24:46 +0000 | [diff] [blame] | 17 | " other than the color used for 'Function', since both are plentiful in |
Bram Moolenaar | b8ff1fb | 2012-02-04 21:59:01 +0100 | [diff] [blame] | 18 | " most mathematica files, and they are often the same color (when using |
Bram Moolenaar | 555b280 | 2005-05-19 21:08:39 +0000 | [diff] [blame] | 19 | " background=dark). |
Bram Moolenaar | 34cdc3e | 2005-05-18 22:24:46 +0000 | [diff] [blame] | 20 | " |
| 21 | " Credits: |
| 22 | " o Original Mathematica syntax version written by |
| 23 | " Wolfgang Waltenberger <wwalten@ben.tuwien.ac.at> |
| 24 | " o Some ideas like the CommentStar,CommentTitle were adapted |
| 25 | " from the Java vim syntax file by Claudio Fleiner. Thanks! |
| 26 | " o Everything else written by steve <layland@wolfram.com> |
| 27 | " |
Bram Moolenaar | b8ff1fb | 2012-02-04 21:59:01 +0100 | [diff] [blame] | 28 | " Bugs: |
| 29 | " o Vim 6.1 didn't really have support for character classes |
Bram Moolenaar | 9e54a0e | 2006-04-14 20:42:25 +0000 | [diff] [blame] | 30 | " of other named character classes. For example, [\a\d] |
| 31 | " didn't work. Therefore, a lot of this code uses explicit |
Bram Moolenaar | b8ff1fb | 2012-02-04 21:59:01 +0100 | [diff] [blame] | 32 | " character classes instead: [0-9a-zA-Z] |
Bram Moolenaar | 9e54a0e | 2006-04-14 20:42:25 +0000 | [diff] [blame] | 33 | " |
Bram Moolenaar | 34cdc3e | 2005-05-18 22:24:46 +0000 | [diff] [blame] | 34 | " TODO: |
| 35 | " folding |
| 36 | " fix nesting |
| 37 | " finish populating popular symbols |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 38 | |
Bram Moolenaar | 89bcfda | 2016-08-30 23:26:57 +0200 | [diff] [blame] | 39 | " quit when a syntax file was already loaded |
| 40 | if exists("b:current_syntax") |
Bram Moolenaar | 34cdc3e | 2005-05-18 22:24:46 +0000 | [diff] [blame] | 41 | finish |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 42 | endif |
| 43 | |
Bram Moolenaar | b8ff1fb | 2012-02-04 21:59:01 +0100 | [diff] [blame] | 44 | let s:cpo_save = &cpo |
| 45 | set cpo&vim |
| 46 | |
Bram Moolenaar | 34cdc3e | 2005-05-18 22:24:46 +0000 | [diff] [blame] | 47 | " Group Definitions: |
| 48 | syntax cluster mmaNotes contains=mmaTodo,mmaFixme |
| 49 | syntax cluster mmaComments contains=mmaComment,mmaFunctionComment,mmaItem,mmaFunctionTitle,mmaCommentStar |
| 50 | syntax cluster mmaCommentStrings contains=mmaLooseQuote,mmaCommentString,mmaUnicode |
| 51 | syntax cluster mmaStrings contains=@mmaCommentStrings,mmaString |
| 52 | syntax cluster mmaTop contains=mmaOperator,mmaGenericFunction,mmaPureFunction,mmaVariable |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 53 | |
Bram Moolenaar | 34cdc3e | 2005-05-18 22:24:46 +0000 | [diff] [blame] | 54 | " Predefined Constants: |
| 55 | " to list all predefined Symbols would be too insane... |
| 56 | " it's probably smarter to define a select few, and get the rest from |
| 57 | " context if absolutely necessary. |
| 58 | " TODO - populate this with other often used Symbols |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 59 | |
Bram Moolenaar | 34cdc3e | 2005-05-18 22:24:46 +0000 | [diff] [blame] | 60 | " standard fixed symbols: |
| 61 | syntax keyword mmaVariable True False None Automatic All Null C General |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 62 | |
Bram Moolenaar | 34cdc3e | 2005-05-18 22:24:46 +0000 | [diff] [blame] | 63 | " mathematical constants: |
Bram Moolenaar | b8ff1fb | 2012-02-04 21:59:01 +0100 | [diff] [blame] | 64 | syntax keyword mmaVariable Pi I E Infinity ComplexInfinity Indeterminate GoldenRatio EulerGamma Degree Catalan Khinchin Glaisher |
Bram Moolenaar | 34cdc3e | 2005-05-18 22:24:46 +0000 | [diff] [blame] | 65 | |
| 66 | " stream data / atomic heads: |
| 67 | syntax keyword mmaVariable Byte Character Expression Number Real String Word EndOfFile Integer Symbol |
| 68 | |
| 69 | " sets: |
| 70 | syntax keyword mmaVariable Integers Complexes Reals Booleans Rationals |
| 71 | |
| 72 | " character classes: |
| 73 | syntax keyword mmaPattern DigitCharacter LetterCharacter WhitespaceCharacter WordCharacter EndOfString StartOfString EndOfLine StartOfLine WordBoundary |
| 74 | |
| 75 | " SelectionMove directions/units: |
| 76 | syntax keyword mmaVariable Next Previous After Before Character Word Expression TextLine CellContents Cell CellGroup EvaluationCell ButtonCell GeneratedCell Notebook |
| 77 | syntax keyword mmaVariable CellTags CellStyle CellLabel |
| 78 | |
| 79 | " TableForm positions: |
| 80 | syntax keyword mmaVariable Above Below Left Right |
| 81 | |
| 82 | " colors: |
| 83 | syntax keyword mmaVariable Black Blue Brown Cyan Gray Green Magenta Orange Pink Purple Red White Yellow |
| 84 | |
| 85 | " function attributes |
Bram Moolenaar | b8ff1fb | 2012-02-04 21:59:01 +0100 | [diff] [blame] | 86 | syntax keyword mmaVariable Protected Listable OneIdentity Orderless Flat Constant NumericFunction Locked ReadProtected HoldFirst HoldRest HoldAll HoldAllComplete SequenceHold NHoldFirst NHoldRest NHoldAll Temporary Stub |
Bram Moolenaar | 34cdc3e | 2005-05-18 22:24:46 +0000 | [diff] [blame] | 87 | |
Bram Moolenaar | 555b280 | 2005-05-19 21:08:39 +0000 | [diff] [blame] | 88 | " Comment Sections: |
| 89 | " this: |
| 90 | " :that: |
Bram Moolenaar | 9e54a0e | 2006-04-14 20:42:25 +0000 | [diff] [blame] | 91 | syntax match mmaItem "\%(^[( |*\t]*\)\@<=\%(:\+\|\w\)\w\+\%( \w\+\)\{0,3}:" contained contains=@mmaNotes |
Bram Moolenaar | 34cdc3e | 2005-05-18 22:24:46 +0000 | [diff] [blame] | 92 | |
Bram Moolenaar | 34cdc3e | 2005-05-18 22:24:46 +0000 | [diff] [blame] | 93 | " Comment Keywords: |
| 94 | syntax keyword mmaTodo TODO NOTE HEY contained |
| 95 | syntax match mmaTodo "X\{3,}" contained |
| 96 | syntax keyword mmaFixme FIX[ME] FIXTHIS BROKEN contained |
Bram Moolenaar | 9e54a0e | 2006-04-14 20:42:25 +0000 | [diff] [blame] | 97 | syntax match mmaFixme "BUG\%( *\#\=[0-9]\+\)\=" contained |
Bram Moolenaar | 34cdc3e | 2005-05-18 22:24:46 +0000 | [diff] [blame] | 98 | " yay pirates... |
| 99 | syntax match mmaFixme "\%(Y\=A\+R\+G\+\|GRR\+\|CR\+A\+P\+\)\%(!\+\)\=" contained |
Bram Moolenaar | 34cdc3e | 2005-05-18 22:24:46 +0000 | [diff] [blame] | 100 | |
Bram Moolenaar | 555b280 | 2005-05-19 21:08:39 +0000 | [diff] [blame] | 101 | " EmPHAsis: |
| 102 | " this unnecessary, but whatever :) |
Bram Moolenaar | 9e54a0e | 2006-04-14 20:42:25 +0000 | [diff] [blame] | 103 | syntax match mmaemPHAsis "\%(^\|\s\)\([_/]\)[a-zA-Z0-9]\+\%([- \t':]\+[a-zA-Z0-9]\+\)*\1\%(\s\|$\)" contained contains=mmaemPHAsis |
| 104 | syntax match mmaemPHAsis "\%(^\|\s\)(\@<!\*[a-zA-Z0-9]\+\%([- \t':]\+[a-zA-Z0-9]\+\)*)\@!\*\%(\s\|$\)" contained contains=mmaemPHAsis |
Bram Moolenaar | 34cdc3e | 2005-05-18 22:24:46 +0000 | [diff] [blame] | 105 | |
Bram Moolenaar | 555b280 | 2005-05-19 21:08:39 +0000 | [diff] [blame] | 106 | " Regular Comments: |
Bram Moolenaar | 34cdc3e | 2005-05-18 22:24:46 +0000 | [diff] [blame] | 107 | " (* *) |
| 108 | " allow nesting (* (* *) *) even though the frontend |
| 109 | " won't always like it. |
| 110 | syntax region mmaComment start=+(\*+ end=+\*)+ skipempty contains=@mmaNotes,mmaItem,@mmaCommentStrings,mmaemPHAsis,mmaComment |
| 111 | |
| 112 | " Function Comments: |
Bram Moolenaar | 6c391a7 | 2021-09-09 21:55:11 +0200 | [diff] [blame] | 113 | " just like a normal comment except the first sentence is Special ala Java |
Bram Moolenaar | 34cdc3e | 2005-05-18 22:24:46 +0000 | [diff] [blame] | 114 | " (** *) |
| 115 | " TODO - fix this for nesting, or not... |
| 116 | syntax region mmaFunctionComment start="(\*\*\+" end="\*\+)" contains=@mmaNotes,mmaItem,mmaFunctionTitle,@mmaCommentStrings,mmaemPHAsis,mmaComment |
| 117 | syntax region mmaFunctionTitle contained matchgroup=mmaFunctionComment start="\%((\*\*[ *]*\)" matchgroup=mmaFunctionTitle keepend end=".[.!-]\=\s*$" end="[.!-][ \t\r<&]"me=e-1 end="\%(\*\+)\)\@=" contained contains=@mmaNotes,mmaItem,mmaCommentStar |
| 118 | |
| 119 | " catch remaining (**********)'s |
| 120 | syntax match mmaComment "(\*\*\+)" |
| 121 | " catch preceding * |
| 122 | syntax match mmaCommentStar "^\s*\*\+" contained |
| 123 | |
Bram Moolenaar | 555b280 | 2005-05-19 21:08:39 +0000 | [diff] [blame] | 124 | " Variables: |
| 125 | " Dollar sign variables |
Bram Moolenaar | 9e54a0e | 2006-04-14 20:42:25 +0000 | [diff] [blame] | 126 | syntax match mmaVariable "\$\a\+[0-9a-zA-Z$]*" |
| 127 | |
| 128 | " Preceding and Following Contexts |
| 129 | syntax match mmaVariable "`[a-zA-Z$]\+[0-9a-zA-Z$]*" contains=mmaVariable |
| 130 | syntax match mmaVariable "[a-zA-Z$]\+[0-9a-zA-Z$]*`" contains=mmaVariable |
Bram Moolenaar | 555b280 | 2005-05-19 21:08:39 +0000 | [diff] [blame] | 131 | |
| 132 | " Strings: |
| 133 | " "string" |
| 134 | " 'string' is not accepted (until literal strings are supported!) |
| 135 | syntax region mmaString start=+\\\@<!"+ skip=+\\\@<!\\\%(\\\\\)*"+ end=+"+ |
| 136 | syntax region mmaCommentString oneline start=+\\\@<!"+ skip=+\\\@<!\\\%(\\\\\)*"+ end=+"+ contained |
| 137 | |
| 138 | |
Bram Moolenaar | 34cdc3e | 2005-05-18 22:24:46 +0000 | [diff] [blame] | 139 | " Patterns: |
| 140 | " Each pattern marker below can be Blank[] (_), BlankSequence[] (__) |
Bram Moolenaar | b8ff1fb | 2012-02-04 21:59:01 +0100 | [diff] [blame] | 141 | " or BlankNullSequence[] (___). Most examples below can also be |
Bram Moolenaar | 34cdc3e | 2005-05-18 22:24:46 +0000 | [diff] [blame] | 142 | " combined, for example Pattern tests with Default values. |
Bram Moolenaar | b8ff1fb | 2012-02-04 21:59:01 +0100 | [diff] [blame] | 143 | " |
Bram Moolenaar | 34cdc3e | 2005-05-18 22:24:46 +0000 | [diff] [blame] | 144 | " _Head Anonymous patterns |
Bram Moolenaar | b8ff1fb | 2012-02-04 21:59:01 +0100 | [diff] [blame] | 145 | " name_Head |
Bram Moolenaar | 34cdc3e | 2005-05-18 22:24:46 +0000 | [diff] [blame] | 146 | " name:(_Head|_Head2) Named patterns |
Bram Moolenaar | b8ff1fb | 2012-02-04 21:59:01 +0100 | [diff] [blame] | 147 | " |
Bram Moolenaar | 34cdc3e | 2005-05-18 22:24:46 +0000 | [diff] [blame] | 148 | " _Head : val |
| 149 | " name:_Head:val Default values |
| 150 | " |
Bram Moolenaar | b8ff1fb | 2012-02-04 21:59:01 +0100 | [diff] [blame] | 151 | " _Head?testQ, |
Bram Moolenaar | 34cdc3e | 2005-05-18 22:24:46 +0000 | [diff] [blame] | 152 | " _Head?(test[#]&) Pattern tests |
| 153 | " |
| 154 | " name_Head/;test[name] Conditionals |
Bram Moolenaar | b8ff1fb | 2012-02-04 21:59:01 +0100 | [diff] [blame] | 155 | " |
Bram Moolenaar | 34cdc3e | 2005-05-18 22:24:46 +0000 | [diff] [blame] | 156 | " _Head:. Predefined Default |
| 157 | " |
| 158 | " .. ... Pattern Repeat |
Bram Moolenaar | b8ff1fb | 2012-02-04 21:59:01 +0100 | [diff] [blame] | 159 | |
Bram Moolenaar | 34cdc3e | 2005-05-18 22:24:46 +0000 | [diff] [blame] | 160 | syntax match mmaPatternError "\%(_\{4,}\|)\s*&\s*)\@!\)" contained |
| 161 | |
| 162 | "pattern name: |
| 163 | syntax match mmaPattern "[A-Za-z0-9`]\+\s*:\+[=>]\@!" contains=mmaOperator |
| 164 | "pattern default: |
| 165 | syntax match mmaPattern ": *[^ ,]\+[\], ]\@=" contains=@mmaCommentStrings,@mmaTop,mmaOperator |
| 166 | "pattern head/test: |
| 167 | syntax match mmaPattern "[A-Za-z0-9`]*_\+\%(\a\+\)\=\%(?([^)]\+)\|?[^\]},]\+\)\=" contains=@mmaTop,@mmaCommentStrings,mmaPatternError |
| 168 | |
| 169 | " Operators: |
| 170 | " /: ^= ^:= UpValue |
| 171 | " /; Conditional |
| 172 | " := = DownValue |
| 173 | " == === || |
| 174 | " != =!= && Logic |
| 175 | " >= <= < > |
| 176 | " += -= *= |
| 177 | " /= ++ -- Math |
Bram Moolenaar | b8ff1fb | 2012-02-04 21:59:01 +0100 | [diff] [blame] | 178 | " ^* |
Bram Moolenaar | 34cdc3e | 2005-05-18 22:24:46 +0000 | [diff] [blame] | 179 | " -> :> Rules |
| 180 | " @@ @@@ Apply |
| 181 | " /@ //@ Map |
| 182 | " /. //. Replace |
| 183 | " // @ Function application |
| 184 | " <> ~~ String/Pattern join |
| 185 | " ~ infix operator |
| 186 | " . : Pattern operators |
| 187 | syntax match mmaOperator "\%(@\{1,3}\|//[.@]\=\)" |
| 188 | syntax match mmaOperator "\%(/[;:@.]\=\|\^\=:\==\)" |
| 189 | syntax match mmaOperator "\%([-:=]\=>\|<=\=\)" |
| 190 | "syntax match mmaOperator "\%(++\=\|--\=\|[/+-*]=\|[^*]\)" |
| 191 | syntax match mmaOperator "[*+=^.:?-]" |
| 192 | syntax match mmaOperator "\%(\~\~\=\)" |
| 193 | syntax match mmaOperator "\%(=\{2,3}\|=\=!=\|||\=\|&&\|!\)" contains=ALLBUT,mmaPureFunction |
| 194 | |
Bram Moolenaar | 9e54a0e | 2006-04-14 20:42:25 +0000 | [diff] [blame] | 195 | " Symbol Tags: |
Bram Moolenaar | 555b280 | 2005-05-19 21:08:39 +0000 | [diff] [blame] | 196 | " "SymbolName::item" |
Bram Moolenaar | 9e54a0e | 2006-04-14 20:42:25 +0000 | [diff] [blame] | 197 | "syntax match mmaSymbol "`\=[a-zA-Z$]\+[0-9a-zA-Z$]*\%(`\%([a-zA-Z$]\+[0-9a-zA-Z$]*\)\=\)*" contained |
| 198 | syntax match mmaMessage "`\=\([a-zA-Z$]\+[0-9a-zA-Z$]*\)\%(`\%([a-zA-Z$]\+[0-9a-zA-Z$]*\)\=\)*::\a\+" contains=mmaMessageType |
| 199 | syntax match mmaMessageType "::\a\+"hs=s+2 contained |
Bram Moolenaar | 555b280 | 2005-05-19 21:08:39 +0000 | [diff] [blame] | 200 | |
| 201 | " Pure Functions: |
| 202 | syntax match mmaPureFunction "#\%(#\|\d\+\)\=" |
| 203 | syntax match mmaPureFunction "&" |
| 204 | |
| 205 | " Named Functions: |
Bram Moolenaar | b8ff1fb | 2012-02-04 21:59:01 +0100 | [diff] [blame] | 206 | " Since everything is pretty much a function, get this straight |
Bram Moolenaar | 555b280 | 2005-05-19 21:08:39 +0000 | [diff] [blame] | 207 | " from context |
| 208 | syntax match mmaGenericFunction "[A-Za-z0-9`]\+\s*\%([@[]\|/:\|/\=/@\)\@=" contains=mmaOperator |
| 209 | syntax match mmaGenericFunction "\~\s*[^~]\+\s*\~"hs=s+1,he=e-1 contains=mmaOperator,mmaBoring |
| 210 | syntax match mmaGenericFunction "//\s*[A-Za-z0-9`]\+"hs=s+2 contains=mmaOperator |
| 211 | |
| 212 | " Numbers: |
| 213 | syntax match mmaNumber "\<\%(\d\+\.\=\d*\|\d*\.\=\d\+\)\>" |
| 214 | syntax match mmaNumber "`\d\+\%(\d\@!\.\|\>\)" |
| 215 | |
Bram Moolenaar | 34cdc3e | 2005-05-18 22:24:46 +0000 | [diff] [blame] | 216 | " Special Characters: |
| 217 | " \[Name] named character |
| 218 | " \ooo octal |
| 219 | " \.xx 2 digit hex |
| 220 | " \:xxxx 4 digit hex (multibyte unicode) |
| 221 | syntax match mmaUnicode "\\\[\w\+\d*\]" |
| 222 | syntax match mmaUnicode "\\\%(\x\{3}\|\.\x\{2}\|:\x\{4}\)" |
| 223 | |
| 224 | " Syntax Errors: |
| 225 | syntax match mmaError "\*)" containedin=ALLBUT,@mmaComments,@mmaStrings |
Bram Moolenaar | 9e54a0e | 2006-04-14 20:42:25 +0000 | [diff] [blame] | 226 | syntax match mmaError "\%([/]{3,}\|[&:|+*?~-]\{3,}\|[.=]\{4,}\|_\@<=\.\{2,}\|`\{2,}\)" containedin=ALLBUT,@mmaComments,@mmaStrings |
Bram Moolenaar | 34cdc3e | 2005-05-18 22:24:46 +0000 | [diff] [blame] | 227 | |
| 228 | " Punctuation: |
Bram Moolenaar | b8ff1fb | 2012-02-04 21:59:01 +0100 | [diff] [blame] | 229 | " things that shouldn't really be highlighted, or highlighted |
Bram Moolenaar | 34cdc3e | 2005-05-18 22:24:46 +0000 | [diff] [blame] | 230 | " in they're own group if you _really_ want. :) |
| 231 | " ( ) { } |
| 232 | " TODO - use Delimiter group? |
| 233 | syntax match mmaBoring "[(){}]" contained |
| 234 | |
Bram Moolenaar | 9e54a0e | 2006-04-14 20:42:25 +0000 | [diff] [blame] | 235 | " ------------------------------------ |
| 236 | " future explorations... |
| 237 | " ------------------------------------ |
Bram Moolenaar | 34cdc3e | 2005-05-18 22:24:46 +0000 | [diff] [blame] | 238 | " Function Arguments: |
| 239 | " anything between brackets [] |
Bram Moolenaar | 9e54a0e | 2006-04-14 20:42:25 +0000 | [diff] [blame] | 240 | " (fold) |
| 241 | "syntax region mmaArgument start="\[" end="\]" containedin=ALLBUT,@mmaComments,@mmaStrings transparent fold |
| 242 | |
| 243 | " Lists: |
| 244 | " (fold) |
| 245 | "syntax region mmaLists start="{" end="}" containedin=ALLBUT,@mmaComments,@mmaStrings transparent fold |
| 246 | |
| 247 | " Regions: |
| 248 | " (fold) |
| 249 | "syntax region mmaRegion start="(\*\+[^<]*<!--[^>]*\*\+)" end="--> \*)" containedin=ALLBUT,@mmaStrings transparent fold keepend |
| 250 | |
| 251 | " show fold text |
Bram Moolenaar | 9e54a0e | 2006-04-14 20:42:25 +0000 | [diff] [blame] | 252 | "set foldtext=MmaFoldText() |
| 253 | |
| 254 | "function MmaFoldText() |
| 255 | " let line = getline(v:foldstart) |
Bram Moolenaar | b8ff1fb | 2012-02-04 21:59:01 +0100 | [diff] [blame] | 256 | " |
Bram Moolenaar | 9e54a0e | 2006-04-14 20:42:25 +0000 | [diff] [blame] | 257 | " let lines = v:foldend-v:foldstart+1 |
Bram Moolenaar | b8ff1fb | 2012-02-04 21:59:01 +0100 | [diff] [blame] | 258 | " |
Bram Moolenaar | 9e54a0e | 2006-04-14 20:42:25 +0000 | [diff] [blame] | 259 | " let sub = substitute(line, '(\*\+|\*\+)|[-*_]\+', '', 'g') |
| 260 | " |
| 261 | " if match(line, '(\*') != -1 |
| 262 | " let lines = lines.' line comment' |
| 263 | " else |
| 264 | " let lines = lines.' lines' |
| 265 | " endif |
| 266 | " |
| 267 | " return v:folddashes.' '.lines.' '.sub |
| 268 | "endf |
Bram Moolenaar | b8ff1fb | 2012-02-04 21:59:01 +0100 | [diff] [blame] | 269 | |
Bram Moolenaar | 9e54a0e | 2006-04-14 20:42:25 +0000 | [diff] [blame] | 270 | "this is slow for computing folds, but it does so accurately |
| 271 | syntax sync fromstart |
| 272 | |
| 273 | " but this seems to do alright for non fold syntax coloring. |
| 274 | " for folding, however, it doesn't get the nesting right. |
| 275 | " TODO - find sync group for multiline modules? ick... |
| 276 | |
| 277 | " sync multi line comments |
| 278 | "syntax sync match syncComments groupthere NONE "\*)" |
| 279 | "syntax sync match syncComments groupthere mmaComment "(\*" |
| 280 | |
Bram Moolenaar | 34cdc3e | 2005-05-18 22:24:46 +0000 | [diff] [blame] | 281 | "set foldmethod=syntax |
Bram Moolenaar | 9e54a0e | 2006-04-14 20:42:25 +0000 | [diff] [blame] | 282 | "set foldnestmax=1 |
| 283 | "set foldminlines=15 |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 284 | |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 285 | |
Bram Moolenaar | 89bcfda | 2016-08-30 23:26:57 +0200 | [diff] [blame] | 286 | " NOTE - the following links are not guaranteed to |
| 287 | " look good under all colorschemes. You might need to |
| 288 | " :so $VIMRUNTIME/syntax/hitest.vim and tweak these to |
| 289 | " look good in yours |
Bram Moolenaar | 34cdc3e | 2005-05-18 22:24:46 +0000 | [diff] [blame] | 290 | |
Bram Moolenaar | 9e54a0e | 2006-04-14 20:42:25 +0000 | [diff] [blame] | 291 | |
Bram Moolenaar | f37506f | 2016-08-31 22:22:10 +0200 | [diff] [blame] | 292 | hi def link mmaComment Comment |
| 293 | hi def link mmaCommentStar Comment |
| 294 | hi def link mmaFunctionComment Comment |
| 295 | hi def link mmaLooseQuote Comment |
| 296 | hi def link mmaGenericFunction Function |
| 297 | hi def link mmaVariable Identifier |
| 298 | " hi def link mmaSymbol Identifier |
| 299 | hi def link mmaOperator Operator |
| 300 | hi def link mmaPatternOp Operator |
| 301 | hi def link mmaPureFunction Operator |
| 302 | hi def link mmaString String |
| 303 | hi def link mmaCommentString String |
| 304 | hi def link mmaUnicode String |
| 305 | hi def link mmaMessage Type |
| 306 | hi def link mmaNumber Type |
| 307 | hi def link mmaPattern Type |
| 308 | hi def link mmaError Error |
| 309 | hi def link mmaFixme Error |
| 310 | hi def link mmaPatternError Error |
| 311 | hi def link mmaTodo Todo |
| 312 | hi def link mmaemPHAsis Special |
| 313 | hi def link mmaFunctionTitle Special |
| 314 | hi def link mmaMessageType Special |
| 315 | hi def link mmaItem Preproc |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 316 | |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 317 | |
| 318 | let b:current_syntax = "mma" |
Bram Moolenaar | b8ff1fb | 2012-02-04 21:59:01 +0100 | [diff] [blame] | 319 | |
| 320 | let &cpo = s:cpo_save |
| 321 | unlet s:cpo_save |