emacs-elpa-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[nongnu] elpa/rainbow-delimiters 3d6de240fb 043/188: Merge pull request


From: ELPA Syncer
Subject: [nongnu] elpa/rainbow-delimiters 3d6de240fb 043/188: Merge pull request #12 from crlf0710/master
Date: Sat, 1 Jan 2022 00:58:51 -0500 (EST)

branch: elpa/rainbow-delimiters
commit 3d6de240fb921e1aaf422d642125f6a30fe5a2a6
Merge: 6345c1fa4b 73b15f1b77
Author: jlr <jeremy.rayman@gmail.com>
Commit: jlr <jeremy.rayman@gmail.com>

    Merge pull request #12 from crlf0710/master
    
    Language specific escape character recognization.
---
 rainbow-delimiters.el | 30 +++++++++++++++++++++++++-----
 1 file changed, 25 insertions(+), 5 deletions(-)

diff --git a/rainbow-delimiters.el b/rainbow-delimiters.el
index a2c74ad773..0e22431893 100644
--- a/rainbow-delimiters.el
+++ b/rainbow-delimiters.el
@@ -401,6 +401,27 @@ Sets text properties:
                             '(font-lock-face nil
                               rear-nonsticky nil))))
 
+(make-local-variable 'rainbow-delimiters-escaped-char-predicate)
+(setq rainbow-delimiters-escaped-char-predicate nil)
+
+(defvar rainbow-delimiters-escaped-char-predicate-list
+  '((emacs-lisp-mode . rainbow-delimiters-escaped-char-predicate-emacs-lisp)
+    (inferior-emacs-lisp-mode . 
rainbow-delimiters-escaped-char-predicate-emacs-lisp)
+    (lisp-mode . rainbow-delimiters-escaped-char-predicate-lisp)
+    (scheme-mode . rainbow-delimiters-escaped-char-predicate-lisp)
+    (clojure-mode . rainbow-delimiters-escaped-char-predicate-lisp)
+    (inferior-scheme-mode . rainbow-delimiters-escaped-char-predicate-lisp)
+    ))
+
+(defun rainbow-delimiters-escaped-char-predicate-emacs-lisp (loc)
+  (and (eq (char-before loc) ?\\)  ; escaped char, e.g. ?\) - not counted
+       (and (not (eq (char-before (1- loc)) ?\\)) ; special-case: ignore ?\\
+            (eq (char-before (1- loc)) ?\?))))
+;; NOTE: standard char read syntax '?)' is not tested for because emacs manual
+;; states punctuation such as delimiters should _always_ use escaped '?\)' 
form.
+
+(defun rainbow-delimiters-escaped-char-predicate-lisp (loc)
+  (eq (char-before loc) ?\\))
 
 (defsubst rainbow-delimiters-char-ineligible-p (loc)
   "Return t if char at LOC should be skipped, e.g. if inside a comment.
@@ -413,11 +434,8 @@ Returns t if char at loc meets one of the following 
conditions:
     (or
      (nth 3 parse-state)                ; inside string?
      (nth 4 parse-state)                ; inside comment?
-     (and (eq (char-before loc) ?\\)  ; escaped char, e.g. ?\) - not counted
-          (and (not (eq (char-before (1- loc)) ?\\)) ; special-case: ignore ?\\
-               (eq (char-before (1- loc)) ?\?))))))
-;; NOTE: standard char read syntax '?)' is not tested for because emacs manual
-;; states punctuation such as delimiters should _always_ use escaped '?\)' 
form.
+     (and rainbow-delimiters-escaped-char-predicate
+          (funcall rainbow-delimiters-escaped-char-predicate loc)))))
 
 
 (defsubst rainbow-delimiters-apply-color (delim depth loc)
@@ -445,6 +463,8 @@ LOC is location of character (delimiter) to be colorized."
   "Highlight delimiters in region between START and END.
 
 Used by jit-lock for dynamic highlighting."
+  (setq rainbow-delimiters-escaped-char-predicate
+        (cdr (assoc major-mode 
rainbow-delimiters-escaped-char-predicate-list)))
   (save-excursion
     (goto-char start)
     ;; START can be anywhere in buffer; determine the nesting depth at START 
loc



reply via email to

[Prev in Thread] Current Thread [Next in Thread]