[表紙] [目次] [索引] [検索] [上端 / 下端] [?]

Emacs Lisp プログラミング

これはプログラマではない人のための

Emacs Lisp プログラミング
解 説書である.

以下にあるメニューは各章のリストである.ここにはすべての章のすべての節 を一覧してある.

訳者まえがき   
はじめに    What to look for.
1. リスト処理 (2004/03/28)    What is Lisp?
2. 評価の練習 (2004/03/28)    Running several programs.
3. 関数定義の書き方 (2004/08/04)    How to write function definitions.
4. バッファ関連の関数 (2004/08/05)    Exploring a few buffer-related functions.
5. 多少複雑な関数 (2004/08/05)    A few, even more complex functions.
6. ナロイングとワイドニング (2004/08/07)    Restricting your and Emacs attention to a region.
7. 基本関数 carcdrcons (2004/08/07)    Fundamental functions in Lisp.
8. テキストのカットと保存 (2004/08/08)    Removing text and saving it.
9. リストの実装方法 (2004/08/08)    How lists are implemented in the computer.
10. ループと再帰 (2004/08/10)    How to repeat a process.
11. 正規表現の探索 (2004/08/10)    Regular expression searches.
12. 数え上げ:繰り返しと正規表現 (2004/08/10)    A review of repetition and regexps.
13. defun内の単語の数え上げ (2004/08/10)    Counting words in a defun.
14. グラフの準備 (2004/08/10)    A prototype graph printing function.
15. 個人用ファイル`.emacs' (2004/08/10)    How to write a `.emacs' file.
16. デバッグ (2006/04/06)    How to run the Emacs Lisp debuggers.
17. 結 論 (2004/08/10)    Now you have the basics.
A. 関数the-the (2004/08/10)    An appendix: how to find reduplicated words.
B. キルリングの扱い方    An appendix: how the kill ring works.
C. ラベル付きグラフ (2004/08/10)    How to create a graph with labelled axes.
D. GNU Free Documentation License (2004/08/11)   
索引   
著者について   

 -- The Detailed Node Listing ---

Preface

Why Study Emacs Lisp?    Why learn Emacs Lisp?
On Reading this Text    Read, gain familiarity, pick up habits....
対象とする読者    For whom this is written.
Lispの歴史   
初心者へ一言    You can read this as a novice.
謝 辞   

List Processing

1.1 Lispのリスト (2004/03/28)    What are lists?
1.2 プログラムの実行 (2004/01/16)    Any list in Lisp is a program ready to run.
1.3 エラーメッセージの生成 (2004/01/16)    Generating an error message.
1.4 シンボル名と関数定義    Names of symbols and function definitions.
1.5 Lispインタープリタ    What the Lisp interpreter does.
1.6 評 価 (2004/01/17)    Running a program.
1.7 変 数 (2004/01/17)    Returning a value from a variable.
1.8 引 数 (2004/01/17)    Passing information to a function.
1.9 変数への値の設定 (2004/01/17)    Setting the value of a variable.
1.10 まとめ (2004/03/28)    The major points.
1.11 演習問題   

Lisp Lists

Numbers, Lists inside of Lists    List have numbers, other lists, in them.
1.1.1 Lispのアトム (2004/01/16)    Elemental entities.
1.1.2 リスト内の空白 (2004/01/16)    Formating lists to be readable.
1.1.3 GNU Emacsのリスト入力補佐機能 (2004/03/28)    How GNU Emacs helps you type lists.

The Lisp Interpreter

Complications    Variables, Special forms, Lists within.
1.5.1 バイトコンパイル    Specially processing code for speed.

Evaluation

1.6.1 内側のリストの評価 (2004/01/17)    Lists within lists...

Variables

fill-column, an Example Variable   
1.7.1 Error Message for a Symbol Without a Function (2004/01/17)    The error message for a symbol without a function.
1.7.2 値のないシンボルに対するエラーメッセージ (2004/01/17)    The error message for a symbol without a value.

Arguments

1.8.1 引数のデータ型 (2004/01/16)    Types of data passed to a function.
1.8.2 引数としての変数やリストの値 (2004/01/17)    An argument can be the value of a variable or list.
1.8.3 可変個数の引数 (2004/01/17)    Some functions may take a variable number of arguments.
1.8.4 引数に誤った型のオブジェクトを指定 (2004/01/17)    Passing an argument of the wrong type to a function.
1.8.5 関数message (2004/01/17)    A useful function for sending messages.

