elmacro 20170312.356(in MELPA)
Convert keyboard macros to emacs lisp

概要

キーボードマクロ使っていますか?

キーボードマクロは一連のキー操作を覚えて
それを何度でも再現できるようにする仕組みです。

F3でマクロ記録開始→覚える操作→F4で記録終了
という流れです。

以後F4を押せば最後に記録したマクロを実行できます。

これだけだとキーボードマクロは1つしか使えないと思いがちですが、
M-x name-last-kbd-macro でキーボードマクロに名前をつければ
コマンドとして定義できます。

M-x insert-kbd-macro で名前をつけたキーボードマクロの内容を
Lisp式として書き下せるので、これをinit.elに貼り付ければ
Emacsを再起動しても使えます。

それをさらに便利にするのがこのelmacro.elです。

elmacro.elはキーボードマクロをEmacs Lispに変換します。

インストール

パッケージシステムを初めて使う人は
以下の設定を ~/.emacs.d/init.el の
先頭に加えてください。

(package-initialize)
(setq package-archives
      '(("gnu" . "http://elpa.gnu.org/packages/")
        ("melpa" . "http://melpa.org/packages/")
        ("org" . "http://orgmode.org/elpa/")))

初めてelmacroを使う方は
以下のコマンドを実行します。

M-x package-install elmacro

アップグレードする方は、
以下のコマンドでアップグレードしてください。
そのためにはpackage-utilsパッケージが必要です。

M-x package-install package-utils (初めてアップグレードする場合のみ)
M-x package-utils-upgrade-by-name elmacro

注意: [2014-08-28 Thu 10:18]追記

mewとの相性が悪いようです。

elmacro-modeを有効にした状態だと、
mewでSPCを押してもスクロールしません。

設定 140828091038.elmacro.el(以下のコードと同一)

(require 'elmacro)
(elmacro-mode)

実行方法

$ wget http://rubikitch.com/f/140828091038.elmacro.el
$ emacs -Q -f package-initialize -l 140828091038.elmacro.el

使用例

たとえば現在行を消してキルリングに入れるにはC-a C-k C-kを使います。

これをキーボードマクロとして記憶させるには
F3 C-a C-k C-k F4
と操作します。

コマンドに変換するにはここで M-x elmacro-show-last-macro を実行します。

すると、Emacs Lisp化されたキーボードマクロがポップアップします。

現時点では「(kmacro-end-or-call-macro nil)」の行が入ってくるバグがあるので
この部分は削除してください。

(defun kill-current-line ()
  "現在行を削除する"
  (interactive)
  (move-beginning-of-line 1)
  (kill-line nil)
  (kill-line nil))

なお、insert-kbd-macroではこのような定義になります。

(fset 'kill-current-line "\C-a\C-k\C-k")

20140828091640.png
Fig1: M-x elmacro-show-last-macro

本日もお読みいただき、ありがとうございました。参考になれば嬉しいです。