4

我在一个单独的 emacs 窗口中运行一个电子邮件客户端(通常连接到 gnuserv),例如,

emacs -f wl

(电子邮件客户端是 Wanderlust,这可能并不重要)。

有没有可能让emacs记住我的首选

  • 窗口布局,
  • 主窗口尺寸,
  • 字体、颜色等,

wl仅在调用时设置这些?粗略地说,如果我想在电子邮件客户端中使用黑色背景,否则为白色?

我对保持窗口布局特别感兴趣,因为每次wl加载时都必须手动调整默认布局。

4

2 回答 2

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 指出的那样,这个解决方案可能有一个缺点,即它被调用得太晚了。TJwlwrapper可能是更好的方法。

于 2009-06-05T11:57:09.787 回答
3

基于 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
     ))
于 2009-06-05T13:42:40.447 回答