summaryrefslogtreecommitdiff
path: root/test/lisp/hl-line-tests.el
diff options
context:
space:
mode:
authordickmao <dick.r.chiang@gmail.com>2022-03-22 15:59:11 +0100
committerLars Ingebrigtsen <larsi@gnus.org>2022-03-22 15:59:11 +0100
commit3054e70d76f71876c58497db04f55d7f413663d9 (patch)
tree5529b7fa69e0123d04a9170fd2dc86204e84e653 /test/lisp/hl-line-tests.el
parent9b47ccd72e107ee43fcd62362e7580dcfa50d008 (diff)
downloademacs-3054e70d76f71876c58497db04f55d7f413663d9.tar.gz
emacs-3054e70d76f71876c58497db04f55d7f413663d9.tar.bz2
emacs-3054e70d76f71876c58497db04f55d7f413663d9.zip
Restore hl-line--buffer tracking
* lisp/hl-line.el (hl-line-overlay, hl-line-overlay-buffer): Correct replacement variable. (hl-line--overlay): Clearer doc. (hl-line--buffer): Nee hl-line-overlay-buffer (hl-line-sticky-flag): Custom initialization is unfathomable. (hl-line-mode, hl-line-unhighlight): Orthogonalize sticky. (hl-line-highlight): Remove highlight from previous buffer. * test/lisp/hl-line-tests.el (hl-line-sticky, hl-line-tests-verify): (hl-line-tests-sticky-across-frames, hl-line-tests-sticky): Test (bug#54481).
Diffstat (limited to 'test/lisp/hl-line-tests.el')
-rw-r--r--test/lisp/hl-line-tests.el108
1 files changed, 84 insertions, 24 deletions
diff --git a/test/lisp/hl-line-tests.el b/test/lisp/hl-line-tests.el
index 422d4ddae7d..6bff09135b2 100644
--- a/test/lisp/hl-line-tests.el
+++ b/test/lisp/hl-line-tests.el
@@ -21,30 +21,90 @@
(require 'ert)
(require 'hl-line)
-(ert-deftest hl-line-sticky ()
- (should hl-line-sticky-flag)
- (with-temp-buffer
- (let ((from-buffer (current-buffer)))
- (hl-line-mode 1)
- (save-excursion
- (insert "foo"))
- (hl-line-highlight)
- (should (cl-some (apply-partially #'eq hl-line--overlay)
- (overlays-at (point))))
- (switch-to-buffer (get-buffer-create "*scratch*"))
- (hl-line-mode 1)
- (save-excursion
- (insert "bar"))
- (hl-line-highlight)
- (should (cl-some (apply-partially #'eq hl-line--overlay)
- (overlays-at (point))))
- (should (buffer-local-value 'hl-line--overlay from-buffer))
- (should-not (eq (buffer-local-value 'hl-line--overlay from-buffer)
- hl-line--overlay))
- (customize-set-variable 'hl-line-sticky-flag nil)
- (should hl-line--overlay)
- (should (buffer-live-p from-buffer))
- (should-not (buffer-local-value 'hl-line--overlay from-buffer)))))
+(defsubst hl-line-tests-verify (_label on-p)
+ (eq on-p (cl-some (apply-partially #'eq hl-line--overlay)
+ (overlays-at (point)))))
+
+(ert-deftest hl-line-tests-sticky-across-frames ()
+ (skip-unless (display-graphic-p))
+ (customize-set-variable 'hl-line-sticky-flag t)
+ (call-interactively #'global-hl-line-mode)
+ (let ((first-frame (selected-frame))
+ (first-buffer "foo")
+ (second-buffer "bar")
+ second-frame)
+ (unwind-protect
+ (progn
+ (switch-to-buffer first-buffer)
+ (save-excursion
+ (insert (buffer-name)))
+ (run-hooks 'post-command-hook)
+ (should (hl-line-tests-verify 111 t))
+ (select-frame (setq second-frame (make-frame)))
+ (switch-to-buffer second-buffer)
+ (save-excursion
+ (insert (buffer-name)))
+ (run-hooks 'post-command-hook)
+ (should (hl-line-tests-verify 762 t))
+ (with-current-buffer first-buffer
+ (should (hl-line-tests-verify 534 t)))
+ (call-interactively #'global-hl-line-mode)
+ (should (hl-line-tests-verify 125 nil))
+ (with-current-buffer first-buffer
+ (should (hl-line-tests-verify 892 nil)))
+
+ ;; now do unsticky
+ (customize-set-variable 'hl-line-sticky-flag nil)
+ (call-interactively #'global-hl-line-mode)
+ (run-hooks 'post-command-hook)
+ (should (hl-line-tests-verify 467 t))
+ (with-current-buffer first-buffer
+ (should (hl-line-tests-verify 765 nil)))
+ (select-frame first-frame)
+ (should (equal (buffer-name) first-buffer))
+ (run-hooks 'post-command-hook)
+ (should (hl-line-tests-verify 423 t))
+ (with-current-buffer second-buffer
+ (should (hl-line-tests-verify 897 nil))))
+ (let (kill-buffer-query-functions)
+ (ignore-errors (kill-buffer first-buffer))
+ (ignore-errors (kill-buffer second-buffer))
+ (ignore-errors (delete-frame second-frame))))))
+
+(ert-deftest hl-line-tests-sticky ()
+ (customize-set-variable 'hl-line-sticky-flag t)
+ (let ((first-buffer "foo")
+ (second-buffer "bar"))
+ (unwind-protect
+ (progn
+ (switch-to-buffer first-buffer)
+ (hl-line-mode 1)
+ (save-excursion
+ (insert (buffer-name)))
+ (run-hooks 'post-command-hook)
+ (should (hl-line-tests-verify 123 t))
+ (switch-to-buffer second-buffer)
+ (hl-line-mode 1)
+ (save-excursion
+ (insert (buffer-name)))
+ (run-hooks 'post-command-hook)
+ (should (hl-line-tests-verify 56 t))
+ (with-current-buffer first-buffer
+ (should (hl-line-tests-verify 67 t)))
+
+ ;; now do unsticky
+ (customize-set-variable 'hl-line-sticky-flag nil)
+ (should (hl-line-tests-verify 234 t))
+ (with-current-buffer first-buffer
+ (should (hl-line-tests-verify 231 nil)))
+ (switch-to-buffer first-buffer)
+ (run-hooks 'post-command-hook)
+ (should (hl-line-tests-verify 257 t))
+ (with-current-buffer second-buffer
+ (should (hl-line-tests-verify 999 nil)))))
+ (let (kill-buffer-query-functions)
+ (ignore-errors (kill-buffer first-buffer))
+ (ignore-errors (kill-buffer second-buffer)))))
(provide 'hl-line-tests)