GNU Emacs拡張ガイド

―Emacs Lisp プログラミング

[cover photo]
TOPICS
発行年月日
PRINT LENGTH
272
ISBN
4-90090-019-2
原書
Writing GNU Emacs Extensions
FORMAT
Print
3,080円
この商品は品切れ再入荷未定です

Emacsは、何も拡張しなくても高機能なテキストエディタです。例えば段落を整形したり、何行かまとめて中央にそろえたり、など。さらに、テキストエディタにはできようとは夢にも思わなかったオペレーティングシステムのような機能さえも提供しています。しかしEmacsはそれだけでは終わりません。Emacs Lispを使えばより強力なツールにすることが可能なのです。本書はEmacs Lispを用いてEmacsを自由自在にする拡張するためのガイドです。

目次

はじめに

1章 Emacsをカスタマイズする
        1.1 BACKSPACEとDELETE
        1.2 Lisp
        1.3 キーと文字列
                1.3.1 META(メタ)キー
                1.3.2 キーストロークをコマンドに割り当てる
                1.3.3 キーを文字列で表す
        1.4 C-hには何が割り当てられているのか?
        1.5 C-hには何を割り当てるべきか?
        1.6 Lisp式を評価する
        1.7 apropos

2章 簡単なコマンドを作る
        2.1 ウィンドウを渡り歩く
                2.1.1 other-window-backwardを定義する
                2.1.2 other-window-backwardがパラメータを与える
                2.1.3 引数をオプショナルにする
                2.1.4 プログラムを短くする
                2.1.5 論理式
                2.1.6 1番よいother-window-backward
        2.2 1回に1行のスクロール
        2.3 その他のカーソル移動コマンド
        2.4 シンボリックリンクを上書きする
                2.4.1 フック
                2.4.2 匿名関数
                2.4.3 シンボリックリンクを扱う
        2.5 バッファの切り換えにアドバイスを与える
        2.6 付録:未処理の前置引数

3章 コマンド間の協調
        3.1 きっかけ
        3.2 解決策
                3.2.1 変数の宣言
                3.2.2 ポイントの退避と復活
                3.2.3 ウィンドウの再現
                3.2.4 エラーをわかりやすく
        3.3 解を一般化する
                3.3.1 this-commandを使う
                3.3.2 シンボル属性
                3.3.3 マーカ
        3.4 付録:効率の考察

4章 バッファのなかを検索し変更する
        4.1 現在時刻を書き加える
                4.1.1 ユーザオプションと説明字列
                4.1.2 さらなるアスタリスク魔法
        4.2 ライトスタンプ
                4.2.1 ライトスタンプを更新する
                4.2.2 ライトスタンプを一般化する
                4.2.3 正規表現
                4.2.4 正規表現のクォート
                4.2.5 制限された探索
                4.2.6 さらなる正規表現の能力
        4.3 モディファイスタンプ
                4.3.1 単純な方法その1
                4.3.2 単純な方法その2
                4.3.3 賢い方法
                4.3.4 些細なバグ

5章 Lispファイル
        5.1 Lispファイルを作る
        5.2 ファイルをロードする
                5.2.1 Lispファイルを見付ける
                5.2.2 対話的なロード
                5.2.3 プログラムのロード
        5.3 ファイルのコンパイル
        5.4 eval-after-load
        5.5 ファイルローカル変数
        5.6 付録:セキュリティの見地から考える

6章 リスト
        6.1 リストの概要
        6.2 リストの詳細
        6.3 再帰的なリスト関数
        6.4 繰り返しのあるリスト関数
        6.5 その他の便利なリスト関数
        6.6 破壊的なリスト操作
        6.7 循環リスト

7章 マイナーモード
        7.1 段落の行詰め
        7.2 モード
        7.3 マイナーモードを定義する
        7.4 モードの要点
                7.4.1 まずは素直に
                7.4.2 refillを制限する
                7.4.3 細かな修正
                7.4.4 要らない行詰めを排除する
                7.4.5 行末の空白

8章 評価とエラー処理
        8.1 limited-save-excursion
        8.2 eval
        8.3 マクロ関数
        8.4 バッククォートとアンクォート
        8.5 戻り値
        8.6 そっと止まる
        8.7 ポイントマーカ

9章 メジャーモード
        9.1 名言(quip)ファイル
        9.2 メジャーモードの骨子
        9.3 段落の定義を変える
        9.4 Quipコマンド
        9.5 キーマップ
        9.6 ナローイング
        9.7 派生モード

10章 総合的な例
        10.1 ニューヨークタイムズのルール
        10.2 データ表現
                10.2.1 ベクタ
                10.2.2 行列パッケージ
                10.2.3 行列の一種としてのクロスワード
                10.2.4 コンスセルを使う
                10.2.5 1文字単語
        10.3 ユーザインタフェース
                10.3.1 表示
                10.3.2 カーソルの位置決め
                10.3.3 画面の更新
                10.3.4 ユーザコマンド
        10.4 モードの準備
                10.4.1 キー割り当て
                10.4.2 マウスコマンド
                10.4.3 メニューコマンド
        10.5 認められていない変更を追う
        10.6 バッファをパースする
        10.7 ワードファインダ
                10.7.1 最初の試み
                10.7.2 2つ目の試み
                10.7.3 非同期egrep
                10.7.4 単語の選択
                10.7.5 曖昧な配置
        10.8 終わりに

付録A Lispクイックリファレンス
        A.1 基本事項
        A.2 データ型
                A.2.1 数
                A.2.2 文字
                A.2.3 文字列
                A.2.4 シンボル
                A.2.5 リスト
                A.2.6 ベクタ
                A.2.7 列と配列
        A.3 制御構造
                A.3.1 変数
                A.3.2 逐次実行
                A.3.3 条件判断
                A.3.4 ループ
                A.3.5 関数呼び出し
                A.3.6 文字どおりのデータ
        A.4 コードオブジェクト
                A.4.1 関数
                A.4.2 マクロ関数
付録B デバッグとプロファイル
        B.1 評価
        B.2 デバッガ
        B.3 Edebug
        B.4 プロファイラ
付録C プログラムを共有するために
        C.1 ソースファイルの準備
        C.2 ドキュメント
        C.3 著作権
        C.4 投稿
付録D Emacsの入手方法と作り方
        D.1 パッケージの入手法
        D.2 Emacsの展開、構築、インストール
                D.2.1 展開する
                D.2.2 構築とインストール
あとがき
索引