aboutsummaryrefslogtreecommitdiff
path: root/evil-jumps.el
diff options
context:
space:
mode:
authorBailey Ling <bling@live.ca>2016-02-12 16:52:36 -0500
committerBailey Ling <bling@live.ca>2016-02-12 16:52:36 -0500
commit70a16eb6395d906c4609ba93604653fbeac4c2e0 (patch)
tree596d63a9e7b516f969320811ddb947db0696fc7e /evil-jumps.el
parent09dba0591b49c5b26539f78b142597ad7bf1bcdf (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.el47
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)