dp.sh.Brushes.lisp = function() {
  var lispfunc = 'abs acad_colordlg acad_helpdlg acad-pop-dbmod acad-push-dbmod ' +
                 'acad_strlsort acdimenableupdate acet-layerp-mode acet-layerp-mark acet-laytrans acet-ms-to-ps ' +
                 'acet-ps-to-ms action_tile add_list ads alert alloc and angle angtof angtos append apply arx ' +
                 'arxload arxunload ascii assoc atan atof atoi atom atoms-family autoarxload autoload Boole boundp ' + 
                 'caddr cadr car cdr chr client_data_tile close command cond cons cos cvunit defun-q-list-set defun-q-list-ref defun-q ' +
                 'defun dictadd dictnext dictremove dictrename dictsearch dimx_tile dimy_tile distance ' +
                 'distof done_dialog end_image end_list entdel entget entlast entmake entmakex entmod entnext entsel ' +
                 'entupd eq equal error eval exit exp expand expt fill_image findfile fix float foreach function ' +
                 'gc gcd get_attr get_tile getangle getcfg getcname getcorner getdist getenv getfiled getint getkword ' +
                 'getorient getpoint getreal getstring getvar graphscr grclear grdraw grread grtext grvecs handent help ' +
                 'if initdia initget inters itoa lambda last layoutlist length list listp load_dialog load log logand ' +
                 'logior lsh mapcar max mem member menucmd menugroup min minusp mode_tile namedobjdict nentsel nentselp ' +
                 'new_dialog not nth null numberp open or osnap polar prin1 princ print progn prompt quit quote read-char read-line read ' +
                 'redraw regapp rem repeat reverse rtos set set_tile setcfg setenv setfunhelp setq ' +
                 'setvar setview sin slide_image snvalid sqrt ssadd ssdel ssget ssgetfirst sslength ssmemb ssname ssnamex ' +
                 'sssetfirst startapp start_dialog start_image start_list strcase strcat strlen subst substr tablet tblnext ' +
                 'tblobjname tblsearch term_dialog terpri textbox textpage textscr trace trans type unload_dialog untrace ' +
                 'vector_image ver vlisp-compile vports wcmatch while write-char write-line xdroom xdsize xload xunload zerop';

  var vlfunc =   'vl-acad-defun vl-acad-undefun vl-arx-import vl-bb-ref vl-bb-set vl-catch-all-apply vl-catch-all-error-message ' +
                 'vl-catch-all-error-p vl-cmdf vl-consp vl-directory-files vl-doc-export vl-doc-import vl-doc-ref vl-doc-set ' +
                 'vl-every vl-exit-with-error vl-exit-with-value vl-file-copy vl-file-delete vl-file-directory-p vl-flie-rename ' +
                 'vl-file-size vl-file-systime vl-filename-base vl-filename-directory vl-filename-extension vl-filename-mktemp ' +
                 'vl-get-resource vl-list->string vl-list-exported-functions vl-list-length vl-list-loaded-vlx vl-list* vl-load-all ' +
                 'vl-load-com vl-load-reactors vl-mkdir vl-member-if vl-member-if-not vl-position vl-prin1-to-string vl-princ-to-string ' +
                 'vl-propagate vl-registry-delete vl-registry-descandents vl-registry-read vl-registry-write vl-remove vl-remove-if ' +
                 'vl-remove-if-not vl-some vl-sort-i vl-sort vl-string->list vl-string-elt vl-string-left-trim vl-string-mismatch ' +
                 'vl-string-position vl-string-right-trim vl-string-search vl-string-subst vl-string-translate vl-string-trim ' +
                 'vl-symbol-name vl-symbol-value vl-symbolp vl-unload-vlx vl-vbaload vl-vbarun vl-vlx-loaded-p';

  var vlaxfunc = 'vlax-3D-point vlax-add-cmd vlax-create-object vlax-curve-getArea vlax-curve-getClosestPointTo ' +
                 'vlax-curve-getClosestPointToProjection vlax-curve-getDistAtParam vlax-curve-getDistAtPoint vlax-curve-getEndParam vlax-curve-getEndPoint ' +
                 'vlax-curve-getFirstDeriv vlax-curve-getParamAtDist vlax-curve-getParamAtPoint vlax-curve-getPointAtDist ' +
                 'vlax-curve-getPointAtParam vlax-curve-getSecondDeriv vlax-curve-getStartParam vlax-curve-getStartPoint ' +
                 'vlax-curve-isClosed vlax-curve-isPeriodic vlax-curve-isPlanar vlax-dump-object vlax-ename->vla-oject ' +
                 'vlax-erased-p vlax-for vlax-get-acad-object vlax-get-object vlax-get-or-create-object vlax-get-property ' +
                 'vlax-import-type-library vlax-invoke-method vlax-ldata-delete vlax-ldata-get vlax-ldata-list vlax-ldata-put ' +
                 'vlax-ldata-test vlax-make-safearray vlax-make-variant vlax-map-collection vlax-method-applicable-p vlax-write-enable-p ' +
                 'vlax-object-released-p vlax-product-key vlax-property-available-p vlax-put-property vlax-read-enabled-p ' +
                 'vlax-release-object vlax-remove-cmd vlax-safearray-fill vlax-safearray-get-dime vlax-safearray-get-element ' +
                 'vlax-safearray-get-l-bound vlax-safearray-get-u-bound vlax-safearray-put-element vlax-safearray-type vlax-safearray->list ' +
                 'vlax-tmatrix vlax-typeinfo-available-p vlax-variant-change-type vlax-variant-type vlax-variant-value vlax-vla-object->ename';

  var vlrfunc =  'vlr-acdb-reactor vlr-add vlr-added-p vlr-beep-reaction vlr-command-reactor vlr-current-reaction-name ' +
                 'vlr-data vlr-data-set vlr-deepclone-reactor vlr-docmanager-reactor vlr-dwg-reactor vlr-dxf-reactor vlr-editor-reactor ' +
                 'vlr-insert-reactor vlr-linker-reactor vlr-lisp-reactor vlr-miscellaneous-reactor vlr-mouse-reactor vlr-notification ' +
                 'vlr-object-reactor vlr-owner-add vlr-owner-remove vlr-owners vlr-pers-list vlr-pers-p vlr-pers-release vlr-pers ' +
                 'vlr-reaction-name vlr-reaction-set vlr-reactions vlr-reactors vlr-remove-all vlr-remove vlr-set-notification ' +
                 'vlr-sysvar-reactor vlr-toolbar-reactor vlr-trace-reaction vlr-type vlr-types vlr-undo-reactor vlr-wblock-reactor ' +
                 'vlr-window-reactor vlr-xref-reactor';

  var values = 'nil t true false pi';

  var fonts =		'[mM]onospace [tT]ahoma [vV]erdana [aA]rial [hH]elvetica [sS]ans-serif [sS]erif';

  this.regexList = [
		{ regex: new RegExp(';.*$', 'gm'),							css: 'comment' },			// one line comments
		{ regex: dp.sh.RegexLib.DoubleQuotedString,					css: 'string' },	// double quoted strings
		{ regex: new RegExp('\\#[a-zA-Z0-9]{3,6}', 'g'),			css: 'colors' },	// html colors
		{ regex: new RegExp(this.GetKeywords(lispfunc), 'gm'),		css: 'lispfunc' },	// keywords
		{ regex: new RegExp(this.GetKeywords(vlfunc), 'gm'),		css: 'vlfunc' },	// keywords
		{ regex: new RegExp(this.GetKeywords(vlaxfunc), 'gm'),		css: 'vlaxfunc' },	// keywords
		{ regex: new RegExp(this.GetKeywords(vlrfunc), 'gm'),		css: 'vlrfunc' },	// keywords
		{ regex: new RegExp(this.GetKeywords(values), 'g'),			css: 'val' },	// values
		{ regex: new RegExp(this.GetKeywords(fonts), 'g'),			css: 'string' }		// fonts
		];

	this.CssClass = 'dp-lisp';
}

dp.sh.Brushes.lisp.prototype	= new dp.sh.Highlighter();
dp.sh.Brushes.lisp.Aliases	= ['lisp'];

