]> git.eshelyaron.com Git - emacs.git/commitdiff
(lisp-font-lock-keywords-1): Set `font-lock-negation-char-face' for [^...] char group.
authorDaniel Pfeiffer <occitan@esperanto.org>
Mon, 16 May 2005 20:36:45 +0000 (20:36 +0000)
committerDaniel Pfeiffer <occitan@esperanto.org>
Mon, 16 May 2005 20:36:45 +0000 (20:36 +0000)
(lisp-font-lock-keywords-2): Highlight regexp's \\( \\| \\).

lisp/ChangeLog
lisp/font-lock.el

index 73002253e660a8581967c315ee249f7030b7c837..b5383896cde75b30a2ebd486503306963d3fc689 100644 (file)
@@ -1,3 +1,29 @@
+2005-05-16  Daniel Pfeiffer  <occitan@esperanto.org>
+
+       * font-lock.el (lisp-font-lock-keywords-1): Set
+       `font-lock-negation-char-face' for [^...] char group.
+       (lisp-font-lock-keywords-2): Highlight regexp's \\( \\| \\).
+
+       * progmodes/make-mode.el (makefile-dependency-regex): Turn it into
+       a var, and refine it to mask one more level of nested vars.
+       (makefile-rule-action-regex): Turn it into a var, and refine it so
+       it recognizes backslashed continuation lines as belonging to the
+       same command.
+       (makefile-macroassign-regex): Refine it so it recognizes
+       backslashed continuation lines as belonging to the same command.
+       (makefile-var-use-regex): Don't look at the next char, because it
+       might be the same one to be skipped by the initial [^$], leading
+       to an overlooked variable use.
+       (makefile-make-font-lock-keywords): Remove two parameters, which
+       are now variables that some of the modes set locally.  Handle
+       dependency and rule action matching through functions, because
+       regexps alone match too often.  Dependency matching now comes
+       last, so it can check, whether a colon already matched something
+       else.
+       (makefile-mode): Inform that font-lock improves makefile parsing
+       capabilities.
+       (makefile-match-dependency, makefile-match-action): New functions.
+
 2005-05-16  Juanma Barranquero  <lekktu@gmail.com>
 
        * emacs-lisp/cl-extra.el (equalp): Doc fix.
