0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Emacs Lisp 超初心者がコマンドを作ってみる 〜関数をコマンドにする〜

Posted at

前回までは関数として実行してきました。

今回はこれまで作ってきた関数をコマンドに化けさせます。

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 です。

実行結果は前回と変わらないので割愛させていただきます。

今回はここまで。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?