From 40d4ac2a8f256f3da6c31c1973cfa7758eed6ffc Mon Sep 17 00:00:00 2001 From: Erik Hahn Date: Mon, 20 May 2019 14:27:16 +0200 Subject: [PATCH 1/4] evil-integration: add compatibility with tempo.el --- evil-integration.el | 32 +++++++++++++++++++++++++++++ evil-tests.el | 50 +++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 82 insertions(+) diff --git a/evil-integration.el b/evil-integration.el index bab8bde7..39632e6d 100644 --- a/evil-integration.el +++ b/evil-integration.el @@ -508,6 +508,38 @@ Based on `evil-enclose-ace-jump-for-motion'." '(when (fboundp 'eldoc-add-command-completions) (eldoc-add-command-completions "evil-window-"))) +;;; Tempo +(declare-function tempo-forward-mark "tempo" ()) +(declare-function tempo-backward-mark "tempo" ()) +(eval-after-load 'tempo + '(progn + (defadvice tempo-forward-mark (before evil activate) + (when (and (not evil-move-beyond-eol) + (cl-notany (apply-partially #'= (point)) + tempo-marks) + (= (point) + (1- + (save-excursion + (evil-move-end-of-line) + (point))))) + (forward-char 1))) + + (evil-declare-motion 'tempo-forward-mark) + (evil-declare-motion 'tempo-backward-mark) + + ;; The original tempo commands don't accept a count argument. + (evil-define-motion evil-tempo-forward-mark (count) + "Move the cursor to the COUNT-th next mark in `tempo-marks'." + :jump t + (evil-motion-loop (_ count) + (tempo-forward-mark))) + + (evil-define-motion evil-tempo-backward-mark (count) + "Move the cursor to the COUNT-th previous mark in `tempo-marks'." + :jump t + (evil-motion-loop (_ count) + (tempo-backward-mark))))) + (provide 'evil-integration) ;;; evil-integration.el ends here diff --git a/evil-tests.el b/evil-tests.el index 708e7688..7ef0ba53 100644 --- a/evil-tests.el +++ b/evil-tests.el @@ -8055,6 +8055,56 @@ maybe we need one line more with some text\n") ((kbd "C-z") (kbd "C-u") (kbd "C-x C-e")) "(+ 1 (+ 2 33[)])"))) +(ert-deftest evil-test-tempo () + "Test advised `tempo-forward-mark'" + (require 'tempo) + (tempo-define-template "evil--test" + '("Line 1" n + "Line 2" p n + "Line 3" p " Line 3")) + (ert-info ("Test if advised `tempo-forward-mark' works in normal mode") + (evil-test-buffer + " +" + ("\M-xtempo-template-evil--test" [return]) + "Line 1 +Line [2] +Line 3 Line 3" + ("\M-xtempo-forward-mark" [return]) + "Line 1 +Line 2 +Line 3[ ]Line 3" + ("\M-xtempo-forward-mark" [return]) + "Line 1 +Line 2 +Line 3 Line [3]" + ("\M-xtempo-backward-mark" [return] "\M-xtempo-backward-mark" [return]) + "Line 1 +Line [2] +Line 3 Line 3" + )) + (ert-info ("Test if advised `tempo-forward-mark' works in insert mode") + (evil-test-buffer + :state 'insert + " +" + ("\M-xtempo-template-evil--test" [return]) + "Line 1 +Line [2] +Line 3 Line 3" + ("\M-xtempo-forward-mark" [return]) + "Line 1 +Line 2 +Line 3[ ]Line 3" + ("\M-xtempo-forward-mark" [return]) + "Line 1 +Line 2 +Line 3 Line [3]" + ("\M-xtempo-backward-mark" [return] "\M-xtempo-backward-mark" [return]) + "Line 1 +Line [2] +Line 3 Line 3"))) + ;;; ESC (ert-deftest evil-test-esc-count () From 50e4fdcb3e93aa89f1cd4fc98e71aa5e24e614c1 Mon Sep 17 00:00:00 2001 From: Erik Hahn Date: Mon, 20 May 2019 15:21:28 +0200 Subject: [PATCH 2/4] Add tags to evil-test-tempo --- evil-tests.el | 1 + 1 file changed, 1 insertion(+) diff --git a/evil-tests.el b/evil-tests.el index 7ef0ba53..b955251e 100644 --- a/evil-tests.el +++ b/evil-tests.el @@ -8057,6 +8057,7 @@ maybe we need one line more with some text\n") (ert-deftest evil-test-tempo () "Test advised `tempo-forward-mark'" + :tags '(evil advice tempo) (require 'tempo) (tempo-define-template "evil--test" '("Line 1" n From e80e3b5abb3b971d22dbd5c01737dc5e8909ca7f Mon Sep 17 00:00:00 2001 From: Erik Hahn Date: Mon, 20 May 2019 16:57:21 +0200 Subject: [PATCH 3/4] evil-test-tempo: make sure the advice we want to test is active make tests does not enable evil-mode, so advises don't work. --- evil-tests.el | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/evil-tests.el b/evil-tests.el index b955251e..9dbdda77 100644 --- a/evil-tests.el +++ b/evil-tests.el @@ -8059,6 +8059,10 @@ maybe we need one line more with some text\n") "Test advised `tempo-forward-mark'" :tags '(evil advice tempo) (require 'tempo) + ;; evil-mode is not turned on when running "make tests" so we have to make + ;; sure the advice we're testing is actually active. + (ad-enable-advice 'tempo-forward-mark 'before 'evil) + (ad-activate 'tempo-forward-mark) (tempo-define-template "evil--test" '("Line 1" n "Line 2" p n From 4a9100b229df2510e006fd11d2000370592ff16e Mon Sep 17 00:00:00 2001 From: Erik Hahn Date: Mon, 20 May 2019 18:32:01 +0200 Subject: [PATCH 4/4] Fix tempo test for insert mode --- evil-tests.el | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/evil-tests.el b/evil-tests.el index 9dbdda77..a492be62 100644 --- a/evil-tests.el +++ b/evil-tests.el @@ -8090,12 +8090,12 @@ Line 3 Line 3" )) (ert-info ("Test if advised `tempo-forward-mark' works in insert mode") (evil-test-buffer - :state 'insert + :state insert " " ("\M-xtempo-template-evil--test" [return]) "Line 1 -Line [2] +Line 2[] Line 3 Line 3" ("\M-xtempo-forward-mark" [return]) "Line 1 @@ -8104,10 +8104,10 @@ Line 3[ ]Line 3" ("\M-xtempo-forward-mark" [return]) "Line 1 Line 2 -Line 3 Line [3]" +Line 3 Line 3[]" ("\M-xtempo-backward-mark" [return] "\M-xtempo-backward-mark" [return]) "Line 1 -Line [2] +Line 2[] Line 3 Line 3"))) ;;; ESC