Setting the Value of a Variable

1.9.1 setの使い方 (2004/01/17)    Setting values.
1.9.2 setqの使い方 (2004/01/17)    Setting a quoted value.
1.9.3 数え上げ (2004/01/17)    Using setq to count.

Practicing Evaluation

How to Evaluate    Typing editing commands or C-x C-e causes evaluation.
2.1 バッファ名 (2004/01/17)    Buffers and files are different.
2.2 バッファの取得 (2004/01/17)    Getting a buffer itself, not merely its name.
2.3 バッファの切り替え (2004/03/28)    How to change to another buffer.
2.4 バッファサイズとポイントの位置 (2004/03/28)    Where point is located and the size of the buffer.
2.5 演習問題   

How To Write Function Definitions

An Aside about Primitive Functions   
3.1 スペシャルフォームdefun (2004/03/28)    The defun special form.
3.2 関数定義のインストール    Install a function definition.
3.3 関数を対話的にする    Making a function interactive.
3.4 interactiveの他のオプション    Different options for interactive.
3.5 コードの恒久的インストール    Installing code permanently.
3.6 let (2004/03/28)    Creating and initializing local variables.
3.7 スペシャルフォームif (2004/03/28)    What if?
3.8 If--then--else式 (2004/03/28)    If--then--else expressions.
3.9 Emacs Lispの真偽値 (2004/03/28)    What Lisp considers false and true.
3.10 save-excursion (2004/03/28)    Keeping track of point, mark, and buffer.
3.11 復 習 (2004/08/04)   
3.12 演習問題   

Install a Function Definition

The effect of installation   
3.2.1 関数定義の変更    How to change a function definition.

Make a Function Interactive

対話的multiply-by-seven    An overview.
3.3.1 対話的 multiply-by-seven    The interactive version.

let

let で混乱を避ける   
3.6.1 let式の構造 (2004/03/28)   
3.6.2 let式の例 (2004/03/28)   
3.6.3 let式の非初期化変数 (2004/03/28)   

The if Special Form

if の詳細   
3.7.1 関数type-of-animalの詳細 (2004/03/28)    An example of an if expression.

Truth and Falsehood in Emacs Lisp

nil について    nil has two meanings.

save-excursion

ポイントとマーク    A review of various locations.
3.10.1 save-excursion式の雛型 (2004/03/28)   

A Few Buffer--Related Functions

4.1 詳しい情報を得る (2004/08/04)    How to find more information.
4.2 beginning-of-bufferの簡略した定義 (2004/08/04)    Shows goto-char,
                                point-min, and push-mark.
4.3 mark-whole-bufferの定義 (2004/08/05)    Almost the same as beginning-of-buffer.
4.4 append-to-bufferの定義 (2004/08/05)    Uses save-excursion and
                                insert-buffer-substring.
4.5 復 習 (2004/08/05)    Review.
4.6 演習問題   

The Definition of mark-whole-buffer

mark-whole-buffer の概略   
4.3.1 mark-whole-bufferの本体 (2004/08/05)    Only three lines of code.

The Definition of append-to-buffer

append-to-buffer の概略   
4.4.1 append-to-bufferinteractive(2004/08/05)    A two part interactive expression.
4.4.2 append-to-bufferの本体 (2004/08/05)    Incorporates a let expression.
4.4.3 append-to-buffersave-excursion (2004/08/05)    How the save-excursion works.

A Few More Complex Functions

5.1 copy-to-bufferの定義 (2004/08/05)    With set-buffer, get-buffer-create.
5.2 insert-bufferの定義 (2004/08/05)    Read-only, and with or.
5.3 beginning-of-bufferの完全な定義 (2004/08/05)    Shows goto-char,
                                point-min, and push-mark.
5.4 復 習 (2004/08/05)   
5.5 optional引数の演習問題   

The Definition of insert-buffer

