6

我正在尝试为类似 c 的新模板语言编写新的 emacs 模式,我必须将其用于一些学术研究。

我希望代码像在 c 模式中一样着色和缩进,但有以下例外:

  • '%' 不用作运算符,而是用作某些特定关键字(如:“%p”、“%action”等)中的第一个字符
  • 代码行不以分号结尾。

是否可以创建派生模式(来自 c 模式)并将其设置为忽略 '%' 和 ';' 的原始目的?是否可以在没有';'的情况下使“按RET后自动缩进”功能起作用?

我可以尝试修补类似语言的类似模式(带有“{}”括号,但没有分号)吗?

我应该尝试从头开始编写主要模式吗?

我曾考虑从http://ess.r-project.org/修补 R 模式,但此模式不支持“/* 注释 */”形式的注释。

我正在寻找的最重要的功能是方括号缩进,即在按 RET 后在“{}”块内缩进代码(并且在不以“;”结尾的行之后没有额外的缩进)。部分解决方案也会有所帮助。

4

3 回答 3

3

更一般地说,CC 模式已经随着时间的推移进行了扩展和推广,以适应更多的语言,并且最新的 CC 模式应该相当擅长将通用代码与特定于语言的代码隔离开来。因此,请查看一些使用 CC-mode 的主要模式(例如 awk-mode),并与 CC-mode 的维护者取得联系,他们将能够帮助您弄清楚如何做您想做的事情。

于 2012-02-25T05:02:25.973 回答
2

查看 arduino 模式:https ://github.com/bookest/arduino-mode/blob/master/arduino-mode.el

这是一种基于 C 的模式,它使用 cc-mode 功能快速创建对 arduino 编程非常有用和独特的东西。使用它作为一个简单的模板应该会有很大帮助。

于 2012-02-25T03:24:45.257 回答
2

如果你不介意一些非常简单的事情,你可以看看Gosu mode。Gosu 是一种有花括号且没有分号的语言,因此您应该为最低要求做好准备。它还使用与 C 相同的注释语法。

它的模式的实现非常简单并且基于通用模式,因此修改它以按照您想要的方式工作应该很容易。它不是基于 C 模式的。

这就是我用来为我的编译器类工作的语言创建一个模式的方法,即使只有有限的 elisp 经验,它也很容易。另一方面,缩进相当简单——它适用于大多数代码,但不如 C 模式的完整。

于 2012-02-25T03:40:21.003 回答