+Tue Apr 2 15:05:14 1996 Lars Magne Ingebrigtsen <larsi@aegir.ifi.uio.no>
+
+ * nnfolder.el (nnfolder-possibly-change-group): Make sure the
+ directory exists before writing file.
+ (nnfolder-request-accept-article): Give a better error messae.
+
+Sat Mar 30 18:45:51 1996 Lars Magne Ingebrigtsen <lars@eyesore.no>
+
+ * message.el (message-mode-map): Moved `goto-signature'.
+
+ * nnfolder.el (nnfolder-request-delete-group): Respect
+ nnmail-use-long-file-name.
+ (nnfolder-request-rename-group): Ditto.
+ (nnfolder-possibly-change-group): Ditto.
+
+ * message.el (message-send-and-exit): Bury buffer.
+
+Fri Mar 29 15:11:19 1996 Hallvard B. Furuseth <h.b.furuseth@usit.uio.no>
+
+ * message.el (message-from-style): New `default' value.
+ (message-make-from): Use it.
+
+Fri Mar 29 13:50:55 1996 Lars Magne Ingebrigtsen <lars@eyesore.no>
+
+ * gnus-msg.el (gnus-bug-kill-buffer): New function.
+ (gnus-bug): Use message.
+
+ * message.el (message-yank-original): Avoind `mark-marker'.
+
+ * gnus-setup.el (gnus-use-bbdb): `message' changes.
+ (gnus-use-sc): Ditto.
+
+ * message.el (message-user-organization): Use ORGANIZATION
+ environment variable.
+
+ * nnfolder.el (nnfolder-request-list-newsgroups): Would read the
+ wrong file.
+
Fri Mar 29 07:38:59 1996 Lars Magne Ingebrigtsen <larsi@aegir.ifi.uio.no>
+ * gnus.el: September Gnus v0.61 is released.
+
* gnus.el (gnus-read-active-file): Activate secondary groups.
Fri Mar 29 07:44:06 1996 Lars Magne Ingebrigtsen <larsi@aegir.ifi.uio.no>
(or (fboundp 'event-buffer)
(defmacro event-buffer (event)
- (window-buffer (posn-window (event-start event)))))
+ `(window-buffer (posn-window (event-start ,event)))))
(or (fboundp 'event-point)
(defmacro event-point (event)
- (posn-point (event-start event))))
+ `(posn-point (event-start ,event))))
(defun browse-url-at-mouse (event)
"Ask a WWW browser to load a URL clicked with the mouse.
(message-yank-original)
(setq beg (or beg (mark t))))
(when articles (insert "\n")))
- (set-marker (mark-marker) (point))
+
+ (push-mark)
(goto-char beg)))
(defun gnus-summary-cancel-article (n)
(erase-buffer)
(insert gnus-bug-message)
(goto-char (point-min))
- (pop-to-buffer "*Gnus Bug*")
- (erase-buffer)
- (mail-mode)
- (mail-setup gnus-maintainer nil nil nil nil nil)
- (auto-save-mode auto-save-default)
- (make-local-variable 'gnus-prev-winconf)
- (setq gnus-prev-winconf winconf)
- (local-set-key "\C-c\C-c" 'gnus-bug-mail-send-and-exit)
+ (gnus-setup-message 'bug
+ (message-pop-to-buffer "*Gnus Bug*")
+ (message-setup `((To . ,gnus-maintainer) (Subject . ""))))
+ (push `(gnus-bug-kill-buffer) message-send-actions)
(goto-char (point-min))
(re-search-forward (concat "^" (regexp-quote mail-header-separator) "$"))
(forward-line 1)
(search-forward "Subject: " nil t)
(message "")))
-(defun gnus-bug-mail-send-and-exit ()
- "Send the bug message and exit."
- (interactive)
- (let ((cur (current-buffer)))
- (and (get-buffer "*Gnus Help Bug*")
- (kill-buffer "*Gnus Help Bug*"))
- (message-send-and-exit)
- (when (buffer-name cur)
- (kill-buffer cur))))
+(defun gnus-bug-kill-buffer ()
+ (and (get-buffer "*Gnus Help Bug*")
+ (kill-buffer "*Gnus Help Bug*"))
+ (kill-buffer nil))
(defun gnus-debug ()
"Attemps to go through the Gnus source file and report what variables have been changed.
(progn
(autoload 'bbdb-insinuate-sendmail "bbdb"
"Insidious Big Brother Database" t)
- (add-hook 'mail-setup-hook 'bbdb-insinuate-sendmail)))))
+ (add-hook 'mail-setup-hook 'bbdb-insinuate-sendmail)
+ (add-hook 'message-setup-hook 'bbdb-insinuate-sendmail)))))
(if gnus-use-sc
(progn
- (add-hook 'mail-citation-hook 'sc-cite-original)))
+ (add-hook 'mail-citation-hook 'sc-cite-original)
+ (setq message-cite-function 'sc-cite-original)))
\f
;;;### (autoloads (gnus-batch-score gnus-fetch-group gnus gnus-slave gnus-no-server gnus-update-format) "gnus" "lisp/gnus.el" (12473 2137))
;;; Generated autoloads from lisp/gnus.el
"gnus-bug@ifi.uio.no (The Gnus Bugfixing Girls + Boys)"
"The mail address of the Gnus maintainers.")
-(defconst gnus-version "September Gnus v0.61"
+(defconst gnus-version "September Gnus v0.62"
"Version number for this version of Gnus.")
(defvar gnus-info-nodes
"*Regexp that matches headers to be removed in resent bounced mail.")
;;;###autoload
-(defvar message-from-style 'angles
+(defvar message-from-style 'default
"*Specifies how \"From\" headers look.
If `nil', they contain just the return address like:
If `parens', they look like:
king@grassland.com (Elvis Parsley)
If `angles', they look like:
- Elvis Parsley <king@grassland.com>")
+ Elvis Parsley <king@grassland.com>
+Otherwise, most addresses look like `angles', but they look like `parens'
+ if `angles' would need quoting and `parens' would not.")
;;;###autoload
(defvar message-syntax-checks
(defvar gnus-local-organization)
;;;###autoload
(defvar message-user-organization
- (if (boundp 'gnus-local-organization)
- gnus-local-organization t)
+ (or (and (boundp 'gnus-local-organization)
+ gnus-local-organization)
+ (getenv "ORGANIZATION")
+ t)
"*String to be used as an Organization header.
If t, use `message-user-organization-file'.")
(defvar message-send-mail-function 'message-send-mail
"Function to call to send the current buffer as mail.
The headers should be delimited by a line whose contents match the
-variable `message-header-separator'.")
+variable `mail-header-separator'.")
;;;###autoload
(defvar message-send-news-function 'message-send-news
(defvar message-abbrevs-loaded nil)
-(autoload 'build-mail-aliases "mailalias"
- "Read mail aliases from user's personal aliases file and set `mail-aliases'."
- nil)
-
(autoload 'expand-mail-aliases "mailalias"
"Expand all mail aliases in suitable header fields found between BEG and END.
Suitable header fields are `To', `Cc' and `Bcc' and their `Resent-' variants.
'("^B?CC:\\|^Reply-To:" . font-lock-keyword-face)
'("^\\(Subject:\\)[ \t]*\\(.+\\)?"
(1 font-lock-comment-face) (2 font-lock-type-face nil t))
- (list (concat "^\\(" (regexp-quote message-header-separator) "\\)$")
+ (list (concat "^\\(" (regexp-quote mail-header-separator) "\\)$")
1 'font-lock-comment-face)
(cons (concat "^[ \t]*"
"\\([" cite-prefix "]+[" cite-suffix "]*\\)?"
(narrow-to-region
(goto-char (point-min))
(if (re-search-forward
- (concat "^" (regexp-quote message-header-separator) "\n") nil t)
+ (concat "^" (regexp-quote mail-header-separator) "\n") nil t)
(match-beginning 0)
(point-max)))
(goto-char (point-min)))
(define-key message-mode-map "\C-c\C-f\C-k" 'message-goto-keywords)
(define-key message-mode-map "\C-c\C-f\C-u" 'message-goto-summary)
(define-key message-mode-map "\C-c\C-b" 'message-goto-body)
- (define-key message-mode-map "\C-c\C-s" 'message-goto-signature)
+ (define-key message-mode-map "\C-c\C-i" 'message-goto-signature)
(define-key message-mode-map "\C-c\C-t" 'message-insert-to)
(define-key message-mode-map "\C-c\C-n" 'message-insert-newsgroups)
C-c C-t message-insert-to (add a To header to a news followup)
C-c C-n message-insert-newsgroups (add a Newsgroup header to a news reply)
C-c C-b message-goto-body (move to beginning of message text).
-C-c C-s message-goto-signature (move to the beginning of the signature).
+C-c C-i message-goto-signature (move to the beginning of the signature).
C-c C-w message-insert-signature (insert `message-signature-file' file).
C-c C-y message-yank-original (insert current message, if any).
C-c C-q message-fill-yanked-message (fill what was yanked).
(setq font-lock-defaults '(message-font-lock-keywords t))
(make-local-variable 'paragraph-separate)
(make-local-variable 'paragraph-start)
- (setq paragraph-start (concat (regexp-quote message-header-separator)
+ (setq paragraph-start (concat (regexp-quote mail-header-separator)
"$\\|[ \t]*[-_][-_][-_]+$\\|"
paragraph-start))
- (setq paragraph-separate (concat (regexp-quote message-header-separator)
+ (setq paragraph-separate (concat (regexp-quote mail-header-separator)
"$\\|[ \t]*[-_][-_][-_]+$\\|"
paragraph-separate))
(make-local-variable 'message-reply-headers)
(message-position-on-field "Bcc" "Cc" "To"))
(defun message-goto-fcc ()
- "Move point to the Followup-To header."
+ "Move point to the Fcc header."
(interactive)
(message-position-on-field "Fcc" "To" "Newsgroups"))
"Move point to the beginning of the message body."
(interactive)
(goto-char (point-min))
- (search-forward (concat "\n" message-header-separator "\n") nil t))
+ (search-forward (concat "\n" mail-header-separator "\n") nil t))
(defun message-goto-signature ()
"Move point to the beginning of the message signature,
(interactive "P")
(save-excursion
(goto-char (point-min))
- (search-forward (concat "\n" message-header-separator "\n") nil t)
+ (search-forward (concat "\n" mail-header-separator "\n") nil t)
(fill-individual-paragraphs (point)
(point-max)
justifyp
(delete-windows-on message-reply-buffer t)
(insert-buffer message-reply-buffer)
(funcall message-cite-function)
- ;; This is like exchange-point-and-mark, but doesn't activate the mark.
- ;; It is cleaner to avoid activation, even though the command
- ;; loop would deactivate the mark because we inserted text.
- (goto-char (prog1 (mark t)
- (set-marker (mark-marker) (point) (current-buffer))))
+ (exchange-point-and-mark)
(unless (bolp)
(insert ?\n))
(unless modified
(if (listp message-indent-citation-function)
message-indent-citation-function
(list message-indent-citation-function)))))
- (unless (consp arg)
- (goto-char start)
- (let ((message-indentation-spaces
- (if arg (prefix-numeric-value arg)
- message-indentation-spaces)))
- (while functions
- (funcall (pop functions)))))
+ (goto-char start)
+ (while functions
+ (funcall (pop functions)))
(when message-citation-line-function
(unless (bolp)
(insert "\n"))
(goto-char (point-min))
(progn
(re-search-forward
- (concat "^" (regexp-quote message-header-separator) "$"))
+ (concat "^" (regexp-quote mail-header-separator) "$"))
(match-beginning 0)))
(goto-char (point-min))
(if (re-search-forward (concat "^" (regexp-quote header) ":") nil t)
Prefix arg means don't delete this window."
(interactive "P")
(message-send)
- ;(message-bury arg)
+ (bury-buffer (current-buffer))
+; (message-bury arg)
)
(defun message-dont-send (&optional arg)
;; Change header-delimiter to be what sendmail expects.
(goto-char (point-min))
(re-search-forward
- (concat "^" (regexp-quote message-header-separator) "\n"))
+ (concat "^" (regexp-quote mail-header-separator) "\n"))
(replace-match "\n")
(backward-char 1)
(setq delimline (point-marker))
;; Remove the delimeter.
(goto-char (point-min))
(re-search-forward
- (concat "^" (regexp-quote message-header-separator) "\n"))
+ (concat "^" (regexp-quote mail-header-separator) "\n"))
(replace-match "\n")
(backward-char 1))
(require (car method))
(widen)
(goto-char (point-min))
(re-search-forward
- (concat "^" (regexp-quote message-header-separator) "$"))
+ (concat "^" (regexp-quote mail-header-separator) "$"))
(forward-line 1)
(int-to-string (count-lines (point) (point-max))))))
(save-excursion
(message-set-work-buffer)
(cond
- ((eq message-from-style 'angles)
+ ((or (null message-from-style)
+ (equal fullname ""))
+ (insert login))
+ ((or (eq message-from-style 'angles)
+ (and (not (eq message-from-style 'parens))
+ ;; Use angles if no quoting is needed, or if parens would
+ ;; need quoting too.
+ (or (not (string-match "[^- !#-'*+/-9=?A-Z^-~]" fullname))
+ (let ((tmp (concat fullname nil)))
+ (while (string-match "([^()]*)" tmp)
+ (aset tmp (match-beginning 0) ?-)
+ (aset tmp (1- (match-end 0)) ?-))
+ (string-match "[\\()]" tmp)))))
(insert fullname)
(goto-char (point-min))
;; Look for a character that cannot appear unquoted
(replace-match "\\\\\\&" t))
(insert "\""))
(insert " <" login ">"))
- ((eq message-from-style 'parens)
+ (t ; 'parens or default
(insert login " (")
(let ((fullname-start (point)))
(insert fullname)
nil 1)
(replace-match "\\1(\\3)" t)
(goto-char fullname-start)))
- (insert ")"))
- ((null message-from-style)
- (insert login "\n")))
+ (insert ")")))
(buffer-string))))
(defun message-make-sender ()
(message-mode)))
(defun message-setup (headers &optional replybuffer actions)
- (sendmail-synch-aliases)
- (when (eq message-aliases t)
- (setq message-aliases nil)
- (when (file-exists-p message-personal-alias-file)
- (build-mail-aliases)))
(setq message-send-actions actions)
(setq message-reply-buffer replybuffer)
(goto-char (point-min))
(when message-generate-headers-first
(message-generate-headers message-required-mail-headers))
(insert message-default-mail-headers))
- (insert message-header-separator "\n")
+ (insert mail-header-separator "\n")
(message-insert-signature)
(message-set-auto-save-file-name)
(save-restriction
(if distribution
(concat "Distribution: " distribution "\n")
"")
- message-header-separator "\n"
+ mail-header-separator "\n"
"This is a cancel message from " from ".\n")
(message "Canceling your article...")
(funcall message-send-news-function)
(error "No Message-ID in this article")
(replace-match "Supersedes: " t t))
(goto-char (point-max))
- (insert message-header-separator)
+ (insert mail-header-separator)
(widen)
(forward-line 1)))
(nnfolder-close-group (caar alist) nil t)
(setq alist (cdr alist))))
(setq nnfolder-buffer-alist nil
+ nnfolder-server-alist nil
nnfolder-current-server nil
nnfolder-group-alist nil))
(defun nnfolder-status-message (&optional server)
+ (nnfolder-possibly-change-group nil server)
nnfolder-status-string)
(defun nnfolder-request-article (article &optional newsgroup server buffer)
t)
(defun nnfolder-request-create-group (group &optional server)
+ (nnfolder-possibly-change-group nil server)
(nnmail-activate 'nnfolder)
(when group
(unless (assoc group nnfolder-group-alist)
t)
(defun nnfolder-request-list (&optional server)
+ (nnfolder-possibly-change-group nil server)
(save-excursion
(nnmail-find-file nnfolder-active-file)
(setq nnfolder-group-alist (nnmail-get-active))))
(defun nnfolder-request-newgroups (date &optional server)
+ (nnfolder-possibly-change-group nil server)
(nnfolder-request-list server))
(defun nnfolder-request-list-newsgroups (&optional server)
+ (nnfolder-possibly-change-group nil server)
(save-excursion
(nnmail-find-file nnfolder-newsgroups-file)))
(set-buffer nnfolder-current-buffer)
(and last (buffer-modified-p) (save-buffer))))
(nnmail-save-active nnfolder-group-alist nnfolder-active-file)
+ (unless result
+ (nnheader-report 'nnfolder "Couldn't store article"))
result))
(defun nnfolder-request-replace-article (article group buffer)
() ; Don't delete the articles.
;; Delete the file that holds the group.
(condition-case nil
- (delete-file (concat (file-name-as-directory nnfolder-directory)
- group))
+ (delete-file (directory-file-name
+ (nnmail-group-pathname group nnfolder-directory)))
(error nil)))
;; Remove the group from all structures.
(setq nnfolder-group-alist
(and (file-writable-p buffer-file-name)
(condition-case ()
(progn
- (rename-file buffer-file-name
- (concat (file-name-as-directory nnfolder-directory)
- new-name))
+ (rename-file
+ buffer-file-name
+ (directory-file-name
+ (nnmail-group-pathname new-name nnfolder-directory)))
t)
(error nil))
;; That went ok, so we change the internal structures.
(when (and server
(not (nnfolder-server-opened server)))
(nnfolder-open-server server))
- (unless (file-exists-p nnfolder-directory)
- (make-directory (directory-file-name nnfolder-directory) t))
- (nnfolder-possibly-activate-groups nil)
- (or (assoc group nnfolder-group-alist)
- (not (file-exists-p (concat (file-name-as-directory nnfolder-directory)
- group)))
- (progn
- (setq nnfolder-group-alist
- (cons (list group (cons 1 0)) nnfolder-group-alist))
- (nnmail-save-active nnfolder-group-alist nnfolder-active-file)))
- (let (inf file)
- (if (and (equal group nnfolder-current-group)
- nnfolder-current-buffer
- (buffer-name nnfolder-current-buffer))
- ()
- (setq nnfolder-current-group group)
-
- ;; If we have to change groups, see if we don't already have the mbox
- ;; in memory. If we do, verify the modtime and destroy the mbox if
- ;; needed so we can rescan it.
- (if (setq inf (assoc group nnfolder-buffer-alist))
- (setq nnfolder-current-buffer (nth 1 inf)))
-
- ;; If the buffer is not live, make sure it isn't in the alist. If it
- ;; is live, verify that nobody else has touched the file since last
- ;; time.
- (if (or (not (and nnfolder-current-buffer
- (buffer-name nnfolder-current-buffer)))
- (not (and (bufferp nnfolder-current-buffer)
- (verify-visited-file-modtime
- nnfolder-current-buffer))))
- (progn
- (if (and nnfolder-current-buffer
- (buffer-name nnfolder-current-buffer)
- (bufferp nnfolder-current-buffer))
- (kill-buffer nnfolder-current-buffer))
- (setq nnfolder-buffer-alist (delq inf nnfolder-buffer-alist))
- (setq inf nil)))
-
- (if inf
+ (when group
+ (unless (file-exists-p nnfolder-directory)
+ (make-directory (directory-file-name nnfolder-directory) t))
+ (nnfolder-possibly-activate-groups nil)
+ (or (assoc group nnfolder-group-alist)
+ (not (file-exists-p
+ (directory-file-name
+ (nnmail-group-pathname group nnfolder-directory))))
+ (progn
+ (setq nnfolder-group-alist
+ (cons (list group (cons 1 0)) nnfolder-group-alist))
+ (nnmail-save-active nnfolder-group-alist nnfolder-active-file)))
+ (let (inf file)
+ (if (and (equal group nnfolder-current-group)
+ nnfolder-current-buffer
+ (buffer-name nnfolder-current-buffer))
()
- (save-excursion
- (setq file (concat (file-name-as-directory nnfolder-directory)
- group))
- (if (file-directory-p (file-truename file))
- ()
- (if (not (file-exists-p file))
+ (setq nnfolder-current-group group)
+
+ ;; If we have to change groups, see if we don't already have the mbox
+ ;; in memory. If we do, verify the modtime and destroy the mbox if
+ ;; needed so we can rescan it.
+ (if (setq inf (assoc group nnfolder-buffer-alist))
+ (setq nnfolder-current-buffer (nth 1 inf)))
+
+ ;; If the buffer is not live, make sure it isn't in the alist. If it
+ ;; is live, verify that nobody else has touched the file since last
+ ;; time.
+ (if (or (not (and nnfolder-current-buffer
+ (buffer-name nnfolder-current-buffer)))
+ (not (and (bufferp nnfolder-current-buffer)
+ (verify-visited-file-modtime
+ nnfolder-current-buffer))))
+ (progn
+ (if (and nnfolder-current-buffer
+ (buffer-name nnfolder-current-buffer)
+ (bufferp nnfolder-current-buffer))
+ (kill-buffer nnfolder-current-buffer))
+ (setq nnfolder-buffer-alist (delq inf nnfolder-buffer-alist))
+ (setq inf nil)))
+
+ (if inf
+ ()
+ (save-excursion
+ (setq file (directory-file-name
+ (nnmail-group-pathname group nnfolder-directory)))
+ (if (file-directory-p (file-truename file))
+ ()
+ (unless (file-exists-p file)
+ (unless (file-exists-p (file-name-directory file))
+ (make-directory (file-name-directory file) t))
(write-region 1 1 file t 'nomesg))
- (setq nnfolder-current-buffer
- (set-buffer (nnfolder-read-folder file)))
- (setq nnfolder-buffer-alist (cons (list group (current-buffer))
- nnfolder-buffer-alist)))))))
- (setq nnfolder-current-group group))
+ (setq nnfolder-current-buffer
+ (set-buffer (nnfolder-read-folder file)))
+ (setq nnfolder-buffer-alist (cons (list group (current-buffer))
+ nnfolder-buffer-alist)))))))
+ (setq nnfolder-current-group group)))
(defun nnfolder-save-mail (&optional group)
"Called narrowed to an article."
"Program to post news.
This is most commonly `inews' or `injnews'.")
-(defvar nnspool-inews-switches '("-h")
+(defvar nnspool-inews-switches '("-h -S")
"Switches for nnspool-request-post to pass to `inews' for posting news.
If you are using Cnews, you probably should set this variable to nil.")
* Listing Groups:: Gnus can list various subsets of the groups.
* Sorting Groups:: Re-arrange the group order.
* Group Maintenance:: Maintaining a tidy @file{.newsrc} file.
-* Browse Foreign Server:: You can browse a server. See what if has to offer.
+* Browse Foreign Server:: You can browse a server. See what it has to offer.
* Exiting Gnus:: Stop reading news and get some work done.
* Group Topics:: A folding group mode divided into topics.
* Misc Group Stuff:: Other stuff that you can to do.
@item M-#
@kindex M-# (Group)
-@itemx < u
+@itemx M u
@kindex M u (Group)
@findex gnus-group-unmark-group
Remove the mark from the current group
@lisp
(setq gnus-message-archive-method
- '((nnfolder "archive"
- (nnfolder-inhibit-expiry t)
- (nnfolder-active-file "~/Mail/sent-mail/active")
- (nnfolder-directory "~/News/sent-mail/"))))
+ '(nnfolder "archive"
+ (nnfolder-inhibit-expiry t)
+ (nnfolder-active-file "~/Mail/sent-mail/active")
+ (nnfolder-directory "~/News/sent-mail/")))
@end lisp
@vindex gnus-message-archive-group