]> code.delx.au - gnu-emacs-elpa/commitdiff
Update eval-expression recommendation for 24.3.
authorJackson Ray Hamilton <jackson@jacksonrayhamilton.com>
Thu, 18 Jun 2015 07:26:29 +0000 (00:26 -0700)
committerJackson Ray Hamilton <jackson@jacksonrayhamilton.com>
Thu, 18 Jun 2015 07:26:29 +0000 (00:26 -0700)
README.md
context-coloring.el
test/context-coloring-test.el

index 568be45940422f013e6b7dfd0016daf4f9a8749c..0ced14cb416503466f4d04065274e6dc5f398f6f 100644 (file)
--- a/README.md
+++ b/README.md
@@ -78,8 +78,8 @@ Add the following to your init file:
 ;; emacs-lisp-mode:
 (add-hook 'emacs-lisp-mode-hook #'context-coloring-mode)
 
-;; Minibuffer:
-(add-hook 'eval-expression-minibuffer-setup-hook #'context-coloring-mode)
+;; eval-expression:
+(add-hook 'minibuffer-setup-hook #'context-coloring-mode)
 ```
 
 ## Customizing
index 6ebf924ef98db922b452e9be6c5c223a51a7b9cd..69c6eb8f6ee8d34e367e7dcacac8262262c43ecc 100644 (file)
@@ -5,7 +5,7 @@
 ;; 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.
@@ -1760,9 +1760,16 @@ precedence, i.e. the car of `custom-enabled-themes'."
  :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
index f7c7a20b9e3d623d115c791e6df2538d48f779ad..39f2f801c1627624f82f624ca3e30a9a3fa723ac 100644 (file)
@@ -1272,28 +1272,23 @@ nnnnn n nnn nnnnnnnn")))
 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)