3

我想在 基于 C++的括号代码编辑器中添加一种新语言(称为“kiwi”)。它使用完全相同的规则,但有额外的关键字。

我已经完成了直接在clike.js文件上添加带有单独语法突出显示的附加关键字的部分,但我真的不喜欢直接修改 C++ 的 def

有人可以向我解释如何实现这一目标吗?我真的不明白使用def()和之间的区别CodeMirror.defineMIME()。如果这种新语言将采用 cpp/hpp 输入文件,那么编辑器将如何从 C++ -> kiwi 切换?

提前致谢

4

2 回答 2

1

正如您所做的那样,修补您的本地代码副本可能非常适合您的需求。(如果您从源代码的 Git 副本运行,很容易拉下更新而不会丢失本地差异)。

如果你想用一种“更干净”的方式来做,你可以编写一个 Brackets 扩展来定义新语言——这样更改很容易与其他人共享,并且更新 Brackets 更加容易。

您执行此操作的方式大致遵循定义新语言文档:

  • 编写一个扩展来打包定义新语言的代码(如下)
  • CM模式“clike”已经加载,所以你不必担心
  • 调用CodeMirror.defineMIME()以使用正确的关键字列表设置 clike 配置 - 使用您选择的新 mimetype 名称。(查看def()clike.js 中的代码,我不认为它所做的额外内容与括号特别相关)。
  • 打电话LanguageManager.defineLanguage()告诉 Brackets 你的新语言模式(以及映射到它的文件扩展名等)。您应该能够主要复制此处定义 C++ 模式的方式- 使用新的 MIME 名称除外。
于 2014-05-27T20:36:05.917 回答
0

您应该阅读 CodeMirror 文档以了解如何编写您的模式

但简而言之,您可以定义自己的 clike 语言类型,方法是使用CodeMirror.defineMIME().

def()您还问和之间有什么区别CodeMirror.defineMIME()。如果您查看代码,您可以看到def()函数CodeMirror.defineMIME()在最后调用,所以我相信这只是定义类型的一种更易读的方式。

此外,似乎不可能在同一扩展类型上定义一种以上的语言(不是 100% 确定)。

于 2014-05-03T01:15:08.313 回答