:setup #'context-coloring-setup-idle-change-detection
:teardown #'context-coloring-teardown-idle-change-detection)
+(defvar context-coloring-ignore-unavailable-predicates
+ (list
+ #'minibufferp)
+ "Cases when \"unavailable\" messages are silenced.
+Necessary in editing states where coloring is only sometimes
+permissible.")
+
+(defun context-coloring-ignore-unavailable-message-p ()
+ "Determine if the unavailable message should be silenced."
+ (let ((predicates context-coloring-ignore-unavailable-predicates)
+ (ignore-p nil))
+ (while (and predicates
+ (not ignore-p))
+ (setq ignore-p (funcall (pop predicates))))
+ ignore-p))
+
;;; Minor mode
;; Colorize once initially.
(let ((context-coloring-parse-interruptable-p nil))
(context-coloring-colorize))))
- (t
- (message "Context coloring is not available for this major mode")))))
+ ((not (context-coloring-ignore-unavailable-message-p))
+ (message "Context coloring is unavailable here")))))
(t
(let ((dispatch (context-coloring-get-current-dispatch)))
(when dispatch
(lambda ()
(context-coloring-mode)
(context-coloring-test-assert-message
- "Context coloring is not available for this major mode"
+ "Context coloring is unavailable here"
"*Messages*")))
(context-coloring-test-deftest derived-mode
(lisp-interaction-mode)
(context-coloring-mode)
(context-coloring-test-assert-not-message
- "Context coloring is not available for this major mode"
+ "Context coloring is unavailable here"
"*Messages*")))
+(context-coloring-test-deftest unavailable-message-ignored
+ (lambda ()
+ (minibuffer-with-setup-hook
+ (lambda ()
+ (context-coloring-mode)
+ (context-coloring-test-assert-not-message
+ "Context coloring is unavailable here"
+ "*Messages*"))
+ (execute-kbd-macro
+ (vconcat
+ [?\C-u]
+ [?\M-!])))))
+
(context-coloring-test-define-derived-mode define-dispatch-error)
(context-coloring-test-deftest define-dispatch-error