我在单独的emacs窗口中运行电子邮件客户端(通常连接到gnuserv),例如,
emacs -f wl
(电子邮件客户端是Wanderlust,可能并不重要)。
是否可以让emacs记住我的首选
仅在调用wl
时设置它们?粗略地说,如果我想在电子邮件客户端中使用黑色背景,否则为白色?
我对保持窗口布局特别感兴趣,因为每次加载wl
时都必须手动调整默认窗口布局。
答案 0 :(得分:3)
有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指出的那样,这个解决方案可能有一个缺点,就是它被调用得太晚了。 TJ的wlwrapper
可能是更好的方式。
答案 1 :(得分:3)
在TörökGábor的answer上构建,您可以使用任意数量的包来存储和恢复窗口/框架配置,其中许多都列在here。各种窗口布局包都有它们的怪癖,所以你必须找到你喜欢的那个(有很多软件包b / c每个人都发现了一些他们不喜欢的现有软件包并自行推送)。
关于字体和颜色,有些可以逐帧自定义,请参阅frame parameters的信息页。
关于如何将其挂钩到函数'wl
,如果你愿意,可以使用advice(我喜欢使用它),但是可以更直接地定制'wl
本身,或编写一个包装器,用于加载帧/窗口配置,然后调用'wl
。然后您的调用可能必须更改为:
emacs -f wlwrapper
emacsclient is configured(或者,对于年长的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
))