【发布时间】:2014-01-08 01:17:32
【问题描述】:
这个想法是重新定义set-face-attribute,使其正常设置面部属性,但:weight 属性除外,该属性应始终设置为normal(我认为是默认值)。有了这个,我希望一劳永逸地禁用 Emacs 中的粗体字体。
我知道了:
(fset 'original-set-face-attribute (symbol-function 'set-face-attribute))
(defun set-face-attribute (face frame &rest args)
(progn
(original-set-face-attribute face frame args)))
到目前为止,它不起作用。如果我这样做(make-face-bold 'default),我会得到Wrong type argument: symbolp, (:weight bold)。我想我有什么
要做的是从参数列表中删除包含:weight 的元素
args.
【问题讨论】:
-
(1) 您可以使用
defalias代替fset。 (2) 因为ARGS是&rest参数,所以需要使用apply:(apply #'original-set-face-attributes face frame args)。 -
就个人而言,虽然我也讨厌
bold对面孔的影响(至少在MS Windows 上),但我更喜欢简单地重新定义各个面孔。一方面,如果他们使用bold,我通常还想对他们进行其他更改。 -
@Drew 但是有数百张面孔...
-
你是对的。在我的设置中,有 300 多个。而且我想我不会费心从所有这些中删除
bold。但话又说回来,其中一些我从未见过。我想我会根据需要(和所见)将面孔修复为我想要的。 -
如果粗体字体比另一种字体更重要,我将另一种字体设置为 nil --
:bold nil。我对其他属性也这样做。这是一个例子:(make-face 'linum-active) (set-face-attribute 'linum-active nil :foreground "black" :background "#eab700" :bold nil :italic nil :underline nil :box nil :overline nil :height 180)
标签: emacs elisp emacs-faces