Deprecate rainbow-delimiters-delimiter-blacklist.

rainbow-delimiters-pick-face-function offers a superset of its
functionality.
master
Fanael Linithien 11 years ago
parent 3d1e204f04
commit cc829473be
  1. 36
      rainbow-delimiters-test.el
  2. 22
      rainbow-delimiters.el

@ -188,10 +188,6 @@
0 1 (face (rainbow-delimiters-depth-1-face)) 0 1 (face (rainbow-delimiters-depth-1-face))
1 2 (face (rainbow-delimiters-mismatched-face)))))))) 1 2 (face (rainbow-delimiters-mismatched-face))))))))
(ert-deftest doesnt-highlighlight-disabled-delimiters ()
(let ((rainbow-delimiters-delimiter-blacklist '(?\( ?\))))
(should-do-nothing 'text-mode "(((())))")))
(ert-deftest doesnt-highlight-escaped-delimiters () (ert-deftest doesnt-highlight-escaped-delimiters ()
(with-temp-buffer-in-mode 'emacs-lisp-mode (with-temp-buffer-in-mode 'emacs-lisp-mode
(with-string (str "(bar ?\\( (foo?))") (with-string (str "(bar ?\\( (foo?))")
@ -252,19 +248,9 @@
7 8 (face (rainbow-delimiters-depth-1-face diff-added)) 7 8 (face (rainbow-delimiters-depth-1-face diff-added))
8 9 (face diff-added))))))) 8 9 (face diff-added)))))))
(ert-deftest blacklisted-contribute-to-depth ()
(let ((rainbow-delimiters-delimiter-blacklist '(?\( ?\))))
(with-temp-buffer-in-mode 'text-mode
(with-string (str "([])")
(should (ert-equal-including-properties
(buffer-string)
#("([])"
1 2 (face (rainbow-delimiters-depth-2-face))
2 3 (face (rainbow-delimiters-depth-2-face)))))))))
(ert-deftest can-customize-face-picker () (ert-deftest can-customize-face-picker ()
(let ((rainbow-delimiters-pick-face-function (let ((rainbow-delimiters-pick-face-function
(lambda (_depth _loc _match) (lambda (_depth _match _loc)
'font-lock-keyword-face))) 'font-lock-keyword-face)))
(with-temp-buffer-in-mode 'emacs-lisp-mode (with-temp-buffer-in-mode 'emacs-lisp-mode
(with-string (str "(())") (with-string (str "(())")
@ -276,5 +262,25 @@
2 3 (face (font-lock-keyword-face)) 2 3 (face (font-lock-keyword-face))
3 4 (face (font-lock-keyword-face))))))))) 3 4 (face (font-lock-keyword-face)))))))))
(ert-deftest face-picker-can-disable-highlighting ()
(let ((rainbow-delimiters-pick-face-function
(lambda (depth match loc)
(unless (memq (char-after loc) '(?\( ?\)))
(rainbow-delimiters-default-pick-face depth match loc)))))
(should-do-nothing 'text-mode "(((())))")))
(ert-deftest delimiters-disabled-by-face-picker-contribute-to-depth ()
(let ((rainbow-delimiters-pick-face-function
(lambda (depth match loc)
(unless (memq (char-after loc) '(?\( ?\)))
(rainbow-delimiters-default-pick-face depth match loc)))))
(with-temp-buffer-in-mode 'text-mode
(with-string (str "([])")
(should (ert-equal-including-properties
(buffer-string)
#("([])"
1 2 (face (rainbow-delimiters-depth-2-face))
2 3 (face (rainbow-delimiters-depth-2-face)))))))))
(provide 'rainbow-delimiters-test) (provide 'rainbow-delimiters-test)
;;; rainbow-delimiters-test.el ends here ;;; rainbow-delimiters-test.el ends here

@ -90,12 +90,13 @@ When depth exceeds innermost defined face, colors cycle back through."
:prefix "rainbow-delimiters-") :prefix "rainbow-delimiters-")
(defcustom rainbow-delimiters-delimiter-blacklist '() (defcustom rainbow-delimiters-delimiter-blacklist '()
"Disable highlighting of selected delimiters. "Unused variable pending removal.
To prevent highlighting of certain delimiters, use
Delimiters in this list are not highlighted." `rainbow-delimiters-pick-face-function' instead."
:tag "Delimiter Blacklist"
:type '(repeat character)
:group 'rainbow-delimiters) :group 'rainbow-delimiters)
(make-obsolete-variable 'rainbow-delimiters-delimiter-blacklist
'rainbow-delimiters-pick-face-function
"2.1")
(defcustom rainbow-delimiters-pick-face-function (defcustom rainbow-delimiters-pick-face-function
#'rainbow-delimiters-default-pick-face #'rainbow-delimiters-default-pick-face
@ -193,13 +194,10 @@ The returned value is either `rainbow-delimiters-unmatched-face',
LOC is the location of the character to add text properties to. LOC is the location of the character to add text properties to.
DEPTH is the nested depth at LOC, which determines the face to use. DEPTH is the nested depth at LOC, which determines the face to use.
MATCH is nil iff it's a mismatched closing delimiter. MATCH is nil iff it's a mismatched closing delimiter."
(let ((face (funcall rainbow-delimiters-pick-face-function depth match loc)))
The delimiter is not highlighted if it's a blacklisted delimiter." (when face
(unless (memq (char-after loc) rainbow-delimiters-delimiter-blacklist) (font-lock-prepend-text-property loc (1+ loc) 'face face))))
(let ((face (funcall rainbow-delimiters-pick-face-function depth match loc)))
(when face
(font-lock-prepend-text-property loc (1+ loc) 'face face)))))
(defun rainbow-delimiters--char-ineligible-p (loc ppss delim-syntax-code) (defun rainbow-delimiters--char-ineligible-p (loc ppss delim-syntax-code)
"Return t if char at LOC should not be highlighted. "Return t if char at LOC should not be highlighted.

Loading…
Cancel
Save