Emacs:hl-line-mode与highlight-phrase冲突

时间:2011-07-03 10:45:40

标签: emacs

我通过评估来突出显示当前行:

(hl-line-mode)

也可以全局设置:

(global-hl-line-mode nil)

问题是这种方式突出显示行覆盖highlight-phrase。所以我的问题是:“如何在这一行中突出显示当前行和给定短语?”

3 个答案:

答案 0 :(得分:6)

highlight-phrasehl-line都应用具有背景颜色集的面。 hl-line获胜,因为它使用了叠加层,overlays always override text properties, which highlight-phrase uses。我建议您通过自定义hi-yellow面来使用明亮的前景色而不是背景色甚至是一个盒子来解决这个问题。

答案 1 :(得分:2)

所以这里有一些绝对不理想的解决方案。做:

M-x customize-face
然后,emacs会问你哪一个,我做了

hl-line

然后我关闭了“继承”标志(最后一个),并打开了“前景”标志, - 它说“黑色” - 我把它变成了红色。之后你应该把它全部保存在页面的顶部 - 或者 - 只为这个部分保存,或者也用于将来的会话。

就是这样!这样当前行文本拖欠红色字体,而highlight-phrase突出显示黄色短语。

答案 2 :(得分:1)

编辑:我发布的上一个解决方案不起作用,但这个应该是。

突出显示有两种模式,一种用于启用字体锁定的缓冲区(使用字体锁定),另一种用于不使用叠加层(使用叠加层)。我发现的解决方案是简单地强制突出显示以始终使用叠加,因此比hl-line具有更高的优先级(因为较短的叠加具有隐含的更高优先级,给定相同的priority值)。

为此,我进入hi-lock.el并将font-lock-fontified的每个实例替换为nil。请务必M-x byte-compile-file之后更新hi-lock.elc