X-Git-Url: http://git.chise.org/gitweb/?a=blobdiff_plain;f=lisp%2Ffont-lock.el;h=b1cb31d240c8e050cbd0bbcd0daa540e4f8c5666;hb=5550b5b91e953696b468934fd97770824224c3ee;hp=693b57c8ba1699241ce16afbf6ec433f1f6e3914;hpb=02f4d2761a98c5cb9d5b423d2361160a5d8c9ee4;p=chise%2Fxemacs-chise.git.1 diff --git a/lisp/font-lock.el b/lisp/font-lock.el index 693b57c..b1cb31d 100644 --- a/lisp/font-lock.el +++ b/lisp/font-lock.el @@ -2,7 +2,7 @@ ;; Copyright (C) 1992-1995, 1997 Free Software Foundation, Inc. ;; Copyright (C) 1995 Amdahl Corporation. -;; Copyright (C) 1996, 2000 Ben Wing. +;; Copyright (C) 1996, 2000, 2001 Ben Wing. ;; Author: Jamie Zawinski , for the LISPM Preservation Society. ;; Minimally merged with FSF 19.34 by Barry Warsaw @@ -282,7 +282,7 @@ available for buffers in `c-mode', and level 1 decoration otherwise." (symbol :tag "name")) (radio :tag "Decoration" (const :tag "default" nil) - (const :tag "maximum" t) + (const :tag "maximum" t) (integer :tag "level" 1))))) :group 'font-lock) @@ -626,7 +626,7 @@ This is normally set via `font-lock-defaults'.") ;; #### barf gag retch. Horrid FSF lossage that we need to ;; keep around for compatibility with font-lock-keywords that ;; forget to properly quote their faces. I tried just let-binding -;; them when we eval the face expression, but that failes because +;; them when we eval the face expression, but that fails because ;; some files actually use the variables directly in their init code ;; without quoting them. --ben (defvar font-lock-comment-face 'font-lock-comment-face @@ -639,6 +639,9 @@ The corresponding face should be set using `edit-faces' or the It is present only for horrid FSF compatibility reasons. The corresponding face should be set using `edit-faces' or the `set-face-*' functions.") +;; GNU compatibility +(define-compatible-variable-alias + 'font-lock-doc-face 'font-lock-doc-string-face) (defvar font-lock-string-face 'font-lock-string-face "This variable should not be set. It is present only for horrid FSF compatibility reasons. @@ -649,6 +652,11 @@ The corresponding face should be set using `edit-faces' or the It is present only for horrid FSF compatibility reasons. The corresponding face should be set using `edit-faces' or the `set-face-*' functions.") +(defvar font-lock-builtin-face 'font-lock-builtin-face + "This variable should not be set. +It is present only for horrid FSF compatibility reasons. +The corresponding face should be set using `edit-faces' or the +`set-face-*' functions.") (defvar font-lock-function-name-face 'font-lock-function-name-face "This variable should not be set. It is present only for horrid FSF compatibility reasons. @@ -664,6 +672,11 @@ The corresponding face should be set using `edit-faces' or the It is present only for horrid FSF compatibility reasons. The corresponding face should be set using `edit-faces' or the `set-face-*' functions.") +(defvar font-lock-constant-face 'font-lock-constant-face + "This variable should not be set. +It is present only for horrid FSF compatibility reasons. +The corresponding face should be set using `edit-faces' or the +`set-face-*' functions.") (defvar font-lock-reference-face 'font-lock-reference-face "This variable should not be set. It is present only for horrid FSF compatibility reasons. @@ -680,9 +693,11 @@ The corresponding face should be set using `edit-faces' or the font-lock-string-face font-lock-doc-string-face font-lock-keyword-face + font-lock-builtin-face font-lock-function-name-face font-lock-variable-name-face font-lock-type-face + font-lock-constant-face font-lock-reference-face font-lock-preprocessor-face font-lock-warning-face)) @@ -731,6 +746,15 @@ on the major mode's symbol." "Font Lock mode face used to highlight keywords." :group 'font-lock-faces) +(defface font-lock-builtin-face + '((((class color) (background light)) (:foreground "Purple")) + (((class color) (background dark)) (:foreground "Cyan")) + (((class grayscale) (background light)) (:foreground "LightGray" :bold t)) + (((class grayscale) (background dark)) (:foreground "DimGray" :bold t)) + (t (:bold t))) + "Font Lock mode face used to highlight builtins." +:group 'font-lock-faces) + (defface font-lock-function-name-face '((((class color) (background dark)) (:foreground "aquamarine")) ;; brown4 is hardly different from black on windows. @@ -763,6 +787,17 @@ on the major mode's symbol." "Font Lock mode face used to highlight types." :group 'font-lock-faces) +(defface font-lock-constant-face + '((((class color) (background light)) (:foreground "CadetBlue")) + (((class color) (background dark)) (:foreground "Aquamarine")) + (((class grayscale) (background light)) + (:foreground "LightGray" :bold t :underline t)) + (((class grayscale) (background dark)) + (:foreground "Gray50" :bold t :underline t)) + (t (:bold t :underline t))) + "Font Lock mode face used to highlight constants and labels." +:group 'font-lock-faces) + (defface font-lock-reference-face '((((class color) (background dark)) (:foreground "cadetblue2")) (((class color) (background light)) (:foreground "red3")) @@ -773,8 +808,6 @@ on the major mode's symbol." "Font Lock mode face used to highlight references." :group 'font-lock-faces) -;; #### FSF has font-lock-builtin-face. - (defface font-lock-preprocessor-face '((((class color) (background dark)) (:foreground "steelblue1")) (((class color) (background light)) (:foreground "blue3")) @@ -782,7 +815,6 @@ on the major mode's symbol." "Font Lock Mode face used to highlight preprocessor conditionals." :group 'font-lock-faces) -;; #### Currently unused (defface font-lock-warning-face '((((class color) (background light)) (:foreground "Red" :bold t)) (((class color) (background dark)) (:foreground "Pink" :bold t)) @@ -1203,10 +1235,15 @@ buffer modifications are performed or a buffer is reverted.") (defun font-lock-after-change-function (beg end old-len) (when font-lock-mode ;; treat deletions as if the following character (or previous, if - ;; there is no following) were inserted. this is a bit of a hack + ;; there is no following) were inserted. (also use the previous + ;; character at end of line. this avoids a problem when you + ;; insert a comment on the line before a line of code: if we use + ;; the following char, then when you hit backspace, the following + ;; line of code turns the comment color.) this is a bit of a hack ;; but allows us to use text properties for everything. (if (= beg end) - (cond ((/= end (point-max)) (setq end (1+ end))) + (cond ((not (save-excursion (goto-char end) (eolp))) + (setq end (1+ end))) ((/= beg (point-min)) (setq beg (1- beg))) (t nil))) (put-text-property beg end 'font-lock-pending t) @@ -1448,8 +1485,8 @@ Optional argument OBJECT is the string or buffer containing the text." (defun font-lock-apply-syntactic-highlight (highlight) "Apply HIGHLIGHT following a match. - HIGHLIGHT should be of the form MATCH-HIGHLIGHT, - see `font-lock-syntactic-keywords'." +HIGHLIGHT should be of the form MATCH-HIGHLIGHT, +see `font-lock-syntactic-keywords'." (let* ((match (nth 0 highlight)) (start (match-beginning match)) (end (match-end match)) (value (nth 1 highlight)) @@ -1527,8 +1564,7 @@ START should be at the beginning of a line." (font-lock-apply-syntactic-highlight (car highlights)) (font-lock-fontify-syntactic-anchored-keywords (car highlights) end)) - (setq highlights (cdr highlights))) - ) + (setq highlights (cdr highlights)))) (setq keywords (cdr keywords))))) ;;; Regexp fontification functions. @@ -1672,8 +1708,9 @@ START should be at the beginning of a line." ;; Various functions. (defun font-lock-compile-keywords (&optional keywords) - ;; Compile `font-lock-keywords' into the form (t KEYWORD ...) where KEYWORD - ;; is the (MATCHER HIGHLIGHT ...) shown in the variable's doc string. + "Compile KEYWORDS into the form (t KEYWORD ...). +Here KEYWORD is of the form (MATCHER HIGHLIGHT ...) as shown in the +`font-lock-keywords' doc string." (let ((keywords (or keywords font-lock-keywords))) (setq font-lock-keywords (if (eq (car-safe keywords) t) @@ -1695,7 +1732,7 @@ START should be at the beginning of a line." keyword))) (defun font-lock-eval-keywords (keywords) - ;; Evalulate KEYWORDS if a function (funcall) or variable (eval) name. + "Evaluate KEYWORDS if a function (funcall) or variable (eval) name." (if (listp keywords) keywords (font-lock-eval-keywords (if (fboundp keywords)