Subject: bug#15699: 24.3.50; lisp-cl-font-lock-keywords-2

From: Helmut Eller <[email-masked]>
Date: Thu, 24 Oct 2013 17:02:22 +0200

In lisp-mode, "labels" and "flet" are not highlighted while stuff like
"letrec" and "save-excursion" are (wrongly) highlighted.  To see that,
open a file with name "foo.lisp" and insert something like:

 (labels ((foo ())) (letrec ((bar bar))))

I think that the patch below would fix this problem. The patch also
removes "featurep" because that's not a defined operator in Common Lisp.
I can also write a ERT test if needed.

In GNU Emacs 24.3.50.4 (i686-pc-linux-gnu, GTK+ Version 2.24.10)
 of 2013-10-19 on ix
Bzr revision: 114715 [email-masked]

=== modified file 'lisp/emacs-lisp/lisp-mode.el'
--- lisp/emacs-lisp/lisp-mode.el	2013-10-08 14:57:18 +0000
+++ lisp/emacs-lisp/lisp-mode.el	2013-10-24 14:57:07 +0000
@@ -251,9 +251,7 @@
                              (cons "go" (mapcar (lambda (s) (concat "cl-" s))
                                                 (remove "go" cl-lib-kw))))
                             t)
-                (regexp-opt (append lisp-kw el-kw eieio-kw
-                                    (cons "go" (mapcar (lambda (s) (concat "cl-" s))
-                                                       (remove "go" cl-kw))))
+                (regexp-opt (append lisp-kw cl-kw eieio-kw cl-lib-kw)
                             t)
 
                 ;; Elisp and Common Lisp "errors".
@@ -360,7 +358,7 @@
        ;; Control structures.  Common Lisp forms.
        (,(concat "(" cl-kws-re "\\_>") . 1)
        ;; Exit/Feature symbols as constants.
-       (,(concat "(\\(catch\\|throw\\|featurep\\|provide\\|require\\)\\_>"
+       (,(concat "(\\(catch\\|throw\\|provide\\|require\\)\\_>"
                  "[ \t']*\\(\\(?:\\sw\\|\\s_\\)+\\)?")
         (1 font-lock-keyword-face)
         (2 font-lock-constant-face nil t))