xref: /vim-8.2.3635/runtime/syntax/lisp.vim (revision 044b68f4)
1" Vim syntax file
2" Language:    Lisp
3" Maintainer:  Dr. Charles E. Campbell, Jr. <[email protected]>
4" Last Change: Apr 12, 2007
5" Version:     19
6" URL:	       http://mysite.verizon.net/astronaut/vim/index.html#vimlinks_syntax
7"
8"  Thanks to F Xavier Noria for a list of 978 Common Lisp symbols
9"  taken from the HyperSpec
10
11" ---------------------------------------------------------------------
12"  Load Once: {{{1
13" For vim-version 5.x: Clear all syntax items
14" For vim-version 6.x: Quit when a syntax file was already loaded
15if version < 600
16  syntax clear
17elseif exists("b:current_syntax")
18  finish
19endif
20
21if version >= 600
22 setlocal iskeyword=42,43,45,47-58,60-62,64-90,97-122,_
23else
24 set iskeyword=42,43,45,47-58,60-62,64-90,97-122,_
25endif
26
27" ---------------------------------------------------------------------
28" Clusters: {{{1
29syn cluster			 lispAtomCluster		  contains=lispAtomBarSymbol,lispAtomList,lispAtomNmbr0,lispComment,lispDecl,lispFunc,lispLeadWhite
30syn cluster			 lispBaseListCluster		  contains=lispAtom,lispAtomBarSymbol,lispAtomMark,lispBQList,lispBarSymbol,lispComment,lispConcat,lispDecl,lispFunc,lispKey,lispList,lispNumber,lispSpecial,lispSymbol,lispVar,lispLeadWhite
31if exists("g:lisp_instring")
32 syn cluster			 lispListCluster		  contains=@lispBaseListCluster,lispString,lispInString,lispInStringString
33else
34 syn cluster			 lispListCluster		  contains=@lispBaseListCluster,lispString
35endif
36
37syn case ignore
38
39" ---------------------------------------------------------------------
40" Lists: {{{1
41syn match			 lispSymbol			  contained			   ![^()'`,"; \t]\+!
42syn match			 lispBarSymbol			  contained			   !|..\{-}|!
43if exists("g:lisp_rainbow") && g:lisp_rainbow != 0
44 syn region lispParen0           matchgroup=hlLevel0 start="`\=(" end=")" skip="|.\{-}|" contains=@lispListCluster,lispParen1
45 syn region lispParen1 contained matchgroup=hlLevel1 start="`\=(" end=")" skip="|.\{-}|" contains=@lispListCluster,lispParen2
46 syn region lispParen2 contained matchgroup=hlLevel2 start="`\=(" end=")" skip="|.\{-}|" contains=@lispListCluster,lispParen3
47 syn region lispParen3 contained matchgroup=hlLevel3 start="`\=(" end=")" skip="|.\{-}|" contains=@lispListCluster,lispParen4
48 syn region lispParen4 contained matchgroup=hlLevel4 start="`\=(" end=")" skip="|.\{-}|" contains=@lispListCluster,lispParen5
49 syn region lispParen5 contained matchgroup=hlLevel5 start="`\=(" end=")" skip="|.\{-}|" contains=@lispListCluster,lispParen6
50 syn region lispParen6 contained matchgroup=hlLevel6 start="`\=(" end=")" skip="|.\{-}|" contains=@lispListCluster,lispParen7
51 syn region lispParen7 contained matchgroup=hlLevel7 start="`\=(" end=")" skip="|.\{-}|" contains=@lispListCluster,lispParen8
52 syn region lispParen8 contained matchgroup=hlLevel8 start="`\=(" end=")" skip="|.\{-}|" contains=@lispListCluster,lispParen9
53 syn region lispParen9 contained matchgroup=hlLevel9 start="`\=(" end=")" skip="|.\{-}|" contains=@lispListCluster,lispParen0
54else
55 syn region			 lispList			  matchgroup=Delimiter start="("   skip="|.\{-}|"			    matchgroup=Delimiter end=")"	contains=@lispListCluster
56 syn region			 lispBQList			  matchgroup=PreProc   start="`("  skip="|.\{-}|"		    matchgroup=PreProc   end=")"		contains=@lispListCluster
57endif
58
59" ---------------------------------------------------------------------
60" Atoms: {{{1
61syn match			 lispAtomMark			  "'"
62syn match			 lispAtom			  "'("me=e-1			   contains=lispAtomMark	    nextgroup=lispAtomList
63syn match			 lispAtom			  "'[^ \t()]\+"			   contains=lispAtomMark
64syn match			 lispAtomBarSymbol		  !'|..\{-}|!			   contains=lispAtomMark
65syn region			 lispAtom			  start=+'"+			   skip=+\\"+ end=+"+
66syn region			 lispAtomList			  contained			   matchgroup=Special start="("	    skip="|.\{-}|" matchgroup=Special end=")"			      contains=@lispAtomCluster,lispString
67syn match			 lispAtomNmbr			  contained			   "\<\d\+"
68syn match			 lispLeadWhite			  contained			   "^\s\+"
69
70" ---------------------------------------------------------------------
71" Standard Lisp Functions and Macros: {{{1
72syn keyword lispFunc		 *				  find-method			   pprint-indent
73syn keyword lispFunc		 **				  find-package			   pprint-linear
74syn keyword lispFunc		 ***				  find-restart			   pprint-logical-block
75syn keyword lispFunc		 +				  find-symbol			   pprint-newline
76syn keyword lispFunc		 ++				  finish-output			   pprint-pop
77syn keyword lispFunc		 +++				  first				   pprint-tab
78syn keyword lispFunc		 -				  fixnum			   pprint-tabular
79syn keyword lispFunc		 /				  flet				   prin1
80syn keyword lispFunc		 //				  float				   prin1-to-string
81syn keyword lispFunc		 ///				  float-digits			   princ
82syn keyword lispFunc		 /=				  float-precision		   princ-to-string
83syn keyword lispFunc		 1+				  float-radix			   print
84syn keyword lispFunc		 1-				  float-sign			   print-not-readable
85syn keyword lispFunc		 <				  floating-point-inexact	   print-not-readable-object
86syn keyword lispFunc		 <=				  floating-point-invalid-operation print-object
87syn keyword lispFunc		 =				  floating-point-overflow	   print-unreadable-object
88syn keyword lispFunc		 >				  floating-point-underflow	   probe-file
89syn keyword lispFunc		 >=				  floatp			   proclaim
90syn keyword lispFunc		 abort				  floor				   prog
91syn keyword lispFunc		 abs				  fmakunbound			   prog*
92syn keyword lispFunc		 access				  force-output			   prog1
93syn keyword lispFunc		 acons				  format			   prog2
94syn keyword lispFunc		 acos				  formatter			   progn
95syn keyword lispFunc		 acosh				  fourth			   program-error
96syn keyword lispFunc		 add-method			  fresh-line			   progv
97syn keyword lispFunc		 adjoin				  fround			   provide
98syn keyword lispFunc		 adjust-array			  ftruncate			   psetf
99syn keyword lispFunc		 adjustable-array-p		  ftype				   psetq
100syn keyword lispFunc		 allocate-instance		  funcall			   push
101syn keyword lispFunc		 alpha-char-p			  function			   pushnew
102syn keyword lispFunc		 alphanumericp			  function-keywords		   putprop
103syn keyword lispFunc		 and				  function-lambda-expression	   quote
104syn keyword lispFunc		 append				  functionp			   random
105syn keyword lispFunc		 apply				  gbitp				   random-state
106syn keyword lispFunc		 applyhook			  gcd				   random-state-p
107syn keyword lispFunc		 apropos			  generic-function		   rassoc
108syn keyword lispFunc		 apropos-list			  gensym			   rassoc-if
109syn keyword lispFunc		 aref				  gentemp			   rassoc-if-not
110syn keyword lispFunc		 arithmetic-error		  get				   ratio
111syn keyword lispFunc		 arithmetic-error-operands	  get-decoded-time		   rational
112syn keyword lispFunc		 arithmetic-error-operation	  get-dispatch-macro-character	   rationalize
113syn keyword lispFunc		 array				  get-internal-real-time	   rationalp
114syn keyword lispFunc		 array-dimension		  get-internal-run-time		   read
115syn keyword lispFunc		 array-dimension-limit		  get-macro-character		   read-byte
116syn keyword lispFunc		 array-dimensions		  get-output-stream-string	   read-char
117syn keyword lispFunc		 array-displacement		  get-properties		   read-char-no-hang
118syn keyword lispFunc		 array-element-type		  get-setf-expansion		   read-delimited-list
119syn keyword lispFunc		 array-has-fill-pointer-p	  get-setf-method		   read-eval-print
120syn keyword lispFunc		 array-in-bounds-p		  get-universal-time		   read-from-string
121syn keyword lispFunc		 array-rank			  getf				   read-line
122syn keyword lispFunc		 array-rank-limit		  gethash			   read-preserving-whitespace
123syn keyword lispFunc		 array-row-major-index		  go				   read-sequence
124syn keyword lispFunc		 array-total-size		  graphic-char-p		   reader-error
125syn keyword lispFunc		 array-total-size-limit		  handler-bind			   readtable
126syn keyword lispFunc		 arrayp				  handler-case			   readtable-case
127syn keyword lispFunc		 ash				  hash-table			   readtablep
128syn keyword lispFunc		 asin				  hash-table-count		   real
129syn keyword lispFunc		 asinh				  hash-table-p			   realp
130syn keyword lispFunc		 assert				  hash-table-rehash-size	   realpart
131syn keyword lispFunc		 assoc				  hash-table-rehash-threshold	   reduce
132syn keyword lispFunc		 assoc-if			  hash-table-size		   reinitialize-instance
133syn keyword lispFunc		 assoc-if-not			  hash-table-test		   rem
134syn keyword lispFunc		 atan				  host-namestring		   remf
135syn keyword lispFunc		 atanh				  identity			   remhash
136syn keyword lispFunc		 atom				  if				   remove
137syn keyword lispFunc		 base-char			  if-exists			   remove-duplicates
138syn keyword lispFunc		 base-string			  ignorable			   remove-if
139syn keyword lispFunc		 bignum				  ignore			   remove-if-not
140syn keyword lispFunc		 bit				  ignore-errors			   remove-method
141syn keyword lispFunc		 bit-and			  imagpart			   remprop
142syn keyword lispFunc		 bit-andc1			  import			   rename-file
143syn keyword lispFunc		 bit-andc2			  in-package			   rename-package
144syn keyword lispFunc		 bit-eqv			  in-package			   replace
145syn keyword lispFunc		 bit-ior			  incf				   require
146syn keyword lispFunc		 bit-nand			  initialize-instance		   rest
147syn keyword lispFunc		 bit-nor			  inline			   restart
148syn keyword lispFunc		 bit-not			  input-stream-p		   restart-bind
149syn keyword lispFunc		 bit-orc1			  inspect			   restart-case
150syn keyword lispFunc		 bit-orc2			  int-char			   restart-name
151syn keyword lispFunc		 bit-vector			  integer			   return
152syn keyword lispFunc		 bit-vector-p			  integer-decode-float		   return-from
153syn keyword lispFunc		 bit-xor			  integer-length		   revappend
154syn keyword lispFunc		 block				  integerp			   reverse
155syn keyword lispFunc		 boole				  interactive-stream-p		   room
156syn keyword lispFunc		 boole-1			  intern			   rotatef
157syn keyword lispFunc		 boole-2			  internal-time-units-per-second   round
158syn keyword lispFunc		 boole-and			  intersection			   row-major-aref
159syn keyword lispFunc		 boole-andc1			  invalid-method-error		   rplaca
160syn keyword lispFunc		 boole-andc2			  invoke-debugger		   rplacd
161syn keyword lispFunc		 boole-c1			  invoke-restart		   safety
162syn keyword lispFunc		 boole-c2			  invoke-restart-interactively	   satisfies
163syn keyword lispFunc		 boole-clr			  isqrt				   sbit
164syn keyword lispFunc		 boole-eqv			  keyword			   scale-float
165syn keyword lispFunc		 boole-ior			  keywordp			   schar
166syn keyword lispFunc		 boole-nand			  labels			   search
167syn keyword lispFunc		 boole-nor			  lambda			   second
168syn keyword lispFunc		 boole-orc1			  lambda-list-keywords		   sequence
169syn keyword lispFunc		 boole-orc2			  lambda-parameters-limit	   serious-condition
170syn keyword lispFunc		 boole-set			  last				   set
171syn keyword lispFunc		 boole-xor			  lcm				   set-char-bit
172syn keyword lispFunc		 boolean			  ldb				   set-difference
173syn keyword lispFunc		 both-case-p			  ldb-test			   set-dispatch-macro-character
174syn keyword lispFunc		 boundp				  ldiff				   set-exclusive-or
175syn keyword lispFunc		 break				  least-negative-double-float	   set-macro-character
176syn keyword lispFunc		 broadcast-stream		  least-negative-long-float	   set-pprint-dispatch
177syn keyword lispFunc		 broadcast-stream-streams	  least-negative-normalized-double-float			    set-syntax-from-char
178syn keyword lispFunc		 built-in-class			  least-negative-normalized-long-float				    setf
179syn keyword lispFunc		 butlast			  least-negative-normalized-short-float				    setq
180syn keyword lispFunc		 byte				  least-negative-normalized-single-float			    seventh
181syn keyword lispFunc		 byte-position			  least-negative-short-float	   shadow
182syn keyword lispFunc		 byte-size			  least-negative-single-float	   shadowing-import
183syn keyword lispFunc		 call-arguments-limit		  least-positive-double-float	   shared-initialize
184syn keyword lispFunc		 call-method			  least-positive-long-float	   shiftf
185syn keyword lispFunc		 call-next-method		  least-positive-normalized-double-float			    short-float
186syn keyword lispFunc		 capitalize			  least-positive-normalized-long-float				    short-float-epsilon
187syn keyword lispFunc		 car				  least-positive-normalized-short-float				    short-float-negative-epsilon
188syn keyword lispFunc		 case				  least-positive-normalized-single-float			    short-site-name
189syn keyword lispFunc		 catch				  least-positive-short-float	   signal
190syn keyword lispFunc		 ccase				  least-positive-single-float	   signed-byte
191syn keyword lispFunc		 cdr				  length			   signum
192syn keyword lispFunc		 ceiling			  let				   simle-condition
193syn keyword lispFunc		 cell-error			  let*				   simple-array
194syn keyword lispFunc		 cell-error-name		  lisp				   simple-base-string
195syn keyword lispFunc		 cerror				  lisp-implementation-type	   simple-bit-vector
196syn keyword lispFunc		 change-class			  lisp-implementation-version	   simple-bit-vector-p
197syn keyword lispFunc		 char				  list				   simple-condition-format-arguments
198syn keyword lispFunc		 char-bit			  list*				   simple-condition-format-control
199syn keyword lispFunc		 char-bits			  list-all-packages		   simple-error
200syn keyword lispFunc		 char-bits-limit		  list-length			   simple-string
201syn keyword lispFunc		 char-code			  listen			   simple-string-p
202syn keyword lispFunc		 char-code-limit		  listp				   simple-type-error
203syn keyword lispFunc		 char-control-bit		  load				   simple-vector
204syn keyword lispFunc		 char-downcase			  load-logical-pathname-translations				    simple-vector-p
205syn keyword lispFunc		 char-equal			  load-time-value		   simple-warning
206syn keyword lispFunc		 char-font			  locally			   sin
207syn keyword lispFunc		 char-font-limit		  log				   single-flaot-epsilon
208syn keyword lispFunc		 char-greaterp			  logand			   single-float
209syn keyword lispFunc		 char-hyper-bit			  logandc1			   single-float-epsilon
210syn keyword lispFunc		 char-int			  logandc2			   single-float-negative-epsilon
211syn keyword lispFunc		 char-lessp			  logbitp			   sinh
212syn keyword lispFunc		 char-meta-bit			  logcount			   sixth
213syn keyword lispFunc		 char-name			  logeqv			   sleep
214syn keyword lispFunc		 char-not-equal			  logical-pathname		   slot-boundp
215syn keyword lispFunc		 char-not-greaterp		  logical-pathname-translations	   slot-exists-p
216syn keyword lispFunc		 char-not-lessp			  logior			   slot-makunbound
217syn keyword lispFunc		 char-super-bit			  lognand			   slot-missing
218syn keyword lispFunc		 char-upcase			  lognor			   slot-unbound
219syn keyword lispFunc		 char/=				  lognot			   slot-value
220syn keyword lispFunc		 char<				  logorc1			   software-type
221syn keyword lispFunc		 char<=				  logorc2			   software-version
222syn keyword lispFunc		 char=				  logtest			   some
223syn keyword lispFunc		 char>				  logxor			   sort
224syn keyword lispFunc		 char>=				  long-float			   space
225syn keyword lispFunc		 character			  long-float-epsilon		   special
226syn keyword lispFunc		 characterp			  long-float-negative-epsilon	   special-form-p
227syn keyword lispFunc		 check-type			  long-site-name		   special-operator-p
228syn keyword lispFunc		 cis				  loop				   speed
229syn keyword lispFunc		 class				  loop-finish			   sqrt
230syn keyword lispFunc		 class-name			  lower-case-p			   stable-sort
231syn keyword lispFunc		 class-of			  machine-instance		   standard
232syn keyword lispFunc		 clear-input			  machine-type			   standard-char
233syn keyword lispFunc		 clear-output			  machine-version		   standard-char-p
234syn keyword lispFunc		 close				  macro-function		   standard-class
235syn keyword lispFunc		 clrhash			  macroexpand			   standard-generic-function
236syn keyword lispFunc		 code-char			  macroexpand-1			   standard-method
237syn keyword lispFunc		 coerce				  macroexpand-l			   standard-object
238syn keyword lispFunc		 commonp			  macrolet			   step
239syn keyword lispFunc		 compilation-speed		  make-array			   storage-condition
240syn keyword lispFunc		 compile			  make-array			   store-value
241syn keyword lispFunc		 compile-file			  make-broadcast-stream		   stream
242syn keyword lispFunc		 compile-file-pathname		  make-char			   stream-element-type
243syn keyword lispFunc		 compiled-function		  make-concatenated-stream	   stream-error
244syn keyword lispFunc		 compiled-function-p		  make-condition		   stream-error-stream
245syn keyword lispFunc		 compiler-let			  make-dispatch-macro-character	   stream-external-format
246syn keyword lispFunc		 compiler-macro			  make-echo-stream		   streamp
247syn keyword lispFunc		 compiler-macro-function	  make-hash-table		   streamup
248syn keyword lispFunc		 complement			  make-instance			   string
249syn keyword lispFunc		 complex			  make-instances-obsolete	   string-capitalize
250syn keyword lispFunc		 complexp			  make-list			   string-char
251syn keyword lispFunc		 compute-applicable-methods	  make-load-form		   string-char-p
252syn keyword lispFunc		 compute-restarts		  make-load-form-saving-slots	   string-downcase
253syn keyword lispFunc		 concatenate			  make-method			   string-equal
254syn keyword lispFunc		 concatenated-stream		  make-package			   string-greaterp
255syn keyword lispFunc		 concatenated-stream-streams	  make-pathname			   string-left-trim
256syn keyword lispFunc		 cond				  make-random-state		   string-lessp
257syn keyword lispFunc		 condition			  make-sequence			   string-not-equal
258syn keyword lispFunc		 conjugate			  make-string			   string-not-greaterp
259syn keyword lispFunc		 cons				  make-string-input-stream	   string-not-lessp
260syn keyword lispFunc		 consp				  make-string-output-stream	   string-right-strim
261syn keyword lispFunc		 constantly			  make-symbol			   string-right-trim
262syn keyword lispFunc		 constantp			  make-synonym-stream		   string-stream
263syn keyword lispFunc		 continue			  make-two-way-stream		   string-trim
264syn keyword lispFunc		 control-error			  makunbound			   string-upcase
265syn keyword lispFunc		 copy-alist			  map				   string/=
266syn keyword lispFunc		 copy-list			  map-into			   string<
267syn keyword lispFunc		 copy-pprint-dispatch		  mapc				   string<=
268syn keyword lispFunc		 copy-readtable			  mapcan			   string=
269syn keyword lispFunc		 copy-seq			  mapcar			   string>
270syn keyword lispFunc		 copy-structure			  mapcon			   string>=
271syn keyword lispFunc		 copy-symbol			  maphash			   stringp
272syn keyword lispFunc		 copy-tree			  mapl				   structure
273syn keyword lispFunc		 cos				  maplist			   structure-class
274syn keyword lispFunc		 cosh				  mask-field			   structure-object
275syn keyword lispFunc		 count				  max				   style-warning
276syn keyword lispFunc		 count-if			  member			   sublim
277syn keyword lispFunc		 count-if-not			  member-if			   sublis
278syn keyword lispFunc		 ctypecase			  member-if-not			   subseq
279syn keyword lispFunc		 debug				  merge				   subsetp
280syn keyword lispFunc		 decf				  merge-pathname		   subst
281syn keyword lispFunc		 declaim			  merge-pathnames		   subst-if
282syn keyword lispFunc		 declaration			  method			   subst-if-not
283syn keyword lispFunc		 declare			  method-combination		   substitute
284syn keyword lispFunc		 decode-float			  method-combination-error	   substitute-if
285syn keyword lispFunc		 decode-universal-time		  method-qualifiers		   substitute-if-not
286syn keyword lispFunc		 defclass			  min				   subtypep
287syn keyword lispFunc		 defconstant			  minusp			   svref
288syn keyword lispFunc		 defgeneric			  mismatch			   sxhash
289syn keyword lispFunc		 define-compiler-macro		  mod				   symbol
290syn keyword lispFunc		 define-condition		  most-negative-double-float	   symbol-function
291syn keyword lispFunc		 define-method-combination	  most-negative-fixnum		   symbol-macrolet
292syn keyword lispFunc		 define-modify-macro		  most-negative-long-float	   symbol-name
293syn keyword lispFunc		 define-setf-expander		  most-negative-short-float	   symbol-package
294syn keyword lispFunc		 define-setf-method		  most-negative-single-float	   symbol-plist
295syn keyword lispFunc		 define-symbol-macro		  most-positive-double-float	   symbol-value
296syn keyword lispFunc		 defmacro			  most-positive-fixnum		   symbolp
297syn keyword lispFunc		 defmethod			  most-positive-long-float	   synonym-stream
298syn keyword lispFunc		 defpackage			  most-positive-short-float	   synonym-stream-symbol
299syn keyword lispFunc		 defparameter			  most-positive-single-float	   sys
300syn keyword lispFunc		 defsetf			  muffle-warning		   system
301syn keyword lispFunc		 defstruct			  multiple-value-bind		   t
302syn keyword lispFunc		 deftype			  multiple-value-call		   tagbody
303syn keyword lispFunc		 defun				  multiple-value-list		   tailp
304syn keyword lispFunc		 defvar				  multiple-value-prog1		   tan
305syn keyword lispFunc		 delete				  multiple-value-seteq		   tanh
306syn keyword lispFunc		 delete-duplicates		  multiple-value-setq		   tenth
307syn keyword lispFunc		 delete-file			  multiple-values-limit		   terpri
308syn keyword lispFunc		 delete-if			  name-char			   the
309syn keyword lispFunc		 delete-if-not			  namestring			   third
310syn keyword lispFunc		 delete-package			  nbutlast			   throw
311syn keyword lispFunc		 denominator			  nconc				   time
312syn keyword lispFunc		 deposit-field			  next-method-p			   trace
313syn keyword lispFunc		 describe			  nil				   translate-logical-pathname
314syn keyword lispFunc		 describe-object		  nintersection			   translate-pathname
315syn keyword lispFunc		 destructuring-bind		  ninth				   tree-equal
316syn keyword lispFunc		 digit-char			  no-applicable-method		   truename
317syn keyword lispFunc		 digit-char-p			  no-next-method		   truncase
318syn keyword lispFunc		 directory			  not				   truncate
319syn keyword lispFunc		 directory-namestring		  notany			   two-way-stream
320syn keyword lispFunc		 disassemble			  notevery			   two-way-stream-input-stream
321syn keyword lispFunc		 division-by-zero		  notinline			   two-way-stream-output-stream
322syn keyword lispFunc		 do				  nreconc			   type
323syn keyword lispFunc		 do*				  nreverse			   type-error
324syn keyword lispFunc		 do-all-symbols			  nset-difference		   type-error-datum
325syn keyword lispFunc		 do-exeternal-symbols		  nset-exclusive-or		   type-error-expected-type
326syn keyword lispFunc		 do-external-symbols		  nstring			   type-of
327syn keyword lispFunc		 do-symbols			  nstring-capitalize		   typecase
328syn keyword lispFunc		 documentation			  nstring-downcase		   typep
329syn keyword lispFunc		 dolist				  nstring-upcase		   unbound-slot
330syn keyword lispFunc		 dotimes			  nsublis			   unbound-slot-instance
331syn keyword lispFunc		 double-float			  nsubst			   unbound-variable
332syn keyword lispFunc		 double-float-epsilon		  nsubst-if			   undefined-function
333syn keyword lispFunc		 double-float-negative-epsilon	  nsubst-if-not			   unexport
334syn keyword lispFunc		 dpb				  nsubstitute			   unintern
335syn keyword lispFunc		 dribble			  nsubstitute-if		   union
336syn keyword lispFunc		 dynamic-extent			  nsubstitute-if-not		   unless
337syn keyword lispFunc		 ecase				  nth				   unread
338syn keyword lispFunc		 echo-stream			  nth-value			   unread-char
339syn keyword lispFunc		 echo-stream-input-stream	  nthcdr			   unsigned-byte
340syn keyword lispFunc		 echo-stream-output-stream	  null				   untrace
341syn keyword lispFunc		 ed				  number			   unuse-package
342syn keyword lispFunc		 eighth				  numberp			   unwind-protect
343syn keyword lispFunc		 elt				  numerator			   update-instance-for-different-class
344syn keyword lispFunc		 encode-universal-time		  nunion			   update-instance-for-redefined-class
345syn keyword lispFunc		 end-of-file			  oddp				   upgraded-array-element-type
346syn keyword lispFunc		 endp				  open				   upgraded-complex-part-type
347syn keyword lispFunc		 enough-namestring		  open-stream-p			   upper-case-p
348syn keyword lispFunc		 ensure-directories-exist	  optimize			   use-package
349syn keyword lispFunc		 ensure-generic-function	  or				   use-value
350syn keyword lispFunc		 eq				  otherwise			   user
351syn keyword lispFunc		 eql				  output-stream-p		   user-homedir-pathname
352syn keyword lispFunc		 equal				  package			   values
353syn keyword lispFunc		 equalp				  package-error			   values-list
354syn keyword lispFunc		 error				  package-error-package		   vector
355syn keyword lispFunc		 etypecase			  package-name			   vector-pop
356syn keyword lispFunc		 eval				  package-nicknames		   vector-push
357syn keyword lispFunc		 eval-when			  package-shadowing-symbols	   vector-push-extend
358syn keyword lispFunc		 evalhook			  package-use-list		   vectorp
359syn keyword lispFunc		 evenp				  package-used-by-list		   warn
360syn keyword lispFunc		 every				  packagep			   warning
361syn keyword lispFunc		 exp				  pairlis			   when
362syn keyword lispFunc		 export				  parse-error			   wild-pathname-p
363syn keyword lispFunc		 expt				  parse-integer			   with-accessors
364syn keyword lispFunc		 extended-char			  parse-namestring		   with-compilation-unit
365syn keyword lispFunc		 fboundp			  pathname			   with-condition-restarts
366syn keyword lispFunc		 fceiling			  pathname-device		   with-hash-table-iterator
367syn keyword lispFunc		 fdefinition			  pathname-directory		   with-input-from-string
368syn keyword lispFunc		 ffloor				  pathname-host			   with-open-file
369syn keyword lispFunc		 fifth				  pathname-match-p		   with-open-stream
370syn keyword lispFunc		 file-author			  pathname-name			   with-output-to-string
371syn keyword lispFunc		 file-error			  pathname-type			   with-package-iterator
372syn keyword lispFunc		 file-error-pathname		  pathname-version		   with-simple-restart
373syn keyword lispFunc		 file-length			  pathnamep			   with-slots
374syn keyword lispFunc		 file-namestring		  peek-char			   with-standard-io-syntax
375syn keyword lispFunc		 file-position			  phase				   write
376syn keyword lispFunc		 file-stream			  pi				   write-byte
377syn keyword lispFunc		 file-string-length		  plusp				   write-char
378syn keyword lispFunc		 file-write-date		  pop				   write-line
379syn keyword lispFunc		 fill				  position			   write-sequence
380syn keyword lispFunc		 fill-pointer			  position-if			   write-string
381syn keyword lispFunc		 find				  position-if-not		   write-to-string
382syn keyword lispFunc		 find-all-symbols		  pprint			   y-or-n-p
383syn keyword lispFunc		 find-class			  pprint-dispatch		   yes-or-no-p
384syn keyword lispFunc		 find-if			  pprint-exit-if-list-exhausted	   zerop
385syn keyword lispFunc		 find-if-not			  pprint-fill
386
387syn match   lispFunc		 "\<c[ad]\+r\>"
388
389" ---------------------------------------------------------------------
390" Lisp Keywords (modifiers): {{{1
391syn keyword lispKey		 :abort				  :from-end			   :overwrite
392syn keyword lispKey		 :adjustable			  :gensym			   :predicate
393syn keyword lispKey		 :append			  :host				   :preserve-whitespace
394syn keyword lispKey		 :array				  :if-does-not-exist		   :pretty
395syn keyword lispKey		 :base				  :if-exists			   :print
396syn keyword lispKey		 :case				  :include			   :print-function
397syn keyword lispKey		 :circle			  :index			   :probe
398syn keyword lispKey		 :conc-name			  :inherited			   :radix
399syn keyword lispKey		 :constructor			  :initial-contents		   :read-only
400syn keyword lispKey		 :copier			  :initial-element		   :rehash-size
401syn keyword lispKey		 :count				  :initial-offset		   :rehash-threshold
402syn keyword lispKey		 :create			  :initial-value		   :rename
403syn keyword lispKey		 :default			  :input			   :rename-and-delete
404syn keyword lispKey		 :defaults			  :internal			   :size
405syn keyword lispKey		 :device			  :io				   :start
406syn keyword lispKey		 :direction			  :junk-allowed			   :start1
407syn keyword lispKey		 :directory			  :key				   :start2
408syn keyword lispKey		 :displaced-index-offset	  :length			   :stream
409syn keyword lispKey		 :displaced-to			  :level			   :supersede
410syn keyword lispKey		 :element-type			  :name				   :test
411syn keyword lispKey		 :end				  :named			   :test-not
412syn keyword lispKey		 :end1				  :new-version			   :type
413syn keyword lispKey		 :end2				  :nicknames			   :use
414syn keyword lispKey		 :error				  :output			   :verbose
415syn keyword lispKey		 :escape			  :output-file			   :version
416syn keyword lispKey		 :external
417
418" ---------------------------------------------------------------------
419" Standard Lisp Variables: {{{1
420syn keyword lispVar		 *applyhook*			  *load-pathname*		   *print-pprint-dispatch*
421syn keyword lispVar		 *break-on-signals*		  *load-print*			   *print-pprint-dispatch*
422syn keyword lispVar		 *break-on-signals*		  *load-truename*		   *print-pretty*
423syn keyword lispVar		 *break-on-warnings*		  *load-verbose*		   *print-radix*
424syn keyword lispVar		 *compile-file-pathname*	  *macroexpand-hook*		   *print-readably*
425syn keyword lispVar		 *compile-file-pathname*	  *modules*			   *print-right-margin*
426syn keyword lispVar		 *compile-file-truename*	  *package*			   *print-right-margin*
427syn keyword lispVar		 *compile-file-truename*	  *print-array*			   *query-io*
428syn keyword lispVar		 *compile-print*		  *print-base*			   *random-state*
429syn keyword lispVar		 *compile-verbose*		  *print-case*			   *read-base*
430syn keyword lispVar		 *compile-verbose*		  *print-circle*		   *read-default-float-format*
431syn keyword lispVar		 *debug-io*			  *print-escape*		   *read-eval*
432syn keyword lispVar		 *debugger-hook*		  *print-gensym*		   *read-suppress*
433syn keyword lispVar		 *default-pathname-defaults*	  *print-length*		   *readtable*
434syn keyword lispVar		 *error-output*			  *print-level*			   *standard-input*
435syn keyword lispVar		 *evalhook*			  *print-lines*			   *standard-output*
436syn keyword lispVar		 *features*			  *print-miser-width*		   *terminal-io*
437syn keyword lispVar		 *gensym-counter*		  *print-miser-width*		   *trace-output*
438
439" ---------------------------------------------------------------------
440" Strings: {{{1
441syn region			 lispString			  start=+"+ skip=+\\\\\|\\"+ end=+"+	contains=@Spell
442if exists("g:lisp_instring")
443 syn region			 lispInString			  keepend matchgroup=Delimiter start=+"(+rs=s+1 skip=+|.\{-}|+ matchgroup=Delimiter end=+)"+ contains=@lispBaseListCluster,lispInStringString
444 syn region			 lispInStringString		  start=+\\"+ skip=+\\\\+ end=+\\"+ contained
445endif
446
447" ---------------------------------------------------------------------
448" Shared with Xlisp, Declarations, Macros, Functions: {{{1
449syn keyword lispDecl		 defmacro			  do-all-symbols		   labels
450syn keyword lispDecl		 defsetf			  do-external-symbols		   let
451syn keyword lispDecl		 deftype			  do-symbols			   locally
452syn keyword lispDecl		 defun				  dotimes			   macrolet
453syn keyword lispDecl		 do*				  flet				   multiple-value-bind
454
455" ---------------------------------------------------------------------
456" Numbers: supporting integers and floating point numbers {{{1
457syn match lispNumber		 "-\=\(\.\d\+\|\d\+\(\.\d*\)\=\)\(e[-+]\=\d\+\)\="
458
459syn match lispSpecial		 "\*\w[a-z_0-9-]*\*"
460syn match lispSpecial		 !#|[^()'`,"; \t]\+|#!
461syn match lispSpecial		 !#x\x\+!
462syn match lispSpecial		 !#o\o\+!
463syn match lispSpecial		 !#b[01]\+!
464syn match lispSpecial		 !#\\[ -}\~]!
465syn match lispSpecial		 !#[':][^()'`,"; \t]\+!
466syn match lispSpecial		 !#([^()'`,"; \t]\+)!
467syn match lispSpecial		 !#\\\%(Space\|Newline\|Tab\|Page\|Rubout\|Linefeed\|Return\|Backspace\)!
468
469syn match lispConcat		 "\s\.\s"
470syn match lispParenError	 ")"
471
472" ---------------------------------------------------------------------
473" Comments: {{{1
474syn cluster lispCommentGroup	 contains=lispTodo,@Spell
475syn match   lispComment		 ";.*$"				  contains=@lispCommentGroup
476syn region  lispCommentRegion	 start="#|" end="|#"		  contains=lispCommentRegion,@lispCommentGroup
477syn keyword lispTodo		 contained			  combak			   combak:			    todo			     todo:
478
479" ---------------------------------------------------------------------
480" Synchronization: {{{1
481syn sync lines=100
482
483" ---------------------------------------------------------------------
484" Define Highlighting: {{{1
485" For version 5.7 and earlier: only when not done already
486" For version 5.8 and later: only when an item doesn't have highlighting yet
487if version >= 508
488  command -nargs=+ HiLink hi def link <args>
489
490  HiLink lispCommentRegion	 lispComment
491  HiLink lispAtomNmbr		 lispNumber
492  HiLink lispAtomMark		 lispMark
493  HiLink lispInStringString	 lispString
494
495  HiLink lispAtom		 Identifier
496  HiLink lispAtomBarSymbol	 Special
497  HiLink lispBarSymbol		 Special
498  HiLink lispComment		 Comment
499  HiLink lispConcat		 Statement
500  HiLink lispDecl		 Statement
501  HiLink lispFunc		 Statement
502  HiLink lispKey		 Type
503  HiLink lispMark		 Delimiter
504  HiLink lispNumber		 Number
505  HiLink lispParenError		 Error
506  HiLink lispSpecial		 Type
507  HiLink lispString		 String
508  HiLink lispTodo		 Todo
509  HiLink lispVar		 Statement
510
511  if exists("g:lisp_rainbow") && g:lisp_rainbow != 0
512   if &bg == "dark"
513    hi def hlLevel0 ctermfg=red         guifg=red1
514    hi def hlLevel1 ctermfg=yellow      guifg=orange1
515    hi def hlLevel2 ctermfg=green       guifg=yellow1
516    hi def hlLevel3 ctermfg=cyan        guifg=greenyellow
517    hi def hlLevel4 ctermfg=magenta     guifg=green1
518    hi def hlLevel5 ctermfg=red         guifg=springgreen1
519    hi def hlLevel6 ctermfg=yellow      guifg=cyan1
520    hi def hlLevel7 ctermfg=green       guifg=slateblue1
521    hi def hlLevel8 ctermfg=cyan        guifg=magenta1
522    hi def hlLevel9 ctermfg=magenta     guifg=purple1
523   else
524    hi def hlLevel0 ctermfg=red         guifg=red3
525    hi def hlLevel1 ctermfg=darkyellow  guifg=orangered3
526    hi def hlLevel2 ctermfg=darkgreen   guifg=orange2
527    hi def hlLevel3 ctermfg=blue        guifg=yellow3
528    hi def hlLevel4 ctermfg=darkmagenta guifg=olivedrab4
529    hi def hlLevel5 ctermfg=red         guifg=green4
530    hi def hlLevel6 ctermfg=darkyellow  guifg=paleturquoise3
531    hi def hlLevel7 ctermfg=darkgreen   guifg=deepskyblue4
532    hi def hlLevel8 ctermfg=blue        guifg=darkslateblue
533    hi def hlLevel9 ctermfg=darkmagenta guifg=darkviolet
534   endif
535  endif
536
537  delcommand HiLink
538endif
539
540let b:current_syntax = "lisp"
541
542" ---------------------------------------------------------------------
543" vim: ts=8 nowrap fdm=marker
544