Emacs Lisp
Emacs Lispは、GNU EmacsとXEmacsテキストエディタ（この記事ではあわせてEmacsと呼ぶ）で使われているプログラミング言語LISPの方言である。Emacs組込みの編集機能のうち、C言語で書かれた部分以外のほとんどを実装するのに使われている。また、利用者によるEmacsのカスタム化や拡張のために用いられる。Lisp処理系で、もっとも使われている言語である。

Emacs Lispはスクリプト言語として使うこともでき、コマンド行や実行ファイルからも呼び出せる。バッファや移動コマンドのような編集機能はバッチ・モードで動作する。

Emacs Lispは、ときに「Elisp」と呼ばれることもある。機能でいうと、Common Lispの影響も後にみえるが、Maclisp方言と強い関係がある
。プログラミング・メソッドとして、手続き指向プログラミングと関数的プログラミングに対応している。関数をデータとして扱えるなどの強力な機能のため、(TECOを拡張言語としていたオリジナルの) Emacsの書換えにあたり、リチャード・ストールマンは拡張言語としてLISPを選んだ。ストールマンがGosling EmacsをGNU Emacsへ書き換えていたとき、Common Lisp とは違ってSchemeは既に存在した。しかし、当時のワークステーションの性能は貧弱であったため、Schemeよりももっと簡単に最適化のできるLISP方言を開発する必要があった。

Emacs Lispは、アプリケーション・プログラミングで使われる方言群であるSchemeやCommon Lispとは根本的に異なる。大きな違いの1つは、デフォルトで字句的スコープではなく動的スコープを使うことである。つまり、呼出し関数の局所変数は、呼び出された関数からも参照できるが、定義時のスコープで参照しているのではない。

Emacs Lispを書くのがGNU Emacsをカスタム化する唯一の方法ではない。バージョン20以降のGNU Emacsには「カスタム化」機能があり、利用者はグラフィカルなインターフェースによって一般的なカスタム化変数を設定できる。「カスタム化」機能は、比較的単純なものに制限されているものの、利用者の代わりにEmacs Lispのコードを書いてくれる。利用者全員がEmacsの提供する高度な拡張性が必要なわけではないし、またそういう人は自分でEmacs Lispのコードを書けるものだ。
Q1252773
GNU Emacs
MISC
Q2164944
XEmacs
MISC
Q131212
テキストエディタ
Concept
Q189722
Emacs
Concept
Q132874
LISP
Concept
Q2458742
方言
Concept
Q15777
C言語
Concept
Q331911
バッファ
Concept
Q661613
バッチ・モード
Concept
Q1882973
Maclisp
MEDIA
Q15262084
手続き
Concept
Q193076
関数的
Concept
Q190686
関数
Concept
Q1547448
TECO
MEDIA
Q7439
リチャード・ストールマン
PER
Q1099561
Gosling Emacs
MEDIA
Q187560
Scheme
Concept
Q849146
Common Lisp
MEDIA
Q3399604
字句的スコープ
UNK
Q11400071
動的スコープ
UNK
Q1334586
Emacs Lisp
MEDIA
Q1334586
Emacs Lisp
MEDIA
Q1334586
Emacs Lisp
MEDIA
Q1334586
Emacs Lisp
MEDIA
Q1334586
Emacs Lisp
MEDIA
Q1334586
Emacs Lisp
MEDIA
Q1334586
Emacs Lisp
MEDIA
2020-01-01T00:00:00Z^^http://www.w3.org/2001/XMLSchema#dateTime
1
DATE
2020-01-01T00:00:00Z^^http://www.w3.org/2001/XMLSchema#dateTime
20
DATE
+1^^http://www.w3.org/2001/XMLSchema#decimal
1
NUMBER
+20^^http://www.w3.org/2001/XMLSchema#decimal
20
NUMBER
part of
named after
instance of
based on
programming paradigm
designed by
instance of
different from
programming language
programming language
creator
programming language
programming language
programming language
programming language
programming language
programming language
based on
programming language
programming language
different from
programming language
creator
based on
programming paradigm
notable work
instance of
programming language
influenced by
influenced by
influenced by
named after
instance of
based on
programming paradigm
designed by
named after
instance of
based on
programming paradigm
designed by
named after
instance of
based on
programming paradigm
designed by
named after
instance of
based on
programming paradigm
designed by
named after
instance of
based on
programming paradigm
designed by
named after
instance of
based on
programming paradigm
designed by