JasonWoof Got questions, comments, patches, etc.? Contact Jason Woofenden
initial import
[vim-syntax.git] / lisp.vim
diff --git a/lisp.vim b/lisp.vim
new file mode 100644 (file)
index 0000000..f304b51
--- /dev/null
+++ b/lisp.vim
@@ -0,0 +1,542 @@
+" Vim syntax file
+" Language:    Lisp
+" Maintainer:  Dr. Charles E. Campbell, Jr. <NdrOchipS@PcampbellAfamily.Mbiz>
+" Last Change: Oct 12, 2005
+" Version:     17a
+" URL:        http://mysite.verizon.net/astronaut/vim/index.html#vimlinks_syntax
+"
+"  Thanks to F Xavier Noria for a list of 978 Common Lisp symbols
+"  taken from the HyperSpec
+
+" ---------------------------------------------------------------------
+"  Load Once: {{{1
+" For vim-version 5.x: Clear all syntax items
+" For vim-version 6.x: Quit when a syntax file was already loaded
+if version < 600
+  syntax clear
+elseif exists("b:current_syntax")
+  finish
+endif
+
+if version >= 600
+ setlocal iskeyword=42,43,45,47-58,60-62,64-90,97-122,_
+else
+ set iskeyword=42,43,45,47-58,60-62,64-90,97-122,_
+endif
+
+" ---------------------------------------------------------------------
+" Clusters: {{{1
+syn cluster                     lispAtomCluster                  contains=lispAtomBarSymbol,lispAtomList,lispAtomNmbr0,lispComment,lispDecl,lispFunc,lispLeadWhite
+syn cluster                     lispBaseListCluster              contains=lispAtom,lispAtomBarSymbol,lispAtomMark,lispBQList,lispBarSymbol,lispComment,lispConcat,lispDecl,lispFunc,lispKey,lispList,lispNumber,lispSpecial,lispSymbol,lispVar,lispLeadWhite
+if exists("g:lisp_instring")
+ syn cluster                    lispListCluster                  contains=@lispBaseListCluster,lispString,lispInString,lispInStringString
+else
+ syn cluster                    lispListCluster                  contains=@lispBaseListCluster,lispString
+endif
+
+" ---------------------------------------------------------------------
+" Lists: {{{1
+syn match                       lispSymbol                       contained                        ![^()'`,"; \t]\+!
+syn match                       lispBarSymbol                    contained                        !|..\{-}|!
+if exists("g:lisp_rainbow") && g:lisp_rainbow != 0
+ syn region lispParen0           matchgroup=hlLevel0 start="`\=(" end=")" skip="|.\{-}|" contains=@lispListCluster,lispParen1 
+ syn region lispParen1 contained matchgroup=hlLevel1 start="`\=(" end=")" skip="|.\{-}|" contains=@lispListCluster,lispParen2 
+ syn region lispParen2 contained matchgroup=hlLevel2 start="`\=(" end=")" skip="|.\{-}|" contains=@lispListCluster,lispParen3 
+ syn region lispParen3 contained matchgroup=hlLevel3 start="`\=(" end=")" skip="|.\{-}|" contains=@lispListCluster,lispParen4 
+ syn region lispParen4 contained matchgroup=hlLevel4 start="`\=(" end=")" skip="|.\{-}|" contains=@lispListCluster,lispParen5 
+ syn region lispParen5 contained matchgroup=hlLevel5 start="`\=(" end=")" skip="|.\{-}|" contains=@lispListCluster,lispParen6 
+ syn region lispParen6 contained matchgroup=hlLevel6 start="`\=(" end=")" skip="|.\{-}|" contains=@lispListCluster,lispParen7 
+ syn region lispParen7 contained matchgroup=hlLevel7 start="`\=(" end=")" skip="|.\{-}|" contains=@lispListCluster,lispParen8 
+ syn region lispParen8 contained matchgroup=hlLevel8 start="`\=(" end=")" skip="|.\{-}|" contains=@lispListCluster,lispParen9 
+ syn region lispParen9 contained matchgroup=hlLevel9 start="`\=(" end=")" skip="|.\{-}|" contains=@lispListCluster,lispParen0
+else
+ syn region                     lispList                         matchgroup=Delimiter start="("   skip="|.\{-}|"                           matchgroup=Delimiter end=")"        contains=@lispListCluster
+ syn region                     lispBQList                       matchgroup=PreProc   start="`("  skip="|.\{-}|"                   matchgroup=PreProc   end=")"                contains=@lispListCluster
+endif
+
+" ---------------------------------------------------------------------
+" Atoms: {{{1
+syn match                       lispAtomMark                     "'"
+syn match                       lispAtom                         "'("me=e-1                       contains=lispAtomMark            nextgroup=lispAtomList
+syn match                       lispAtom                         "'[^ \t()]\+"                    contains=lispAtomMark
+syn match                       lispAtomBarSymbol                !'|..\{-}|!                      contains=lispAtomMark
+syn region                      lispAtom                         start=+'"+                       skip=+\\"+ end=+"+
+syn region                      lispAtomList                     contained                        matchgroup=Special start="("     skip="|.\{-}|" matchgroup=Special end=")"                         contains=@lispAtomCluster,lispString
+syn match                       lispAtomNmbr                     contained                        "\<\d\+"
+syn match                       lispLeadWhite                    contained                        "^\s\+"
+
+" ---------------------------------------------------------------------
+" Standard Lisp Functions and Macros: {{{1
+syn keyword lispFunc            *                                find-method                      pprint-indent
+syn keyword lispFunc            **                               find-package                     pprint-linear
+syn keyword lispFunc            ***                              find-restart                     pprint-logical-block
+syn keyword lispFunc            +                                find-symbol                      pprint-newline
+syn keyword lispFunc            ++                               finish-output                    pprint-pop
+syn keyword lispFunc            +++                              first                            pprint-tab
+syn keyword lispFunc            -                                fixnum                           pprint-tabular
+syn keyword lispFunc            /                                flet                             prin1
+syn keyword lispFunc            //                               float                            prin1-to-string
+syn keyword lispFunc            ///                              float-digits                     princ
+syn keyword lispFunc            /=                               float-precision                  princ-to-string
+syn keyword lispFunc            1+                               float-radix                      print
+syn keyword lispFunc            1-                               float-sign                       print-not-readable
+syn keyword lispFunc            <                                floating-point-inexact           print-not-readable-object
+syn keyword lispFunc            <=                               floating-point-invalid-operation print-object
+syn keyword lispFunc            =                                floating-point-overflow          print-unreadable-object
+syn keyword lispFunc            >                                floating-point-underflow         probe-file
+syn keyword lispFunc            >=                               floatp                           proclaim
+syn keyword lispFunc            abort                            floor                            prog
+syn keyword lispFunc            abs                              fmakunbound                      prog*
+syn keyword lispFunc            access                           force-output                     prog1
+syn keyword lispFunc            acons                            format                           prog2
+syn keyword lispFunc            acos                             formatter                        progn
+syn keyword lispFunc            acosh                            fourth                           program-error
+syn keyword lispFunc            add-method                       fresh-line                       progv
+syn keyword lispFunc            adjoin                           fround                           provide
+syn keyword lispFunc            adjust-array                     ftruncate                        psetf
+syn keyword lispFunc            adjustable-array-p               ftype                            psetq
+syn keyword lispFunc            allocate-instance                funcall                          push
+syn keyword lispFunc            alpha-char-p                     function                         pushnew
+syn keyword lispFunc            alphanumericp                    function-keywords                putprop
+syn keyword lispFunc            and                              function-lambda-expression       quote
+syn keyword lispFunc            append                           functionp                        random
+syn keyword lispFunc            apply                            gbitp                            random-state
+syn keyword lispFunc            applyhook                        gcd                              random-state-p
+syn keyword lispFunc            apropos                          generic-function                 rassoc
+syn keyword lispFunc            apropos-list                     gensym                           rassoc-if
+syn keyword lispFunc            aref                             gentemp                          rassoc-if-not
+syn keyword lispFunc            arithmetic-error                 get                              ratio
+syn keyword lispFunc            arithmetic-error-operands        get-decoded-time                 rational
+syn keyword lispFunc            arithmetic-error-operation       get-dispatch-macro-character     rationalize
+syn keyword lispFunc            array                            get-internal-real-time           rationalp
+syn keyword lispFunc            array-dimension                  get-internal-run-time            read
+syn keyword lispFunc            array-dimension-limit            get-macro-character              read-byte
+syn keyword lispFunc            array-dimensions                 get-output-stream-string         read-char
+syn keyword lispFunc            array-displacement               get-properties                   read-char-no-hang
+syn keyword lispFunc            array-element-type               get-setf-expansion               read-delimited-list
+syn keyword lispFunc            array-has-fill-pointer-p         get-setf-method                  read-eval-print
+syn keyword lispFunc            array-in-bounds-p                get-universal-time               read-from-string
+syn keyword lispFunc            array-rank                       getf                             read-line
+syn keyword lispFunc            array-rank-limit                 gethash                          read-preserving-whitespace
+syn keyword lispFunc            array-row-major-index            go                               read-sequence
+syn keyword lispFunc            array-total-size                 graphic-char-p                   reader-error
+syn keyword lispFunc            array-total-size-limit           handler-bind                     readtable
+syn keyword lispFunc            arrayp                           handler-case                     readtable-case
+syn keyword lispFunc            ash                              hash-table                       readtablep
+syn keyword lispFunc            asin                             hash-table-count                 real
+syn keyword lispFunc            asinh                            hash-table-p                     realp
+syn keyword lispFunc            assert                           hash-table-rehash-size           realpart
+syn keyword lispFunc            assoc                            hash-table-rehash-threshold      reduce
+syn keyword lispFunc            assoc-if                         hash-table-size                  reinitialize-instance
+syn keyword lispFunc            assoc-if-not                     hash-table-test                  rem
+syn keyword lispFunc            atan                             host-namestring                  remf
+syn keyword lispFunc            atanh                            identity                         remhash
+syn keyword lispFunc            atom                             if                               remove
+syn keyword lispFunc            base-char                        if-exists                        remove-duplicates
+syn keyword lispFunc            base-string                      ignorable                        remove-if
+syn keyword lispFunc            bignum                           ignore                           remove-if-not
+syn keyword lispFunc            bit                              ignore-errors                    remove-method
+syn keyword lispFunc            bit-and                          imagpart                         remprop
+syn keyword lispFunc            bit-andc1                        import                           rename-file
+syn keyword lispFunc            bit-andc2                        in-package                       rename-package
+syn keyword lispFunc            bit-eqv                          in-package                       replace
+syn keyword lispFunc            bit-ior                          incf                             require
+syn keyword lispFunc            bit-nand                         initialize-instance              rest
+syn keyword lispFunc            bit-nor                          inline                           restart
+syn keyword lispFunc            bit-not                          input-stream-p                   restart-bind
+syn keyword lispFunc            bit-orc1                         inspect                          restart-case
+syn keyword lispFunc            bit-orc2                         int-char                         restart-name
+syn keyword lispFunc            bit-vector                       integer                          return
+syn keyword lispFunc            bit-vector-p                     integer-decode-float             return-from
+syn keyword lispFunc            bit-xor                          integer-length                   revappend
+syn keyword lispFunc            block                            integerp                         reverse
+syn keyword lispFunc            boole                            interactive-stream-p             room
+syn keyword lispFunc            boole-1                          intern                           rotatef
+syn keyword lispFunc            boole-2                          internal-time-units-per-second   round
+syn keyword lispFunc            boole-and                        intersection                     row-major-aref
+syn keyword lispFunc            boole-andc1                      invalid-method-error             rplaca
+syn keyword lispFunc            boole-andc2                      invoke-debugger                  rplacd
+syn keyword lispFunc            boole-c1                         invoke-restart                   safety
+syn keyword lispFunc            boole-c2                         invoke-restart-interactively     satisfies
+syn keyword lispFunc            boole-clr                        isqrt                            sbit
+syn keyword lispFunc            boole-eqv                        keyword                          scale-float
+syn keyword lispFunc            boole-ior                        keywordp                         schar
+syn keyword lispFunc            boole-nand                       labels                           search
+syn keyword lispFunc            boole-nor                        lambda                           second
+syn keyword lispFunc            boole-orc1                       lambda-list-keywords             sequence
+syn keyword lispFunc            boole-orc2                       lambda-parameters-limit          serious-condition
+syn keyword lispFunc            boole-set                        last                             set
+syn keyword lispFunc            boole-xor                        lcm                              set-char-bit
+syn keyword lispFunc            boolean                          ldb                              set-difference
+syn keyword lispFunc            both-case-p                      ldb-test                         set-dispatch-macro-character
+syn keyword lispFunc            boundp                           ldiff                            set-exclusive-or
+syn keyword lispFunc            break                            least-negative-double-float      set-macro-character
+syn keyword lispFunc            broadcast-stream                 least-negative-long-float        set-pprint-dispatch
+syn keyword lispFunc            broadcast-stream-streams         least-negative-normalized-double-float                            set-syntax-from-char
+syn keyword lispFunc            built-in-class                   least-negative-normalized-long-float                              setf
+syn keyword lispFunc            butlast                          least-negative-normalized-short-float                             setq
+syn keyword lispFunc            byte                             least-negative-normalized-single-float                            seventh
+syn keyword lispFunc            byte-position                    least-negative-short-float       shadow
+syn keyword lispFunc            byte-size                        least-negative-single-float      shadowing-import
+syn keyword lispFunc            call-arguments-limit             least-positive-double-float      shared-initialize
+syn keyword lispFunc            call-method                      least-positive-long-float        shiftf
+syn keyword lispFunc            call-next-method                 least-positive-normalized-double-float                            short-float
+syn keyword lispFunc            capitalize                       least-positive-normalized-long-float                              short-float-epsilon
+syn keyword lispFunc            car                              least-positive-normalized-short-float                             short-float-negative-epsilon
+syn keyword lispFunc            case                             least-positive-normalized-single-float                            short-site-name
+syn keyword lispFunc            catch                            least-positive-short-float       signal
+syn keyword lispFunc            ccase                            least-positive-single-float      signed-byte
+syn keyword lispFunc            cdr                              length                           signum
+syn keyword lispFunc            ceiling                          let                              simle-condition
+syn keyword lispFunc            cell-error                       let*                             simple-array
+syn keyword lispFunc            cell-error-name                  lisp                             simple-base-string
+syn keyword lispFunc            cerror                           lisp-implementation-type         simple-bit-vector
+syn keyword lispFunc            change-class                     lisp-implementation-version      simple-bit-vector-p
+syn keyword lispFunc            char                             list                             simple-condition-format-arguments
+syn keyword lispFunc            char-bit                         list*                            simple-condition-format-control
+syn keyword lispFunc            char-bits                        list-all-packages                simple-error
+syn keyword lispFunc            char-bits-limit                  list-length                      simple-string
+syn keyword lispFunc            char-code                        listen                           simple-string-p
+syn keyword lispFunc            char-code-limit                  listp                            simple-type-error
+syn keyword lispFunc            char-control-bit                 load                             simple-vector
+syn keyword lispFunc            char-downcase                    load-logical-pathname-translations                                simple-vector-p
+syn keyword lispFunc            char-equal                       load-time-value                  simple-warning
+syn keyword lispFunc            char-font                        locally                          sin
+syn keyword lispFunc            char-font-limit                  log                              single-flaot-epsilon
+syn keyword lispFunc            char-greaterp                    logand                           single-float
+syn keyword lispFunc            char-hyper-bit                   logandc1                         single-float-epsilon
+syn keyword lispFunc            char-int                         logandc2                         single-float-negative-epsilon
+syn keyword lispFunc            char-lessp                       logbitp                          sinh
+syn keyword lispFunc            char-meta-bit                    logcount                         sixth
+syn keyword lispFunc            char-name                        logeqv                           sleep
+syn keyword lispFunc            char-not-equal                   logical-pathname                 slot-boundp
+syn keyword lispFunc            char-not-greaterp                logical-pathname-translations    slot-exists-p
+syn keyword lispFunc            char-not-lessp                   logior                           slot-makunbound
+syn keyword lispFunc            char-super-bit                   lognand                          slot-missing
+syn keyword lispFunc            char-upcase                      lognor                           slot-unbound
+syn keyword lispFunc            char/=                           lognot                           slot-value
+syn keyword lispFunc            char<                            logorc1                          software-type
+syn keyword lispFunc            char<=                           logorc2                          software-version
+syn keyword lispFunc            char=                            logtest                          some
+syn keyword lispFunc            char>                            logxor                           sort
+syn keyword lispFunc            char>=                           long-float                       space
+syn keyword lispFunc            character                        long-float-epsilon               special
+syn keyword lispFunc            characterp                       long-float-negative-epsilon      special-form-p
+syn keyword lispFunc            check-type                       long-site-name                   special-operator-p
+syn keyword lispFunc            cis                              loop                             speed
+syn keyword lispFunc            class                            loop-finish                      sqrt
+syn keyword lispFunc            class-name                       lower-case-p                     stable-sort
+syn keyword lispFunc            class-of                         machine-instance                 standard
+syn keyword lispFunc            clear-input                      machine-type                     standard-char
+syn keyword lispFunc            clear-output                     machine-version                  standard-char-p
+syn keyword lispFunc            close                            macro-function                   standard-class
+syn keyword lispFunc            clrhash                          macroexpand                      standard-generic-function
+syn keyword lispFunc            code-char                        macroexpand-1                    standard-method
+syn keyword lispFunc            coerce                           macroexpand-l                    standard-object
+syn keyword lispFunc            commonp                          macrolet                         step
+syn keyword lispFunc            compilation-speed                make-array                       storage-condition
+syn keyword lispFunc            compile                          make-array                       store-value
+syn keyword lispFunc            compile-file                     make-broadcast-stream            stream
+syn keyword lispFunc            compile-file-pathname            make-char                        stream-element-type
+syn keyword lispFunc            compiled-function                make-concatenated-stream         stream-error
+syn keyword lispFunc            compiled-function-p              make-condition                   stream-error-stream
+syn keyword lispFunc            compiler-let                     make-dispatch-macro-character    stream-external-format
+syn keyword lispFunc            compiler-macro                   make-echo-stream                 streamp
+syn keyword lispFunc            compiler-macro-function          make-hash-table                  streamup
+syn keyword lispFunc            complement                       make-instance                    string
+syn keyword lispFunc            complex                          make-instances-obsolete          string-capitalize
+syn keyword lispFunc            complexp                         make-list                        string-char
+syn keyword lispFunc            compute-applicable-methods       make-load-form                   string-char-p
+syn keyword lispFunc            compute-restarts                 make-load-form-saving-slots      string-downcase
+syn keyword lispFunc            concatenate                      make-method                      string-equal
+syn keyword lispFunc            concatenated-stream              make-package                     string-greaterp
+syn keyword lispFunc            concatenated-stream-streams      make-pathname                    string-left-trim
+syn keyword lispFunc            cond                             make-random-state                string-lessp
+syn keyword lispFunc            condition                        make-sequence                    string-not-equal
+syn keyword lispFunc            conjugate                        make-string                      string-not-greaterp
+syn keyword lispFunc            cons                             make-string-input-stream         string-not-lessp
+syn keyword lispFunc            consp                            make-string-output-stream        string-right-strim
+syn keyword lispFunc            constantly                       make-symbol                      string-right-trim
+syn keyword lispFunc            constantp                        make-synonym-stream              string-stream
+syn keyword lispFunc            continue                         make-two-way-stream              string-trim
+syn keyword lispFunc            control-error                    makunbound                       string-upcase
+syn keyword lispFunc            copy-alist                       map                              string/=
+syn keyword lispFunc            copy-list                        map-into                         string<
+syn keyword lispFunc            copy-pprint-dispatch             mapc                             string<=
+syn keyword lispFunc            copy-readtable                   mapcan                           string=
+syn keyword lispFunc            copy-seq                         mapcar                           string>
+syn keyword lispFunc            copy-structure                   mapcon                           string>=
+syn keyword lispFunc            copy-symbol                      maphash                          stringp
+syn keyword lispFunc            copy-tree                        mapl                             structure
+syn keyword lispFunc            cos                              maplist                          structure-class
+syn keyword lispFunc            cosh                             mask-field                       structure-object
+syn keyword lispFunc            count                            max                              style-warning
+syn keyword lispFunc            count-if                         member                           sublim
+syn keyword lispFunc            count-if-not                     member-if                        sublis
+syn keyword lispFunc            ctypecase                        member-if-not                    subseq
+syn keyword lispFunc            debug                            merge                            subsetp
+syn keyword lispFunc            decf                             merge-pathname                   subst
+syn keyword lispFunc            declaim                          merge-pathnames                  subst-if
+syn keyword lispFunc            declaration                      method                           subst-if-not
+syn keyword lispFunc            declare                          method-combination               substitute
+syn keyword lispFunc            decode-float                     method-combination-error         substitute-if
+syn keyword lispFunc            decode-universal-time            method-qualifiers                substitute-if-not
+syn keyword lispFunc            defclass                         min                              subtypep
+syn keyword lispFunc            defconstant                      minusp                           svref
+syn keyword lispFunc            defgeneric                       mismatch                         sxhash
+syn keyword lispFunc            define-compiler-macro            mod                              symbol
+syn keyword lispFunc            define-condition                 most-negative-double-float       symbol-function
+syn keyword lispFunc            define-method-combination        most-negative-fixnum             symbol-macrolet
+syn keyword lispFunc            define-modify-macro              most-negative-long-float         symbol-name
+syn keyword lispFunc            define-setf-expander             most-negative-short-float        symbol-package
+syn keyword lispFunc            define-setf-method               most-negative-single-float       symbol-plist
+syn keyword lispFunc            define-symbol-macro              most-positive-double-float       symbol-value
+syn keyword lispFunc            defmacro                         most-positive-fixnum             symbolp
+syn keyword lispFunc            defmethod                        most-positive-long-float         synonym-stream
+syn keyword lispFunc            defpackage                       most-positive-short-float        synonym-stream-symbol
+syn keyword lispFunc            defparameter                     most-positive-single-float       sys
+syn keyword lispFunc            defsetf                          muffle-warning                   system
+syn keyword lispFunc            defstruct                        multiple-value-bind              t
+syn keyword lispFunc            deftype                          multiple-value-call              tagbody
+syn keyword lispFunc            defun                            multiple-value-list              tailp
+syn keyword lispFunc            defvar                           multiple-value-prog1             tan
+syn keyword lispFunc            delete                           multiple-value-seteq             tanh
+syn keyword lispFunc            delete-duplicates                multiple-value-setq              tenth
+syn keyword lispFunc            delete-file                      multiple-values-limit            terpri
+syn keyword lispFunc            delete-if                        name-char                        the
+syn keyword lispFunc            delete-if-not                    namestring                       third
+syn keyword lispFunc            delete-package                   nbutlast                         throw
+syn keyword lispFunc            denominator                      nconc                            time
+syn keyword lispFunc            deposit-field                    next-method-p                    trace
+syn keyword lispFunc            describe                         nil                              translate-logical-pathname
+syn keyword lispFunc            describe-object                  nintersection                    translate-pathname
+syn keyword lispFunc            destructuring-bind               ninth                            tree-equal
+syn keyword lispFunc            digit-char                       no-applicable-method             truename
+syn keyword lispFunc            digit-char-p                     no-next-method                   truncase
+syn keyword lispFunc            directory                        not                              truncate
+syn keyword lispFunc            directory-namestring             notany                           two-way-stream
+syn keyword lispFunc            disassemble                      notevery                         two-way-stream-input-stream
+syn keyword lispFunc            division-by-zero                 notinline                        two-way-stream-output-stream
+syn keyword lispFunc            do                               nreconc                          type
+syn keyword lispFunc            do*                              nreverse                         type-error
+syn keyword lispFunc            do-all-symbols                   nset-difference                  type-error-datum
+syn keyword lispFunc            do-exeternal-symbols             nset-exclusive-or                type-error-expected-type
+syn keyword lispFunc            do-external-symbols              nstring                          type-of
+syn keyword lispFunc            do-symbols                       nstring-capitalize               typecase
+syn keyword lispFunc            documentation                    nstring-downcase                 typep
+syn keyword lispFunc            dolist                           nstring-upcase                   unbound-slot
+syn keyword lispFunc            dotimes                          nsublis                          unbound-slot-instance
+syn keyword lispFunc            double-float                     nsubst                           unbound-variable
+syn keyword lispFunc            double-float-epsilon             nsubst-if                        undefined-function
+syn keyword lispFunc            double-float-negative-epsilon    nsubst-if-not                    unexport
+syn keyword lispFunc            dpb                              nsubstitute                      unintern
+syn keyword lispFunc            dribble                          nsubstitute-if                   union
+syn keyword lispFunc            dynamic-extent                   nsubstitute-if-not               unless
+syn keyword lispFunc            ecase                            nth                              unread
+syn keyword lispFunc            echo-stream                      nth-value                        unread-char
+syn keyword lispFunc            echo-stream-input-stream         nthcdr                           unsigned-byte
+syn keyword lispFunc            echo-stream-output-stream        null                             untrace
+syn keyword lispFunc            ed                               number                           unuse-package
+syn keyword lispFunc            eighth                           numberp                          unwind-protect
+syn keyword lispFunc            elt                              numerator                        update-instance-for-different-class
+syn keyword lispFunc            encode-universal-time            nunion                           update-instance-for-redefined-class
+syn keyword lispFunc            end-of-file                      oddp                             upgraded-array-element-type
+syn keyword lispFunc            endp                             open                             upgraded-complex-part-type
+syn keyword lispFunc            enough-namestring                open-stream-p                    upper-case-p
+syn keyword lispFunc            ensure-directories-exist         optimize                         use-package
+syn keyword lispFunc            ensure-generic-function          or                               use-value
+syn keyword lispFunc            eq                               otherwise                        user
+syn keyword lispFunc            eql                              output-stream-p                  user-homedir-pathname
+syn keyword lispFunc            equal                            package                          values
+syn keyword lispFunc            equalp                           package-error                    values-list
+syn keyword lispFunc            error                            package-error-package            vector
+syn keyword lispFunc            etypecase                        package-name                     vector-pop
+syn keyword lispFunc            eval                             package-nicknames                vector-push
+syn keyword lispFunc            eval-when                        package-shadowing-symbols        vector-push-extend
+syn keyword lispFunc            evalhook                         package-use-list                 vectorp
+syn keyword lispFunc            evenp                            package-used-by-list             warn
+syn keyword lispFunc            every                            packagep                         warning
+syn keyword lispFunc            exp                              pairlis                          when
+syn keyword lispFunc            export                           parse-error                      wild-pathname-p
+syn keyword lispFunc            expt                             parse-integer                    with-accessors
+syn keyword lispFunc            extended-char                    parse-namestring                 with-compilation-unit
+syn keyword lispFunc            fboundp                          pathname                         with-condition-restarts
+syn keyword lispFunc            fceiling                         pathname-device                  with-hash-table-iterator
+syn keyword lispFunc            fdefinition                      pathname-directory               with-input-from-string
+syn keyword lispFunc            ffloor                           pathname-host                    with-open-file
+syn keyword lispFunc            fifth                            pathname-match-p                 with-open-stream
+syn keyword lispFunc            file-author                      pathname-name                    with-output-to-string
+syn keyword lispFunc            file-error                       pathname-type                    with-package-iterator
+syn keyword lispFunc            file-error-pathname              pathname-version                 with-simple-restart
+syn keyword lispFunc            file-length                      pathnamep                        with-slots
+syn keyword lispFunc            file-namestring                  peek-char                        with-standard-io-syntax
+syn keyword lispFunc            file-position                    phase                            write
+syn keyword lispFunc            file-stream                      pi                               write-byte
+syn keyword lispFunc            file-string-length               plusp                            write-char
+syn keyword lispFunc            file-write-date                  pop                              write-line
+syn keyword lispFunc            fill                             position                         write-sequence
+syn keyword lispFunc            fill-pointer                     position-if                      write-string
+syn keyword lispFunc            find                             position-if-not                  write-to-string
+syn keyword lispFunc            find-all-symbols                 pprint                           y-or-n-p
+syn keyword lispFunc            find-class                       pprint-dispatch                  yes-or-no-p
+syn keyword lispFunc            find-if                          pprint-exit-if-list-exhausted    zerop
+syn keyword lispFunc            find-if-not                      pprint-fill
+
+syn match   lispFunc            "\<c[ad]\+r\>"
+
+" ---------------------------------------------------------------------
+" Lisp Keywords (modifiers): {{{1
+syn keyword lispKey             :abort                           :from-end                        :overwrite
+syn keyword lispKey             :adjustable                      :gensym                          :predicate
+syn keyword lispKey             :append                          :host                            :preserve-whitespace
+syn keyword lispKey             :array                           :if-does-not-exist               :pretty
+syn keyword lispKey             :base                            :if-exists                       :print
+syn keyword lispKey             :case                            :include                         :print-function
+syn keyword lispKey             :circle                          :index                           :probe
+syn keyword lispKey             :conc-name                       :inherited                       :radix
+syn keyword lispKey             :constructor                     :initial-contents                :read-only
+syn keyword lispKey             :copier                          :initial-element                 :rehash-size
+syn keyword lispKey             :count                           :initial-offset                  :rehash-threshold
+syn keyword lispKey             :create                          :initial-value                   :rename
+syn keyword lispKey             :default                         :input                           :rename-and-delete
+syn keyword lispKey             :defaults                        :internal                        :size
+syn keyword lispKey             :device                          :io                              :start
+syn keyword lispKey             :direction                       :junk-allowed                    :start1
+syn keyword lispKey             :directory                       :key                             :start2
+syn keyword lispKey             :displaced-index-offset          :length                          :stream
+syn keyword lispKey             :displaced-to                    :level                           :supersede
+syn keyword lispKey             :element-type                    :name                            :test
+syn keyword lispKey             :end                             :named                           :test-not
+syn keyword lispKey             :end1                            :new-version                     :type
+syn keyword lispKey             :end2                            :nicknames                       :use
+syn keyword lispKey             :error                           :output                          :verbose
+syn keyword lispKey             :escape                          :output-file                     :version
+syn keyword lispKey             :external
+
+" ---------------------------------------------------------------------
+" Standard Lisp Variables: {{{1
+syn keyword lispVar             *applyhook*                      *load-pathname*                  *print-pprint-dispatch*
+syn keyword lispVar             *break-on-signals*               *load-print*                     *print-pprint-dispatch*
+syn keyword lispVar             *break-on-signals*               *load-truename*                  *print-pretty*
+syn keyword lispVar             *break-on-warnings*              *load-verbose*                   *print-radix*
+syn keyword lispVar             *compile-file-pathname*          *macroexpand-hook*               *print-readably*
+syn keyword lispVar             *compile-file-pathname*          *modules*                        *print-right-margin*
+syn keyword lispVar             *compile-file-truename*          *package*                        *print-right-margin*
+syn keyword lispVar             *compile-file-truename*          *print-array*                    *query-io*
+syn keyword lispVar             *compile-print*                  *print-base*                     *random-state*
+syn keyword lispVar             *compile-verbose*                *print-case*                     *read-base*
+syn keyword lispVar             *compile-verbose*                *print-circle*                   *read-default-float-format*
+syn keyword lispVar             *debug-io*                       *print-escape*                   *read-eval*
+syn keyword lispVar             *debugger-hook*                  *print-gensym*                   *read-suppress*
+syn keyword lispVar             *default-pathname-defaults*      *print-length*                   *readtable*
+syn keyword lispVar             *error-output*                   *print-level*                    *standard-input*
+syn keyword lispVar             *evalhook*                       *print-lines*                    *standard-output*
+syn keyword lispVar             *features*                       *print-miser-width*              *terminal-io*
+syn keyword lispVar             *gensym-counter*                 *print-miser-width*              *trace-output*
+
+" ---------------------------------------------------------------------
+" Strings: {{{1
+syn region                      lispString                       start=+"+ skip=+\\\\\|\\"+ end=+"+
+if exists("g:lisp_instring")
+ syn region                     lispInString                     keepend matchgroup=Delimiter start=+"(+rs=s+1 skip=+|.\{-}|+ matchgroup=Delimiter end=+)"+ contains=@lispBaseListCluster,lispInStringString
+ syn region                     lispInStringString               start=+\\"+ skip=+\\\\+ end=+\\"+ contained
+endif
+
+" ---------------------------------------------------------------------
+" Shared with Xlisp, Declarations, Macros, Functions: {{{1
+syn keyword lispDecl            defmacro                         do-all-symbols                   labels
+syn keyword lispDecl            defsetf                          do-external-symbols              let
+syn keyword lispDecl            deftype                          do-symbols                       locally
+syn keyword lispDecl            defun                            dotimes                          macrolet
+syn keyword lispDecl            do*                              flet                             multiple-value-bind
+
+" ---------------------------------------------------------------------
+" Numbers: supporting integers and floating point numbers {{{1
+syn match lispNumber            "-\=\(\.\d\+\|\d\+\(\.\d*\)\=\)\(e[-+]\=\d\+\)\="
+
+syn match lispSpecial           "\*[a-zA-Z_][a-zA-Z_0-9-]*\*"
+syn match lispSpecial           !#|[^()'`,"; \t]\+|#!
+syn match lispSpecial           !#x[0-9a-fA-F]\+!
+syn match lispSpecial           !#o[0-7]\+!
+syn match lispSpecial           !#b[01]\+!
+syn match lispSpecial           !#\\[ -\~]!
+syn match lispSpecial           !#[':][^()'`,"; \t]\+!
+syn match lispSpecial           !#([^()'`,"; \t]\+)!
+
+syn match lispConcat            "\s\.\s"
+syn match lispParenError        ")"
+
+" ---------------------------------------------------------------------
+" Comments: {{{1
+syn cluster lispCommentGroup    contains=lispTodo,@Spell
+syn match   lispComment                 ";.*$"                           contains=@lispCommentGroup
+syn region  lispCommentRegion   start="#|" end="|#"              contains=lispCommentRegion,@lispCommentGroup
+syn case ignore
+syn keyword lispTodo            contained                        combak                           combak:                          todo                             todo:
+syn case match
+
+" ---------------------------------------------------------------------
+" Synchronization: {{{1
+syn sync lines=100
+
+" ---------------------------------------------------------------------
+" Define Highlighting: {{{1
+" For version 5.7 and earlier: only when not done already
+" For version 5.8 and later: only when an item doesn't have highlighting yet
+if version >= 508
+  command -nargs=+ HiLink hi def link <args>
+
+  HiLink lispCommentRegion      lispComment
+  HiLink lispAtomNmbr           lispNumber
+  HiLink lispAtomMark           lispMark
+  HiLink lispInStringString     lispString
+
+  HiLink lispAtom               Identifier
+  HiLink lispAtomBarSymbol      Special
+  HiLink lispBarSymbol          Special
+  HiLink lispComment            Comment
+  HiLink lispConcat             Statement
+  HiLink lispDecl               Statement
+  HiLink lispFunc               Statement
+  HiLink lispKey                Type
+  HiLink lispMark               Delimiter
+  HiLink lispNumber             Number
+  HiLink lispParenError                 Error
+  HiLink lispSpecial            Type
+  HiLink lispString             String
+  HiLink lispTodo               Todo
+  HiLink lispVar                Statement
+
+  if exists("g:lisp_rainbow") && g:lisp_rainbow != 0
+   if &bg == "dark"
+    hi def hlLevel0 ctermfg=red         guifg=red1
+    hi def hlLevel1 ctermfg=blue        guifg=orange1      
+    hi def hlLevel2 ctermfg=green       guifg=yellow1      
+    hi def hlLevel3 ctermfg=cyan        guifg=greenyellow  
+    hi def hlLevel4 ctermfg=magenta     guifg=green1       
+    hi def hlLevel5 ctermfg=red         guifg=springgreen1 
+    hi def hlLevel6 ctermfg=yellow      guifg=cyan1        
+    hi def hlLevel7 ctermfg=green       guifg=slateblue1   
+    hi def hlLevel8 ctermfg=cyan        guifg=magenta1     
+    hi def hlLevel9 ctermfg=magenta     guifg=purple1
+   else
+    hi def hlLevel0 ctermfg=red         guifg=red3
+    hi def hlLevel1 ctermfg=darkyellow  guifg=orangered3
+    hi def hlLevel2 ctermfg=darkgreen   guifg=orange2
+    hi def hlLevel3 ctermfg=blue        guifg=yellow3
+    hi def hlLevel4 ctermfg=darkmagenta guifg=olivedrab4
+    hi def hlLevel5 ctermfg=red         guifg=green4
+    hi def hlLevel6 ctermfg=darkyellow  guifg=paleturquoise3
+    hi def hlLevel7 ctermfg=darkgreen   guifg=deepskyblue4
+    hi def hlLevel8 ctermfg=blue        guifg=darkslateblue
+    hi def hlLevel9 ctermfg=darkmagenta guifg=darkviolet
+   endif
+  endif
+
+  delcommand HiLink
+endif
+
+let b:current_syntax = "lisp"
+
+" ---------------------------------------------------------------------
+" vim: ts=8 nowrap fdm=marker