emacs-diffs
[Top][All Lists]
Advanced

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

[Emacs-diffs] /srv/bzr/emacs/trunk r102983: Merge changes made in Gnus t


From: Katsumi Yamaoka
Subject: [Emacs-diffs] /srv/bzr/emacs/trunk r102983: Merge changes made in Gnus trunk.
Date: Thu, 27 Jan 2011 04:04:58 +0000
User-agent: Bazaar (2.0.3)

------------------------------------------------------------
revno: 102983
author: Lars Ingebrigtsen <address@hidden>
committer: Katsumi Yamaoka <address@hidden>
branch nick: trunk
timestamp: Thu 2011-01-27 04:04:58 +0000
message:
  Merge changes made in Gnus trunk.
  
  gnus-art.el (gnus-article-next-page): Change last-line-displayed behaviour.
   (article-lapsed-string): Refactor out and allow specifying how many segments 
you want.
   (gnus-article-setup-buffer): Start updating the lapsed header directly.
   (gnus-article-update-lapsed-header): New variable.
  shr.el (shr-put-color): Don't do the box padding in tables, since they're 
already padded.
  gnus-util.el (float-time): If float-time is bound, always use it on all 
Emacsen.  It's unclear why the subrp check was there.
   (time-date): Require to make some autoload issues on XEmacs go away.
  gnus-draft.el (gnus-draft-clear-marks): New function to be run as an exit 
hook to nix out all data on readedness on group exit.
  gnus-sum.el (gnus-auto-select-subject): Doc typo.
modified:
  lisp/gnus/ChangeLog
  lisp/gnus/gnus-art.el
  lisp/gnus/gnus-draft.el
  lisp/gnus/gnus-sum.el
  lisp/gnus/gnus-util.el
  lisp/gnus/shr.el
=== modified file 'lisp/gnus/ChangeLog'
--- a/lisp/gnus/ChangeLog       2011-01-26 10:25:18 +0000
+++ b/lisp/gnus/ChangeLog       2011-01-27 04:04:58 +0000
@@ -1,5 +1,25 @@
+2011-01-27  Lars Ingebrigtsen  <address@hidden>
+
+       * gnus-draft.el (gnus-draft-clear-marks): New function to be run as an
+       exit hook to nix out all data on readedness on group exit.
+
+       * gnus-util.el (float-time): If float-time is bound, always use it on
+       all Emacsen.  It's unclear why the subrp check was there.
+       (time-date): Require to make some autoload issues on XEmacs go away.
+
+       * shr.el (shr-put-color): Don't do the box padding in tables, since
+       they're already padded.
+
 2011-01-26  Lars Ingebrigtsen  <address@hidden>
 
+       * gnus-art.el (gnus-article-next-page): When the last line of the
+       article is displayed, scroll down once more instead of going to the
+       next article at once.
+       (article-lapsed-string): Refactor out and allow specifying how many
+       segments you want.
+       (gnus-article-setup-buffer): Start updating the lapsed header directly.
+       (gnus-article-update-lapsed-header): New variable.
+
        * shr.el: Revert change that made headings use different-sized faces.
        The Emacs display engine isn't advanced enough that, for instance,
        tables can comfortably use differntly-sized faces.

=== modified file 'lisp/gnus/gnus-art.el'
--- a/lisp/gnus/gnus-art.el     2011-01-25 04:08:28 +0000
+++ b/lisp/gnus/gnus-art.el     2011-01-27 04:04:58 +0000
@@ -1023,6 +1023,15 @@
   :group 'gnus-article-headers
   :type 'boolean)
 
+(defcustom gnus-article-update-lapsed-header 1
+  "How often to update the lapsed date header.
+If nil, don't update it at all."
+  :version "24.1"
+  :group 'gnus-article-headers
+  :type '(choice
+         (item :tag "Don't update" :value nil)
+         integer))
+
 (defcustom gnus-article-mime-match-handle-function 'undisplayed-alternative
   "Function called with a MIME handle as the argument.
 This is meant for people who want to view first matched part.
@@ -1290,6 +1299,14 @@
   :link '(custom-manual "(gnus)Customizing Articles")
   :type gnus-article-treat-head-custom)
 
