EmacsのLisp本をまっていた「Emacs Lispテクニックバイブル」発売

emacs
るびきち先生著書の最新作が発売されます。今回はemacsのLispにフォーカスした書籍のようです。「emacs使いならLisp使えて当然だよね−」といわれても差し支えないように押さえておきたい書籍です。

スポンサーリンク

目次

1章 Emacs Lisp始めの一歩
1-1 ようこそEmacs Lispの世界へ
1-1-1 Emacs Lispとは
1-1-2 Emacs Lisp習得のメリット・目的
1-1-3 Emacs Lispが得意なこと・不得意なこと
1-2 Emacs Lispを書くための設定
1-2-1 auto-install.elをインストールする
1-2-2 必須ファイルのインストール
1-2-3 設定
1-3 文法
1-3-1 括弧だらけの文法
1-3-2 構成要素
1-3-3 コメント
1-4 Emacs Lispプログラム実行の仕組み
1-4-1 フォーム
1-4-2 評価とは
1-4-3 関数呼び出し
1-4-4 評価の具体例
1-4-5 クォート
1-4-6 明確性
1-5 評価の方法
1-5-1 いろいろな評価の方法
1-5-2 入力補完
1-5-3 コマンド呼び出し
1-5-4 ミニバッファにフォームを入力して評価する
1-5-5 対話的に評価する
1-5-6 メモファイルにてフォームを評価し,結果を書き込む
1-6 数値
1-6-1 基本的な演算
1-6-2 比較
1-6-3 整数の範囲
1-6-4 浮動小数点数
1-7 文字列
1-7-1 文字列の例
1-7-2 バックスラッシュ記法
1-7-3 文字
1-7-4 書式文字列
コラム いろいろなLisp
まとめ
2章 Emacs Lispの基礎
2-1 Emacs Lispプログラムの編集方法
2-1-1 S式を操作するコマンド
2-1-2 インデントを整える
2-1-3 paredit.elを使用する
2-2 シンボルとオブジェクト
2-2-1 シンボル
2-2-2 シンボルと変数・関数
2-2-3 代入
2-2-4 データ型
2-2-5 関数名・変数名の命名
2-3 ローカル変数
2-3-1 ローカル変数を定義する
2-4 コンスセル・リスト・ベクタ
2-4-1 コンスセル
2-4-2 リスト
2-4-3 コンスセルとリストとnil
2-4-4 ベクタ
2-4-5 配列としての文字列
2-5 同一性と同値性
2-5-1 2つの「同じ」
2-5-2 同値比較
2-5-3 同一比較
2-6 条件分岐
2-6-1 真偽値
2-6-2 条件付き実行
2-6-3 条件分岐
2-6-4 複数の式をひとまとめにする
2-6-5 if+prognをすっきり書く
2-6-6 多重条件分岐
2-6-7 論理式
2-7 ループ
2-7-1 条件によるループ
2-7-2 リストの各要素のループ
2-8 正規表現
2-8-1 正規表現とは
2-8-2 基本的なメタ文字
2-8-3 バックスラッシュ付きのメタ文字
2-8-4 正規表現の例
2-8-5 正規表現と文字列表現
2-8-6 正規表現にマッチするか確かめる関数
2-8-7 正規表現に一致した文字列を得る
2-8-8 M-x re-builderで正規表現を対話的に組み立てる
2-9 関数定義
2-9-1 関数定義の方法
2-9-2 関数定義の意義
2-9-3 省略可能引数
2-9-4 可変長引数
2-9-5 無名関数
2-10 コマンド定義
2-10-1 はじめての自作コマンド
2-10-2 interactive宣言
2-10-3 キーボードマクロをコマンドとして使えるようにする
2-11 ロード
2-11-1 Lispファイルの置いているディレクトリを指定する
2-11-2 Lispファイルをロードする
2-11-3 Lispファイルを1度だけロードする
2-12 バイトコンパイル
2-12-1 バイトコンパイルとは
2-12-2 Lispファイルをバイトコンパイルする
2-12-3 保存時に自動バイトコンパイル
2-13 スタイル
2-13-1 コメントの付け方
2-13-2 インデント
まとめ
3章 バッファ・ファイル
3-1 バッファ
3-1-1 テキストを入れる器
3-1-2 バッファとファイル
3-1-3 表示用・作業用バッファ
3-1-4 カレントバッファとは
3-1-5 バッファオブジェクトを得る
3-1-6 カレントバッファを切り換える
3-2 バッファの作成・削除
3-2-1 バッファを作成するケース
3-2-2 バッファを新規作成する
3-2-3 ファイルをバッファに読み込む
3-2-4 バッファを削除する
3-3 バッファ出力
3-3-1 出力関数
3-3-2 文字列に出力する
3-3-3 バッファに文字列を出力して表示する
3-4 バッファ情報の取得
3-4-1 一時的にカレントバッファを切り換える
3-4-2 バッファ名
3-4-3 メジャーモード
3-4-4 バッファローカル変数
3-4-5 ポイントの情報を得る
3-5 バッファ編集
3-5-1 バッファに書き込む内容を得る
3-5-2 カーソル移動
3-5-3 削除
3-5-4 一時的な状態変更
3-5-5 検索
3-5-6 置換
3-5-7 キルリング
3-5-8 編集領域を限定する
3-6 ミニバッファ
3-6-1 文字列を読み込む
3-6-2 補完付き文字列読み込み
3-6-3 二択選択
3-6-4 その他の入力関数
3-6-5 複雑なinteractive指定
3-7 リージョンとマーカー
3-7-1 リージョン
3-7-2 マーカー
3-8 ファイル
3-8-1 パス名操作
3-8-2 ディレクトリ内のファイルを得る
3-8-3 ファイルテスト
3-8-4 バッファにファイルの内容を挿入する
3-8-5 保存する
コラム ファイルサイズ・バッファサイズ・バイト数
まとめ
4章 ウィンドウ
4-1 ウィンドウの分割
4-1-1 ウィンドウとフレーム
4-1-2 分割する
4-1-3 分割されているかを確かめる
4-2 ウィンドウの削除
4-2-1 選択されたウィンドウを削除する
4-2-2 他のすべてのウィンドウを削除する
4-3 ウィンドウの選択
4-3-1 ウィンドウを選択する
4-3-2 他のウィンドウを選択する
4-4 ウィンドウとバッファ
4-4-1 ウィンドウに表示中のバッファを得る
4-4-2 バッファを表示しているウィンドウを得る
4-5 バッファの表示
4-5-1 バッファを切り換える
4-5-2 ユーザに読ませる目的でバッファを表示する
4-5-3 表示方法をカスタマイズする
4-6 ウィンドウとカーソル
4-6-1 ウィンドウ上のポイント
4-6-2 現在行の表示位置を設定する
4-7 ウィンドウの大きさ
4-7-1 高さと幅を得る
4-7-2 ウィンドウを広げる・縮める
4-7-3 ウィンドウを適切な大きさにする
4-8 ウィンドウ構成
4-8-1 ウィンドウ構成を保存・復元する
4-8-2 表示関数を無視する
まとめ
5章 様々な関数
5-1 数値
5-1-1 四捨五入・切上げ・切り捨て
5-1-2 乱数
5-2 文字列
5-2-1 部分文字列
5-2-2 文字列を分割する
5-2-3 大文字小文字を変換する
5-2-4 正規表現置換を行う
5-3 シンボル
5-3-1 シンボル・文字列を変換する
5-3-2 シンボルをポインタとして使う
5-4 リスト
5-4-1 同一要素から構成されるリストを作成する
5-4-2 carとcdrの連続適用の省略形
5-4-3 リストにリストを追加する
5-4-4 リストの要素をひっくり返す
5-4-5 ソートを行う
5-4-6 要素をリストから削除する
5-5 ベクタ
5-5-1 同一要素から構成されるベクタを作成する
5-5-2 シーケンスを結合したベクタを作成する
5-6 シーケンス
5-6-1 シーケンスをコピーする
5-6-2 シーケンスの長さを得る
5-7 型変換
5-7-1 型変換関数一覧
まとめ
6章 Emacs Lisp応用
6-1 Emacsオンラインヘルプ
6-1-1 Emacs内の検索エンジンを利用する
6-1-2 関数・変数を調べる
6-1-3 シンボルを検索する
6-1-4 定義を調べる
コラム anything.elを使う
6-2 連想リスト
6-2-1 連想リストとは
6-2-2 キーからペアを得る
6-2-3 値からをペアを得る
6-2-4 キーから値を得る
6-2-5 正規表現で場合分けをする
6-3 ハッシュテーブル
6-3-1 ハッシュテーブルとは
6-3-2 ハッシュテーブルを作成する
6-3-3 ハッシュテーブルを使う
6-3-4 キー・値のリストを得る
6-4 属性リスト
6-4-1 属性リストとは
6-4-2 シンボルと属性リスト
6-5 関数プログラミング
6-5-1 関数オブジェクト
6-5-2 関数オブジェクトとシンボル
6-5-3 リストの各要素を関数の引数にする
6-5-4 リストの各々の要素を処理する
6-5-5 リストの各要素をつなげた文字列を作成する
6-5-6 動的に関数を呼び出す
6-5-7 複数の関数を連続実行する
6-5-8 成功・失敗するまで関数を連続実行する
6-6 エラー処理
6-6-1 エラーメッセージ・エラーシンボル・原因
6-6-2 エラーメッセージを表示して終了する
6-6-3 シグナルを発信する
6-6-4 エラーを無視する
6-6-5 エラーを捕捉する
6-6-6 後片付けをする
6-7 正規表現応用
6-7-1 文字列の集合にマッチする正規表現を作成する
6-7-2 S式から正規表現を作成する
6-8 評価機
6-8-1 readとeval
6-8-2 オブジェクトを永続化する
6-9 マクロ定義
6-9-1 マクロとは
6-9-2 マクロのタイプ
6-9-3 マクロとバイトコンパイル
6-9-4 バッククォート
6-9-5 マクロを定義する
6-9-6 マクロ制御構造のインデントを整える
6-9-7 評価回数と変数束縛の問題
6-10 互換性確保
6-10-1 Emacsのバージョンを得る
6-10-2 不足している関数を補う
6-10-3 プラットフォームを得る
コラム elisp勉強法
まとめ
7章 Common Lispマクロ
7-1 (require ‘cl)の是非
7-1-1 cl.elとは
7-1-2 (require ‘cl)は禁止されている
7-1-3 実際のところ
7-1-4 本書では
7-2 関数・マクロの仮引数の拡張
7-2-1 リスト構造を分解する
7-2-2 関数定義を拡張する
7-2-3 マクロ定義を拡張する
7-3 汎変数
7-3-1 setqを拡張する
7-3-2 letを拡張する
7-3-3 インクリメント・デクリメントを行う
7-3-4 リスト要素を追加・削除する
7-4 クロージャー
7-4-1 ダイナミックスコープとレキシカルスコープ
7-4-2 レキシカルスコープを使う
7-4-3 クロージャーを使ってムダなグローバル変数を減らす
7-5 一時的な関数定義
7-5-1 一時的な関数再定義を行う
7-5-2 ローカル関数を定義する
7-5-3 letfでも関数再定義を行う
7-5-4 アドバイスされた関数に対応する
7-6 値による場合分け
7-6-1 式の値による場合分けを行う
7-6-2 型・数値の範囲による場合分けを行う
7-7 ブロックとジャンプ
7-7-1 レキシカルスコープの非局所脱出メカニズム
7-7-2 暗黙のブロック
7-7-3 ダイナミックスコープの非局所脱出メカニズム
7-8 構造体
7-8-1 構造体とは
7-8-2 構造体を定義する
7-8-3 構造体のインスタンスを作成する
7-8-4 構造体のメンバにアクセスする
7-9 loopマクロ
7-9-1 loopマクロとは
7-9-2 loopマクロの構造
7-9-3 典型的なパターン
7-9-4 もう少し数値ループ
7-9-5 もう少し繰返し節
7-9-6 もう少し演算節
7-9-7 節の解釈のされ方と並列ループ
7-9-8 ローカル変数作成
7-9-9 事前処理と事後処理
7-9-10 条件分岐
7-9-11 ループからの脱出
コラム Common Lispのシーケンス関数
まとめ
8章 テスト・デバッグ
8-1 Emacsを呼び出してテスト
8-1-1 まっさらな環境でEmacsを立ち上げる
8-1-2 save-load-path.elのインストール
8-1-3 emacs-testスクリプトを作成する
8-2 ユニットテスト
8-2-1 ユニットテストとは
8-2-2 el-expectations.elのインストール
8-2-3 ユニットテストの構造
8-2-4 簡単なユニットテストを書く
8-2-5 まっさらな環境でユニットテストを実行する
8-2-6 スタブを使う
8-2-7 モックを使う
8-3 関数のトレース
8-3-1 トレーサとは
8-3-2 トレーサを使う
8-3-3 再帰呼び出しとトレーサ
8-3-4 複数の関数をまとめてトレースする
8-4 デバッガ
8-4-1 エラー時にデバッガを開くようにする
8-4-2 エラーを起こしてデバッガを開く
8-4-3 バイトコンパイルとデバッガ
8-4-4 デバッガでの操作
8-5 デバッグ(edebug)
8-5-1 edebugとは
8-5-2 edebugを有効・無効にする
8-5-3 基本的な使い方
8-5-4 ブレークポイント
8-5-5 評価リスト
8-6 ベンチマーク
8-6-1 実行時間を計測する
まとめ
9章 Emacsの挙動を変更する
9-1 キーマップ設定
9-1-1 キーを割り当てる
9-1-2 キー割り当てを簡潔に記述する
9-1-3 キーシーケンスを割り当てる
9-1-4 プレフィクスキーを新設する
9-1-5 キーマップを作成する
9-2 特殊なキー割り当て方法
9-2-1 one-key
9-2-2 key-chord
9-3 フック
9-3-1 フックとは
9-3-2 フックを登録・削除する
9-3-3 フックを実行させる
9-4 アドバイス
9-4-1 アドバイスとは
9-4-2 アドバイスを定義する
9-4-3 beforeアドバイス
9-4-4 引数へのアクセス
9-4-5 afterアドバイス
9-4-6 aroundアドバイス
9-4-7 アドバイスを配置する
9-4-8 有効・無効を切り換える
まとめ
10章 モード作成
10-1 メジャーモードの作成方法
10-1-1 まっさらなメジャーモードを作成する
10-1-2 メジャーモードに肉付けをしていく
10-1-3 ファイルとメジャーモードを関連付ける
10-2 テキストに色付けをするためのメジャーモード作成
10-2-1 独自フォーマットのテキストをメジャーモード化する
10-2-2 UNIXの設定ファイルを自動認識させる
10-2-3 ジェネリックモードを作成する
10-3 font-lockによる色付け
10-3-1 font-lockとは
10-3-2 ジェネリックモードで色をつける
10-3-3 もう少し踏み込んだ色つけをする
10-3-4 派生モードから色をつける
10-4 マイナーモード
10-4-1 マイナーモードとは
10-4-2 マイナーモードとキー
10-4-3 マイナーモードを定義する
10-4-4 ローカルマイナーモード
10-4-5 グローバルマイナーモード
10-5 別名定義
10-5-1 互換性を保つ
10-5-2 関数の別名定義を行う
10-5-3 変数の別名定義を行う
まとめ
11章 外部プログラムとの協調
11-1 外部プログラムの実行
11-1-1 外部プログラム活用のメリット
11-1-2 シェルコマンドを実行する
11-1-3 Emacsと同時にシェルコマンドを実行する
11-2 外部プログラムの検索
11-2-1 外部プログラムサーチパスを利用する
11-2-2 外部プログラムの存在確認をする
11-3 非同期プロセス
11-3-1 非同期プロセスとは
11-3-2 非同期プロセスを立ち上げる
11-3-3 非同期プロセス終了時に処理を行わせる
11-3-4 プロセスに文字列を送信する
11-3-5 リファクタリングを行う
11-4 外部プログラムの実行
11-4-1 よく使うプログラムを登録する
11-4-2 シェルコマンドを実行する関数を定義する関数を定義する
11-5 eshellのススメ
11-5-1 eshellとは
11-5-2 eshellを起動する
11-5-3 eshellのコマンド解釈
11-5-4 リダイレクトを行う
11-5-5 eshellとEmacs Lisp
11-5-6 エイリアス機能を利用する
まとめ
12章 非同期プログラミング
12-1 非同期プログラミングの概念
12-1-1 Emacs Lispはシングルスレッド
12-1-2 Emacsはマルチスレッド
12-1-3 プロセスの例
12-1-4 ネットワークの例
12-2 タイマー
12-2-1 未来に関数を呼び出す
12-2-2 アイドルタイマーを使う
12-2-3 タイマーを管理する
12-2-4 次に実行する関数を指定する
12-3 deferred.elで非同期プログラミング
12-3-1 deferred.elとは
12-3-2 deferred.elのインストール
12-3-3 deferred.elの基本
12-3-4 遅延実行の例
12-3-5 プロセス
12-3-6 M-!の置き換えを行う
12-3-7 ネットワーク
まとめ
13章 anything.elで簡単アプリケーション作成
13-1 anything.elの正体
13-1-1 anything.elとは
13-1-2 インストール
13-1-3 候補の絞り込み
13-1-4 複数のアクション
13-1-5 いろいろなanythingコマンドを試す
13-2 anythingコマンドの作成
13-2-1 どういう情報源が定義されているかを調べる
13-2-2 anythingコマンドを作成する
13-3 情報源の作成
13-3-1 情報源作成の流れ
13-3-2 候補のリストを作成する
13-3-3 アクションを設定する
13-3-4 複数のアクションを設定する
13-3-5 バッファの各行を候補にする
13-3-6 ファイルの各行を候補にする
13-3-7 型から選ぶ
13-3-8 Migemoに対応させる
13-4 実例
13-4-1 M-x anything-world-time
13-4-2 M-x anything-filelist
13-4-3 M-x anything-timers
13-4-4 M-x anything-manage-advice
13-5 応用anythingプログラミング
13-5-1 anything関数
13-5-2 型のアクションを変更する
13-5-4 プラグインを作成する
まとめ

るびきち¥ 3,129

個人的に

今どきの書籍でLispについて書かれている物が少ないのでこれを機にLispやってみよう。と思う人は絶好のチャンス。やっぱり、るびきち先生なので、anythingについても後半に書かれております。モダンなemacs使いは押さえておきたいところです。
前回の書籍もオススメですが、時代は移り変わって、スタンダードな設定などが今は変わっている部分などがあります。今現在はどうなのか?を追いつつ読めば、こちらもオススメです。

るびきち¥ 2,919

ネタ

これだけ言っておきたい。「Vim Scriptテクニックバイブル」はまだですか?

タイトルとURLをコピーしました