neovim

Neovim text editor
git clone https://git.dasho.dev/neovim.git
Log | Files | Refs | README

lisp.vim (36122B)


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