在Emacs中更改文本外观:叠加工作,文本属性不

时间:2010-02-11 04:28:21

标签: emacs overlays

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

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

但是,如果我用(remove-overlays)删除叠加层并执行以下代码,则不会发生任何事情(除了迷你缓冲区中出现“nil”一词)。

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

从我迄今收集到的内容来看,我希望这两个片段能够产生相同的视觉效果。他们为什么不呢?

2 个答案:

答案 0 :(得分:4)

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

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

答案 1 :(得分:2)

ansi-color.el - “然而,在Emacs中,事情有点儿 不同:当字体锁在缓冲区中处于活动状态时,您不能简单地添加 面向缓冲区的text-properties。字体锁定将删除面部 text-property使用'font-lock-unfontify-region-function'。如果你想 将'ansi-color-apply'返回的字符串插入到这样的缓冲区中, 你必须设置'font-lock-unfontify-region-function' `ANSI-颜色unfontify区域”。此功能不会删除所有面部 text-properties无条件。它将保留面文本属性 如果设置属性'ansi-color'。