gpt4 book ai didi

emacs - 如何配置 Emacs 以专用计算器窗口?

转载 作者:行者123 更新时间:2023-12-01 12:41:27 25 4
gpt4 key购买 nike

我在 OS X 10.9 (Mavericks) 上使用来自 emacsformacosx.com 的 emacs 24.3。该行为与 Debian Wheezy 上的 emacs 23.4.1 相同。

我想自动申请 set-window-dedicated-p所以切换/打开缓冲区不会使用某些窗口。例如,如果我在计算器中并手动使用 Meta-: 并输入 (set-window-dedicated-p (get-buffer-window) t) 然后它工作得很好——我的计算器窗口不会被其他缓冲区劫持。我希望它自动像那样工作。

我把它放在我的 .emacs 文件中:

(add-hook 'calc-mode-hook
(lambda ()
(message "Dedicating %s" (buffer-name))
(set-window-dedicated-p (get-buffer-window) t)
(message "Dedication %s" (window-dedicated-p (get-buffer-window "*Calculator*")))))

然后我启动 emacs,切换到 *Messages* 窗口和 Meta-x calc。 *Messages* 缓冲区显示

Dedicating *Calculator*
Dedication t

所以我知道我的钩子(Hook)被调用了,它在哪个缓冲区上运行。但是 *Calculator* 缓冲区不是专用的 - 它的行为不正常并且 Meta-: (window-dedicated-p) 返回 nil . *Messages* 缓冲区是专用的。

为什么 *Calculator* 窗口在 Hook 中显示为专用,但之后却没有?我在这里做错了什么?

最佳答案

不幸的是,在您的代码运行时,*Calculator* 缓冲区未显示在任何窗口中。

您的“验证”消息误导了您。 (buffer-name) 当然是您想要的缓冲区,但它不在任何窗口中,因此您实际上在所有情况下都为窗口传递了一个 nil 参数。即,您正在将当前窗口设置为专用,然后确认它是专用的(它确实应该是专用的)。

我认为在对 calc 的建议之后,您需要的是这里。例如:

(defadvice calc (after my-dedicated-calc-window)
"Make the *Calculator* window dedicated."
(let ((win (get-buffer-window "*Calculator*")))
(when win
(set-window-dedicated-p win t))))
(ad-activate 'calc)

注意我不确定 calc 的参数究竟是如何影响窗口显示的,但我认为对窗口的测试包装了对 set-window-dedicated-p 的调用此代码在所有情况下都可能没问题。

关于emacs - 如何配置 Emacs 以专用计算器窗口?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24152863/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com