blob: 5350b4dc510eb44e45f0d727a49ee9b4d9118606 [file] [log] [blame]
Bram Moolenaar071d4272004-06-13 20:20:40 +00001" Vim syntax file
2" Language: Lisp
Christian Brabandtf9ca1392024-02-19 20:37:11 +01003" Maintainer: This runtime file is looking for a new maintainer.
4" Former Maintainer: Charles E. Campbell
Bram Moolenaar519cc552021-11-16 19:18:26 +00005" Last Change: Nov 10, 2021
Christian Brabandtf9ca1392024-02-19 20:37:11 +01006" 2024 Feb 19 by Vim Project (announce adoption)
Bram Moolenaar519cc552021-11-16 19:18:26 +00007" Version: 31
Christian Brabandtf9ca1392024-02-19 20:37:11 +01008" Former URL: http://www.drchip.org/astronaut/vim/index.html#SYNTAX_LISP
Bram Moolenaar071d4272004-06-13 20:20:40 +00009"
Bram Moolenaare2719092015-01-10 15:09:25 +010010" Thanks to F Xavier Noria for a list of 978 Common Lisp symbols taken from HyperSpec
Bram Moolenaar8c8de832008-06-24 22:58:06 +000011" Clisp additions courtesy of http://clisp.cvs.sourceforge.net/*checkout*/clisp/clisp/emacs/lisp.vim
Bram Moolenaar071d4272004-06-13 20:20:40 +000012
Bram Moolenaara5792f52005-11-23 21:25:05 +000013" ---------------------------------------------------------------------
Bram Moolenaaraf289d32005-10-12 21:01:44 +000014" Load Once: {{{1
Bram Moolenaare2719092015-01-10 15:09:25 +010015if exists("b:current_syntax")
16 finish
Bram Moolenaar071d4272004-06-13 20:20:40 +000017endif
18
Bram Moolenaare2719092015-01-10 15:09:25 +010019if exists("g:lisp_isk")
20 exe "setl isk=".g:lisp_isk
Bram Moolenaar723dd942019-04-04 13:11:03 +020021elseif (v:version == 704 && has("patch-7.4.1142")) || v:version > 704
Bram Moolenaar13d5aee2016-01-21 23:36:05 +010022 syn iskeyword 38,42,43,45,47-58,60-62,64-90,97-122,_
Bram Moolenaar723dd942019-04-04 13:11:03 +020023else
24 setl isk=38,42,43,45,47-58,60-62,64-90,97-122,_
Bram Moolenaar8c8de832008-06-24 22:58:06 +000025endif
26
27if exists("g:lispsyntax_ignorecase") || exists("g:lispsyntax_clisp")
28 set ignorecase
Bram Moolenaar071d4272004-06-13 20:20:40 +000029endif
30
Bram Moolenaara5792f52005-11-23 21:25:05 +000031" ---------------------------------------------------------------------
Bram Moolenaaraf289d32005-10-12 21:01:44 +000032" Clusters: {{{1
Bram Moolenaar8c8de832008-06-24 22:58:06 +000033syn cluster lispAtomCluster contains=lispAtomBarSymbol,lispAtomList,lispAtomNmbr0,lispComment,lispDecl,lispFunc,lispLeadWhite
Bram Moolenaar81af9252010-12-10 20:35:50 +010034syn cluster lispBaseListCluster contains=lispAtom,lispAtomBarSymbol,lispAtomMark,lispBQList,lispBarSymbol,lispComment,lispConcat,lispDecl,lispFunc,lispKey,lispList,lispNumber,lispEscapeSpecial,lispSymbol,lispVar,lispLeadWhite
Bram Moolenaaraf289d32005-10-12 21:01:44 +000035if exists("g:lisp_instring")
Bram Moolenaar8c8de832008-06-24 22:58:06 +000036 syn cluster lispListCluster contains=@lispBaseListCluster,lispString,lispInString,lispInStringString
Bram Moolenaaraf289d32005-10-12 21:01:44 +000037else
Bram Moolenaar8c8de832008-06-24 22:58:06 +000038 syn cluster lispListCluster contains=@lispBaseListCluster,lispString
Bram Moolenaaraf289d32005-10-12 21:01:44 +000039endif
Bram Moolenaar071d4272004-06-13 20:20:40 +000040
Bram Moolenaarc81e5e72007-05-05 18:24:42 +000041syn case ignore
42
Bram Moolenaara5792f52005-11-23 21:25:05 +000043" ---------------------------------------------------------------------
Bram Moolenaaraf289d32005-10-12 21:01:44 +000044" Lists: {{{1
Bram Moolenaar51ad4ea2018-04-06 11:14:11 +020045syn match lispSymbol contained ![^()'`,"; \t]\+!
46syn match lispBarSymbol contained !|..\{-}|!
Bram Moolenaaraf289d32005-10-12 21:01:44 +000047if exists("g:lisp_rainbow") && g:lisp_rainbow != 0
Bram Moolenaar8c8de832008-06-24 22:58:06 +000048 syn region lispParen0 matchgroup=hlLevel0 start="`\=(" end=")" skip="|.\{-}|" contains=@lispListCluster,lispParen1
49 syn region lispParen1 contained matchgroup=hlLevel1 start="`\=(" end=")" skip="|.\{-}|" contains=@lispListCluster,lispParen2
50 syn region lispParen2 contained matchgroup=hlLevel2 start="`\=(" end=")" skip="|.\{-}|" contains=@lispListCluster,lispParen3
51 syn region lispParen3 contained matchgroup=hlLevel3 start="`\=(" end=")" skip="|.\{-}|" contains=@lispListCluster,lispParen4
52 syn region lispParen4 contained matchgroup=hlLevel4 start="`\=(" end=")" skip="|.\{-}|" contains=@lispListCluster,lispParen5
53 syn region lispParen5 contained matchgroup=hlLevel5 start="`\=(" end=")" skip="|.\{-}|" contains=@lispListCluster,lispParen6
54 syn region lispParen6 contained matchgroup=hlLevel6 start="`\=(" end=")" skip="|.\{-}|" contains=@lispListCluster,lispParen7
55 syn region lispParen7 contained matchgroup=hlLevel7 start="`\=(" end=")" skip="|.\{-}|" contains=@lispListCluster,lispParen8
56 syn region lispParen8 contained matchgroup=hlLevel8 start="`\=(" end=")" skip="|.\{-}|" contains=@lispListCluster,lispParen9
Bram Moolenaaraf289d32005-10-12 21:01:44 +000057 syn region lispParen9 contained matchgroup=hlLevel9 start="`\=(" end=")" skip="|.\{-}|" contains=@lispListCluster,lispParen0
Bram Moolenaar071d4272004-06-13 20:20:40 +000058else
Bram Moolenaar519cc552021-11-16 19:18:26 +000059 syn region lispList matchgroup=lispParen start="(" skip="|.\{-}|" matchgroup=lispParen end=")" contains=@lispListCluster
60 syn region lispBQList matchgroup=PreProc start="`(" skip="|.\{-}|" matchgroup=PreProc end=")" contains=@lispListCluster
Bram Moolenaar071d4272004-06-13 20:20:40 +000061endif
Bram Moolenaaraf289d32005-10-12 21:01:44 +000062
Bram Moolenaara5792f52005-11-23 21:25:05 +000063" ---------------------------------------------------------------------
Bram Moolenaaraf289d32005-10-12 21:01:44 +000064" Atoms: {{{1
Bram Moolenaar519cc552021-11-16 19:18:26 +000065syn match lispAtomMark "'"
66syn match lispAtom "'("me=e-1 contains=lispAtomMark nextgroup=lispAtomList
67syn match lispAtom "'[^ \t()]\+" contains=lispAtomMark
68syn match lispAtomBarSymbol !'|..\{-}|! contains=lispAtomMark
69syn region lispAtom start=+'"+ skip=+\\"+ end=+"+
70syn region lispAtomList contained matchgroup=Special start="(" skip="|.\{-}|" matchgroup=Special end=")" contains=@lispAtomCluster,lispString,lispEscapeSpecial
71syn match lispAtomNmbr contained "\<\d\+"
72syn match lispLeadWhite contained "^\s\+"
Bram Moolenaar071d4272004-06-13 20:20:40 +000073
Bram Moolenaara5792f52005-11-23 21:25:05 +000074" ---------------------------------------------------------------------
Bram Moolenaaraf289d32005-10-12 21:01:44 +000075" Standard Lisp Functions and Macros: {{{1
Bram Moolenaar51ad4ea2018-04-06 11:14:11 +020076syn keyword lispFunc < find-method pprint-indent
77syn keyword lispFunc <= find-package pprint-linear
78syn keyword lispFunc = find-restart pprint-logical-block
79syn keyword lispFunc > find-symbol pprint-newline
80syn keyword lispFunc >= finish-output pprint-pop
81syn keyword lispFunc - first pprint-tab
82syn keyword lispFunc / fixnum pprint-tabular
83syn keyword lispFunc /= flet prin1
84syn keyword lispFunc // float prin1-to-string
85syn keyword lispFunc /// float-digits princ
86syn keyword lispFunc * floating-point-inexact princ-to-string
87syn keyword lispFunc ** floating-point-invalid-operation print
88syn keyword lispFunc *** floating-point-overflow print-not-readable
89syn keyword lispFunc + floating-point-underflow print-not-readable-object
90syn keyword lispFunc ++ floatp print-object
91syn keyword lispFunc +++ float-precision print-unreadable-object
92syn keyword lispFunc 1- float-radix probe-file
93syn keyword lispFunc 1+ float-sign proclaim
94syn keyword lispFunc abort floor prog
95syn keyword lispFunc abs fmakunbound prog*
96syn keyword lispFunc access force-output prog1
97syn keyword lispFunc acons format prog2
98syn keyword lispFunc acos formatter progn
99syn keyword lispFunc acosh fourth program-error
100syn keyword lispFunc add-method fresh-line progv
101syn keyword lispFunc adjoin fround provide
102syn keyword lispFunc adjustable-array-p ftruncate psetf
103syn keyword lispFunc adjust-array ftype psetq
104syn keyword lispFunc allocate-instance funcall push
105syn keyword lispFunc alpha-char-p function pushnew
106syn keyword lispFunc alphanumericp function-keywords putprop
107syn keyword lispFunc and function-lambda-expression quote
108syn keyword lispFunc append functionp random
109syn keyword lispFunc apply gbitp random-state
110syn keyword lispFunc applyhook gcd random-state-p
111syn keyword lispFunc apropos generic-function rassoc
112syn keyword lispFunc apropos-list gensym rassoc-if
113syn keyword lispFunc aref gentemp rassoc-if-not
114syn keyword lispFunc arithmetic-error get ratio
115syn keyword lispFunc arithmetic-error-operands get-decoded-time rational
116syn keyword lispFunc arithmetic-error-operation get-dispatch-macro-character rationalize
117syn keyword lispFunc array getf rationalp
118syn keyword lispFunc array-dimension gethash read
119syn keyword lispFunc array-dimension-limit get-internal-real-time read-byte
120syn keyword lispFunc array-dimensions get-internal-run-time read-char
121syn keyword lispFunc array-displacement get-macro-character read-char-no-hang
122syn keyword lispFunc array-element-type get-output-stream-string read-delimited-list
123syn keyword lispFunc array-has-fill-pointer-p get-properties reader-error
124syn keyword lispFunc array-in-bounds-p get-setf-expansion read-eval-print
125syn keyword lispFunc arrayp get-setf-method read-from-string
126syn keyword lispFunc array-rank get-universal-time read-line
127syn keyword lispFunc array-rank-limit go read-preserving-whitespace
128syn keyword lispFunc array-row-major-index graphic-char-p read-sequence
129syn keyword lispFunc array-total-size handler-bind readtable
130syn keyword lispFunc array-total-size-limit handler-case readtable-case
131syn keyword lispFunc ash hash-table readtablep
132syn keyword lispFunc asin hash-table-count real
133syn keyword lispFunc asinh hash-table-p realp
134syn keyword lispFunc assert hash-table-rehash-size realpart
135syn keyword lispFunc assoc hash-table-rehash-threshold reduce
136syn keyword lispFunc assoc-if hash-table-size reinitialize-instance
137syn keyword lispFunc assoc-if-not hash-table-test rem
138syn keyword lispFunc atan host-namestring remf
139syn keyword lispFunc atanh identity remhash
140syn keyword lispFunc atom if remove
141syn keyword lispFunc base-char if-exists remove-duplicates
142syn keyword lispFunc base-string ignorable remove-if
143syn keyword lispFunc bignum ignore remove-if-not
144syn keyword lispFunc bit ignore-errors remove-method
145syn keyword lispFunc bit-and imagpart remprop
146syn keyword lispFunc bit-andc1 import rename-file
147syn keyword lispFunc bit-andc2 incf rename-package
148syn keyword lispFunc bit-eqv initialize-instance replace
149syn keyword lispFunc bit-ior inline require
150syn keyword lispFunc bit-nand in-package rest
151syn keyword lispFunc bit-nor in-package restart
152syn keyword lispFunc bit-not input-stream-p restart-bind
153syn keyword lispFunc bit-orc1 inspect restart-case
154syn keyword lispFunc bit-orc2 int-char restart-name
155syn keyword lispFunc bit-vector integer return
156syn keyword lispFunc bit-vector-p integer-decode-float return-from
157syn keyword lispFunc bit-xor integer-length revappend
158syn keyword lispFunc block integerp reverse
159syn keyword lispFunc boole interactive-stream-p room
160syn keyword lispFunc boole-1 intern rotatef
161syn keyword lispFunc boole-2 internal-time-units-per-second round
162syn keyword lispFunc boolean intersection row-major-aref
163syn keyword lispFunc boole-and invalid-method-error rplaca
164syn keyword lispFunc boole-andc1 invoke-debugger rplacd
165syn keyword lispFunc boole-andc2 invoke-restart safety
166syn keyword lispFunc boole-c1 invoke-restart-interactively satisfies
167syn keyword lispFunc boole-c2 isqrt sbit
168syn keyword lispFunc boole-clr keyword scale-float
169syn keyword lispFunc boole-eqv keywordp schar
170syn keyword lispFunc boole-ior labels search
171syn keyword lispFunc boole-nand lambda second
172syn keyword lispFunc boole-nor lambda-list-keywords sequence
173syn keyword lispFunc boole-orc1 lambda-parameters-limit serious-condition
174syn keyword lispFunc boole-orc2 last set
175syn keyword lispFunc boole-set lcm set-char-bit
176syn keyword lispFunc boole-xor ldb set-difference
177syn keyword lispFunc both-case-p ldb-test set-dispatch-macro-character
178syn keyword lispFunc boundp ldiff set-exclusive-or
179syn keyword lispFunc break least-negative-double-float setf
180syn keyword lispFunc broadcast-stream least-negative-long-float set-macro-character
181syn keyword lispFunc broadcast-stream-streams least-negative-normalized-double-float set-pprint-dispatch
182syn keyword lispFunc built-in-class least-negative-normalized-long-float setq
183syn keyword lispFunc butlast least-negative-normalized-short-float set-syntax-from-char
184syn keyword lispFunc byte least-negative-normalized-single-float seventh
185syn keyword lispFunc byte-position least-negative-short-float shadow
186syn keyword lispFunc byte-size least-negative-single-float shadowing-import
187syn keyword lispFunc call-arguments-limit least-positive-double-float shared-initialize
188syn keyword lispFunc call-method least-positive-long-float shiftf
189syn keyword lispFunc call-next-method least-positive-normalized-double-float short-float
190syn keyword lispFunc capitalize least-positive-normalized-long-float short-float-epsilon
191syn keyword lispFunc car least-positive-normalized-short-float short-float-negative-epsilon
192syn keyword lispFunc case least-positive-normalized-single-float short-site-name
193syn keyword lispFunc catch least-positive-short-float signal
194syn keyword lispFunc ccase least-positive-single-float signed-byte
195syn keyword lispFunc cdr length signum
196syn keyword lispFunc ceiling let simple-array
197syn keyword lispFunc cell-error let* simple-base-string
198syn keyword lispFunc cell-error-name lisp simple-bit-vector
199syn keyword lispFunc cerror lisp-implementation-type simple-bit-vector-p
200syn keyword lispFunc change-class lisp-implementation-version simple-condition
201syn keyword lispFunc char list simple-condition-format-arguments
202syn keyword lispFunc char< list* simple-condition-format-control
203syn keyword lispFunc char<= list-all-packages simple-error
204syn keyword lispFunc char= listen simple-string
205syn keyword lispFunc char> list-length simple-string-p
206syn keyword lispFunc char>= listp simple-type-error
207syn keyword lispFunc char/= load simple-vector
208syn keyword lispFunc character load-logical-pathname-translations simple-vector-p
209syn keyword lispFunc characterp load-time-value simple-warning
210syn keyword lispFunc char-bit locally sin
211syn keyword lispFunc char-bits log single-flaot-epsilon
212syn keyword lispFunc char-bits-limit logand single-float
213syn keyword lispFunc char-code logandc1 single-float-epsilon
214syn keyword lispFunc char-code-limit logandc2 single-float-negative-epsilon
215syn keyword lispFunc char-control-bit logbitp sinh
216syn keyword lispFunc char-downcase logcount sixth
217syn keyword lispFunc char-equal logeqv sleep
218syn keyword lispFunc char-font logical-pathname slot-boundp
219syn keyword lispFunc char-font-limit logical-pathname-translations slot-exists-p
220syn keyword lispFunc char-greaterp logior slot-makunbound
221syn keyword lispFunc char-hyper-bit lognand slot-missing
222syn keyword lispFunc char-int lognor slot-unbound
223syn keyword lispFunc char-lessp lognot slot-value
224syn keyword lispFunc char-meta-bit logorc1 software-type
225syn keyword lispFunc char-name logorc2 software-version
226syn keyword lispFunc char-not-equal logtest some
227syn keyword lispFunc char-not-greaterp logxor sort
228syn keyword lispFunc char-not-lessp long-float space
229syn keyword lispFunc char-super-bit long-float-epsilon special
230syn keyword lispFunc char-upcase long-float-negative-epsilon special-form-p
231syn keyword lispFunc check-type long-site-name special-operator-p
232syn keyword lispFunc cis loop speed
233syn keyword lispFunc class loop-finish sqrt
234syn keyword lispFunc class-name lower-case-p stable-sort
235syn keyword lispFunc class-of machine-instance standard
236syn keyword lispFunc clear-input machine-type standard-char
237syn keyword lispFunc clear-output machine-version standard-char-p
238syn keyword lispFunc close macroexpand standard-class
239syn keyword lispFunc clrhash macroexpand-1 standard-generic-function
240syn keyword lispFunc code-char macroexpand-l standard-method
241syn keyword lispFunc coerce macro-function standard-object
242syn keyword lispFunc commonp macrolet step
243syn keyword lispFunc compilation-speed make-array storage-condition
244syn keyword lispFunc compile make-array store-value
245syn keyword lispFunc compiled-function make-broadcast-stream stream
246syn keyword lispFunc compiled-function-p make-char stream-element-type
247syn keyword lispFunc compile-file make-concatenated-stream stream-error
248syn keyword lispFunc compile-file-pathname make-condition stream-error-stream
249syn keyword lispFunc compiler-let make-dispatch-macro-character stream-external-format
250syn keyword lispFunc compiler-macro make-echo-stream streamp
251syn keyword lispFunc compiler-macro-function make-hash-table streamup
252syn keyword lispFunc complement make-instance string
253syn keyword lispFunc complex make-instances-obsolete string<
254syn keyword lispFunc complexp make-list string<=
255syn keyword lispFunc compute-applicable-methods make-load-form string=
256syn keyword lispFunc compute-restarts make-load-form-saving-slots string>
257syn keyword lispFunc concatenate make-method string>=
258syn keyword lispFunc concatenated-stream make-package string/=
259syn keyword lispFunc concatenated-stream-streams make-pathname string-capitalize
260syn keyword lispFunc cond make-random-state string-char
261syn keyword lispFunc condition make-sequence string-char-p
262syn keyword lispFunc conjugate make-string string-downcase
263syn keyword lispFunc cons make-string-input-stream string-equal
264syn keyword lispFunc consp make-string-output-stream string-greaterp
265syn keyword lispFunc constantly make-symbol string-left-trim
266syn keyword lispFunc constantp make-synonym-stream string-lessp
267syn keyword lispFunc continue make-two-way-stream string-not-equal
268syn keyword lispFunc control-error makunbound string-not-greaterp
269syn keyword lispFunc copy-alist map string-not-lessp
270syn keyword lispFunc copy-list mapc stringp
271syn keyword lispFunc copy-pprint-dispatch mapcan string-right-strim
272syn keyword lispFunc copy-readtable mapcar string-right-trim
273syn keyword lispFunc copy-seq mapcon string-stream
274syn keyword lispFunc copy-structure maphash string-trim
275syn keyword lispFunc copy-symbol map-into string-upcase
276syn keyword lispFunc copy-tree mapl structure
277syn keyword lispFunc cos maplist structure-class
278syn keyword lispFunc cosh mask-field structure-object
279syn keyword lispFunc count max style-warning
280syn keyword lispFunc count-if member sublim
281syn keyword lispFunc count-if-not member-if sublis
282syn keyword lispFunc ctypecase member-if-not subseq
283syn keyword lispFunc debug merge subsetp
284syn keyword lispFunc decf merge-pathname subst
285syn keyword lispFunc declaim merge-pathnames subst-if
286syn keyword lispFunc declaration method subst-if-not
287syn keyword lispFunc declare method-combination substitute
288syn keyword lispFunc decode-float method-combination-error substitute-if
289syn keyword lispFunc decode-universal-time method-qualifiers substitute-if-not
290syn keyword lispFunc defclass min subtypep
291syn keyword lispFunc defconstant minusp svref
292syn keyword lispFunc defgeneric mismatch sxhash
293syn keyword lispFunc define-compiler-macro mod symbol
294syn keyword lispFunc define-condition most-negative-double-float symbol-function
295syn keyword lispFunc define-method-combination most-negative-fixnum symbol-macrolet
296syn keyword lispFunc define-modify-macro most-negative-long-float symbol-name
297syn keyword lispFunc define-setf-expander most-negative-short-float symbolp
298syn keyword lispFunc define-setf-method most-negative-single-float symbol-package
299syn keyword lispFunc define-symbol-macro most-positive-double-float symbol-plist
300syn keyword lispFunc defmacro most-positive-fixnum symbol-value
301syn keyword lispFunc defmethod most-positive-long-float synonym-stream
302syn keyword lispFunc defpackage most-positive-short-float synonym-stream-symbol
303syn keyword lispFunc defparameter most-positive-single-float sys
304syn keyword lispFunc defsetf muffle-warning system
305syn keyword lispFunc defstruct multiple-value-bind t
306syn keyword lispFunc deftype multiple-value-call tagbody
307syn keyword lispFunc defun multiple-value-list tailp
308syn keyword lispFunc defvar multiple-value-prog1 tan
309syn keyword lispFunc delete multiple-value-seteq tanh
310syn keyword lispFunc delete-duplicates multiple-value-setq tenth
311syn keyword lispFunc delete-file multiple-values-limit terpri
312syn keyword lispFunc delete-if name-char the
313syn keyword lispFunc delete-if-not namestring third
314syn keyword lispFunc delete-package nbutlast throw
315syn keyword lispFunc denominator nconc time
316syn keyword lispFunc deposit-field next-method-p trace
317syn keyword lispFunc describe nil translate-logical-pathname
318syn keyword lispFunc describe-object nintersection translate-pathname
319syn keyword lispFunc destructuring-bind ninth tree-equal
320syn keyword lispFunc digit-char no-applicable-method truename
321syn keyword lispFunc digit-char-p no-next-method truncase
322syn keyword lispFunc directory not truncate
323syn keyword lispFunc directory-namestring notany two-way-stream
324syn keyword lispFunc disassemble notevery two-way-stream-input-stream
325syn keyword lispFunc division-by-zero notinline two-way-stream-output-stream
326syn keyword lispFunc do nreconc type
327syn keyword lispFunc do* nreverse typecase
328syn keyword lispFunc do-all-symbols nset-difference type-error
329syn keyword lispFunc documentation nset-exclusive-or type-error-datum
330syn keyword lispFunc do-exeternal-symbols nstring type-error-expected-type
331syn keyword lispFunc do-external-symbols nstring-capitalize type-of
332syn keyword lispFunc dolist nstring-downcase typep
333syn keyword lispFunc do-symbols nstring-upcase unbound-slot
334syn keyword lispFunc dotimes nsublis unbound-slot-instance
335syn keyword lispFunc double-float nsubst unbound-variable
336syn keyword lispFunc double-float-epsilon nsubst-if undefined-function
337syn keyword lispFunc double-float-negative-epsilon nsubst-if-not unexport
338syn keyword lispFunc dpb nsubstitute unintern
339syn keyword lispFunc dribble nsubstitute-if union
340syn keyword lispFunc dynamic-extent nsubstitute-if-not unless
341syn keyword lispFunc ecase nth unread
342syn keyword lispFunc echo-stream nthcdr unread-char
343syn keyword lispFunc echo-stream-input-stream nth-value unsigned-byte
344syn keyword lispFunc echo-stream-output-stream null untrace
345syn keyword lispFunc ed number unuse-package
346syn keyword lispFunc eighth numberp unwind-protect
347syn keyword lispFunc elt numerator update-instance-for-different-class
348syn keyword lispFunc encode-universal-time nunion update-instance-for-redefined-class
349syn keyword lispFunc end-of-file oddp upgraded-array-element-type
350syn keyword lispFunc endp open upgraded-complex-part-type
351syn keyword lispFunc enough-namestring open-stream-p upper-case-p
352syn keyword lispFunc ensure-directories-exist optimize use-package
353syn keyword lispFunc ensure-generic-function or user
354syn keyword lispFunc eq otherwise user-homedir-pathname
355syn keyword lispFunc eql output-stream-p use-value
356syn keyword lispFunc equal package values
357syn keyword lispFunc equalp package-error values-list
358syn keyword lispFunc error package-error-package variable
359syn keyword lispFunc etypecase package-name vector
360syn keyword lispFunc eval package-nicknames vectorp
361syn keyword lispFunc evalhook packagep vector-pop
362syn keyword lispFunc eval-when package-shadowing-symbols vector-push
363syn keyword lispFunc evenp package-used-by-list vector-push-extend
364syn keyword lispFunc every package-use-list warn
365syn keyword lispFunc exp pairlis warning
366syn keyword lispFunc export parse-error when
367syn keyword lispFunc expt parse-integer wild-pathname-p
368syn keyword lispFunc extended-char parse-namestring with-accessors
369syn keyword lispFunc fboundp pathname with-compilation-unit
370syn keyword lispFunc fceiling pathname-device with-condition-restarts
371syn keyword lispFunc fdefinition pathname-directory with-hash-table-iterator
372syn keyword lispFunc ffloor pathname-host with-input-from-string
373syn keyword lispFunc fifth pathname-match-p with-open-file
374syn keyword lispFunc file-author pathname-name with-open-stream
375syn keyword lispFunc file-error pathnamep with-output-to-string
376syn keyword lispFunc file-error-pathname pathname-type with-package-iterator
377syn keyword lispFunc file-length pathname-version with-simple-restart
378syn keyword lispFunc file-namestring peek-char with-slots
379syn keyword lispFunc file-position phase with-standard-io-syntax
380syn keyword lispFunc file-stream pi write
381syn keyword lispFunc file-string-length plusp write-byte
382syn keyword lispFunc file-write-date pop write-char
383syn keyword lispFunc fill position write-line
384syn keyword lispFunc fill-pointer position-if write-sequence
385syn keyword lispFunc find position-if-not write-string
386syn keyword lispFunc find-all-symbols pprint write-to-string
387syn keyword lispFunc find-class pprint-dispatch yes-or-no-p
388syn keyword lispFunc find-if pprint-exit-if-list-exhausted y-or-n-p
389syn keyword lispFunc find-if-not pprint-fill zerop
Bram Moolenaar071d4272004-06-13 20:20:40 +0000390
Bram Moolenaar8c8de832008-06-24 22:58:06 +0000391syn match lispFunc "\<c[ad]\+r\>"
392if exists("g:lispsyntax_clisp")
393 " CLISP FFI:
394 syn match lispFunc "\<\(ffi:\)\?with-c-\(place\|var\)\>"
395 syn match lispFunc "\<\(ffi:\)\?with-foreign-\(object\|string\)\>"
396 syn match lispFunc "\<\(ffi:\)\?default-foreign-\(language\|library\)\>"
397 syn match lispFunc "\<\([us]_\?\)\?\(element\|deref\|cast\|slot\|validp\)\>"
398 syn match lispFunc "\<\(ffi:\)\?set-foreign-pointer\>"
399 syn match lispFunc "\<\(ffi:\)\?allocate-\(deep\|shallow\)\>"
400 syn match lispFunc "\<\(ffi:\)\?c-lines\>"
401 syn match lispFunc "\<\(ffi:\)\?foreign-\(value\|free\|variable\|function\|object\)\>"
402 syn match lispFunc "\<\(ffi:\)\?foreign-address\(-null\|unsigned\)\?\>"
403 syn match lispFunc "\<\(ffi:\)\?undigned-foreign-address\>"
404 syn match lispFunc "\<\(ffi:\)\?c-var-\(address\|object\)\>"
405 syn match lispFunc "\<\(ffi:\)\?typeof\>"
406 syn match lispFunc "\<\(ffi:\)\?\(bit\)\?sizeof\>"
407" CLISP Macros, functions et al:
408 syn match lispFunc "\<\(ext:\)\?with-collect\>"
409 syn match lispFunc "\<\(ext:\)\?letf\*\?\>"
410 syn match lispFunc "\<\(ext:\)\?finalize\>\>"
411 syn match lispFunc "\<\(ext:\)\?memoized\>"
412 syn match lispFunc "\<\(ext:\)\?getenv\>"
413 syn match lispFunc "\<\(ext:\)\?convert-string-\(to\|from\)-bytes\>"
414 syn match lispFunc "\<\(ext:\)\?ethe\>"
415 syn match lispFunc "\<\(ext:\)\?with-gensyms\>"
416 syn match lispFunc "\<\(ext:\)\?open-http\>"
417 syn match lispFunc "\<\(ext:\)\?string-concat\>"
418 syn match lispFunc "\<\(ext:\)\?with-http-\(in\|out\)put\>"
419 syn match lispFunc "\<\(ext:\)\?with-html-output\>"
420 syn match lispFunc "\<\(ext:\)\?expand-form\>"
421 syn match lispFunc "\<\(ext:\)\?\(without-\)\?package-lock\>"
422 syn match lispFunc "\<\(ext:\)\?re-export\>"
423 syn match lispFunc "\<\(ext:\)\?saveinitmem\>"
424 syn match lispFunc "\<\(ext:\)\?\(read\|write\)-\(integer\|float\)\>"
425 syn match lispFunc "\<\(ext:\)\?\(read\|write\)-\(char\|byte\)-sequence\>"
426 syn match lispFunc "\<\(custom:\)\?\*system-package-list\*\>"
427 syn match lispFunc "\<\(custom:\)\?\*ansi\*\>"
428endif
Bram Moolenaar071d4272004-06-13 20:20:40 +0000429
Bram Moolenaara5792f52005-11-23 21:25:05 +0000430" ---------------------------------------------------------------------
Bram Moolenaaraf289d32005-10-12 21:01:44 +0000431" Lisp Keywords (modifiers): {{{1
Bram Moolenaar8c8de832008-06-24 22:58:06 +0000432syn keyword lispKey :abort :from-end :overwrite
433syn keyword lispKey :adjustable :gensym :predicate
434syn keyword lispKey :append :host :preserve-whitespace
435syn keyword lispKey :array :if-does-not-exist :pretty
436syn keyword lispKey :base :if-exists :print
437syn keyword lispKey :case :include :print-function
438syn keyword lispKey :circle :index :probe
439syn keyword lispKey :conc-name :inherited :radix
440syn keyword lispKey :constructor :initial-contents :read-only
441syn keyword lispKey :copier :initial-element :rehash-size
442syn keyword lispKey :count :initial-offset :rehash-threshold
443syn keyword lispKey :create :initial-value :rename
444syn keyword lispKey :default :input :rename-and-delete
445syn keyword lispKey :defaults :internal :size
446syn keyword lispKey :device :io :start
447syn keyword lispKey :direction :junk-allowed :start1
448syn keyword lispKey :directory :key :start2
449syn keyword lispKey :displaced-index-offset :length :stream
450syn keyword lispKey :displaced-to :level :supersede
451syn keyword lispKey :element-type :name :test
452syn keyword lispKey :end :named :test-not
453syn keyword lispKey :end1 :new-version :type
454syn keyword lispKey :end2 :nicknames :use
455syn keyword lispKey :error :output :verbose
456syn keyword lispKey :escape :output-file :version
457syn keyword lispKey :external
458" defpackage arguments
459syn keyword lispKey :documentation :shadowing-import-from :modern :export
460syn keyword lispKey :case-sensitive :case-inverted :shadow :import-from :intern
461" lambda list keywords
462syn keyword lispKey &allow-other-keys &aux &body
463syn keyword lispKey &environment &key &optional &rest &whole
464" make-array argument
465syn keyword lispKey :fill-pointer
466" readtable-case values
467syn keyword lispKey :upcase :downcase :preserve :invert
468" eval-when situations
469syn keyword lispKey :load-toplevel :compile-toplevel :execute
470" ANSI Extended LOOP:
471syn keyword lispKey :while :until :for :do :if :then :else :when :unless :in
472syn keyword lispKey :across :finally :collect :nconc :maximize :minimize :sum
473syn keyword lispKey :and :with :initially :append :into :count :end :repeat
474syn keyword lispKey :always :never :thereis :from :to :upto :downto :below
475syn keyword lispKey :above :by :on :being :each :the :hash-key :hash-keys
476syn keyword lispKey :hash-value :hash-values :using :of-type :upfrom :downfrom
477if exists("g:lispsyntax_clisp")
478 " CLISP FFI:
479 syn keyword lispKey :arguments :return-type :library :full :malloc-free
480 syn keyword lispKey :none :alloca :in :out :in-out :stdc-stdcall :stdc :c
481 syn keyword lispKey :language :built-in :typedef :external
482 syn keyword lispKey :fini :init-once :init-always
483endif
Bram Moolenaar071d4272004-06-13 20:20:40 +0000484
Bram Moolenaara5792f52005-11-23 21:25:05 +0000485" ---------------------------------------------------------------------
Bram Moolenaaraf289d32005-10-12 21:01:44 +0000486" Standard Lisp Variables: {{{1
Bram Moolenaar8c8de832008-06-24 22:58:06 +0000487syn keyword lispVar *applyhook* *load-pathname* *print-pprint-dispatch*
488syn keyword lispVar *break-on-signals* *load-print* *print-pprint-dispatch*
489syn keyword lispVar *break-on-signals* *load-truename* *print-pretty*
490syn keyword lispVar *break-on-warnings* *load-verbose* *print-radix*
491syn keyword lispVar *compile-file-pathname* *macroexpand-hook* *print-readably*
492syn keyword lispVar *compile-file-pathname* *modules* *print-right-margin*
493syn keyword lispVar *compile-file-truename* *package* *print-right-margin*
494syn keyword lispVar *compile-file-truename* *print-array* *query-io*
495syn keyword lispVar *compile-print* *print-base* *random-state*
496syn keyword lispVar *compile-verbose* *print-case* *read-base*
497syn keyword lispVar *compile-verbose* *print-circle* *read-default-float-format*
498syn keyword lispVar *debug-io* *print-escape* *read-eval*
499syn keyword lispVar *debugger-hook* *print-gensym* *read-suppress*
500syn keyword lispVar *default-pathname-defaults* *print-length* *readtable*
501syn keyword lispVar *error-output* *print-level* *standard-input*
502syn keyword lispVar *evalhook* *print-lines* *standard-output*
503syn keyword lispVar *features* *print-miser-width* *terminal-io*
504syn keyword lispVar *gensym-counter* *print-miser-width* *trace-output*
Bram Moolenaar071d4272004-06-13 20:20:40 +0000505
Bram Moolenaara5792f52005-11-23 21:25:05 +0000506" ---------------------------------------------------------------------
Bram Moolenaaraf289d32005-10-12 21:01:44 +0000507" Strings: {{{1
Bram Moolenaar8c8de832008-06-24 22:58:06 +0000508syn region lispString start=+"+ skip=+\\\\\|\\"+ end=+"+ contains=@Spell
Bram Moolenaaraf289d32005-10-12 21:01:44 +0000509if exists("g:lisp_instring")
Bram Moolenaar8c8de832008-06-24 22:58:06 +0000510 syn region lispInString keepend matchgroup=Delimiter start=+"(+rs=s+1 skip=+|.\{-}|+ matchgroup=Delimiter end=+)"+ contains=@lispBaseListCluster,lispInStringString
511 syn region lispInStringString start=+\\"+ skip=+\\\\+ end=+\\"+ contained
Bram Moolenaar071d4272004-06-13 20:20:40 +0000512endif
513
Bram Moolenaara5792f52005-11-23 21:25:05 +0000514" ---------------------------------------------------------------------
Bram Moolenaaraf289d32005-10-12 21:01:44 +0000515" Shared with Xlisp, Declarations, Macros, Functions: {{{1
Bram Moolenaar8c8de832008-06-24 22:58:06 +0000516syn keyword lispDecl defmacro do-all-symbols labels
517syn keyword lispDecl defsetf do-external-symbols let
518syn keyword lispDecl deftype do-symbols locally
519syn keyword lispDecl defun dotimes macrolet
520syn keyword lispDecl do* flet multiple-value-bind
521if exists("g:lispsyntax_clisp")
522 " CLISP FFI:
523 syn match lispDecl "\<\(ffi:\)\?def-c-\(var\|const\|enum\|type\|struct\)\>"
524 syn match lispDecl "\<\(ffi:\)\?def-call-\(out\|in\)\>"
525 syn match lispDecl "\<\(ffi:\)\?c-\(function\|struct\|pointer\|string\)\>"
526 syn match lispDecl "\<\(ffi:\)\?c-ptr\(-null\)\?\>"
527 syn match lispDecl "\<\(ffi:\)\?c-array\(-ptr\|-max\)\?\>"
528 syn match lispDecl "\<\(ffi:\)\?[us]\?\(char\|short\|int\|long\)\>"
529 syn match lispDecl "\<\(win32:\|w32\)\?d\?word\>"
530 syn match lispDecl "\<\([us]_\?\)\?int\(8\|16\|32\|64\)\(_t\)\?\>"
531 syn keyword lispDecl size_t off_t time_t handle
532endif
Bram Moolenaar071d4272004-06-13 20:20:40 +0000533
Bram Moolenaara5792f52005-11-23 21:25:05 +0000534" ---------------------------------------------------------------------
Bram Moolenaaraf289d32005-10-12 21:01:44 +0000535" Numbers: supporting integers and floating point numbers {{{1
Bram Moolenaar5c736222010-01-06 20:54:52 +0100536syn match lispNumber "-\=\(\.\d\+\|\d\+\(\.\d*\)\=\)\([dDeEfFlL][-+]\=\d\+\)\="
537syn match lispNumber "-\=\(\d\+/\d\+\)"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000538
Bram Moolenaar81af9252010-12-10 20:35:50 +0100539syn match lispEscapeSpecial "\*\w[a-z_0-9-]*\*"
540syn match lispEscapeSpecial !#|[^()'`,"; \t]\+|#!
541syn match lispEscapeSpecial !#x\x\+!
542syn match lispEscapeSpecial !#o\o\+!
543syn match lispEscapeSpecial !#b[01]\+!
544syn match lispEscapeSpecial !#\\[ -}\~]!
545syn match lispEscapeSpecial !#[':][^()'`,"; \t]\+!
546syn match lispEscapeSpecial !#([^()'`,"; \t]\+)!
547syn match lispEscapeSpecial !#\\\%(Space\|Newline\|Tab\|Page\|Rubout\|Linefeed\|Return\|Backspace\)!
548syn match lispEscapeSpecial "\<+[a-zA-Z_][a-zA-Z_0-9-]*+\>"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000549
Bram Moolenaar8c8de832008-06-24 22:58:06 +0000550syn match lispConcat "\s\.\s"
551syn match lispParenError ")"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000552
Bram Moolenaara5792f52005-11-23 21:25:05 +0000553" ---------------------------------------------------------------------
Bram Moolenaaraf289d32005-10-12 21:01:44 +0000554" Comments: {{{1
Bram Moolenaar8c8de832008-06-24 22:58:06 +0000555syn cluster lispCommentGroup contains=lispTodo,@Spell
556syn match lispComment ";.*$" contains=@lispCommentGroup
557syn region lispCommentRegion start="#|" end="|#" contains=lispCommentRegion,@lispCommentGroup
Bram Moolenaar519cc552021-11-16 19:18:26 +0000558syn region lispComment start="#+nil" end="\ze)" contains=@lispCommentGroup
559syn match lispComment '^\s*#+nil.*$' contains=@lispCommentGroup
Bram Moolenaar8c8de832008-06-24 22:58:06 +0000560syn keyword lispTodo contained combak combak: todo todo:
Bram Moolenaar071d4272004-06-13 20:20:40 +0000561
Bram Moolenaara5792f52005-11-23 21:25:05 +0000562" ---------------------------------------------------------------------
Bram Moolenaaraf289d32005-10-12 21:01:44 +0000563" Synchronization: {{{1
Bram Moolenaar071d4272004-06-13 20:20:40 +0000564syn sync lines=100
565
Bram Moolenaara5792f52005-11-23 21:25:05 +0000566" ---------------------------------------------------------------------
Bram Moolenaaraf289d32005-10-12 21:01:44 +0000567" Define Highlighting: {{{1
Bram Moolenaarf37506f2016-08-31 22:22:10 +0200568if !exists("skip_lisp_syntax_inits")
Bram Moolenaar071d4272004-06-13 20:20:40 +0000569
Bram Moolenaar51ad4ea2018-04-06 11:14:11 +0200570 hi def link lispCommentRegion lispComment
Bram Moolenaarf37506f2016-08-31 22:22:10 +0200571 hi def link lispAtomNmbr lispNumber
572 hi def link lispAtomMark lispMark
573 hi def link lispInStringString lispString
Bram Moolenaar071d4272004-06-13 20:20:40 +0000574
Bram Moolenaar51ad4ea2018-04-06 11:14:11 +0200575 hi def link lispAtom Identifier
576 hi def link lispAtomBarSymbol Special
Bram Moolenaarf37506f2016-08-31 22:22:10 +0200577 hi def link lispBarSymbol Special
578 hi def link lispComment Comment
579 hi def link lispConcat Statement
Bram Moolenaar51ad4ea2018-04-06 11:14:11 +0200580 hi def link lispDecl Statement
581 hi def link lispFunc Statement
582 hi def link lispKey Type
583 hi def link lispMark Delimiter
Bram Moolenaarf37506f2016-08-31 22:22:10 +0200584 hi def link lispNumber Number
585 hi def link lispParenError Error
Bram Moolenaar51ad4ea2018-04-06 11:14:11 +0200586 hi def link lispEscapeSpecial Type
Bram Moolenaarf37506f2016-08-31 22:22:10 +0200587 hi def link lispString String
Bram Moolenaar51ad4ea2018-04-06 11:14:11 +0200588 hi def link lispTodo Todo
589 hi def link lispVar Statement
Bram Moolenaar071d4272004-06-13 20:20:40 +0000590
Bram Moolenaarf37506f2016-08-31 22:22:10 +0200591 if exists("g:lisp_rainbow") && g:lisp_rainbow != 0
592 if &bg == "dark"
Bram Moolenaar51ad4ea2018-04-06 11:14:11 +0200593 hi def hlLevel0 ctermfg=red guifg=red1
594 hi def hlLevel1 ctermfg=yellow guifg=orange1
595 hi def hlLevel2 ctermfg=green guifg=yellow1
596 hi def hlLevel3 ctermfg=cyan guifg=greenyellow
597 hi def hlLevel4 ctermfg=magenta guifg=green1
598 hi def hlLevel5 ctermfg=red guifg=springgreen1
599 hi def hlLevel6 ctermfg=yellow guifg=cyan1
600 hi def hlLevel7 ctermfg=green guifg=slateblue1
601 hi def hlLevel8 ctermfg=cyan guifg=magenta1
602 hi def hlLevel9 ctermfg=magenta guifg=purple1
Bram Moolenaarf37506f2016-08-31 22:22:10 +0200603 else
Bram Moolenaar51ad4ea2018-04-06 11:14:11 +0200604 hi def hlLevel0 ctermfg=red guifg=red3
605 hi def hlLevel1 ctermfg=darkyellow guifg=orangered3
606 hi def hlLevel2 ctermfg=darkgreen guifg=orange2
607 hi def hlLevel3 ctermfg=blue guifg=yellow3
608 hi def hlLevel4 ctermfg=darkmagenta guifg=olivedrab4
609 hi def hlLevel5 ctermfg=red guifg=green4
610 hi def hlLevel6 ctermfg=darkyellow guifg=paleturquoise3
611 hi def hlLevel7 ctermfg=darkgreen guifg=deepskyblue4
612 hi def hlLevel8 ctermfg=blue guifg=darkslateblue
613 hi def hlLevel9 ctermfg=darkmagenta guifg=darkviolet
Bram Moolenaarf37506f2016-08-31 22:22:10 +0200614 endif
Bram Moolenaar85850f32019-07-19 22:05:51 +0200615 else
616 hi def link lispParen Delimiter
Bram Moolenaarf37506f2016-08-31 22:22:10 +0200617 endif
618
Bram Moolenaar071d4272004-06-13 20:20:40 +0000619endif
620
621let b:current_syntax = "lisp"
622
Bram Moolenaara5792f52005-11-23 21:25:05 +0000623" ---------------------------------------------------------------------
Bram Moolenaaraf289d32005-10-12 21:01:44 +0000624" vim: ts=8 nowrap fdm=marker