« Navi2ch でインラインに画像を表示する (Referer もつける) | トップページ | Firefox でココログを印刷しようとすると本文が1ページ目しか表示されない »

2006年3月15日 (水)

Mew でパスワード入力時 C-g を押しても止まってくれない

普通 Mew の Summary では 'i' [mew-summary-retrieve] を押したあと、パスワードの入力を求められる。私は複数の case を使い分けているのでこの入力を'C-g' [keyboard-quit] で止めようとすることがしばしばあるが、残念ながら止まってくれない。

特に今の Mew は +queue を flush する際に draft の case を使ってくれないので、case ごとに SMTP サーバを切り換えたりする私にとっては、'C-g' で +queue が flush されるのを阻止できないのが非常に不満だった。

この原因の一つは、Mew が inhibit-quit を真にして他のバッファでエディット中に'C-g' が押されてもバックグラウンドプロセスが影響を受けないようにしていることにある。mew-read-passwd を使うときには一時的に inhibit-quit を nil にして 'C-g' を使えるようにしているのだが、その返り値が 'C-g' を押された結果の空文字列であったとしても、その後の関数内で処理を怠っているのだ。

原因のもう一つは、flush が処理が完了してなかろうとも実行されてしまうことにある。

そこで、少しダーティだが、mew-read-passwd に advice して 'C-g' が押されているかもしれないなら大域脱出し、process 終了後の hook を使い、処理が完了していなければflush しないようにした。以下のようにすれば良いようだ。

;; パスワードが入力されなかった場合、+inbox フォルダのプロセスを kill し、
;; エラーを signal する。
(defadvice mew-read-passwd
  (around mew-read-passwd-enable-quit (prompt) activate)
  (let ((pass ad-do-it))
    (when (or (null pass) (string= pass ""))
      (save-excursion
        (set-buffer (mew-inbox-folder))
        (when mew-summary-buffer-process
          (mew-summary-kill-subprocess)))
      (error "Empty Password or Keyboard quit."))))

;; 実行時スコープが甘い Lisp だからこそできる荒業
(add-hook 'mew-pop-sentinel-hook
          (lambda ()
            (if (or error (not done))
                (setq flush nil))))


副作用としてパスワードに空文字列が使えなくなるが、多くの場合問題ないものと思う。
更新: 2006-03-15
初公開: 2006年03月15日 13:37:02
最新版: 2006年03月18日 10:53:18

2006-03-15 13:36:57 (JST) in Emacs/Meadow | | コメント (0) | トラックバック (2)

批評や挨拶のためのネットコミュニティ

  • はてなブックマーク(って何?) このエントリーをはてなブックマークに追加 このエントリーを含むはてなブックマーク このエントリーを含むはてなブックマーク
  • Twitter (って何?)

トラックバック


トラックバックのポリシー

他サイトなどからこの記事に自薦された関連記事(トラックバック)の一覧です。
» JRF のソフトウェア Tips:Mew でパスワード入力時 C-g を押しても止まってくれない (この記事)

» MEW from AVの

MEW 続きを読む

受信: 2006-04-04 02:21:41 (JST)

このサイトの管理について主に外部との連携に関するポリシーを述べます。 続きを読む

受信: 2006-04-04 10:24:36 (JST)

コメント

コメントを書く



(メールアドレス形式)


※匿名投稿を許可しています。ゆるめのコメント管理のポリシーを持っています。この記事にまったく関係のないコメントはこのリンク先で受け付けています。
※暗号化パスワードを設定すれば、後に「削除」、すなわち JavaScript で非表示に設定できます。暗号解読者を気にしないならメールアドレスでもかまいません。この設定は平文のメールで管理者に届きます。
※コメントを書くために漢字[かんじ]でルビが、[google: キーワード] で検索指定が使えます。


ランダムことわざ: 七転び八起き。