我在一个单独的 emacs 窗口中运行一个电子邮件客户端(通常连接到 gnuserv),例如,
emacs -f wl
(电子邮件客户端是 Wanderlust,这可能并不重要)。
有没有可能让emacs记住我的首选
- 窗口布局,
- 主窗口尺寸,
- 字体、颜色等,
wl
仅在调用时设置这些?粗略地说,如果我想在电子邮件客户端中使用黑色背景,否则为白色?
我对保持窗口布局特别感兴趣,因为每次wl
加载时都必须手动调整默认布局。
我在一个单独的 emacs 窗口中运行一个电子邮件客户端(通常连接到 gnuserv),例如,
emacs -f wl
(电子邮件客户端是 Wanderlust,这可能并不重要)。
有没有可能让emacs记住我的首选
wl
仅在调用时设置这些?粗略地说,如果我想在电子邮件客户端中使用黑色背景,否则为白色?
我对保持窗口布局特别感兴趣,因为每次wl
加载时都必须手动调整默认布局。
有一个default-frame-alist
变量允许您指定新框架的默认外观和行为(框架就是您所说的单独的 Emacs 窗口)。尽管它会覆盖所有帧的设置,但您可以建议您的函数屏蔽其全局值并将其设置为您自己的值。像这样的东西:
(defadvice wl (around wl-frame-settings activate)
(let ((default-frame-alist (append
'((width . 82) (height . 36)
(cursor-color . "#ffa200")
(tool-bar-lines . 0)
;; ...
)
default-frame-alist)))
ad-do-it))
正如 TJ 指出的那样,这个解决方案可能有一个缺点,即它被调用得太晚了。TJwlwrapper
可能是更好的方法。
基于 Török Gábor 的回答,您可以使用许多包中的任何一个来存储和恢复窗口/框架配置,这里列出了许多。各种窗口布局包都有它们的怪癖,所以你必须找到你喜欢的一个(有很多包 b/c 每个人都发现他们不喜欢现有包的东西并推出自己的包)。
关于字体和颜色,有些可以逐帧自定义,请参阅帧参数的信息页面。
关于如何将它与函数挂钩,如果需要'wl
,您可以使用建议(我喜欢使用它),但可能更直接地自定义'wl
自己,或者编写一个执行框架/窗口的包装器配置加载,然后调用'wl
. 然后您的调用可能必须更改为:
emacs -f wlwrapper
您的emacsclient 配置方式(或者,对于较旧的 Emacsen,gnuclient)可能是导致 TG 解决方案不起作用的原因。我可能会使用该'wlwrapper
解决方案,自定义emacsclient
以重新使用现有框架,然后在内部'wlwrapper
修改'default-frame-parameters
然后调用. 这样,您可以确保在设置参数后创建框架。'wl
像这样未经测试的东西:
(defun wlwrapper ()
"wrapper for 'wl which sets up window/frame configurations"
(let ((default-frame-alist (append
'((width . 82) (height . 36)
(cursor-color . "#ffa200")
(tool-bar-lines . 0)
;; ...
)
default-frame-alist)))
;; if 'wl doesn't create a frame
(select-frame (make-frame))
(wl)
;; now use which ever window saving package you want
))