]> git.eshelyaron.com Git - emacs.git/commitdiff
A new face for show-paren in expression mode
authorFelipe Ochoa <felipe@fov.space>
Fri, 18 Aug 2017 09:05:12 +0000 (12:05 +0300)
committerEli Zaretskii <eliz@gnu.org>
Fri, 18 Aug 2017 09:05:12 +0000 (12:05 +0300)
* lisp/faces.el (show-paren-match-expression): Define the new face.
* lisp/paren.el (show-paren-function): Apply the different face
when in expression mode.  (Bug#28047)

Copyright-paperwork-exempt: yes

lisp/faces.el
lisp/paren.el

index 01d94d7aae036e88174094a9aaa73c320b8550b9..d9c90fda6be0049f95caa4688bc87f9b38c8d627 100644 (file)
@@ -2854,6 +2854,13 @@ It is used for characters of no fonts too."
   "Face used for a matching paren."
   :group 'paren-showing-faces)
 
+(defface show-paren-match-expression
+  '((t :inherit show-paren-match))
+  "Face used for a matching paren when highlighting the whole expression.
+This face is used by `show-paren-mode'."
+  :group 'paren-showing-faces
+  :version "26.1")
+
 (defface show-paren-mismatch
   '((((class color)) (:foreground "white" :background "purple"))
     (t (:inverse-video t)))
index a4d9200c42fe1c1b6d9a3682e5662cde3fe0838c..5ccfa5faa95c6e7a9a0cd6895146b916c029edf9 100644 (file)
@@ -247,13 +247,21 @@ It is the default value of `show-paren-data-function'."
              (there-beg (nth 2 data))
              (there-end (nth 3 data))
              (mismatch (nth 4 data))
+             (highlight-expression
+              (or (eq show-paren-style 'expression)
+                  (and there-beg
+                       (eq show-paren-style 'mixed)
+                       (let ((closest (if (< there-beg here-beg)
+                                          (1- there-end) (1+ there-beg))))
+                         (not (pos-visible-in-window-p closest))))))
              (face
-              (if mismatch
-                  (progn
-                    (if show-paren-ring-bell-on-mismatch
-                        (beep))
-                    'show-paren-mismatch)
-                'show-paren-match)))
+              (cond
+               (mismatch
+                (if show-paren-ring-bell-on-mismatch
+                    (beep))
+                'show-paren-mismatch)
+               (highlight-expression 'show-paren-match-expression)
+               (t 'show-paren-match))))
         ;;
         ;; If matching backwards, highlight the closeparen
         ;; before point as well as its matching open.
@@ -276,11 +284,7 @@ It is the default value of `show-paren-data-function'."
         ;; If it's an unmatched paren, turn off any such highlighting.
         (if (not there-beg)
             (delete-overlay show-paren--overlay)
-          (if (or (eq show-paren-style 'expression)
-                  (and (eq show-paren-style 'mixed)
-                       (let ((closest (if (< there-beg here-beg)
-                                          (1- there-end) (1+ there-beg))))
-                         (not (pos-visible-in-window-p closest)))))
+          (if highlight-expression
               (move-overlay show-paren--overlay
                            (if (< there-beg here-beg) here-end here-beg)
                             (if (< there-beg here-beg) there-beg there-end)