+(defcustom gnus-treat-date-combined-lapsed 'head
+  "Display the Date header in a way that says how much time has elapsed.
+Valid values are nil, t, `head', `first', `last', an integer or a
+predicate.  See Info node `(gnus)Customizing Articles'."
+  :group 'gnus-article-treat
+  :link '(custom-manual "(gnus)Customizing Articles")
+  :type gnus-article-treat-head-custom)
+
 (defcustom gnus-treat-date-original nil
   "Display the date in the original timezone.
 Valid values are nil, t, `head', `first', `last', an integer or a
@@ -1680,6 +1697,7 @@
     (gnus-treat-date-user-defined gnus-article-date-user)
     (gnus-treat-date-iso8601 gnus-article-date-iso8601)
     (gnus-treat-date-lapsed gnus-article-date-lapsed)
+    (gnus-treat-date-combined-lapsed gnus-article-date-combined-lapsed)
     (gnus-treat-display-x-face gnus-article-display-x-face)
     (gnus-treat-display-face gnus-article-display-face)
     (gnus-treat-hide-headers gnus-article-maybe-hide-headers)
@@ -3500,7 +3518,8 @@
 
 (defun article-make-date-line (date type)
   "Return a DATE line of TYPE."
-  (unless (memq type '(local ut original user iso8601 lapsed english))
+  (unless (memq type '(local ut original user iso8601 lapsed english
+                            combined-lapsed))
     (error "Unknown conversion type: %s" type))
   (condition-case ()
       (let ((time (date-to-time date)))
@@ -3548,47 +3567,11 @@
                     (/ (% (abs tz) 3600) 60)))))
         ;; Do an X-Sent lapsed format.
         ((eq type 'lapsed)
-         ;; If the date is seriously mangled, the timezone functions are
-         ;; liable to bug out, so we ignore all errors.
-         (let* ((now (current-time))
-                (real-time (subtract-time now time))
-                (real-sec (and real-time
-                               (+ (* (float (car real-time)) 65536)
-                                  (cadr real-time))))
-                (sec (and real-time (abs real-sec)))
-                num prev)
-           (cond
-            ((null real-time)
-             "X-Sent: Unknown")
-            ((zerop sec)
-             "X-Sent: Now")
-            (t
-             (concat
-              "X-Sent: "
-              ;; This is a bit convoluted, but basically we go
-              ;; through the time units for years, weeks, etc,
-              ;; and divide things to see whether that results
-              ;; in positive answers.
-              (mapconcat
-               (lambda (unit)
-                 (if (zerop (setq num (ffloor (/ sec (cdr unit)))))
-                     ;; The (remaining) seconds are too few to
-                     ;; be divided into this time unit.
-                     ""
-                   ;; It's big enough, so we output it.
-                   (setq sec (- sec (* num (cdr unit))))
-                   (prog1
-                       (concat (if prev ", " "") (int-to-string
-                                                  (floor num))
-                               " " (symbol-name (car unit))
-                               (if (> num 1) "s" ""))
-                     (setq prev t))))
-               article-time-units "")
-              ;; If dates are odd, then it might appear like the
-              ;; article was sent in the future.
-              (if (> real-sec 0)
-                  " ago"
-                " in the future"))))))
+         (concat "X-Sent: " (article-lapsed-string time)))
+        ;; A combined date/lapsed format.
+        ((eq type 'combined-lapsed)
+         (concat (article-make-date-line date 'original)
+                 " (" (article-lapsed-string time 3) ")"))
         ;; Display the date in proper English
         ((eq type 'english)
          (let ((dtime (decode-time time)))
@@ -3610,9 +3593,56 @@
             (format "%02d" (nth 2 dtime))
             ":"
             (format "%02d" (nth 1 dtime)))))))
-    (error
+    (foo
      (format "Date: %s (from Gnus)" date))))
 
+(defun article-lapsed-string (time &optional max-segments)
+  ;; If the date is seriously mangled, the timezone functions are
+  ;; liable to bug out, so we ignore all errors.
+  (let* ((now (current-time))
+        (real-time (subtract-time now time))
+        (real-sec (and real-time
+                       (+ (* (float (car real-time)) 65536)
+                          (cadr real-time))))
+        (sec (and real-time (abs real-sec)))
+        (segments 0)
+        num prev)
+    (unless max-segments
+      (setq max-segments (length article-time-units)))
+    (cond
+     ((null real-time)
+      "Unknown")
+     ((zerop sec)
+      "Now")
+     (t
+      (concat
+       ;; This is a bit convoluted, but basically we go
+       ;; through the time units for years, weeks, etc,
+       ;; and divide things to see whether that results
+       ;; in positive answers.
+       (mapconcat
+       (lambda (unit)
+         (if (or (zerop (setq num (ffloor (/ sec (cdr unit)))))
+                 (>= segments max-segments))
+             ;; The (remaining) seconds are too few to
+             ;; be divided into this time unit.
+             ""
+           ;; It's big enough, so we output it.
+           (setq sec (- sec (* num (cdr unit))))
+           (prog1
+               (concat (if prev ", " "") (int-to-string
+                                          (floor num))
+                       " " (symbol-name (car unit))
+                       (if (> num 1) "s" ""))
+             (setq prev t
+                   segments (1+ segments)))))
+       article-time-units "")
+       ;; If dates are odd, then it might appear like the
+       ;; article was sent in the future.
+       (if (> real-sec 0)
+          " ago"
+        " in the future"))))))
+
 (defun article-date-local (&optional highlight)
   "Convert the current article date to the local timezone."
   (interactive (list t))
@@ -3635,6 +3665,11 @@
   (interactive (list t))
   (article-date-ut 'lapsed highlight))
 
+(defun article-date-combined-lapsed (&optional highlight)
+  "Convert the current article date to time lapsed since it was sent."
+  (interactive (list t))
+  (article-date-ut 'combined-lapsed highlight))
+
 (defun article-update-date-lapsed ()
   "Function to be run from a timer to update the lapsed time line."
   (save-match-data
@@ -3647,8 +3682,10 @@
            (when (eq major-mode 'gnus-article-mode)
              (let ((mark (point-marker)))
                (goto-char (point-min))
-               (when (re-search-forward "^X-Sent:" nil t)
-                 (article-date-lapsed t))
+               (when (re-search-forward "^X-Sent:\\|^Date:" nil t)
+                 (if gnus-treat-date-combined-lapsed
+                     (article-date-combined-lapsed t)
+                   (article-date-lapsed t)))
                (goto-char (marker-position mark))
                (move-marker mark nil))))
          nil 'visible))))))
@@ -4296,6 +4333,7 @@
      article-decode-encoded-words
      article-date-user
      article-date-lapsed
+     article-date-combined-lapsed
      article-emphasize
      article-treat-dumbquotes
      article-treat-non-ascii
@@ -4492,6 +4530,9 @@
        (setq gnus-summary-buffer
              (gnus-summary-buffer-name gnus-newsgroup-name))
        (gnus-summary-set-local-parameters gnus-newsgroup-name)
+       (when (and gnus-article-update-lapsed-header
+                  (not article-lapsed-timer))
+         (gnus-start-date-timer gnus-article-update-lapsed-header))
        (current-buffer)))))
 
 ;; Set article window start at LINE, where LINE is the number of lines
@@ -6267,7 +6308,7 @@
           (save-excursion
             (end-of-line)
             (and (pos-visible-in-window-p)     ;Not continuation line.
-                 (>= (1+ (point)) (point-max))))) ;Allow for trailing newline.
+                 (>= (point) (point-max)))))
       ;; Nothing in this page.
       (if (or (not gnus-page-broken)
              (save-excursion

=== modified file 'lisp/gnus/gnus-draft.el'
--- a/lisp/gnus/gnus-draft.el   2011-01-25 04:08:28 +0000
+++ b/lisp/gnus/gnus-draft.el   2011-01-27 04:04:58 +0000
@@ -68,7 +68,8 @@
    (gnus-draft-mode
     ;; Set up the menu.
     (when (gnus-visual-p 'draft-menu 'menu)
-      (gnus-draft-make-menu-bar)))))
+      (gnus-draft-make-menu-bar))
+    (add-hook 'gnus-summary-prepare-exit-hook 'gnus-draft-clear-marks t t))))
 
 ;;; Commands
 
@@ -325,6 +326,12 @@
            (pop-to-buffer buff t)))
        (error "The draft %s is under edit" file)))))
 
+(defun gnus-draft-clear-marks ()
+  (setq gnus-newsgroup-reads nil
+       gnus-newsgroup-marked nil
+       gnus-newsgroup-unreads
+       (gnus-uncompress-range (gnus-active gnus-newsgroup-name))))
+
 (provide 'gnus-draft)
 
 ;;; gnus-draft.el ends here

=== modified file 'lisp/gnus/gnus-sum.el'
--- a/lisp/gnus/gnus-sum.el     2011-01-25 04:08:28 +0000
+++ b/lisp/gnus/gnus-sum.el     2011-01-27 04:04:58 +0000
@@ -359,7 +359,7 @@
 unread article), `best' (place point on the subject line of the
 higest-scored article), `unseen' (place point on the subject line of
 the first unseen article), `unseen-or-unread' (place point on the subject
