【问题标题】:Emacs Mode for a c-like language类 c 语言的 Emacs 模式
【发布时间】:2012-02-24 04:35:06
【问题描述】:

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

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

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

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

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

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

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

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

【问题讨论】:

    标签: emacs colors development-environment indentation auto-indent


    【解决方案1】:

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

    【讨论】:

    • 我尝试根据 awk-mode 修补 CC 模式(其中行不必以 ';' 结尾),但代码太多,无法理解和修复。
    【解决方案2】:

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

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

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

    【讨论】:

    • 我没有使用Gosu模式,而是使用Google Go模式并打了补丁。
    【解决方案3】:

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

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

    【讨论】:

      猜你喜欢
      • 2010-09-10
      • 2018-02-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-03
      • 1970-01-01
      • 2019-02-07
      • 1970-01-01
      相关资源
      最近更新 更多