aboutsummaryrefslogtreecommitdiffstats
path: root/test
diff options
context:
space:
mode:
authorStefan Monnier2019-05-29 15:56:14 -0400
committerStefan Monnier2019-05-29 15:56:14 -0400
commitfe0cb43fb80db52a79ef898f8de49560cc5cdd90 (patch)
tree4825956db223eb96d69583e707cbf13a4d280789 /test
parent49cdbb4a35f8d1d2139e8469bffcf33f65679094 (diff)
downloademacs-fe0cb43fb80db52a79ef898f8de49560cc5cdd90.tar.gz
emacs-fe0cb43fb80db52a79ef898f8de49560cc5cdd90.zip
* lisp/subr.el (add-hook): Turn `append` into `depth` (bug#35508)
Make it possible to control the relative ordering of functions on hooks by specifying `depth` in the same was as was possible with `add-function`. * lisp/electric.el (electric--sort-post-self-insertion-hook): Delete function. (electric-indent-mode, electric-layout-mode, electric-quote-mode): * lisp/elec-pair.el (electric-pair-mode): Use new `depth` arg instead of electric--sort-post-self-insertion-hook. * lisp/emacs-lisp/syntax.el (syntax-propertize, syntax-ppss): Use new `depth` arg to make sure noone accidentally gets added after syntax-ppss-flush-cache. * doc/lispref/modes.texi (Setting Hooks): Document new `depth` arg. * test/lisp/subr-tests.el (subr-tests-add-hook-depth): New test.
Diffstat (limited to 'test')
-rw-r--r--test/lisp/subr-tests.el33
1 files changed, 30 insertions, 3 deletions
diff --git a/test/lisp/subr-tests.el b/test/lisp/subr-tests.el
index c458eef2f93..06db8f5c902 100644
--- a/test/lisp/subr-tests.el
+++ b/test/lisp/subr-tests.el
@@ -61,6 +61,9 @@
61 (quote 61 (quote
62 (0 font-lock-keyword-face)))))))) 62 (0 font-lock-keyword-face))))))))
63 63
64(defalias 'subr-tests--parent-mode
65 (if (fboundp 'prog-mode) 'prog-mode 'fundamental-mode))
66
64(ert-deftest provided-mode-derived-p () 67(ert-deftest provided-mode-derived-p ()
65 ;; base case: `derived-mode' directly derives `prog-mode' 68 ;; base case: `derived-mode' directly derives `prog-mode'
66 (should (progn 69 (should (progn
@@ -68,9 +71,7 @@
68 (provided-mode-derived-p 'derived-mode 'prog-mode))) 71 (provided-mode-derived-p 'derived-mode 'prog-mode)))
69 ;; edge case: `derived-mode' derives an alias of `prog-mode' 72 ;; edge case: `derived-mode' derives an alias of `prog-mode'
70 (should (progn 73 (should (progn
71 (defalias 'parent-mode 74 (define-derived-mode derived-mode subr-tests--parent-mode "test")
72 (if (fboundp 'prog-mode) 'prog-mode 'fundamental-mode))
73 (define-derived-mode derived-mode parent-mode "test")
74 (provided-mode-derived-p 'derived-mode 'prog-mode)))) 75 (provided-mode-derived-p 'derived-mode 'prog-mode))))
75 76
76(ert-deftest number-sequence-test () 77(ert-deftest number-sequence-test ()
@@ -373,5 +374,31 @@ See https://debbugs.gnu.org/cgi/bugreport.cgi?bug=19350."
373 (should (equal (flatten-tree '(1 ("foo" "bar") 2)) 374 (should (equal (flatten-tree '(1 ("foo" "bar") 2))
374 '(1 "foo" "bar" 2)))) 375 '(1 "foo" "bar" 2))))
375 376
377(defvar subr-tests--hook nil)
378
379(ert-deftest subr-tests-add-hook-depth ()
380 "Test the `depth' arg of `add-hook'."
381 (setq-default subr-tests--hook nil)
382 (add-hook 'subr-tests--hook 'f1)
383 (add-hook 'subr-tests--hook 'f2)
384 (should (equal subr-tests--hook '(f2 f1)))
385 (add-hook 'subr-tests--hook 'f3 t)
386 (should (equal subr-tests--hook '(f2 f1 f3)))
387 (add-hook 'subr-tests--hook 'f4 50)
388 (should (equal subr-tests--hook '(f2 f1 f4 f3)))
389 (add-hook 'subr-tests--hook 'f5 -50)
390 (should (equal subr-tests--hook '(f5 f2 f1 f4 f3)))
391 (add-hook 'subr-tests--hook 'f6)
392 (should (equal subr-tests--hook '(f5 f6 f2 f1 f4 f3)))
393 ;; Make sure `t' is equivalent to 90.
394 (add-hook 'subr-tests--hook 'f7 90)
395 (add-hook 'subr-tests--hook 'f8 t)
396 (should (equal subr-tests--hook '(f5 f6 f2 f1 f4 f3 f7 f8)))
397 ;; Make sue `nil' is equivalent to 0.
398 (add-hook 'subr-tests--hook 'f9 0)
399 (add-hook 'subr-tests--hook 'f10)
400 (should (equal subr-tests--hook '(f5 f10 f9 f6 f2 f1 f4 f3 f7 f8)))
401 )
402
376(provide 'subr-tests) 403(provide 'subr-tests)
377;;; subr-tests.el ends here 404;;; subr-tests.el ends here