Emacsには、プログラミング言語のために特化した、多くのメジャーモード(メジャーモードを参照してください)があります。プログラミング言語に関連したモードは通常、式の構文、インデントの慣習的ルール、言語の構文をハイライトする方法、関数定義の開始と終了を検索する方法を指定します。プログラムをコンパイルしたり、デバッグするための機能をもつ場合もあります。各言語にたいするメジャーモード名は、言語名により名づけられます。たとえばCプログラミング言語にたいするメジャーモードは、c-mode
です。
EmacsにはLisp、Scheme、the Scheme-based DSSSL expression language、Ada、ASM、AWK、C、C++、C#、Elixir、Fortran、Icon、IDL (CORBA)、HEEx、IDLWAVE、Java、Javascript、Lua、M4、Makefiles、Metafont (TeX’s companion for font creation)、Modula2、Object Pascal、Objective-C、Octave、Pascal、Perl、PHP、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-mode
、python-ts-mode
のように名前に‘-ts-’が含まれています。
ほとんどのプログラミング言語では、インデントはプログラム構造を示すために行ごとに異なります。したがって、ほとんどのプログラミング言語のモードでは、TABとタイプすることにより、カレント行のインデントが更新されます(プログラムのインデントを参照してください)。さらにDELは通常、タブをあたかも等価な数のスペースであるかのように扱って、後方に削除するbackward-delete-char-untabify
にバインドされているので、空白文字がスペースなのかタブなのか気にせずに、インデントを1列ずつ削除できます。
プログラミング言語のモードに入ることにより、フック変数prog-mode-hook
に指定されたカスタムLisp関数と、その後でモード自身のモードフックが実行されます(メジャーモードを参照してください)。たとえばCモードに入ることにより、prog-mode-hook
とc-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を参照してください)のマニュアルが利用可能です。