# HG changeset patch # User Richard M. Stallman # Date 893995914 0 # Node ID 14316c9ecdac3cc206bf41d5b21b7ee7974fedc0 # Parent 8941ce81cd7c424b7da6070301929f830c2680e3 (generic): Added defgroup declaration. (generic-make-keywords-list): Uses regexp-opt. (generic-mode-set-font-lock): Uses regexp-opt. diff -r 8941ce81cd7c -r 14316c9ecdac lisp/generic.el --- a/lisp/generic.el Fri May 01 03:51:57 1998 +0000 +++ b/lisp/generic.el Fri May 01 04:11:54 1998 +0000 @@ -162,6 +162,11 @@ ;; Customization Variables ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +(defgroup generic nil + "Define simple major modes with comment and font-lock support." + :prefix "generic-" + :group 'extensions) + (defcustom generic-use-find-file-hook t "*If non-nil, add a hook to enter default-generic-mode automatically if the first few lines of a file in fundamental mode start with a hash @@ -499,13 +504,10 @@ (setq generic-font-lock-expressions (append - (list - (list - (concat - "\\(\\<" - (mapconcat 'identity keywords "\\>\\|\\<") - "\\>\\)") - 1 'font-lock-keyword-face)) + (list (let ((regexp (regexp-opt keywords))) + (list (concat "\\<\\(" regexp "\\)\\>") + 1 + 'font-lock-keyword-face))) generic-font-lock-expressions))) ;; Other font-lock expressions (and font-lock-expressions @@ -570,21 +572,17 @@ (defun generic-make-keywords-list (keywords-list face &optional prefix suffix) "Return a regular expression matching the specified keywords. The regexp is highlighted with FACE." - ;; Sanity checks - ;; Don't check here; face may not be defined yet - ;; (if (not (facep face)) - ;; (error "Face %s is not defined" (princ face))) (and (not (listp keywords-list)) (error "Keywords argument must be a list of strings")) - (list - (concat - (or prefix "") - "\\(\\<" - (mapconcat 'identity keywords-list "\\>\\|\\<") - "\\>\\)" - (or suffix "") - ) 1 face)) + (list (concat (or prefix "") + "\\<\\(" + ;; Use an optimized regexp. + (regexp-opt keywords-list t) + "\\)\\>" + (or suffix "")) + 1 + face))) (provide 'generic) -;;; generic.el ends here +;;; generic.el ends here \ No newline at end of file