1

我目前使用括号(代码编辑器)来创建一些C源文件。 它使用CodeMirror来处理语法突出显示,我一直试图尝试向其中添加关键字。如何将关键字(并更改其颜色)添加到CodeMirror?

我设法添加'printf'作为关键字,方法是修改this code here并向关键字添加'printf'。 但是,我想改变它的颜色,并没有能够做到这一点。我怎么能这样做?

另外,就像'//'这样的行注释突出显示整行,我也想这样做,如果行以'#'开头,也改变颜色。

我很确定我需要修改'clike.js'文件来添加新的关键字和一些其他.css文件,以改变颜色,但我似乎无法解决它。

感谢您的任何帮助。

回答

0

解决了它。

首先,我改变了the 'clike.js' file添加了下面的'if'块来处理我想要的更改。

function tokenBase(stream, state) { 
    var ch = stream.next(); 
    if (ch == "#") { 
     if (stream.eat("i")) { 
     stream.skipTo(" ") 
     return "include"; 
     } 
     else if (stream.eat("p")) { 
     stream.skipToEnd(); 
     return "pragma"; 
     } 
    } 
    ... 

所以当文件被解析时,外部块会检查'#'。当检测到一个时,它会检查下一个字母是'i'还是'p'。
这是因为我想突显:

#include ... 

#pragma ... 

如果一个“i”被发现为下一个字符,我用stream.skipTo(" ")跳到下一个空格,这样,只突出显示#include
如果找到'p',我改为使用stream.skipToEnd(),以便整条线突出显示。

return语句然后返回一个字符串,该字符串与您找到的内容相关,并且您的主题.css文件中的对应样式指定诸如颜色或样式之类的内容。
例如,在我的情况下,括号默认灯光主题位于Brackets.app/Contents/www/extensions/default/LightTheme/main.less
在这个文件中添加以下行:

.cm-pragma {color: #a50000;} 
.cm-include {color: #A0522D;} 

这就指定您希望该文本为彩色,但我相信其他的东西可以和指定,例如粗体,斜体,可能是字体等。

如果你想做一个新的返回类型'测试',你会在你的JavaScript文件中return "test";,你的主题文件中的相应风格将被命名为.cm-include {...};

希望这可以帮助任何人想要做同样的事情。