【发布时间】:2021-09-14 17:57:18
【问题描述】:
我一直在尝试在 emacs 中打开时自动调整 undo-tree-visualizer 窗口的大小。为了解决这个问题,我做了一个钩子,钩子确实会调整窗口的大小,但是一旦运行了钩子,光标就会出现在*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)
【问题讨论】:
-
显示更多的回溯。您没有显示说明哪个函数需要 arg 但没有的部分。
-
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() -
请将所有此类信息放入问题本身。评论可以随时删除。谢谢。
-
我在问题中添加了回溯
-
您现在可以看到
evil-window-left需要一个参数,但您的代码没有传递任何参数。C-h f evil-window-left也应该告诉你它的期望。所以你现在有了问题的答案,不是吗?