insert-buffer のソースコード   
5.2.1 insert-bufferinteractive    When you can read, but not write.
5.2.2 関数insert-bufferの本体 (2004/08/05)    The body has an or and a let.
5.2.3 orのかわりにifを使ったinsert-buffer (2004/08/05)    Using an if instead of an or.
5.2.4 orの本体 (2004/08/05)    How the or expression works.
5.2.5 insert-bufferlet(2004/08/05)    Two save-excursion expressions.

The Interactive Expression in insert-buffer

読み出し専用バッファ    When a buffer cannot be modified.
interactive式の`b'    An existing buffer or else its name.

Complete Definition of beginning-of-buffer

5.3.1 オプションの引数 (2004/08/05)   
5.3.2 引数を指定したbeginning-of-buffer (2004/08/05)    Example with optional argument.
5.3.3 beginning-of-bufferの完全なコード (2004/08/05)   

beginning-of-buffer with an Argument

Disentangle beginning-of-buffer   
大きなバッファでの動作   
小さなバッファでの動作   

Narrowing and Widening

ナローイングの利点    The advantages of narrowing
6.1 スペシャルフォームsave-restriction (2004/08/07)    The save-restriction special form.
6.2 what-line (2004/08/07)    The number of the line that point is on.
6.3 ナロイングの演習問題   

carcdrcons: Fundamental Functions

Strange Names    An historical aside: why the strange names?
7.1 carcdr (2004/08/07)    Functions for extracting part of a list.
7.2 cons (2004/08/07)    Constructing a list.
7.3 nthcdr    Calling cdr repeatedly.
7.4 nth   
7.5 setcar    Changing the first element of a list.
7.6 setcdr    Changing the rest of a list.
7.7 演習問題   

cons

Build a list   
7.2.1 リストの長さ:length    How to find the length of a list.

Cutting and Storing Text

Storing Text in a List    Text is stored in a list.
8.1 zap-to-char    Cutting out text up to a character.
8.2 kill-region (2004/08/08)    Cutting text out of a region.
8.3 delete-and-extract-region: Cへ回り道 (2004/08/08)    Minor note on C programming language macros.
8.4 defvarによる変数の初期化 (2004/08/08)    How to give a variable an initial value.
8.5 copy-region-as-kill (2004/08/08)    A definition for copying text.
8.6 復 習 (2004/08/08)   
8.7 探索の演習問題 (2004/08/08)   

zap-to-char

8.1.1 interactive    A three part interactive expression.
8.1.2 zap-to-charの本体    A short overview.
8.1.3 関数search-forward    How to search for a string.
8.1.4 The progn Special Form    The progn special form.
8.1.6 zap-to-charのまとめ    Using point and search-forward.

kill-region

kill-region の定義    The function definition.
8.2.1 condition-case (2004/08/08)    Dealing with a problem.
8.2.2 delete-and-extract-region (2004/08/08)    Doing the work.

Initializing a Variable with defvar

変数の現在値を知る   
8.4.1 defvar とアスタリスク (2004/08/08)    An old-time convention.

copy-region-as-kill

関数 copy-region-as-kill の定義    The complete function definition.
8.5.1 copy-region-as-killの本体 (2004/08/08)    The body of copy-region-as-kill.

The Body of copy-region-as-kill

last-command and this-command   
関数kill-append   
関数 kill-new   

How Lists are Implemented

リストの図解   
9.1 箪笥の引き出しに見立てたシンボル (2004/08/08)    Exploring a powerful metaphor.

Yanking Text Back

9.2 yanknthcdrの演習問題   

Loops and Recursion

10.1 while    Causing a stretch of code to repeat.
10.2 dolistdotimes (2004/08/08)   
10.3 再 帰 (2004/08/10)    Causing a function to call itself.
10.4 ループの演習問題   

while

while を使ったループ    Repeat so long as test returns true.
10.1.1 A while ループとリスト    A while loop that uses a list.
10.1.2 例:print-elements-of-list    Uses while, car, cdr.
10.1.3 増加カウンタによるループ    A loop with an incrementing counter.
10.1.4 減少カウンタによるループ    A loop with a decrementing counter.

A Loop with an Incrementing Counter

増加カウンタの例    Counting pebbles in a triangle.
関数定義の各部分    The parts of the function definition.
関数定義をまとめる    Putting the function definition together.

Loop with a Decrementing Counter

減少カウンタの例    More pebbles on the beach.
関数の各部分    The parts of the function definition.
関数定義をまとめる    Putting the function definition together.

Save your time: dolist and dotimes

dolist マクロ   
dotimes マクロ   

Recursion

10.3.1 ロボットの構築: 隠喩の拡張 (2004/08/08)    Same model, different serial number ...
10.3.2 The Parts of a Recursive Definition    Walk until you stop ...
10.3.4 リストについての再帰 (2004/08/09)    Using a list as the test whether to recurse.
10.3.5 カウンタの代用としての再帰 (2004/08/09)   
10.3.6 condを用いた再帰の例 (2004/08/09)   
10.3.7 再帰関数の典型例 (2004/08/09)    Often used templates.
10.3.8 待機なしでの再帰 (2004/08/10)    Don't store up work ...
10.3.9 待機なしの解決 (2004/08/09)   

Recursion in Place of a Counter

引数が1か2の時 (2004/08/09)   
引数が3か4の時 (2004/08/09)   

Recursive Patterns

再帰のパターン: every (2004/08/10)   
再帰のパターン: accumulate (2004/08/10)   
再帰のパターン: keep (2004/08/10)   

Regular Expression Searches

11.1 sentence-endのための正規表現 (2004/08/10)    The regular expression for sentence-end.
11.2 関数re-search-forward (2004/08/10)    Very similar to search-forward.
11.3 forward-sentence (2004/08/10)    A straightforward example of regexp search.
11.4 forward-paragraph:関数の宝庫 (2004/08/10)    A somewhat complex example.
11.5 専用タグファイルの作成方法 (2004/08/10)    How to create your own `TAGS' table.
11.6 復 習 (2004/08/10)   
11.7 re-search-forwardの演習問題   

