GNU Emacs
GNU Emacs(グヌー・イーマックス)は最も有名で、かつ最も多く移植されているEmacsテキストエディタであり、GNUプロジェクト創設者のリチャード・ストールマンにより作成された。GNU Emacsは他のEmacs系エディタと同様に、チューリング完全なプログラミング言語で拡張可能である。GNU Emacsは「今日利用できる最もパワフルなテキストエディタ」と称されている。GNU Emacsは基盤となるシステムからの適切なサポートにより、複数の文字集合を含むファイルを表示することが可能だが、1999年の時点で既にほとんどの人間言語を同時に表示することが可能であった。GNU Emacsはその歴史を通じてGNUプロジェクトの中心となるコンポーネントであり、さらにフリーソフトウェア運動のフラグシップである。GNU Emacsは、他のEMACS派生と区別する場合にGNUMACSと略されることがある。GNU Emacsのうたい文句は「拡張可能で自己説明的なテキストエディタ」である。
1991年初頭、GNU Emacs 19の初期α版をベースとしてJamie Zawinski(英語版)とLucid(英語版)社の人達によりLucid Emacsが開発された。コードベースはすぐに2つに分割され、開発チームは単一プログラムとして併合しようとすることをあきらめた 。これはフォークしたフリーソフトウェアのうち初期の最も有名な例の1つである。Lucid EmacsはXEmacsと名前を変え、Emacsの中でGNU Emacsに次いで2番目に有名な派生となった。XEmacsの開発は2009年1月に最新の安定版であるバージョン21.4.22がリリースされてから遅くなっていき、その一方でGNU Emacsは以前はXEmacsにしかなかった機能の多くを実装していった。このため一部のユーザーはXEmacsの死を宣言するようになった。
GNU Emacsの振る舞いは、新しいコマンド、新しいバッファモード、新しいキーマップなどを定義したり、コマンドラインオプションを追加するための組み込みEmacs Lispプログラムにより、ほぼ制限なく修正したり拡張することができる。ユーザー向け機能を提供する拡張の多くは主モードを定義する(新しいファイルタイプ用の主モードか、テキスト編集させないユーザインタフェースを構築する主モードのどちらかとなる)。その他の拡張には、コマンドや副モードのみを定義するものや、別の拡張を補強する機能を提供するものなどがある。
GNU Emacsのインストールには多くの拡張がバンドルされている。バンドルされていない拡張はルーズファイル(Usenet newsgroup gnu.emacs.sourcesが伝統的なソースであった)として、ダウンロードされ使用されていたが、バージョン24より管理されたパッケージやパッケージダウンロードサイトが発展してきている。これらのパッケージは、拡張をダウンロードしてインストールし、さらに最新の状態に維持するためのビルトインパッケージマネージャ(これ自体が拡張である)を利用する。
以下に主な拡張の例を示す:
AUCTeX(英語版) : TeXおよびLaTeXドキュメントを編集し処理するためのツール
Calc : パワフルなRPN数値計算機
Calendar-mode : 予定表や日記の維持
Emacsは状態を表したり情報を要求するために「ミニバッファ」を利用する。通常、ミニバッファは一番下の行に存在する。ミニバッファが果たす機能は、ほとんどのGUIでは一般的にダイアログボックスが果たす機能である。ミニバッファは、検索対象となるテキストや、読み込みや保存を行うファイル名などの情報を保持している。該当する場合、タブキーやスペースキーでコマンドライン補完(英語版)ができる。