;; Author: Jackson Ray Hamilton <jackson@jacksonrayhamilton.com>
;; Version: 6.4.1
;; Keywords: convenience faces tools
-;; Package-Requires: ((emacs "24") (js2-mode "20150126"))
+;; Package-Requires: ((emacs "24.3") (js2-mode "20150126"))
;; URL: https://github.com/jacksonrayhamilton/context-coloring
;; This file is part of GNU Emacs.
:setup #'context-coloring-setup-idle-change-detection
:teardown #'context-coloring-teardown-idle-change-detection)
+;; `eval-expression-minibuffer-setup-hook' is not available in Emacs 24.3, so
+;; the backwards-compatible recommendation is to use `minibuffer-setup-hook' and
+;; rely on this predicate instead.
+(defun context-coloring-eval-expression-predicate ()
+ "Non-nil if the minibuffer is for `eval-expression'."
+ (eq this-command 'eval-expression))
+
(context-coloring-define-dispatch
'eval-expression
- :predicate #'window-minibuffer-p
+ :predicate #'context-coloring-eval-expression-predicate
:colorizer #'context-coloring-eval-expression-colorize
:delay 0.016
:setup #'context-coloring-setup-idle-change-detection
1111 111
nnnn nn")))
-(defun context-coloring-test-eval-expression-let ()
- "Test that coloring works inside `eval-expression.'"
- (let ((input "(ignore-errors (let (a) (message a free)))"))
- (insert input)
- (context-coloring-colorize)
- (context-coloring-test-assert-coloring "
-xxxx: 0000000-000000 1111 111 11111111 1 0000110")))
-
(context-coloring-test-deftest-eval-expression let
(lambda ()
- (add-hook
- 'eval-expression-minibuffer-setup-hook
- #'context-coloring-test-eval-expression-let)
- (execute-kbd-macro
- (vconcat
- [?\C-u] ;; Don't output to stdout.
- [?\M-x]
- (vconcat "eval-expression"))))
- :after (lambda ()
- (remove-hook
- 'eval-expression-minibuffer-setup-hook
- #'context-coloring-test-eval-expression-let)))
+ (minibuffer-with-setup-hook
+ (lambda ()
+ ;; Perform the test in a hook as it's the only way I know of examining
+ ;; the minibuffer's contents. The contents are implicitly submitted,
+ ;; so we have to ignore the errors in the arbitrary test subject code.
+ (insert "(ignore-errors (let (a) (message a free)))")
+ (context-coloring-colorize)
+ (context-coloring-test-assert-coloring "
+xxxx: 0000000-000000 1111 111 11111111 1 0000110"))
+ ;; Simulate user input because `call-interactively' is blocking and
+ ;; doesn't seem to run the hook.
+ (execute-kbd-macro
+ (vconcat
+ [?\C-u] ;; Don't output the result of the arbitrary test subject code.
+ [?\M-:])))))
(provide 'context-coloring-test)