• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /macosx-10.9.5/emacs-92/emacs/lisp/gnus/

Lines Matching +refs:article +refs:date +refs:local

51 (autoload 'gnus-article-outlook-deuglify-article "deuglify"
54 (autoload 'gnus-article-outlook-unwrap-lines "deuglify" nil t)
55 (autoload 'gnus-article-outlook-repair-attribution "deuglify" nil t)
56 (autoload 'gnus-article-outlook-rearrange-citation "deuglify" nil t)
67 If an unread article in the group refers to an older, already read (or
68 just marked as read) article, the old article will not normally be
191 "*String indicating that the current article has the same subject as the previous.
198 "*If t, many commands will go to the next unread article.
200 \"naturally\" select the next article, like, for instance, `SPC' at
201 the end of an article.
203 If nil, the marking commands do NOT go to the next unread article
204 \(they go to the next article instead). If `never', commands that
205 usually go to the next unread article, will go to the next article,
214 "*Default article score level.
222 "*Default threshold for a high scored article.
223 An article will be highlighted as high scored if its score is greater
230 "*Default threshold for a low scored article.
231 An article will be highlighted as low scored if its score is smaller
261 `gnus-summary-show-thread' by hand or select an article."
307 "If non-nil, select an article on group entry.
308 An article is selected automatically when entering a group
312 Which article is selected is controlled by the variable
330 unread article), `best' (place point on the subject line of the
331 higest-scored article), `unseen' (place point on the subject line of
332 the first unseen article), `unseen-or-unread' (place point on the subject
333 line of the first unseen article or, if all article have been seen, on the
334 subject line of the first unread article), or a function to be called to
352 confirmation if you are located on the last article in the group.
363 "*If non-nil, select the next article with the same subject.
365 the first unread article."
373 article), `undownloaded' (maneuvering while unplugged ignores articles
379 and, when unplugged, a subset of the undownloaded article list."
388 "*If non-nil, consider the current article when moving.
390 current article is unread."
409 :group 'gnus-article-hiding
410 :group 'gnus-article-headers
418 (defcustom gnus-single-article-buffer t
420 If nil, each group will get its own article buffer."
421 :group 'gnus-article-various
428 :group 'gnus-article-various
596 "*There is no thread under the article."
601 "*There is a thread under the article."
620 "*If non-nil, user marking commands will not mark an article as expirable, even if the group has auto-expire turned on."
635 "*If non-nil, one pseudo-article will be created for each file to be viewed.
667 %A Current article number
668 %z Current article score
672 %Z A string with unread/unselected article counts
674 %S Subject of the current article
688 :group 'gnus-article-hiding
695 This variable is local to each summary buffer and usually set by the
700 (defcustom gnus-article-sort-functions '(gnus-article-sort-by-number)
704 article should be sorted before the other. If you use more than one
706 probably always include `gnus-article-sort-by-number' in the list of
707 sorting functions -- preferably first. Also note that sorting by date
709 very similar. (Sorting by date means sorting by the time the message
712 Ready-made functions include `gnus-article-sort-by-number',
713 `gnus-article-sort-by-author', `gnus-article-sort-by-subject',
714 `gnus-article-sort-by-date', `gnus-article-sort-by-random'
715 and `gnus-article-sort-by-score'.
720 :type '(repeat (choice (function-item gnus-article-sort-by-number)
721 (function-item gnus-article-sort-by-author)
722 (function-item gnus-article-sort-by-subject)
723 (function-item gnus-article-sort-by-date)
724 (function-item gnus-article-sort-by-score)
725 (function-item gnus-article-sort-by-random)
730 By default, threads are sorted by article number.
736 sorting functions -- preferably first. Also note that sorting by date
738 very similar. (Sorting by date means sorting by the time the message
743 `gnus-thread-sort-by-date', `gnus-thread-sort-by-score',
745 `gnus-thread-sort-by-most-recent-date',
750 `gnus-article-sort-functions' controls how articles are sorted."
755 (function-item gnus-thread-sort-by-date)
764 The function is called with the scores of the article and each
773 This variable is local to the summary buffers."
783 This variable is local to the summary buffers."
850 (defcustom gnus-select-article-hook nil
851 "*A hook called when an article is selected."
853 :options '(gnus-agent-fetch-selected-article)
856 (defcustom gnus-visual-mark-article-hook
858 "*Hook run after selecting an article in the summary buffer.
859 It is meant to be used for highlighting the article in some way. It
886 (defcustom gnus-mark-article-hook '(gnus-summary-mark-read-and-unread-as-read)
887 "*A hook called when an article is selected for the first time.
888 The hook is intended to mark an article as read (or unread)
903 (defcustom gnus-summary-article-move-hook nil
904 "*A hook called after an article is moved, copied, respooled, or crossposted."
909 (defcustom gnus-summary-article-delete-hook nil
910 "*A hook called after an article is deleted."
915 (defcustom gnus-summary-article-expire-hook nil
916 "*A hook called after an article is expired."
924 "*If non-nil, display an arrow highlighting the current article."
930 "Face used for highlighting the current article in the summary buffer."
983 score: The article's score
984 default: The default article score.
988 mark: The article's mark.
989 uncached: Non-nil if the article is uncached."
995 "Function called to allow alteration of article header structures.
996 The function is called with one parameter, the article header vector,
1068 (defcustom gnus-summary-show-article-charset-alist
1071 The article will be shown with the charset corresponding to the
1119 (defcustom gnus-article-loose-mime nil
1127 :group 'gnus-article-mime)
1129 (defcustom gnus-article-emulate-mime t
1136 :group 'gnus-article-mime)
1141 (defvar gnus-article-mime-handles nil)
1142 (defvar gnus-article-decoded-p nil)
1143 (defvar gnus-article-charset nil)
1144 (defvar gnus-article-ignored-charsets nil)
1148 (defvar gnus-original-article nil)
1149 (defvar gnus-article-internal-prepare-hook nil)
1173 (defvar gnus-summary-display-article-function nil)
1188 (?D ,(macroexpand '(mail-header-date gnus-tmp-header)) ?s)
1189 (?d (gnus-dd-mmm (mail-header-date gnus-tmp-header)) ?s)
1190 (?o (gnus-date-iso8601 (mail-header-date gnus-tmp-header)) ?s)
1220 (user-date (gnus-user-date
1221 ,(macroexpand '(mail-header-date gnus-tmp-header))) ?s))
1235 (?A gnus-tmp-article-number ?d)
1246 (?z (gnus-summary-article-score gnus-tmp-article-number) ?d)
1251 "Default regexp for article search command.")
1254 "Default shell command on article.")
1281 "Alist of read articles and article marks in the current newsgroup.")
1295 "Sorted list of articles that come from the article cache.")
1351 "List of article headers in the current newsgroup.")
1363 (defvar gnus-current-article nil)
1364 (defvar gnus-article-current nil)
1367 (defvar gnus-last-article nil)
1373 (defvar gnus-article-before-search nil)
1375 (defvar gnus-summary-local-variables
1396 gnus-current-article gnus-current-headers gnus-have-all-headers
1397 gnus-last-article gnus-article-internal-prepare-hook
1409 gnus-newsgroup-adaptive-score-file (gnus-reffed-article-number . -1)
1416 "Variables that are buffer-local to the summary buffers.")
1420 A list of newsgroup (summary buffer) local variables, or cons of
1426 before assignment to the local variable rather than just assigned to it.
1428 be evaluated but the global value of the local variable will be used
1635 (defvar gnus-article-commands-menu)
1646 "n" gnus-summary-next-unread-article
1647 "p" gnus-summary-prev-unread-article
1648 "N" gnus-summary-next-article
1649 "P" gnus-summary-prev-article
1654 "." gnus-summary-first-unread-article
1655 "," gnus-summary-best-unread-article
1656 "\M-s" gnus-summary-search-article-forward
1657 "\M-r" gnus-summary-search-article-backward
1658 "<" gnus-summary-beginning-of-article
1659 ">" gnus-summary-end-of-article
1660 "j" gnus-summary-goto-article
1661 "^" gnus-summary-refer-parent-article
1662 "\M-^" gnus-summary-refer-article
1663 "u" gnus-summary-tick-article-forward
1664 "!" gnus-summary-tick-article-forward
1665 "U" gnus-summary-tick-article-backward
1675 "e" gnus-summary-edit-article
1698 "\C-c\C-s\C-d" gnus-summary-sort-by-date
1709 "C" gnus-summary-cancel-article
1713 "o" gnus-summary-save-article
1714 "\C-o" gnus-summary-save-article-mail
1716 "\M-k" gnus-summary-edit-local-kill
1723 gnus-mouse-2 gnus-mouse-pick-article
1729 "s" gnus-summary-isearch-article
1731 "g" gnus-summary-show-article
1732 "l" gnus-summary-goto-last-article
1739 "*" gnus-cache-enter-article
1740 "\M-*" gnus-cache-remove-article
1746 "h" gnus-summary-select-article-buffer
1748 "b" gnus-article-view-part
1757 "t" gnus-summary-tick-article-forward
1758 "!" gnus-summary-tick-article-forward
1810 "n" gnus-summary-next-unread-article
1811 "p" gnus-summary-prev-unread-article
1812 "N" gnus-summary-next-article
1813 "P" gnus-summary-prev-article
1818 "f" gnus-summary-first-unread-article
1819 "b" gnus-summary-best-unread-article
1820 "j" gnus-summary-goto-article
1822 "l" gnus-summary-goto-last-article
1823 "o" gnus-summary-pop-article)
1862 (gnus-define-keys (gnus-summary-article-map "A" gnus-summary-mode-map)
1870 "<" gnus-summary-beginning-of-article
1871 ">" gnus-summary-end-of-article
1872 "b" gnus-summary-beginning-of-article
1873 "e" gnus-summary-end-of-article
1874 "^" gnus-summary-refer-parent-article
1875 "r" gnus-summary-refer-parent-article
1879 "g" gnus-summary-show-article
1880 "s" gnus-summary-isearch-article
1881 "P" gnus-summary-print-article
1883 "t" gnus-article-babel)
1886 "b" gnus-article-add-buttons
1887 "B" gnus-article-add-buttons-to-head
1888 "o" gnus-article-treat-overstrike
1889 "e" gnus-article-emphasize
1890 "w" gnus-article-fill-cited-article
1891 "Q" gnus-article-fill-long-lines
1892 "C" gnus-article-capitalize-sentences
1893 "c" gnus-article-remove-cr
1894 "q" gnus-article-de-quoted-unreadable
1895 "6" gnus-article-de-base64-unreadable
1896 "Z" gnus-article-decode-HZ
1897 "h" gnus-article-wash-html
1898 "u" gnus-article-unsplit-urls
1900 "f" gnus-article-display-x-face
1907 "a" gnus-article-strip-headers-in-body ;; mnemonic: wash archive
1908 "p" gnus-article-verify-x-pgp-sig
1909 "d" gnus-article-treat-dumbquotes)
1913 "u" gnus-article-outlook-unwrap-lines
1914 "a" gnus-article-outlook-repair-attribution
1915 "c" gnus-article-outlook-rearrange-citation
1916 "f" gnus-article-outlook-deuglify-article) ;; mnemonic: full deuglify
1919 "a" gnus-article-hide
1920 "h" gnus-article-hide-headers
1921 "b" gnus-article-hide-boring-headers
1922 "s" gnus-article-hide-signature
1923 "c" gnus-article-hide-citation
1924 "C" gnus-article-hide-citation-in-followups
1925 "l" gnus-article-hide-list-identifiers
1926 "B" gnus-article-strip-banner
1927 "P" gnus-article-hide-pem
1928 "\C-c" gnus-article-hide-citation-maybe)
1931 "a" gnus-article-highlight
1932 "h" gnus-article-highlight-headers
1933 "c" gnus-article-highlight-citation
1934 "s" gnus-article-highlight-signature)
1937 "f" gnus-article-treat-fold-headers
1938 "u" gnus-article-treat-unfold-headers
1939 "n" gnus-article-treat-fold-newsgroups)
1942 "x" gnus-article-display-x-face
1943 "d" gnus-article-display-face
1945 "D" gnus-article-remove-images
1951 "w" gnus-article-decode-mime-words
1952 "c" gnus-article-decode-charset
1954 "b" gnus-article-view-part)
1957 "z" gnus-article-date-ut
1958 "u" gnus-article-date-ut
1959 "l" gnus-article-date-local
1960 "p" gnus-article-date-english
1961 "e" gnus-article-date-lapsed
1962 "o" gnus-article-date-original
1963 "i" gnus-article-date-iso8601
1964 "s" gnus-article-date-user)
1967 "t" gnus-article-remove-trailing-blank-lines
1968 "l" gnus-article-strip-leading-blank-lines
1969 "m" gnus-article-strip-multiple-blank-lines
1970 "a" gnus-article-strip-blank-lines
1971 "A" gnus-article-strip-all-blank-lines
1972 "s" gnus-article-strip-leading-space
1973 "e" gnus-article-strip-trailing-space
1974 "w" gnus-article-remove-leading-whitespace)
1988 "\177" gnus-summary-delete-article
1989 [delete] gnus-summary-delete-article
1990 [backspace] gnus-summary-delete-article
1991 "m" gnus-summary-move-article
1992 "r" gnus-summary-respool-article
1993 "w" gnus-summary-edit-article
1994 "c" gnus-summary-copy-article
1995 "B" gnus-summary-crosspost-article
1998 "i" gnus-summary-import-article
1999 "I" gnus-summary-create-article
2000 "p" gnus-summary-article-posted-p)
2003 "o" gnus-summary-save-article
2004 "m" gnus-summary-save-article-mail
2005 "F" gnus-summary-write-article-file
2006 "r" gnus-summary-save-article-rmail
2007 "f" gnus-summary-save-article-file
2008 "b" gnus-summary-save-article-body-file
2009 "B" gnus-summary-write-article-body-file
2010 "h" gnus-summary-save-article-folder
2011 "v" gnus-summary-save-article-vm
2014 "s" gnus-soup-add-article)
2019 "v" gnus-article-view-part
2020 "o" gnus-article-save-part
2021 "c" gnus-article-copy-part
2022 "C" gnus-article-view-part-as-charset
2023 "e" gnus-article-view-part-externally
2024 "E" gnus-article-encrypt-body
2025 "i" gnus-article-inline-part
2026 "|" gnus-article-pipe-part)
2075 (defvar gnus-article-post-menu nil)
2134 ;; equivalent Commands menu in the article buffer here for
2138 ["All" gnus-article-hide t]
2139 ["Headers" gnus-article-hide-headers t]
2140 ["Signature" gnus-article-hide-signature t]
2141 ["Citation" gnus-article-hide-citation t]
2142 ["List identifiers" gnus-article-hide-list-identifiers t]
2143 ["Banner" gnus-article-strip-banner t]
2144 ["Boring headers" gnus-article-hide-boring-headers t])
2146 ["All" gnus-article-highlight t]
2147 ["Headers" gnus-article-highlight-headers t]
2148 ["Signature" gnus-article-highlight-signature t]
2149 ["Citation" gnus-article-highlight-citation t])
2151 ["Words" gnus-article-decode-mime-words t]
2152 ["Charset" gnus-article-decode-charset t]
2153 ["QP" gnus-article-de-quoted-unreadable t]
2154 ["Base64" gnus-article-de-base64-unreadable t]
2158 ["Encrypt body" gnus-article-encrypt-body
2165 ["Pipe part..." gnus-article-pipe-part t]
2166 ["Inline part" gnus-article-inline-part t]
2167 ["Encrypt body" gnus-article-encrypt-body
2171 ["View part externally" gnus-article-view-part-externally t]
2172 ["View part with charset..." gnus-article-view-part-as-charset t]
2173 ["Copy part" gnus-article-copy-part t]
2174 ["Save part..." gnus-article-save-part t]
2175 ["View part" gnus-article-view-part t]))
2177 ["Local" gnus-article-date-local t]
2178 ["ISO8601" gnus-article-date-iso8601 t]
2179 ["UT" gnus-article-date-ut t]
2180 ["Original" gnus-article-date-original t]
2181 ["Lapsed" gnus-article-date-lapsed t]
2182 ["User-defined" gnus-article-date-user t])
2184 ["Remove images" gnus-article-remove-images t]
2186 ["Show X-Face" gnus-article-display-x-face t]
2198 gnus-summary-show-article-from-menu-as-charset-%s" cs))))
2202 (let ((gnus-summary-show-article-charset-alist
2204 (gnus-summary-show-article 1))))
2212 ["Leading" gnus-article-strip-leading-blank-lines t]
2213 ["Multiple" gnus-article-strip-multiple-blank-lines t]
2214 ["Trailing" gnus-article-remove-trailing-blank-lines t]
2215 ["All of the above" gnus-article-strip-blank-lines t]
2216 ["All" gnus-article-strip-all-blank-lines t]
2217 ["Leading space" gnus-article-strip-leading-space t]
2218 ["Trailing space" gnus-article-strip-trailing-space t]
2220 gnus-article-remove-leading-whitespace t])
2221 ["Overstrike" gnus-article-treat-overstrike t]
2222 ["Dumb quotes" gnus-article-treat-dumbquotes t]
2223 ["Emphasis" gnus-article-emphasize t]
2224 ["Word wrap" gnus-article-fill-cited-article t]
2225 ["Fill long lines" gnus-article-fill-long-lines t]
2226 ["Capitalize sentences" gnus-article-capitalize-sentences t]
2227 ["Remove CR" gnus-article-remove-cr t]
2228 ["Quoted-Printable" gnus-article-de-quoted-unreadable t]
2229 ["Base64" gnus-article-de-base64-unreadable t]
2232 '(:help "\"Caesar rotate\" article by 13"))]
2235 ["Add buttons" gnus-article-add-buttons t]
2236 ["Add buttons to head" gnus-article-add-buttons-to-head t]
2240 ["Unfold headers" gnus-article-treat-unfold-headers t]
2241 ["Fold newsgroups" gnus-article-treat-fold-newsgroups t]
2242 ["Html" gnus-article-wash-html t]
2243 ["Unsplit URLs" gnus-article-unsplit-urls t]
2244 ["Verify X-PGP-Sig" gnus-article-verify-x-pgp-sig t]
2245 ["Decode HZ" gnus-article-decode-HZ t]
2247 ["Unwrap lines" gnus-article-outlook-unwrap-lines t]
2248 ["Repair attribution" gnus-article-outlook-repair-attribution t]
2249 ["Rearrange citation" gnus-article-outlook-rearrange-citation t]
2251 gnus-article-outlook-deuglify-article t])
2254 ["Save in default format..." gnus-summary-save-article
2256 '(:help "Save article using default method"))]
2257 ["Save in file..." gnus-summary-save-article-file
2259 '(:help "Save article in file"))]
2260 ["Save in Unix mail format..." gnus-summary-save-article-mail t]
2261 ["Save in MH folder..." gnus-summary-save-article-folder t]
2262 ["Save in VM folder..." gnus-summary-save-article-vm t]
2263 ["Save in RMAIL mbox..." gnus-summary-save-article-rmail t]
2264 ["Save body in file..." gnus-summary-save-article-body-file t]
2266 ["Add to SOUP packet" gnus-soup-add-article t]
2268 ["Print" gnus-summary-print-article
2274 ["Respool article..." gnus-summary-respool-article t]
2275 ["Move article..." gnus-summary-move-article
2277 'request-move-article gnus-newsgroup-name)]
2278 ["Copy article..." gnus-summary-copy-article t]
2279 ["Crosspost article..." gnus-summary-crosspost-article
2281 'request-replace-article gnus-newsgroup-name)]
2282 ["Import file..." gnus-summary-import-article
2284 'request-accept-article gnus-newsgroup-name)]
2285 ["Create article..." gnus-summary-create-article
2287 'request-accept-article gnus-newsgroup-name)]
2288 ["Check if posted" gnus-summary-article-posted-p t]
2289 ["Edit article" gnus-summary-edit-article
2291 ["Delete article" gnus-summary-delete-article
2302 '(:help "Decode uuencoded article(s)"))]
2311 ["Enter article" gnus-cache-enter-article t]
2312 ["Remove article" gnus-cache-remove-article t])
2313 ["Translate" gnus-article-babel t]
2314 ["Select article buffer" gnus-summary-select-article-buffer t]
2316 ["Isearch article..." gnus-summary-isearch-article t]
2317 ["Beginning of the article" gnus-summary-beginning-of-article t]
2318 ["End of the article" gnus-summary-end-of-article t]
2319 ["Fetch parent of article" gnus-summary-refer-parent-article t]
2322 ["Fetch article with id..." gnus-summary-refer-article t]
2324 ["Redisplay" gnus-summary-show-article t]
2325 ["Raw article" gnus-summary-show-raw-article :keys "C-u g"])))
2327 gnus-summary-article-menu gnus-summary-mode-map ""
2330 (if (not (keymapp gnus-summary-article-menu))
2332 gnus-article-commands-menu gnus-article-mode-map ""
2335 (setq gnus-article-commands-menu
2336 (copy-keymap gnus-summary-article-menu))
2337 (define-key gnus-article-mode-map [menu-bar commands]
2338 (cons "Commands" gnus-article-commands-menu))))
2367 '(:help "Post followup to this article"))]
2370 '(:help "Post followup to this article, quoting its contents"))]
2371 ["Supersede article" gnus-summary-supersede-article t]
2372 ["Cancel article" gnus-summary-cancel-article
2374 '(:help "Cancel an article you posted"))]
2380 '(:help "Mail a reply, quoting this article"))]
2384 '(:help "Mail a very wide reply, quoting this article"))]
2393 ["Create a local message" gnus-summary-news-other-window t]
2396 '(:help "Post a uuencoded article"))]
2407 (setq gnus-article-post-menu gnus-summary-post-menu))
2408 ((not gnus-article-post-menu)
2410 (setq gnus-article-post-menu
2412 (define-key gnus-article-mode-map [menu-bar post]
2413 (cons "Post" gnus-article-post-menu))
2433 ["Tick" gnus-summary-tick-article-forward t]
2479 ("Scroll article"
2482 '(:help "Show next page of article"))]
2485 '(:help "Show previous page of article"))]
2488 ["Next unread article" gnus-summary-next-unread-article t]
2489 ["Previous unread article" gnus-summary-prev-unread-article t]
2490 ["Next article" gnus-summary-next-article t]
2491 ["Previous article" gnus-summary-prev-article t]
2494 ["Next article same subject" gnus-summary-next-same-subject t]
2495 ["Previous article same subject" gnus-summary-prev-same-subject t]
2496 ["First unread article" gnus-summary-first-unread-article t]
2497 ["Best unread article" gnus-summary-best-unread-article t]
2499 ["Go to article number..." gnus-summary-goto-article t]
2500 ["Go to the last article" gnus-summary-goto-last-article t]
2501 ["Pop article off history" gnus-summary-pop-article t])
2506 ["Sort by date" gnus-summary-sort-by-date t]
2534 ["Search articles forward..." gnus-summary-search-article-forward t]
2535 ["Search articles backward..." gnus-summary-search-article-backward t]
2541 ["Edit local kill file" gnus-summary-edit-local-kill t]
2610 (gnus-summary-save-article "mail/save")
2611 (gnus-summary-search-article-forward "search" nil :visible nil)
2612 (gnus-summary-print-article "print")
2613 (gnus-summary-tick-article-forward "flag-followup" nil :visible nil)
2616 ;; (gnus-summary-show-article "stock_message-display" nil :visible nil)
2617 (gnus-summary-prev-article "left-arrow")
2618 (gnus-summary-next-article "right-arrow")
2624 ;; (gnus-summary-sort-by-date "sort-1-9" nil :visible nil)
2652 '((gnus-summary-prev-unread-article "gnus/prev-ur")
2653 (gnus-summary-next-unread-article "gnus/next-ur")
2661 (gnus-summary-save-article-file "gnus/save-aif")
2662 (gnus-summary-save-article "gnus/save-art")
2668 (gnus-summary-print-article "gnus/print" nil :visible nil)
2672 (gnus-summary-search-article-forward "gnus/search" nil :visible nil)
2717 ;; Need to set `gnus-summary-tool-bar-map' because `gnus-article-mode'
2720 (set (make-local-variable 'tool-bar-map) gnus-summary-tool-bar-map))
2734 ("article body" "body" string)
2735 ("article head" "head" string)
2815 Each line in this buffer represents one article. To read an
2816 article, you can, for instance, type `\\[gnus-summary-next-page]'. To move forwards
2817 and backwards while displaying articles, type `\\[gnus-summary-next-unread-article]' and `\\[gnus-summary-prev-unread-article]',
2821 follow up an article, type `\\[gnus-summary-followup]'. To mail a reply to the author
2822 of an article, type `\\[gnus-summary-reply]'.
2831 (kill-all-local-variables)
2835 (gnus-summary-make-local-variables)
2836 (let ((gnus-summary-local-variables gnus-newsgroup-variables))
2837 (gnus-summary-make-local-variables))
2842 (make-local-variable 'minor-mode-alist)
2843 (use-local-map gnus-summary-mode-map)
2852 (make-local-variable 'gnus-summary-line-format)
2853 (make-local-variable 'gnus-summary-line-format-spec)
2854 (make-local-variable 'gnus-summary-dummy-line-format)
2855 (make-local-variable 'gnus-summary-dummy-line-format-spec)
2856 (make-local-variable 'gnus-summary-mark-positions)
2857 (gnus-make-local-hook 'pre-command-hook)
2865 (defun gnus-summary-make-local-variables ()
2866 "Make all the local summary buffer variables."
2868 (dolist (local gnus-summary-local-variables)
2869 (if (consp local)
2871 (if (eq (cdr local) 'global)
2873 (setq global (symbol-value (car local)))
2875 (setq global (eval (cdr local))))
2876 (set (make-local-variable (car local)) global))
2877 ;; Simple nil-valued local variable.
2878 (set (make-local-variable local) nil)))))
2880 (defun gnus-summary-clear-local-variables ()
2881 (let ((locals gnus-summary-local-variables))
2939 (defun gnus-data-enter (after-article number mark pos header level offset)
2940 (let ((data (gnus-data-find-list after-article)))
2942 (error "No such article: %d" after-article))
2948 (defun gnus-data-enter-list (after-article list &optional offset)
2950 (let ((data (and after-article (gnus-data-find-list after-article)))
2953 after-article))
2974 (defun gnus-data-remove (article &optional offset)
2976 (if (= (gnus-data-number (car data)) article)
2983 (when (= (gnus-data-number (cadr data)) article)
3005 (defun gnus-summary-article-pseudo-p (article)
3006 "Say whether this article is a pseudo article or not."
3007 (not (vectorp (gnus-data-header (gnus-data-find article)))))
3009 (defmacro gnus-summary-article-sparse-p (article)
3010 "Say whether this article is a sparse article or not."
3011 `(memq ,article gnus-newsgroup-sparse))
3013 (defmacro gnus-summary-article-ancient-p (article)
3014 "Say whether this article is a sparse article or not."
3015 `(memq ,article gnus-newsgroup-ancient))
3017 (defun gnus-article-parent-p (number)
3018 "Say whether this article is a parent or not."
3020 (and (cdr data) ; There has to be an article after...
3024 (defun gnus-article-children (number)
3037 "If the current article is intangible, then jump to a different article."
3041 (defmacro gnus-summary-article-intangible-p ()
3042 "Say whether this article is intangible or not."
3045 (defun gnus-article-read-p (article)
3047 (not (or (memq article gnus-newsgroup-marked)
3048 (memq article gnus-newsgroup-spam-marked)
3049 (memq article gnus-newsgroup-unreads)
3050 (memq article gnus-newsgroup-unselected)
3051 (memq article gnus-newsgroup-dormant))))
3055 (defmacro gnus-summary-article-number ()
3056 "The article number of the article on the current line.
3057 If there isn't an article number here, then we return the current
3058 article number."
3064 (defmacro gnus-summary-article-header (&optional number)
3065 "Return the header of article NUMBER."
3067 ,(or number '(gnus-summary-article-number)))))
3070 "Return the level of thread that starts with article NUMBER."
3075 ,(or number '(gnus-summary-article-number))))))
3077 (defmacro gnus-summary-article-mark (&optional number)
3078 "Return the mark of article NUMBER."
3080 ,(or number '(gnus-summary-article-number)))))
3082 (defmacro gnus-summary-article-pos (&optional number)
3083 "Return the position of the line of article NUMBER."
3085 ,(or number '(gnus-summary-article-number)))))
3087 (defalias 'gnus-summary-subject-string 'gnus-summary-article-subject)
3088 (defmacro gnus-summary-article-subject (&optional number)
3093 '(gnus-data-header (assq (gnus-summary-article-number)
3099 (defmacro gnus-summary-article-score (&optional number)
3100 "Return current article score."
3101 `(or (cdr (assq ,(or number '(gnus-summary-article-number))
3105 (defun gnus-summary-article-children (&optional number)
3106 "Return a list of article numbers that are children of article NUMBER."
3107 (let* ((data (gnus-data-find-list (or number (gnus-summary-article-number))))
3117 (defun gnus-summary-article-parent (&optional number)
3118 "Return the article number of the parent of article NUMBER."
3119 (let* ((data (gnus-data-find-list (or number (gnus-summary-article-number))
3124 ;; We search until we find an article with a level less than
3143 (defmacro gnus-article-mark (number)
3144 "Return the MARK of article NUMBER.
3147 `gnus-summary-article-mark' should be used to examine the
3209 (defun gnus-mouse-pick-article (e)
3244 (defun gnus-summary-set-article-display-arrow (pos)
3277 (unless gnus-single-article-buffer
3278 (make-local-variable 'gnus-article-buffer)
3279 (make-local-variable 'gnus-article-current)
3280 (make-local-variable 'gnus-original-article-buffer))
3282 ;; Set any local variables in the group parameters.
3283 (gnus-summary-set-local-parameters gnus-newsgroup-name)
3287 "Set the global equivalents of the buffer-local variables.
3289 buffer that was in action when the last article was fetched."
3299 (article-buffer gnus-article-buffer)
3300 (original gnus-original-article-buffer)
3301 (gac gnus-article-current)
3302 (reffed gnus-reffed-article-number)
3321 gnus-article-current gac
3323 gnus-article-buffer article-buffer
3324 gnus-original-article-buffer original
3325 gnus-reffed-article-number reffed
3334 ;; The article buffer also has local variables.
3335 (when (gnus-buffer-live-p gnus-article-buffer)
3336 (set-buffer gnus-article-buffer)
3339 (defun gnus-summary-article-unread-p (article)
3341 (memq article gnus-newsgroup-unreads))
3343 (defun gnus-summary-first-article-p (&optional article)
3344 "Return whether ARTICLE is the first article in the buffer."
3345 (if (not (setq article (or article (gnus-summary-article-number))))
3347 (eq article (caar gnus-newsgroup-data))))
3349 (defun gnus-summary-last-article-p (&optional article)
3350 "Return whether ARTICLE is the last article in the buffer."
3351 (if (not (setq article (or article (gnus-summary-article-number))))
3352 ;; All non-existent numbers are the last article. :-)
3354 (not (cdr (gnus-data-find-list article)))))
3537 (article (gnus-summary-article-number))
3538 (score (gnus-summary-article-score article)))
3541 (< (gnus-summary-article-score)
3543 ;; This article has a low score, so we mark it as read.
3544 (when (memq article gnus-newsgroup-unreads)
3545 (gnus-summary-mark-article-as-read gnus-low-score-mark))
3546 (when (eq (gnus-summary-article-mark) gnus-low-score-mark)
3547 ;; This article was previously marked as read on account
3550 (gnus-summary-mark-article-as-unread gnus-unread-mark)))
3605 (defun gnus-summary-set-local-parameters (group)
3606 "Go through the local params of GROUP and set all variable specs in that list."
3619 (make-local-variable (car elem))
3622 (defun gnus-summary-read-group (group &optional show-all no-article
3627 If NO-ARTICLE is non-nil, no article is selected initially.
3634 group show-all no-article
3651 (defun gnus-summary-read-group-1 (group show-all no-article
3743 'gnus-tree-highlight-article))
3772 ;; Show first unread article if requested.
3773 (if (and (not no-article)
3779 (let ((art (gnus-summary-article-number)))
3783 (gnus-summary-goto-article art))))
3866 nil ; This article shouldn't be gathered
3870 "Query where the respool algorithm would put this article."
3872 (gnus-summary-select-article)
3873 (message (gnus-general-simplify-subject (gnus-summary-article-subject))))
4053 ;; An article with this Message-ID has already been seen.
4081 ;; Yuk! This is a reference loop. Make the article be a
4082 ;; root article.
4106 subject child end new-child date)
4119 date (mail-header-date header)
4127 subject date)
4138 gnus-reffed-article-number
4143 (push gnus-reffed-article-number gnus-newsgroup-limit)
4144 (push gnus-reffed-article-number gnus-newsgroup-sparse)
4145 (push (cons gnus-reffed-article-number gnus-sparse-mark)
4147 (decf gnus-reffed-article-number)))
4179 ;; This function has to be called with point after the article number
4186 ;; overview: [num subject from date id refs chars lines misc]
4206 (nnheader-nov-field) ; date
4232 the id of the parent article (if any)."
4271 header article)
4278 (setq article (read (current-buffer))
4279 header (gnus-nov-parse-line article dependencies)))
4284 (if (memq (setq article (mail-header-number header))
4289 gnus-newsgroup-unreads article))
4291 (delq article gnus-newsgroup-unselected)))
4292 (push article gnus-newsgroup-ancient)))
4295 (defun gnus-summary-update-article-line (article header)
4303 (gnus-summary-goto-subject article)
4304 (let* ((datal (gnus-data-find-list article))
4313 (memq article gnus-newsgroup-undownloaded)
4314 (gnus-article-mark article)
4315 (memq article gnus-newsgroup-replied)
4316 (memq article gnus-newsgroup-expirable)
4327 article
4334 nil (cdr (assq article gnus-newsgroup-scored))
4335 (memq article gnus-newsgroup-processable))
4342 (defun gnus-summary-update-article (article &optional iheader)
4345 (let* ((header (gnus-summary-article-header article))
4347 (data (gnus-data-find article))
4365 ;; Set the (possibly) new article number in the data structure.
4366 (gnus-data-set-number data (gnus-id-to-article id))
4377 ;; Get the thread this article is part of.
4382 (gnus-summary-article-number))))
4423 "Return the header for article NUMBER."
4453 (defun gnus-id-to-article (id)
4454 "Return the article number of ID."
4461 "Return the article headers of ID."
4464 (defun gnus-article-displayed-root-p (article)
4465 "Say whether ARTICLE is a root(ish) article."
4466 (let ((level (gnus-summary-thread-level article))
4467 (refs (mail-header-references (gnus-summary-article-header article)))
4475 (null (setq particle (gnus-id-to-article
4507 ;; below it to find whether this article is in this
4522 ;; If this article is in no thread, then it's a root.
4538 (gnus-summary-goto-article
4609 (when gnus-article-sort-functions
4614 gnus-article-sort-functions)))
4619 "Return header of first article in THREAD.
4627 (defsubst gnus-article-sort-by-number (h1 h2)
4628 "Sort articles by article number."
4633 "Sort threads by root article number."
4634 (gnus-article-sort-by-number
4637 (defsubst gnus-article-sort-by-random (h1 h2)
4638 "Sort articles by article number."
4642 "Sort threads by root article number."
4643 (gnus-article-sort-by-random
4646 (defsubst gnus-article-sort-by-lines (h1 h2)
4647 "Sort articles by article Lines header."
4652 "Sort threads by root article Lines header."
4653 (gnus-article-sort-by-lines
4656 (defsubst gnus-article-sort-by-chars (h1 h2)
4662 "Sort threads by root article octet length."
4663 (gnus-article-sort-by-chars
4666 (defsubst gnus-article-sort-by-author (h1 h2)
4680 (gnus-article-sort-by-author
4683 (defsubst gnus-article-sort-by-subject (h1 h2)
4691 (gnus-article-sort-by-subject
4694 (defsubst gnus-article-sort-by-date (h1 h2)
4695 "Sort articles by root article date."
4697 (gnus-date-get-time (mail-header-date h1))
4698 (gnus-date-get-time (mail-header-date h2))))
4700 (defun gnus-thread-sort-by-date (h1 h2)
4701 "Sort threads by root article date."
4702 (gnus-article-sort-by-date
4705 (defsubst gnus-article-sort-by-score (h1 h2)
4706 "Sort articles by root article score.
4716 "Sort threads by root article score."
4717 (gnus-article-sort-by-score
4739 "Sort threads such that the thread with the most recently arrived article comes first."
4743 "Return the highest article number in THREAD."
4748 (defun gnus-thread-sort-by-most-recent-date (h1 h2)
4749 "Sort threads such that the thread with the most recently dated article comes first."
4750 (> (gnus-thread-latest-date h1) (gnus-thread-latest-date h2)))
4752 (defun gnus-thread-latest-date (thread)
4753 "Return the highest article date in THREAD."
4760 (time-to-seconds (mail-header-parse-date
4761 (mail-header-date header)))
4911 ;; We let the first article adopt the rest.
4956 ;; If the article lies outside the current limit,
4972 ;; Perhaps this article is to be marked as read?
4978 (not (gnus-summary-article-sparse-p number))
4979 (not (gnus-summary-article-ancient-p number)))
4991 ;; article.
5001 (setq gnus-tmp-unread (gnus-article-mark number))
5156 ;; Mark article as read when it has a low score.
5161 (not (gnus-summary-article-ancient-p number)))
5169 (setq mark (gnus-article-mark number))
5217 ;; not if there is only 1 article.
5242 (set (make-local-variable 'gnus-current-select-method)
5320 ;; Adjust and set lists of article marks.
5380 ;; Set up the article buffer now, if necessary.
5381 (unless gnus-single-article-buffer
5382 (gnus-article-setup-buffer))
5383 ;; First and last article in this newsgroup.
5409 gnus-article-mark-lists))
5412 `(lambda () (gnus-article-marked-p ',(cdr elem)))))
5421 (defun gnus-article-marked-p (type &optional article)
5422 (let ((article (or article number)))
5425 (memq article gnus-newsgroup-marked))
5427 (memq article gnus-newsgroup-spam-marked))
5429 (memq article gnus-newsgroup-unsendable))
5431 (memq article gnus-newsgroup-undownloaded))
5433 (memq article gnus-newsgroup-downloadable))
5435 (memq article gnus-newsgroup-unreads))
5437 (memq article gnus-newsgroup-reads))
5439 (memq article gnus-newsgroup-dormant) )
5441 (memq article gnus-newsgroup-expirable))
5443 (memq article gnus-newsgroup-replied))
5445 (memq article gnus-newsgroup-killed))
5447 (assq article gnus-newsgroup-bookmarks))
5449 (assq article gnus-newsgroup-scored))
5451 (memq article gnus-newsgroup-saved))
5453 (memq article gnus-newsgroup-cached))
5455 (memq article gnus-newsgroup-forwarded))
5457 (not (memq article gnus-newsgroup-unseen)))
5459 (memq article gnus-newsgroup-recent))
5574 (defun gnus-article-mark-to-type (mark)
5576 (or (cadr (assq mark gnus-article-special-mark-lists))
5579 (defun gnus-article-unpropagatable-p (mark)
5581 (memq mark gnus-article-unpropagated-mark-lists))
5584 "Set all article lists and remove all marks that are no longer valid."
5589 (types gnus-article-mark-lists)
5590 marks var articles article mark mark-type
5595 mark-type (gnus-article-mark-to-type mark)
5614 (while (setq article (pop articles))
5615 (cond ((consp article)
5616 (setq bgn (max (car article) min)
5617 end (min (cdr article) max))
5621 ((and (<= min article)
5622 (>= max article))
5623 (setq l (setcdr l (cons article nil))))))
5633 (when (or (not (consp (setq article (pop articles))))
5634 (< (car article) min)
5635 (> (car article) max))
5636 (set var (delq article (symbol-value var))))))
5659 (dolist (elem gnus-article-mark-lists)
5660 (when (eq (gnus-article-mark-to-type (cdr elem)) 'list)
5671 (let ((types gnus-article-mark-lists)
5701 (when (eq (gnus-article-mark-to-type (cdr type)) 'list)
5706 (not (gnus-article-unpropagatable-p (cdr type))))
5739 "Set the mode line of the article or summary buffers.
5748 ;; variables are buffer-local to that buffer.
5758 (gnus-tmp-article-number (or gnus-current-article 0))
5785 (get-buffer gnus-article-buffer))))
5874 ;; First peel off all invalid article numbers.
5882 ;; a new article that is cross-posted to a different
5884 ;; crossposted article that has a higher number than
6114 (setq gnus-article-internal-prepare-hook '(gnus-article-get-xrefs))
6152 ;; A common bug in inn is that if you have posted an article and
6154 ;; the new article is included. However, a NOV entry for the
6155 ;; article may not have been generated yet, so this may fail.
6168 (defun gnus-article-get-xrefs ()
6170 This is meant to be called in `gnus-article-internal-prepare-hook'."
6191 "Find article ID and insert the summary line for that article.
6206 ;; Rebuild the thread that this article is part of and go to the
6207 ;; article we have fetched.
6235 ;; article if ID is a number -- so that the next `P' or `N'
6236 ;; command will fetch the previous (or next) article even
6252 current article will be taken into consideration."
6261 articles article)
6265 (push (setq article (gnus-summary-article-number))
6268 (gnus-summary-find-prev nil article)
6269 (gnus-summary-find-next nil article)))
6276 articles article)
6281 (push (setq article (gnus-summary-article-number)) articles)
6282 (gnus-summary-find-next nil article)
6292 ;; Just return the current article.
6293 (list (gnus-summary-article-number))))))
6353 (defun gnus-summary-find-next (&optional unread article backward)
6355 (gnus-summary-find-prev unread article)
6356 (let* ((dummy (gnus-summary-article-intangible-p))
6357 (article (or article (gnus-summary-article-number)))
6358 (data (gnus-data-find-list article))
6391 (defun gnus-summary-find-prev (&optional unread article)
6393 (article (or article (gnus-summary-article-number)))
6394 (data (gnus-data-find-list article (gnus-data-list 'rev)))
6427 (defun gnus-summary-find-subject (subject &optional unread backward article)
6429 (article (or article (gnus-summary-article-number)))
6431 (arts (gnus-data-find-list article articles))
6451 "Search forward for an article.
6469 If `gnus-auto-center-summary' is nil, or the article buffer isn't
6486 (when (get-buffer-window gnus-article-buffer)
6487 ;; Only do recentering when the article buffer is displayed,
6532 ;; This function returns a list of article numbers based on the
6544 ;; first unread article is the article after the last read
6545 ;; article. Sounds logical, doesn't it?
6585 ;; This function returns a sequence of article numbers based on the
6597 ;; first unread article is the article after the last read
6598 ;; article. Sounds logical, doesn't it?
6627 (defun gnus-summary-select-article-buffer ()
6628 "Reconfigure windows to show article buffer."
6630 (if (not (gnus-buffer-live-p gnus-article-buffer))
6631 (error "There is no article buffer for this summary buffer")
6632 (gnus-configure-windows 'article)
6633 (select-window (get-buffer-window gnus-article-buffer))))
6639 func article)
6651 (gnus-summary-goto-subject (setq article (pop articles)))
6654 (gnus-summary-remove-process-mark article)))))
6667 "Return the number of an article to stay on across a reselect.
6668 The current article is considered, then following articles, then previous
6669 articles. An article is sought which is not cancelled and isn't a temporary
6675 (gnus-summary-article-number) (gnus-data-list rev))))
6729 ;; Set the current article marks.
6760 (when (gnus-buffer-live-p gnus-article-buffer)
6762 (set-buffer gnus-article-buffer)
6763 (mm-destroy-parts gnus-article-mime-handles)
6765 (setq gnus-article-mime-handle-alist nil)
6766 (setq gnus-article-mime-handles nil)))
6782 ;; If we have several article buffers, we kill them at exit.
6783 (unless gnus-single-article-buffer
6784 (gnus-kill-buffer gnus-original-article-buffer)
6785 (setq gnus-article-current nil))
6816 ;; If we have several article buffers, we kill them at exit.
6817 (unless gnus-single-article-buffer
6818 (gnus-kill-buffer gnus-article-buffer)
6819 (gnus-kill-buffer gnus-original-article-buffer)
6820 (setq gnus-article-current nil))
6826 ;; We set all buffer-local variables to nil. It is unclear why
6827 ;; this is needed, but if we don't, buffer-local variables are
6830 (gnus-summary-clear-local-variables)
6831 (let ((gnus-summary-local-variables gnus-newsgroup-variables))
6832 (gnus-summary-clear-local-variables))
6833 (when (get-buffer gnus-article-buffer)
6834 (bury-buffer gnus-article-buffer))
6835 ;; We clear the global counterparts of the buffer-local
6838 (gnus-summary-clear-local-variables)
6839 (let ((gnus-summary-local-variables gnus-newsgroup-variables))
6840 (gnus-summary-clear-local-variables))
6861 "Quit reading current newsgroup without updating read article info."
6872 (when (gnus-buffer-live-p gnus-article-buffer)
6874 (set-buffer gnus-article-buffer)
6875 (mm-destroy-parts gnus-article-mime-handles)
6877 (setq gnus-article-mime-handle-alist nil)
6878 (setq gnus-article-mime-handles nil)))
6879 ;; If we have several article buffers, we kill them at exit.
6880 (unless gnus-single-article-buffer
6881 (gnus-kill-buffer gnus-article-buffer)
6882 (gnus-kill-buffer gnus-original-article-buffer)
6883 (setq gnus-article-current nil))
6887 (gnus-summary-clear-local-variables)
6888 (let ((gnus-summary-local-variables gnus-newsgroup-variables))
6889 (gnus-summary-clear-local-variables))
6891 (gnus-summary-clear-local-variables)
6892 (let ((gnus-summary-local-variables gnus-newsgroup-variables))
6893 (gnus-summary-clear-local-variables))
6895 (unless gnus-single-article-buffer
6896 (setq gnus-article-current nil))
6900 (when (get-buffer gnus-article-buffer)
6901 (bury-buffer gnus-article-buffer))
6921 ((eq major-mode 'gnus-article-mode)
6925 ;; article buffer.
6930 (if (or (eq (cdr quit-config) 'article)
6933 ;; The current article may be from the ephemeral group
6934 ;; thus it is best that we reload this article
6938 ;;(gnus-summary-show-article)
6970 (make-local-variable 'gnus-dead-summary-mode)
7002 (not gnus-single-article-buffer))
7005 (gnus-kill-buffer gnus-article-buffer)
7006 (gnus-kill-buffer gnus-original-article-buffer)))
7060 (gnus-message 6 (substitute-command-keys "\\<gnus-summary-mode-map>\\[gnus-summary-next-page]:Select \\[gnus-summary-next-unread-article]:Forward \\[gnus-summary-prev-unread-article]:Backward \\[gnus-summary-exit]:Exit \\[gnus-info-find-node]:Run Info \\[gnus-summary-describe-briefly]:This help")))
7064 (defun gnus-summary-next-group (&optional no-article target-group backward)
7066 If prefix argument NO-ARTICLE is non-nil, no article is selected
7105 target-group nil no-article
7112 (defun gnus-summary-prev-group (&optional no-article)
7114 If prefix argument NO-ARTICLE is non-nil, no article is selected initially."
7116 (gnus-summary-next-group no-article nil t))
7122 If UNREAD is non-nil, the article should be unread.
7123 If UNDOWNLOADED is non-nil, the article should be undownloaded.
7124 If UNSEEN is non-nil, the article should be unseen.
7125 Returns the article selected or nil if there are no matching articles."
7132 ;; Pick the first article.
7136 ;; Find the first unread article.
7201 If optional argument UNREAD is non-nil, only unread article is selected."
7213 (dolist (article articles)
7214 (gnus-summary-goto-subject article t)))
7218 (defun gnus-summary-goto-subject (article &optional force silent)
7222 (unless (numberp article)
7223 (error "Article %s is not a number" article))
7225 (data (gnus-data-find article)))
7226 ;; We read in the article if we have to.
7230 article
7233 (setq data (gnus-data-find article)))
7238 (gnus-message 3 "Can't find article %d" article))
7242 (gnus-summary-set-article-display-arrow pt))
7244 article)))
7250 Given a prefix, will force an `article' buffer configuration."
7253 (gnus-configure-windows 'article 'force)
7256 (defun gnus-summary-display-article (article &optional all-header)
7257 "Display ARTICLE in article buffer."
7258 (when (gnus-buffer-live-p gnus-article-buffer)
7259 (with-current-buffer gnus-article-buffer
7262 (when (gnus-buffer-live-p gnus-article-buffer)
7263 (with-current-buffer gnus-article-buffer
7264 (setq gnus-article-charset gnus-newsgroup-charset)
7265 (setq gnus-article-ignored-charsets gnus-newsgroup-ignored-charsets)
7267 (if (null article)
7270 (if gnus-summary-display-article-function
7271 (funcall gnus-summary-display-article-function article all-header)
7272 (gnus-article-prepare article all-header))
7273 (gnus-run-hooks 'gnus-select-article-hook)
7274 (when (and gnus-current-article
7275 (not (zerop gnus-current-article)))
7276 (gnus-summary-goto-subject gnus-current-article))
7279 (gnus-possibly-generate-tree article)
7280 (gnus-highlight-selected-tree article))
7281 ;; Successfully display article.
7282 (gnus-article-set-window-start
7283 (cdr (assq article gnus-newsgroup-bookmarks))))))
7285 (defun gnus-summary-select-article (&optional all-headers force pseudo article)
7286 "Select the current article.
7288 non-nil, the article will be re-fetched even if it already present in
7289 the article buffer. If PSEUDO is non-nil, pseudo-articles will also
7294 (let ((article (or article (gnus-summary-article-number)))
7296 gnus-summary-display-article-function)
7298 (gnus-summary-article-pseudo-p article)
7299 (error "This is a pseudo-article"))
7302 (if (or (and gnus-single-article-buffer
7303 (or (null gnus-current-article)
7304 (null gnus-article-current)
7305 (null (get-buffer gnus-article-buffer))
7306 (not (eq article (cdr gnus-article-current)))
7307 (not (equal (car gnus-article-current)
7309 (and (not gnus-single-article-buffer)
7310 (or (null gnus-current-article)
7311 (not (eq gnus-current-article article))))
7313 ;; The requested article is different from the current article.
7315 (gnus-summary-display-article article all-headers)
7316 (when (gnus-buffer-live-p gnus-article-buffer)
7317 (with-current-buffer gnus-article-buffer
7318 (if (not gnus-article-decoded-p) ;; a local variable
7320 (gnus-article-set-window-start
7321 (cdr (assq article gnus-newsgroup-bookmarks)))
7322 article)
7330 (gnus-article-emulate-mime t)
7334 (gnus-summary-select-article nil 'force)))
7340 (defun gnus-summary-next-article (&optional unread subject backward push)
7341 "Select the next article.
7344 If BACKWARD, the previous article is selected instead of the next."
7350 ;; Is there such an article?
7352 (or (gnus-summary-display-article (gnus-summary-article-number))
7353 (eq (gnus-summary-article-mark) gnus-canceled-mark)))
7358 (gnus-summary-first-unread-article))
7361 ;; Try to get next/previous article not displayed in this group.
7364 (gnus-summary-goto-article
7392 (gnus-summary-last-article-p)))
7452 (defun gnus-summary-next-unread-article ()
7453 "Select unread article after current one."
7455 (gnus-summary-next-article
7457 (gnus-summary-last-article-p (gnus-summary-article-number)))
7459 (gnus-summary-article-subject))))
7461 (defun gnus-summary-prev-article (&optional unread subject)
7462 "Select the article after the current one.
7465 (gnus-summary-next-article unread subject t))
7467 (defun gnus-summary-prev-unread-article ()
7468 "Select unread article before current one."
7470 (gnus-summary-prev-article
7472 (gnus-summary-first-article-p (gnus-summary-article-number)))
7474 (gnus-summary-article-subject))))
7477 "Show next page of the selected article.
7478 If at the end of the current article, select the next article.
7481 If CIRCULAR is non-nil, go to the start of the article instead of
7482 selecting the next article when reaching the end of the current
7483 article.
7487 Also see the variable `gnus-article-skip-boring'."
7491 (let ((article (gnus-summary-article-number))
7492 (article-window (get-buffer-window gnus-article-buffer t))
7494 ;; If the buffer is empty, we have no article.
7495 (unless article
7496 (error "No article to select"))
7497 (gnus-configure-windows 'article)
7498 (if (eq (cdr (assq article gnus-newsgroup-reads)) gnus-canceled-mark)
7500 (not (gnus-summary-last-article-p article)))
7501 (gnus-summary-next-article)
7502 (gnus-summary-next-unread-article))
7503 (if (or (null gnus-current-article)
7504 (null gnus-article-current)
7505 (/= article (cdr gnus-article-current))
7506 (not (equal (car gnus-article-current) gnus-newsgroup-name)))
7507 ;; Selected subject is different from current article's.
7508 (gnus-summary-display-article article)
7509 (when article-window
7510 (gnus-eval-in-buffer-window gnus-article-buffer
7511 (setq endp (or (gnus-article-next-page lines)
7512 (gnus-article-only-boring-p))))
7517 (gnus-summary-beginning-of-article))
7522 (not (gnus-summary-last-article-p article)))
7523 (gnus-summary-next-article)
7524 (gnus-summary-next-unread-article))))))))
7529 "Show previous page of selected article.
7531 If MOVE, move to the previous unread article if point is at
7534 (let ((article (gnus-summary-article-number))
7535 (article-window (get-buffer-window gnus-article-buffer t))
7537 (gnus-configure-windows 'article)
7538 (if (or (null gnus-current-article)
7539 (null gnus-article-current)
7540 (/= article (cdr gnus-article-current))
7541 (not (equal (car gnus-article-current) gnus-newsgroup-name)))
7542 ;; Selected subject is different from current article's.
7543 (gnus-summary-display-article article)
7545 (when article-window
7546 (gnus-eval-in-buffer-window gnus-article-buffer
7547 (setq endp (gnus-article-prev-page lines)))
7553 (not (gnus-summary-first-article-p article)))
7554 (gnus-summary-prev-article)
7555 (gnus-summary-prev-unread-article))))))))
7558 (defun gnus-summary-prev-page-or-article (&optional lines)
7559 "Show previous page of selected article.
7561 If at the beginning of the article, go to the next article."
7566 "Scroll up (or down) one line current article.
7569 (gnus-configure-windows 'article)
7571 (when (eq (gnus-summary-select-article nil nil 'pseudo) 'old)
7572 (gnus-eval-in-buffer-window gnus-article-buffer
7574 (when (gnus-article-next-page lines)
7577 (gnus-article-prev-page (- lines))))))
7582 "Scroll down (or up) one line current article.
7588 "Select next article which has the same subject as current one."
7590 (gnus-summary-next-article nil (gnus-summary-article-subject)))
7593 "Select previous article which has the same subject as current one."
7595 (gnus-summary-prev-article nil (gnus-summary-article-subject)))
7598 "Select next unread article which has the same subject as current one."
7600 (gnus-summary-next-article t (gnus-summary-article-subject)))
7603 "Select previous unread article which has the same subject as current one."
7605 (gnus-summary-prev-article t (gnus-summary-article-subject)))
7607 (defun gnus-summary-first-unread-article ()
7608 "Select the first unread article.
7615 (gnus-summary-display-article (gnus-summary-article-number)))
7619 "Place the point on the subject line of the first unread article.
7629 "Place the point on the subject line of the first unseen article.
7639 "Place the point on the subject line of the first unseen article or,
7640 if all article have been seen, on the subject line of the first unread
7641 article."
7652 (defun gnus-summary-first-article ()
7653 "Select the first article.
7660 (gnus-summary-display-article (gnus-summary-article-number)))
7663 (defun gnus-summary-best-unread-article (&optional arg)
7664 "Select the unread article with the highest score.
7665 If given a prefix argument, select the next unread article that has a
7668 (let ((article (if arg
7671 (if article
7672 (gnus-summary-goto-article article)
7680 article score)
7684 (gnus-summary-article-score (gnus-data-number (car data))))
7687 article (gnus-data-number (car data))))
7689 (when article
7690 (gnus-summary-goto-subject article))
7692 article))
7698 article score)
7699 (while (and (setq article (gnus-data-number (car data)))
7701 (not (> (gnus-summary-article-score article)
7704 (when article
7705 (gnus-summary-goto-subject article))
7707 article))
7711 (let ((article (gnus-data-number (car (gnus-data-list t)))))
7712 (when article
7713 (gnus-summary-goto-subject article))))
7715 (defun gnus-summary-goto-article (article &optional all-headers force)
7716 "Fetch ARTICLE (article number or Message-ID) and display it if it exists.
7718 If FORCE, go to the article even if it isn't displayed. If FORCE
7719 is a number, it is the line the article is to be displayed on."
7729 (if (and (stringp article)
7730 (string-match "@\\|%40" article))
7731 (gnus-summary-refer-article article)
7732 (when (stringp article)
7733 (setq article (string-to-number article)))
7734 (if (gnus-summary-goto-subject article force)
7735 (gnus-summary-display-article article all-headers)
7736 (gnus-message 4 "Couldn't go to article %s" article) nil))
7739 (defun gnus-summary-goto-last-article ()
7740 "Go to the previously read article."
7743 (when gnus-last-article
7744 (gnus-summary-goto-article gnus-last-article nil t))
7747 (defun gnus-summary-pop-article (number)
7748 "Pop one article off the history and go to the previous.
7755 (gnus-summary-goto-article (car to) nil t)
7843 articles d date is-younger)
7846 (setq date (mail-header-date (gnus-data-header d))))
7849 (date-to-time date)
7912 ;; Concat all the marks that say that an article is read and have
7959 (when (>= (gnus-summary-article-score (gnus-data-number (car data)))
7977 article."
7978 (interactive (list (mail-header-id (gnus-summary-article-header))))
8034 (gnus-article-children (gnus-data-number d)))
8059 article)
8070 (while (setq article (pop articles))
8071 (unless (or (memq article gnus-newsgroup-dormant)
8072 (memq article gnus-newsgroup-marked))
8073 (push (cons article gnus-catchup-mark) gnus-newsgroup-reads))))))
8085 (data (gnus-data-find-list (gnus-summary-article-number)))
8093 ;; Try to return to the article you were at, or one in the
8096 ;; We try to find some article after the current one.
8104 ;; article. The same goes when we can't find any articles
8122 "Go forwards in the thread until we find an article that we want to display."
8132 (gnus-summary-article-sparse-p (mail-header-number (car thread)))
8133 (gnus-summary-article-ancient-p
8209 ;; will really go down to a leaf article first, before slowly
8223 ;; If this article is dormant and has absolutely no visible
8224 ;; children, then this article isn't visible.
8228 ;; visible children, then we don't want this article.
8231 (gnus-summary-article-ancient-p number)
8234 ;; we don't want this article.
8236 (gnus-summary-article-ancient-p number))
8237 ;; If this is a sparsely inserted article with no children,
8240 (gnus-summary-article-sparse-p number)
8242 ;; If we use expunging, and this article is really
8243 ;; low-scored, then we don't want this article.
8267 (gnus-nocem-unwanted-article-p
8273 ;; Nope, invisible article.
8275 ;; Ok, this article is to be visible, so we add it to the limit
8294 ;; Summary article oriented commands
8296 (defun gnus-summary-refer-parent-article (n)
8297 "Refer parent article N times.
8308 (setq header (gnus-summary-article-header))
8310 (cdr gnus-article-current))
8312 (car gnus-article-current)))
8314 ;; displayed article, then we take a look at the actual
8319 (set-buffer gnus-original-article-buffer)
8326 ;; It's not the current article, so we take a bet on
8331 (unless (gnus-summary-refer-article (gnus-parent-id ref skip))
8333 (gnus-message 1 "No references in article %d"
8334 (gnus-summary-article-number))
8344 (let ((ref (mail-header-references (gnus-summary-article-header)))
8345 (current (gnus-summary-article-number))
8349 (error "No References in the current article")
8353 ;; ... fetch that article.
8354 (gnus-summary-refer-article
8366 (let ((id (mail-header-id (gnus-summary-article-header)))
8376 (gnus-summary-article-header))
8390 (defun gnus-summary-refer-article (message-id)
8391 "Fetch an article specified by MESSAGE-ID."
8407 (gnus-summary-article-sparse-p
8413 ;; If the article is present in the buffer we just go to it.
8415 (or (not (gnus-summary-article-sparse-p
8419 (gnus-summary-goto-article
8422 (gnus-summary-update-article (mail-header-number header)))))
8424 ;; We fetch the article.
8426 (dolist (gnus-override-method (gnus-refer-article-methods))
8430 ;; and display the article.
8431 (gnus-summary-select-article nil nil nil number)
8433 (gnus-message 3 "Couldn't fetch article %s" message-id)))))))
8435 (defun gnus-refer-article-methods ()
8439 ((null gnus-refer-article-method)
8442 ((eq 'current gnus-refer-article-method)
8445 ((not (and (symbolp (car gnus-refer-article-method))
8446 (assq (car gnus-refer-article-method) nnoo-definition-alist)))
8448 (dolist (method gnus-refer-article-method)
8456 (list gnus-refer-article-method))))
8469 "Enter an nndoc group based on the current article.
8476 (let (gnus-article-prepare-hook
8479 (gnus-summary-select-article))))
8486 gnus-current-article)))
8491 (list (cons 'save-article-group ogroup))))
8496 (set-buffer gnus-original-article-buffer)
8498 ;; the parent article.
8507 (insert-buffer-substring gnus-original-article-buffer)
8522 (nndoc-article-type
8538 "Open a new group based on the current article(s).
8547 article group egroup groups vgroup)
8548 (while (setq article (pop articles))
8549 (setq group (format "%s-%d" gnus-newsgroup-name article))
8550 (gnus-summary-remove-process-mark article)
8551 (when (gnus-summary-display-article article)
8554 (insert-buffer-substring gnus-original-article-buffer)
8564 (nndoc-article-type guess))
8587 (defun gnus-summary-isearch-article (&optional regexp-p)
8588 "Do incremental search forward on the current article.
8591 (gnus-summary-select-article)
8592 (gnus-configure-windows 'article)
8593 (gnus-eval-in-buffer-window gnus-article-buffer
8598 (defun gnus-summary-search-article-forward (regexp &optional backward)
8599 "Search for an article containing REGEXP forward.
8603 (format "Search article %s (regexp%s): "
8612 (setq gnus-article-before-search gnus-current-article))
8613 ;; Intentionally set gnus-last-article.
8614 (setq gnus-last-article gnus-article-before-search)
8615 (let ((gnus-last-article gnus-last-article))
8616 (if (gnus-summary-search-article regexp backward)
8620 (defun gnus-summary-search-article-backward (regexp)
8621 "Search for an article containing REGEXP backward."
8624 (format "Search article backward (regexp%s): "
8628 (gnus-summary-search-article-forward regexp 'backward))
8630 (defun gnus-summary-search-article (regexp &optional backward)
8631 "Search for an article containing REGEXP.
8633 `gnus-select-article-hook' is not called during the search."
8638 (let ((gnus-select-article-hook nil) ;Disable hook.
8639 (gnus-article-prepare-hook nil)
8640 (gnus-mark-article-hook nil) ;Inhibit marking as read.
8641 (gnus-use-article-prefetch nil)
8655 (gnus-summary-select-article)
8656 (set-buffer gnus-article-buffer)
8661 (gnus-message 7 "Searching article: %d..." (cdr gnus-article-current))
8678 ;; We didn't find it, so we go to the next article.
8686 ;; Select the next article and adjust point.
8687 (unless (gnus-summary-article-sparse-p
8688 (gnus-summary-article-number))
8690 (gnus-summary-select-article)
8691 (set-buffer gnus-article-buffer)
8699 (gnus-summary-goto-subject gnus-current-article)
8718 The search stars on the current article and goes forwards unless
8739 (gnus-summary-article-number)
8754 "Search forward for an article whose HEADER matches REGEXP and execute COMMAND.
8756 article. If BACKWARD (the prefix) is non-nil, search backward instead."
8783 gnus-article-prepare-hook)
8791 (defun gnus-summary-beginning-of-article ()
8792 "Scroll the article back to the beginning."
8794 (gnus-summary-select-article)
8795 (gnus-configure-windows 'article)
8796 (gnus-eval-in-buffer-window gnus-article-buffer
8802 (defun gnus-summary-end-of-article ()
8803 "Scroll to the end of the article."
8805 (gnus-summary-select-article)
8806 (gnus-configure-windows 'article)
8807 (gnus-eval-in-buffer-window gnus-article-buffer
8823 (defun gnus-summary-print-article (&optional filename n)
8826 If used interactively, print the current article if none are
8840 (dolist (article (gnus-summary-work-articles n))
8841 (gnus-summary-select-article nil nil 'pseudo article)
8842 (gnus-eval-in-buffer-window gnus-article-buffer
8844 (gnus-summary-remove-process-mark article))
8854 (when (gnus-visual-p 'article-highlight 'highlight)
8857 (let ((gnus-article-buffer buffer))
8858 (gnus-article-highlight-citation t)
8859 (gnus-article-highlight-signature)
8860 (gnus-article-emphasize)
8861 (gnus-article-delete-invisible-text)))
8876 (mail-header-date gnus-current-headers) ")"))))
8884 (defun gnus-summary-show-article (&optional arg)
8885 "Force redisplaying of the current article.
8886 If ARG (the prefix) is a number, show the article with the charset
8887 defined in `gnus-summary-show-article-charset-alist', or the charset
8889 If ARG (the prefix) is non-nil and not a number, show the raw article
8890 without any article massaging functions being run. Normally, the key
8895 (gnus-summary-show-article t)
8897 (or (cdr (assq arg gnus-summary-show-article-charset-alist))
8901 (set-buffer gnus-article-buffer)
8904 (gnus-summary-select-article nil 'force)
8908 (set-buffer gnus-original-article-buffer)
8919 (cdr gnus-article-current)))
8926 (gnus-data-find (cdr gnus-article-current))
8928 (gnus-summary-update-article-line
8929 (cdr gnus-article-current) header)
8930 (when (gnus-summary-goto-subject (cdr gnus-article-current) nil t)
8931 (gnus-summary-update-secondary-mark (cdr gnus-article-current))))))
8933 ;; Select the article the normal way.
8934 (gnus-summary-select-article nil 'force))
8940 ;; Bind the article treatment functions to nil.
8942 gnus-article-prepare-hook
8943 gnus-article-decode-hook
8947 (when (gnus-buffer-live-p gnus-article-buffer)
8949 (set-buffer gnus-article-buffer)
8950 (mm-destroy-parts gnus-article-mime-handles)
8952 (setq gnus-article-mime-handle-alist nil)
8953 (setq gnus-article-mime-handles nil)))
8954 (gnus-summary-select-article nil 'force))))
8955 (gnus-summary-goto-subject gnus-current-article)
8958 (defun gnus-summary-show-raw-article ()
8959 "Show the raw article without any article massaging functions being run."
8961 (gnus-summary-show-article t))
8974 (gnus-summary-show-article))
8981 (let ((window (and (gnus-buffer-live-p gnus-article-buffer)
8982 (get-buffer-window gnus-article-buffer t))))
8983 (with-current-buffer gnus-article-buffer
8985 (article-narrow-to-head)
8991 (gnus-article-hidden-text-p 'headers))))
8994 (with-current-buffer gnus-original-article-buffer
8999 (insert-buffer-substring gnus-original-article-buffer s e)
9000 (run-hooks 'gnus-article-decode-hook)
9005 (gnus-treat-article 'head))
9006 (gnus-treat-article 'head))
9016 (gnus-set-mode-line 'article)))))
9024 "Caesar rotate the current article by 13.
9028 (gnus-summary-select-article)
9030 (gnus-eval-in-buffer-window gnus-article-buffer
9038 (gnus-treat-article nil))
9045 "Morse decode the current article."
9047 (gnus-summary-select-article)
9049 (gnus-eval-in-buffer-window gnus-article-buffer
9066 "Stop page breaking in the current article."
9068 (gnus-summary-select-article)
9069 (gnus-eval-in-buffer-window gnus-article-buffer
9077 (defun gnus-summary-move-article (&optional n to-newsgroup
9079 "Move the current article to a different newsgroup.
9103 'request-move-article gnus-newsgroup-name)))
9104 (error "The current group does not support article moving"))
9107 'request-replace-article gnus-newsgroup-name)))
9108 (error "The current group does not support article editing")))
9111 'request-move-article gnus-newsgroup-name)
9118 (nnheader-set-temp-buffer " *copy article*")))
9119 art-group to-method new-xref article to-groups)
9127 (and (memq gnus-current-article articles)
9128 (gnus-buffer-live-p gnus-original-article-buffer))))
9130 ;; select an article to give `gnus-read-move-group-name' an
9132 ;; we needn't render or mark the article.
9134 (gnus-article-prepare-hook nil)
9135 (gnus-mark-article-hook nil))
9136 (gnus-summary-select-article nil nil nil (car articles))))
9146 ;; Check the method we are to move this article to...
9148 'request-accept-article (car to-method))
9149 (error "%s does not support article copying" (car to-method)))
9156 (setq article (pop articles))
9160 ;; Move the article.
9162 ;; Remove this article from future suppression.
9163 (gnus-dup-unsuppress-article article)
9164 (gnus-request-move-article
9165 article ; Article to move
9169 (list 'gnus-request-accept-article
9173 ;; Copy the article.
9177 (when (gnus-request-article-this-buffer article gnus-newsgroup-name)
9178 (gnus-request-accept-article
9180 ;; Crosspost the article.
9183 (mail-header-xref (gnus-summary-article-header article))
9186 ":" (number-to-string article)))
9197 ;; First put the article in the destination group.
9198 (gnus-request-article-this-buffer article gnus-newsgroup-name)
9200 (gnus-request-accept-article
9206 ;; it and replace the new article.
9208 (gnus-request-replace-article
9213 (gnus-message 1 "Couldn't %s article %s: %s"
9214 (cadr (assq action names)) article
9218 (gnus-summary-mark-article article gnus-canceled-mark)
9219 (gnus-message 4 "Deleted article %s" article)
9221 (run-hook-with-args 'gnus-summary-article-delete-hook
9224 (assoc article (gnus-data-list nil)))
9241 (unless (memq article gnus-newsgroup-unreads)
9247 ;; See whether the article is to be put in the cache.
9249 gnus-article-mark-lists
9251 (copy-sequence gnus-article-mark-lists))))
9252 (to-article (cdr art-group)))
9254 ;; Enter the article into the cache in the new group,
9257 (gnus-cache-possibly-enter-article
9258 to-group to-article
9259 (memq article gnus-newsgroup-marked)
9260 (memq article gnus-newsgroup-dormant)
9261 (memq article gnus-newsgroup-unreads)))
9266 (not (memq article gnus-newsgroup-unreads)))
9267 ;; Mark this article as read in this group.
9268 (push (cons to-article gnus-read-mark) gnus-newsgroup-reads)
9269 (setcdr (gnus-active to-group) to-article)
9270 (setcdr gnus-newsgroup-active to-article))
9273 (when (eq (gnus-article-mark-to-type (cdar marks)) 'list)
9274 (when (memq article (symbol-value
9282 (cons to-article
9288 to-group (cdar marks) (list to-article) info)))
9292 to-group (list (list (list to-article) 'add to-marks))))
9299 ;; Update the Xref header in this article to point to
9300 ;; the new crossposted article we have just created.
9304 (gnus-request-article-this-buffer article gnus-newsgroup-name)
9306 (gnus-request-replace-article
9307 article gnus-newsgroup-name (current-buffer) t)))
9310 (run-hook-with-args 'gnus-summary-article-move-hook
9313 (assoc article (gnus-data-list nil)))
9321 (gnus-summary-goto-subject article)
9323 (gnus-summary-mark-article article gnus-canceled-mark))))
9324 (gnus-summary-remove-process-mark article))
9335 (defun gnus-summary-copy-article (&optional n to-newsgroup select-method)
9336 "Copy the current article to some other group.
9344 (gnus-summary-move-article n to-newsgroup select-method 'copy))
9346 (defun gnus-summary-crosspost-article (&optional n)
9347 "Crosspost the current article to some other group."
9349 (gnus-summary-move-article n nil nil 'crosspost))
9352 "Default method type for respooling an article.
9367 (defun gnus-summary-respool-article (&optional n method)
9368 "Respool the current article.
9369 The article will be squeezed through the mail spooling process again,
9408 (gnus-summary-move-article n nil method)
9409 (gnus-summary-copy-article n nil method)))
9411 (defun gnus-summary-import-article (file &optional edit)
9417 (unless (gnus-check-backend-function 'request-accept-article group)
9418 (error "%s does not support article importing" group))
9427 (if (nnheader-article-p)
9433 (unless (re-search-forward "^date:" nil t)
9435 (insert "Date: " (message-make-date (nth 5 atts)) "\n")))
9436 ;; This doesn't look like an article, so we fudge some headers.
9441 "Date: " (message-make-date (nth 5 atts)) "\n"
9445 (setq group-art (gnus-request-accept-article group nil t))
9449 (gnus-summary-goto-article (cdr group-art) nil t)
9451 (gnus-summary-edit-article))))
9453 (defun gnus-summary-create-article ()
9454 "Create an article in a mail newsgroup."
9459 (unless (gnus-check-backend-function 'request-accept-article group)
9460 (error "%s does not support article importing" group))
9465 ;; This doesn't look like an article, so we fudge some headers.
9468 "Date: " (message-make-date now) "\n"
9470 (setq group-art (gnus-request-accept-article group nil t))
9474 (gnus-summary-goto-article (cdr group-art) nil t)
9475 (gnus-summary-edit-article)))
9477 (defun gnus-summary-article-posted-p ()
9478 "Say whether the current (mail) article is available from news as well.
9479 This will be the case if the article has both been mailed and posted."
9481 (let ((id (mail-header-references (gnus-summary-article-header)))
9482 (gnus-override-method (car (gnus-refer-article-methods))))
9536 (dolist (article expirable)
9537 (when (and (not (memq article es))
9538 (gnus-data-find article))
9539 (gnus-summary-mark-article article gnus-canceled-mark)
9540 (run-hook-with-args 'gnus-summary-article-expire-hook
9543 (assoc article (gnus-data-list nil)))
9561 (defun gnus-summary-delete-article (&optional n)
9564 command. The article will disappear forever from your life, never to
9576 (error "The current newsgroup does not support article deletion"))
9588 "this article")))))
9595 ;; The backend might not have been able to delete the article
9598 (gnus-summary-mark-article (car articles) gnus-canceled-mark))
9599 (let* ((article (car articles))
9601 (assoc article (gnus-data-list nil))))))
9602 (run-hook-with-args 'gnus-summary-article-delete-hook
9612 (defun gnus-summary-edit-article (&optional arg)
9613 "Edit the current article.
9632 (and (gnus-buffer-live-p gnus-article-buffer)
9633 (with-current-buffer gnus-article-buffer
9635 gnus-article-mime-handles
9636 (setq gnus-article-mime-handles nil))))))
9643 (error "Can't edit the raw article in group %s"
9652 (error "The current newsgroup does not support article editing"))
9653 (gnus-summary-show-article t)
9654 (when (and (not raw) (gnus-buffer-live-p gnus-article-buffer))
9655 (with-current-buffer gnus-article-buffer
9659 (gnus-article-edit-article
9668 (set (make-local-variable 'mml-buffer-list) mbl1))
9669 (gnus-make-local-hook 'kill-buffer-hook)
9682 (kill-local-variable 'mml-buffer-list)))
9683 (gnus-summary-edit-article-done
9688 (defalias 'gnus-summary-edit-article-postpone 'gnus-article-edit-exit)
9690 (defun gnus-summary-edit-article-done (&optional references read-only buffer
9692 "Make edits to the current article permanent."
9695 ;; The buffer restriction contains the entire article if it exists.
9696 (when (article-goto-body)
9714 ;; Replace the article.
9720 (not (gnus-request-replace-article
9721 (cdr gnus-article-current) (car gnus-article-current)
9723 (error "Couldn't replace article")
9738 (cdr gnus-article-current)))
9747 (gnus-data-find (cdr gnus-article-current))
9749 (gnus-summary-update-article-line
9750 (cdr gnus-article-current) header)
9752 (cdr gnus-article-current) nil t)
9754 (cdr gnus-article-current))))))))
9757 (gnus-summary-update-article (cdr gnus-article-current))
9758 (if (gnus-summary-goto-subject (cdr gnus-article-current) nil t)
9760 (cdr gnus-article-current))))
9761 ;; Prettify the article buffer again.
9764 (set-buffer gnus-article-buffer)
9765 ;;;!!! Fix this -- article should be rehighlighted.
9766 ;;;(gnus-run-hooks 'gnus-article-display-hook)
9767 (set-buffer gnus-original-article-buffer)
9768 (gnus-request-article
9769 (cdr gnus-article-current)
9770 (car gnus-article-current) (current-buffer))))
9773 (gnus-run-hooks 'gnus-visual-mark-article-hook))))))
9776 "Perform editing command KEY in the article buffer."
9783 (gnus-summary-edit-article)
9785 (gnus-article-edit-done))
9790 "Query where the respool algorithm would put this article."
9792 (let (gnus-mark-article-hook)
9793 (gnus-summary-select-article)
9795 (set-buffer gnus-original-article-buffer)
9796 (let ((groups (nnmail-article-group 'identity trace)))
9805 "Trace where the respool algorithm would put this article.
9821 (gnus-summary-article-subject) unmark)))
9822 ;; Select next unread article. If auto-select-same mode, should
9823 ;; select the first unread article.
9824 (gnus-summary-next-article t (and gnus-auto-select-same
9825 (gnus-summary-article-subject)))
9826 (gnus-message 7 "%d article%s marked as %s"
9839 (gnus-summary-article-subject) unmark)))
9857 (gnus-summary-mark-article-as-read gnus-killed-mark)
9864 (gnus-summary-mark-article-as-unread gnus-ticked-mark)
9871 (gnus-summary-mark-article-as-unread gnus-unread-mark)
9894 (gnus-summary-article-number))
9895 (gnus-summary-set-process-mark (gnus-summary-article-number)))
9919 (defun gnus-summary-add-mark (article type)
9921 (let ((vtype (car (assq type gnus-article-mark-lists)))
9926 (set var (cons article (symbol-value var)))
9928 (gnus-summary-update-secondary-mark article)
9947 (defun gnus-summary-mark-article-as-replied (article)
9950 (interactive (list (gnus-summary-article-number)))
9951 (let ((articles (if (listp article) article (list article))))
9952 (dolist (article articles)
9953 (unless (numberp article)
9954 (error "%s is not a number" article))
9955 (push article gnus-newsgroup-replied)
9957 (when (gnus-summary-goto-subject article nil t)
9958 (gnus-summary-update-secondary-mark article))))))
9960 (defun gnus-summary-mark-article-as-forwarded (article)
9963 (let ((articles (if (listp article) article (list article))))
9964 (dolist (article articles)
9965 (push article gnus-newsgroup-forwarded)
9967 (when (gnus-summary-goto-subject article nil t)
9968 (gnus-summary-update-secondary-mark article))))))
9970 (defun gnus-summary-set-bookmark (article)
9971 "Set a bookmark in current article."
9972 (interactive (list (gnus-summary-article-number)))
9973 (when (or (not (get-buffer gnus-article-buffer))
9974 (not gnus-current-article)
9975 (not gnus-article-current)
9976 (not (equal gnus-newsgroup-name (car gnus-article-current))))
9977 (error "No current article selected"))
9979 (gnus-pull article gnus-newsgroup-bookmarks)
9981 ;; (article-number . line-number-in-body).
9983 (cons article
9985 (set-buffer gnus-article-buffer)
9989 (article-goto-body)
9993 (gnus-message 6 "A bookmark has been added to the current article."))
9995 (defun gnus-summary-remove-bookmark (article)
9996 "Remove the bookmark from the current article."
9997 (interactive (list (gnus-summary-article-number)))
9999 (if (not (assq article gnus-newsgroup-bookmarks))
10000 (gnus-message 6 "No bookmark in current article.")
10001 (gnus-pull article gnus-newsgroup-bookmarks)
10012 (defun gnus-summary-set-process-mark (article)
10015 (cons article
10016 (delq article gnus-newsgroup-processable)))
10017 (when (gnus-summary-goto-subject article)
10019 (gnus-summary-goto-subject article)
10020 (gnus-summary-update-secondary-mark article)))
10022 (defun gnus-summary-remove-process-mark (article)
10024 (setq gnus-newsgroup-processable (delq article gnus-newsgroup-processable))
10025 (when (gnus-summary-goto-subject article)
10027 (gnus-summary-goto-subject article)
10028 (gnus-summary-update-secondary-mark article)))
10030 (defun gnus-summary-set-saved-mark (article)
10032 (push article gnus-newsgroup-saved)
10033 (when (gnus-summary-goto-subject article)
10034 (gnus-summary-update-secondary-mark article)))
10053 (gnus-summary-mark-article nil mark no-expire)
10067 (defun gnus-summary-mark-article-as-read (mark)
10068 "Mark the current article quickly as read with MARK."
10069 (let ((article (gnus-summary-article-number)))
10070 (setq gnus-newsgroup-unreads (delq article gnus-newsgroup-unreads))
10071 (setq gnus-newsgroup-marked (delq article gnus-newsgroup-marked))
10072 (setq gnus-newsgroup-spam-marked (delq article gnus-newsgroup-spam-marked))
10073 (setq gnus-newsgroup-dormant (delq article gnus-newsgroup-dormant))
10074 (push (cons article mark) gnus-newsgroup-reads)
10077 (gnus-cache-enter-remove-article article))
10079 (setq mark (gnus-request-update-mark gnus-newsgroup-name article mark))
10085 (setq mark (gnus-request-update-mark gnus-newsgroup-name article mark))
10086 (push article gnus-newsgroup-expirable))
10091 (defun gnus-summary-mark-article-as-unread (mark)
10092 "Mark the current article quickly as unread with MARK."
10093 (let* ((article (gnus-summary-article-number))
10094 (old-mark (gnus-summary-article-mark article)))
10096 (setq mark (gnus-request-update-mark gnus-newsgroup-name article mark))
10099 (if (<= article 0)
10101 (gnus-error 1 "Can't mark negative article numbers")
10103 (setq gnus-newsgroup-marked (delq article gnus-newsgroup-marked))
10105 (delq article gnus-newsgroup-spam-marked))
10106 (setq gnus-newsgroup-dormant (delq article gnus-newsgroup-dormant))
10107 (setq gnus-newsgroup-expirable (delq article gnus-newsgroup-expirable))
10108 (setq gnus-newsgroup-reads (delq article gnus-newsgroup-reads))
10112 article)))
10116 article)))
10120 article)))
10124 article))))
10125 (gnus-pull article gnus-newsgroup-reads)
10127 ;; See whether the article is to be put in the cache.
10129 (vectorp (gnus-summary-article-header article))
10131 (gnus-cache-possibly-enter-article
10132 gnus-newsgroup-name article
10140 (defun gnus-summary-mark-article (&optional article mark no-expire)
10145 If ARTICLE is nil, then the article on the current line will be
10158 (let ((article (or article (gnus-summary-article-number)))
10159 (old-mark (gnus-summary-article-mark article)))
10161 (setq mark (gnus-request-update-mark gnus-newsgroup-name article mark))
10164 (unless article
10165 (error "No article on current line"))
10170 (gnus-mark-article-as-unread article mark)
10171 (gnus-mark-article-as-read article mark)))
10173 ;; See whether the article is to be put in the cache.
10176 (vectorp (gnus-summary-article-header article))
10178 (gnus-cache-possibly-enter-article
10179 gnus-newsgroup-name article
10183 (when (gnus-summary-goto-subject article nil t)
10190 (defun gnus-summary-update-secondary-mark (article)
10193 (cond ((memq article gnus-newsgroup-processable)
10195 ((memq article gnus-newsgroup-cached)
10197 ((memq article gnus-newsgroup-replied)
10199 ((memq article gnus-newsgroup-forwarded)
10201 ((memq article gnus-newsgroup-saved)
10203 ((memq article gnus-newsgroup-recent)
10205 ((memq article gnus-newsgroup-unseen)
10213 (defun gnus-summary-update-download-mark (article)
10216 (cond ((memq article gnus-newsgroup-undownloaded)
10241 (gnus-data-find (gnus-summary-article-number)) mark)
10244 (defun gnus-mark-article-as-read (article &optional mark)
10246 ;; Make the article expirable.
10250 (gnus-add-to-sorted-list gnus-newsgroup-expirable article)
10251 (delq article gnus-newsgroup-expirable)))
10253 (setq gnus-newsgroup-unreads (delq article gnus-newsgroup-unreads))
10254 (setq gnus-newsgroup-marked (delq article gnus-newsgroup-marked))
10255 (setq gnus-newsgroup-spam-marked (delq article gnus-newsgroup-spam-marked))
10256 (setq gnus-newsgroup-dormant (delq article gnus-newsgroup-dormant))
10257 (push (cons article mark) gnus-newsgroup-reads)
10260 (gnus-cache-enter-remove-article article))
10263 (defun gnus-mark-article-as-unread (article &optional mark)
10266 (if (<= article 0)
10268 (gnus-error 1 "Can't mark negative article numbers")
10270 (setq gnus-newsgroup-marked (delq article gnus-newsgroup-marked)
10271 gnus-newsgroup-spam-marked (delq article gnus-newsgroup-spam-marked)
10272 gnus-newsgroup-dormant (delq article gnus-newsgroup-dormant)
10273 gnus-newsgroup-expirable (delq article gnus-newsgroup-expirable)
10274 gnus-newsgroup-unreads (delq article gnus-newsgroup-unreads))
10278 (gnus-dup-unsuppress-article article))
10282 (gnus-add-to-sorted-list gnus-newsgroup-marked article)))
10286 article)))
10289 (gnus-add-to-sorted-list gnus-newsgroup-dormant article)))
10292 (gnus-add-to-sorted-list gnus-newsgroup-unreads article))))
10293 (gnus-pull article gnus-newsgroup-reads)
10297 'gnus-summary-tick-article-forward)
10299 'gnus-summary-tick-article-forward)
10300 (defun gnus-summary-tick-article-forward (n)
10308 'gnus-summary-tick-article-backward)
10310 'gnus-summary-tick-article-backward)
10311 (defun gnus-summary-tick-article-backward (n)
10317 (defalias 'gnus-summary-mark-as-unread 'gnus-summary-tick-article)
10318 (make-obsolete 'gnus-summary-mark-as-unread 'gnus-summary-tick-article)
10319 (defun gnus-summary-tick-article (&optional article clear-mark)
10320 "Mark current article as unread.
10321 Optional 1st argument ARTICLE specifies article number to be marked as unread.
10324 (gnus-summary-mark-article article (if clear-mark gnus-unread-mark
10343 (defun gnus-summary-mark-as-read (&optional article mark)
10344 "Mark current article as read.
10345 ARTICLE specifies the article to be marked as read.
10347 (gnus-summary-mark-article article mark))
10363 "Intended to be used by `gnus-summary-mark-article-hook'."
10364 (when (memq gnus-current-article gnus-newsgroup-unreads)
10365 (gnus-summary-mark-article gnus-current-article gnus-read-mark)))
10368 "Intended to be used by `gnus-summary-mark-article-hook'."
10369 (let ((mark (gnus-summary-article-mark)))
10372 (gnus-summary-mark-article gnus-current-article
10376 "Intended to be used by `gnus-summary-mark-article-hook'."
10377 (let ((mark (gnus-summary-article-mark)))
10380 (gnus-summary-mark-article (gnus-summary-article-number)
10384 "Intended to be used by `gnus-summary-mark-article-hook'."
10385 (when (memq gnus-current-article gnus-newsgroup-unreads)
10386 (gnus-summary-mark-article gnus-current-article gnus-ticked-mark)))
10394 (let (article)
10401 (memq (setq article (gnus-summary-article-number))
10403 (gnus-summary-mark-article article gnus-del-mark))
10418 (and (< (gnus-summary-article-score) score)
10419 (gnus-summary-mark-article nil mark))
10447 (when (> (gnus-summary-article-score) score)
10448 (gnus-summary-mark-article nil mark))
10461 (unless (gnus-summary-article-header (caar scored))
10490 Note that this function will only catch up the unread article
10529 (gnus-summary-mark-article-as-read gnus-catchup-mark)))
10533 (gnus-summary-mark-article-as-read gnus-catchup-mark)
10599 ;;; with article
10602 (defmacro gnus-with-article (article &rest forms)
10603 "Select ARTICLE and perform FORMS in the original article buffer.
10604 Then replace the article with the result."
10606 ;; We don't want the article to be marked as read.
10607 (let (gnus-mark-article-hook)
10608 (gnus-summary-select-article t t nil ,article))
10609 (set-buffer gnus-original-article-buffer)
10612 'request-replace-article (car gnus-article-current)))
10614 (unless (gnus-request-replace-article
10615 ,article (car gnus-article-current)
10617 (error "Couldn't replace article")))
10620 (gnus-backlog-remove-article
10621 (car gnus-article-current) (cdr gnus-article-current)))
10623 (gnus-cache-update-article
10624 (car gnus-article-current) (cdr gnus-article-current)))))
10626 (put 'gnus-with-article 'lisp-indent-function 1)
10627 (put 'gnus-with-article 'edebug-form-spec '(form body))
10631 (defun gnus-summary-articles-in-thread (&optional article)
10634 with that article."
10635 (let* ((article (or article (gnus-summary-article-number)))
10636 (data (gnus-data-find-list article))
10669 "Rethread the thread the current article is part of."
10672 (article (gnus-summary-article-number))
10673 (id (mail-header-id (gnus-summary-article-header)))
10676 (error "No article on the current line"))
10678 (gnus-summary-goto-subject article)))
10681 "Make the current article child of the marked (or previous) article.
10687 (error "The current newsgroup does not support article editing"))
10689 (error "No more than one article may be marked"))
10691 (let ((gnus-article-buffer " *reparent*")
10692 (current-article (gnus-summary-article-number))
10693 ;; First grab the marked article, otherwise one line up.
10694 (parent-article (if (not (null gnus-newsgroup-processable))
10698 (gnus-summary-article-number)
10700 (unless (not (eq current-article parent-article))
10701 (error "An article may not be self-referential"))
10703 (gnus-summary-article-header parent-article))))
10706 (gnus-with-article current-article
10719 (gnus-summary-update-article current-article)
10720 (if (gnus-summary-goto-subject (cdr gnus-article-current) nil t)
10721 (gnus-summary-update-secondary-mark (cdr gnus-article-current)))
10723 (gnus-message 3 "Article %d is now the child of article %d"
10724 current-article parent-article)))))
10730 (let ((current (or (gnus-summary-article-number) gnus-newsgroup-end)))
10775 (defun gnus-article-unread-p (header)
10778 (defun gnus-article-unseen-p (header)
10785 (gnus-summary-article-header number))
10799 predicate (gnus-summary-article-children)))
10812 (article (gnus-summary-article-number)))
10824 (gnus-summary-goto-subject article))
10831 Return the article number moved to, or nil if moving was impossible."
10845 (gnus-summary-article-number)
10876 (let ((children (gnus-summary-article-children)))
10882 (let ((parent (gnus-summary-article-parent)))
10915 (gnus-summary-article-number))
10932 (gnus-summary-mark-article-as-read gnus-killed-mark))
10934 (gnus-summary-mark-article-as-unread gnus-unread-mark))
10936 (gnus-summary-mark-article-as-unread gnus-ticked-mark)))
10951 "Sort the summary buffer by article number.
10976 (defun gnus-summary-sort-by-date (&optional reverse)
10977 "Sort the summary buffer by date.
10980 (gnus-summary-sort 'date reverse))
10995 "Sort the summary buffer by article length.
11014 (article (intern (format "gnus-article-sort-by-%s" predicate)))
11022 (gnus-article-sort-functions
11024 article
11026 (,article t2 t1))))
11036 (defun gnus-summary-save-article (&optional n not-saved)
11037 "Save the current article using the default saver function.
11042 The variable `gnus-default-article-saver' specifies the saver function.
11053 (decode (when gnus-article-save-coding-system
11054 (get gnus-default-article-saver :decode)))
11057 (saver2 (get gnus-default-article-saver :function))
11061 (gnus-default-article-saver gnus-default-article-saver)
11063 (dolist (article articles)
11064 (setq header (gnus-summary-article-header article))
11066 ;; This is a pseudo-article.
11069 (gnus-message 1 "Article %d is unsaveable" article))
11070 ;; This is a real article.
11074 (gnus-article-prepare-hook (when decode
11075 gnus-article-prepare-hook)))
11076 (gnus-summary-select-article t nil nil article)
11077 (gnus-summary-goto-subject article)))
11082 gnus-article-buffer
11083 gnus-original-article-buffer)))
11084 (setq file (gnus-article-save save-buffer file num))
11085 (gnus-summary-remove-process-mark article)
11087 (gnus-summary-set-saved-mark article)))
11089 (setq gnus-default-article-saver saver2
11097 "Pipe the current article to a subprocess.
11105 (let ((gnus-default-article-saver 'gnus-summary-save-in-pipe)
11107 (gnus-summary-save-article arg t))
11113 (defun gnus-summary-save-article-mail (&optional arg)
11114 "Append the current article to a Unix mail box file.
11121 (let ((gnus-default-article-saver 'gnus-summary-save-in-mail))
11122 (gnus-summary-save-article arg)))
11124 (defun gnus-summary-save-article-rmail (&optional arg)
11125 "Append the current article to an rmail file.
11132 (let ((gnus-default-article-saver 'gnus-summary-save-in-rmail))
11133 (gnus-summary-save-article arg)))
11135 (defun gnus-summary-save-article-file (&optional arg)
11136 "Append the current article to a file.
11143 (let ((gnus-default-article-saver 'gnus-summary-save-in-file))
11144 (gnus-summary-save-article arg)))
11146 (defun gnus-summary-write-article-file (&optional arg)
11147 "Write the current article to a file, deleting the previous file.
11154 (let ((gnus-default-article-saver 'gnus-summary-write-to-file))
11155 (gnus-summary-save-article arg)))
11157 (defun gnus-summary-save-article-body-file (&optional arg)
11158 "Append the current article body to a file.
11165 (let ((gnus-default-article-saver 'gnus-summary-save-body-in-file))
11166 (gnus-summary-save-article arg)))
11168 (defun gnus-summary-write-article-body-file (&optional arg)
11169 "Write the current article body to a file, deleting the previous file.
11176 (let ((gnus-default-article-saver 'gnus-summary-write-body-to-file))
11177 (gnus-summary-save-article arg)))
11180 "Print the current article using Muttprint.
11187 (let ((gnus-default-article-saver 'gnus-summary-pipe-to-muttprint))
11188 (gnus-summary-save-article arg t)))
11191 "Pipe the current article through PROGRAM."
11193 (gnus-summary-select-article)
11195 (gnus-eval-in-buffer-window gnus-article-buffer
11208 (set-buffer gnus-original-article-buffer)
11233 result gnus-article-save-directory)
11244 (symbol-name group)) 'request-accept-article t)))
11255 "this article")))
11314 (gnus-summary-select-article))
11316 (set-buffer gnus-article-buffer)
11317 (let ((handles (or gnus-article-mime-handles
11318 (mm-dissect-buffer nil gnus-article-loose-mime)
11319 (and gnus-article-emulate-mime
11323 (unless gnus-article-mime-handles ;; Don't destroy this case.
11344 (cdr gnus-article-current))))))
11353 (article (gnus-summary-article-number))
11354 after-article b e)
11355 (unless (gnus-summary-goto-subject article)
11356 (error "No such article: %d" article))
11395 (setq after-article (or (cdr (assq 'article (car pslist)))
11396 (gnus-summary-article-number)))
11397 (gnus-summary-goto-subject after-article)
11406 b (1- e) (list 'gnus-number gnus-reffed-article-number
11409 after-article gnus-reffed-article-number
11413 gnus-reffed-article-number))
11414 (setq gnus-reffed-article-number (1- gnus-reffed-article-number))
11422 (defun gnus-request-pseudo-article (props)
11425 (let ((gnus-current-article (gnus-summary-article-number)))
11426 (gnus-run-hooks 'gnus-mark-article-hook)))
11430 (gnus-article-setup-buffer)
11431 (set-buffer gnus-article-buffer)
11445 (defun gnus-summary-edit-global-kill (article)
11447 (interactive (list (gnus-summary-article-number)))
11448 (gnus-group-edit-global-kill article))
11450 (defun gnus-summary-edit-local-kill ()
11451 "Edit a local kill file applied to the current newsgroup."
11453 (setq gnus-current-headers (gnus-summary-article-header))
11454 (gnus-group-edit-local-kill
11455 (gnus-summary-article-number) gnus-newsgroup-name))
11460 "Read the headers of article ID and enter them into the Gnus system."
11466 (car (gnus-refer-article-methods)))))
11473 ;; This is an article number.
11474 (setq header (or header (gnus-summary-article-header id))))
11476 (not (gnus-summary-article-sparse-p (mail-header-number header))))
11479 ;; We have to really fetch the header to this article.
11492 (t gnus-reffed-article-number))
11498 (unless (gnus-summary-article-sparse-p (mail-header-number header))
11502 ;; If we fetched by Message-ID and the article came
11503 ;; from a different group, we fudge some bogus article
11504 ;; numbers for this article.
11505 (mail-header-set-number header gnus-reffed-article-number))
11508 (decf gnus-reffed-article-number)
11532 "Highlight selected article in summary buffer."
11587 (article (or (gnus-summary-article-number) gnus-current-article))
11588 (score (or (cdr (assq article
11591 (mark (or (gnus-summary-article-mark) gnus-unread-mark))
11597 (memq article gnus-newsgroup-undownloaded)
11598 (not (memq article gnus-newsgroup-cached)))))
11605 (funcall gnus-summary-highlight-line-function article face))))))
11625 ;; Remove any expired article numbers
11717 (set (make-local-variable 'gnus-newsgroup-ignored-charsets)
11725 "Display the current article buffer fully MIME-buttonized.
11732 (gnus-summary-show-article)))
11734 (defun gnus-summary-repair-multipart (article)
11735 "Add a Content-Type header to a multipart article without one."
11736 (interactive (list (gnus-summary-article-number)))
11737 (gnus-with-article article
11751 (let (gnus-mark-article-hook)
11752 (gnus-summary-select-article t t nil article)))
11755 "Toggle the buttonizing of the article buffer."
11761 (gnus-summary-show-article))
11762 (gnus-summary-show-article)))
11805 "Mark the current article as %s%s.
11830 (gnus-summary-mark-article nil mark)
11850 'gnus-article-sort-by-number))
11867 ;; First and last article in this newsgroup.