forward-sentence

forward-sentence の完全な定義   
while ループ    Two while loops.
正規表現の探索 (2004/08/10)    A regular expression search.

forward-paragraph: a Goldmine of Functions

短縮した forward-paragraph の関数定義    Key parts of the function definition.
let*(2004/08/10)    The let* expression.
先へ進めるwhileループ (2004/08/10)    The forward motion while loop.
Between paragraphs    Movement between paragraphs.
段落の中    Movement within paragraphs.
詰め込み接頭辞なし    When there is no fill prefix.
詰め込み接頭辞あり    When there is a fill prefix.
まとめ    Summary of forward-paragraph code.

Counting: Repetition and Regexps

数の数え上げ   
12.1 関数count-words-region (2004/08/10)    Use a regexp, but find a problem.
12.2 再帰による単語の数え上げ (2004/08/10)    Start with case of no words in region.
12.3 演習問題:句読点の数え上げ   

The count-words-region Function

count-words-region を設計    The definition using a while loop.
12.1.1 count-words-regionの空白に関するバグ (2004/08/10)    The Whitespace Bug in count-words-region.

Counting Words in a defun

分割と克服   
13.1 何を数えるか? (2004/08/10)    What to count?
13.2 単語やシンボルを構成するものは何か? (2004/08/10)    What constitutes a word or symbol?
13.3 関数count-words-in-defun (2004/08/10)    Very like count-words.
13.5 ファイルを探す (2004/08/10)    Do you want to look at a file?
13.6 lengths-list-fileの詳細 (2004/08/10)    A list of the lengths of many definitions.
13.7 別のファイルのdefuns内の単語の数え上げ (2004/08/10)    Counting in definitions in different files.
13.8 別のファイルの再帰による単語の数え上げ (2004/08/10)    Recursively counting in different files.
13.9 グラフ表示用データの準備 (2004/08/10)    Prepare the data for display in a graph.

Count Words in defuns in Different Files

defunsの長さを決定する (2004/08/10)    Return a list of the lengths of defuns.
13.7.1 関数append (2004/08/10)    Attach one list to another.

Prepare the Data for Display in a Graph

13.9.1 リストのソート(整列) (2004/08/10)    Sorting lists.
13.9.2 ファイルのリストの作成 (2004/08/10)    Making a list of files.
13.9.3 関数定義の数え上げ (2004/08/10)   

Readying a Graph

グラフの列を表示   
14.1 関数graph-body-print (2004/08/10)    How to print the body of a graph.
14.2 関数recursive-graph-body-print (2004/08/10)   
14.3 軸表示の必要性 (2004/08/10)   
14.4 演習問題   

