Emacs:使用emacs --daemon命令启动GUI时字体加载不正确

24

我设置了一个emacs --daemon,以便更快地启动emacs。我特别喜欢emacs的GUI版本,因此我使用emacsclient -c打开新的emacs框架。

问题是,我已经更改了字体,但如果我使用emacsclient -c启动emacs,则不会加载这些字体。然而,如果我只启动emacs(但这将导致整个.emacs被评估),则会应用这些字体。

所以:是否有一种方法可以在使用emacsclient -c启动emacs时也应用我的字体设置?

4个回答

32

简而言之,您需要使用default-frame-alist来实现这一点。像这样:

(setq default-frame-alist '((font . "Inconsolata-dz-15")))

每次在Emacs中启动新的图形框架时,这个代码将被评估。这也是您保存其他框架相关设置的位置,例如fringe设置等。


谢谢。那指向了正确的方向,让我解决了问题。 - phimuemue
这个可以正常工作,但是我有一个副作用,我的其它配置包括(tool-bar-mode -1)在使用emacsclient -c时没有被加载,所以我解决了字体问题,但是我加载了一个带有默认选项的框架,你有什么想法吗? - jrbalderrama
奇怪。尝试将(tool-bar-mode 0)设置为-1。这是我所做的,对于*NIX和OS X都有效。但我已经在default-frame-alist中包含了Windows版本,不确定是否有效(我只在必要时使用Windows):(tool-bar-lines . 0) - monotux
2
@jrbalderrama 尝试使用(add-to-list 'default-frame-alist ...)而不是(setq default-frame-alist ...)。这对我来说很有效,不应该覆盖您的default-frame-list,因此您可以保留自定义设置。 - Riley

12

以下内容可能会做到你所寻找的功能。

(add-to-list 'default-frame-alist '(font . "Inconsolata-12"))

5
如果您使用的是Emacs 23.2版本,更改GNOME中等宽字体将同时更改Emacs字体。在早期版本中,您需要执行以下操作:
echo "Emacs.font: Monospace-10" >> ~/.Xresources
xrdb

请将Monospace-10替换为您想要使用的实际字体。


3
emacslient 有一个选项 -F (--frame-parameters),可以让您指定新创建的框架的字体。
例如:
emacsclient -c -F '((font . "8x16"))'  some_file

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接