6

私はいくつかの学術研究のために使用しなければならない新しいテンプレートのような言語のための新しいemacsモードを書こうとしています。C言語のためのEmacsモード

私はコードが着色し、次の例外を除いて、Cモードでのようにインデントされたい:

  • 「%」の演算子として使用されていませんが、いくつかの特定のキーワードの最初の文字として( "%p"、 "%action"など)
  • コード行はセミコロンで終わることはありません。

派生モード(cモードから)を作成し、 '%'と ';'の元の目的を無視するように設定できますか? 「RETを押した後の自動インデント」の機能を ';'なしで動作させることは可能ですか?

似たような言語(「{}」の括弧が付いていますが、セミコロンはありません)に類似のモードがありますか?

メジャーモードを最初から書き込むべきですか?

Rモードをhttp://ess.r-project.org/からパッチすることを考えましたが、このモードでは "/ * comment * /"という形式のコメントはサポートされていません。

私が探している最も重要な機能は、ブラケットインデント、つまりRETキーを押した後の '{}'ブロック内のインデントコードです( ';'で終わらない行の後に余分な字下げがない場合) )。部分的な解決策も役立ちます。

答えて

2

が本当にに気にならない場合は、Gosu modeをご覧ください。 Gosuは中括弧とセミコロンがない言語なので、最小限に抑える必要があります。また、Cと同じコメント構文を使用します。

は本当にの汎用モードに基づいており、簡単な操作で簡単に修正することができます。 Cモードに基づくではなくです。

これは私がコンパイラクラスのために働いていた言語のモードを作るために使用したもので、elispの経験が限られていても簡単でした。一方、インデントはかなりシンプルです。これはほとんどのコードで機能しますが、Cモードほど完全ではありません。

+0

Gosuモードを使用する代わりに、[Google Go](http://golang.org)モードを使用してパッチを当てました。 – Oren

2

チェックアウトArduinoのモード:https://github.com/bookest/arduino-mode/blob/master/arduino-mode.el

それはすぐにプログラミングをArduinoのために非常に有用で、ユニークなものを作成するために、CCモードの機能を使用してCベースのモードです。これをシンプルなテンプレートとして使用すると、多くの助けになります。

3

より一般的には、CCモードは、より多くの言語に対応するために時間の経過とともに拡張され、一般化されています。最新のCCモードは、汎用コードを言語固有のコードから分離するのに合理的に優れています。したがって、CCモードを使用する主なモード(awkモードなど)をいくつか見て、CCモードの管理者に連絡してください。あなたは、自分が望むことを実行するためのヒントを手助けすることができます。

+0

私はawk-mode(行は ';'で終わる必要はない)に従ってCCモードにパッチを当てようとしましたが、理解して修正するにはコードが多すぎます。 – Oren