index b71e5a3136f509d5290460940c14a647f9739f38..ee1fc1a515e877d7cdd151975b9a5efc68625b4f 100644 (file)
@@ -1967,109 +1967,106 @@ This function could be MATCHER in a MATCH-ANCHORED `font-lock-keywords' item."
 
 (defconst lisp-font-lock-keywords-1
   (eval-when-compile
-    (list
-     ;;
-     ;; Definitions.
-     (list (concat "(\\(def\\("
-                  ;; Function declarations.
-                  "\\(advice\\|varalias\\|alias\\|generic\\|macro\\*?\\|method\\|"
-                   "setf\\|subst\\*?\\|un\\*?\\|"
-                   "ine-\\(condition\\|\\(?:derived\\|minor\\|generic\\)-mode\\|"
-                   "method-combination\\|setf-expander\\|skeleton\\|widget\\|"
-                   "function\\|\\(compiler\\|modify\\|symbol\\)-macro\\)\\)\\|"
-                  ;; Variable declarations.
-                  "\\(const\\(ant\\)?\\|custom\\|face\\|parameter\\|var\\)\\|"
-                  ;; Structure declarations.
-                  "\\(class\\|group\\|theme\\|package\\|struct\\|type\\)"
-                  "\\)\\)\\>"
-                  ;; Any whitespace and defined object.
-                  "[ \t'\(]*"
-                  "\\(setf[ \t]+\\sw+)\\|\\sw+\\)?")
-          '(1 font-lock-keyword-face)
-          '(9 (cond ((match-beginning 3) font-lock-function-name-face)
-                    ((match-beginning 6) font-lock-variable-name-face)
-                    (t font-lock-type-face))
-              nil t))
-     ;;
-     ;; Emacs Lisp autoload cookies.
-     '("^;;;###\\(autoload\\)" 1 font-lock-warning-face prepend)
-     ))
+    `(;; Definitions.
+      (,(concat "(\\(def\\("
+               ;; Function declarations.
+               "\\(advice\\|varalias\\|alias\\|generic\\|macro\\*?\\|method\\|"
+               "setf\\|subst\\*?\\|un\\*?\\|"
+               "ine-\\(condition\\|\\(?:derived\\|minor\\|generic\\)-mode\\|"
+               "method-combination\\|setf-expander\\|skeleton\\|widget\\|"
+               "function\\|\\(compiler\\|modify\\|symbol\\)-macro\\)\\)\\|"
+               ;; Variable declarations.
+               "\\(const\\(ant\\)?\\|custom\\|face\\|parameter\\|var\\)\\|"
+               ;; Structure declarations.
+               "\\(class\\|group\\|theme\\|package\\|struct\\|type\\)"
+               "\\)\\)\\>"
+               ;; Any whitespace and defined object.
+               "[ \t'\(]*"
+               "\\(setf[ \t]+\\sw+)\\|\\sw+\\)?")
+       (1 font-lock-keyword-face)
+       (9 (cond ((match-beginning 3) font-lock-function-name-face)
+               ((match-beginning 6) font-lock-variable-name-face)
+               (t font-lock-type-face))
+         nil t))
+      ;; Emacs Lisp autoload cookies.
+      ("^;;;###\\(autoload\\)" 1 font-lock-warning-face prepend)
+      ;; Regexp negated char group.
+      ("\\[\\(\\^\\)" 1 font-lock-negation-char-face prepend)))
   "Subdued level highlighting for Lisp modes.")
 
 (defconst lisp-font-lock-keywords-2
   (append lisp-font-lock-keywords-1
    (eval-when-compile
-     (list
-      ;;
-      ;; Control structures.  Emacs Lisp forms.
-      (cons (concat
-            "(" (regexp-opt
-                 '("cond" "if" "while" "let" "let*"
-                   "prog" "progn" "progv" "prog1" "prog2" "prog*"
-                   "inline" "lambda" "save-restriction" "save-excursion"
-                   "save-window-excursion" "save-selected-window"
-                   "save-match-data" "save-current-buffer" "unwind-protect"
-                   "condition-case" "track-mouse"
-                   "eval-after-load" "eval-and-compile" "eval-when-compile"
-                   "eval-when"
-                   "with-category-table"
-                   "with-current-buffer" "with-electric-help"
-                   "with-local-quit" "with-no-warnings"
-                   "with-output-to-string" "with-output-to-temp-buffer"
-                   "with-selected-window" "with-syntax-table"
-                   "with-temp-buffer" "with-temp-file" "with-temp-message"
-                   "with-timeout" "with-timeout-handler") t)
-            "\\>")
-           1)
-      ;;
-      ;; Control structures.  Common Lisp forms.
-      (cons (concat
-            "(" (regexp-opt
-                 '("when" "unless" "case" "ecase" "typecase" "etypecase"
-                   "ccase" "ctypecase" "handler-case" "handler-bind"
-                   "restart-bind" "restart-case" "in-package"
-                   "break" "ignore-errors"
-                   "loop" "do" "do*" "dotimes" "dolist" "the" "locally"
-                   "proclaim" "declaim" "declare" "symbol-macrolet"
-                   "lexical-let" "lexical-let*" "flet" "labels" "compiler-let"
-                   "destructuring-bind" "macrolet" "tagbody" "block" "go"
-                   "multiple-value-bind" "multiple-value-prog1"
-                   "return" "return-from"
-                   "with-accessors" "with-compilation-unit"
-                   "with-condition-restarts" "with-hash-table-iterator"
-                   "with-input-from-string" "with-open-file"
-                   "with-open-stream" "with-output-to-string"
-                   "with-package-iterator" "with-simple-restart"
-                   "with-slots" "with-standard-io-syntax") t)
-            "\\>")
-           1)
-      ;;
-      ;; Exit/Feature symbols as constants.
-      (list (concat "(\\(catch\\|throw\\|featurep\\|provide\\|require\\)\\>"
-                   "[ \t']*\\(\\sw+\\)?")
-           '(1 font-lock-keyword-face)
-           '(2 font-lock-constant-face nil t))
-      ;;
-      ;; Erroneous structures.
-      '("(\\(abort\\|assert\\|warn\\|check-type\\|cerror\\|error\\|signal\\)\\>" 1 font-lock-warning-face)
-      ;;
-      ;; Words inside \\[] tend to be for `substitute-command-keys'.
-      '("\\\\\\\\\\[\\(\\sw+\\)]" 1 font-lock-constant-face prepend)
-      ;;
-      ;; Words inside `' tend to be symbol names.
-      '("`\\(\\sw\\sw+\\)'" 1 font-lock-constant-face prepend)
-      ;;
-      ;; Constant values.
-      '("\\<:\\sw+\\>" 0 font-lock-builtin-face)
-      ;;
-      ;; ELisp and CLisp `&' keywords as types.
-      '("\\&\\sw+\\>" . font-lock-type-face)
-      ;;
+     `(;; Control structures.  Emacs Lisp forms.
+       (,(concat
+         "(" (regexp-opt
+              '("cond" "if" "while" "let" "let*"
+                "prog" "progn" "progv" "prog1" "prog2" "prog*"
+                "inline" "lambda" "save-restriction" "save-excursion"
+                "save-window-excursion" "save-selected-window"
+                "save-match-data" "save-current-buffer" "unwind-protect"
+                "condition-case" "track-mouse"
+                "eval-after-load" "eval-and-compile" "eval-when-compile"
+                "eval-when"
+                "with-category-table"
+                "with-current-buffer" "with-electric-help"
+                "with-local-quit" "with-no-warnings"
+                "with-output-to-string" "with-output-to-temp-buffer"
+                "with-selected-window" "with-syntax-table"
+                "with-temp-buffer" "with-temp-file" "with-temp-message"
+                "with-timeout" "with-timeout-handler") t)
+         "\\>")
+         .  1)
+       ;; Control structures.  Common Lisp forms.
+       (,(concat
+         "(" (regexp-opt
+              '("when" "unless" "case" "ecase" "typecase" "etypecase"
+                "ccase" "ctypecase" "handler-case" "handler-bind"
+                "restart-bind" "restart-case" "in-package"
+                "break" "ignore-errors"
+                "loop" "do" "do*" "dotimes" "dolist" "the" "locally"
+                "proclaim" "declaim" "declare" "symbol-macrolet"
+                "lexical-let" "lexical-let*" "flet" "labels" "compiler-let"
+                "destructuring-bind" "macrolet" "tagbody" "block" "go"
+                "multiple-value-bind" "multiple-value-prog1"
+                "return" "return-from"
+                "with-accessors" "with-compilation-unit"
+                "with-condition-restarts" "with-hash-table-iterator"
+                "with-input-from-string" "with-open-file"
+                "with-open-stream" "with-output-to-string"
+                "with-package-iterator" "with-simple-restart"
+                "with-slots" "with-standard-io-syntax") t)
+         "\\>")
+         . 1)
+       ;; Exit/Feature symbols as constants.
+       (,(concat "(\\(catch\\|throw\\|featurep\\|provide\\|require\\)\\>"
+                "[ \t']*\\(\\sw+\\)?")
+       (1 font-lock-keyword-face)
+       (2 font-lock-constant-face nil t))
+       ;; Erroneous structures.
+       ("(\\(abort\\|assert\\|warn\\|check-type\\|cerror\\|error\\|signal\\)\\>" 1 font-lock-warning-face)
+       ;; Words inside \\[] tend to be for `substitute-command-keys'.
+       ("\\\\\\\\\\[\\(\\sw+\\)]" 1 font-lock-constant-face prepend)
+       ;; Words inside `' tend to be symbol names.
+       ("`\\(\\sw\\sw+\\)'" 1 font-lock-constant-face prepend)
+       ;; Constant values.
+       ("\\<:\\sw+\\>" 0 font-lock-builtin-face)
+       ;; ELisp and CLisp `&' keywords as types.
+       ("\\&\\sw+\\>" . font-lock-type-face)
+       ;; Make regexp grouping constructs bold, so they stand out.
+       ("\\([\\][\\]\\)\\([(|)]\\)\\(\\?:\\)?"
+       (1 font-lock-comment-face prepend)
+       (2 'bold prepend)
+       (3 font-lock-type-face prepend t))
+       ;; Underline innermost grouping, so that you can more easily see what belongs together.
+       ;; 2005-05-12: Font-lock can go into an unbreakable endless loop on this -- something's broken.
+       ;;("[\\][\\][(]\\(?:\\?:\\)?\\(\\(?:[^\\\"]+\\|[\\]\\(?:[^\\]\\|[\\][^(]\\)\\)+?\\)[\\][\\][)]"
+        ;;1 'underline prepend)
 ;;;  This is too general -- rms.
 ;;;  A user complained that he has functions whose names start with `do'
 ;;;  and that they get the wrong color.
 ;;;      ;; CL `with-' and `do-' constructs
-;;;      '("(\\(\\(do-\\|with-\\)\\(\\s_\\|\\w\\)*\\)" 1 font-lock-keyword-face)
+;;;      ("(\\(\\(do-\\|with-\\)\\(\\s_\\|\\w\\)*\\)" 1 font-lock-keyword-face)
       )))
   "Gaudy level highlighting for Lisp modes.")