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