【问题标题】:Setting default emacs font for initial and new frame为初始和新框架设置默认 emacs 字体
【发布时间】:2019-10-15 02:53:41
【问题描述】:

这个或类似的问题已经被问过很多次了,有几十个答案,但似乎很少达成共识,所以我冒着被监视器愤怒的风险,问我自己的版本:

我在 Debian Bullseye 上使用 emacs 26.1。我买了一台 4k 显示器,在它上面默认的 emacs 字体显得太大了。阅读了这个网站上的许多相关答案,我发现添加了这一行

(set-face-attribute 'default (selected-frame) :height 60)

在我的.emacs 文件中,初始 Emacs 框架中的字体大小为 6 pts,这很棒。当我尝试使用C-x 5 2 打开一个新框架时,就会出现问题。新框架以 11 的字体大小打开。可以通过 Options -> 设置默认字体并从 11 减少到 6 进行更改。但是,如果新框架以正确的字体大小打开会容易得多 (6) .

有什么建议吗?

【问题讨论】:

标签: fonts emacs debian


【解决方案1】:
  1. 您可以将set-face-attribute 用于面部default,但使用nilt,而不是(selected-frame) 作为参数FRAME 的值:

    (set-face-attribute 'default nil :height 60)
    

    C-h f set-face-attribute告诉你:

set-face-attributefaces.el中编译的Lisp函数。

(set-face-attribute FACE FRAME &rest ARGS)

FRAME 上从ARGS 设置FACE 的属性。

这个函数会覆盖FACE指定的人脸属性 面部规格它主要仅供内部使用。

如果FRAMEnil,则设置所有现有框架的属性,如 以及新框架的默认设置。如果FRAMEt,则更改 默认仅用于新框架。

...

  1. 或者您可以自定义选项default-frame-alist,以提供您想要的框架参数值。这会影响所有新框架(至少是普通框架)。 M-x customize-option default-frame-alist.

    您可以设置框架参数font - 例如:

    "-*-Lucida Console-normal-r-*-*-12-*-*-*-c-*-iso8859-1"
    

【讨论】:

  • 非常感谢。解决方案的第一部分,用 nil 替换 (selected-frame) 就像一个魅力。 Emacs 不允许我输入 'M-x customize-option default-frame-alist' 作为单个条目,它坚持在单词 option 后面加上一个 '-'。我尝试输入“M-x customize-option”,然后输入“default-frame-alist”,但这只会提供一个帮助项。
  • 是的,我的意思是M-x customize-option RET,然后是default-frame-alist RET。这应该会为该用户选项打开自定义。
  • 在“default-frame-list RET”之后,我看到一个交互式页面,其中包含“搜索”、“还原...”、“应用”、“应用和保存”、“INS”和'状态'。我将如何使用这些将“字体”设置为您建议的值?很可能我只是不知道足以提出一个有说服力的问题??我已接受您的回答,再次感谢您的非常有帮助的回答
  • 点击INS,意思是“插入”。然后您会看到输入框架名称Parameter 及其Value 的位置。为Parameter 输入font。为Value 输入字符串字体名称(带有封闭的" 字符)。每次定义要包含的参数时,您都会获得一个新的INS 按钮,让您可以插入另一个。你会得到一个DEL 按钮来删除你插入的那个。
  • 您应该在自定义缓冲区的顶部看到以下内容:有关使用此缓冲区的帮助,请参阅 Emacs 手册中的 Easy Customization 按照该链接访问“询问 Emacs” - 甚至比在这里问更好。 ;-)
【解决方案2】:

在我的初始化中,我有以下内容可以连接到我设置字体的after-make-frame-functions(肯定是从网上某处获取的),

(defun my-frame-init ()
  ;; eg.
  (set-face-attribute 'mode-line nil
                      :font "NanumGothicCoding-14"
                      :weight 'normal))

(if (daemonp)
    (add-hook 'after-make-frame-functions
              (lambda (frame)
                (select-frame frame)
                (my-frame-init)))
  (my-frame-init))

【讨论】:

  • 我已将您提供的代码逐字添加到我的 .emacs 文件中并重新启动。可悲的是C-x 5 2 仍然以大字体开始一个大框架。不知道你所说的“肯定是从网上某处拍摄的”你能提供例子吗?
  • 从我的框架配置中添加了一个示例行——“取自在线”我只是说我确定我在某个地方获得了这个解决方案
猜你喜欢
  • 2016-05-23
  • 2010-10-06
  • 2011-05-07
  • 2011-06-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-12
相关资源
最近更新 更多