Skip to content

Commit

Permalink
fix: when buffer set to now
Browse files Browse the repository at this point in the history
  • Loading branch information
jcs090218 committed Jun 21, 2024
1 parent 07c07c7 commit b1e6951
Showing 1 changed file with 27 additions and 13 deletions.
40 changes: 27 additions & 13 deletions undo-tree-vf.el
Original file line number Diff line number Diff line change
Expand Up @@ -49,28 +49,20 @@
"Fallback redo key."
:type 'function
:group 'undo-tree-vf)
;;
;; (@* "Util" )
;;

(defun undo-tree-vf--recenter-top-bottom ()
"Recenter to center."
(let ((recenter-positions '(middle)))
(ignore-errors (recenter-top-bottom))))

;;
;; (@* "Entry" )
;;

(defun undo-tree-vf-mode--enable ()
"Enable function `undo-tree-vf-mode'."
(advice-add #'save-buffer :after #'undo-tree-vf--kill-visualizer)
(advice-add #'kill-this-buffer :after #'undo-tree-vf--kill-visualizer))
(add-hook 'window-buffer-change-functions #'undo-tree-vf--window-buffer-change)
(advice-add #'save-buffer :after #'undo-tree-vf--kill-visualizer))

(defun undo-tree-vf-mode--disable ()
"Disable function `undo-tree-vf-mode'."
(advice-remove #'save-buffer #'undo-tree-vf--kill-visualizer)
(advice-remove #'kill-this-buffer #'undo-tree-vf--kill-visualizer))
(remove-hook 'window-buffer-change-functions #'undo-tree-vf--window-buffer-change)
(advice-remove #'save-buffer #'undo-tree-vf--kill-visualizer))

;;;###autoload
(define-minor-mode undo-tree-vf-mode
Expand All @@ -81,13 +73,35 @@

(defun undo-tree-vf--kill-visualizer (&rest _)
"Safe version `undo-tree-kill-visualizer'."
(when (and undo-tree-mode undo-tree-vf-mode)
(when (undo-tree-vs--enabled-p)
(undo-tree-kill-visualizer)))

;;
;; (@* "Util" )
;;

(defun undo-tree-vs--enabled-p ()
"Return non-nil when this package is enabled."
(and undo-tree-mode undo-tree-vf-mode))

(defun undo-tree-vf--recenter-top-bottom ()
"Recenter to center."
(let ((recenter-positions '(middle)))
(ignore-errors (recenter-top-bottom))))

;;
;; (@* "Core" )
;;

(defun undo-tree-vf--window-buffer-change (&rest _)
"Window buffer change."
(when (undo-tree-vs--enabled-p)
(when-let ((buf (current-buffer))
(win (get-buffer-window undo-tree-visualizer-buffer-name)))
(with-selected-window win
(unless (equal buf undo-tree-visualizer-parent-buffer)
(undo-tree-vf--kill-visualizer))))))

(defmacro undo-tree-vf--if-buffer-window (buffer-or-name then &rest else)
"Execute THEN in window BUFFER-OR-NAME; otherwise ELSE will be executed."
(declare (indent 2) (debug t))
Expand Down

0 comments on commit b1e6951

Please sign in to comment.