【发布时间】:2010-02-11 04:28:21
【问题描述】:
我今天一直在尝试 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)
根据我目前收集到的信息,我希望这两个 sn-ps 应该产生相同的视觉效果。为什么不呢?
【问题讨论】:
-
在 Emacs 23.1 上为我工作,在基本模式和文本模式下的缓冲区中都有文本。
-
22.1.50 不是官方版本,我会尝试从homepage.mac.com/zenitani/emacs-e.html 获取官方版本
-
我下载安装了正式版,也出现了同样的问题。但无论如何,我偶然得到了答案。我打开了一个新的空缓冲区并输入了一些随机的乱码,并在那里设置文本属性。我最初尝试所有实验的缓冲区是 xml 模式(或 sgml 模式,等等)。所以至少我现在可以应用文本属性,但对我来说,某些模式如何(以及为什么)可以抵消 put-text-property 对我来说仍然是个谜。