如何调整撤消树可视化工具窗口的大小



我一直试图在emacs中打开undo树可视化工具窗口时自动调整其大小。为了解决这个问题,我制作了一个钩子,钩子确实调整了窗口的大小,但一旦钩子运行,光标就会出现在*undo-tree*窗口上,为了解决这个这个问题,我们必须使用(save-selected-window)命令,但它不起作用。然后,我决定尝试使用(evil-window-left)函数(我使用的是邪恶模式(迫使emacs返回到上一个窗口,但这只会导致以下错误:

错误:

Debugger entered--Lisp error: (wrong-number-of-arguments (1 . 1) 0)
evil-window-left()
(if (not (get-buffer-window " *undo-tree*")) nil (select-window (get-buffer-window " *undo-tree*")) (evil-window-set-width 45) (evil-window-left))
undo-tree-hook()
run-hooks(change-major-mode-after-body-hook special-mode-hook undo-tree-visualizer-mode-hook)
apply(run-hooks (change-major-mode-after-body-hook special-mode-hook undo-tree-visualizer-mode-hook))
run-mode-hooks(undo-tree-visualizer-mode-hook)
undo-tree-visualizer-mode()

代码:

(defun undo-tree-hook ()
"Hook to make the undo-tree-visualizer window to automatically resize to become smaller"
(interactive)
(unless (not (get-buffer-window undo-tree-visualizer-buffer-name))
(select-window (get-buffer-window undo-tree-visualizer-buffer-name))
(evil-window-set-width 45)
(evil-window-left)))
(add-hook 'undo-tree-visualizer-mode-hook 'undo-tree-hook)

正如Drew所说,我需要将一个参数传递给evil-window-left函数,在执行切换到*undo-tree*缓冲区并调整其大小的命令之前,我还使用save-excursion将我所在的点保存在当前缓冲区中。

(defun undo-tree-hook ()
"Hook to make the undo-tree-visualizer window to automatically resize to become smaller"
(interactive)
(unless (not (get-buffer-window " *undo-tree*"))
(save-excursion
(select-window (get-buffer-window " *undo-tree*"))
(evil-window-set-width 45)
(evil-window-left 1))))
(add-hook 'undo-tree-visualizer-mode-hook 'undo-tree-hook)

最新更新