: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.
: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
(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)
(defun article-make-date-line (date type)
"Return a DATE line of TYPE."
- (unless (memq type '(local ut original user iso8601 lapsed english date-lapsed))
+ (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)))
((eq type 'lapsed)
(concat "X-Sent: " (article-lapsed-string time)))
;; A combined date/lapsed format.
- ((eq type 'date-lapsed)
- (concat "Date: " (article-lapsed-string time 3)))
+ ((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)))
(setq max-segments (length article-time-units)))
(cond
((null real-time)
- "X-Sent: Unknown")
+ "Unknown")
((zerop sec)
- "X-Sent: Now")
+ "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
(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
(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))))))
article-decode-encoded-words
article-date-user
article-date-lapsed
+ article-date-combined-lapsed
article-emphasize
article-treat-dumbquotes
article-treat-non-ascii
(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