blob: 258d149e5d7d1981c8d4db0654b1c933551cf10b [file] [log] [blame]
Bram Moolenaar071d4272004-06-13 20:20:40 +00001" Vim syntax file
2" Language: Lisp
3" Maintainer: Dr. Charles E. Campbell, Jr. <NdrOchipS@PcampbellAfamily.Mbiz>
Bram Moolenaarcafda4f2005-09-06 19:25:11 +00004" Last Change: Sep 06, 2005
5" Version: 15
6" URL: http://mysite.verizon.net/astronaut/vim/index.html#vimlinks_syntax
Bram Moolenaar071d4272004-06-13 20:20:40 +00007"
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