diff options
| author | Bailey Ling <bling@live.ca> | 2016-02-12 16:52:36 -0500 |
|---|---|---|
| committer | Bailey Ling <bling@live.ca> | 2016-02-12 16:52:36 -0500 |
| commit | 70a16eb6395d906c4609ba93604653fbeac4c2e0 (patch) | |
| tree | 596d63a9e7b516f969320811ddb947db0696fc7e /evil-jumps.el | |
| parent | 09dba0591b49c5b26539f78b142597ad7bf1bcdf (diff) | |
change hooks to be buffer local for evil-local-mode and change savehist hooks to be global for evil-mode
Diffstat (limited to 'evil-jumps.el')
| -rw-r--r-- | evil-jumps.el | 47 |
1 files changed, 23 insertions, 24 deletions
diff --git a/evil-jumps.el b/evil-jumps.el index a5538ca..9aec28f 100644 --- a/evil-jumps.el +++ b/evil-jumps.el @@ -65,7 +65,7 @@ "Hashtable which stores all jumps on a per window basis.") (defvar evil-jumps-history nil - "History of `evil-mode' jumps that persisted with `savehist'.") + "History of `evil-mode' jumps that are persisted with `savehist'.") (cl-defstruct evil-jumps-struct ring @@ -233,29 +233,28 @@ To go the other way, press \ (defadvice find-tag-noselect (before evil-jumps activate) (evil-set-jump)) -(defun evil--jumps-savehist-load () - (let ((ring (make-ring evil-jumps-max-length))) - (cl-loop for jump in (reverse evil-jumps-history) - do (ring-insert ring jump)) - (setf (evil-jumps-struct-ring (evil--jumps-get-current)) ring))) - -(defun turn-on-evil-jumps () - (eval-after-load 'savehist - '(progn - (add-to-list 'savehist-additional-variables 'evil-jumps-history) - (add-hook 'savehist-save-hook #'evil--jumps-savehist-sync) - (add-hook 'savehist-mode-hook #'evil--jumps-savehist-load))) - (add-hook 'next-error-hook #'evil-set-jump) - (add-hook 'window-configuration-change-hook #'evil--jumps-window-configuration-hook)) - -(defun turn-off-evil-jumps () - (remove-hook 'next-error-hook #'evil-set-jump) - (remove-hook 'window-configuration-change-hook #'evil--jumps-window-configuration-hook)) - -(add-hook 'evil-local-mode-hook (lambda () - (if evil-local-mode - (turn-on-evil-jumps) - (turn-off-evil-jumps)))) +(add-hook 'evil-local-mode-hook + (lambda () + (if evil-local-mode + (progn + (add-hook 'next-error-hook #'evil-set-jump nil t) + (add-hook 'window-configuration-change-hook #'evil--jumps-window-configuration-hook nil t)) + (progn + (remove-hook 'next-error-hook #'evil-set-jump t) + (remove-hook 'window-configuration-change-hook #'evil--jumps-window-configuration-hook t))))) + +(add-hook 'evil-mode-hook + (lambda () + (when evil-mode + (eval-after-load 'savehist + '(progn + (add-to-list 'savehist-additional-variables 'evil-jumps-history) + (let ((ring (make-ring evil-jumps-max-length))) + (cl-loop for jump in (reverse evil-jumps-history) + do (ring-insert ring jump)) + (setf (evil-jumps-struct-ring (evil--jumps-get-current)) ring)) + + (add-hook 'savehist-save-hook #'evil--jumps-savehist-sync)))))) (provide 'evil-jumps) |
