Next: , Up: プログラムの編集   [Contents][Index]


27.1 プログラミング言語のためのメジャーモード

Emacsには、プログラミング言語のために特化した、多くのメジャーモード(メジャーモードを参照してください)があります。プログラミング言語に関連したモードは通常、式の構文、インデントの慣習的ルール、言語の構文をハイライトする方法、関数定義の開始と終了を検索する方法を指定します。プログラムをコンパイルしたり、デバッグするための機能をもつ場合もあります。各言語にたいするメジャーモード名は、言語名により名づけられます。たとえばCプログラミング言語にたいするメジャーモードは、c-modeです。

EmacsにはLisp、Scheme、SchemeベースのDSSSL expression言語、Ada、ASM、AWK、C、C++、C#、Fortran、Icon、IDL(CORBA)、IDLWAVE、Java、Javascript、M4、Makefile、Metafont(フォント作成のためのTeXの仲間)、Modula2、Object Pascal、Objective-C、Octave、Pascal、Perl、Pike、PostScript、Prolog、Python、Ruby、Simula、SQL、Tcl、TypeScript、Verilog、VHDLなどのプログラミング言語のためのモードがあります。Perlのための代替モードはCPerlモードと呼ばれます。一般的なGNUおよびUnixシェルのスクリプティング言語、MS-DOS/MS-Windowsの‘BAT’ファイル、JSON、DNS master、CSS(Cascading Style Sheets)、Docker、CMakeなどのファイル、それに一連のさまざまな設定ファイルのためのモードも利用可能です。

理想的には、Emacsは編集したいと望むすべてのプログラミング言語のためのメジャーモードをもつべきです。しかし、もしあなたのお気に入りの言語のためのモードがない場合、それはEmacsとともに配布されないパッケージで実装されているかもしれません(Emacs Lispパッケージを参照してください)。または、あたたが貢献することもできます。

Emacsが‘tree-sitter’ライブラリーとともにコンパイルされていれば、このライブラリーにもとづく複数の編集モードが提供されます。これらは‘tree-sitter’がもたらすインクリメンタルな解析機能を利用するモードです。これらのモードにはc-ts-modepython-ts-modeのように名前に‘-ts-’が含まれています。

ほとんどのプログラミング言語では、インデントはプログラム構造を示すために行ごとに異なります。したがって、ほとんどのプログラミング言語のモードでは、TABとタイプすることにより、カレント行のインデントが更新されます(プログラムのインデントを参照してください)。さらにDELは通常、タブをあたかも等価な数のスペースであるかのように扱って、後方に削除するbackward-delete-char-untabifyにバインドされているので、空白文字がスペースなのかタブなのか気にせずに、インデントを1列ずつ削除できます。

プログラミング言語のモードに入ることにより、フック変数prog-mode-hookに指定されたカスタムLisp関数と、その後でモード自身のモードフックが実行されます(メジャーモードを参照してください)。たとえばCモードに入ることにより、prog-mode-hookc-mode-hookが実行されます。フックについての情報は、フックを参照してください。

Adaモード(Ada Mode in Ada Modeを参照してください)、C/C++/Objective C/Java/Corba IDL/Pike/AWKモード(CC Mode in CC Modeを参照してください)、Octaveモード、VHDLモード、IDLWAVEモード(IDLWAVE in IDLWAVE User Manualを参照してください)のマニュアルが利用可能です。