emacs signal.el : フックの進化形が登場!その中身とは? | MELPA Emacs Lisp Elisp パッケージ インストール 使い方

パッケージ名 signal
概要(原文) Advanced hook
リポジトリ MELPA
取得先 https://github.com/Mola-T/signal
バージョン 20160424.10
関連記事 package:signal

あなたは、hookやadviceを活用していますか?
これらは関数の挙動をあなた色に染めるものです。

さて、、、

Emacsを極めるにはEmacs Lispを学ぶことが不可欠です。
なぜなら、hookやadviceに適切なコードを設定することでEmacsを強力にカスタマイズできるからです

たとえば、ファイルを開いたり保存したりするときに自動的にやって欲しい処理を記述できたりします。
だからこそ、Emacs Lispを学んでいれば作業を効率化できるんですね。

ということで、、

この signal パッケージはhookの進化形ともいえるものです。
今回はsignalをhookと同じように使う方法を示します。
進化形なのですから、元の機能をエミュレートすることなど簡単なことなのです。

hookとsignalの対応関係は以下のようになっています

定義 defvar(defcustom) defsignal
呼び出し run-hooks signal-emitb
追加 add-hook signal-connect
削除 remove-hook signal-disconnect

明日はsignalがhookとは違うことを示します!

signal インストール

このパッケージはmelpaにあるので パッケージの初期設定 を行ってください。

M-x package-refresh-contents
M-x package-install signal

使用例

(require 'signal)
;;; 定義
(defvar my-hook nil
  "Test hook")
(defsignal my-signal
  "Test signal")
;;; 元の関数を呼び出す
(defun test-func ()
  (with-output-to-string
    (princ "Hook")
    (run-hooks 'my-hook)
    (princ "/")
    (princ "Signal")
    (signal-emitb 'my-signal)
    (princ "/")))
(test-func)                             ; => "Hook/Signal/"

;;; 関数を追加する
(setq test-count 0)
(defun print-count ()
  "呼ばれた回数を表示する"
  (princ (cl-incf test-count)))
;; hookとは違い、signalは追加された数だけ同じ関数が実行される
(add-hook 'my-hook 'print-count)
(signal-connect :signal 'my-signal :worker 'print-count)
(add-hook 'my-hook 'print-count)
(signal-connect :signal 'my-signal :worker 'print-count)
(test-func)                             ; => "Hook1/Signal23/"
;;; 関数を削除する
(remove-hook 'my-hook 'print-count)
(signal-disconnect 'my-signal 'print-count)
(test-func)                             ; => "Hook/Signal/"

本サイトは、広大なるEmacs界の道具としてあなたの役に立ちたいという純粋な奉仕で運営しています。 掲載しているコードは複写・転載など自由に使っていただいて構いません。 改良・MELPAパッケージ化していただけると最高に嬉しいです。

手元で検索できるよう文書全体をGitHubに置いています。 辞書代わりにしていただければ幸いです。

$ git clone --depth=1 git://github.com/rubikitch/daily-emacs-jp.git

もし、うまく動作しないのならば pull-request / rubikitch __at__ ruby-lang __dot__ org までメールしてください。


まぐまぐ殿堂入りメルマガ+無制限メール相談+elisp/文書添削をやっています。
Emacsユーザに特化した100%目標達成スキル
何事にも屈しない鉄璧のマインド
理想の自分になる方法
など豪華特典満載!
ぜひ入塾してEmacs力だけでなくてQOLも上げていきましょう。初月無料月々527円です。

このエントリーを含むはてなブックマーク Buzzurlにブックマーク livedoorクリップ Yahoo!ブックマークに登録

タグ

トラックバック&コメント

この投稿のトラックバックURL:

コメントをどうぞ

post date*

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

このページの先頭へ