]> git.eshelyaron.com Git - emacs.git/commitdiff
Synch with Gnus trunk:
authorKatsumi Yamaoka <yamaoka@jpl.org>
Mon, 19 Oct 2009 23:21:04 +0000 (23:21 +0000)
committerKatsumi Yamaoka <yamaoka@jpl.org>
Mon, 19 Oct 2009 23:21:04 +0000 (23:21 +0000)
2009-10-19  Katsumi Yamaoka  <yamaoka@jpl.org>

 * gnus-sum.el (gnus-summary-show-thread): Remove useless goto-char.
 (gnus-summary-show-thread, gnus-summary-hide-thread): Indent.

2009-10-16  Katsumi Yamaoka  <yamaoka@jpl.org>

 * gnus.el (gnus-overlay-get): New alias to overlay-get.
 (gnus-overlays-in): New alias to overlays-in.

 * gnus-sum.el (gnus-remove-overlays): Use gnus-overlays-in,
 gnus-overlay-get, and gnus-delete-overlay.
 (gnus-summary-show-thread): Make it work as well for systems in which
 next-single-char-property-change is not available.
 (gnus-summary-hide-thread): Use gnus-make-overlay and gnus-overlay-put.

2009-10-14  Reiner Steib  <Reiner.Steib@gmx.de>

 * gnus-sum.el (gnus-remove-overlays): Add doc string and alias.

2009-10-14  Dan Nicolaescu  <dann@ics.uci.edu>

 * gnus-sum.el (gnus-remove-overlays): Compatibility code for Emacs 21
 and XEmacs that don't have `remove-overlays'.

2009-10-14  Stefan Monnier  <monnier@iro.umontreal.ca>

 * 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.

lisp/gnus/ChangeLog
lisp/gnus/gnus-sum.el
lisp/gnus/gnus.el

index 5cbf88ba51b1dc525102edcd25cdf19cbbbf0b94..b98b9c99540ef3a2c39574e375451844aef578b3 100644 (file)
@@ -1,3 +1,34 @@
+2009-10-19  Katsumi Yamaoka  <yamaoka@jpl.org>
+
+       * gnus-sum.el (gnus-summary-show-thread): Remove useless goto-char.
+       (gnus-summary-show-thread, gnus-summary-hide-thread): Indent.
+
+2009-10-16  Katsumi Yamaoka  <yamaoka@jpl.org>
+
+       * gnus.el (gnus-overlay-get): New alias to overlay-get.
+       (gnus-overlays-in): New alias to overlays-in.
+
+       * gnus-sum.el (gnus-remove-overlays): Use gnus-overlays-in,
+       gnus-overlay-get, and gnus-delete-overlay.
+       (gnus-summary-show-thread): Make it work as well for systems in which
+       next-single-char-property-change is not available.
+       (gnus-summary-hide-thread): Use gnus-make-overlay and gnus-overlay-put.
+
+2009-10-14  Reiner Steib  <Reiner.Steib@gmx.de>
+
+       * gnus-sum.el (gnus-remove-overlays): Add doc string and alias.
+
+2009-10-14  Dan Nicolaescu  <dann@ics.uci.edu>
+
+       * gnus-sum.el (gnus-remove-overlays): Compatibility code for Emacs 21
+       and XEmacs that don't have `remove-overlays'.
+
+2009-10-14  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * 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  <lekktu@gmail.com>
 
        * spam-stat.el (spam-stat-strip-xref): Fix typo in docstring.
index b1fa5254bdca2ea22c0f4402b92e072684839ce0..fb80d605308aef04b34c86b9bdc9e7af91862098 100644 (file)
@@ -3069,8 +3069,7 @@ The following commands are available:
   (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,44 @@ If ARG is positive number, turn showing conversation threads on."
     (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 (gnus-overlays-in beg end))
+      (when (eq (gnus-overlay-get ov name) val)
+       (gnus-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))
-       (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)
+  (let* ((orig (point))
+        (end (point-at-eol))
+        ;; Leave point at bol
+        (beg (progn (beginning-of-line) (if (bobp) (point) (1- (point)))))
+        (eoi (when (eq (get-char-property end 'invisible) 'gnus-sum)
+               (if (fboundp 'next-single-char-property-change)
+                   (or (next-single-char-property-change end 'invisible)
+                       (point-max))
+                 (while (progn
+                          (end-of-line 2)
+                          (and (not (eobp))
+                               (eq (get-char-property (point) 'invisible)
+                                   'gnus-sum))))
+                 (point)))))
+    (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 +11363,26 @@ If PREDICATE is supplied, threads that satisfy this predicate
 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)
-                  (search-backward "\n" start t))
-             (progn
-               (subst-char-in-region start (point) ?\n ?\^M)
-               (gnus-summary-goto-subject article))
-           (goto-char start)
-           nil)))))
+      (if (and (> (point) start)
+              ;; FIXME: this should actually search for a non-invisible \n.
+              (search-backward "\n" start t))
+         (progn
+           (when (> (point) starteol)
+             (gnus-remove-overlays starteol (point) 'invisible 'gnus-sum)
+             (let ((ol (gnus-make-overlay starteol (point) nil t nil)))
+               (gnus-overlay-put ol 'invisible 'gnus-sum)
+               (gnus-overlay-put ol 'evaporate t)))
+           (gnus-summary-goto-subject article))
+       (goto-char start)
+       nil))))
 
 (defun gnus-summary-go-to-next-thread (&optional previous)
   "Go to the same level (or less) next thread.
index 85baa71f2a3c24fe12305b20439c7e1652ddb3ed..ef77e5958908e33b5fab1334ca8f394f7e1e5c41 100644 (file)
@@ -318,11 +318,13 @@ be set in `.emacs' instead."
 (unless (featurep 'gnus-xmas)
   (defalias 'gnus-make-overlay 'make-overlay)
   (defalias 'gnus-delete-overlay 'delete-overlay)
+  (defalias 'gnus-overlay-get 'overlay-get)
   (defalias 'gnus-overlay-put 'overlay-put)
   (defalias 'gnus-move-overlay 'move-overlay)
   (defalias 'gnus-overlay-buffer 'overlay-buffer)
   (defalias 'gnus-overlay-start 'overlay-start)
   (defalias 'gnus-overlay-end 'overlay-end)
+  (defalias 'gnus-overlays-in 'overlays-in)
   (defalias 'gnus-extent-detached-p 'ignore)
   (defalias 'gnus-extent-start-open 'ignore)
   (defalias 'gnus-mail-strip-quoted-names 'mail-strip-quoted-names)