Your `.emacs' File

Emacs のデフォルト設定   
15.1 サイト全体の初期化ファイル    You can write site-wide init files.
15.2 defcustom を使って変数を定義 (2004/08/10)    Emacs will write code for you.
15.3 ファイル`.emacs'入門 (2004/08/10)    How to write a .emacs file.
15.4 TextモードとAuto Fillモード (2004/08/10)    Automatically wrap lines.
15.5 メールの別名 (2004/08/10)    Use abbreviations for email addresses.
15.6 Indent Tabsモード(タブによる字下げ) (2004/08/10)    Don't use tabs with TeX
15.7 キーバインド例 (2004/08/10)    Create some personal keybindings.
15.8 キーマップ (2004/08/10)    More about key binding.
15.9 ファイルのロード (2004/08/10)    Load (i.e., evaluate) files automatically.
15.10 オートロード (2004/08/10)    Make functions available.
15.11 簡単な拡張:line-to-top-of-window (2004/08/10)    Define a function; bind it to a key.
15.12 X11の色指定 (2004/08/10)    Colors in version 19 in X.
15.13 `.emacs' ファイルのその他の設定 (2004/08/10)   
15.14 モード行の変更 (2004/08/10)    How to customize your mode line.

Debugging

16.1 debug (2004/08/10)    How to use the built-in debugger.
16.2 debug-on-entry (2004/08/10)    Start debugging when you call a function.
16.3 debug-on-quit(debug) (2004/08/10)    Start debugging when you quit with C-g.
16.4 ソースレベルのデバッガedebug (2006/04/06)    How to use Edebug, a source level debugger.
16.5 デバッグの演習問題   

Handling the Kill Ring

B.1 関数rotate-yank-pointer (2004/08/10)    Move a pointer along a list and around.
B.2 yank (2004/08/10)    Paste a copy of a clipped element.
B.3 yank-pop (2004/08/10)    Insert first element pointed to.

The rotate-yank-pointer Function

rotate-yank-pointer の概略   
B.1.1 rotate-yank-pointerの本体 (2004/08/10)    The body of rotate-yank-pointer.

The Body of rotate-yank-pointer

"エラー"という単語へ脱線    How to mislead humans, but not computers.
if式の偽の場合の動作    The else-part of the if expression.
剰余関数%    The remainder, %, function.
rotate-yank-pointerにおける%の利用    Using % in rotate-yank-pointer.
最後の要素を指す    Pointing to the last element.

yank

引数の渡し方    Pass the argument to rotate-yank-pointer.
負の引数を渡す    Pass a negative argument.

A Graph with Labelled Axes

グラフにレベルをつける例   
C.1 print-graphの変数リスト (2004/08/10)    let expression in print-graph.
C.2 関数print-Y-axis (2004/08/10)    Print a label for the vertical axis.
C.3 関数print-X-axis (2004/08/10)    Print a horizontal label.
C.4 グラフ全体の表示 (2004/08/11)    The function to print a complete graph.

The print-Y-axis Function

ラベルの高さは?    What height for the Y axis?
C.2.1 余りの計算 (2004/08/10)    How to compute the remainder of a division.
C.2.2 Y軸の要素の作成 (2004/08/10)    Construct a line for the Y axis.
C.2.3 Y軸のコラムの作成 (2004/08/10)    Generate a list of Y axis labels.
C.2.4 print-Y-axisの最終直前版 (2004/08/10)    A not quite final version.

The print-X-axis Function

類似点と相違点    Much like print-Y-axis, but not exactly.
C.3.1 X軸の目盛 (2004/08/10)    Create tic marks for the horizontal axis.

Printing the Whole Graph

最終版での変更    A few changes.
C.4.1 print-graphのテスト (2004/08/10)    Run a short test.
C.4.2 単語やシンボルの個数のグラフ (2004/08/11)    Executing the final code.
C.4.3 lambda式:便利な無名性 (2004/08/11)    How to write an anonymous function.
C.4.4 関数mapcar (2004/08/11)    Apply a function to elements of a list.
C.4.5 別のバグ ... もっとも潜在的 (2004/08/11)    Yet another bug ... most insidious.
C.4.6 グラフ (2004/08/10)    The graph itself!