2 ;;; mew-petname.el by Junichiro Kita (
\e$B4nB?=_0lO:
\e(B) <kita@sec.rd.nttdata.co.jp>
6 ;; (add-hook 'mew-summary-mode-hook
9 ;; (define-key mew-summary-mode-map "\M-p"
10 ;; 'mew-summary-petname-save-new-petname))))
11 ;; (autoload 'mew-summary-petname-save-new-petname "mew-petname" nil t)
13 (if (fboundp 'mew-toggle-kanji)
17 (fset 'mew-toggle-kanji 'toggle-egg-mode))
19 (fset 'mew-toggle-kanji 'canna-toggle-japanese-mode))
20 ((eq system-type 'windows-nt)
21 (fset 'mew-toggle-kanji 'win32-ime-toggle))
22 (t ;
\e$BB>$N$OCN$j$^$;$s
\e(B
23 (fset 'mew-toggle-kanji '(lambda () nil)))))
25 (defun mew-summary-petname-save-new-petname ()
29 (message "No message"))
30 ((not (or (mew-summary-message-number) (mew-syntax-number)))
31 (message "No message"))
33 (let (msg from petname oldpetname replace)
34 ;;
\e$B$H$K$+$/
\e(B save-excursion
36 (if (mew-syntax-number)
37 (re-search-backward mew-summary-message-regex nil t nil))
38 ;;
\e$B%a%C%;!<%8$rI=<($5$;$k
\e(B
39 (mew-summary-display t)
40 (setq msg (mew-summary-message-number))
41 (set-buffer (or (mew-cache-hit (cons (buffer-name) msg))
42 (mew-buffer-message)))
44 (setq from (mew-header-parse-address "From:"))
45 ;; Petname
\e$B$,EPO?$5$l$F$$$?$i
\e(B
46 (and (setq oldpetname (cdr (mew-assoc-case-equal
47 from mew-petname-alist 0)))
48 (setq replace (y-or-n-p
49 (format "Petname \"%s\" already exists. Replace?"
51 (if (and oldpetname (not replace))
53 (let (minibuffer-setup-hook)
54 ;;
\e$BIaDL
\e(B petname
\e$B$O4A;z$G$7$g
\e(B
55 (add-hook 'minibuffer-setup-hook 'mew-toggle-kanji)
56 (setq petname (read-from-minibuffer
57 (format "Petname for \"%s\": " from))))
60 (y-or-n-p (format "Petname %s for \"%s\", correct and save?"
62 ;; mew-petname-alist
\e$B$KEPO?
\e(B
63 (setq mew-petname-alist
64 (cons (cons from petname) mew-petname-alist))
65 ;; mew-petname-file
\e$B$K%;!<%V
\e(B
66 (let ((buffer (find-file mew-petname-file)))
69 (insert (format "%s\t\"%s\"\n" from petname))
70 (perform-replace oldpetname petname nil nil nil))
72 (kill-buffer buffer)))))))))))