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円です。
タグ
2016/08/14 | コメント/トラックバック(0) | トラックバックURL |
カテゴリー:Emacs Emacs Lisp