+1998-03-01 Miyashita Hisashi <himi@bird.scphys.kyoto-u.ac.jp>
+
+ * lisp/pop3.el (pop3-password):
+ If this variable is t, memorize a input password.
+ (pop3-pass):
+ (pop3-apop):
+ Not use pop3-password which is bound by outer extent.
+ (pop3-movemail):
+ Set pop3-password to memorize input password.
+ Call pop3-pass and pop3-apop with `password' argument.
+ Send LAST command to get unread messages,
+ when pop3-use-last-command is non-nil.
+ (pop3-use-last-command):
+ New variable.
+
+1998-02-28 MORIOKA Tomohiko <morioka@jaist.ac.jp>
+
+ * lisp/gnus.el (gnus-version-number): Update to 6.0.8.
+
+ * lisp/gnus.el: Sync up with qgnus-0.34.
+
+1998-02-28 MORIOKA Tomohiko <morioka@jaist.ac.jp>
+
+ * lisp/message.el: Sync up with qgnus-0.33.
+
+ * lisp/gnus-ems.el (gnus-bdf-image-file): New variable; moved from
+ gnus.el.
+ (gnus-mule-group-startup-message): New function; moved and renamed
+ from `gnus-group-startup-message' of gnus.el.
+
+ * lisp/gnus.el, lisp/gnus-sum.el, lisp/gnus-art.el,
+ lisp/gnus-agent.el: Sync up with qgnus-0.33.
+
+1998-02-28 Tatsuya Ichikawa <t-ichi@niagara.shiojiri.ne.jp>
+
+ * lisp/gnus.el (gnus-bdf-image-file): New variable.
+ (gnus-mule-group-startup-message): Display bitmap image using
+ bitmap.el running with Emacs 20.
+
+ * lisp/gnus-agent.el (gnus-agent-fetch-headers): Fix problem when
+ Xref field is not exist.
+
1998-02-26 MORIOKA Tomohiko <morioka@jaist.ac.jp>
* README.semi (How to join development): Modify for Semi-gnus
+Sat Feb 28 08:27:20 1998 Lars Magne Ingebrigtsen <larsi@menja.ifi.uio.no>
+
+ * gnus.el: Quassia Gnus v0.34 is released.
+
+Sat Feb 28 08:17:37 1998 Lars Magne Ingebrigtsen <larsi@menja.ifi.uio.no>
+
+ * gnus.el: Quassia Gnus v0.33 is released.
+
+Sat Feb 28 08:10:27 1998 Lars Magne Ingebrigtsen <larsi@ifi.uio.no>
+
+ * gnus-picon.el (gnus-picons-display-x-face): `buf' -- unbound
+ var.
+
+Sat Feb 28 08:03:23 1998 François Pinard <pinard@iro.umontreal.ca>
+
+ * gnus: configure'd.
+
+Sat Feb 28 07:43:00 1998 Nelson Jose dos Santos Ferreira <Nelson.Ferreira@inesc.pt>
+
+ * nnsoup.el (nnsoup-store-reply): Fix double sep error.
+
+Sat Feb 28 07:01:17 1998 Lasse Rasinen <lrasinen@iki.fi>
+
+ * gnus-start.el (gnus-ask-server-for-new-groups): Message more.
+
+Fri Feb 27 13:26:34 1998 Lars Magne Ingebrigtsen <larsi@ifi.uio.no>
+
+ * message.el (message-resend): Allow arbitrary Also's.
+
+1998-02-27 Dave Love <d.love@dl.ac.uk>
+
+ * gnus-sum.el (gnus-simplify-subject-functions): Fix
+ customization, doc.
+
+1998-02-25 Dave Love <d.love@dl.ac.uk>
+
+ * gnus-art.el (gnus-article-x-face-command): Replace leading `{'.
+
+Mon Feb 23 18:26:48 1998 Lars Magne Ingebrigtsen <larsi@ifi.uio.no>
+
+ * gnus-agent.el (gnus-plugged): New command and keystroke.
+
+ * gnus-ems.el (gnus-ems-redefine): Define
+ 'gnus-summary-set-display-table as a function that takes no
+ params.
+
+ * gnus.el (gnus-interactive): Don't use gnus-sum macros.
+ (gnus-valid-select-methods): Include nnlistserv.
+
+ * gnus.el: Autoloaded things to make byte-comp silent.
+
Mon Feb 23 18:06:47 1998 Lars Magne Ingebrigtsen <larsi@menja.ifi.uio.no>
* gnus.el: Quassia Gnus v0.32 is released.
-;;; gnus-agent.el --- unplugged support for Gnus
+;;; gnus-agent.el --- unplugged support for Semi-gnus
;; Copyright (C) 1997,98 Free Software Foundation, Inc.
;; Author: Lars Magne Ingebrigtsen <larsi@ifi.uio.no>
(gnus))
;;;###autoload
+(defun gnus-plugged ()
+ "Start Gnus plugged."
+ (interactive)
+ (setq gnus-plugged t)
+ (gnus))
+
+;;;###autoload
(defun gnus-agentize ()
"Allow Gnus to be an offline newsreader.
The normal usage of this command is to put the following as the
(set-buffer nntp-server-buffer)
(unless (eq 'nov (gnus-retrieve-headers articles group))
(nnvirtual-convert-headers))
+ ;;
+ ;; To gnus-agent-expire work fine with no Xref field in .overview
+ ;; Tatsuya Ichikawa <ichikawa@hv.epson.co.jp>
+ (goto-char (point-min))
+ (while (not (eobp))
+ (goto-char (point-at-eol))
+ (insert "\t")
+ (forward-line 1))
+ ;; Tatsuya Ichikawa <ichikawa@hv.epson.co.jp>
+ ;; To gnus-agent-expire work fine with no Xref field in .overview
+ ;;
;; Save these headers for later processing.
(copy-to-buffer gnus-agent-overview-buffer (point-min) (point-max))
(let (file)
(gnus-delete-line)
(setq headers nil)))
(when headers
- (unless (memq (setq article (mail-header-number headers)) unreads)
+ (if (memq (setq article (mail-header-number headers)) unreads)
+ (forward-line 1)
(if (not (< (inline
(gnus-time-to-day
(inline (nnmail-date-to-time
:group 'gnus-article-hiding)
(defcustom gnus-article-x-face-command
- " echo '/* Width=48, Height=48 */'; uncompface; } | icontopbm | xv -quit -"
+ "{ echo '/* Width=48, Height=48 */'; uncompface; } | icontopbm | xv -quit -"
"*String or function to be executed to display an X-Face header.
If it is a string, the command will be executed in a sub-shell
asynchronously. The compressed face will be piped to this command."
(require 'gnus-int)
(require 'nnheader)
(require 'nntp)
+(require 'nnmail)
(eval-and-compile
(if (string-match "XEmacs" (emacs-version))
(require 'itimer)
-;;; gnus-ems.el --- functions for making Gnus work under different Emacsen
+;;; gnus-ems.el --- functions for making Semi-gnus work under different Emacsen
;; Copyright (C) 1995,96,97,98 Free Software Foundation, Inc.
;; Author: Lars Magne Ingebrigtsen <larsi@ifi.uio.no>
+;; Tatsuya Ichikawa <t-ichi@niagara.shiojiri.ne.jp>
;; Keywords: news
;; This file is part of GNU Emacs.
(truncate-string valstr (, max-width))
valstr))))
+(defvar gnus-bdf-image-file nil)
+(defun gnus-mule-group-startup-message (&optional x y)
+ "Insert startup message in current buffer."
+ ;; Insert the message.
+ (erase-buffer)
+ (insert
+ (if (featurep 'bitmap)
+ (format " %s
+
+"
+ "" (if (and (stringp gnus-bdf-image-file)
+ (file-exists-p gnus-bdf-image-file))
+ (insert-file gnus-image-file)))
+ (format " %s
+ _ ___ _ _
+ _ ___ __ ___ __ _ ___
+ __ _ ___ __ ___
+ _ ___ _
+ _ _ __ _
+ ___ __ _
+ __ _
+ _ _ _
+ _ _ _
+ _ _ _
+ __ ___
+ _ _ _ _
+ _ _
+ _ _
+ _ _
+ _
+ __
+
+"
+ "")))
+ ;; And then hack it.
+ (gnus-indent-rigidly (point-min) (point-max)
+ (/ (max (- (window-width) (or x 46)) 0) 2))
+ (goto-char (point-min))
+ (forward-line 1)
+ (let* ((pheight (count-lines (point-min) (point-max)))
+ (wheight (window-height))
+ (rest (- wheight pheight)))
+ (insert (make-string (max 0 (* 2 (/ rest 3))) ?\n)))
+ ;; Fontify some.
+ (put-text-property (point-min) (point-max) 'face 'gnus-splash-face)
+ (goto-char (point-min))
+ (setq mode-line-buffer-identification (concat " " gnus-version))
+ (setq gnus-simple-splash t)
+ (set-buffer-modified-p t))
+
(defun gnus-encode-coding-string (string system)
string)
"Display table used in summary mode buffers.")
(fset 'gnus-cite-add-face 'gnus-mule-cite-add-face)
(fset 'gnus-max-width-function 'gnus-mule-max-width-function)
- (fset 'gnus-summary-set-display-table 'ignore)
+ (fset 'gnus-summary-set-display-table (lambda ()))
(fset 'gnus-encode-coding-string 'encode-coding-string)
(fset 'gnus-decode-coding-string 'decode-coding-string)
+<<<<<<< gnus-ems.el
+=======
+
+ (and window-system
+ (module-installed-p 'bitmap)
+ (fset 'gnus-group-startup-message 'gnus-mule-group-startup-message))
+
+>>>>>>> 1.3
(when (boundp 'gnus-check-before-posting)
(setq gnus-check-before-posting
(delq 'long-lines
:group 'picons)
(defcustom gnus-picons-x-face-file-name
- '(format "/tmp/picon-xface.%s.xbm" (user-login-name))
+ (format "/tmp/picon-xface.%s.xbm" (user-login-name))
"*The name of the file in which to store the converted X-face header."
:type 'string
:group 'picons)
"Picons file names cache.
List of pairs (KEY . NAME) where KEY is (USER HOST DBS) and NAME is an URL.")
-(defvar gnus-group-annotations nil
- "List of annotations added/removed when selecting/exiting a group")
-(defvar gnus-article-annotations nil
- "List of annotations added/removed when selecting an article")
-(defvar gnus-x-face-annotations nil
- "List of annotations added/removed when selecting an article with an X-Face.")
-
(defvar gnus-picons-jobs-alist nil
"List of jobs that still need be done.
This is a list of (SYM-ANN TAG ARGS...) where SYM-ANN three annotations list,
;;; Functions:
-(defun gnus-picons-remove (symbol)
- "Remove all annotations in variable named SYMBOL.
-This function is careful to set it to nil before removing anything so that
-asynchronous process don't get crazy."
- (setq gnus-picons-jobs-alist (remassq symbol gnus-picons-jobs-alist))
- ;; notify running job that it may have been preempted
- (if (and (listp gnus-picons-job-already-running)
- (eq (car gnus-picons-job-already-running) symbol))
- (setq gnus-picons-job-already-running t))
- ;; clear all annotations
- (mapc (function (lambda (item)
- (if (annotationp item)
- (delete-annotation item))))
- (prog1 (symbol-value symbol)
- (set symbol nil))))
-
(defun gnus-picons-remove-all ()
"Removes all picons from the Gnus display(s)."
(interactive)
- (gnus-picons-remove 'gnus-article-annotations)
- (gnus-picons-remove 'gnus-group-annotations)
- (gnus-picons-remove 'gnus-x-face-annotations))
+ (map-extents (function (lambda (ext unused) (delete-annotation ext) nil))
+ nil nil nil nil nil 'gnus-picon)
+ (setq gnus-picons-jobs-alist '())
+ ;; notify running job that it may have been preempted
+ (if (and (listp gnus-picons-job-already-running)
+ gnus-picons-job-already-running)
+ (setq gnus-picons-job-already-running t)))
(defun gnus-get-buffer-name (variable)
"Returns the buffer name associated with the contents of a variable."
(list (list (current-buffer)
(cons nil gnus-picons-has-modeline-p)))))))
-(defun gnus-picons-prepare-for-annotations (annotations)
- "Prepare picons buffer for puting annotations memorized in ANNOTATIONS.
-ANNOTATIONS should be a symbol naming a variable wich contains a list of
-annotations. Sets buffer to `gnus-picons-display-where'."
+(defun gnus-picons-prepare-for-annotations ()
+ "Prepare picons buffer for putting annotations."
;; let drawing catch up
(when gnus-picons-refresh-before-display
(sit-for 0))
(gnus-picons-set-buffer)
- (gnus-picons-remove annotations))
+ (gnus-picons-remove-all))
-(defsubst gnus-picons-make-annotation (&rest args)
+(defun gnus-picons-make-annotation (&rest args)
(let ((annot (apply 'make-annotation args)))
- (set-extent-property annot 'duplicable nil)
+ (set-extent-property annot 'gnus-picon t)
+ (set-extent-property annot 'duplicable t)
annot))
(defun gnus-picons-article-display-x-face ()
"Display the x-face header bitmap in the 'gnus-picons-display-where buffer."
- ;; delete any old ones.
- ;; This is needed here because gnus-picons-display-x-face will not
- ;; be called if there is no X-Face header
- (gnus-picons-remove 'gnus-x-face-annotations)
- ;; display the new one.
(let ((gnus-article-x-face-command 'gnus-picons-display-x-face))
(gnus-article-display-x-face)))
(defun gnus-picons-x-face-sentinel (process event)
- (let* ((env (assq process gnus-picons-processes-alist))
- (annot (cdr env)))
+ (when (memq process gnus-picons-processes-alist)
(setq gnus-picons-processes-alist
- (remassq process gnus-picons-processes-alist))
- (when (annotationp annot)
- (set-annotation-glyph annot
- (make-glyph gnus-picons-x-face-file-name))
- (if (memq annot gnus-x-face-annotations)
- (delete-file gnus-picons-x-face-file-name)))))
+ (delq process gnus-picons-processes-alist))
+ (gnus-picons-set-buffer)
+ (gnus-picons-make-annotation (make-glyph gnus-picons-x-face-file-name)
+ nil 'text)
+ (delete-file gnus-picons-x-face-file-name)))
(defun gnus-picons-display-x-face (beg end)
"Function to display the x-face header in the picons window.
(interactive)
(if (featurep 'xface)
;; Use builtin support
- (let ((buf (current-buffer)))
- (save-excursion
- (gnus-picons-prepare-for-annotations 'gnus-x-face-annotations)
- (setq gnus-x-face-annotations
- (cons (gnus-picons-make-annotation
- (vector 'xface
- :data (concat "X-Face: "
- (buffer-substring beg end buf)))
- nil 'text)
- gnus-x-face-annotations))))
+ (save-excursion
+ (gnus-picons-set-buffer)
+ (gnus-picons-make-annotation
+ (vector 'xface
+ :data (concat "X-Face: " (buffer-substring beg end)))
+ nil 'text))
;; convert the x-face header to a .xbm file
(let* ((process-connection-type nil)
- (annot (save-excursion
- (gnus-picons-prepare-for-annotations
- 'gnus-x-face-annotations)
- (gnus-picons-make-annotation nil nil 'text)))
(process (start-process-shell-command "gnus-x-face" nil
gnus-picons-convert-x-face)))
- (push annot gnus-x-face-annotations)
- (push (cons process annot) gnus-picons-processes-alist)
+ (push process gnus-picons-processes-alist)
(process-kill-without-query process)
(set-process-sentinel process 'gnus-picons-x-face-sentinel)
(process-send-region process beg end)
(message-tokenize-header gnus-local-domain "."))
(message-tokenize-header (substring from (1+ at-idx))
"."))))
- (gnus-picons-prepare-for-annotations 'gnus-article-annotations)
- ;; if display in article buffer, the group annotations
- ;; wrongly placed. Move them here
- (if (eq gnus-picons-display-where 'article)
- (dolist (ext gnus-group-annotations)
- (when (extent-live-p ext)
- (set-extent-endpoints ext (point) (point)))))
+ (gnus-picons-prepare-for-annotations)
+ (gnus-group-display-picons)
(if (null gnus-picons-piconsearch-url)
- (setq gnus-article-annotations
- (nconc gnus-article-annotations
- (gnus-picons-display-pairs
- (gnus-picons-lookup-pairs
- addrs gnus-picons-domain-directories)
- gnus-picons-display-as-address
- "." t)
- (if (and gnus-picons-display-as-address addrs)
- (list (gnus-picons-make-annotation
- [string :data "@"] nil
- 'text nil nil nil t)))
- (gnus-picons-display-picon-or-name
- (gnus-picons-lookup-user username addrs)
- username t)))
+ (progn
+ (gnus-picons-display-pairs (gnus-picons-lookup-pairs
+ addrs
+ gnus-picons-domain-directories)
+ gnus-picons-display-as-address
+ "." t)
+ (if (and gnus-picons-display-as-address addrs)
+ (gnus-picons-make-annotation
+ [string :data "@"] nil 'text nil nil nil t))
+ (gnus-picons-display-picon-or-name
+ (gnus-picons-lookup-user username addrs)
+ username t))
(push (list 'gnus-article-annotations 'search username addrs
gnus-picons-domain-directories t)
gnus-picons-jobs-alist)
- (gnus-picons-next-job))
-
- (add-hook 'gnus-summary-exit-hook 'gnus-picons-remove-all))))))
+ (gnus-picons-next-job)))))))
(defun gnus-group-display-picons ()
- "Display icons for the group in the gnus-picons-display-where buffer."
+ "Display icons for the group in the `gnus-picons-display-where' buffer."
(interactive)
(when (and (featurep 'xpm)
(or (not (fboundp 'device-type)) (equal (device-type) 'x))
(not (string-match gnus-picons-group-excluded-groups
gnus-newsgroup-name))))
(save-excursion
- (gnus-picons-prepare-for-annotations 'gnus-group-annotations)
+ (gnus-picons-prepare-for-annotations)
(if (null gnus-picons-piconsearch-url)
- (setq gnus-group-annotations
- (gnus-picons-display-pairs
+ (gnus-picons-display-pairs
(gnus-picons-lookup-pairs
(reverse (message-tokenize-header
(gnus-group-real-name gnus-newsgroup-name)
"."))
gnus-picons-news-directories)
- t "."))
+ t ".")
(push (list 'gnus-group-annotations 'search nil
(message-tokenize-header
(gnus-group-real-name gnus-newsgroup-name) ".")
(add-hook 'gnus-summary-exit-hook 'gnus-picons-remove-all))))
-(defsubst gnus-picons-lookup-internal (addrs dir)
+(defun gnus-picons-lookup-internal (addrs dir)
(setq dir (expand-file-name dir gnus-picons-database))
(gnus-picons-try-face (dolist (part (reverse addrs) dir)
(setq dir (expand-file-name part dir)))))
(defun gnus-picons-network-display-internal (sym-ann glyph part right-p)
(gnus-picons-set-buffer)
- (set sym-ann (nconc (symbol-value sym-ann)
- (gnus-picons-display-picon-or-name glyph part right-p)))
+ (gnus-picons-display-picon-or-name glyph part right-p)
(gnus-picons-next-job-internal))
(defun gnus-picons-network-display-callback (url part sym-ann right-p)
(prog1 (gnus-picons-parse-filenames)
(kill-buffer (current-buffer)))))
+;; Initiate a query on the picon database
(defun gnus-picons-network-search (user addrs dbs sym-ann right-p)
(let* ((host (mapconcat 'identity addrs "."))
(key (list (or user "unknown") host (if user
hashtb))
(when new-newsgroups
(gnus-subscribe-hierarchical-interactive new-newsgroups)))
- (when (> groups 0)
- (gnus-message 6 "%d new newsgroup%s arrived."
- groups (if (> groups 1) "s have" " has")))
+ (if (> groups 0)
+ (gnus-message 5 "%d new newsgroup%s arrived"
+ groups (if (> groups 1) "s have" " has"))
+ (gnus-message 5 "No new newsgroups"))
(when got-new
(setq gnus-newsrc-last-checked-date new-date))
got-new))
(defcustom gnus-simplify-subject-functions nil
"List of functions taking a string argument that simplify subjects.
-The functions are applied recursively."
+The functions are applied recursively.
+
+Useful functions to put in this list include: `gnus-simplify-subject-re',
+`gnus-simplify-subject-fuzzy' and `gnus-simplify-whitespace'."
:group 'gnus-thread
- :type '(repeat (list function)))
+ :type '(repeat function))
(defcustom gnus-simplify-ignored-prefixes nil
"*Regexp, matches for which are removed from subject lines when simplifying fuzzily."
(require 'message)
(eval-and-compile
- (autoload 'nnmail-date-to-time "nnmail"))
+ (autoload 'nnmail-date-to-time "nnmail")
+ (autoload 'rmail-insert-rmail-file-header "rmail")
+ (autoload 'rmail-count-new-messages "rmail")
+ (autoload 'rmail-show-message "rmail"))
(defun gnus-boundp (variable)
"Return non-nil if VARIABLE is bound and non-nil."
:link '(custom-manual "(gnus)Exiting Gnus")
:group 'gnus)
-(defconst gnus-version-number "6.0.7"
+(defconst gnus-version-number "6.0.8"
"Version number for this version of gnus.")
(defconst gnus-version
- (format "Semi-gnus %s (based on Quassia Gnus v0.32)" gnus-version-number)
+ (format "Semi-gnus %s (based on Quassia Gnus v0.34)" gnus-version-number)
"Version string for this version of gnus.")
(defcustom gnus-inhibit-startup-message nil
("nnfolder" mail respool address)
("nngateway" none address prompt-address physical-address)
("nnweb" none)
+ ("nnlistserv" none)
("nnagent" post-mail))
"*An alist of valid select methods.
The first element of each list lists should be a string with the name
gnus-group-list-groups gnus-group-first-unread-group
gnus-group-set-mode-line gnus-group-set-info gnus-group-save-newsrc
gnus-group-setup-buffer gnus-group-get-new-news
- gnus-group-make-help-group gnus-group-update-group)
+ gnus-group-make-help-group gnus-group-update-group
+ gnus-clear-inboxes-moved gnus-group-iterate
+ gnus-group-group-name)
("gnus-bcklg" gnus-backlog-request-article gnus-backlog-enter-article
gnus-backlog-remove-article)
("gnus-art" gnus-article-read-summary-keys gnus-article-save
((= c ?g)
(gnus-group-group-name))
((= c ?A)
- (gnus-summary-article-number))
+ (gnus-summary-skip-intangible)
+ (or (get-text-property (point) 'gnus-number)
+ (gnus-summary-last-subject)))
((= c ?H)
- (gnus-summary-article-header))
+ (gnus-data-header (gnus-data-find (gnus-summary-article-number))))
(t
- (error "Not implemented spec")))
+ (error "Non-implemented spec")))
out)
(cond
((= c ?r)
(autoload 'gnus-output-to-rmail "gnus-util")
(autoload 'mail-abbrev-in-expansion-header-p "mailabbrev")
(autoload 'nndraft-request-associate-buffer "nndraft")
- (autoload 'nndraft-request-expire-articles "nndraft"))
+ (autoload 'nndraft-request-expire-articles "nndraft")
+ (autoload 'gnus-open-server "gnus-int")
+ (autoload 'gnus-request-post "gnus-int")
+ (autoload 'rmail-output "rmail"))
\f
(goto-char (point-max)))
(insert mail-header-separator)
;; Rename all old ("Also-")Resent headers.
- (while (re-search-backward "^\\(Also-\\)?Resent-" beg t)
+ (while (re-search-backward "^\\(Also-\\)*Resent-" beg t)
(beginning-of-line)
(insert "Also-"))
;; Quote any "From " lines at the beginning.
(autoload 'cancel-timer "timer")
(autoload 'telnet "telnet" nil t)
(autoload 'telnet-send-input "telnet" nil t)
- (autoload 'timezone-parse-date "timezone"))
+ (autoload 'timezone-parse-date "timezone")
+ (autoload 'gnus-declare-backend "gnus-start"))
;; Declare nndb as derived from nntp
\f
+(autoload 'gnus-encode-coding-string "gnus-ems")
+
;;; Interface functions.
(nnoo-define-basics nneething)
(autoload 'mail-position-on-field "sendmail")
(autoload 'message-remove-header "message")
(autoload 'cancel-function-timers "timers")
- (autoload 'gnus-point-at-eol "gnus-util"))
+ (autoload 'gnus-point-at-eol "gnus-util")
+ (autoload 'gnus-delete-line "gnus-util")
+ (autoload 'gnus-buffer-live-p "gnus-util")
+ (autoload 'gnus-encode-coding-string "gnus-ems"))
;;; Header access macros.
(eval-when-compile (require 'cl))
-(push '("nnlistserv" none) gnus-valid-select-methods)
-
(require 'nnoo)
(require 'nnweb)
(require 'custom)
(eval-and-compile
- (autoload 'gnus-error "gnus-util"))
+ (autoload 'gnus-error "gnus-util")
+ (autoload 'gnus-buffer-live-p "gnus-util")
+ (autoload 'gnus-encode-coding-string "gnus-ems"))
(defgroup nnmail nil
"Reading mail with Gnus."
(require 'mail-utils)
(let ((tembuf (generate-new-buffer " message temp"))
(case-fold-search nil)
+ (real-header-separator mail-header-separator)
(mail-header-separator "")
delimline
(mailbuf (current-buffer)))
;; Change header-delimiter to be what sendmail expects.
(goto-char (point-min))
(re-search-forward
- (concat "^" (regexp-quote mail-header-separator) "\n"))
+ (concat "^" (regexp-quote real-header-separator) "\n"))
(replace-match "\n")
(backward-char 1)
(setq delimline (point-marker))
(require 'gnus-util)
(require 'gnus-start)
(require 'gnus-sum)
+(require 'gnus-msg)
(require 'cl)
(nnoo-declare nnvirtual)
;; Author: Richard L. Pieri <ratinox@peorth.gweep.net>
;; Keywords: mail, pop3
-;; Version: 1.3l+
+;; Version: 1.3l+himi-1
;; This file is part of GNU Emacs.
(defvar pop3-password-required t
"*Non-nil if a password is required when connecting to POP server.")
(defvar pop3-password nil
- "*Password to use when connecting to POP server.")
+ "*Password to use when connecting to POP server.
+If this variable is t, your input password would be memorized.")
+(defvar pop3-use-last-command nil
+ "*Non-nil when you want to use `LAST' command to get unread messages.")
(defvar pop3-authentication-scheme 'pass
"*POP3 authentication scheme.
(crashbuf (get-buffer-create " *pop3-retr*"))
(n 1)
message-count
- (pop3-password pop3-password)
+ password
)
;; for debugging only
(if pop3-debug (switch-to-buffer (process-buffer process)))
;; query for password
- (if (and pop3-password-required (not pop3-password))
- (setq pop3-password
+ (if (and pop3-password-required (not (stringp pop3-password)))
+ (setq password
(pop3-read-passwd (format "Password for %s: " pop3-maildrop))))
(cond ((equal 'apop pop3-authentication-scheme)
- (pop3-apop process pop3-maildrop))
+ (pop3-apop process pop3-maildrop password))
((equal 'pass pop3-authentication-scheme)
(pop3-user process pop3-maildrop)
- (pop3-pass process))
+ (pop3-pass process password))
(t (error "Invalid POP3 authentication scheme.")))
(setq message-count (car (pop3-stat process)))
+ (if pop3-use-last-command
+ (setq n (+ 1 (pop3-last process))))
(while (<= n message-count)
(message (format "Retrieving message %d of %d from %s..."
n message-count pop3-mailhost))
)
(pop3-quit process)
(kill-buffer crashbuf)
+ (if pop3-password (setq pop3-password password))
)
)
(if (not (and response (string-match "+OK" response)))
(error (format "USER %s not valid." user)))))
-(defun pop3-pass (process)
+(defun pop3-pass (process password)
"Send authentication information to the server."
- (pop3-send-command process (format "PASS %s" pop3-password))
+ (pop3-send-command process (format "PASS %s" password))
(let ((response (pop3-read-response process t)))
(if (not (and response (string-match "+OK" response)))
(pop3-quit process))))
-(defun pop3-apop (process user)
+(defun pop3-apop (process user password)
"Send alternate authentication information to the server."
(if (not (fboundp 'md5)) (autoload 'md5 "md5"))
- (let ((hash (md5 (concat pop3-timestamp pop3-password))))
+ (let ((hash (md5 (concat pop3-timestamp password))))
(pop3-send-command process (format "APOP %s %s" user hash))
(let ((response (pop3-read-response process t)))
(if (not (and response (string-match "+OK" response)))
done, because you are reading this.
You should definitely byte-compile the source files. To do that, you
-can simply say "make" in this directory. If you are using XEmacs, you
-*must* say "make EMACS=xemacs". In that case you may also want to
-pull down the package of nice glyphs from
+can simply say "./configure; make" in this directory. If you are
+using XEmacs, you *must* say "make EMACS=xemacs". In that case you
+may also want to pull down the package of nice glyphs from
<URL:http://www.gnus.org/~larsi/etc.tar.gz>. It should be installed
into the "gnus-5.4.53/etc" directory.
\input texinfo @c -*-texinfo-*-
@setfilename gnus
-@settitle Quassia Gnus 0.32 Manual
+@settitle Quassia Gnus 0.34 Manual
@synindex fn cp
@synindex vr cp
@synindex pg cp
@tex
@titlepage
-@title Quassia Gnus 0.32 Manual
+@title Quassia Gnus 0.34 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 Quassia Gnus 0.32.
+This manual corresponds to Quassia Gnus 0.34.
@end ifinfo
@item read-only
Read-only score files will not be updated or saved. Global score files
should feature this atom (@pxref{Global Score Files}). (Note:
-@dfn{Global} here really means @dfn{global}; not just your personal
+@dfn{Global} here really means @dfn{global}; not your personal
apply-to-all-groups score files.)
@item orphan
gnus-article-highlight-limit, to disable highlighting in big articles.
@item
+Editing an article should put the article to be edited
+in a special, unique buffer.
+
+@item
Solve the halting problem.
@c TODO
\input texinfo @c -*-texinfo-*-
@setfilename message
-@settitle Message 0.32 Manual
+@settitle Message 0.34 Manual
@synindex fn cp
@synindex vr cp
@synindex pg cp
@tex
@titlepage
-@title Message 0.32 Manual
+@title Message 0.34 Manual
@author by Lars Magne Ingebrigtsen
@page
* Key Index:: List of Message mode keys.
@end menu
-This manual corresponds to Message 0.32. Message is distributed with
+This manual corresponds to Message 0.34. Message is distributed with
the Gnus distribution bearing the same version number as this manual
has.