我今天一直在使用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)
从我迄今收集到的内容来看,我希望这两个片段能够产生相同的视觉效果。他们为什么不呢?
答案 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'。