前回までは関数として実行してきました。
今回はこれまで作ってきた関数をコマンドに化けさせます。
interactive
関数に (interactive) と書くとコマンドに化けます。本当です信じて下さい。
これで関数はコマンドになります。コマンドになると、皆さんおなじみ M-x で呼び出せたり、キーバインドできるようになります。
po-previous-msgid.el
(defcustom po-ediff-previous-msgid-buffer-a-name "*pepm-previous-msgid*"
"po-ediff-previous-msgid BUFFER A name. pepm is PoEdiffPreviousMsgid"
:type 'string
:require 'po-mode
:group 'po)
(defcustom po-ediff-previous-msgid-buffer-b-name "*pepm-now-msgid*"
"po-ediff-previous-msgid BUFFER A name. pepm is PoEdiffPreviousMsgid"
:type 'string
:require 'po-mode
:group 'po)
(defun po-ediff-previous-msgid ()
"Ediff previous msgid (marked #| ) and msgid."
(interactive)
(po-find-span-of-entry)
(let (
(oldbuf (current-buffer))
(msgid (po-get-msgid))
(untranslated-regions (po-previous-untranslated-regions))
)
(save-current-buffer
(set-buffer (get-buffer-create
po-ediff-previous-msgid-buffer-a-name))
(erase-buffer)
(dolist (region untranslated-regions)
(insert-buffer-substring oldbuf (car region) (cdr region))
)
(restore-buffer-modified-p nil))
(save-current-buffer
(set-buffer (get-buffer-create
po-ediff-previous-msgid-buffer-b-name))
(erase-buffer)
(insert msgid)
(setq buffer-read-only t))))
登録
C-M-x
実行(呼び出し)
コマンドでは実行方法が関数と変わります。 関数は M-: (eval):(po-ediff-previous-msgid) でしたが、コマンドでは M-x po-ediff-previous-msgid です。
実行結果は前回と変わらないので割愛させていただきます。
今回はここまで。