+Sat Feb 20 21:34:28 1999 Lars Magne Ingebrigtsen <larsi@menja.ifi.uio.no>
+
+ * gnus.el: Pterodactyl Gnus v0.77 is released.
+
+1999-02-20 17:32:17 Lars Magne Ingebrigtsen <larsi@gnus.org>
+
+ * gnus-art.el (gnus-displaying-mime): New variable.
+ (article-narrow-to-head): New function.
+
+ * mail-source.el (mail-source-fetch-pop): Include pre/postscript.
+ Default to pop instead of pop3.
+
+1999-02-19 16:16:04 Lars Magne Ingebrigtsen <larsi@gnus.org>
+
+ * gnus-art.el (article-hide-pgp): Goto body.
+
+ * gnus-uu.el (gnus-uu-digest-mail-forward): Don't kill buffer.
+
+ * gnus-cite.el: Don't use goto-line.
+
+ * gnus-art.el (gnus-article-treat-html): Removed.
+ (gnus-treat-article): Save restriction.
+
+1999-02-17 Per Abrahamsen <abraham@dina.kvl.dk>
+
+ * message.el (message-send-mail): Don't untabify.
+ (message-mode): Don't use tabs for indentation.
+
+1999-02-19 14:54:13 Lars Magne Ingebrigtsen <larsi@gnus.org>
+
+ * message.el (message-send-mail): Don't untabify.
+
+ * nnml.el (nnml-save-mail): Typo fix.
+
+1999-02-19 Per Abrahamsen <abraham@dina.kvl.dk>
+
+ * message.el (message-cite-function): Add
+ `message-cite-original-without-signature' customization option.
+
+1999-02-18 Per Abrahamsen <abraham@dina.kvl.dk>
+
+ * nnmail.el (nnmail-fix-eudora-headers): Mark as option to
+ `nnmail-prepare-incoming-header-hook'.
+
+1999-02-19 14:41:43 Justin Sheehy <justin@linus.mitre.org>
+
+ * gnus-util.el (gnus-make-sort-function-1): Typo fix.
+
+1999-02-19 14:40:37 Lars Magne Ingebrigtsen <larsi@gnus.org>
+
+ * gnus-group.el (gnus-group-get-new-news): Require nnmail.
+
+1999-02-18 Michael Cook <cook@sightpath.com>
+
+ * Recognize Microsoft Outlook's cite attribution conventions.
+
+1999-02-19 14:33:11 James H. Cloos, Jr. <cloos@jhcloos.com>
+
+ * gnus-sum.el: Bind M.
+
+1999-02-19 14:31:29 Neil Crellin <neilc@wallaby.cc>
+
+ * mail-source.el (mail-source-fetch-pop): Bind pop3-port.
+
+1999-02-15 Didier Verna <verna@inf.enst.fr>
+
+ * gnus-picon.el (gnus-group-display-picons): ensures that
+ `article-goto-body' really goes to the article body.
+
+1999-02-19 12:57:19 Lars Magne Ingebrigtsen <larsi@gnus.org>
+
+ * mm-view.el (mm-inline-text): Bind url-standalone-mode.
+
+ * gnus-msg.el (gnus-summary-mail-forward): Create unique names.
+
+ * mm-view.el (mm-view-message): Enable multibyte.
+
+1999-02-11 18:37:15 Lars Magne Ingebrigtsen <larsi@gnus.org>
+
+ * nnmail.el (nnmail-get-new-mail): Message later.
+
+ * mm-util.el (mm-find-charset-region): Revert to checking
+ multibyte.
+
+1999-02-11 Matt Pharr <mmp@graphics.stanford.edu>
+
+ * gnus-msg.el (gnus-bug): Encode environment info as a MIME
+ attachment.
+
Thu Feb 11 04:58:51 1999 Lars Magne Ingebrigtsen <larsi@menja.ifi.uio.no>
* gnus.el: Pterodactyl Gnus v0.76 is released.
+
;;; gnus-art.el --- article mode commands for Gnus
;; Copyright (C) 1996,97,98,99 Free Software Foundation, Inc.
(inhibit-point-motion-hooks t)
beg)
;; First we narrow to just the headers.
- (widen)
(goto-char (point-min))
;; Hide any "From " lines at the beginning of (mail) articles.
(while (looking-at "From ")
(list gnus-boring-article-headers)
(inhibit-point-motion-hooks t)
elem)
- (nnheader-narrow-to-headers)
+ (article-narrow-to-head)
(while list
(setq elem (pop list))
(goto-char (point-min))
column)
(save-excursion
(save-restriction
- (message-narrow-to-head)
+ (article-narrow-to-head)
(while (not (eobp))
(cond
((< (setq column (- (gnus-point-at-eol) (point)))
(let ((buffer-read-only nil)
(width (window-width (get-buffer-window (current-buffer)))))
(save-restriction
- (widen)
(article-goto-body)
(let ((adaptive-fill-mode nil))
(while (not (eobp))
(case-fold-search t)
from last)
(save-restriction
- (message-narrow-to-head)
+ (article-narrow-to-head)
(goto-char (point-min))
(setq from (message-fetch-field "from"))
(goto-char (point-min))
(interactive "P")
(save-excursion
(save-restriction
- (message-narrow-to-head)
+ (article-narrow-to-head)
(let* ((inhibit-point-motion-hooks t)
(case-fold-search t)
(ct (message-fetch-field "Content-Type" t))
(mail-parse-charset gnus-newsgroup-charset)
buffer-read-only)
(save-restriction
- (message-narrow-to-head)
+ (article-narrow-to-head)
(funcall gnus-decode-header-function (point-min) (point-max)))))
(defun article-de-quoted-unreadable (&optional force)
"Remove any PGP headers and signatures in the current article."
(interactive)
(save-excursion
- (let ((inhibit-point-motion-hooks t)
- buffer-read-only beg end)
- (widen)
- (goto-char (point-min))
- ;; Hide the "header".
- (when (search-forward "\n-----BEGIN PGP SIGNED MESSAGE-----\n" nil t)
- (push 'pgp gnus-article-wash-types)
- (delete-region (1+ (match-beginning 0)) (match-end 0))
- ;; PGP 5 and GNU PG add a `Hash: <>' comment, hide that too
- (when (looking-at "Hash:.*$")
- (delete-region (point) (1+ (gnus-point-at-eol))))
- (setq beg (point))
- ;; Hide the actual signature.
- (and (search-forward "\n-----BEGIN PGP SIGNATURE-----\n" nil t)
- (setq end (1+ (match-beginning 0)))
- (delete-region
- end
- (if (search-forward "\n-----END PGP SIGNATURE-----\n" nil t)
- (match-end 0)
- ;; Perhaps we shouldn't hide to the end of the buffer
- ;; if there is no end to the signature?
- (point-max))))
- ;; Hide "- " PGP quotation markers.
- (when (and beg end)
- (narrow-to-region beg end)
- (goto-char (point-min))
- (while (re-search-forward "^- " nil t)
- (delete-region
- (match-beginning 0) (match-end 0)))
- (widen))
- (gnus-run-hooks 'gnus-article-hide-pgp-hook)))))
+ (save-restriction
+ (let ((inhibit-point-motion-hooks t)
+ buffer-read-only beg end)
+ (article-goto-body)
+ ;; Hide the "header".
+ (when (re-search-forward "^-----BEGIN PGP SIGNED MESSAGE-----\n" nil t)
+ (push 'pgp gnus-article-wash-types)
+ (delete-region (match-beginning 0) (match-end 0))
+ ;; PGP 5 and GNU PG add a `Hash: <>' comment, hide that too
+ (when (looking-at "Hash:.*$")
+ (delete-region (point) (1+ (gnus-point-at-eol))))
+ (setq beg (point))
+ ;; Hide the actual signature.
+ (and (search-forward "\n-----BEGIN PGP SIGNATURE-----\n" nil t)
+ (setq end (1+ (match-beginning 0)))
+ (delete-region
+ end
+ (if (search-forward "\n-----END PGP SIGNATURE-----\n" nil t)
+ (match-end 0)
+ ;; Perhaps we shouldn't hide to the end of the buffer
+ ;; if there is no end to the signature?
+ (point-max))))
+ ;; Hide "- " PGP quotation markers.
+ (when (and beg end)
+ (narrow-to-region beg end)
+ (goto-char (point-min))
+ (while (re-search-forward "^- " nil t)
+ (delete-region
+ (match-beginning 0) (match-end 0)))
+ (widen))
+ (gnus-run-hooks 'gnus-article-hide-pgp-hook))))))
(defun article-hide-pem (&optional arg)
"Toggle hiding of any PEM headers and signatures in the current article.
(unless (gnus-article-check-hidden-text 'pem arg)
(save-excursion
(let (buffer-read-only end)
- (widen)
(goto-char (point-min))
;; Hide the horrendously ugly "header".
(when (and (search-forward
(interactive)
(save-excursion
(save-restriction
- (let ((inhibit-point-motion-hooks t)
- (banner (gnus-group-get-parameter gnus-newsgroup-name 'banner))
- (gnus-signature-limit nil)
- buffer-read-only beg end)
- (when banner
- (article-goto-body)
- (cond
- ((eq banner 'signature)
- (when (gnus-article-narrow-to-signature)
- (widen)
- (forward-line -1)
- (delete-region (point) (point-max))))
- ((stringp banner)
- (while (re-search-forward banner nil t)
- (delete-region (match-beginning 0) (match-end 0))))))))))
+ (let ((inhibit-point-motion-hooks t)
+ (banner (gnus-group-get-parameter gnus-newsgroup-name 'banner))
+ (gnus-signature-limit nil)
+ buffer-read-only beg end)
+ (when banner
+ (article-goto-body)
+ (cond
+ ((eq banner 'signature)
+ (when (gnus-article-narrow-to-signature)
+ (widen)
+ (forward-line -1)
+ (delete-region (point) (point-max))))
+ ((stringp banner)
+ (while (re-search-forward banner nil t)
+ (delete-region (match-beginning 0) (match-end 0))))))))))
(defun article-hide-signature (&optional arg)
"Hide the signature in the current article.
(looking-at "[ \t]*$"))
(gnus-delete-line))))))
+(defun article-narrow-to-head ()
+ "Narrow the buffer to the head of the message.
+Point is left at the beginning of the narrowed-to region."
+ (narrow-to-region
+ (goto-char (point-min))
+ (if (search-forward "\n\n" nil 1)
+ (1- (point))
+ (point-max)))
+ (goto-char (point-min)))
+
(defun article-goto-body ()
"Place point at the start of the body."
(goto-char (point-min))
(defun gnus-article-narrow-to-signature ()
"Narrow to the signature; return t if a signature is found, else nil."
- (widen)
(let ((inhibit-point-motion-hooks t))
(when (gnus-article-search-signature)
(forward-line 1)
(goto-char cur)
nil)))
-(eval-and-compile
- (autoload 'w3-display "w3-parse")
- (autoload 'w3-do-setup "w3" "" t)
- (autoload 'w3-region "w3-display" "" t))
-
-(defun gnus-article-treat-html ()
- "Render HTML."
- (interactive)
- (let ((cbuf (current-buffer)))
- (set-buffer gnus-article-buffer)
- (let (buf buffer-read-only b e)
- (w3-do-setup)
- (goto-char (point-min))
- (narrow-to-region
- (if (search-forward "\n\n" nil t)
- (setq b (point))
- (point-max))
- (setq e (point-max)))
- (with-temp-buffer
- (insert-buffer-substring gnus-article-buffer b e)
- (require 'url)
- (save-window-excursion
- (w3-region (point-min) (point-max))
- (setq buf (buffer-substring-no-properties (point-min) (point-max)))))
- (when buf
- (delete-region (point-min) (point-max))
- (insert buf))
- (widen)
- (goto-char (point-min))
- (set-window-start (get-buffer-window (current-buffer)) (point-min))
- (set-buffer cbuf))))
-
(defun gnus-article-hidden-arg ()
"Return the current prefix arg as a number, or 0 if no prefix."
(list (if current-prefix-arg
means show, 0 means toggle."
(save-excursion
(save-restriction
- (widen)
(let ((hide (gnus-article-hidden-text-p type)))
(cond
((or (null arg)
(when (and date (not (string= date "")))
(save-excursion
(save-restriction
- (nnheader-narrow-to-headers)
+ (article-narrow-to-head)
(let ((buffer-read-only nil))
;; Delete any old Date headers.
(if (re-search-forward date-regexp nil t)
(goto-char (widget-get elems :from))
(gnus-article-press-button))
+(defvar gnus-displaying-mime nil)
+
(defun gnus-display-mime (&optional ihandles)
"Display the MIME parts."
(save-excursion
(set-window-point window point)))
(let* ((handles (or ihandles (mm-dissect-buffer) (mm-uu-dissect)))
buffer-read-only handle name type b e display)
- (unless ihandles
+ (when (and (not ihandles)
+ (not gnus-displaying-mime))
;; Top-level call; we clean up.
(mm-destroy-parts gnus-article-mime-handles)
(setq gnus-article-mime-handles handles
(or (not (stringp (car handles)))
(cdr handles)))
(progn
- (unless ihandles
+ (when (and (not ihandles)
+ (not gnus-displaying-mime))
;; Clean up for mime parts.
(article-goto-body)
(delete-region (point) (point-max)))
- (gnus-mime-display-part handles))
+ (let ((gnus-displaying-mime t))
+ (gnus-mime-display-part handles)))
(save-restriction
(article-goto-body)
(narrow-to-region (point) (point-max))
- (gnus-treat-article nil 1 1)))
+ (gnus-treat-article nil 1 1)
+ (widen)))
;; Highlight the headers.
(save-excursion
(save-restriction
(save-excursion
(set-buffer gnus-article-buffer)
(goto-char (point-min))
- (widen)
;; Remove any old next/prev buttons.
(when (gnus-visual-p 'page-marker)
(let ((buffer-read-only nil))
(case-fold-search t)
(inhibit-point-motion-hooks t)
entry regexp header-face field-face from hpoints fpoints)
- (message-narrow-to-head)
+ (article-narrow-to-head)
(while (setq entry (pop alist))
(goto-char (point-min))
(setq regexp (concat "^\\("
(interactive)
(save-excursion
(set-buffer gnus-article-buffer)
- (let ((buffer-read-only nil)
- (inhibit-point-motion-hooks t)
- (case-fold-search t)
- (alist gnus-header-button-alist)
- entry beg end)
- (nnheader-narrow-to-headers)
- (while alist
- ;; Each alist entry.
- (setq entry (car alist)
- alist (cdr alist))
- (goto-char (point-min))
- (while (re-search-forward (car entry) nil t)
- ;; Each header matching the entry.
- (setq beg (match-beginning 0))
- (setq end (or (and (re-search-forward "^[^ \t]" nil t)
- (match-beginning 0))
- (point-max)))
- (goto-char beg)
- (while (re-search-forward (nth 1 entry) end t)
- ;; Each match within a header.
- (let* ((entry (cdr entry))
- (start (match-beginning (nth 1 entry)))
- (end (match-end (nth 1 entry)))
- (form (nth 2 entry)))
- (goto-char (match-end 0))
- (when (eval form)
- (gnus-article-add-button
- start end (nth 3 entry)
- (buffer-substring (match-beginning (nth 4 entry))
- (match-end (nth 4 entry)))))))
- (goto-char end))))
- (widen)))
+ (save-restriction
+ (let ((buffer-read-only nil)
+ (inhibit-point-motion-hooks t)
+ (case-fold-search t)
+ (alist gnus-header-button-alist)
+ entry beg end)
+ (article-narrow-to-head)
+ (while alist
+ ;; Each alist entry.
+ (setq entry (car alist)
+ alist (cdr alist))
+ (goto-char (point-min))
+ (while (re-search-forward (car entry) nil t)
+ ;; Each header matching the entry.
+ (setq beg (match-beginning 0))
+ (setq end (or (and (re-search-forward "^[^ \t]" nil t)
+ (match-beginning 0))
+ (point-max)))
+ (goto-char beg)
+ (while (re-search-forward (nth 1 entry) end t)
+ ;; Each match within a header.
+ (let* ((entry (cdr entry))
+ (start (match-beginning (nth 1 entry)))
+ (end (match-end (nth 1 entry)))
+ (form (nth 2 entry)))
+ (goto-char (match-end 0))
+ (when (eval form)
+ (gnus-article-add-button
+ start end (nth 3 entry)
+ (buffer-substring (match-beginning (nth 4 entry))
+ (match-end (nth 4 entry)))))))
+ (goto-char end)))))))
;;; External functions:
(when (and (or (consp val)
treated-type)
(gnus-treat-predicate val))
- (funcall (cadr elem)))))))
+ (save-restriction
+ (funcall (cadr elem))))))))
;; Dynamic variables.
(defvar part-number)
:type 'integer)
(defcustom gnus-cite-attribution-prefix
- "In article\\|in <\\|On \\(Mon\\|Tue\\|Wed\\|Thu\\|Fri\\|Sat\\|Sun\\),"
+ "In article\\|in <\\|On \\(Mon\\|Tue\\|Wed\\|Thu\\|Fri\\|Sat\\|Sun\\),\\| > -----Original Message-----"
"*Regexp matching the beginning of an attribution line."
:group 'gnus-cite
:type 'regexp)
(defcustom gnus-cite-attribution-suffix
- "\\(\\(wrote\\|writes\\|said\\|says\\|>\\)\\(:\\|\\.\\.\\.\\)\\)[ \t]*$"
+ "\\(\\(wrote\\|writes\\|said\\|says\\|>\\)\\(:\\|\\.\\.\\.\\)\\|-----Original Message-----\\)[ \t]*$"
"*Regexp matching the end of an attribution line.
The text matching the first grouping will be used as a button."
:group 'gnus-cite
skip (gnus-cite-find-prefix number)
face (cdr (assoc prefix face-alist)))
;; Add attribution button.
- (goto-line number)
+ (goto-char (point-min))
+ (forward-line (1- number))
(when (re-search-forward gnus-cite-attribution-suffix
(save-excursion (end-of-line 1) (point))
t)
(while numbers
(setq number (pop numbers))
(goto-char (point-min))
- (forward-line number)
+ (forward-line (1- number))
(push (cons (point-marker) "") marks)
(while (and numbers
(= (1- number) (car numbers)))
(forward-line (1- number))
(push (cons (point-marker) prefix) marks)))
;; Skip to the beginning of the body.
- (goto-char (point-min))
- (search-forward "\n\n" nil t)
+ (article-goto-body)
(push (cons (point-marker) "") marks)
;; Find the end of the body.
(goto-char (point-max))
(fill-column (if width (prefix-numeric-value width) fill-column)))
(save-restriction
(while (cdr marks)
- (widen)
(narrow-to-region (caar marks) (caadr marks))
(let ((adaptive-fill-regexp
(concat "^" (regexp-quote (cdar marks)) " *"))
(save-excursion
(set-buffer gnus-article-buffer)
(gnus-cite-parse-maybe force)
- (goto-char (point-min))
- (search-forward "\n\n" nil t)
+ (article-goto-body)
(let ((start (point))
(atts gnus-cite-attribution-alist)
(buffer-read-only nil)
(while total
(setq hidden (car total)
total (cdr total))
- (goto-line hidden)
+ (goto-char (point-min))
+ (forward-line (1- hidden))
(unless (assq hidden gnus-cite-attribution-alist)
(gnus-add-text-properties
(point) (progn (forward-line 1) (point))
;;; Internal functions:
+
(defun gnus-cite-parse-maybe (&optional force)
;; Parse if the buffer has changes since last time.
(if (and (not force)
(defun gnus-cite-parse-wrapper ()
;; Wrap chopped gnus-cite-parse
- (goto-char (point-min))
- (unless (search-forward "\n\n" nil t)
- (goto-char (point-max)))
+ (article-goto-body)
(save-excursion
(gnus-cite-parse-attributions))
;; Try to avoid check citation if there is no reason to believe
(when face
(let ((inhibit-point-motion-hooks t)
from to overlay)
- (goto-line number)
- (unless (eobp) ; Sometimes things become confused.
+ (goto-char (point-min))
+ (when (zerop (forward-line (1- number)))
(forward-char (length prefix))
(skip-chars-forward " \t")
(setq from (point))
(while numbers
(setq number (car numbers)
numbers (cdr numbers))
- (goto-line number)
+ (goto-char (point-min))
+ (forward-line (1- number))
(cond ((get-text-property (point) 'invisible)
(remove-text-properties (point) (progn (forward-line 1) (point))
gnus-hidden-properties))
re-scanning. If ARG is non-nil and not a number, this will force
\"hard\" re-reading of the active files from all servers."
(interactive "P")
+ (require 'nnmail)
(let ((gnus-inhibit-demon t)
;; Binding this variable will inhibit multiple fetchings
;; of the same mail source.
(save-excursion
(set-buffer gnus-original-article-buffer)
(setq text (buffer-string)))
- (set-buffer (gnus-get-buffer-create " *Gnus forward*"))
+ (set-buffer (gnus-get-buffer-create
+ (generate-new-buffer-name " *Gnus forward*")))
(erase-buffer)
(insert text)
(run-hooks 'gnus-article-decode-hook)
(stringp nntp-server-type))
(insert nntp-server-type))
(insert "\n\n\n\n\n")
- (gnus-debug)
+ (save-excursion
+ (set-buffer (gnus-get-buffer-create " *gnus environment info*"))
+ (gnus-debug))
+ (insert "<#part type=application/emacs-lisp buffer=\" *gnus environment info*\" disposition=inline><#/part>")
(goto-char (point-min))
(search-forward "Subject: " nil t)
(message "")))
(gnus-put-text-property
(match-beginning 0) (match-end 0)
'invisible t)
- (article-goto-body)
+ (let ((article-goto-body-goes-to-point-min-p nil))
+ (article-goto-body))
(unless (bobp)
(backward-char 1)))))
(if (null gnus-picons-piconsearch-url)
"Setup news information.
If RAWFILE is non-nil, the .newsrc file will also be read.
If LEVEL is non-nil, the news will be set up at level LEVEL."
+ (require 'nnmail)
(let ((init (not (and gnus-newsrc-alist gnus-active-hashtb (not rawfile))))
;; Binding this variable will inhibit multiple fetchings
;; of the same mail source.
"a" gnus-summary-limit-to-author
"u" gnus-summary-limit-to-unread
"m" gnus-summary-limit-to-marks
+ "M" gnus-summary-limit-exclude-marks
"v" gnus-summary-limit-to-score
"*" gnus-summary-limit-include-cached
"D" gnus-summary-limit-include-dormant
["Hide childless dormant"
gnus-summary-limit-exclude-childless-dormant t]
;;["Hide thread" gnus-summary-limit-exclude-thread t]
+ ["Hide marked" gnus-summary-limit-exclude-marks t]
["Show expunged" gnus-summary-show-all-expunged t])
("Process Mark"
["Set mark" gnus-summary-mark-as-processable t]
((gnus-functionp function)
)
(t
- (error "Invalid sort spec: %s" function))))if
+ (error "Invalid sort spec: %s" function))))
(if (cdr funs)
`(or (,function ,first ,last)
(and (not (,function ,last ,first))
(delete-region (point) (gnus-point-at-eol))
(insert from))
(message-forward post))
- (delete-file file)
- (kill-buffer buf)
(setq gnus-uu-digest-from-subject nil)))
(defun gnus-uu-digest-post-forward (&optional n)
:link '(custom-manual "(gnus)Exiting Gnus")
:group 'gnus)
-(defconst gnus-version-number "0.76"
+(defconst gnus-version-number "0.77"
"Version number for this version of Gnus.")
(defconst gnus-version (format "Pterodactyl Gnus v%s" gnus-version-number)
(:suffix ".spool")
(:predicate identity))
(pop
+ (:prescript)
+ (:postscript)
(:server (getenv "MAILHOST"))
- (:port "pop3")
+ (:port "pop")
(:user (or (user-login-name) (getenv "LOGNAME") (getenv "USER")))
(:program)
(:function)
(defun mail-source-fetch-pop (source callback)
"Fetcher for single-file sources."
(mail-source-bind (pop source)
+ (when prescript
+ (if (fboundp prescript)
+ (funcall prescript)
+ (call-process shell-file-name nil nil nil
+ shell-command-switch
+ (format-spec
+ prescript
+ (format-spec-make ?p password ?t mail-source-crash-box
+ ?s server ?P port ?u user)))))
(let ((from (format "%s:%s:%s" server user port))
- (mail-source-string (format "pop:%s@%s" user server)))
+ (mail-source-string (format "pop:%s@%s" user server))
+ result)
(when (and (not (eq authentication 'apop))
(not program))
(setq password
(push (cons from password) mail-source-password-cache)))
(when server
(setenv "MAILHOST" server))
- (if (cond
- (program
- (mail-source-fetch-with-program
- (format-spec
- program
- (format-spec-make ?p password ?t mail-source-crash-box
- ?s server ?P port ?u user))))
- (function
- (funcall function mail-source-crash-box))
- ;; The default is to use pop3.el.
- (t
- (let ((pop3-password password)
- (pop3-maildrop user)
- (pop3-mailhost server)
- (pop3-authentication-scheme
- (if (eq authentication 'apop) 'apop 'pass)))
- (save-excursion (pop3-movemail mail-source-crash-box)))))
- (mail-source-callback callback server)
+ (setq result
+ (cond
+ (program
+ (mail-source-fetch-with-program
+ (format-spec
+ program
+ (format-spec-make ?p password ?t mail-source-crash-box
+ ?s server ?P port ?u user))))
+ (function
+ (funcall function mail-source-crash-box))
+ ;; The default is to use pop3.el.
+ (t
+ (let ((pop3-password password)
+ (pop3-maildrop user)
+ (pop3-mailhost server)
+ (pop3-port port)
+ (pop3-authentication-scheme
+ (if (eq authentication 'apop) 'apop 'pass)))
+ (save-excursion (pop3-movemail mail-source-crash-box))))))
+ (if result
+ (progn
+ (mail-source-callback callback server)
+ (when prescript
+ (if (fboundp prescript)
+ (funcall prescript)
+ (call-process shell-file-name nil nil nil
+ shell-command-switch
+ (format-spec
+ postscript
+ (format-spec-make
+ ?p password ?t mail-source-crash-box
+ ?s server ?P port ?u user))))))
;; We nix out the password in case the error
;; was because of a wrong password being given.
(setq mail-source-password-cache
`message-cite-original-without-signature'.
Note that `message-cite-original' uses `mail-citation-hook' if that is non-nil."
:type '(radio (function-item message-cite-original)
+ (function-item message-cite-original-without-signature)
(function-item sc-cite-original)
(function :tag "Other"))
:group 'message-insertion)
(defun message-sort-headers-1 ()
"Sort the buffer as headers using `message-rank' text props."
(goto-char (point-min))
+ (require 'sort)
(sort-subr
nil 'message-next-header
(lambda ()
(concat "[ \t]*[-a-z0-9A-Z]*>+[ \t]*\\|"
adaptive-fill-first-line-regexp))
(mm-enable-multibyte)
+ (make-local-variable 'indent-tabs-mode) ;Turn off tabs for indentation.
+ (setq indent-tabs-mode nil)
(run-hooks 'text-mode-hook 'message-mode-hook))
\f
(let ((message-deletable-headers
(if news nil message-deletable-headers)))
(message-generate-headers message-required-mail-headers))
- (untabify (point-min) (point-max))
(let ((mail-parse-charset message-posting-charset))
(mail-encode-encoded-word-buffer))
;; Let the user do all of the above.
(message-narrow-to-headers)
;; Insert some headers.
(message-generate-headers message-required-news-headers)
- (untabify (point-min) (point-max))
(let ((mail-parse-charset message-posting-charset))
(mail-encode-encoded-word-buffer))
;; Let the user do all of the above.
(iso-8859-3 . quoted-printable)
(iso-8859-4 . quoted-printable)
(iso-8859-5 . base64)
- (koi8-r . base64)
+ (koi8-r . 8bit)
(iso-8859-7 . quoted-printable)
(iso-8859-8 . quoted-printable)
(iso-8859-9 . quoted-printable)
((eq charset mail-parse-charset)
bits)
(t
- (let ((encoding (or (cdr (assq charset mm-body-charset-encoding-alist ))
+ (let ((encoding (or (cdr (assq charset mm-body-charset-encoding-alist))
'quoted-printable)))
(mm-encode-content-transfer-encoding encoding "text/plain")
encoding)))))
("text/html" mm-inline-text (locate-library "w3"))
("text/x-vcard" mm-inline-text (locate-library "vcard"))
("message/delivery-status" mm-inline-text t)
+ ("message/rfc822" mm-inline-message t)
("text/.*" mm-inline-text t)
("audio/wav" mm-inline-audio
(and (or (featurep 'nas-sound) (featurep 'native-sound))
(defvar mm-user-display-methods
'(("image/.*" . inline)
("text/.*" . inline)
- ("message/delivery-status" . inline)))
+ ("message/delivery-status" . inline)
+ ("message/rfc822" . inline)))
(defvar mm-user-automatic-display
'("text/plain" "text/enriched" "text/richtext" "text/html"
- "text/x-vcard" "image/.*" "message/delivery-status" "multipart/.*"))
+ "text/x-vcard" "image/.*" "message/delivery-status" "multipart/.*"
+ "message/rfc822"))
(defvar mm-attachment-override-types
'("text/plain" "text/x-vcard")
(defun mm-find-charset-region (b e)
"Return a list of charsets in the region."
(cond
- ((fboundp 'find-charset-region)
+ ((and (boundp 'enable-multibyte-characters)
+ enable-multibyte-characters
+ (fboundp 'find-charset-region))
(find-charset-region b e))
((not (boundp 'current-language-environment))
(save-excursion
(save-restriction
(narrow-to-region b (point))
(save-window-excursion
- (let ((w3-strict-width width))
+ (let ((w3-strict-width width)
+ (url-standalone-mode t))
(w3-region (point-min) (point-max)))))
(mm-handle-set-undisplayer
handle
(defun mm-w3-prepare-buffer ()
(require 'w3)
- (w3-prepare-buffer))
+ (let ((url-standalone-mode t))
+ (w3-prepare-buffer)))
(defun mm-view-message ()
+ (mm-enable-multibyte)
(gnus-article-prepare-display)
(run-hooks 'gnus-article-decode-hook)
(fundamental-mode)
(goto-char (point-min)))
+(defun mm-inline-message (handle)
+ (let ((b (point)))
+ (save-excursion
+ (mm-insert-part handle)
+ (save-restriction
+ (narrow-to-region b (point))
+ (run-hooks 'gnus-article-decode-hook)
+ (gnus-article-prepare-display)
+ (mm-handle-set-undisplayer
+ handle
+ `(lambda ()
+ (let (buffer-read-only)
+ (mapc (lambda (prop)
+ (remove-specifier
+ (face-property 'default prop) (current-buffer)))
+ '(background background-pixmap foreground))
+ (delete-region ,(point-min-marker) ,(point-max-marker)))))))))
+
(provide 'mm-view)
;; mm-view.el ends here
(goto-char (point-min))
;; Find the end of the head.
(narrow-to-region
- (point-min)
+ (point-min)
(if (search-forward "\n\n" nil t)
(1- (point))
;; This will never happen, but just to be on the safe side --
(beginning-of-line)
(insert "X-Gnus-Broken-Eudora-"))))
+(custom-add-option 'nnmail-prepare-incoming-header-hook
+ 'nnmail-fix-eudora-headers)
+
;;; Utility functions
(defun nnmail-split-fancy ()
((eq source 'procmail)
(message "Invalid value for nnmail-spool-file: `procmail'")
nil))
- (nnheader-message 4 "%s: Reading incoming mail from %s..."
- method (car source))
;; Hack to only fetch the contents of a single group's spool file.
(when (and (eq (car source) 'directory)
group)
(if (member source nnmail-fetched-sources)
(setq source nil)
(push source nnmail-fetched-sources)))
- (when (and source
- (mail-source-fetch
- source
- `(lambda (file orig-file)
- (nnmail-split-incoming
- file ',(intern (format "%s-save-mail" method))
- ',spool-func (nnmail-get-split-group orig-file source)
- ',(intern (format "%s-active-number" method))))))
- (incf i)))
+ (when source
+ (nnheader-message 4 "%s: Reading incoming mail from %s..."
+ method (car source))
+ (when (mail-source-fetch
+ source
+ `(lambda (file orig-file)
+ (nnmail-split-incoming
+ file ',(intern (format "%s-save-mail" method))
+ ',spool-func (nnmail-get-split-group orig-file source)
+ ',(intern (format "%s-active-number" method)))))
+ (incf i))))
;; If we did indeed read any incoming spools, we save all info.
(unless (zerop i)
(nnmail-save-active
(let ((file (concat (nnmail-group-pathname
(caar ga) nnml-directory)
(int-to-string (cdar ga)))))
-z (if first
+ (if first
;; It was already saved, so we just make a hard link.
(funcall nnmail-crosspost-link-function first file t)
;; Save the article.
+1999-02-20 17:33:55 Lars Magne Ingebrigtsen <larsi@gnus.org>
+
+ * gnus.texi (Mail Source Specifiers): Addition.
+
+1999-02-11 19:19:02 Carsten Leonhardt <leo@arioch.oche.de>
+
+ * gnus.texi (Mail Source Specifiers): Document maildir.
+
1999-02-09 16:21:35 Lars Magne Ingebrigtsen <larsi@gnus.org>
* gnus.texi (Charsets): New.
\input texinfo @c -*-texinfo-*-
@setfilename gnus
-@settitle Pterodactyl Gnus 0.76 Manual
+@settitle Pterodactyl Gnus 0.77 Manual
@synindex fn cp
@synindex vr cp
@synindex pg cp
@tex
@titlepage
-@title Pterodactyl Gnus 0.76 Manual
+@title Pterodactyl Gnus 0.77 Manual
@author by Lars Magne Ingebrigtsen
@page
spool or your mbox file. All at the same time, if you want to push your
luck.
-This manual corresponds to Pterodactyl Gnus 0.76.
+This manual corresponds to Pterodactyl Gnus 0.77.
@end ifinfo
Exclude all dormant articles from the limit
(@code{gnus-summary-limit-exclude-dormant}).
+@item / M
+@kindex / M (Summary)
+@findex gnus-summary-limit-exclude-marks
+Exclude all marked articles (@code{gnus-summary-limit-exclude-marks}).
+
@item / T
@kindex / T (Summary)
@findex gnus-summary-limit-include-thread
The values used for these specs are taken from the values you give the
corresponding keywords.
+@item :prescript
+A script to be run before fetching the mail. The syntax is the same as
+the @code{:program} keyword. This can also be a function to be run.
+
+@item :postscript
+A script to be run after fetching the mail. The syntax is the same as
+the @code{:program} keyword. This can also be a function to be run.
+
@item :function
The function to use to fetch mail from the POP server. The function is
called with one parameter---the name of the file where the mail should
:args (format "po:%s %s %s" user mail-source-crash-box password))
@end lisp
+@item maildir
+Get mail from a maildir. This is a type of mailbox currently only
+supported by qmail, where each file in a special directory contains
+exactly one mail.
+
+Keywords:
+
+@table @code
+@item :path
+The path of the directory where the mails are stored. The default is
+@samp{~/Maildir/new}.
+
+If you sometimes look at your mail through a pop3 daemon before fetching
+them with Gnus, you may also have to fetch your mails from the
+@code{cur} directory inside the maildir, like in the following example.
+
+@end table
+
+An example maildir mail source:
+
+@lisp
+(maildir :path "/home/user-name/Maildir/cur")
+@end lisp
+
@end table
\input texinfo @c -*-texinfo-*-
@setfilename message
-@settitle Pterodactyl Message 0.76 Manual
+@settitle Pterodactyl Message 0.77 Manual
@synindex fn cp
@synindex vr cp
@synindex pg cp
@tex
@titlepage
-@title Pterodactyl Message 0.76 Manual
+@title Pterodactyl Message 0.77 Manual
@author by Lars Magne Ingebrigtsen
@page
* Key Index:: List of Message mode keys.
@end menu
-This manual corresponds to Pterodactyl Message 0.76. Message is
+This manual corresponds to Pterodactyl Message 0.77. Message is
distributed with the Gnus distribution bearing the same version number
as this manual.