]> git.eshelyaron.com Git - emacs.git/commitdiff
(generic): Added defgroup declaration.
authorRichard M. Stallman <rms@gnu.org>
Fri, 1 May 1998 04:11:54 +0000 (04:11 +0000)
committerRichard M. Stallman <rms@gnu.org>
Fri, 1 May 1998 04:11:54 +0000 (04:11 +0000)
(generic-make-keywords-list): Uses regexp-opt.
(generic-mode-set-font-lock): Uses regexp-opt.

lisp/generic.el

index 9e4f15086b3f77292e29d2fa282bf60e77113d83..fd7117c3a789ee32b4ff1332aa2cb2cdf7ac0beb 100644 (file)
@@ -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