受 ia Writer 的焦点模式启发,我有兴趣在 emacs 中使用字体 + 背景颜色来突出光标所在的功能,并在视觉上提示其余代码作为背景(我使用 C++,但如果这样就好了无论使用哪种编程语言都可以工作)。
理想情况下,函数外代码的字体颜色会变暗(这就是焦点模式的工作方式)。一个更简单的解决方案可能是稍微更改光标当前所在功能的背景颜色。如何做到这一点?
受 ia Writer 的焦点模式启发,我有兴趣在 emacs 中使用字体 + 背景颜色来突出光标所在的功能,并在视觉上提示其余代码作为背景(我使用 C++,但如果这样就好了无论使用哪种编程语言都可以工作)。
理想情况下,函数外代码的字体颜色会变暗(这就是焦点模式的工作方式)。一个更简单的解决方案可能是稍微更改光标当前所在功能的背景颜色。如何做到这一点?
AFAIK 不存在这样的东西。如果你想让它自己写,这里有一个草图:
编写一个确定当前函数边界的例程。最简单的方法是使用(bounds-of-thing-at-point 'defun)
.
编写一个例程,当给定区域的边界时,获取该区域的背景面属性,将其变暗,并将新面应用于该区域。
使用调用此变量原始值的例程覆盖font-lock-fontify-region-function
(参见此处),将给定的区域与当前 defun 的区域(使用 #1)进行区分,然后将例程 #2 应用于剩余区域。
我更喜欢覆盖字体锁定,例如使用,jit-lock-register
因为您需要控制字体化的顺序。
!
which-function 模式用于突出显示当前功能。试试看它是否对你有帮助,看看这篇文章是否对你有帮助: