如何在emacs中突出显示自定义数据类型?

如何在emacs中突出显示自定义数据类型?,emacs,Emacs,在我工作的地方,我们使用很多我们自己的自定义数据类型。Emacs识别的C++,从STL中注意到许多自定义数据类型,如字符串、向量等。这意味着在我的编辑器中,如果我声明一个函数,如::/p> string getString() const { return str; } 返回值将以绿色突出显示,因此函数名将以蓝色显示。现在,如果我决定使用自定义字符串,这会把一切都搞糟。所以现在我的cpp文件大部分是白色的,因为我们这里不使用普通的stl类。我如何编程emacs编辑器来识别当我指的是“字

在我工作的地方,我们使用很多我们自己的自定义数据类型。Emacs识别的C++,从STL中注意到许多自定义数据类型,如字符串、向量等。这意味着在我的编辑器中,如果我声明一个函数,如::/p>
string getString() const {
    return str;
}

返回值将以绿色突出显示,因此函数名将以蓝色显示。现在,如果我决定使用自定义字符串,这会把一切都搞糟。所以现在我的cpp文件大部分是白色的,因为我们这里不使用普通的stl类。我如何编程emacs编辑器来识别当我指的是“字符串”时,它的颜色与“字符串”的颜色相同

您需要
字体锁定添加关键字
。下面是一个例子:

(font-lock-add-keywords 'cc-mode
  '(("String" . font-lock-type-face)
    ("str" . font-lock-type-face)))
它添加正则表达式/字体锁对的列表

关于这个话题还有很多要读的。
特别是,您可能会感兴趣。

但有一件事。。我刚刚注意到,这只是突出了关键词。它并没有告诉Emacs这些单词应该被识别为C++关键字。因此,由于这个原因,函数名仍然是白色的,并且关键字“String”将在任何地方突出显示,即使它是函数名的一部分(例如GetString)。您应该使用更精确的正则表达式,例如(“\\s+(String)\\s*”1字体锁定类型面)。只有在前缀为制表符或空格且后跟可选空格时,该字符串才会匹配。