;;; gnus-sum.el --- summary mode commands for Gnus
-;; Copyright (C) 1996-2014 Free Software Foundation, Inc.
+;; Copyright (C) 1996-2015 Free Software Foundation, Inc.
;; Author: Lars Magne Ingebrigtsen <larsi@gnus.org>
;; Keywords: news
(mail-header-set-subject
header
(gnus-simplify-subject
- (mail-header-subject header) 're-only)))
+ (mail-header-subject header) \\='re-only)))
gnus-newsgroup-headers)))"
:group 'gnus-group-select
:type 'hook)
'mail-decode-encoded-address-string
"Function used to decode addresses with encoded words.")
-(defcustom gnus-extra-headers '(To Cc Keywords Gcc Newsgroups)
+(defcustom gnus-extra-headers '(To Cc Keywords Gcc Newsgroups X-GM-LABELS)
"*Extra headers to parse."
- :version "24.1" ; added Cc Keywords Gcc
+ :version "25.1"
:group 'gnus-summary
:type '(repeat symbol))
For example:
\(setq gnus-newsgroup-variables
- '(message-use-followup-to
+ \\='(message-use-followup-to
(gnus-visible-headers .
\"^From:\\\\|^Newsgroups:\\\\|^Subject:\\\\|^Date:\\\\|^To:\")))
")
["Lapsed" gnus-article-date-lapsed t]
["User-defined" gnus-article-date-user t])
("Display"
+ ["Display HTML images" gnus-article-show-images t]
["Remove images" gnus-article-remove-images t]
["Toggle smiley" gnus-treat-smiley t]
["Show X-Face" gnus-article-display-x-face t]
;; The last case ignores an existing entry, except it adds any
;; additional Xrefs (in case the two articles came from different
;; servers.
- ;; Also sets `header' to `nil' meaning that the `dependencies'
+ ;; Also sets `header' to nil meaning that the `dependencies'
;; table was *not* modified.
(t
(mail-header-set-xref
(mm-decode-coding-string group charset)
(mm-decode-coding-string (gnus-status-message group) charset))))
- (unless (gnus-request-group group t)
+ (unless (gnus-request-group group t nil (gnus-get-info group))
(when (derived-mode-p 'gnus-summary-mode)
(gnus-kill-buffer (current-buffer)))
(error "Couldn't request group %s: %s"
(gnus-group-is-exiting-without-update-p t)
(quit-config (gnus-group-quit-config group)))
(when (or no-questions
+ (gnus-ephemeral-group-p group)
gnus-expert-user
(gnus-y-or-n-p "Discard changes to this group and exit? "))
(gnus-async-halt-prefetch)
(gnus-summary-position-point)))
(defun gnus-summary-limit-to-extra (header regexp &optional not-matching)
- "Limit the summary buffer to articles that match an 'extra' header."
+ "Limit the summary buffer to articles that match an `extra' header."
(interactive
(let ((header
(intern
(regexp-opt ',(append refs (list id subject)))))))
(gnus-fetch-headers (list last) (if (numberp limit)
(* 2 limit) limit) t))))
- article-ids)
+ article-ids new-unreads)
(when (listp new-headers)
(dolist (header new-headers)
- (push (mail-header-number header) article-ids)
- (when (member (mail-header-number header) gnus-newsgroup-unselected)
- (push (mail-header-number header) gnus-newsgroup-unreads)
- (setq gnus-newsgroup-unselected
- (delete (mail-header-number header)
- gnus-newsgroup-unselected))))
+ (push (mail-header-number header) article-ids))
+ (setq article-ids (nreverse article-ids))
+ (setq new-unreads
+ (gnus-sorted-intersection gnus-newsgroup-unselected article-ids))
+ (setq gnus-newsgroup-unselected
+ (gnus-sorted-ndifference gnus-newsgroup-unselected new-unreads))
+ (setq gnus-newsgroup-unreads
+ (gnus-sorted-nunion gnus-newsgroup-unreads new-unreads))
(setq gnus-newsgroup-headers
(gnus-delete-duplicate-headers
(gnus-merge
'list gnus-newsgroup-headers new-headers
'gnus-article-sort-by-number)))
(setq gnus-newsgroup-articles
- (gnus-sorted-nunion gnus-newsgroup-articles (nreverse article-ids)))
+ (gnus-sorted-nunion gnus-newsgroup-articles article-ids))
(gnus-summary-limit-include-thread id)))
(gnus-summary-show-thread))
((gnus-group-read-ephemeral-group
(setq vgroup (format
"nnvirtual:%s-%s" gnus-newsgroup-name
- (format-time-string "%Y%m%dT%H%M%S" (current-time))))
+ (format-time-string "%Y%m%dT%H%M%S")))
`(nnvirtual ,vgroup (nnvirtual-component-groups ,groups))
t
(cons (current-buffer) 'summary)))
;; Return whether we found the regexp.
(when (eq found 'found)
(goto-char point)
+ (sit-for 0) ;; Ensure that the point is visible in the summary window.
(gnus-summary-show-thread)
(gnus-summary-goto-subject gnus-current-article)
(gnus-summary-position-point)
You must have GNU Libidn (URL `http://www.gnu.org/software/libidn/')
installed for this command to work."
(interactive "P")
- (if (not (and (condition-case nil (require 'idna)
- (file-error))
- (mm-coding-system-p 'utf-8)
+ (if (not (and (mm-coding-system-p 'utf-8)
+ (condition-case nil
+ (require 'idna)
+ (file-error)
+ (invalid-operation))
+ (symbol-value 'idna-program)
(executable-find (symbol-value 'idna-program))))
(gnus-message
5 "GNU Libidn not installed properly (`idn' or `idna.el' missing)")
(when (and (not (memq article es))
(gnus-data-find article))
(gnus-summary-mark-article article gnus-canceled-mark)
- (run-hook-with-args 'gnus-summary-article-expire-hook
- 'delete
- (gnus-data-header
- (assoc article (gnus-data-list nil)))
- gnus-newsgroup-name
- nil
- nil)))))))
+ (run-hook-with-args
+ 'gnus-summary-article-expire-hook
+ 'delete
+ (gnus-data-header (assoc article (gnus-data-list nil)))
+ gnus-newsgroup-name
+ (cond
+ ((stringp nnmail-expiry-target) nnmail-expiry-target)
+ ((eq nnmail-expiry-target 'delete) nil)
+ (t
+ (let ((rescall (funcall nnmail-expiry-target
+ gnus-newsgroup-name)))
+ (if (stringp rescall) rescall nil))))
+ nil)))))))
(gnus-message 6 "Expiring articles...done")))))
(defun gnus-summary-expire-articles-now ()
(gnus-message 6 "Threading is now %s" (if gnus-show-threads "on" "off"))
(gnus-summary-position-point)))
-(eval-and-compile
- (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 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)
- (gnus-remove-overlays (point-min) (point-max) 'invisible 'gnus-sum)
+ (remove-overlays (point-min) (point-max) 'invisible 'gnus-sum)
(gnus-summary-position-point))
(defsubst gnus-summary--inv (p)
'gnus-sum))))
(point)))))
(when eoi
- (gnus-remove-overlays beg eoi 'invisible 'gnus-sum)
+ (remove-overlays beg eoi 'invisible 'gnus-sum)
(goto-char orig)
(gnus-summary-position-point)
eoi)))
(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)))
+ (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)
(when (> start (point))
(message "Hiding the thread moved us backwards, aborting!")
(setq to end))
(if gnus-newsgroup-selected-overlay
;; Move old overlay.
- (gnus-move-overlay
+ (move-overlay
gnus-newsgroup-selected-overlay from to (current-buffer))
;; Create new overlay.
- (gnus-overlay-put
- (setq gnus-newsgroup-selected-overlay (gnus-make-overlay from to))
+ (overlay-put
+ (setq gnus-newsgroup-selected-overlay (make-overlay from to))
'face gnus-summary-selected-face))))))
(defvar gnus-summary-highlight-line-cached nil)