2

我目前正在使用括号(代码编辑器)来创建一些 C 源文件。它使用 CodeMirror 来处理语法突出显示,我现在已经尝试了一段时间来尝试向它添加关键字。

通过在此处修改此代码并将“printf”添加到关键字中,我设法将“printf”添加为关键字。但是,我想更改它的颜色并且无法做到这一点。我怎么能这样做?

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

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

谢谢你的帮助。

4

1 回答 1

1

解决了。

首先,我更改了“clike.js”文件,添加了以下“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;}

然后指定您希望该文本的颜色,但我假设也可以指定其他内容,例如粗体、斜体、可能是字体等。

如果你想创建一个新的返回类型'test',你可以return "test";在你的 javascript 文件中,你的主题文件中的相应样式将被命名为.cm-include {...};.

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

于 2014-11-24T13:53:37.767 回答