Add better-jumper

Replaces evil's jumplist; makes its functionality available for non evil
users.
This commit is contained in:
Henrik Lissner 2019-04-21 23:22:06 -04:00
parent b189254050
commit a4c5396558
No known key found for this signature in database
GPG key ID: 5F6C0EA160557395
11 changed files with 55 additions and 25 deletions

View file

@ -141,7 +141,43 @@ savehist file."
;;
;; Packages
;;; Packages
(def-package! better-jumper
:after-call (pre-command-hook)
:init
(global-set-key [remap evil-jump-forward] #'better-jumper-jump-forward)
(global-set-key [remap evil-jump-backward] #'better-jumper-jump-backward)
:config
(add-hook 'better-jumper-post-jump-hook #'recenter)
(defun doom*set-jump (orig-fn &rest args)
"Set a jump point and ensure ORIG-FN doesn't set any new jump points."
(better-jumper-set-jump (if (markerp (car args)) (car args)))
(let ((evil--jumps-jumping t)
(better-jumper--jumping t))
(apply orig-fn args)))
(defun doom*set-jump-maybe (orig-fn &rest args)
"Set a jump point if ORIG-FN returns non-nil."
(let ((origin (point-marker))
(result
(let* ((evil--jumps-jumping t)
(better-jumper--jumping t))
(apply orig-fn args))))
(unless result
(with-current-buffer (marker-buffer origin)
(better-jumper-set-jump
(if (markerp (car args))
(car args)
origin))))
result))
(defun doom|set-jump ()
"Run `better-jumper-set-jump' but return nil, for short-circuiting hooks."
(better-jumper-set-jump)
nil))
(def-package! smartparens
;; Auto-close delimiters and blocks as you type. It's more powerful than that,