From 4eea26a9879a33e7161d00de1d7d367b3148e230 Mon Sep 17 00:00:00 2001 From: "Richard M. Stallman" Date: Fri, 1 May 1998 04:11:54 +0000 Subject: [PATCH] (generic): Added defgroup declaration. (generic-make-keywords-list): Uses regexp-opt. (generic-mode-set-font-lock): Uses regexp-opt. --- lisp/generic.el | 38 ++++++++++++++++++-------------------- 1 file changed, 18 insertions(+), 20 deletions(-) diff --git a/lisp/generic.el b/lisp/generic.el index 9e4f15086b3..fd7117c3a78 100644 --- a/lisp/generic.el +++ b/lisp/generic.el @@ -162,6 +162,11 @@ instead (which see).") ;; 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 @@ Some generic modes are defined in `generic-x.el'." (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 @@ This hook is NOT installed by default." (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 -- 2.39.2