[Mew-dist 08737] end-of-message

Kazu Yamamoto ( 山本和彦 ) kazu at example.com
1999年 5月 7日 (金) 18:31:20 JST


忘れていましたが、思い出しました。XEmacs や Emacs 19.28 ベースの Mule
2.3 では、そのバッファにカーソルがないと overlay-arrow-string が表示さ
れないというバグ(あるいは仕様)があります。

よって、いくら mew-end-of-{message,part}-string を定義しても、上記の 
Emacsen では嬉しくありませんでした。そこで、overlay-arrow-string を捨
てて、自前でまじめに作りましたので、パッチを送ります。b25 に当てて下さ
い。Message バッファの最後に文字列が出るようになると成功です。

いろんな Emacs で試していただけると幸いです。とりあえず、.emacs に以下
のような設定を入れましょう。(これ、デフォルトにしようかな。)

(setq mew-end-of-message-string "[End of message]")
(setq mew-end-of-part-string "[Message is continued]")

--かず

-------------- next part --------------
Index: mew-summary.el
===================================================================
RCS file: /usr/home/kazu/cvsroot/Mew/mew/mew-summary.el,v
retrieving revision 1.145
diff -c -r1.145 mew-summary.el
*** mew-summary.el	1999/04/26 09:21:30	1.145
--- mew-summary.el	1999/05/07 09:09:58
***************
*** 91,97 ****
    (define-key mew-summary-mode-map ","    'mew-summary-display-asis)
    (define-key mew-summary-mode-map "<"    'mew-summary-display-top)
    (define-key mew-summary-mode-map ">"    'mew-summary-display-bottom)
!   (define-key mew-summary-mode-map "\177" 'mew-summary-prev-page)
    (define-key mew-summary-mode-map "\r"   'mew-summary-scroll-up)
    (define-key mew-summary-mode-map "-"    'mew-summary-scroll-down)
    (define-key mew-summary-mode-map "\e\r" 'mew-summary-scroll-down)
--- 91,99 ----
    (define-key mew-summary-mode-map ","    'mew-summary-display-asis)
    (define-key mew-summary-mode-map "<"    'mew-summary-display-top)
    (define-key mew-summary-mode-map ">"    'mew-summary-display-bottom)
!   (if mew-xemacs-p
!       (define-key mew-summary-mode-map 'backspace 'mew-summary-prev-page)
!     (define-key mew-summary-mode-map "\177" 'mew-summary-prev-page))
    (define-key mew-summary-mode-map "\r"   'mew-summary-scroll-up)
    (define-key mew-summary-mode-map "-"    'mew-summary-scroll-down)
    (define-key mew-summary-mode-map "\e\r" 'mew-summary-scroll-down)
***************
*** 722,727 ****
--- 724,731 ----
  	 ;; summary buffer
  	 (mew-summary-show-postscript (not non-prefetch)))))))
  
+ (defvar mew-message-overlay nil)
+ 
  (defun mew-message-set-end-of ()
    (let ((buffer-read-only nil))
      (save-restriction
***************
*** 732,758 ****
  	(if (and mew-xemacs-p (extent-at (point) nil nil nil 'at))
  	    ;; to skip graphics
  	    (insert "\n"))
! 	(if (not (mew-local-variable-p 'overlay-arrow-string))
! 	    (make-local-variable 'overlay-arrow-string))
! 	(setq overlay-arrow-string nil)
  	(if (or mew-end-of-message-string mew-end-of-part-string)
  	    (progn
! 	      (if (mew-local-variable-p 'overlay-arrow-position)
! 		  ()
! 		(make-local-variable 'overlay-arrow-position)
! 		(setq overlay-arrow-position (make-marker)))
! 	      (set-marker overlay-arrow-position (point))
  	      (if (mew-decode-syntax-p)
  		  (if (mew-summary-end-of-message-p)
! 		      (setq overlay-arrow-string mew-end-of-message-string)
! 		    (setq overlay-arrow-string mew-end-of-part-string))
! 		(setq overlay-arrow-string mew-end-of-message-string))))))))
  
  (defmacro mew-message-clear-end-of ()
    (` (progn
!        (if (not (mew-local-variable-p 'overlay-arrow-string))
! 	   (make-local-variable 'overlay-arrow-string))
!        (setq overlay-arrow-string nil))))
  
  (defmacro mew-summary-display-preamble ()
    (` (progn
--- 736,759 ----
  	(if (and mew-xemacs-p (extent-at (point) nil nil nil 'at))
  	    ;; to skip graphics
  	    (insert "\n"))
! 	(mew-message-clear-end-of)
  	(if (or mew-end-of-message-string mew-end-of-part-string)
  	    (progn
! 	      (mew-overlay-move mew-message-overlay (point-max) (point-max))
  	      (if (mew-decode-syntax-p)
  		  (if (mew-summary-end-of-message-p)
! 		      (mew-message-set-end-of-message)
! 		    (mew-message-set-end-of-part))
! 		(mew-message-set-end-of-message))))))))
  
  (defmacro mew-message-clear-end-of ()
    (` (progn
!        (if (not (mew-local-variable-p 'mew-message-overlay))
! 	   (make-local-variable 'mew-message-overlay))
!        (if (not (mew-overlay-p mew-message-overlay))
! 	   (setq mew-message-overlay
! 		 (mew-overlay-make (point-max) (point-max))))
!        (mew-message-set-end-of-nil))))
  
  (defmacro mew-summary-display-preamble ()
    (` (progn
Index: mew-temacs.el
===================================================================
RCS file: /usr/home/kazu/cvsroot/Mew/mew/mew-temacs.el,v
retrieving revision 1.5
diff -c -r1.5 mew-temacs.el
*** mew-temacs.el	1998/08/24 14:45:40	1.5
--- mew-temacs.el	1999/05/07 09:09:58
***************
*** 27,32 ****
--- 27,45 ----
  (defmacro mew-draft-toolbar-update ()
    (` ()))
  
+ (defmacro mew-message-set-end-of-message ()
+   (` (mew-overlay-put mew-message-overlay
+ 		      'before-string
+ 		      mew-end-of-message-string)))
+ 
+ (defmacro mew-message-set-end-of-part ()
+   (` (mew-overlay-put mew-message-overlay
+ 		      'before-string
+ 		      mew-end-of-part-string)))
+ 
+ (defmacro mew-message-set-end-of-nil ()
+   (` (mew-overlay-put mew-message-overlay 'before-string nil)))
+ 
  (provide 'mew-temacs)
  
  ;;; Copyright Notice:
Index: mew-xemacs.el
===================================================================
RCS file: /usr/home/kazu/cvsroot/Mew/mew/mew-xemacs.el,v
retrieving revision 1.22
diff -c -r1.22 mew-xemacs.el
*** mew-xemacs.el	1999/03/29 01:10:38	1.22
--- mew-xemacs.el	1999/05/07 09:09:58
***************
*** 350,355 ****
--- 350,381 ----
  	(setq toolbar-active t)
  	(set-toolbar-button-down-flag button t)))))
  
+ (defvar mew-x-emacs-end-of-message nil)
+ (defvar mew-x-emacs-end-of-part nil)
+ 
+ (defmacro mew-message-set-end-of-message ()
+   (` (progn
+        (if (not (glyphp mew-x-emacs-end-of-message))
+ 	   (setq mew-x-emacs-end-of-message
+ 		 (make-glyph
+ 		  (vector 'string :data mew-end-of-message-string))))
+        (mew-overlay-put mew-message-overlay
+ 			'begin-glyph
+ 			mew-x-emacs-end-of-message))))
+ 
+ (defmacro mew-message-set-end-of-part ()
+   (` (progn
+        (if (not (glyphp mew-x-emacs-end-of-part))
+ 	   (setq mew-x-emacs-end-of-part
+ 		 (make-glyph
+ 		  (vector 'string :data mew-end-of-part-string))))
+        (mew-overlay-put mew-message-overlay
+ 			'begin-glyph
+ 			mew-x-emacs-end-of-part))))
+ 
+ (defmacro mew-message-set-end-of-nil ()
+   (` (mew-overlay-put mew-message-overlay 'begin-glyph nil)))
+   
  (provide 'mew-xemacs)
  
  ;;; Copyright Notice:


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