只有在声明处突出显示的变量?(Emacs c++-mode)

3
在emacs(23.3.1, GNU)中,我设置了一个主题(使用哪个主题都无关紧要,这个问题仍然存在)。当我在C++模式下声明变量时,该变量会被突出显示(这种情况是白色的),但在程序中再次调用该变量时,它将不再像声明时那样被突出显示为白色。有什么想法为什么会发生这种情况,如何解决呢?提前感谢您。虽然这里显然没有颜色,但以下是一个示例:
int num; <------- would be white

 cout << "The number is: " << num << endl; <-------- here it would not be white, 

 just regular foreground color?

请明确指出您使用的模式,我在标题中设置为“c++-mode”,这可能不是您正在使用的模式。还请包括[X]Emacs版本等信息。 - user166390
抱歉,我编辑并包含了正确的信息。 - Gmenfan83
1个回答

2
那是因为在第二个语句中,num 是一个变量,Emacs很难确定它的类型,除非对缓冲区进行完整的句法分析。理论上,Emacs是能够做到这一点的(例如见这里),但大多数模式使用正则表达式进行关键字高亮显示。这意味着存在某些限制,但模式程序员通常更喜欢它的简单性(哦,好吧,一切都是相对的)。
当与更专业的IDE相比较时,您可以认为这是Emacs作为通用文本编辑器的一个弱点,后者经常进行全面解析以提供智能错误消息、支持灵活的代码浏览并建议快速修复错误。
如果您想深入了解Emacs语法高亮,请查看Font Lock,特别是font-lock-keywords,但请注意这是一个复杂的问题。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接