(debug): Quieten Drew Adams.
[bpt/emacs.git] / lisp / paren.el
index 6c5f9de..7c6abe0 100644 (file)
@@ -1,6 +1,6 @@
 ;;; paren.el --- highlight matching paren
 
-;; Copyright (C) 1993, 1996, 2001 Free Software Foundation, Inc.
+;; Copyright (C) 1993, 1996, 2001, 2004, 2005  Free Software Foundation, Inc.
 
 ;; Author: rms@gnu.org
 ;; Maintainer: FSF
@@ -71,7 +71,7 @@ otherwise)."
   :group 'paren-showing
   :version "20.3")
 
-(defface show-paren-match-face
+(defface show-paren-match
   '((((class color) (background light))
      :background "turquoise")          ; looks OK on tty (becomes cyan)
     (((class color) (background dark))
@@ -83,13 +83,17 @@ otherwise)."
   "Show Paren mode face used for a matching paren."
   :group 'faces
   :group 'paren-showing)
+;; backward-compatibility alias
+(put 'show-paren-match-face 'face-alias 'show-paren-match)
 
-(defface show-paren-mismatch-face
+(defface show-paren-mismatch
   '((((class color)) (:foreground "white" :background "purple"))
     (t (:inverse-video t)))
   "Show Paren mode face used for a mismatching paren."
   :group 'faces
   :group 'paren-showing)
+;; backward-compatibility alias
+(put 'show-paren-mismatch-face 'face-alias 'show-paren-mismatch)
 
 (defvar show-paren-highlight-openparen t
   "*Non-nil turns on openparen highlighting when matching forward.")
@@ -139,8 +143,8 @@ in `show-paren-style' after `show-paren-delay' seconds of Emacs idle time."
 (defun show-paren-function ()
   (if show-paren-mode
       (let ((oldpos (point))
-           (dir (cond ((eq (car (syntax-after (1- (point)))) 5) -1)
-                      ((eq (car (syntax-after (point))) 4) 1)))
+           (dir (cond ((eq (syntax-class (syntax-after (1- (point)))) 5) -1)
+                       ((eq (syntax-class (syntax-after (point)))      4) 1)))
            pos mismatch face)
        ;;
        ;; Find the other end of the sexp.
@@ -169,11 +173,14 @@ in `show-paren-style' after `show-paren-delay' seconds of Emacs idle time."
              ;; kind of paren to match the one we started at.
              (when (integerp pos)
                (let ((beg (min pos oldpos)) (end (max pos oldpos)))
-                 (when (/= (char-syntax (char-after beg)) ?\$)
+                 (unless (eq (syntax-class (syntax-after beg)) 8)
                    (setq mismatch
-                         (not (eq (char-before end)
-                                  ;; This can give nil.
-                                  (matching-paren (char-after beg)))))))))))
+                         (not (or (eq (char-before end)
+                                      ;; This can give nil.
+                                      (cdr (syntax-after beg)))
+                                  (eq (char-after beg)
+                                      ;; This can give nil.
+                                      (cdr (syntax-after (1- end)))))))))))))
        ;;
        ;; Highlight the other end of the sexp, or unhighlight if none.
        (if (not pos)
@@ -190,8 +197,8 @@ in `show-paren-style' after `show-paren-delay' seconds of Emacs idle time."
              (progn
                (if show-paren-ring-bell-on-mismatch
                    (beep))
-               (setq face 'show-paren-mismatch-face))
-           (setq face 'show-paren-match-face))
+               (setq face 'show-paren-mismatch))
+           (setq face 'show-paren-match))
          ;;
          ;; If matching backwards, highlight the closeparen
          ;; before point as well as its matching open.
@@ -246,5 +253,5 @@ in `show-paren-style' after `show-paren-delay' seconds of Emacs idle time."
 
 (provide 'paren)
 
-;;; arch-tag: d0969b88-7ac0-4bd0-bd53-e73b892b86a9
+;; arch-tag: d0969b88-7ac0-4bd0-bd53-e73b892b86a9
 ;;; paren.el ends here