Changes committed gnus/lisp (ChangeLog gnus-sum.el)
"Reiner Steib" <[email protected]> Wed, 14 Oct 2009 21:00:33 +0200
| Newsgroups | gmane.emacs.gnus.commits |
|---|---|
| Message-ID | <[email protected]> |
Modified: ChangeLog gnus-sum.el 2009-10-14 Reiner Steib <[email protected]> * gnus-sum.el (gnus-remove-overlays): Add doc string and alias. 2009-10-14 Dan Nicolaescu <[email protected]> * gnus-sum.el (gnus-remove-overlays): Compatibility code for Emacs 21 and XEmacs that don't have `remove-overlays'. 2009-10-14 Stefan Monnier <[email protected]> * gnus-sum.el (gnus-summary-mode, gnus-summary-show-all-threads) (gnus-summary-show-thread, gnus-summary-hide-thread): Get rid of selective display. Use overlays instead. Index: ChangeLog diff -u gnus/lisp/ChangeLog:7.2027 gnus/lisp/ChangeLog:7.2028 --- ChangeLog:7.2027 Tue Oct 6 02:27:02 2009 +++ ChangeLog Wed Oct 14 21:00:32 2009 @@ -1,3 +1,18 @@ +2009-10-14 Reiner Steib <[email protected]> + + * gnus-sum.el (gnus-remove-overlays): Add doc string and alias. + +2009-10-14 Dan Nicolaescu <[email protected]> + + * gnus-sum.el (gnus-remove-overlays): Compatibility code for Emacs 21 + and XEmacs that don't have `remove-overlays'. + +2009-10-14 Stefan Monnier <[email protected]> + + * gnus-sum.el (gnus-summary-mode, gnus-summary-show-all-threads) + (gnus-summary-show-thread, gnus-summary-hide-thread): Get rid of + selective display. Use overlays instead. + 2009-10-04 Juanma Barranquero <[email protected]> * spam-stat.el (spam-stat-strip-xref): Fix typo in docstring. Index: gnus-sum.el diff -u gnus/lisp/gnus-sum.el:7.240 gnus/lisp/gnus-sum.el:7.241 --- gnus-sum.el:7.240 Wed Sep 9 11:31:35 2009 +++ gnus-sum.el Wed Oct 14 21:00:32 2009 @@ -3069,8 +3069,7 @@ (setq buffer-read-only t ;Disable modification show-trailing-whitespace nil) (setq truncate-lines t) - (setq selective-display t) - (setq selective-display-ellipses t) ;Display `...' + (add-to-invisibility-spec '(gnus-sum . t)) (gnus-summary-set-display-table) (gnus-set-default-directory) (make-local-variable 'gnus-summary-line-format) @@ -11278,29 +11277,37 @@ (gnus-message 6 "Threading is now %s" (if gnus-show-threads "on" "off")) (gnus-summary-position-point))) +(if (fboundp 'remove-overlays) + (defalias 'gnus-remove-overlays 'remove-overlays) + (defun gnus-remove-overlays (beg end name val) + "Clear BEG and END of overlays whose property NAME has value VAL. +For compatibility with Emacs 21 and XEmacs." + (dolist (ov (overlays-in beg end)) + (when (overlay-get ov val) + (delete-overlay ov))))) + (defun gnus-summary-show-all-threads () "Show all threads." (interactive) - (save-excursion - (let ((buffer-read-only nil)) - (subst-char-in-region (point-min) (point-max) ?\^M ?\n t))) + (gnus-remove-overlays (point-min) (point-max) 'invisible 'gnus-sum) (gnus-summary-position-point)) (defun gnus-summary-show-thread () "Show thread subtrees. Returns nil if no thread was there to be shown." (interactive) - (let ((buffer-read-only nil) - (orig (point)) + (let* ((orig (point)) (end (point-at-eol)) ;; Leave point at bol - (beg (progn (beginning-of-line) (point)))) - (prog1 - ;; Any hidden lines here? - (search-forward "\r" end t) - (subst-char-in-region beg end ?\^M ?\n t) + (beg (progn (beginning-of-line) (if (bobp) (point) (1- (point))))) + (eoi (when (eq (get-char-property end 'invisible) 'gnus-sum) + (or (next-single-char-property-change end 'invisible) + (point-max))))) + (when eoi + (gnus-remove-overlays beg eoi 'invisible 'gnus-sum) (goto-char orig) - (gnus-summary-position-point)))) + (gnus-summary-position-point) + eoi))) (defun gnus-summary-maybe-hide-threads () "If requested, hide the threads that should be hidden." @@ -11349,22 +11356,26 @@ will not be hidden. Returns nil if no threads were there to be hidden." (interactive) - (let ((buffer-read-only nil) - (start (point)) + (let ((start (point)) + (starteol (line-end-position)) (article (gnus-summary-article-number))) (goto-char start) ;; Go forward until either the buffer ends or the subthread ends. (when (and (not (eobp)) (or (zerop (gnus-summary-next-thread 1 t)) (goto-char (point-max)))) - (prog1 (if (and (> (point) start) + ;; FIXME: this should actually search for a non-invisible \n. (search-backward "\n" start t)) (progn - (subst-char-in-region start (point) ?\n ?\^M) + (when (> (point) starteol) + (gnus-remove-overlays starteol (point) 'invisible 'gnus-sum) + (let ((ol (make-overlay starteol (point) nil t nil))) + (overlay-put ol 'invisible 'gnus-sum) + (overlay-put ol 'evaporate t))) (gnus-summary-goto-subject article)) (goto-char start) - nil))))) + nil)))) (defun gnus-summary-go-to-next-thread (&optional previous) "Go to the same level (or less) next thread.