-Wed Apr 26 15:57:28 1995 Lars Magne Ingebrigtsen <larsi@gymir.ifi.uio.no>
+Fri Apr 28 00:24:34 1995 Lars Magne Ingebrigtsen <larsi@gjalp.ifi.uio.no>
+
+ * gnus.el (gnus-set-mode-line): Would bug out on nil max-lens.
+ (gnus-summary-read-group): Did not properly configure windows on
+ breaks.
+
+Wed Apr 26 19:48:36 1995 Scott Byer <byer@mv.us.adobe.com>
+
+ * gnus.el (gnus-group-get-new-news) Off by one with relation to
+ the fix in gnus-get-unread-articles.
+
+Thu Apr 27 23:46:32 1995 Lars Magne Ingebrigtsen <larsi@gymir.ifi.uio.no>
+
+ * gnus.el (gnus-summary-next-article): Would bug out on nndigest
+ groups.
+
+Thu Apr 27 13:45:21 1995 Scott Byer <byer@mv.us.adobe.com>
+
+ * nnfolder.el (nnfolder-request-group) Fixed it so it returns an
+ active list even when the flag for not checking mail is t.
+
+ * gnus.el (gnus-get-unread-articles) Changed comparison with level
+ to < to fix fencepost error. Forced active to nil in the case
+ where a foreign newsgroup shouldn't be activated.
+
+Wed Apr 26 19:48:36 1995 Scott Byer <byer@mv.us.adobe.com>
+
+ * nnfolder.el (nnfolder-request-group) Small performance tweak.
+
+ * nnfolder.el (nnfolder-save-mail) Moved the code to kill previous
+ newsgroups headers into the loop, affects mail saved to multiple
+ folders so that they don't have multiple newsgroup markers
+ anymore.
+
+ * nnfolder.el (various) Made sure buffer needed saving before each
+ request.
+
+Thu Apr 27 22:34:13 1995 Lars Magne Ingebrigtsen <larsi@gymir.ifi.uio.no>
+
+ * gnus.el (gnus-parse-newsrc-body): Would reverse the list of
+ groups if no .newsrc.eld file is present.
+ (gnus-parse-newsrc-body): Would subscribe unsubscribed groups.
+ (gnus-summary-mode-map): Many keymap changes.
+
+Thu Apr 27 21:45:05 1995 Lars Magne Ingebrigtsen <larsi@menja.ifi.uio.no>
+
+ * gnus-msg.el (gnus-inews-organization): Use the standard work
+ buffer.
+ (gnus-post-news): Did not use followup-to.
+
+Thu Apr 27 12:38:41 1995 Lars Magne Ingebrigtsen <larsi@bera.ifi.uio.no>
+
+ * gnus-kill.el (gnus-apply-kill-file-internal): Give abetter error
+ massage on rn kill files.
+
+ * gnus.el (gnus-article-de-quoted-unreadable): No interactive spec.
+
+Wed Apr 26 15:57:28 1995 Lars Magne Ingebrigtsen <larsi@menja.ifi.uio.no>
* gnus-message.el (gnus-inews-check-post): Would warn about too
long lines when the last line didn't have a newline.
* gnus-score.el (gnus-score-string): Would loop forever on empty
matches.
+ * gnus.el: 0.60 is released.
+
Wed Apr 26 15:08:00 1995 Lars Magne Ingebrigtsen <larsi@gjalp.ifi.uio.no>
* gnus.el (gnus-groups-to-gnus-format): Would ding on non-existant
(setq form (condition-case nil
(read (current-buffer))
(error nil))))
+ (or (listp form)
+ (error
+ "Illegal kill entry (possibly rn kill file?): %s"
+ form))
(if (or (eq (car form) 'gnus-kill)
(eq (car form) 'gnus-raise)
(eq (car form) 'gnus-lower))
(define-key gnus-summary-send-map "Om" 'gnus-uu-digest-mail-forward)
(define-key gnus-summary-send-map "Op" 'gnus-uu-digest-post-forward)
+;;; Internal functions.
+
+;; Return NUM konverted to a key of exactly LEN chars. Requires NUM>=0.
+;; If LEN=-1, return 0 or more chars as necessary.
+(defun gnus-number-base31 (num len)
+ (if (if (< len 0) (<= num 0) (= len 0))
+ ""
+ (concat (gnus-number-base31 (/ num 31) (1- len))
+ (char-to-string (aref "zyxwvutsrqponmlkjihgfedcba9876543210"
+ (% num 31))))))
+
+(defun gnus-number-base36 (num len)
+ (if (if (< len 0) (<= num 0) (= len 0))
+ ""
+ (concat (gnus-number-base36 (/ num 36) (1- len))
+ (char-to-string (aref "zyxwvutsrqponmlkjihgfedcba9876543210"
+ (% num 36))))))
+
;;; Post news commands of Gnus group mode and summary mode
(defun gnus-group-post-news ()
(save-excursion
(set-buffer article-buffer)
(funcall gnus-followup-to-function group)))))
- (eq gnus-use-followup-to t)))
+ gnus-use-followup-to))
(if post
(progn
(gnus-configure-windows '(1 0 0))
If given a prefix, and the group is a foreign group, this function
will attempt to use the foreign server to post the article."
(interactive "P")
- ;; Check whether the article is a good Net Citizen.
- (if (and gnus-article-check-size (not (gnus-inews-check-post)))
- ;; Aber nein!
- ()
- ;; Looks ok, so we do the nasty.
- (let* ((case-fold-search nil)
- (server-running (gnus-server-opened gnus-select-method))
- (reply gnus-article-reply))
- (save-excursion
- ;; Connect to default NNTP server if necessary.
- ;; Suggested by yuki@flab.fujitsu.junet.
- (gnus-start-news-server) ;Use default server.
- ;; NNTP server must be opened before current buffer is modified.
- (widen)
+ (let* ((case-fold-search nil)
+ (server-running (gnus-server-opened gnus-select-method))
+ (reply gnus-article-reply))
+ (save-excursion
+ ;; Connect to default NNTP server if necessary.
+ ;; Suggested by yuki@flab.fujitsu.junet.
+ (gnus-start-news-server) ;Use default server.
+ ;; NNTP server must be opened before current buffer is modified.
+ (widen)
+ (goto-char (point-min))
+ (run-hooks 'news-inews-hook)
+ (save-restriction
+ (narrow-to-region
+ (point-min)
+ (progn
+ (goto-char (point-min))
+ (re-search-forward
+ (concat "^" (regexp-quote mail-header-separator) "$"))))
+
+ ;; Correct newsgroups field: change sequence of spaces to comma and
+ ;; eliminate spaces around commas. Eliminate imbedded line breaks.
(goto-char (point-min))
- (run-hooks 'news-inews-hook)
- (save-restriction
- (narrow-to-region
- (point-min)
- (progn
- (goto-char (point-min))
- (re-search-forward
- (concat "^" (regexp-quote mail-header-separator) "$"))))
-
- ;; Correct newsgroups field: change sequence of spaces to comma and
- ;; eliminate spaces around commas. Eliminate imbedded line breaks.
- (goto-char (point-min))
- (if (search-forward-regexp "^Newsgroups: +" nil t)
- (save-restriction
- (narrow-to-region
- (point)
- (if (re-search-forward "^[^ \t]" nil 'end)
- (match-beginning 0)
- (point-max)))
- (goto-char (point-min))
- (replace-regexp "\n[ \t]+" " ") ;No line breaks (too confusing)
- (goto-char (point-min))
- (replace-regexp "[ \t\n]*,[ \t\n]*\\|[ \t]+" ",")))
-
- ;; Added by Per Abrahamsen <abraham@iesd.auc.dk>.
- ;; Help save the the world!
- (or
- gnus-expert-user
- (let ((newsgroups (mail-fetch-field "newsgroups"))
- (followup-to (mail-fetch-field "followup-to"))
- groups to)
- (if (and (string-match "," newsgroups) (not followup-to))
- (progn
- (while (string-match "," newsgroups)
- (setq groups
- (cons (list (substring newsgroups
- 0 (match-beginning 0)))
- groups))
- (setq newsgroups (substring newsgroups (match-end 0))))
- (setq groups (nreverse (cons (list newsgroups) groups)))
-
- (setq to
- (completing-read "Followups to: (default all groups) "
- groups))
- (if (> (length to) 0)
- (progn
- (goto-char (point-min))
- (insert "Followup-To: " to "\n")))))))
+ (if (search-forward-regexp "^Newsgroups: +" nil t)
+ (save-restriction
+ (narrow-to-region
+ (point)
+ (if (re-search-forward "^[^ \t]" nil 'end)
+ (match-beginning 0)
+ (point-max)))
+ (goto-char (point-min))
+ (replace-regexp "\n[ \t]+" " ") ;No line breaks (too confusing)
+ (goto-char (point-min))
+ (replace-regexp "[ \t\n]*,[ \t\n]*\\|[ \t]+" ",")))
+
+ ;; Added by Per Abrahamsen <abraham@iesd.auc.dk>.
+ ;; Help save the the world!
+ (or
+ gnus-expert-user
+ (let ((newsgroups (mail-fetch-field "newsgroups"))
+ (followup-to (mail-fetch-field "followup-to"))
+ groups to)
+ (if (and (string-match "," newsgroups) (not followup-to))
+ (progn
+ (while (string-match "," newsgroups)
+ (setq groups
+ (cons (list (substring newsgroups
+ 0 (match-beginning 0)))
+ groups))
+ (setq newsgroups (substring newsgroups (match-end 0))))
+ (setq groups (nreverse (cons (list newsgroups) groups)))
+
+ (setq to
+ (completing-read "Followups to: (default all groups) "
+ groups))
+ (if (> (length to) 0)
+ (progn
+ (goto-char (point-min))
+ (insert "Followup-To: " to "\n")))))))
+
+ ;; Cleanup Followup-To.
+ (goto-char (point-min))
+ (if (search-forward-regexp "^Followup-To: +" nil t)
+ (save-restriction
+ (narrow-to-region
+ (point)
+ (if (re-search-forward "^[^ \t]" nil 'end)
+ (match-beginning 0)
+ (point-max)))
+ (goto-char (point-min))
+ (replace-regexp "\n[ \t]+" " ") ;No line breaks (too confusing)
+ (goto-char (point-min))
+ (replace-regexp "[ \t\n]*,[ \t\n]*\\|[ \t]+" ",")))
- ;; Cleanup Followup-To.
- (goto-char (point-min))
- (if (search-forward-regexp "^Followup-To: +" nil t)
- (save-restriction
- (narrow-to-region
- (point)
- (if (re-search-forward "^[^ \t]" nil 'end)
- (match-beginning 0)
- (point-max)))
- (goto-char (point-min))
- (replace-regexp "\n[ \t]+" " ") ;No line breaks (too confusing)
- (goto-char (point-min))
- (replace-regexp "[ \t\n]*,[ \t\n]*\\|[ \t]+" ",")))
-
- ;; Mail the message too if To:, Bcc:. or Cc: exists.
- (if (or (mail-fetch-field "to" nil t)
- (mail-fetch-field "bcc" nil t)
- (mail-fetch-field "cc" nil t))
- (if gnus-mail-send-method
- (save-excursion
- (save-restriction
- (widen)
- (message "Sending via mail...")
+ ;; Mail the message too if To:, Bcc:. or Cc: exists.
+ (if (or (mail-fetch-field "to" nil t)
+ (mail-fetch-field "bcc" nil t)
+ (mail-fetch-field "cc" nil t))
+ (if gnus-mail-send-method
+ (save-excursion
+ (save-restriction
+ (widen)
+ (message "Sending via mail...")
- (if gnus-mail-courtesy-message
- (progn
- ;; Insert "courtesy" mail message.
- (goto-char 1)
- (re-search-forward
- (concat "^" (regexp-quote
- mail-header-separator) "$"))
- (forward-line 1)
- (insert gnus-mail-courtesy-message)
- (funcall gnus-mail-send-method)
- (goto-char 1)
- (search-forward gnus-mail-courtesy-message)
- (replace-match "" t t))
- (funcall gnus-mail-send-method))
-
- (message "Sending via mail... done")
+ (if gnus-mail-courtesy-message
+ (progn
+ ;; Insert "courtesy" mail message.
+ (goto-char 1)
+ (re-search-forward
+ (concat "^" (regexp-quote
+ mail-header-separator) "$"))
+ (forward-line 1)
+ (insert gnus-mail-courtesy-message)
+ (funcall gnus-mail-send-method)
+ (goto-char 1)
+ (search-forward gnus-mail-courtesy-message)
+ (replace-match "" t t))
+ (funcall gnus-mail-send-method))
+
+ (message "Sending via mail... done")
- (goto-char 1)
- (narrow-to-region
- 1 (re-search-forward
- (concat "^" (regexp-quote
- mail-header-separator) "$")))
- (goto-char 1)
- (delete-matching-lines "BCC:.*")))
- (ding)
- (message "No mailer defined. To: and/or Cc: fields ignored.")
- (sit-for 1))))
-
- ;; Send to NNTP server.
- (message "Posting to USENET...")
- (if (gnus-inews-article use-group-method)
- (progn
- (message "Posting to USENET... done")
- (if (gnus-buffer-exists-p (car-safe reply))
- (progn
- (save-excursion
- (set-buffer gnus-summary-buffer)
- (gnus-summary-mark-article-as-replied
- (cdr reply))))))
- ;; We cannot signal an error.
- (ding) (message "Article rejected: %s"
- (gnus-status-message gnus-select-method)))
- (set-buffer-modified-p nil))
- ;; If NNTP server is opened by gnus-inews-news, close it by myself.
- (or server-running
- (gnus-close-server (gnus-find-method-for-group gnus-newsgroup-name)))
- (and (fboundp 'bury-buffer) (bury-buffer))
- ;; Restore last window configuration.
- (and gnus-winconf-post-news
- (set-window-configuration gnus-winconf-post-news))
- (setq gnus-winconf-post-news nil))))
+ (goto-char 1)
+ (narrow-to-region
+ 1 (re-search-forward
+ (concat "^" (regexp-quote
+ mail-header-separator) "$")))
+ (goto-char 1)
+ (delete-matching-lines "BCC:.*")))
+ (ding)
+ (message "No mailer defined. To: and/or Cc: fields ignored.")
+ (sit-for 1))))
+
+ ;; Send to NNTP server.
+ (message "Posting to USENET...")
+ (if (gnus-inews-article use-group-method)
+ (progn
+ (message "Posting to USENET... done")
+ (if (gnus-buffer-exists-p (car-safe reply))
+ (progn
+ (save-excursion
+ (set-buffer gnus-summary-buffer)
+ (gnus-summary-mark-article-as-replied
+ (cdr reply))))))
+ ;; We cannot signal an error.
+ (ding) (message "Article rejected: %s"
+ (gnus-status-message gnus-select-method)))
+ (set-buffer-modified-p nil))
+ ;; If NNTP server is opened by gnus-inews-news, close it by myself.
+ (or server-running
+ (gnus-close-server (gnus-find-method-for-group gnus-newsgroup-name)))
+ (and (fboundp 'bury-buffer) (bury-buffer))
+ ;; Restore last window configuration.
+ (and gnus-winconf-post-news
+ (set-window-configuration gnus-winconf-post-news))
+ (setq gnus-winconf-post-news nil)))
(defun gnus-inews-check-post ()
"Check whether the post looks ok."
(defun gnus-inews-article (&optional use-group-method)
"Post an article in current buffer using NNTP protocol."
- (let ((artbuf (current-buffer))
- (tmpbuf (get-buffer-create " *Gnus-posting*")))
- (widen)
- (goto-char (point-max))
- ;; require a newline at the end for inews to append .signature to
- (or (= (preceding-char) ?\n)
- (insert ?\n))
- ;; Prepare article headers. All message body such as signature
- ;; must be inserted before Lines: field is prepared.
- (save-restriction
- (goto-char (point-min))
- (narrow-to-region
- (point-min)
- (save-excursion
- (re-search-forward
- (concat "^" (regexp-quote mail-header-separator) "$"))
- (match-beginning 0)))
- (gnus-inews-remove-headers)
- (gnus-inews-insert-headers)
- (run-hooks gnus-inews-article-header-hook)
- (widen))
- (save-excursion
- (set-buffer tmpbuf)
- (buffer-disable-undo (current-buffer))
- (erase-buffer)
- (insert-buffer-substring artbuf)
- ;; Remove the header separator.
- (goto-char (point-min))
- (re-search-forward
- (concat "^" (regexp-quote mail-header-separator) "$"))
- (replace-match "" t t)
- ;; This hook may insert a signature.
- (run-hooks 'gnus-prepare-article-hook)
- ;; Run final inews hooks. This hook may do FCC.
- ;; The article must be saved before being posted because
- ;; `gnus-request-post' modifies the buffer.
- (run-hooks 'gnus-inews-article-hook)
- ;; Post an article to NNTP server.
- ;; Return NIL if post failed.
- (prog1
- (gnus-request-post
- (if use-group-method
- (gnus-find-method-for-group gnus-newsgroup-name)
- gnus-select-method) use-group-method)
- (kill-buffer (current-buffer))))))
+ ;; Check whether the article is a good Net Citizen.
+ (if (and gnus-article-check-size (not (gnus-inews-check-post)))
+ ;; Aber nein!
+ ()
+ ;; Looks ok, so we do the nasty.
+ (let ((artbuf (current-buffer))
+ (tmpbuf (get-buffer-create " *Gnus-posting*")))
+ (widen)
+ (goto-char (point-max))
+ ;; require a newline at the end for inews to append .signature to
+ (or (= (preceding-char) ?\n)
+ (insert ?\n))
+ ;; Prepare article headers. All message body such as signature
+ ;; must be inserted before Lines: field is prepared.
+ (save-restriction
+ (goto-char (point-min))
+ (narrow-to-region
+ (point-min)
+ (save-excursion
+ (re-search-forward
+ (concat "^" (regexp-quote mail-header-separator) "$"))
+ (match-beginning 0)))
+ (gnus-inews-remove-headers)
+ (gnus-inews-insert-headers)
+ (run-hooks gnus-inews-article-header-hook)
+ (widen))
+ (save-excursion
+ (set-buffer tmpbuf)
+ (buffer-disable-undo (current-buffer))
+ (erase-buffer)
+ (insert-buffer-substring artbuf)
+ ;; Remove the header separator.
+ (goto-char (point-min))
+ (re-search-forward
+ (concat "^" (regexp-quote mail-header-separator) "$"))
+ (replace-match "" t t)
+ ;; This hook may insert a signature.
+ (run-hooks 'gnus-prepare-article-hook)
+ ;; Run final inews hooks. This hook may do FCC.
+ ;; The article must be saved before being posted because
+ ;; `gnus-request-post' modifies the buffer.
+ (run-hooks 'gnus-inews-article-hook)
+ ;; Post an article to NNTP server.
+ ;; Return NIL if post failed.
+ (prog1
+ (gnus-request-post
+ (if use-group-method
+ (gnus-find-method-for-group gnus-newsgroup-name)
+ gnus-select-method) use-group-method)
+ (kill-buffer (current-buffer)))))))
(defun gnus-inews-remove-headers ()
(let ((case-fold-search t))
"Generate unique ID from user name and current time."
(concat (downcase (gnus-inews-login-name))
(mapconcat
- (lambda (num) (gnus-number-base-x num 3 31))
+ (lambda (num) (gnus-number-base31 num 3))
(current-time) "")))
+
+(defvar gnus-unique-id-char nil)
+
+;; If you ever change this function, make sure the new version
+;; cannot generate IDs that the old version could.
+;; You might for example insert a "." somewhere (not next to another dot
+;; or string boundary), or modify the newsreader name to "Ding".
+(defun gnus-inews-unique-id-new ()
+ ;; Dont use microseconds from (current-time), they may be unsupported.
+ ;; Instead we use this randomly inited counter.
+ (setq gnus-unique-id-char
+ (% (1+ (or gnus-unique-id-char (logand (random t) (1- (lsh 1 20)))))
+ ;; (current-time) returns 16-bit ints,
+ ;; and 2^16*25 just fits into 4 digits i base 36.
+ (* 25 25)))
+ (let ((tm (if (fboundp 'current-time)
+ (current-time) '(12191 46742 287898))))
+ (concat
+ (if (memq system-type '(ms-dos emx vax-vms))
+ (let ((user (downcase (gnus-inews-login-name))))
+ (while (string-match "[^a-z0-9_]" user)
+ (aset user (match-beginning 0) ?_))
+ user)
+ (gnus-number-base36 (user-uid) -1))
+ (gnus-number-base36 (+ (car tm) (lsh (% gnus-unique-id-char 25) 16)) 4)
+ (gnus-number-base36 (+ (nth 1 tm) (lsh (/ gnus-unique-id-char 25) 16)) 4)
+ ;; Append the newsreader name, because while the generated
+ ;; ID is unique to this newsreader, other newsreaders might
+ ;; otherwise generate the same ID via another algorithm.
+ ".DING")))
+
+
(defun gnus-inews-date ()
"Current time string."
(timezone-make-date-arpa-standard
(string-match " " organization)
(not (string-match "^/[^/]+/" (expand-file-name organization))))
(save-excursion
- (set-buffer (get-buffer-create " *Gnus organization*"))
- (buffer-disable-undo (current-buffer))
- (erase-buffer)
+ (gnus-set-work-buffer)
(if (file-exists-p organization)
(insert-file-contents organization)
(insert organization))
(use-local-map (copy-keymap (current-local-map)))
(local-set-key "\C-c\C-c" 'gnus-mail-send-and-exit))
-(provide 'gnus-message)
+(provide 'gnus-msg)
;;; gnus-message.el ends here
(read-only (gnus-score-get 'read-only alist))
(files (gnus-score-get 'files alist))
(exclude-files (gnus-score-get 'exclude-files alist))
- (orphan (gnus-score-get 'orphan alist))
+ (orphan (car (gnus-score-get 'orphan alist)))
(adapt (gnus-score-get 'adapt alist))
(eval (gnus-score-get 'eval alist)))
;; We do not respect eval and files atoms from global score
(setq gnus-scores-exclude-files exclude-files)
(if orphan (setq gnus-orphan-score (car orphan)))
(setq gnus-adaptive-score-alist
- (cond ((eq adapt t)
+ (cond ((equal adapt '(t))
gnus-default-adaptive-score-alist)
- ((eq adapt 'ignore)
+ ((equal adapt '(ignore))
nil)
((consp adapt)
adapt)))
(gnus-score-get 'read-only score)
(not (file-writable-p file)))
()
- (setq score (delq (assq 'touched score) score))
+ (setq score (setcdr entry (delq (assq 'touched score) score)))
(erase-buffer)
(let (emacs-lisp-mode-hook)
(pp score (current-buffer)))
(provide 'gnus-score)
-;;; gnus-score.el ends here
\ No newline at end of file
+;;; gnus-score.el ends here
;;; Code:
(require 'gnus)
-(require 'gnus-message)
+(require 'gnus-msg)
;; Default viewing action rules
(defun gnus-uu-part-number (article)
(let ((subject (header-subject (gnus-get-header-by-number article))))
- (if (string-match "([0-9]+ */[0-9]+)\\|([0-9]+ * of *[0-9]+)"
+ (if (string-match "[0-9]+ */[0-9]+\\|[0-9]+ * of *[0-9]+"
subject)
(substring subject (match-beginning 0) (match-end 0))
"")))
(easy-menu-add gnus-article-treatment-menu))
gnus-article-mode-hook)))
-(provide 'gnus-visual)
+(provide 'gnus-vis)
;;; gnus-visual.el ends here
(defconst gnus-maintainer "Lars Magne Ingebrigtsen <larsi@ifi.uio.no>"
"The mail address of the Gnus maintainer.")
-(defconst gnus-version "(ding) Gnus v0.60"
+(defconst gnus-version "(ding) Gnus v0.61"
"Version number for this version of Gnus.")
(defvar gnus-info-nodes
(autoload 'mail-setup "sendmail")
(autoload 'news-mail-other-window "rnewspost")
(autoload 'news-reply-yank-original "rnewspost")
-
+ (autoload 'news-caesar-buffer-body "rnewspost")
+
(autoload 'rmail-insert-rmail-file-header "rmail")
(autoload 'rmail-count-new-messages "rmail")
(autoload 'rmail-show-message "rmail")
(autoload 'gnus-Folder-save-name "gnus-mh")
(autoload 'gnus-folder-save-name "gnus-mh")
- (autoload 'gnus-group-make-menu-bar "gnus-visual")
- (autoload 'gnus-summary-make-menu-bar "gnus-visual")
- (autoload 'gnus-article-make-menu-bar "gnus-visual")
- (autoload 'gnus-visual-highlight-selected-summary "gnus-visual")
- (autoload 'gnus-visual-summary-highlight-line "gnus-visual")
+ (autoload 'gnus-group-make-menu-bar "gnus-vis")
+ (autoload 'gnus-summary-make-menu-bar "gnus-vis")
+ (autoload 'gnus-article-make-menu-bar "gnus-vis")
+ (autoload 'gnus-visual-highlight-selected-summary "gnus-vis")
+ (autoload 'gnus-visual-summary-highlight-line "gnus-vis")
(autoload 'gnus-uu-mark-by-regexp "gnus-uu" nil t)
(autoload 'gnus-uu-mark-region "gnus-uu" nil t)
(autoload 'gnus-score-adaptive "gnus-score")
(autoload 'gnus-score-remove-lines-adaptive "gnus-score")
- (autoload 'gnus-summary-send-map "gnus-message" nil nil 'keymap)
- (autoload 'gnus-group-post-news "gnus-message" nil t)
- (autoload 'gnus-summary-post-news "gnus-message" nil t)
- (autoload 'gnus-summary-followup "gnus-message" nil t)
- (autoload 'gnus-summary-followup-with-original "gnus-message" nil t)
- (autoload 'gnus-summary-followup-and-reply "gnus-message" nil t)
- (autoload 'gnus-summary-followup-and-reply-with-original "gnus-message" nil t)
- (autoload 'gnus-summary-cancel-article "gnus-message" nil t)
- (autoload 'gnus-summary-supersede-article "gnus-message" nil t)
- (autoload 'gnus-post-news "gnus-message" nil t)
- (autoload 'gnus-inews-news "gnus-message" nil t)
- (autoload 'gnus-cancel-news "gnus-message" nil t)
- (autoload 'gnus-summary-reply "gnus-message" nil t)
- (autoload 'gnus-summary-reply-with-original "gnus-message" nil t)
- (autoload 'gnus-summary-mail-forward "gnus-message" nil t)
- (autoload 'gnus-summary-mail-other-window "gnus-message" nil t)
- (autoload 'gnus-mail-reply-using-mail "gnus-message")
- (autoload 'gnus-mail-yank-original "gnus-message")
- (autoload 'gnus-mail-send-and-exit "gnus-message")
- (autoload 'gnus-mail-forward-using-mail "gnus-message")
- (autoload 'gnus-mail-other-window-using-mail "gnus-message")
+ (autoload 'gnus-summary-send-map "gnus-msg" nil nil 'keymap)
+ (autoload 'gnus-group-post-news "gnus-msg" nil t)
+ (autoload 'gnus-summary-post-news "gnus-msg" nil t)
+ (autoload 'gnus-summary-followup "gnus-msg" nil t)
+ (autoload 'gnus-summary-followup-with-original "gnus-msg" nil t)
+ (autoload 'gnus-summary-followup-and-reply "gnus-msg" nil t)
+ (autoload 'gnus-summary-followup-and-reply-with-original "gnus-msg" nil t)
+ (autoload 'gnus-summary-cancel-article "gnus-msg" nil t)
+ (autoload 'gnus-summary-supersede-article "gnus-msg" nil t)
+ (autoload 'gnus-post-news "gnus-msg" nil t)
+ (autoload 'gnus-inews-news "gnus-msg" nil t)
+ (autoload 'gnus-cancel-news "gnus-msg" nil t)
+ (autoload 'gnus-summary-reply "gnus-msg" nil t)
+ (autoload 'gnus-summary-reply-with-original "gnus-msg" nil t)
+ (autoload 'gnus-summary-mail-forward "gnus-msg" nil t)
+ (autoload 'gnus-summary-mail-other-window "gnus-msg" nil t)
+ (autoload 'gnus-mail-reply-using-mail "gnus-msg")
+ (autoload 'gnus-mail-yank-original "gnus-msg")
+ (autoload 'gnus-mail-send-and-exit "gnus-msg")
+ (autoload 'gnus-mail-forward-using-mail "gnus-msg")
+ (autoload 'gnus-mail-other-window-using-mail "gnus-msg")
)
(yes-or-no-p prompt)
(message "")))
-;; Return a string of length POS+1 representing NUMber in reverse
-;; BASE. The resulting string will be left padded with zeds.
-(defun gnus-number-base-x (num pos base)
- (if (< pos 0)
- ""
- (concat
- (char-to-string
- (aref "zyxwvutsrqponmlkjihgfedcba9876543210" (/ num (expt base pos))))
- (gnus-number-base-x
- (% num (expt base pos)) (1- pos) base))))
-
;; Check whether to use long file names.
(defun gnus-use-long-file-name (symbol)
;; The variable has to be set...
(or visible-only
(let ((entry (cdr (gnus-gethash group gnus-newsrc-hashtb))))
(while (and entry
+ (car entry)
(not
(gnus-goto-char
(text-property-any
(defun gnus-group-edit-group (group &optional part)
"Edit the group on the current line."
(interactive (list (gnus-group-group-name)))
- (let ((done-func (lambda ()
- "Exit editing mode and update the information."
- (interactive)
- (gnus-group-edit-group-done 'part 'group)))
+ (let ((done-func '(lambda ()
+ "Exit editing mode and update the information."
+ (interactive)
+ (gnus-group-edit-group-done 'part 'group)))
(part (or part 'info))
info)
(if group (setq info (nth 2 (gnus-gethash group gnus-newsrc-hashtb)))
specify which levels you are interested in re-scanning."
(interactive "P")
(run-hooks 'gnus-get-new-news-hook)
- (if (and gnus-read-active-file (not arg))
- (progn
- (gnus-read-active-file)
- (gnus-get-unread-articles (or arg (1+ gnus-level-subscribed))))
- (let ((gnus-read-active-file nil))
- (gnus-get-unread-articles (or arg (1+ gnus-level-subscribed)))))
- (gnus-group-list-groups
- (or gnus-group-always-list-unread arg gnus-level-subscribed)
- gnus-have-all-newsgroups))
+ (let ((level arg))
+ (if (and gnus-read-active-file (not level))
+ (progn
+ (gnus-read-active-file)
+ (gnus-get-unread-articles (or level (1+ gnus-level-subscribed))))
+ (let ((gnus-read-active-file nil))
+ (gnus-get-unread-articles (or level (1+ gnus-level-subscribed)))))
+ (gnus-group-list-groups
+ (or gnus-group-always-list-unread level gnus-level-subscribed)
+ gnus-have-all-newsgroups)))
(defun gnus-group-get-new-news-this-group (n)
"Check for newly arrived news in the current group (and the N-1 next groups).
(defvar gnus-summary-interest-map nil)
(defvar gnus-summary-process-map nil)
(defvar gnus-summary-sort-map nil)
-(defvar gnus-summary-mgroup-map nil)
-(defvar gnus-summary-vsave-map nil)
+(defvar gnus-summary-backend-map nil)
+(defvar gnus-summary-save-map nil)
+(defvar gnus-summary-wash-map nil)
+(defvar gnus-summary-help-map nil)
(put 'gnus-summary-mode 'mode-class 'special)
(define-key gnus-summary-exit-map "Q" 'gnus-summary-exit)
(define-key gnus-summary-exit-map "Z" 'gnus-summary-exit)
(define-key gnus-summary-exit-map "n" 'gnus-summary-catchup-and-goto-next-group)
+ (define-key gnus-summary-exit-map "R" 'gnus-summary-reselect-current-group)
+ (define-key gnus-summary-exit-map "G" 'gnus-summary-rescan-group)
(define-prefix-command 'gnus-summary-article-map)
(define-key gnus-summary-article-map "c" 'gnus-summary-caesar-message)
(define-key gnus-summary-article-map "g" 'gnus-summary-show-article)
(define-key gnus-summary-article-map "t" 'gnus-summary-toggle-header)
- (define-key gnus-summary-article-map "hh" 'gnus-article-hide-headers)
- (define-key gnus-summary-article-map "hs" 'gnus-article-hide-signature)
- (define-key gnus-summary-article-map "hc" 'gnus-article-hide-citation)
- (define-key gnus-summary-article-map "ho" 'gnus-article-treat-overstrike)
- (define-key gnus-summary-article-map "hw" 'gnus-article-word-wrap)
- (define-key gnus-summary-article-map "hd" 'gnus-article-remove-cr)
- (define-key gnus-summary-article-map "hq" 'gnus-article-de-quoted-unreadable)
- (define-key gnus-summary-article-map "hf" 'gnus-article-display-x-face)
- (define-key gnus-summary-article-map "ht" 'gnus-article-date-ut)
- (define-key gnus-summary-article-map "h\C-t" 'gnus-article-date-local)
- (define-key gnus-summary-article-map "hT" 'gnus-article-date-lapsed)
(define-key gnus-summary-article-map "m" 'gnus-summary-toggle-mime)
(define-key gnus-summary-article-map "s" 'gnus-summary-isearch-article)
+ (define-prefix-command 'gnus-summary-wash-map)
+ (define-key gnus-summary-mode-map "W" 'gnus-summary-wash-map)
+ (define-key gnus-summary-wash-map "h" 'gnus-article-hide-headers)
+ (define-key gnus-summary-wash-map "s" 'gnus-article-hide-signature)
+ (define-key gnus-summary-wash-map "c" 'gnus-article-hide-citation)
+ (define-key gnus-summary-wash-map "o" 'gnus-article-treat-overstrike)
+ (define-key gnus-summary-wash-map "w" 'gnus-article-word-wrap)
+ (define-key gnus-summary-wash-map "d" 'gnus-article-remove-cr)
+ (define-key gnus-summary-wash-map "q" 'gnus-article-de-quoted-unreadable)
+ (define-key gnus-summary-wash-map "f" 'gnus-article-display-x-face)
+ (define-key gnus-summary-wash-map "t" 'gnus-article-date-ut)
+ (define-key gnus-summary-wash-map "\C-t" 'gnus-article-date-local)
+ (define-key gnus-summary-wash-map "T" 'gnus-article-date-lapsed)
+
+
+ (define-prefix-command 'gnus-summary-help-map)
+ (define-key gnus-summary-mode-map "H" 'gnus-summary-help-map)
+ (define-key gnus-summary-help-map "v" 'gnus-version)
+ (define-key gnus-summary-help-map "f" 'gnus-summary-fetch-faq)
+ (define-key gnus-summary-help-map "d" 'gnus-summary-describe-group)
+ (define-key gnus-summary-help-map "h" 'gnus-summary-describe-briefly)
+ (define-key gnus-summary-help-map "i" 'gnus-info-find-node)
+
+
+ (define-prefix-command 'gnus-summary-backend-map)
+ (define-key gnus-summary-mode-map "B" 'gnus-summary-backend-map)
+ (define-key gnus-summary-backend-map "e" 'gnus-summary-expire-articles)
+ (define-key gnus-summary-backend-map "\177" 'gnus-summary-delete-article)
+ (define-key gnus-summary-backend-map "m" 'gnus-summary-move-article)
+ (define-key gnus-summary-backend-map "r" 'gnus-summary-respool-article)
+ (define-key gnus-summary-backend-map "w" 'gnus-summary-edit-article)
+ (define-key gnus-summary-backend-map "c" 'gnus-summary-copy-article)
+
+
+ (define-prefix-command 'gnus-summary-save-map)
+ (define-key gnus-summary-mode-map "O" 'gnus-summary-save-map)
+ (define-key gnus-summary-save-map "o" 'gnus-summary-save-article)
+ (define-key gnus-summary-save-map "m" 'gnus-summary-save-article-mail)
+ (define-key gnus-summary-save-map "r" 'gnus-summary-save-article-rmail)
+ (define-key gnus-summary-save-map "f" 'gnus-summary-save-article-file)
+ (define-key gnus-summary-save-map "h" 'gnus-summary-save-article-folder)
+ (define-key gnus-summary-save-map "p" 'gnus-summary-pipe-output)
+
+
(define-prefix-command 'gnus-summary-extract-map)
(define-key gnus-summary-mode-map "X" 'gnus-summary-extract-map)
; (define-key gnus-summary-extract-map "x" 'gnus-summary-extract-any)
(define-key gnus-summary-various-map "&" 'gnus-summary-execute-command)
(define-key gnus-summary-various-map "T" 'gnus-summary-toggle-truncation)
(define-key gnus-summary-various-map "e" 'gnus-summary-expand-window)
- (define-key gnus-summary-various-map "S" 'gnus-summary-reselect-current-group)
- (define-key gnus-summary-various-map "g" 'gnus-summary-rescan-group)
- (define-key gnus-summary-various-map "V" 'gnus-version)
- (define-key gnus-summary-various-map "f" 'gnus-summary-fetch-faq)
- (define-key gnus-summary-various-map "d" 'gnus-summary-describe-group)
- (define-key gnus-summary-various-map "?" 'gnus-summary-describe-briefly)
- (define-key gnus-summary-various-map "i" 'gnus-info-find-node)
(define-key gnus-summary-various-map "D" 'gnus-summary-enter-digest-group)
(define-key gnus-summary-various-map "k" 'gnus-summary-edit-local-kill)
(define-key gnus-summary-various-map "K" 'gnus-summary-edit-global-kill)
- (define-prefix-command 'gnus-summary-vsave-map)
- (define-key gnus-summary-various-map "o" 'gnus-summary-vsave-map)
- (define-key gnus-summary-vsave-map "o" 'gnus-summary-save-article)
- (define-key gnus-summary-vsave-map "m" 'gnus-summary-save-article-mail)
- (define-key gnus-summary-vsave-map "r" 'gnus-summary-save-article-rmail)
- (define-key gnus-summary-vsave-map "f" 'gnus-summary-save-article-file)
- (define-key gnus-summary-vsave-map "h" 'gnus-summary-save-article-folder)
- (define-key gnus-summary-vsave-map "p" 'gnus-summary-pipe-output)
-
(define-key gnus-summary-various-map "S" 'gnus-summary-score-map)
(define-prefix-command 'gnus-summary-sort-map)
(define-key gnus-summary-sort-map "d" 'gnus-summary-sort-by-date)
(define-key gnus-summary-sort-map "i" 'gnus-summary-sort-by-score)
- (define-prefix-command 'gnus-summary-mgroup-map)
- (define-key gnus-summary-various-map "m" 'gnus-summary-mgroup-map)
- (define-key gnus-summary-mgroup-map "e" 'gnus-summary-expire-articles)
- (define-key gnus-summary-mgroup-map "\177" 'gnus-summary-delete-article)
- (define-key gnus-summary-mgroup-map "m" 'gnus-summary-move-article)
- (define-key gnus-summary-mgroup-map "r" 'gnus-summary-respool-article)
- (define-key gnus-summary-mgroup-map "w" 'gnus-summary-edit-article)
- (define-key gnus-summary-mgroup-map "c" 'gnus-summary-copy-article)
-
(define-key gnus-summary-mode-map "I" 'gnus-summary-increase-map)
(define-key gnus-summary-mode-map "L" 'gnus-summary-lower-map)
)
(gnus-group-next-unread-group 1)))
nil)
((eq did-select 'quit)
+ (gnus-configure-windows 'summary)
+ (gnus-configure-windows 'newsgroup)
(and (eq major-mode 'gnus-summary-mode)
(not (equal (current-buffer) kill-buffer))
(kill-buffer (current-buffer)))
(- (frame-width) gnus-mode-non-string-length)))
header) ;; passed as argument to any user-format-funcs
(setq mode-string (eval mformat))
- (if (< max-len 4) (setq max-len 4))
- (and (numberp max-len)
- (progn
- (if (> (length mode-string) max-len)
- (setq mode-string
- (concat (substring mode-string 0 (- max-len 3))
- "...")))
- (setq mode-string (format (format "%%-%ds" max-len)
- mode-string))))))
+ (or (numberp max-len)
+ (setq max-len (length mode-string)))
+ (if (< max-len 4) (setq max-len 4))
+ (if (> (length mode-string) max-len)
+ (setq mode-string
+ (concat (substring mode-string 0 (- max-len 3))
+ "...")))
+ (setq mode-string (format (format "%%-%ds" max-len)
+ mode-string))))
(setq mode-line-buffer-identification mode-string)
(set-buffer-modified-p t))))
(bury-buffer gnus-article-buffer))
(setq gnus-current-select-method gnus-select-method)
(pop-to-buffer gnus-group-buffer)
- (gnus-group-jump-to-group group)
- (gnus-group-next-group 1)
+ (if (eq method 'nndigest)
+ ()
+ (gnus-group-jump-to-group group)
+ (gnus-group-next-group 1))
(if (gnus-buffer-exists-p quit-buffer)
(progn
(switch-to-buffer quit-buffer)
gnus-newsgroup-end)))
;; Go to next/previous group.
(t
- (gnus-summary-jump-to-group gnus-newsgroup-name)
+ (or (eq method 'nndigest)
+ (gnus-summary-jump-to-group gnus-newsgroup-name))
(let ((cmd (aref (this-command-keys) 0))
(group
(if (eq gnus-keep-same-level 'best)
processing, but is simply a stop-gap measure until MIME support is
written."
;; Unquote quoted-printable from news articles.
+ (interactive)
(save-excursion
(set-buffer gnus-article-buffer)
(let ((case-fold-search t)
(let ((subscribe nil)
(read-list nil)
(line (1+ (count-lines (point-min) (point))))
+ (already-read (> (length gnus-newsrc-alist) 1))
newsgroup
p p2)
(save-restriction
(cons (list newsgroup
(if subscribe
gnus-level-default-subscribed
- (if read-list gnus-level-default-subscribed
- (1+ gnus-level-default-subscribed)))
+ (if read-list
+ (1+ gnus-level-default-subscribed)
+ gnus-level-default-unsubscribed))
(nreverse read-list))
gnus-newsrc-alist))))))
(setq line (1+ line))
- (forward-line 1))))
- (setq gnus-newsrc-alist (cdr gnus-newsrc-alist))
- (gnus-make-hashtable-from-newsrc-alist)
- nil)
+ (forward-line 1)))
+ (setq gnus-newsrc-alist (cdr gnus-newsrc-alist))
+ (and already-read (setq gnus-newsrc-alist (nreverse gnus-newsrc-alist)))
+ (gnus-make-hashtable-from-newsrc-alist)
+ nil))
(defun gnus-parse-n-options (options)
"Parse -n NEWSGROUPS options and return a cons of YES and NO regexps."
(save-excursion
(nnfolder-possibly-change-group group)
(and (assoc group nnfolder-group-alist)
- (save-excursion
- (set-buffer nntp-server-buffer)
- (erase-buffer)
+ (progn
(if dont-check
t
- (nnfolder-get-new-mail)
- (let ((active (assoc group nnfolder-group-alist)))
- ;; I've been getting stray 211 lines in my nnfolder active
- ;; file. So, let's make sure that doesn't happen. -SLB
- (set-buffer nntp-server-buffer)
- (insert (format "211 %d %d %d %s\n"
- (1+ (- (cdr (car (cdr active)))
- (car (car (cdr active)))))
- (car (car (cdr active)))
- (cdr (car (cdr active)))
- (car active))))
+ (nnfolder-get-new-mail))
+ (let* ((active (assoc group nnfolder-group-alist))
+ (group (car active))
+ (range (car (cdr active)))
+ (minactive (car range))
+ (maxactive (cdr range)))
+ ;; I've been getting stray 211 lines in my nnfolder active
+ ;; file. So, let's make sure that doesn't happen. -SLB
+ (set-buffer nntp-server-buffer)
+ (erase-buffer)
+ (insert (format "211 %d %d %d %s\n"
+ (1+ (- maxactive minactive))
+ minactive maxactive group))
t)))))
;; Don't close the buffer if we're not shutting down the server. This way,
(save-excursion
(set-buffer nnfolder-current-buffer)
;; If the buffer was modified, write the file out now.
- (save-buffer)
+ (and (buffer-modified-p) (save-buffer))
(if (or force
nnfolder-always-close)
;; If we're shutting the server down, we need to kill the buffer and
(nnfolder-delete-mail))
(setq rest (cons (car articles) rest))))
(setq articles (cdr articles)))
- (save-buffer)
+ (and (buffer-modified-p) (save-buffer))
;; Find the lowest active article in this group.
(let* ((active (car (cdr (assoc newsgroup nnfolder-group-alist))))
(marker (concat "\n" nnfolder-article-marker))
(goto-char 1)
(if (search-forward (nnfolder-article-string article) nil t)
(nnfolder-delete-mail))
- (and last (save-buffer))))
+ (and last
+ (buffer-modified-p)
+ (save-buffer))))
result))
(defun nnfolder-request-accept-article (group &optional last)
(save-excursion
(set-buffer nnfolder-current-buffer)
(insert-buffer-substring buf)
- (and last (save-buffer))
+ (and last (buffer-modified-p) (save-buffer))
result)
(nnmail-save-active nnfolder-group-alist nnfolder-active-file))
result))
nil
(nnfolder-delete-mail t t)
(insert-buffer-substring buffer)
- (save-buffer)
+ (and (buffer-modified-p) (save-buffer))
t)))
\f
(nnmail-insert-lines)
(nnmail-insert-xref group-art-list)
- ;; Kill the previous newsgroup markers.
- (goto-char (point-min))
- (search-forward "\n\n" nil t)
- (forward-line -1)
- (while (re-search-backward (concat "^" nnfolder-article-marker) nil t)
- (delete-region (point) (progn (forward-line 1) (point))))
-
;; Insert the mail into each of the destination groups.
(while group-art-list
(setq group-art (car group-art-list)
group-art-list (cdr group-art-list))
+
+ ;; Kill the previous newsgroup markers.
+ (goto-char (point-min))
+ (search-forward "\n\n" nil t)
+ (forward-line -1)
+ (while (search-backward (concat "\n" nnfolder-article-marker) nil t)
+ (delete-region (point) (progn (forward-line 1) (point))))
+
+ ;; Insert the new newsgroup marker.
(nnfolder-possibly-change-group (car group-art))
(nnfolder-insert-newsgroup-line group-art)
(let ((beg (point-min))
(end (point-max))
(obuf (current-buffer)))
- (save-excursion
- (set-buffer nnfolder-current-buffer)
- (goto-char (point-max))
- (insert-buffer-substring obuf beg end))))
+ (set-buffer nnfolder-current-buffer)
+ (goto-char (point-max))
+ (insert-buffer-substring obuf beg end)
+ (set-buffer obuf)))
;; Did we save it anywhere?
save-list))
(1- (lsh 1 25))))
(while (and (search-forward marker nil t)
(re-search-forward number nil t))
- (let (newnum (string-to-number (buffer-substring
+ (let ((newnum (string-to-number (buffer-substring
(match-beginning 0)
- (match-end 0))))
+ (match-end 0)))))
(setq activenumber (max activenumber newnum))
(setq activemin (min activemin newnum))))
(setcar active (min activemin activenumber))
(setq nnfolder-buffer-alist
(delq (car bufs) nnfolder-buffer-alist))
(set-buffer (nth 1 (car bufs)))
- (and (buffer-modified-p)
- (save-buffer)))
+ (and (buffer-modified-p) (save-buffer)))
(setq bufs (cdr bufs)))))
;; (if incoming (delete-file incoming))
))
(defun nnmail-request-post-buffer (post group subject header article-buffer
info follow-to respect-poster)
- (let ((method-address (cdr (assq 'to-address (nth 4 info))))
+ (let ((method-address (cdr (assq 'to-address (nth 5 info))))
from subject date to reply-to message-of
references message-id sender cc sendto elt)
(setq method-address
'nov
(while sequence
(setq article (car sequence))
- (setq file (concat nnspool-current-directory
- (int-to-string article)))
- (and (file-exists-p file)
- (progn
- (insert (format "221 %d Article retrieved.\n" article))
- (setq beg (point))
- (insert-file-contents file)
- (goto-char beg)
- (search-forward "\n\n" nil t)
- (forward-char -1)
- (insert ".\n")
- (delete-region (point) (point-max))))
+ (if (stringp article)
+ (progn
+ (format "221 %d Article retrieved.\n" 0)
+ (nnspool-request-article article))
+ (setq file (concat nnspool-current-directory
+ (int-to-string article)))
+ (and (file-exists-p file)
+ (progn
+ (insert (format "221 %d Article retrieved.\n" article))
+ (setq beg (point))
+ (insert-file-contents file)
+ (goto-char beg)
+ (search-forward "\n\n" nil t)
+ (forward-char -1)
+ (insert ".\n")
+ (delete-region (point) (point-max)))))
(setq sequence (cdr sequence))
(and do-message
@findex gnus-summary-catchup-and-goto-next-group
Mark all articles as read and go to the next group
(@code{gnus-summary-catchup-and-goto-next-group}).
+@item Z R
+@kindex Z R (Summary)
+@findex gnus-summary-reselect-current-group
+Exit this group, and then enter it again
+(@code{gnus-summary-reselect-current-group}). If given a prefix, select
+all articles, both read and unread.
+@item Z G
+@itemx M-g
+@kindex Z G (Summary)
+@kindex M-g (Summary)
+@findex gnus-summary-rescan-group
+Exit the group, check for new articles in the group, and select the
+group (@code{gnus-summary-rescan-group}). If given a prefix, select all
+articles, both read and unread.
@end table
@vindex gnus-exit-group-hook
unwanted headers before saving the article.
@table @kbd
-@item V o o
+@item O o
@itemx o
-@kindex V o o (Summary)
+@kindex O o (Summary)
@kindex o (Summary)
@findex gnus-summary-save-article
Save the current article using the default article saver
(@code{gnus-summary-save-article}).
-@item V o m
-@kindex V o m (Summary)
+@item O m
+@kindex O m (Summary)
@findex gnus-summary-save-article-mail
Save the current article in mail format
(@code{gnus-summary-save-article-mail}).
-@item V o r
-@kindex V o r (Summary)
+@item O r
+@kindex O r (Summary)
@findex gnus-summary-save-article-mail
Save the current article in rmail format
(@code{gnus-summary-save-article-rmail}).
-@item V o f
-@kindex V o f (Summary)
+@item O f
+@kindex O f (Summary)
@findex gnus-summary-save-article-file
Save the current article in plain file format
(@code{gnus-summary-save-article-file}).
-@item V o h
-@kindex V o h (Summary)
+@item O h
+@kindex O h (Summary)
@findex gnus-summary-save-article-folder
Save the current article in mh folder format
(@code{gnus-summary-save-article-folder}).
-@item V o p
-@kindex V o p (Summary)
+@item O p
+@kindex O p (Summary)
@findex gnus-summary-pipe-output
Save the current article in a pipe. Uhm, like, what I mean is - Pipe
the current article to a process (@code{gnus-summary-pipe-output}).
There's a battery of commands for washing the article buffer:
@table @kbd
-@item A h h
-@kindex A h h (Summary)
+@item W h
+@kindex W h (Summary)
@findex gnus-article-hide-headers
Hide headers (@code{gnus-article-hide-headers}).
-@item A h s
-@kindex A h s (Summary)
+@item W s
+@kindex W s (Summary)
@findex gnus-article-hide-signature
Hide signature (@code{gnus-article-hide-signature}).
-@item A h c
-@kindex A h c (Summary)
+@item W c
+@kindex W c (Summary)
@findex gnus-article-hide-citation
Hide citation (@code{gnus-article-hide-citation}).
-@item A h o
-@kindex A h o (Summary)
+@item W o
+@kindex W o (Summary)
@findex gnus-article-treat-overstrike
Treat overstrike (@code{gnus-article-treat-overstrike}).
-@item A h w
-@kindex A h w (Summary)
+@item W w
+@kindex W w (Summary)
@findex gnus-article-word-wrap
Do word wrap (@code{gnus-article-word-wrap}).
-@item A h d
-@kindex A h d (Summary)
+@item W d
+@kindex W d (Summary)
@findex gnus-article-remove-cr
Remove CR (@code{gnus-article-remove-cr}).
-@item A h q
-@kindex A h q (Summary)
+@item W q
+@kindex W q (Summary)
@findex gnus-article-de-quoted-unreadable
Treat quoted-printable (@code{gnus-article-de-quoted-unreadable}).
-@item A h f
-@kindex A h f (Summary)
+@item W f
+@kindex W f (Summary)
@findex gnus-article-display-x-face
@findex gnus-article-x-face-command
Look for and display any X-Face headers
process/prefix convention (@pxref{Process/Prefix}).
@table @kbd
-@item V m e
-@kindex V m e (Summary)
+@item B e
+@kindex B e (Summary)
@findex gnus-summary-expire-articles
Expire all expirable articles in the group
(@code{gnus-summary-expire-articles}).
-@item V m DEL
-@kindex V m DEL (Summary)
+@item B DEL
+@kindex B DEL (Summary)
@findex gnus-summary-delete-articles
Delete the mail article. This is "delete" as in "delete it from your
disk forever and ever, never to return again." Use with caution.
(@code{gnus-summary-delete-article}).
-@item V m m
-@kindex V m m (Summary)
+@item B m
+@kindex B m (Summary)
@findex gnus-summary-move-article
Move the article from one mail group to another
(@code{gnus-summary-move-article}).
-@item V m c
-@kindex V m c (Summary)
+@item B c
+@kindex B c (Summary)
@findex gnus-summary-copy-article
Copy the article from one group (mail group or not) to a mail group
(@code{gnus-summary-copy-article}).
-@item V m r
-@kindex V m r (Summary)
+@item B r
+@kindex B r (Summary)
@findex gnus-summary-respool-article
Respool the mail article (@code{gnus-summary-move-article}).
-@item V m w
+@item B w
@itemx e
-@kindex V m w (Summary)
+@kindex B w (Summary)
@kindex e (Summary)
@findex gnus-summary-edit-article
@kindex C-c C-c (Article)
@subsection Group Information
@table @kbd
-@item V f
-@kindex V f (Summary)
+@item H f
+@kindex H f (Summary)
@findex gnus-summary-fetch-faq
@vindex gnus-group-faq-directory
Try to fetch the FAQ (list of frequently asked questions) for the
current group (@code{gnus-summary-fetch-faq}). Gnus will try to get the
FAQ from @code{gnus-group-faq-directory}, which is usually a directory
on a remote machine. @code{ange-ftp} will be used for fetching the file.
-@item V d
-@kindex V d (Summary)
+@item H d
+@kindex H d (Summary)
@findex gnus-summary-describe-group
Give a brief description of the current group
(@code{gnus-summary-describe-group}). If given a prefix, force
rereading the description from the server.
-@item V ?
-@kindex V ? (Summary)
+@item H h
+@kindex H h (Summary)
@findex gnus-summary-describe-briefly
Give a very brief description of the most important summary keystrokes
(@code{gnus-summary-describe-briefly}).
-@item V i
-@kindex V i (Summary)
+@item H i
+@kindex H i (Summary)
@findex gnus-info-find-node
Go to the Gnus info node (@code{gnus-info-find-node}).
@end table
@kindex V e (Summary)
@findex gnus-summary-expand-window
Expand the summary buffer window (@code{gnus-summary-expand-window}).
-@item V S
-@kindex V S (Summary)
-@findex gnus-summary-reselect-current-group
-Exit this group, and then enter it again
-(@code{gnus-summary-reselect-current-group}). If given a prefix, select
-all articles, both read and unread.
-@item V g
-@itemx M-g
-@kindex V g (Summary)
-@kindex M-g (Summary)
-@findex gnus-summary-rescan-group
-Exit the group, check for new articles in the group, and select the
-group (@code{gnus-summary-rescan-group}). If given a prefix, select all
-articles, both read and unread.
@end table
@node The Article Buffer