shut-up 20150423.522(in MELPA)
Shut up would you!

概要

Emacsはたまに饒舌が過ぎることがあります。

message 関数や write-region 関数、 load 関数は
エコーエリア にメッセージを出力します。

しかし、メッセージを抑制したいときがあります。

たとえば一時ファイルの読み書きでは
黙っててほしいものです。

そこで shut-up というマクロを使います。

使い方は簡単で黙らせたいコードを (shut-up 〜 ) で囲むだけです。

すると、開発版Emacsで導入された inhibit-message = t に設定され、
message、write-region、load関数がメッセージを表示しなくなります。

また、 standard-output への出力もなくなります。

実際はメッセージを消しているのではなくて、
特定のバッファにリダイレクトしているだけですが、
shut-up-current-output 関数で蓄えられたメッセージを得られます。

;;; 何も表示しない
(require 'shut-up)
(shut-up
  (message "test")                      ;このメッセージが蓄積される
  (with-temp-buffer
    (insert "a silent message")
    (write-region nil nil  "/tmp/silent-message.txt") ;黙って保存
    (shut-up-current-output)))          ; => "test\n"

shut-up.el は短いものの 一時的な関数再定義 をする
巧妙なテクニックを使っているのでコードを読んでみると
elispの勉強になるかと思います。

インストール

パッケージシステムを初めて使う人は
以下の設定を ~/.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/")))

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

M-x package-install shut-up

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

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


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