|
|
Emacs Lisp
マクロの基本
Emacs Lisp の特徴は全ての記述が二つの括弧 () に囲まれたリストとして書かれることです。
括弧中にはいくつかの要素が書かれますが、左端が手続名、その後に任意の個数の引数がきて、
このリスト全体が一つの値を持ちます。
例えば (+ 1 2) は 1 + 2 = 3 という値をもっています。
マクロを実行することを評価(Evaluation)ともいい、簡単な方法は、先ほどやったように、
) の後ろにカーソルを持っていき、C-x C-e とすることです(Ctrl を押しながら x を押すのを C-x と書く)。
ログの一部を削除する例
以下は、NIFTY-Serve の過去ログの形式です。
- FGALTS MES(13):情報整理|パーソナル文書処理システム構築 96/07/19 -
00045/00046 KFF03452 閑舎 Elispのお勉強
(13) 96/07/18 20:09
皆さん、こんにちは。
...
00046/00046 KFF03452 閑舎 【住所録】を作る
(13) 96/07/18 20:10
...
00047/00049 GFC12345 ほげ太 Re:【住所録】を作る
記事のどれかを読んでいて、削除したい記事なら、その記事の任意の場所で、
以下のキイ M-n を押すと実行できます(Alt を押しながら n)。
やはり復活したいとなったら、すぐに C-x u を押します(C-x の後 Ctrl から手を離して u)。
(global-set-key "\M-n" 'kill-nifty-comment)
(defun kill-nifty-comment ()
"Cut a current comment in a nifty global log."
(interactive)
(let ((str "^-.[FS][A-Z0-9]+.+MES\|^[0-9][0-9]+/[0-9]"))
(end-of-line)
(if (re-search-forward str (point-max) t)
(beginning-of-line)
(goto-char (point-max)))
(push-mark)
(if (re-search-backward str (point-min) t)
(beginning-of-line)
(goto-char (point-min)))
(kill-region (region-beginning) (region-end)))
)
登録して使えるようにするには、Emacs 内で、(global-set-key ...) の ) の後ろで C-x C-e とし(関数をアクセスキーに結びつける)、
最後の行の ) の後ろで C-x C-e とします(関数の登録)。
|