[Mew-dist 2220] Re: petname の登録

Junichiro Kita ( 喜多淳一郎 ) kita at example.com
1997年 9月 24日 (水) 17:15:17 JST


こんにちは.喜多@NTTデータです.

kita> メール読んでるときに,新しいpetnameを登録する方法が見当たらなかったの
kita> で,適当に作ってみました.
kita> # ほんとにないのかな.結構不便なのに.

以前投稿した,mew-petname.elですが,数人からアドバイスをいただいて,ちょっ
とだけ修正をしました.
contribの方にも反映してもらえるとうれしいです.

修正点は
・WNNとCANNAの設定を追加
・すでにpetnameを登録している場合は,変更するかどうか問い合わせる
です.2番目の修正は,結構手抜きなので,同じpetnameが存在するとおかしな
ことになるかも知れません.
-------------- next part --------------
;;;
;;; mew-petname.el by Junichiro Kita (喜多淳一郎) <kita at example.com>
;;;

;; [How to use]
;;     (add-hook 'mew-summary-mode-hook
;;               (function
;;                (lambda ()
;;                  (define-key mew-summary-mode-map "\M-p"
;;                    'mew-summary-petname-save-new-petname))))
;;     (autoload 'mew-summary-petname-save-new-petname "mew-petname" nil t)

(if (fboundp 'mew-toggle-kanji)
    nil
  (cond
   ((boundp 'WNN)
    (fset 'mew-toggle-kanji 'toggle-egg-mode))
   ((boundp 'CANNA)
    (fset 'mew-toggle-kanji 'canna-toggle-japanese-mode))
   ((eq system-type 'windows-nt)
    (fset 'mew-toggle-kanji 'win32-ime-toggle))
   (t          ; 他のは知りません
    (fset 'mew-toggle-kanji '(lambda () nil)))))

(defun mew-summary-petname-save-new-petname ()
  (interactive)
  (cond
   ((eobp)
    (message "No message"))
   ((not (or (mew-summary-message-number) (mew-summary-part-number)))
    (message "No message"))
   (t
    (let (msg from petname oldpetname replace)
      ;; とにかく save-excursion
      (save-excursion
	(if (mew-summary-part-number)
	    (re-search-backward mew-summary-message-regex nil t nil))
	;; メッセージを表示させる
	(mew-summary-display t)
	(setq msg (mew-summary-message-number))
	(set-buffer (or (mew-cache-hit (cons (buffer-name) msg))
			(mew-buffer-message)))
	;; From:
	(setq from (mew-header-get-address "From:"))
	;; Petname が登録されていたら
	(and (setq oldpetname (cdr (mew-assoc-case-equal
				    from mew-petname-alist 0)))
	     (setq replace (mew-y-or-n-p 
			    "Petname \"%s\" already exists. Replace?"
			    oldpetname)))
	(if (and oldpetname (not replace))
	    nil
	  (let (minibuffer-setup-hook)
	    ;; 普通 petname は漢字でしょ
	    (add-hook 'minibuffer-setup-hook 'mew-toggle-kanji)
	    (setq petname (read-from-minibuffer
			   (format "Petname for \"%s\": " from))))
	  (cond
	   ((and 
	     (mew-y-or-n-p "Petname %s for \"%s\", correct and save?"
			   petname from)
	     ;; mew-petname-alist に登録
	     (setq mew-petname-alist
		   (cons (cons from petname) mew-petname-alist))
	     ;; mew-petname-file にセーブ
	     (let ((buffer (find-file mew-petname-file)))
	       (set-buffer buffer)
	       (if (not replace)
		   (insert (format "%s\t\"%s\"\n" from petname))
		 (perform-replace oldpetname petname nil nil nil))
	       (save-buffer)
	       (kill-buffer buffer)))))))))))
-------------- next part --------------
-----
       __
    __/\_\
 __/\_\/_/  喜多 淳一郎
/\_\/_/\_\
\/_/\_\/_/  <mailto:kita at example.com>
   \/_/\_\  
      \/_/


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