Merged from the latest developing branch.
[MacVim.git] / runtime / syntax / maxima.vim
blobca982d7a42db045498107236e1342e5b019495ec
1 " Vim syntax file
2 " Language:     Maxima (symbolic algebra program)
3 " Maintainer:   Robert Dodier (robert.dodier@gmail.com)
4 " Last Change:  April 6, 2006
5 " Version:      1
6 " Adapted mostly from xmath.vim
7 " Number formats adapted from r.vim
9 " For version 5.x: Clear all syntax items
10 " For version 6.x: Quit when a syntax file was already loaded
11 if version < 600
12   syntax clear
13 elseif exists("b:current_syntax")
14   finish
15 endif
17 syn sync lines=1000
19 " parenthesis sanity checker
20 syn region maximaZone   matchgroup=Delimiter start="(" matchgroup=Delimiter end=")" transparent contains=ALLBUT,maximaError,maximaBraceError,maximaCurlyError
21 syn region maximaZone   matchgroup=Delimiter start="{" matchgroup=Delimiter end="}" transparent contains=ALLBUT,maximaError,maximaBraceError,maximaParenError
22 syn region maximaZone   matchgroup=Delimiter start="\[" matchgroup=Delimiter end="]" transparent contains=ALLBUT,maximaError,maximaCurlyError,maximaParenError
23 syn match  maximaError  "[)\]}]"
24 syn match  maximaBraceError     "[)}]"  contained
25 syn match  maximaCurlyError     "[)\]]" contained
26 syn match  maximaParenError     "[\]}]" contained
27 syn match  maximaComma  "[\[\](),;]"
28 syn match  maximaComma  "\.\.\.$"
30 " A bunch of useful maxima keywords
31 syn keyword maximaConditional   if then else elseif and or not
32 syn keyword maximaRepeat        do for thru
34 " ---------------------- BEGIN LIST OF ALL FUNCTIONS (EXCEPT KEYWORDS)  ----------------------
35 syn keyword maximaFunc abasep  abs  absboxchar  absint  acos  acosh  acot  acoth  acsc  
36 syn keyword maximaFunc acsch  activate  activecontexts  addcol  additive  addrow  adim  
37 syn keyword maximaFunc adjoint  af  aform  airy  algebraic  algepsilon  algexact  algsys  
38 syn keyword maximaFunc alg_type  alias  aliases  allbut  all_dotsimp_denoms  allroots  allsym  
39 syn keyword maximaFunc alphabetic  antid  antidiff  antisymmetric  append  appendfile  
40 syn keyword maximaFunc apply  apply1  apply2  applyb1  apropos  args  array  arrayapply  
41 syn keyword maximaFunc arrayinfo  arraymake  arrays  asec  asech  asin  asinh  askexp  
42 syn keyword maximaFunc askinteger  asksign  assoc  assoc_legendre_p  assoc_legendre_q  assume  
43 syn keyword maximaFunc assume_pos  assume_pos_pred  assumescalar  asymbol  asympa  at  atan  
44 syn keyword maximaFunc atan2  atanh  atensimp  atom  atomgrad  atrig1  atvalue  augcoefmatrix  
45 syn keyword maximaFunc av  backsubst  backtrace  bashindices  batch  batchload  bc2  bdvac  
46 syn keyword maximaFunc berlefact  bern  bernpoly  bessel  besselexpand  bessel_i  bessel_j  
47 syn keyword maximaFunc bessel_k  bessel_y  beta  bezout  bffac  bfhzeta  bfloat  bfloatp  
48 syn keyword maximaFunc bfpsi  bfpsi0  bftorat  bftrunc  bfzeta  bimetric  binomial  block  
49 syn keyword maximaFunc bothcoef  box  boxchar  break  breakup  bug_report  build_info  buildq  
50 syn keyword maximaFunc burn  cabs  canform  canten  carg  cartan  catch  cauchysum  cbffac  
51 syn keyword maximaFunc cdisplay  cf  cfdisrep  cfexpand  cflength  cframe_flag  cgeodesic  
52 syn keyword maximaFunc changename  changevar  charpoly  checkdiv  check_overlaps  christof  
53 syn keyword maximaFunc clear_rules  closefile  closeps  cmetric  cnonmet_flag  coeff  
54 syn keyword maximaFunc coefmatrix  cograd  col  collapse  columnvector  combine  commutative  
55 syn keyword maximaFunc comp2pui  compfile  compile  compile_file  components  concan  concat  
56 syn keyword maximaFunc conj  conjugate  conmetderiv  cons  constant  constantp  cont2part  
57 syn keyword maximaFunc content  context  contexts  contortion  contract  contragrad  coord  
58 syn keyword maximaFunc copylist  copymatrix  cos  cosh  cosnpiflag  cot  coth  covdiff  
59 syn keyword maximaFunc covect  create_list  csc  csch  csetup  ctaylor  ctaypov  ctaypt  
60 syn keyword maximaFunc ctayswitch  ctayvar  ct_coords  ct_coordsys  ctorsion_flag  ctransform  
61 syn keyword maximaFunc ctrgsimp  current_let_rule_package  dblint  deactivate  debugmode  
62 syn keyword maximaFunc declare  declare_translated  declare_weight  decsym  
63 syn keyword maximaFunc default_let_rule_package  defcon  define  define_variable  defint  
64 syn keyword maximaFunc defmatch  defrule  deftaylor  del  delete  deleten  delta  demo  
65 syn keyword maximaFunc demoivre  denom  dependencies  depends  derivabbrev  derivdegree  
66 syn keyword maximaFunc derivlist  derivsubst  describe  desolve  determinant  detout  
67 syn keyword maximaFunc diagmatrix  diagmatrixp  diagmetric  diff  dim  dimension  direct  
68 syn keyword maximaFunc disolate  disp  dispcon  dispflag  dispform  dispfun  display  
69 syn keyword maximaFunc display2d  display_format_internal  disprule  dispterms  distrib  
70 syn keyword maximaFunc divide  divsum  doallmxops  domain  domxexpt  domxmxops  domxnctimes  
71 syn keyword maximaFunc dontfactor  doscmxops  doscmxplus  dot0nscsimp  dot0simp  dot1simp  
72 syn keyword maximaFunc dotassoc  dotconstrules  dotdistrib  dotexptsimp  dotident  dotscrules  
73 syn keyword maximaFunc dotsimp  dpart  dscalar  %e  echelon  %edispflag  eigenvalues  
74 syn keyword maximaFunc eigenvectors  eighth  einstein  eivals  eivects  ele2comp  
75 syn keyword maximaFunc ele2polynome  ele2pui  elem  eliminate  elliptic_e  elliptic_ec  
76 syn keyword maximaFunc elliptic_eu  elliptic_f  elliptic_kc  elliptic_pi  ematrix  %emode  
77 syn keyword maximaFunc endcons  entermatrix  entertensor  entier  %enumer  equal  equalp  erf  
78 syn keyword maximaFunc erfflag  errcatch  error  errormsg  error_size  error_syms  
79 syn keyword maximaFunc %e_to_numlog  euler  ev  eval  evenp  every  evflag  evfun  evundiff  
80 syn keyword maximaFunc example  exp  expand  expandwrt  expandwrt_denom  expandwrt_factored  
81 syn keyword maximaFunc explose  expon  exponentialize  expop  express  expt  exptdispflag  
82 syn keyword maximaFunc exptisolate  exptsubst  extdiff  extract_linear_equations  ezgcd  
83 syn keyword maximaFunc facexpand  factcomb  factlim  factor  factorflag  factorial  factorout  
84 syn keyword maximaFunc factorsum  facts  false  fast_central_elements  fast_linsolve  
85 syn keyword maximaFunc fasttimes  fb  feature  featurep  features  fft  fib  fibtophi  fifth  
86 syn keyword maximaFunc filename_merge  file_search  file_search_demo  file_search_lisp  
87 syn keyword maximaFunc file_search_maxima  file_type  fillarray  findde  first  fix  flatten  
88 syn keyword maximaFunc flipflag  float  float2bf  floatnump  flush  flush1deriv  flushd  
89 syn keyword maximaFunc flushnd  forget  fortindent  fortran  fortspaces  fourcos  fourexpand  
90 syn keyword maximaFunc fourier  fourint  fourintcos  fourintsin  foursimp  foursin  fourth  
91 syn keyword maximaFunc fpprec  fpprintprec  frame_bracket  freeof  fullmap  fullmapl  
92 syn keyword maximaFunc fullratsimp  fullratsubst  funcsolve  functions  fundef  funmake  funp  
93 syn keyword maximaFunc gamma  %gamma  gammalim  gauss  gcd  gcdex  gcfactor  gdet  genfact  
94 syn keyword maximaFunc genindex  genmatrix  gensumnum  get  getchar  gfactor  gfactorsum  
95 syn keyword maximaFunc globalsolve  go  gradef  gradefs  gramschmidt  grind  grobner_basis  
96 syn keyword maximaFunc gschmit  hach  halfangles  hermite  hipow  hodge  horner  i0  i1  
97 syn keyword maximaFunc *read-base*  ic1  ic2  icc1  icc2  ic_convert  ichr1  ichr2  icounter  
98 syn keyword maximaFunc icurvature  ident  idiff  idim  idummy  idummyx  ieqn  ieqnprint  ifb  
99 syn keyword maximaFunc ifc1  ifc2  ifg  ifgi  ifr  iframe_bracket_form  iframes  ifri  ift  
100 syn keyword maximaFunc igeodesic_coords  igeowedge_flag  ikt1  ikt2  ilt  imagpart  imetric  
101 syn keyword maximaFunc inchar  indexed_tensor  indices  inf  %inf  infeval  infinity  infix  
102 syn keyword maximaFunc inflag  infolists  init_atensor  init_ctensor  inm  inmc1  inmc2  
103 syn keyword maximaFunc innerproduct  in_netmath  inpart  inprod  inrt  integerp  integrate  
104 syn keyword maximaFunc integrate_use_rootsof  integration_constant_counter  interpolate  
105 syn keyword maximaFunc intfaclim  intopois  intosum  intpolabs  intpolerror  intpolrel  
106 syn keyword maximaFunc invariant1  invariant2  inverse_jacobi_cd  inverse_jacobi_cn  
107 syn keyword maximaFunc inverse_jacobi_cs  inverse_jacobi_dc  inverse_jacobi_dn  
108 syn keyword maximaFunc inverse_jacobi_ds  inverse_jacobi_nc  inverse_jacobi_nd  
109 syn keyword maximaFunc inverse_jacobi_ns  inverse_jacobi_sc  inverse_jacobi_sd  
110 syn keyword maximaFunc inverse_jacobi_sn  invert  is  ishow  isolate  isolate_wrt_times  
111 syn keyword maximaFunc isqrt  itr  j0  j1  jacobi  jacobi_cd  jacobi_cn  jacobi_cs  jacobi_dc  
112 syn keyword maximaFunc jacobi_dn  jacobi_ds  jacobi_nc  jacobi_nd  jacobi_ns  jacobi_sc  
113 syn keyword maximaFunc jacobi_sd  jacobi_sn  jn  kdels  kdelta  keepfloat  kill  killcontext  
114 syn keyword maximaFunc kinvariant  kostka  kt  labels  lambda  laplace  lassociative  last  
115 syn keyword maximaFunc lc2kdt  lc_l  lcm  lc_u  ldefint  ldisp  ldisplay  leinstein  length  
116 syn keyword maximaFunc let  letrat  let_rule_packages  letrules  letsimp  levi_civita  lfg  
117 syn keyword maximaFunc lfreeof  lg  lgtreillis  lhospitallim  lhs  liediff  limit  limsubst  
118 syn keyword maximaFunc linear  linechar  linel  linenum  linsolve  linsolve_params  
119 syn keyword maximaFunc linsolvewarn  listarith  listarray  listconstvars  listdummyvars  
120 syn keyword maximaFunc list_nc_monomials  listoftens  listofvars  listp  lmxchar  load  
121 syn keyword maximaFunc loadfile  loadprint  local  log  logabs  logarc  logconcoeffp  
122 syn keyword maximaFunc logcontract  logexpand  lognegint  lognumer  logsimp  lopow  
123 syn keyword maximaFunc lorentz_gauge  lpart  lratsubst  lriem  lriemann  lsum  ltreillis  
124 syn keyword maximaFunc m1pbranch  macroexpansion  mainvar  make_array  makebox  makefact  
125 syn keyword maximaFunc makegamma  makelist  make_random_state  make_transform  map  mapatom  
126 syn keyword maximaFunc maperror  maplist  matchdeclare  matchfix  matrix  matrix_element_add  
127 syn keyword maximaFunc matrix_element_mult  matrix_element_transpose  matrixmap  matrixp  
128 syn keyword maximaFunc mattrace  max  maxapplydepth  maxapplyheight  maxnegex  maxposex  
129 syn keyword maximaFunc maxtayorder  member  min  %minf  minfactorial  minor  mod  
130 syn keyword maximaFunc mode_check_errorp  mode_checkp  mode_check_warnp  mode_declare  
131 syn keyword maximaFunc mode_identity  modulus  mon2schur  mono  monomial_dimensions  
132 syn keyword maximaFunc multi_elem  multinomial  multi_orbit  multiplicative  multiplicities  
133 syn keyword maximaFunc multi_pui  multsym  multthru  myoptions  nc_degree  ncexpt  ncharpoly  
134 syn keyword maximaFunc negdistrib  negsumdispflag  newcontext  newdet  newton  niceindices  
135 syn keyword maximaFunc niceindicespref  ninth  nm  nmc  noeval  nolabels  nonmetricity  
136 syn keyword maximaFunc nonscalar  nonscalarp  noun  noundisp  nounify  nouns  np  npi  
137 syn keyword maximaFunc nptetrad  nroots  nterms  ntermst  nthroot  ntrig  num  numberp  numer  
138 syn keyword maximaFunc numerval  numfactor  nusum  obase  oddp  ode2  op  openplot_curves  
139 syn keyword maximaFunc operatorp  opproperties  opsubst  optimize  optimprefix  optionset
140 syn keyword maximaFunc orbit  ordergreat  ordergreatp  orderless  orderlessp  outative  
141 syn keyword maximaFunc outchar  outermap  outofpois  packagefile  pade  part  part2cont  
142 syn keyword maximaFunc partfrac  partition  partpol  partswitch  permanent  permut  petrov  
143 syn keyword maximaFunc pfeformat  pi  pickapart  piece  playback  plog  plot2d  plot2d_ps  
144 syn keyword maximaFunc plot3d  plot_options  poisdiff  poisexpt  poisint  poislim  poismap  
145 syn keyword maximaFunc poisplus  poissimp  poisson  poissubst  poistimes  poistrim  polarform  
146 syn keyword maximaFunc polartorect  polynome2ele  posfun  potential  powerdisp  powers  
147 syn keyword maximaFunc powerseries  pred  prederror  primep  print  printpois  printprops  
148 syn keyword maximaFunc prodhack  prodrac  product  programmode  prompt  properties  props  
149 syn keyword maximaFunc propvars  pscom  psdraw_curve  psexpand  psi  pui  pui2comp  pui2ele  
150 syn keyword maximaFunc pui2polynome  pui_direct  puireduc  put  qput  qq  quad_qag  quad_qagi  
151 syn keyword maximaFunc quad_qags  quad_qawc  quad_qawf  quad_qawo  quad_qaws  quanc8  quit  
152 syn keyword maximaFunc qunit  quotient  radcan  radexpand  radsubstflag  random  rank  
153 syn keyword maximaFunc rassociative  rat  ratalgdenom  ratchristof  ratcoef  ratdenom  
154 syn keyword maximaFunc ratdenomdivide  ratdiff  ratdisrep  rateinstein  ratepsilon  ratexpand  
155 syn keyword maximaFunc ratfac  ratmx  ratnumer  ratnump  ratp  ratprint  ratriemann  ratsimp  
156 syn keyword maximaFunc ratsimpexpons  ratsubst  ratvars  ratweight  ratweights  ratweyl  
157 syn keyword maximaFunc ratwtlvl  read  readonly  realonly  realpart  realroots  rearray  
158 syn keyword maximaFunc rectform  recttopolar  rediff  refcheck  rem  remainder  remarray  
159 syn keyword maximaFunc rembox  remcomps  remcon  remcoord  remfun  remfunction  remlet  
160 syn keyword maximaFunc remove  remrule  remsym  remvalue  rename  reset  residue  resolvante  
161 syn keyword maximaFunc resolvante_alternee1  resolvante_bipartite  resolvante_diedrale  
162 syn keyword maximaFunc resolvante_klein  resolvante_klein3  resolvante_produit_sym  
163 syn keyword maximaFunc resolvante_unitaire  resolvante_vierer  rest  resultant  return  
164 syn keyword maximaFunc reveal  reverse  revert  revert2  rhs  ric  ricci  riem  riemann  
165 syn keyword maximaFunc rinvariant  risch  rmxchar  rncombine  %rnum_list  romberg  rombergabs  
166 syn keyword maximaFunc rombergit  rombergmin  rombergtol  room  rootsconmode  rootscontract  
167 syn keyword maximaFunc rootsepsilon  round  row  run_testsuite  save  savedef  savefactors  
168 syn keyword maximaFunc scalarmatrixp  scalarp  scalefactors  scanmap  schur2comp  sconcat  
169 syn keyword maximaFunc scsimp  scurvature  sec  sech  second  setcheck  setcheckbreak  
170 syn keyword maximaFunc setelmx  set_plot_option  set_random_state  setup_autoload  
171 syn keyword maximaFunc set_up_dot_simplifications  setval  seventh  sf  show  showcomps  
172 syn keyword maximaFunc showratvars  showtime  sign  signum  similaritytransform  simpsum  
173 syn keyword maximaFunc simtran  sin  sinh  sinnpiflag  sixth  solve  solvedecomposes  
174 syn keyword maximaFunc solveexplicit  solvefactors  solve_inconsistent_error  solvenullwarn  
175 syn keyword maximaFunc solveradcan  solvetrigwarn  somrac  sort  sparse  spherical_bessel_j  
176 syn keyword maximaFunc spherical_bessel_y  spherical_hankel1  spherical_hankel2  
177 syn keyword maximaFunc spherical_harmonic  splice  sqfr  sqrt  sqrtdispflag  sstatus  
178 syn keyword maximaFunc stardisp  status  string  stringout  sublis  sublis_apply_lambda  
179 syn keyword maximaFunc sublist  submatrix  subst  substinpart  substpart  subvarp  sum  
180 syn keyword maximaFunc sumcontract  sumexpand  sumhack  sumsplitfact  supcontext  symbolp  
181 syn keyword maximaFunc symmetric  symmetricp  system  tan  tanh  taylor  taylordepth  
182 syn keyword maximaFunc taylorinfo  taylor_logexpand  taylor_order_coefficients  taylorp  
183 syn keyword maximaFunc taylor_simplifier  taylor_truncate_polynomials  taytorat  tcl_output  
184 syn keyword maximaFunc tcontract  tellrat  tellsimp  tellsimpafter  tensorkill  tentex  tenth  
185 syn keyword maximaFunc tex  %th  third  throw  time  timer  timer_devalue  timer_info  
186 syn keyword maximaFunc tldefint  tlimit  tlimswitch  todd_coxeter  to_lisp  totaldisrep  
187 syn keyword maximaFunc totalfourier  totient  tpartpol  tr  trace  trace_options  
188 syn keyword maximaFunc transcompile  translate  translate_file  transpose  transrun  
189 syn keyword maximaFunc tr_array_as_ref  tr_bound_function_applyp  treillis  treinat  
190 syn keyword maximaFunc tr_file_tty_messagesp  tr_float_can_branch_complex  
191 syn keyword maximaFunc tr_function_call_default  triangularize  trigexpand  trigexpandplus  
192 syn keyword maximaFunc trigexpandtimes  triginverses  trigrat  trigreduce  trigsign  trigsimp  
193 syn keyword maximaFunc tr_numer  tr_optimize_max_loop  tr_semicompile  tr_state_vars  true  
194 syn keyword maximaFunc trunc  truncate  tr_warn_bad_function_calls  tr_warn_fexpr  
195 syn keyword maximaFunc tr_warnings_get  tr_warn_meval  tr_warn_mode  tr_warn_undeclared  
196 syn keyword maximaFunc tr_warn_undefined_variable  tr_windy  ttyoff  ueivects  ufg  ug  
197 syn keyword maximaFunc ultraspherical  undiff  uniteigenvectors  unitvector  unknown  unorder  
198 syn keyword maximaFunc unsum  untellrat  untimer  untrace  uric  uricci  uriem  uriemann  
199 syn keyword maximaFunc use_fast_arrays  uvect  values  vect_cross  vectorpotential  
200 syn keyword maximaFunc vectorsimp  verb  verbify  verbose  weyl  with_stdout  writefile  
201 syn keyword maximaFunc xgraph_curves  xthru  zerobern  zeroequiv  zeromatrix  zeta  zeta%pi
202 syn match maximaOp "[\*\/\+\-\#\!\~\^\=\:\<\>\@]"
203 " ---------------------- END LIST OF ALL FUNCTIONS (EXCEPT KEYWORDS)  ----------------------
206 syn case match
208 " Labels (supports maxima's goto)
209 syn match   maximaLabel  "^\s*<[a-zA-Z_][a-zA-Z0-9%_]*>"
211 " String and Character constants
212 " Highlight special characters (those which have a backslash) differently
213 syn match   maximaSpecial       contained "\\\d\d\d\|\\."
214 syn region  maximaString        start=+"+  skip=+\\\\\|\\"+  end=+"+ contains=maximaSpecial
215 syn match   maximaCharacter     "'[^\\]'"
216 syn match   maximaSpecialChar   "'\\.'"
218 " number with no fractional part or exponent
219 syn match maximaNumber /\<\d\+\>/
220 " floating point number with integer and fractional parts and optional exponent
221 syn match maximaFloat /\<\d\+\.\d*\([BbDdEeSs][-+]\=\d\+\)\=\>/
222 " floating point number with no integer part and optional exponent
223 syn match maximaFloat /\<\.\d\+\([BbDdEeSs][-+]\=\d\+\)\=\>/
224 " floating point number with no fractional part and optional exponent
225 syn match maximaFloat /\<\d\+[BbDdEeSs][-+]\=\d\+\>/
227 " Comments:
228 " maxima supports /* ... */ (like C)
229 syn keyword maximaTodo contained        TODO Todo DEBUG
230 syn region  maximaCommentBlock  start="/\*" end="\*/"   contains=maximaString,maximaTodo
232 " synchronizing
233 syn sync match maximaSyncComment        grouphere maximaCommentBlock "/*"
234 syn sync match maximaSyncComment        groupthere NONE "*/"
236 " Define the default highlighting.
237 " For version 5.7 and earlier: only when not done already
238 " For version 5.8 and later: only when an item doesn't have highlighting yet
239 if version >= 508 || !exists("did_maxima_syntax_inits")
240   if version < 508
241     let did_maxima_syntax_inits = 1
242     command -nargs=+ HiLink hi link <args>
243   else
244     command -nargs=+ HiLink hi def link <args>
245   endif
247   HiLink maximaBraceError       maximaError
248   HiLink maximaCmd      maximaStatement
249   HiLink maximaCurlyError       maximaError
250   HiLink maximaFuncCmd  maximaStatement
251   HiLink maximaParenError       maximaError
253   " The default methods for highlighting.  Can be overridden later
254   HiLink maximaCharacter        Character
255   HiLink maximaComma    Function
256   HiLink maximaCommentBlock     Comment
257   HiLink maximaConditional      Conditional
258   HiLink maximaError    Error
259   HiLink maximaFunc     Delimiter
260   HiLink maximaOp                 Delimiter
261   HiLink maximaLabel    PreProc
262   HiLink maximaNumber   Number
263   HiLink maximaFloat    Float
264   HiLink maximaRepeat   Repeat
265   HiLink maximaSpecial  Type
266   HiLink maximaSpecialChar      SpecialChar
267   HiLink maximaStatement        Statement
268   HiLink maximaString   String
269   HiLink maximaTodo     Todo
271   delcommand HiLink
272 endif
274 let b:current_syntax = "maxima"