(?c (or (mail-header-chars gnus-tmp-header) 0) ?d)
(?k (gnus-summary-line-message-size gnus-tmp-header) ?s)
(?L gnus-tmp-lines ?s)
- (?Z (or ,(gnus-macroexpand-all
- '(nnir-article-rsv (mail-header-number gnus-tmp-header)))
+ (?Z (or (nnir-article-rsv (mail-header-number gnus-tmp-header))
0) ?d)
- (?G (or ,(gnus-macroexpand-all
- '(nnir-article-group (mail-header-number gnus-tmp-header)))
+ (?G (or (nnir-article-group (mail-header-number gnus-tmp-header))
"") ?s)
- (?g (or ,(gnus-macroexpand-all
- '(gnus-group-short-name
- (nnir-article-group (mail-header-number gnus-tmp-header))))
+ (?g (or (gnus-group-short-name
+ (nnir-article-group (mail-header-number gnus-tmp-header)))
"") ?s)
(?O gnus-tmp-downloaded ?c)
(?I gnus-tmp-indentation ?s)
(declare-function turn-on-gnus-mailing-list-mode "gnus-ml" ())
(defvar bookmark-make-record-function)
\f
+(defvar bidi-paragraph-direction)
(defun gnus-summary-mode (&optional group)
"Major mode for reading articles.
(setq buffer-read-only t ;Disable modification
show-trailing-whitespace nil)
(setq truncate-lines t)
+ ;; Force paragraph direction to be left-to-right. Don't make it
+ ;; bound globally in old Emacsen and XEmacsen.
+ (set (make-local-variable 'bidi-paragraph-direction) 'left-to-right)
(add-to-invisibility-spec '(gnus-sum . t))
(gnus-summary-set-display-table)
(gnus-set-default-directory)
(current-buffer))))))
(defun gnus-summary-setup-buffer (group)
- "Initialize summary buffer."
+ "Initialize summary buffer.
+If the setup was successful, non-nil is returned."
(let ((buffer (gnus-summary-buffer-name group))
(dead-name (concat "*Dead Summary "
(gnus-group-decoded-name group) "*")))
"Start reading news in newsgroup GROUP.
If SHOW-ALL is non-nil, already read articles are also listed.
If NO-ARTICLE is non-nil, no article is selected initially.
-If NO-DISPLAY, don't generate a summary buffer."
+If NO-DISPLAY, don't generate the summary buffer contents.
+If KILL-BUFFER, it should be a buffer that's killed once the new
+summary buffer has been generated.
+If BACKWARD, move point to the previous group in the group buffer
+If SELECT-ARTICLES, only select those articles from GROUP."
(let (result)
(while (and group
(null (setq result
(entry (gnus-group-entry group))
(info (nth 2 entry))
(active (gnus-active group))
+ (set-marks
+ (or gnus-propagate-marks
+ (gnus-method-option-p
+ (gnus-find-method-for-group group)
+ 'server-marks)))
range)
(if (not entry)
;; Group that Gnus doesn't know exists, but still allow the
;; backend to set marks.
- (gnus-request-set-mark
- group (list (list (gnus-compress-sequence (sort articles #'<))
- 'add '(read))))
+ (when set-marks
+ (gnus-request-set-mark
+ group (list (list (gnus-compress-sequence (sort articles #'<))
+ 'add '(read)))))
;; Normal, subscribed groups.
(setq range (gnus-compute-read-articles group articles))
(with-current-buffer gnus-group-buffer
(gnus-info-set-marks ',info ',(gnus-info-marks info) t)
(gnus-info-set-read ',info ',(gnus-info-read info))
(gnus-get-unread-articles-in-group ',info (gnus-active ,group))
- (gnus-request-set-mark ,group (list (list ',range 'del '(read))))
+ (when ,set-marks
+ (gnus-request-set-mark
+ ,group (list (list ',range 'del '(read)))))
(gnus-group-update-group ,group t))))
;; Add the read articles to the range.
(gnus-info-set-read info range)
- (gnus-request-set-mark group (list (list range 'add '(read))))
+ (when set-marks
+ (gnus-request-set-mark group (list (list range 'add '(read)))))
;; Then we have to re-compute how many unread
;; articles there are in this group.
(when active
(gnus-kill-buffer gnus-original-article-buffer)
(setq gnus-article-current nil))
;; Return to the group buffer.
- (gnus-configure-windows 'group 'force)
(if (not gnus-kill-summary-on-exit)
- (gnus-deaden-summary)
+ (progn
+ (gnus-deaden-summary)
+ (gnus-configure-windows 'group 'force))
+ (gnus-configure-windows 'group 'force)
(gnus-close-group group)
(gnus-kill-buffer gnus-summary-buffer))
(unless gnus-single-article-buffer
(defun gnus-handle-ephemeral-exit (quit-config)
"Handle movement when leaving an ephemeral group.
The state which existed when entering the ephemeral is reset."
- (if (not (buffer-name (car quit-config)))
+ (if (not (buffer-live-p (car quit-config)))
(gnus-configure-windows 'group 'force)
(set-buffer (car quit-config))
(unless (eq (cdr quit-config) 'group)
'gnus-article-sort-by-number)))
(setq gnus-newsgroup-articles
(gnus-sorted-nunion gnus-newsgroup-articles (nreverse article-ids)))
- (gnus-summary-limit-include-thread id))))
+ (gnus-summary-limit-include-thread id)))
+ (gnus-summary-show-thread))
(defun gnus-summary-refer-article (message-id)
"Fetch an article specified by MESSAGE-ID."
(gnus-add-marked-articles
to-group 'expire (list to-article) info))
- (when to-marks
+ (when (and to-marks
+ (or gnus-propagate-marks
+ (gnus-method-option-p
+ (gnus-find-method-for-group to-group)
+ 'server-marks)))
(gnus-request-set-mark
to-group (list (list (list to-article) 'add to-marks)))))
(setq gnus-newsgroup-dormant (delq article gnus-newsgroup-dormant))
(setq gnus-newsgroup-expirable (delq article gnus-newsgroup-expirable))
(setq gnus-newsgroup-reads (delq article gnus-newsgroup-reads))
+ (setq gnus-newsgroup-unreads (delq article gnus-newsgroup-unreads))
(cond ((= mark gnus-ticked-mark)
(setq gnus-newsgroup-marked
(gnus-add-to-sorted-list gnus-newsgroup-marked
(beg (progn (beginning-of-line) (if (bobp) (point) (1- (point)))))
(eoi (when end
(if (fboundp 'next-single-char-property-change)
- (or (next-single-char-property-change end 'invisible)
- (point-max))
+ (if (featurep 'xemacs)
+ (or (next-single-char-property-change end 'invisible)
+ (point-max))
+ (next-single-char-property-change end 'invisible))
(while (progn
(end-of-line 2)
(and (not (eobp))