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