[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[mhc:00512] Re: mhc-cvs.el



From: Yoshinari NOMURA <nom@xxxxxxxxxxxxxxxxxxx> さん曰く
Subject: [mhc:00510] Re: mhc-cvs.el
Message-ID: <20000420090428W.nom@xxxxxxxxxxxxxxxxxxx>
Date: Thu, 20 Apr 2000 09:04:31 +0900

nom> おはようございます。ごめんなさい。
nom> もうちょっとしたら戦線復帰できると思います。

お仕事がんばってくださいませ。

nom> > 三好> しかし、ソースを汚さないほうが良いと思います。
nom> > 三好> .emacs に次の設定を加えることで回避できる問題ですので。

## この argument-editing は初耳でした。^^;;;

nom> mhc まるごと全部 .emacs に書けば、ソースは一番汚れないわけだし。^^;

とってもすてきですね、それって。

nom> mhc のために .emacs に書いていることがあれば、
nom> みんなのために吐き出して下さい > elisper な方々 :-)

僕のだと Mew 限定になっちゃうので、いまいちなのですが、とりあえ
ずこういうのやっていますよ、ということで。

## あまりにめちゃくちゃなので目が潰れたらごめんなさい。

-- 
白井秀行 (mailto:shirai@xxxxxxxxxxxxxxxxxxx)

;; いつでもどこでも mhc
;; tool bar をごまかす 19.28 〜 20.6 では大丈夫。
(if (not (and (boundp 'window-system)
	      window-system))
    ()
  (defvar menu-bar-file-menu nil)
  (defvar menu-bar-tools-menu nil)
  (cond
   (menu-bar-tools-menu
    (substitute-key-definition 'rmail 'mew menu-bar-tools-menu)
    (substitute-key-definition 'calendar 'mew-mhc menu-bar-tools-menu))
   (menu-bar-file-menu
    (substitute-key-definition 'rmail 'mew menu-bar-file-menu)
    (substitute-key-definition 'mail 'mew-send menu-bar-file-menu)
    (substitute-key-definition 'calendar 'mew-mhc menu-bar-file-menu))))

(defun mew-mhc ()
  (interactive)
  (if (and (eq mhc-mailer-package 'mew)
	   (not (or (and (boundp 'mew-init-p)
			 mew-init-p)
		    (and (boundp 'mew-mail-path)
			 mew-mail-path))))
      (progn
	(cd "~/")
	(mew)
	(if (get-buffer mew-buffer-hello)
	    (kill-buffer mew-buffer-hello))))
  (mhc-goto-this-month))

(define-key global-map "\C-c." 'mew-mhc)

;; これは default で入れてもらえるとうれしい。
(eval-after-load "mhc"
  '(setq mhc-draft-unuse-hdr-list
	 (append (list "From " ">From ")
		 mhc-draft-unuse-hdr-list)))

(add-hook 'mhc-mode-hook
	  '(lambda ()
	     (and (featurep 'mew-nmz)
		  ;; ここは一般的じゃないですね。元の filename
		  ;; がわかるので便利なのです。
		  (define-key mhc-mode-map "zj" 'mew-virtual-original-message))
	     (if (not (eq mhc-mailer-package 'mew))
		 ()
               ;; Mew の message buffer を消す
	       (and (mew-buffer-message)
		    (get-buffer-window (mew-buffer-message))
		    (window-live-p (get-buffer-window (mew-buffer-message)))
		    (delete-window (get-buffer-window (mew-buffer-message))))
               ;; message の表示解除
	       (and mew-summary-buffer-disp-msg
		    (mew-summary-toggle-disp-msg)))))

;; 上の hook で message buffer を消すと、mhc の見ためが悪い。
(add-hook 'mhc-mode-hook
	  '(lambda ()
	     (let ((pos (point)))
	       (goto-char (point-min))
	       (sit-for 0)
	       (goto-char pos)))
	  t)

;; 後藤さんの mew-message-decode-header を改造して、
;; mhc と思われるときだけ "生JIS" を decode する
;; mhc-message-decode-header
(add-hook 'mew-message-hook 'mhc-message-decode-header)
(defun mhc-message-decode-header ()
  "mhc-message-hook function to decode RAW JIS subject in header"
  (condition-case e
      (if (mew-current-get 'cache)
	  (let* ((cache (mew-current-get 'cache))
		 (part (mew-current-get 'part))
		 (syntax (mew-cache-decode-syntax cache))
		 (ent (mew-syntax-get-entry syntax part))
		 (ct (mew-syntax-get-ct ent))
		 (buffer-read-only nil))
	    (if (not (equal "Message/Rfc822" (car ct)))
		()			; nothing to do
	      ;; do only Message/Rfc822 contents
	      (save-excursion
		(save-restriction
		  (widen)
		  (goto-char 1)
		  (if (not (re-search-forward "\r?\n\r?\n" nil t))
		      ()		; no header
		    (narrow-to-region (point-min) (point))
		    (goto-char (point-min))
		    (if (not (re-search-forward "^X-SC-Subject:" nil t))
			()
		      (goto-char (point-min))
		      ;; decode raw JIS string
		      (while (< (point) (point-max))
			(if (looking-at "[^:]+:? *")
			    (goto-char (match-end 0)))
			(if (and (not (looking-at "[\t\x20-\x7e]+$"))
				 (equal (mew-find-cs-region 
					 (point)
					 (save-excursion (end-of-line) (point)))
					(list mew-lc-ascii)))
			    ;; decode!
			    (mew-cs-decode-region (point) 
						  (save-excursion
						    (end-of-line)
						    (point))
						  mew-cs-scan))
			(beginning-of-line)
			(forward-line 1))
		      ;; re-highlight
		      (mew-highlight-header)
		      (save-excursion
			(mew-highlight-x-face (point-min) (point-max))))))))))
    (error
     (ding t)
     (message "mhc-message-decode-header: %s" (or (cdr e) "some error!")))))