Emacsには、プログラミング言語のために特化した、多くのメジャーモード(Major Modesを参照してください)があります。プログラミング言語に関連したモードは通常、式の構文、インデントの慣習的ルール、言語の構文をハイライトする方法、関数定義の開始と終了を検索する方法を指定します。プログラムをコンパイルしたり、デバッグするための機能をもつ場合もあります。各言語にたいするメジャーモード名は、言語名により名づけられます。たとえばCプログラミング言語にたいするメジャーモードは、c-mode
です。
EmacsにはLisp、Scheme、SchemeベースのDSSSL expression言語、Ada、ASM、AWK、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、Verilog、VHDLなどのプログラミング言語のためのモードがあります。Perlのための代替モードはCPerlモードと呼ばれます。一般的なGNUおよびUnixシェルのスクリプティング言語、MS-DOS/MS-Windowsの‘BAT’ファイル、makefiles、DNS masterファイル、一連のさまざまな設定ファイルのためのモードも利用可能です。
理想的には、Emacsは編集したいと望むすべてのプログラミング言語のためのメジャーモードをもつべきです。しかし、もしあなたのお気に入りの言語のためのモードがない場合、それはEmacsとともに配布されないパッケージで実装されているかもしれません(Packagesを参照してください)。または、あたたが貢献することもできます。
ほとんどのプログラミング言語では、インデントはプログラム構造を示すために行ごとに異なります。したがって、ほとんどのプログラミング言語のモードでは、TABとタイプすることにより、カレント行のインデントが更新されます(Program Indentを参照してください)。さらにDELは通常、タブをあたかも等価な数のスペースであるかのように扱って、後方に削除するbackward-delete-char-untabify
にバインドされているので、空白文字がスペースなのかタブなのか気にせずに、インデントを1列ずつ削除できます。
プログラミング言語のモードに入ることにより、フック変数prog-mode-hook
に指定されたカスタムLisp関数と、その後でモード自身のモードフックが実行されます(Major Modesを参照してください)。たとえばCモードに入ることにより、prog-mode-hook
とc-mode-hook
が実行されます。フックについての情報は、Hooksを参照してください。
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を参照してください)のマニュアルが利用可能です。