-line of the first unseen article or, if all article have been seen, on the
+line of the first unseen article or, if all articles have been seen, on the
 subject line of the first unread article), or a function to be called to
 place point on some subject line."
   :version "24.1"

=== modified file 'lisp/gnus/gnus-util.el'
--- a/lisp/gnus/gnus-util.el    2011-01-25 04:08:28 +0000
+++ b/lisp/gnus/gnus-util.el    2011-01-27 04:04:58 +0000
@@ -38,6 +38,8 @@
 (eval-when-compile
   (require 'cl))
 
+(require 'time-date)
+
 (defcustom gnus-completing-read-function 'gnus-emacs-completing-read
   "Function use to do completing read."
   :version "24.1"
@@ -332,9 +334,7 @@
             (> (nth 1 fdate) (nth 1 date))))))
 
 (eval-and-compile
-  (if (or (featurep 'emacs)
-         (and (fboundp 'float-time)
-              (subrp (symbol-function 'float-time))))
+  (if (fboundp 'float-time)
       (defalias 'gnus-float-time 'float-time)
     (defun gnus-float-time (&optional time)
       "Convert time value TIME to a floating point number.

=== modified file 'lisp/gnus/shr.el'
--- a/lisp/gnus/shr.el  2011-01-26 10:25:18 +0000
+++ b/lisp/gnus/shr.el  2011-01-27 04:04:58 +0000
@@ -619,7 +619,8 @@
       (if (< (line-end-position) end)
          (forward-line 1)
        (goto-char end)))
-    (when (eq type :background)
+    (when (and (eq type :background)
+              (= shr-table-depth 0))
       (shr-expand-newlines start end color))))
 
 (defun shr-expand-newlines (start end color)


reply via email to

[Prev in Thread] Current Thread [Next in Thread]