9

我今天一直在用 Emacs 中的文本属性进行试验。如果我将光标放在带有一些文本的行上,然后使用 执行以下代码M-:,则该行将以粗体重新显示。

(overlay-put
 (make-overlay
  (line-beginning-position)
  (line-end-position))
 'face 'bold)

但是,如果我用以下代码清除覆盖(remove-overlays)并执行以下代码,则什么也不会发生(除了单词“nil”出现在 minibuffer 中)。

(put-text-property
 (line-beginning-position)
 (line-end-position)
 'face 'bold)

从我到目前为止收集到的信息来看,我希望这两个片段应该产生相同的视觉结果。他们为什么不呢?

4

2 回答 2

4

启用时font-lock-mode,该face属性将被覆盖。请尝试font-lock-face

(放置文本属性
 (行起始位置)
 (行结束位置)
 'font-lock-face'粗体)
于 2010-02-11T10:07:44.587 回答
2

ansi-color.el -- “然而,在 Emacs 中,情况有点不同:当字体锁定在缓冲区中处于活动状态时,您不能简单地将面部文本属性添加到缓冲区。字体锁定将删除面部文本-属性使用'font-lock-unfontify-region-function'。如果要将'ansi-color-apply'返回的字符串插入到此类缓冲区中,必须将'font-lock-unfontify-region-function'设置为` ansi-color-unfontify-region'。此函数不会无条件地删除所有面部文本属性。如果设置了属性'ansi-color',它将保留面部文本属性。

于 2011-03-07T08:26:10.367 回答