在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?
答案 0 :(得分:2)
这是因为Emacs很难告诉第二个语句中的num
是一个变量而没有对缓冲区进行完整的语法分析。从理论上讲,Emacs能够做到这一点(参见例如here),但大多数模式使用正则表达式进行关键字突出显示。这意味着对可以实现的目标有一些限制,但模式程序员通常更喜欢它的简单性(哦,好吧,都是相对的)。
您可能会认为这是Emacs的通用文本编辑器的弱点,与通常进行完全解析以提供智能错误消息的更专业的IDE相比,支持灵活的代码浏览并快速建议修复了错误。
如果您想深入了解Emacs语法高亮,请查看Font Lock,特别是font-lock-keywords,但请注意,这是一个复杂的问题。