X-Git-Url: http://cgit.sxemacs.org/?p=gnus;a=blobdiff_plain;f=lisp%2Fgnus-sum.el;h=5fc78baecbdcc30971d5893501d87708c4e60ce8;hp=0ed921f7e2717d28d1d8ee9b64b59bc3c601602a;hb=HEAD;hpb=37159f7bfe7bc12dc4ca3966e2a7525be82a60c9 diff --git a/lisp/gnus-sum.el b/lisp/gnus-sum.el index 0ed921f7e..5fc78baec 100644 --- a/lisp/gnus-sum.el +++ b/lisp/gnus-sum.el @@ -1,6 +1,6 @@ ;;; gnus-sum.el --- summary mode commands for Gnus -;; Copyright (C) 1996-2014 Free Software Foundation, Inc. +;; Copyright (C) 1996-2016 Free Software Foundation, Inc. ;; Author: Lars Magne Ingebrigtsen ;; Keywords: news @@ -997,7 +997,7 @@ following hook: (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) @@ -1160,9 +1160,9 @@ which it may alter in any way." '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)) @@ -1656,7 +1656,7 @@ while still allowing them to affect operations done in other buffers. For example: \(setq gnus-newsgroup-variables - '(message-use-followup-to + \\='(message-use-followup-to (gnus-visible-headers . \"^From:\\\\|^Newsgroups:\\\\|^Subject:\\\\|^Date:\\\\|^To:\"))) ") @@ -2185,6 +2185,7 @@ increase the score of each group you read." (gnus-define-keys (gnus-summary-wash-mime-map "M" gnus-summary-wash-map) "w" gnus-article-decode-mime-words "c" gnus-article-decode-charset + "h" gnus-mime-buttonize-attachments-in-header "v" gnus-mime-view-all-parts "b" gnus-article-view-part) @@ -2219,6 +2220,7 @@ increase the score of each group you read." "\M-\C-e" gnus-summary-expire-articles-now "\177" gnus-summary-delete-article [delete] gnus-summary-delete-article + [backspace] gnus-summary-delete-article "m" gnus-summary-move-article "r" gnus-summary-respool-article "w" gnus-summary-edit-article @@ -2391,6 +2393,8 @@ increase the score of each group you read." ["QP" gnus-article-de-quoted-unreadable t] ["Base64" gnus-article-de-base64-unreadable t] ["View MIME buttons" gnus-summary-display-buttonized t] + ["View MIME buttons in header" + gnus-mime-buttonize-attachments-in-header t] ["View all" gnus-mime-view-all-parts t] ["Verify and Decrypt" gnus-summary-force-verify-and-decrypt t] ["Encrypt body" gnus-article-encrypt-body @@ -2421,6 +2425,7 @@ increase the score of each group you read." ["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] @@ -4372,7 +4377,7 @@ Returns HEADER if it was entered in the DEPENDENCIES. Returns nil otherwise." ;; 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 @@ -5617,7 +5622,7 @@ If SELECT-ARTICLES, only select those articles from GROUP." (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" @@ -5966,7 +5971,7 @@ If SELECT-ARTICLES, only select those articles from GROUP." (min (car active)) (max (cdr active)) (types gnus-article-mark-lists) - marks var articles article mark mark-type + var articles article mark mark-type bgn end) ;; Hack to avoid adjusting marks for imap. (when (eq (car (gnus-find-method-for-group (gnus-info-group info))) @@ -7331,6 +7336,7 @@ If FORCE (the prefix), also save the .newsrc file(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) @@ -8140,7 +8146,7 @@ score higher than the default score." "Select the first unread subject that has a score over the default score." (interactive) (let ((data gnus-newsgroup-data) - article score) + article) (while (and (setq article (gnus-data-number (car data))) (or (gnus-data-read-p (car data)) (not (> (gnus-summary-article-score article) @@ -8424,7 +8430,7 @@ articles that are younger than AGE days." (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 @@ -9063,22 +9069,24 @@ non-numeric or nil fetch the number specified by the (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)) @@ -9330,7 +9338,7 @@ Obeys the standard process/prefix convention." ((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))) @@ -9482,6 +9490,7 @@ Optional argument BACKWARD means do search for backward. ;; 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) @@ -9510,7 +9519,7 @@ be taken into consideration. If NOT-CASE-FOLD, case won't be folded in the comparisons. If NOT-MATCHING, return a list of all articles that not match REGEXP on HEADER." (let ((case-fold-search (not not-case-fold)) - articles d func) + articles func) (if (consp header) (if (eq (car header) 'extra) (setq func @@ -9780,6 +9789,8 @@ If ARG is a negative number, turn header display off." (declare-function article-narrow-to-head "gnus-art" ()) (declare-function gnus-article-hidden-text-p "gnus-art" (type)) (declare-function gnus-delete-wash-type "gnus-art" (type)) +(declare-function gnus-mime-buttonize-attachments-in-header + "gnus-art" (&optional interactive)) (defun gnus-summary-toggle-header (&optional arg) "Show the headers if they are hidden, or hide them if they are shown. @@ -9811,7 +9822,10 @@ If ARG is a negative number, hide the unwanted header lines." (gnus-treat-hide-boring-headers nil)) (gnus-delete-wash-type 'headers) (gnus-treat-article 'head)) - (gnus-treat-article 'head)) + (gnus-treat-article 'head) + ;; Add attachment buttons to the header. + (when gnus-mime-display-attachment-buttons-in-header + (gnus-mime-buttonize-attachments-in-header))) (widen) (if window (set-window-start window (goto-char (point-min)))) @@ -9858,9 +9872,12 @@ invalid IDNA string (`xn--bar' is invalid). 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)") @@ -10436,13 +10453,19 @@ This will be the case if the article has both been mailed and posted." (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 () @@ -10605,7 +10628,7 @@ groups." (let ((lines (count-lines (point) (point-max))) (length (- (point-max) (point))) (case-fold-search t) - (body (copy-marker (point)))) + (body (point-marker))) (goto-char (point-min)) (when (re-search-forward "^content-length:[ \t]\\([0-9]+\\)" body t) (delete-region (match-beginning 1) (match-end 1)) @@ -11674,20 +11697,10 @@ 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))) -(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) @@ -11714,7 +11727,7 @@ Returns nil if no thread was there to be shown." '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))) @@ -11783,10 +11796,10 @@ Returns nil if no threads were there to be hidden." (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!") @@ -12605,11 +12618,11 @@ If REVERSE, save parts that do not match TYPE." (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)