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