Next: トップレベルの定義、またはdefun, Up: プログラムの編集 [Contents][Index]
Emacsには、プログラミング言語のために特化した、多くのメジャーモード(メジャーモードを参照してください)があります。プログラミング言語に関連したモードは通常、式の構文、インデントの慣習的ルール、言語の構文をハイライトする方法、関数定義の開始と終了を検索する方法を指定します。プログラムをコンパイルしたり、デバッグするための機能をもつ場合もあります。各言語にたいするメジャーモード名は、言語名により名づけられます。たとえばCプログラミング言語にたいするメジャーモードは、c-mode
です。
Emacs has programming language modes for 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, and VHDL. The recommended mode for Perl is called CPerl mode. Modes are also available for the scripting languages of the common GNU and Unix shells, and MS-DOS/MS-Windows ‘BAT’ files, JSON, DNS master files, CSS (Cascading Style Sheets), Dockerfiles, CMake files, and various sorts of configuration files.
理想的には、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を参照してください)のマニュアルが利用可能です。