[Mew-dist 05787] Re: keyの定義

Shun-ichi GOTO gotoh at example.com
1998年 8月 1日 (土) 17:24:49 JST


後藤@太陽計測です

>>>>> From: SUGITA Toshinori <sugita at example.com>
> > summary 内で 1 を打つと Buffer is read-only: #<buffer +inbox> と
> > 出てしまい、refile mark ができません。
> >
> > 何が悪いのでしょうか?
> 
> またまた実験してみました。
> 確かにうまくいかないですね。。。なんでだろう???
> eval-expressionで直接実行するとうまく行くんですけど、、、

... is read-only ... というのは、"1"のキーにコマンドが定義できていない
から出ているのだと思います。

件のコードは、なんだかつづりも間違ってます(spacial<>special)し、
defun が引数無しだし、でよろしくありません。
でもちょっと直して試してみたら、OKでしたよ。

(defun refile-special ()
  (interactive)
  (mew-summary-refile '("+hogehoge") nil))

(define-key mew-summary-mode-map "1" 'refile-special)

これをもう少し延長して"One Key Refile"というアイディアもいけますね。
例えば10個の数字キーにリファイル先を定義できるようにするとか。
試しに作ってみたものを添付します。
#何かの役に立つかもね。

--- Regards,
 Shun-ichi Goto  <gotoh at example.com>
   R&D Group, TAIYO Corp., Tokyo, JAPAN

-------------- next part --------------
;; -*- Emacs-Lisp -*-
;;
;; mew-onekey.el -- [Mew] Refile message with one key.
;; $Revision: 1.1 $

;; Author: Shun-ichi GOTO <gotoh at example.com>
;; Create: Sat Aug 01 16:37:00 1998
;; Keyword: mew, mail

;;; Commentary:

;; Refile message with one key-stroke
;; 
;; To use this, define mew-onekey-refile-alist
;; and load this, then M-x mew-onekey-refile-setup
;;
;; Ex. in ~/.emacs
;;
;; (setq mew-onekey-refile-alist
;;   '(("2" "+hoge")
;;     ("5" "+foo")
;;     ("6" "+bar")
;;     ("0" "+inbox" "+kero"))
;; (load "mew-onekey-refile")
;; (add-hook 'mew-summary-mode-hook 'mew-onekey-refile-setup)
;;

;;; Code:

(defvar mew-onekey-refile-alist
  nil
  "Alist of number and folders to refile with one-key.
For example:
  '((\"2\" \"+hoge\")
    (\"5\" \"+foo\")
    (\"6\" \"+bar\")
    (\"0\" \"+inbox\" \"+kero\"))")

(defun mew-summary-onekey-refile ()
  (interactive)
  (mew-onekey-refile (this-single-command-keys)))

(defun mew-onekey-refile (key)
  (let* ((flds (cdr (assoc key mew-onekey-refile-alist)))
	 num str)
    (if (null flds)
	() ;; do nothing
      (save-excursion
	(mew-summary-goto-message)
	(setq num (mew-summary-message-number)
	      str (mapconcat '(lambda (x) x) flds ", ")))
      (mew-summary-refile flds)
      (message "Message %s is refiled to %s" num str))))


(defun mew-onekey-refile-setup ()
  (interactive)
  (let ((alist mew-onekey-refile-alist))
    (while alist
      (define-key mew-summary-mode-map
	(car (car alist)) 'mew-summary-onekey-refile)
      (setq alist (cdr alist)))
    ))

(defun mew-onekey-refile-unsetup ()
  (interactive)
  (let ((alist mew-onekey-refile-alist))
    (while alist
      (define-key mew-summary-mode-map (int-to-string (car (car alist))) nil)
      (setq alist (cdr alist)))
    ))

;; mew-onekey.el ends here


Mew-dist メーリングリストの案内