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