From 183bae9e64da2f0389aaa07dfbfd6cfe4620372c Mon Sep 17 00:00:00 2001 From: Eivind Fonn Date: Fri, 20 Dec 2019 13:48:58 +0100 Subject: Expand abbrevs after insert state only if abbrev-mode is enabled --- evil-integration.el | 9 ++++++--- evil-tests.el | 20 +++++++++++++++----- evil-vars.el | 4 ++-- 3 files changed, 23 insertions(+), 10 deletions(-) diff --git a/evil-integration.el b/evil-integration.el index 33abb5f..284f9d4 100644 --- a/evil-integration.el +++ b/evil-integration.el @@ -516,9 +516,12 @@ Based on `evil-enclose-ace-jump-for-motion'." "V" 'evil-visual-screen-line)) ;;; abbrev.el -(when evil-want-abbrev-expand-on-insert-exit - (eval-after-load 'abbrev - '(add-hook 'evil-insert-state-exit-hook 'expand-abbrev))) +(defun evil-maybe-expand-abbrev () + (when (and abbrev-mode evil-want-abbrev-expand-on-insert-exit) + (expand-abbrev))) + +(eval-after-load 'abbrev + '(add-hook 'evil-insert-state-exit-hook 'evil-maybe-expand-abbrev)) ;;; ElDoc (eval-after-load 'eldoc diff --git a/evil-tests.el b/evil-tests.el index 503f12e..f69f82c 100644 --- a/evil-tests.el +++ b/evil-tests.el @@ -8262,20 +8262,30 @@ maybe we need one line more with some text\n") :tags '(evil abbrev) (ert-info ("Test abbrev expansion on insert state exit") (define-abbrev-table 'global-abbrev-table - '(("undef" "undefined"))) ;; add global abbrev + '(("undef" "undefined"))) ; add global abbrev (evil-test-buffer "foo unde[f] bar" + (abbrev-mode) ("a" [escape]) - "foo undefine[d] bar") ;; 'undef' should be expanded + "foo undefine[d] bar") ; 'undef' should be expanded + (evil-test-buffer + "foo unde[f] bar" + ("a" [escape]) + "foo unde[f] bar") ; 'undef' shouldn't be expanded, + ; abbrev-mode is not enabled (evil-test-buffer "fo[o] undef bar" + (abbrev-mode) ("a" [escape]) - "fo[o] undef bar") ;; 'foo' shouldn't be expanded, it's not an abbrev - (kill-all-abbrevs) ;; remove abbrevs + "fo[o] undef bar") ; 'foo' shouldn't be expanded, + ; it's not an abbrev + (kill-all-abbrevs) ; remove all abbrevs (evil-test-buffer "foo unde[f] bar" + (abbrev-mode) ("a" [escape]) - "foo unde[f] bar") ;; 'undef' is not an abbrev, shouldn't be expanded + "foo unde[f] bar") ; 'undef' shouldn't be expanded, + ; it's not an abbrev (setq abbrevs-changed nil))) (ert-deftest evil-test-text-object-macro () diff --git a/evil-vars.el b/evil-vars.el index 0fa7ac1..2264ba8 100644 --- a/evil-vars.el +++ b/evil-vars.el @@ -1232,8 +1232,8 @@ command is non-zero." :group 'evil) (defcustom evil-want-abbrev-expand-on-insert-exit t - "If non-nil abbrevs will be expanded when leaving Insert state -like in Vim. This variable is read only on load." + "If non-nil abbrevs will be expanded when leaving insert state +like in Vim, if `abbrev-mode' is on." :type 'boolean :group 'evil) -- cgit v1.0