【问题标题】:How to resize the undo-tree-visualizer window?如何调整撤消树可视化窗口的大小?
【发布时间】: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 也应该告诉你它的期望。所以你现在有了问题的答案,不是吗?

标签: emacs undo evil-mode


【解决方案1】:

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

(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)

【讨论】:

    猜你喜欢
    • 2020-07-12
    • 2023-04-08
    • 2017-12-29
    • 2011-07-09
    • 2023-03-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-18
    相关资源
    最近更新 更多