【问题标题】:Changing fonts depending on the major mode根据主要模式更改字体
【发布时间】:2012-11-02 17:41:22
【问题描述】:

有没有办法根据主要模式更改字体?如果是这样,怎么做?我通常使用比例字体,但只针对dired模式和shell模式,我想切换到非比例字体。这些模式没有特殊的面,只是使用默认的面,所以不能只通过设置字体来完成。我希望能够根据主要模式自动切换,也许使用钩子。

【问题讨论】:

标签: emacs fonts major-mode


【解决方案1】:

使用模式钩子,使用 face remapping feature 钩子为当前缓冲区重新映射面的函数:

(defun use-monospace ()
  "Switch the current buffer to a monospace font."
  (face-remap-add-relative 'default '(:family "Monospace")))

(add-hook 'dired-mode-hook 'use-monospace)
...

【讨论】:

    【解决方案2】:

    如上所述定义自己的函数的另一种方法是使用buffer-face-mode。通常这会将variable-pitch 用于启用它的缓冲区,但由于您想使用可变间距字体作为默认字体,您可以将其更改为fixed-pitch

    (setq buffer-face-mode-face 'fixed-pitch)
    (add-hook 'dired-mode-hook 'buffer-face-mode)
    (add-hook 'shell-mode-hook 'buffer-face-mode)
    

    【讨论】:

    • 谢谢,这看起来也很有帮助。
    猜你喜欢
    • 2013-04-01
    • 1970-01-01
    • 2019-08-18
    • 2012-12-18
    • 2021-12-17
    • 2016-04-16
    • 2012-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多