1
Fork 0
mirror of git://git.sv.gnu.org/emacs.git synced 2025-12-15 10:30:25 -08:00

Merge changes made in Gnus trunk.

Reimplement nnimap, and do tweaks to the rest of the code to support that.

* gnus-int.el (gnus-finish-retrieve-group-infos)
(gnus-retrieve-group-data-early): New functions.

* gnus-range.el (gnus-range-nconcat): New function.

* gnus-start.el (gnus-get-unread-articles): Support early retrieval of
data.
(gnus-read-active-for-groups): Support finishing the early retrieval of
data.

* gnus-sum.el (gnus-summary-move-article): Pass the move-to group name
if the move is internal, so that nnimap can do fast internal moves.

* gnus.el (gnus-article-special-mark-lists): Add uid/active tuples, for
nnimap usage.

* nnimap.el: Rewritten.

* nnmail.el (nnmail-inhibit-default-split-group): New internal variable
to allow the mail splitting to not return a default group.  This is
useful for nnimap, which will leave unmatched mail in the inbox.

* utf7.el (utf7-encode): Autoload.


Implement shell connection.

* nnimap.el (nnimap-open-shell-stream): New function.
(nnimap-open-connection): Use it.


Get the number of lines by using BODYSTRUCTURE.

(nnimap-transform-headers): Get the number of lines in each message.
(nnimap-retrieve-headers): Query for BODYSTRUCTURE so that we get the
number of lines.


Not all servers return UIDNEXT.  Work past this problem.


Remove junk from end of file.


Fix typo in "bogus" section.


Make capabilties be case-insensitive.


Require cl when compiling.


Don't bug out if the LIST command doesn't have any parameters.

2010-09-17  Knut Anders Hatlen  <kahatlen@gmail.com>  (tiny change)

	    * nnimap.el (nnimap-get-groups): Don't bug out if the LIST command
	    doesn't have any parameters.


(mm-text-html-renderer): Document gnus-article-html.

2010-09-17  Julien Danjou  <julien@danjou.info>  (tiny fix)

	    * mm-decode.el (mm-text-html-renderer): Document gnus-article-html.


* dgnushack.el: Define netrc-credentials.


If the user doesn't have a /etc/services, supply some sensible port defaults.


Have `unseen-or-unread' select an unread unseen article first.


(nntp-open-server): Return whether the open was successful or not.


Throughout all files, replace (save-excursion (set-buffer ...)) with (with-current-buffer ... ).


Save result so that it doesn't say "failed" all the time.


Add ~/.authinfo to the default, since that's probably most useful for users.


Don't use the "finish" method when we're reading from the agent.


Add some more nnimap-relevant agent stuff to nnagent.el.


* nnimap.el (nnimap-with-process-buffer): Removed.


Revert one line that was changed by mistake in the last checkin.


(nnimap-open-connection): Don't error out when we can't make a connection


nnimap-related changes to avoid bugging out if we can't contact a server.
* gnus-start.el (gnus-get-unread-articles): Don't try to scan groups
 from methods that are denied.
* nnimap.el (nnimap-possibly-change-group): Return nil if we can't log
 in.
(nnimap-finish-retrieve-group-infos): Make sure we're not waiting for
 nothing.
* gnus-sum.el (gnus-select-newsgroup): Indent.
This commit is contained in:
Katsumi Yamaoka 2010-09-18 10:02:19 +00:00
parent 71b961e847
commit 20a673b2d0
49 changed files with 1265 additions and 2240 deletions

View file

@ -107,7 +107,8 @@ Only relevant if `auth-source-debug' is not nil."
:version "23.2" ;; No Gnus
:type `boolean)
(defcustom auth-sources '((:source "~/.authinfo.gpg"))
(defcustom auth-sources '((:source "~/.authinfo.gpg")
(:source "~/.authinfo"))
"List of authentication sources.
The default will get login and password information from a .gpg
@ -311,20 +312,23 @@ Return structure as specified by MODE."
(setq result
(mapcar
(lambda (m)
(if (equal "password" m)
(let ((passwd (read-passwd "Password: ")))
(cond
;; Secret Service API.
((consp source)
(apply
'secrets-create-item
(auth-get-source entry) name passwd spec))
(t)) ;; netrc not implemented yes.
passwd)
(or
;; the originally requested :user
user
"unknown-user")))
(cond
((equal "password" m)
(let ((passwd (read-passwd
(format "Password for %s on %s: " prot host))))
(cond
;; Secret Service API.
((consp source)
(apply
'secrets-create-item
(auth-get-source entry) name passwd spec))
(t)) ;; netrc not implemented yes.
passwd))
((equal "login" m)
(or user
(read-string (format "User name for %s on %s: " prot host))))
(t
"unknownuser")))
(if (consp mode) mode (list mode))))
(if (consp mode) result (car result))))

View file

@ -151,8 +151,7 @@ If N is negative, move backward instead."
(defun earcon-button-push (marker)
;; Push button starting at MARKER.
(save-excursion
(set-buffer gnus-article-buffer)
(with-current-buffer gnus-article-buffer
(goto-char marker)
(let* ((entry (earcon-button-entry))
(inhibit-point-motion-hooks t)
@ -214,8 +213,7 @@ If N is negative, move backward instead."
(defun gnus-earcon-display ()
"Play sounds in message buffers."
(interactive)
(save-excursion
(set-buffer gnus-article-buffer)
(with-current-buffer gnus-article-buffer
(goto-char (point-min))
;; Skip headers
(unless (search-forward "\n\n" nil t)

View file

@ -97,8 +97,7 @@ RFC 2646 suggests 66 characters for readability."
;;;###autoload
(defun fill-flowed (&optional buffer delete-space)
(save-excursion
(set-buffer (or (current-buffer) buffer))
(with-current-buffer (or (current-buffer) buffer)
(goto-char (point-min))
;; Remove space stuffing.
(while (re-search-forward "^\\( \\|>+ $\\)" nil t)

View file

@ -305,8 +305,7 @@ buffer. Automatically blocks multiple updates due to recursion."
`(prog1 (let ((gnus-agent-inhibit-update-total-fetched-for t)) ,@body)
(when (and gnus-agent-need-update-total-fetched-for
(not gnus-agent-inhibit-update-total-fetched-for))
(save-excursion
(set-buffer gnus-group-buffer)
(with-current-buffer gnus-group-buffer
(setq gnus-agent-need-update-total-fetched-for nil)
(gnus-group-update-group ,group t)))))
@ -474,8 +473,7 @@ manipulated as follows:
(defun gnus-agent-stop-fetch ()
"Save all data structures and clean up."
(setq gnus-agent-spam-hashtb nil)
(save-excursion
(set-buffer nntp-server-buffer)
(with-current-buffer nntp-server-buffer
(widen)))
(defmacro gnus-agent-with-fetch (&rest forms)
@ -1608,8 +1606,7 @@ downloaded into the agent."
nntp-server-buffer (point-min) (point-max))
(setq pos (nreverse pos)))))
;; Then save these articles into the Agent.
(save-excursion
(set-buffer nntp-server-buffer)
(with-current-buffer nntp-server-buffer
(while pos
(narrow-to-region (cdar pos) (or (cdadr pos) (point-max)))
(goto-char (point-min))
@ -1693,8 +1690,7 @@ downloaded into the agent."
(setq date (or date t))
(let (gnus-agent-article-alist group alist beg end)
(save-excursion
(set-buffer gnus-agent-overview-buffer)
(with-current-buffer gnus-agent-overview-buffer
(when (nnheader-find-nov-line article)
(forward-word 1)
(setq beg (point))
@ -1705,9 +1701,8 @@ downloaded into the agent."
(push (setq alist (list group (gnus-agent-load-alist (caar crosses))))
gnus-agent-group-alist))
(setcdr alist (cons (cons (cdar crosses) date) (cdr alist)))
(save-excursion
(set-buffer (gnus-get-buffer-create (format " *Gnus agent overview %s*"
group)))
(with-current-buffer (gnus-get-buffer-create
(format " *Gnus agent overview %s*"group))
(when (= (point-max) (point-min))
(push (cons group (current-buffer)) gnus-agent-buffer-alist)
(ignore-errors
@ -1939,9 +1934,7 @@ article numbers will be returned."
10 "gnus-agent-fetch-headers: undownloaded articles are '%s'"
(gnus-compress-sequence articles t))
(save-excursion
(set-buffer nntp-server-buffer)
(with-current-buffer nntp-server-buffer
(if articles
(progn
(gnus-message 7 "Fetching headers for %s..."
@ -2767,8 +2760,7 @@ The following commands are available:
(defun gnus-category-setup-buffer ()
(unless (get-buffer gnus-category-buffer)
(save-excursion
(set-buffer (gnus-get-buffer-create gnus-category-buffer))
(with-current-buffer (gnus-get-buffer-create gnus-category-buffer)
(gnus-category-mode))))
(defun gnus-category-prepare ()

View file

@ -145,8 +145,7 @@ that was fetched."
(when (and (gnus-buffer-live-p summary)
gnus-asynchronous
(gnus-group-asynchronous-p group))
(save-excursion
(set-buffer gnus-summary-buffer)
(with-current-buffer gnus-summary-buffer
(let ((next (caadr (gnus-data-find-list article))))
(when next
(if (not (fboundp 'run-with-idle-timer))
@ -205,8 +204,7 @@ that was fetched."
(when (and do-fetch article)
;; We want to fetch some more articles.
(save-excursion
(set-buffer summary)
(with-current-buffer summary
(let (mark)
(gnus-async-set-buffer)
(goto-char (point-max))

View file

@ -40,8 +40,7 @@
(defun gnus-backlog-buffer ()
"Return the backlog buffer."
(or (get-buffer gnus-backlog-buffer)
(save-excursion
(set-buffer (gnus-get-buffer-create gnus-backlog-buffer))
(with-current-buffer (gnus-get-buffer-create gnus-backlog-buffer)
(buffer-disable-undo)
(setq buffer-read-only t)
(get-buffer gnus-backlog-buffer))))
@ -76,8 +75,7 @@
(gnus-backlog-remove-oldest-article))
(push ident gnus-backlog-articles)
;; Insert the new article.
(save-excursion
(set-buffer (gnus-backlog-buffer))
(with-current-buffer (gnus-backlog-buffer)
(let (buffer-read-only)
(goto-char (point-max))
(unless (bolp)
@ -90,8 +88,7 @@
(gnus-error 3 "Article %d is blank" number))))))))
(defun gnus-backlog-remove-oldest-article ()
(save-excursion
(set-buffer (gnus-backlog-buffer))
(with-current-buffer (gnus-backlog-buffer)
(goto-char (point-min))
(if (zerop (buffer-size))
() ; The buffer is empty.
@ -114,8 +111,7 @@
beg end)
(when (memq ident gnus-backlog-articles)
;; It was in the backlog.
(save-excursion
(set-buffer (gnus-backlog-buffer))
(with-current-buffer (gnus-backlog-buffer)
(let (buffer-read-only)
(when (setq beg (text-property-any
(point-min) (point-max) 'gnus-backlog
@ -138,8 +134,7 @@
beg end)
(when (memq ident gnus-backlog-articles)
;; It was in the backlog.
(save-excursion
(set-buffer (gnus-backlog-buffer))
(with-current-buffer (gnus-backlog-buffer)
(if (not (setq beg (text-property-any
(point-min) (point-max) 'gnus-backlog
ident)))
@ -150,8 +145,7 @@
(setq end
(next-single-property-change
(1+ beg) 'gnus-backlog (current-buffer) (point-max)))))
(save-excursion
(and buffer (set-buffer buffer))
(with-current-buffer (or (current-buffer) buffer)
(let ((buffer-read-only nil))
(erase-buffer)
(insert-buffer-substring gnus-backlog-buffer beg end)))

View file

@ -180,8 +180,7 @@ it's not cached."
;; Save the article in the cache.
(if (file-exists-p file)
t ; The article already is saved.
(save-excursion
(set-buffer nntp-server-buffer)
(with-current-buffer nntp-server-buffer
(require 'gnus-art)
(let ((gnus-use-cache nil)
(gnus-article-decode-hook nil))
@ -554,8 +553,7 @@ system for example was used.")
(let ((cache-buf (gnus-get-buffer-create " *gnus-cache*"))
beg end)
(gnus-cache-save-buffers)
(save-excursion
(set-buffer cache-buf)
(with-current-buffer cache-buf
(erase-buffer)
(let ((coding-system-for-read gnus-cache-overview-coding-system)
(file-name-coding-system nnmail-pathname-coding-system))
@ -844,8 +842,7 @@ supported."
,@body)
(when (and gnus-cache-need-update-total-fetched-for
(not gnus-cache-inhibit-update-total-fetched-for))
(save-excursion
(set-buffer gnus-group-buffer)
(with-current-buffer gnus-group-buffer
(setq gnus-cache-need-update-total-fetched-for nil)
(gnus-group-update-group ,group t)))))

View file

@ -291,11 +291,9 @@ minutes, the connection is closed."
(let ((win (current-window-configuration)))
(unwind-protect
(save-window-excursion
(save-excursion
(when (gnus-alive-p)
(save-excursion
(set-buffer gnus-group-buffer)
(gnus-group-get-new-news)))))
(when (gnus-alive-p)
(with-current-buffer gnus-group-buffer
(gnus-group-get-new-news))))
(set-window-configuration win))))
(defun gnus-demon-add-scan-timestamps ()

View file

@ -179,10 +179,7 @@ If it is down, start it up (again)."
(format " on %s" (nth 1 method)))))
(gnus-run-hooks 'gnus-open-server-hook)
(prog1
(condition-case ()
(setq result (gnus-open-server method))
(quit (message "Quit gnus-check-server")
nil))
(setq result (gnus-open-server method))
(unless silent
(gnus-message 5 "Opening %s server%s...%s" (car method)
(if (equal (nth 1 method) "") ""
@ -225,6 +222,10 @@ If it is down, start it up (again)."
;;; Interface functions to the backends.
;;;
(defun gnus-method-denied-p (method)
(eq (nth 1 (assoc method gnus-opened-servers))
'denied))
(defun gnus-open-server (gnus-command-method)
"Open a connection to GNUS-COMMAND-METHOD."
(when (stringp gnus-command-method)
@ -319,6 +320,22 @@ If it is down, start it up (again)."
(funcall (gnus-get-function gnus-command-method 'request-list)
(nth 1 gnus-command-method)))
(defun gnus-finish-retrieve-group-infos (gnus-command-method infos data)
"Read and update infos from GNUS-COMMAND-METHOD."
(when (stringp gnus-command-method)
(setq gnus-command-method (gnus-server-to-method gnus-command-method)))
(funcall (gnus-get-function gnus-command-method 'finish-retrieve-group-infos)
(nth 1 gnus-command-method)
infos data))
(defun gnus-retrieve-group-data-early (gnus-command-method infos)
"Start early async retrival of data from GNUS-COMMAND-METHOD."
(when (stringp gnus-command-method)
(setq gnus-command-method (gnus-server-to-method gnus-command-method)))
(funcall (gnus-get-function gnus-command-method 'retrieve-group-data-early)
(nth 1 gnus-command-method)
infos))
(defun gnus-request-list-newsgroups (gnus-command-method)
"Request the newsgroups file from GNUS-COMMAND-METHOD."
(when (stringp gnus-command-method)
@ -490,8 +507,7 @@ If BUFFER, insert the article in that group."
(setq res (gnus-request-article article group)
clean-up t)))
(when clean-up
(save-excursion
(set-buffer nntp-server-buffer)
(with-current-buffer nntp-server-buffer
(goto-char (point-min))
(when (search-forward "\n\n" nil t)
(delete-region (1- (point)) (point-max)))
@ -523,8 +539,7 @@ If BUFFER, insert the article in that group."
(setq res (gnus-request-article article group)
clean-up t)))
(when clean-up
(save-excursion
(set-buffer nntp-server-buffer)
(with-current-buffer nntp-server-buffer
(goto-char (point-min))
(when (search-forward "\n\n" nil t)
(delete-region (point-min) (1- (point))))))

View file

@ -349,8 +349,7 @@ If NEWSGROUP is nil, return the global kill file instead."
(defun gnus-expunge (marks)
"Remove lines marked with MARKS."
(save-excursion
(set-buffer gnus-summary-buffer)
(with-current-buffer gnus-summary-buffer
(gnus-summary-limit-to-marks marks 'reverse)))
(defun gnus-apply-kill-file-unless-scored ()
@ -442,8 +441,7 @@ Returns the number of articles marked as read."
(progn
(delete-region beg (point))
(insert (or (eval form) "")))
(save-excursion
(set-buffer gnus-summary-buffer)
(with-current-buffer gnus-summary-buffer
(ignore-errors (eval form)))))
(and (buffer-modified-p)
gnus-kill-save-kill-file
@ -555,8 +553,7 @@ COMMAND must be a Lisp expression or a string representing a key sequence."
(and (eq 'quote (car (nth 2 object)))
(not (consp (cdadr (nth 2 object))))))
(concat "\n" (gnus-prin1-to-string object))
(save-excursion
(set-buffer (gnus-get-buffer-create "*Gnus PP*"))
(with-current-buffer (gnus-get-buffer-create "*Gnus PP*")
(buffer-disable-undo)
(erase-buffer)
(insert (format "\n(%S %S\n '(" (nth 0 object) (nth 1 object)))
@ -610,8 +607,7 @@ COMMAND must be a Lisp expression or a string representing a key sequence."
6 "Searching for article: %d..." (mail-header-number header))
(gnus-article-setup-buffer)
(gnus-article-prepare (mail-header-number header) t)
(when (save-excursion
(set-buffer gnus-article-buffer)
(when (with-current-buffer gnus-article-buffer
(goto-char (point-min))
(setq did-kill (re-search-forward regexp nil t)))
(cond ((stringp form) ;Keyboard macro.

View file

@ -179,8 +179,7 @@
(defun gnus-advanced-body (header match type)
(when (string= header "all")
(setq header "article"))
(save-excursion
(set-buffer nntp-server-buffer)
(with-current-buffer nntp-server-buffer
(let* ((request-func (cond ((string= "head" header)
'gnus-request-head)
((string= "body" header)

View file

@ -59,6 +59,36 @@ If RANGE is a single range, return (RANGE). Otherwise, return RANGE."
(setq list2 (cdr list2)))
list1))
(defun gnus-range-nconcat (&rest ranges)
"Return a range comprising all the RANGES, which are pre-sorted.
RANGES will be destructively altered."
(setq ranges (delete nil ranges))
(let* ((result (gnus-range-normalize (pop ranges)))
(last (last result)))
(dolist (range ranges)
(setq range (gnus-range-normalize range))
;; Normalize the single-number case, so that we don't need to
;; special-case that so much.
(when (numberp (car last))
(setcar last (cons (car last) (car last))))
(when (numberp (car range))
(setcar range (cons (car range) (car range))))
(if (= (1+ (cdar last)) (caar range))
(progn
(setcdr (car last) (cdar range))
(setcdr last (cdr range)))
(setcdr last range)
;; Denormalize back, since we couldn't join the ranges up.
(when (= (caar range) (cdar range))
(setcar range (caar range)))
(when (= (caar last) (cdar last))
(setcar last (caar last))))
(setq last (last last)))
(if (and (consp (car result))
(= (length result) 1))
(car result)
result)))
(defun gnus-range-difference (range1 range2)
"Return the range of elements in RANGE1 that do not appear in RANGE2.
Both ranges must be in ascending order."

View file

@ -241,8 +241,7 @@ considered precious) will not be trimmed."
"Save the registry cache file."
(interactive)
(let ((file gnus-registry-cache-file))
(save-excursion
(set-buffer (gnus-get-buffer-create " *Gnus-registry-cache*"))
(with-current-buffer (gnus-get-buffer-create " *Gnus-registry-cache*")
(make-local-variable 'version-control)
(setq version-control gnus-backup-startup-file)
(setq buffer-file-name file)
@ -674,8 +673,7 @@ Consults `gnus-registry-unfollowed-groups' and
word words)
(if (or (not (gnus-registry-fetch-extra id 'keywords))
force)
(save-excursion
(set-buffer gnus-article-buffer)
(with-current-buffer gnus-article-buffer
(article-goto-body)
(save-window-excursion
(save-restriction

View file

@ -708,8 +708,7 @@ file for the command instead of the current score file."
;; Change score file to the "all.SCORE" file.
(when (eq symp 'a)
(save-excursion
(set-buffer gnus-summary-buffer)
(with-current-buffer gnus-summary-buffer
(gnus-score-load-file
;; This is a kludge; yes...
(cond
@ -735,14 +734,12 @@ file for the command instead of the current score file."
(when (eq symp 'a)
;; We change the score file back to the previous one.
(save-excursion
(set-buffer gnus-summary-buffer)
(with-current-buffer gnus-summary-buffer
(gnus-score-load-file current-score-file)))))
(defun gnus-score-insert-help (string alist idx)
(setq gnus-score-help-winconf (current-window-configuration))
(save-excursion
(set-buffer (gnus-get-buffer-create "*Score Help*"))
(with-current-buffer (gnus-get-buffer-create "*Score Help*")
(buffer-disable-undo)
(delete-windows-on (current-buffer))
(erase-buffer)
@ -1270,8 +1267,7 @@ If FORMAT, also format the current score file."
exclude-files))
gnus-scores-exclude-files))
(when local
(save-excursion
(set-buffer gnus-summary-buffer)
(with-current-buffer gnus-summary-buffer
(while local
(and (consp (car local))
(symbolp (caar local))
@ -1528,8 +1524,7 @@ If FORMAT, also format the current score file."
(cons (cons header (or gnus-summary-default-score 0))
gnus-scores-articles))))
(save-excursion
(set-buffer (gnus-get-buffer-create "*Headers*"))
(with-current-buffer (gnus-get-buffer-create "*Headers*")
(buffer-disable-undo)
(when (gnus-buffer-live-p gnus-summary-buffer)
(message-clone-locals gnus-summary-buffer))
@ -1854,8 +1849,7 @@ score in `gnus-newsgroup-scored' by SCORE."
;; Change score file to the adaptive score file. All entries that
;; this function makes will be put into this file.
(save-excursion
(set-buffer gnus-summary-buffer)
(with-current-buffer gnus-summary-buffer
(gnus-score-load-file
(or gnus-newsgroup-adaptive-score-file
(gnus-score-file-name
@ -1946,15 +1940,13 @@ score in `gnus-newsgroup-scored' by SCORE."
(setq rest entries)))
(setq entries rest))))
;; We change the score file back to the previous one.
(save-excursion
(set-buffer gnus-summary-buffer)
(with-current-buffer gnus-summary-buffer
(gnus-score-load-file current-score-file))
(list (cons "references" news)))))
(defun gnus-score-add-followups (header score scores &optional thread)
"Add a score entry to the adapt file."
(save-excursion
(set-buffer gnus-summary-buffer)
(with-current-buffer gnus-summary-buffer
(let* ((id (mail-header-id header))
(scores (car scores))
entry dont)
@ -2282,8 +2274,7 @@ score in `gnus-newsgroup-scored' by SCORE."
"Create adaptive score rules for this newsgroup."
(when gnus-newsgroup-adaptive
;; We change the score file to the adaptive score file.
(save-excursion
(set-buffer gnus-summary-buffer)
(with-current-buffer gnus-summary-buffer
(gnus-score-load-file
(or gnus-newsgroup-adaptive-score-file
(gnus-home-score-file gnus-newsgroup-name t)
@ -2697,8 +2688,7 @@ GROUP using BNews sys file syntax."
(trans (cdr (assq ?: nnheader-file-name-translation-alist)))
(group-trans (nnheader-translate-file-chars group t))
ofiles not-match regexp)
(save-excursion
(set-buffer (gnus-get-buffer-create "*gnus score files*"))
(with-current-buffer (gnus-get-buffer-create "*gnus score files*")
(buffer-disable-undo)
;; Go through all score file names and create regexp with them
;; as the source.

View file

@ -594,8 +594,7 @@ Can be used to turn version control on or off."
(defun gnus-subscribe-hierarchically (newgroup)
"Subscribe new NEWGROUP and insert it in hierarchical newsgroup order."
;; Basic ideas by mike-w@cs.aukuni.ac.nz (Mike Williams)
(save-excursion
(set-buffer (nnheader-find-file-noselect gnus-current-startup-file))
(with-current-buffer (nnheader-find-file-noselect gnus-current-startup-file)
(prog1
(let ((groupkey newgroup) before)
(while (and (not before) groupkey)
@ -857,8 +856,7 @@ prompt the user for the name of an NNTP server to use."
;; it's not needed).
;; (set-window-point (get-buffer-window (current-buffer)) (point-max))
(bury-buffer gnus-dribble-buffer)
(save-excursion
(set-buffer gnus-group-buffer)
(with-current-buffer gnus-group-buffer
(gnus-group-set-mode-line))
(set-buffer obuf))))
@ -871,10 +869,9 @@ prompt the user for the name of an NNTP server to use."
(let ((dribble-file (gnus-dribble-file-name)))
(unless (file-exists-p (file-name-directory dribble-file))
(make-directory (file-name-directory dribble-file) t))
(save-excursion
(set-buffer (setq gnus-dribble-buffer
(gnus-get-buffer-create
(file-name-nondirectory dribble-file))))
(with-current-buffer (setq gnus-dribble-buffer
(gnus-get-buffer-create
(file-name-nondirectory dribble-file)))
(set (make-local-variable 'file-precious-flag) t)
(erase-buffer)
(setq buffer-file-name dribble-file)
@ -923,8 +920,7 @@ prompt the user for the name of an NNTP server to use."
(when (file-exists-p (gnus-dribble-file-name))
(delete-file (gnus-dribble-file-name)))
(when gnus-dribble-buffer
(save-excursion
(set-buffer gnus-dribble-buffer)
(with-current-buffer gnus-dribble-buffer
(let ((auto (make-auto-save-file-name)))
(when (file-exists-p auto)
(delete-file auto))
@ -934,14 +930,12 @@ prompt the user for the name of an NNTP server to use."
(defun gnus-dribble-save ()
(when (and gnus-dribble-buffer
(buffer-name gnus-dribble-buffer))
(save-excursion
(set-buffer gnus-dribble-buffer)
(with-current-buffer gnus-dribble-buffer
(save-buffer))))
(defun gnus-dribble-clear ()
(when (gnus-buffer-exists-p gnus-dribble-buffer)
(save-excursion
(set-buffer gnus-dribble-buffer)
(with-current-buffer gnus-dribble-buffer
(erase-buffer)
(set-buffer-modified-p nil)
(setq buffer-saved-size (buffer-size)))))
@ -1302,8 +1296,7 @@ for new groups, and subscribe the new groups as zombies."
(when (gnus-active group)
(gnus-group-change-level
group gnus-level-default-subscribed gnus-level-killed)))
(save-excursion
(set-buffer gnus-group-buffer)
(with-current-buffer gnus-group-buffer
;; Don't error if the group already exists. This happens when a
;; first-time user types 'F'. -- didier
(gnus-group-make-help-group t))
@ -1734,7 +1727,7 @@ If SCAN, request a scan of that group as well."
'primary)
(t
'foreign)))
(push (setq method-group-list (list method method-type nil))
(push (setq method-group-list (list method method-type nil nil))
type-cache))
;; Only add groups that need updating.
(if (<= (gnus-info-level info)
@ -1760,19 +1753,28 @@ If SCAN, request a scan of that group as well."
(< (gnus-method-rank (cadr c1) (car c1))
(gnus-method-rank (cadr c2) (car c2))))))
(while type-cache
(setq method (nth 0 (car type-cache))
method-type (nth 1 (car type-cache))
infos (nth 2 (car type-cache)))
(pop type-cache)
;; Start early async retrieval of data.
(dolist (elem type-cache)
(destructuring-bind (method method-type infos dummy) elem
(when (and method infos
(not (gnus-method-denied-p method))
(gnus-check-backend-function
'retrieve-group-data-early (car method)))
(when (gnus-check-backend-function 'request-scan (car method))
(dolist (info infos)
(gnus-request-scan (gnus-info-group info) method)))
(setcar (nthcdr 3 elem)
(gnus-retrieve-group-data-early method infos)))))
(when (and method
infos)
;; See if any of the groups from this method require updating.
(gnus-read-active-for-groups method infos)
(dolist (info infos)
(inline (gnus-get-unread-articles-in-group
info (gnus-active (gnus-info-group info)))))))
;; Do the rest of the retrieval.
(dolist (elem type-cache)
(destructuring-bind (method method-type infos early-data) elem
(when (and method infos)
;; See if any of the groups from this method require updating.
(gnus-read-active-for-groups method infos early-data)
(dolist (info infos)
(inline (gnus-get-unread-articles-in-group
info (gnus-active (gnus-info-group info))))))))
(gnus-message 6 "Checking new news...done")))
(defun gnus-method-rank (type method)
@ -1796,9 +1798,14 @@ If SCAN, request a scan of that group as well."
(t
100)))
(defun gnus-read-active-for-groups (method infos)
(defun gnus-read-active-for-groups (method infos early-data)
(with-current-buffer nntp-server-buffer
(cond
((and
(gnus-check-backend-function 'finish-retrieve-group-infos (car method))
(or (not (gnus-agent-method-p method))
(gnus-online method)))
(gnus-finish-retrieve-group-infos method infos early-data))
((gnus-check-backend-function 'retrieve-groups (car method))
(when (gnus-check-backend-function 'request-scan (car method))
(dolist (info infos)
@ -1867,8 +1874,7 @@ If SCAN, request a scan of that group as well."
(defun gnus-parse-active ()
"Parse active info in the nntp server buffer."
(save-excursion
(set-buffer nntp-server-buffer)
(with-current-buffer nntp-server-buffer
(goto-char (point-min))
;; Parse the result we got from `gnus-request-group'.
(when (looking-at "[0-9]+ [0-9]+ \\([0-9]+\\) [0-9]+")
@ -2022,8 +2028,7 @@ If SCAN, request a scan of that group as well."
(list "archive")))))
method)
(setq gnus-have-read-active-file nil)
(save-excursion
(set-buffer nntp-server-buffer)
(with-current-buffer nntp-server-buffer
(while (setq method (pop methods))
;; Only do each method once, in case the methods appear more
;; than once in this list.
@ -2089,8 +2094,7 @@ If SCAN, request a scan of that group as well."
(defun gnus-read-active-file-2 (groups method)
"Read an active file for GROUPS in METHOD using `gnus-retrieve-groups'."
(when groups
(save-excursion
(set-buffer nntp-server-buffer)
(with-current-buffer nntp-server-buffer
(gnus-check-server method)
(let ((list-type (gnus-retrieve-groups groups method)))
(cond ((not list-type)
@ -2771,8 +2775,7 @@ If FORCE is non-nil, the .newsrc file is read."
(not force)
(or (not gnus-dribble-buffer)
(not (buffer-name gnus-dribble-buffer))
(zerop (save-excursion
(set-buffer gnus-dribble-buffer)
(zerop (with-current-buffer gnus-dribble-buffer
(buffer-size)))))
(gnus-message 4 "(No changes need to be saved)")
(gnus-run-hooks 'gnus-save-newsrc-hook)
@ -2906,8 +2909,7 @@ If FORCE is non-nil, the .newsrc file is read."
(defun gnus-gnus-to-newsrc-format ()
;; Generate and save the .newsrc file.
(save-excursion
(set-buffer (create-file-buffer gnus-current-startup-file))
(with-current-buffer (create-file-buffer gnus-current-startup-file)
(let ((newsrc (cdr gnus-newsrc-alist))
(standard-output (current-buffer))
info ranges range method)
@ -2980,8 +2982,7 @@ If FORCE is non-nil, the .newsrc file is read."
(gnus-run-hooks 'gnus-slave-mode-hook))
(defun gnus-slave-save-newsrc ()
(save-excursion
(set-buffer gnus-dribble-buffer)
(with-current-buffer gnus-dribble-buffer
(let ((slave-name
(mm-make-temp-file (concat gnus-current-startup-file "-slave-")))
(modes (ignore-errors
@ -3005,8 +3006,7 @@ If FORCE is non-nil, the .newsrc file is read."
(if (not slave-files)
() ; There are no slave files to read.
(gnus-message 7 "Reading slave newsrcs...")
(save-excursion
(set-buffer (gnus-get-buffer-create " *gnus slave*"))
(with-current-buffer (gnus-get-buffer-create " *gnus slave*")
(setq slave-files
(sort (mapcar (lambda (file)
(list (nth 5 (file-attributes file)) file))
@ -3126,8 +3126,7 @@ If FORCE is non-nil, the .newsrc file is read."
(defun gnus-group-get-description (group)
"Get the description of a group by sending XGTITLE to the server."
(when (gnus-request-group-description group)
(save-excursion
(set-buffer nntp-server-buffer)
(with-current-buffer nntp-server-buffer
(goto-char (point-min))
(when (looking-at "[^ \t]+[ \t]+\\(.*\\)")
(match-string 1)))))

View file

@ -5504,11 +5504,11 @@ If SELECT-ARTICLES, only select those articles from GROUP."
(mm-decode-coding-string (gnus-status-message group) charset))))
(unless (gnus-request-group group t)
(when (equal major-mode 'gnus-summary-mode)
(gnus-kill-buffer (current-buffer)))
(error "Couldn't request group %s: %s"
(mm-decode-coding-string group charset)
(mm-decode-coding-string (gnus-status-message group) charset)))
(when (equal major-mode 'gnus-summary-mode)
(gnus-kill-buffer (current-buffer)))
(error "Couldn't request group %s: %s"
(mm-decode-coding-string group charset)
(mm-decode-coding-string (gnus-status-message group) charset)))
(when gnus-agent
(gnus-agent-possibly-alter-active group (gnus-active group) info)
@ -7394,7 +7394,7 @@ If prefix argument NO-ARTICLE is non-nil, no article is selected initially."
"Go to the first subject satisfying any non-nil constraint.
If UNREAD is non-nil, the article should be unread.
If UNDOWNLOADED is non-nil, the article should be undownloaded.
If UNSEEN is non-nil, the article should be unseen.
If UNSEEN is non-nil, the article should be unseen as well as unread.
Returns the article selected or nil if there are no matching articles."
(interactive "P")
(cond
@ -7417,7 +7417,8 @@ Returns the article selected or nil if there are no matching articles."
(and undownloaded
(memq num gnus-newsgroup-undownloaded))
(and unseen
(memq num gnus-newsgroup-unseen)))))))
(memq num gnus-newsgroup-unseen)
(memq num gnus-newsgroup-unreads)))))))
(setq data (cdr data)))
(prog1
(if data
@ -7908,8 +7909,8 @@ Return nil if there are no unseen articles."
(gnus-summary-position-point)))
(defun gnus-summary-first-unseen-or-unread-subject ()
"Place the point on the subject line of the first unseen article or,
if all article have been seen, on the subject line of the first unread
"Place the point on the subject line of the first unseen and unread article.
If all article have been seen, on the subject line of the first unread
article."
(interactive)
(prog1
@ -9690,7 +9691,8 @@ ACTION can be either `move' (the default), `crosspost' or `copy'."
to-newsgroup (list 'quote select-method)
(not articles) t) ; Accept form
(not articles) ; Only save nov last time
move-is-internal))) ; is this move internal?
(and move-is-internal
(gnus-group-real-name to-newsgroup))))) ; is this move internal?
;; Copy the article.
((eq action 'copy)
(with-current-buffer copy-buf
@ -9821,8 +9823,9 @@ ACTION can be either `move' (the default), `crosspost' or `copy'."
(gnus-add-marked-articles
to-group 'expire (list to-article) info))
(gnus-request-set-mark
to-group (list (list (list to-article) 'add to-marks))))
(when to-marks
(gnus-request-set-mark
to-group (list (list (list to-article) 'add to-marks)))))
(gnus-dribble-enter
(concat "(gnus-group-set-info '"

View file

@ -148,8 +148,7 @@ See Info node `(gnus)Formatting Variables'."
(defun gnus-group-parent-topic (group)
"Return the topic GROUP is member of by looking at the group buffer."
(save-excursion
(set-buffer gnus-group-buffer)
(with-current-buffer gnus-group-buffer
(if (gnus-group-goto-group group)
(gnus-current-topic)
(gnus-group-topic group))))
@ -912,8 +911,7 @@ articles in the topic and its subtopics."
(defun gnus-topic-change-level (group level oldlevel &optional previous)
"Run when changing levels to enter/remove groups from topics."
(save-excursion
(set-buffer gnus-group-buffer)
(with-current-buffer gnus-group-buffer
(let ((buffer-read-only nil))
(unless gnus-topic-inhibit-change-level
(gnus-group-goto-group (or (car (nth 2 previous)) group))

View file

@ -1115,8 +1115,7 @@ FILENAME exists and is Babyl format."
(gnus-yes-or-no-p
(concat "\"" filename "\" does not exist, create it? ")))
(let ((file-buffer (create-file-buffer filename)))
(save-excursion
(set-buffer file-buffer)
(with-current-buffer file-buffer
(if (fboundp 'rmail-insert-rmail-file-header)
(rmail-insert-rmail-file-header))
(let ((require-final-newline nil)
@ -1194,8 +1193,7 @@ FILENAME exists and is Babyl format."
(gnus-y-or-n-p
(concat "\"" filename "\" does not exist, create it? ")))
(let ((file-buffer (create-file-buffer filename)))
(save-excursion
(set-buffer file-buffer)
(with-current-buffer file-buffer
(let ((require-final-newline nil)
(coding-system-for-write mm-text-coding-system))
(gnus-write-buffer filename)))
@ -1274,8 +1272,7 @@ This function saves the current buffer."
"Say whether Gnus is running or not."
(and (boundp 'gnus-group-buffer)
(get-buffer gnus-group-buffer)
(save-excursion
(set-buffer gnus-group-buffer)
(with-current-buffer gnus-group-buffer
(eq major-mode 'gnus-group-mode))))
(defun gnus-remove-if (predicate list)

View file

@ -827,8 +827,7 @@ When called interactively, prompt for REGEXP."
(defun gnus-uu-save-article (buffer in-state)
(cond
(gnus-uu-save-separate-articles
(save-excursion
(set-buffer buffer)
(with-current-buffer buffer
(let ((coding-system-for-write mm-text-coding-system))
(gnus-write-buffer
(concat gnus-uu-saved-article-name gnus-current-article)))
@ -838,8 +837,7 @@ When called interactively, prompt for REGEXP."
((eq in-state 'last) (list 'end))
(t (list 'middle)))))
((not gnus-uu-save-in-digest)
(save-excursion
(set-buffer buffer)
(with-current-buffer buffer
(write-region (point-min) (point-max) gnus-uu-saved-article-name t)
(cond ((eq in-state 'first) (list gnus-uu-saved-article-name 'begin))
((eq in-state 'first-and-last) (list gnus-uu-saved-article-name
@ -857,11 +855,9 @@ When called interactively, prompt for REGEXP."
(eq in-state 'first-and-last))
(progn
(setq state (list 'begin))
(save-excursion
(set-buffer (gnus-get-buffer-create "*gnus-uu-body*"))
(with-current-buffer (gnus-get-buffer-create "*gnus-uu-body*")
(erase-buffer))
(save-excursion
(set-buffer (gnus-get-buffer-create "*gnus-uu-pre*"))
(with-current-buffer (gnus-get-buffer-create "*gnus-uu-pre*")
(erase-buffer)
(insert (format
"Date: %s\nFrom: %s\nSubject: %s Digest\n\n"
@ -873,8 +869,7 @@ When called interactively, prompt for REGEXP."
(insert "Topics:\n")))
(when (not (eq in-state 'end))
(setq state (list 'middle))))
(save-excursion
(set-buffer "*gnus-uu-body*")
(with-current-buffer "*gnus-uu-body*"
(goto-char (setq beg (point-max)))
(save-excursion
(save-restriction
@ -940,8 +935,7 @@ When called interactively, prompt for REGEXP."
(when (re-search-forward "^Subject: \\(.*\\)$" nil t)
(setq subj (buffer-substring (match-beginning 1) (match-end 1))))
(when subj
(save-excursion
(set-buffer "*gnus-uu-pre*")
(with-current-buffer "*gnus-uu-pre*"
(insert (format " %s\n" subj)))))
(when (or (eq in-state 'last)
(eq in-state 'first-and-last))
@ -951,8 +945,7 @@ When called interactively, prompt for REGEXP."
(insert-buffer-substring "*gnus-uu-pre*")
(goto-char (point-max))
(insert-buffer-substring "*gnus-uu-body*"))
(save-excursion
(set-buffer "*gnus-uu-pre*")
(with-current-buffer "*gnus-uu-pre*"
(insert (format "\n\n%s\n\n" (make-string 70 ?-)))
(if gnus-uu-digest-buffer
(with-current-buffer gnus-uu-digest-buffer
@ -960,8 +953,7 @@ When called interactively, prompt for REGEXP."
(insert-buffer-substring "*gnus-uu-pre*"))
(let ((coding-system-for-write mm-text-coding-system))
(gnus-write-buffer gnus-uu-saved-article-name))))
(save-excursion
(set-buffer "*gnus-uu-body*")
(with-current-buffer "*gnus-uu-body*"
(goto-char (point-max))
(insert
(concat (setq end-string (format "End of %s Digest" name))
@ -993,8 +985,7 @@ When called interactively, prompt for REGEXP."
(defun gnus-uu-binhex-article (buffer in-state)
(let (state start-char)
(save-excursion
(set-buffer buffer)
(with-current-buffer buffer
(widen)
(goto-char (point-min))
(when (not (re-search-forward gnus-uu-binhex-begin-line nil t))
@ -1030,8 +1021,7 @@ When called interactively, prompt for REGEXP."
;; yEnc
(defun gnus-uu-yenc-article (buffer in-state)
(save-excursion
(set-buffer gnus-original-article-buffer)
(with-current-buffer gnus-original-article-buffer
(widen)
(let ((file-name (yenc-extract-filename))
state start-char)
@ -1065,8 +1055,7 @@ When called interactively, prompt for REGEXP."
(defun gnus-uu-decode-postscript-article (process-buffer in-state)
(let ((state (list 'ok))
start-char end-char file-name)
(save-excursion
(set-buffer process-buffer)
(with-current-buffer process-buffer
(goto-char (point-min))
(if (not (re-search-forward gnus-uu-postscript-begin-string nil t))
(setq state (list 'wrong-type))
@ -1128,8 +1117,7 @@ When called interactively, prompt for REGEXP."
;; replaces the last thing that looks like "2/3" with "[0-9]+/3"
;; or, if it can't find something like that, tries "2 of 3", then
;; finally just replaces the next to last number with "[0-9]+".
(save-excursion
(set-buffer (gnus-get-buffer-create gnus-uu-output-buffer-name))
(with-current-buffer (gnus-get-buffer-create gnus-uu-output-buffer-name)
(buffer-disable-undo)
(erase-buffer)
(insert (regexp-quote string))
@ -1228,8 +1216,7 @@ When called interactively, prompt for REGEXP."
;; decoded in. Returns the list of expanded strings.
(let ((out-list string-list)
string)
(save-excursion
(set-buffer (gnus-get-buffer-create gnus-uu-output-buffer-name))
(with-current-buffer (gnus-get-buffer-create gnus-uu-output-buffer-name)
(buffer-disable-undo)
(while string-list
(erase-buffer)
@ -1332,11 +1319,9 @@ When called interactively, prompt for REGEXP."
(gnus-summary-display-article article)
;; Push the article to the processing function.
(save-excursion
(set-buffer gnus-original-article-buffer)
(with-current-buffer gnus-original-article-buffer
(let ((buffer-read-only nil))
(save-excursion
(set-buffer gnus-summary-buffer)
(with-current-buffer gnus-summary-buffer
(setq process-state
(funcall process-function
gnus-original-article-buffer state)))))
@ -1477,8 +1462,7 @@ When called interactively, prompt for REGEXP."
(defun gnus-uu-uustrip-article (process-buffer in-state)
;; Uudecodes a file asynchronously.
(save-excursion
(set-buffer process-buffer)
(with-current-buffer process-buffer
(let ((state (list 'wrong-type))
process-connection-type case-fold-search buffer-read-only
files start-char)
@ -1600,8 +1584,7 @@ Gnus might fail to display all of it.")
(defun gnus-uu-unshar-article (process-buffer in-state)
(let ((state (list 'ok))
start-char)
(save-excursion
(set-buffer process-buffer)
(with-current-buffer process-buffer
(goto-char (point-min))
(if (not (re-search-forward gnus-uu-shar-begin-string nil t))
(setq state (list 'wrong-type))
@ -1688,8 +1671,7 @@ Gnus might fail to display all of it.")
(setq command (format "cd %s ; %s" dir (gnus-uu-command action file-path)))
(save-excursion
(set-buffer (gnus-get-buffer-create gnus-uu-output-buffer-name))
(with-current-buffer (gnus-get-buffer-create gnus-uu-output-buffer-name)
(erase-buffer))
(gnus-message 5 "Unpacking: %s..." (gnus-uu-command action file-path))
@ -2039,9 +2021,8 @@ If no file has been included, the user will be asked for a file."
(setq file-name file-path))
(unwind-protect
(if (save-excursion
(set-buffer (setq uubuf
(gnus-get-buffer-create uuencode-buffer-name)))
(if (with-current-buffer
(setq uubuf (gnus-get-buffer-create uuencode-buffer-name))
(erase-buffer)
(funcall gnus-uu-post-encode-method file-path file-name))
(insert-buffer-substring uubuf)
@ -2073,8 +2054,8 @@ If no file has been included, the user will be asked for a file."
(setq beg-binary (point))
(setq end-binary (point-max))
(save-excursion
(set-buffer (setq uubuf (gnus-get-buffer-create encoded-buffer-name)))
(with-current-buffer
(setq uubuf (gnus-get-buffer-create encoded-buffer-name))
(erase-buffer)
(insert-buffer-substring post-buf beg-binary end-binary)
(goto-char (point-min))
@ -2129,8 +2110,7 @@ If no file has been included, the user will be asked for a file."
(insert (format " (%d/%d)" i parts)))
(goto-char (point-max))
(save-excursion
(set-buffer uubuf)
(with-current-buffer uubuf
(goto-char beg)
(if (= i parts)
(goto-char (point-max))

View file

@ -2743,6 +2743,8 @@ a string, be sure to use a valid format, see RFC 2616."
'((seen range)
(killed range)
(bookmark tuple)
(uid tuple)
(active tuple)
(score tuple)))
;; Propagate flags to server, with the following exceptions:

View file

@ -114,6 +114,7 @@
"Render of HTML contents.
It is one of defined renderer types, or a rendering function.
The defined renderer types are:
`gnus-article-html' : use Gnus renderer based on w3m;
`w3m' : use emacs-w3m;
`w3m-standalone': use w3m;
`links': use links;
@ -122,8 +123,9 @@ The defined renderer types are:
`html2text' : use html2text;
nil : use external viewer (default web browser)."
:version "24.1"
:type '(choice (const w3)
(const w3m :tag "emacs-w3m")
:type '(choice (const gnus-article-html)
(const w3)
(const w3m :tag "emacs-w3m")
(const w3m-standalone :tag "standalone w3m" )
(const links)
(const lynx)

View file

@ -70,8 +70,7 @@ If NO-DISPLAY is nil, display it. Otherwise, do nothing after replacing."
(sort (cons handle
(mm-partial-find-parts
id
(save-excursion
(set-buffer gnus-summary-buffer)
(with-current-buffer gnus-summary-buffer
(gnus-summary-article-number))))
#'(lambda (a b)
(let ((anumber (string-to-number
@ -83,8 +82,7 @@ If NO-DISPLAY is nil, display it. Otherwise, do nothing after replacing."
(< anumber bnumber)))))
(setq gnus-article-mime-handles
(mm-merge-handles gnus-article-mime-handles phandles))
(save-excursion
(set-buffer (generate-new-buffer " *mm*"))
(with-current-buffer (generate-new-buffer " *mm*")
(while (setq phandle (pop phandles))
(setq nn (string-to-number
(cdr (assq 'number

View file

@ -252,6 +252,9 @@
(nnoo-parent-function 'nnagent 'nnml-request-regenerate
(list (nnagent-server server))))
(deffoo nnagent-retrieve-group-data-early (server infos)
nil)
;; Use nnml functions for just about everything.
(nnoo-import nnagent
(nnml))

View file

@ -75,8 +75,7 @@
(nnoo-define-basics nnbabyl)
(deffoo nnbabyl-retrieve-headers (articles &optional group server fetch-old)
(save-excursion
(set-buffer nntp-server-buffer)
(with-current-buffer nntp-server-buffer
(erase-buffer)
(let ((number (length articles))
(count 0)
@ -136,8 +135,7 @@
;; Restore buffer mode.
(when (and (nnbabyl-server-opened)
nnbabyl-previous-buffer-mode)
(save-excursion
(set-buffer nnbabyl-mbox-buffer)
(with-current-buffer nnbabyl-mbox-buffer
(narrow-to-region
(caar nnbabyl-previous-buffer-mode)
(cdar nnbabyl-previous-buffer-mode))
@ -155,8 +153,7 @@
(deffoo nnbabyl-request-article (article &optional newsgroup server buffer)
(nnbabyl-possibly-change-newsgroup newsgroup server)
(save-excursion
(set-buffer nnbabyl-mbox-buffer)
(with-current-buffer nnbabyl-mbox-buffer
(goto-char (point-min))
(when (search-forward (nnbabyl-article-string article) nil t)
(let (start stop summary-line)
@ -216,8 +213,7 @@
(nnmail-get-new-mail
'nnbabyl
(lambda ()
(save-excursion
(set-buffer nnbabyl-mbox-buffer)
(with-current-buffer nnbabyl-mbox-buffer
(save-buffer)))
(file-name-directory nnbabyl-mbox-file)
group
@ -264,8 +260,7 @@
rest)
(nnmail-activate 'nnbabyl)
(save-excursion
(set-buffer nnbabyl-mbox-buffer)
(with-current-buffer nnbabyl-mbox-buffer
(set-text-properties (point-min) (point-max) nil)
(while (and articles is-old)
(goto-char (point-min))
@ -308,8 +303,7 @@
result)
(and
(nnbabyl-request-article article group server)
(save-excursion
(set-buffer buf)
(with-current-buffer buf
(insert-buffer-substring nntp-server-buffer)
(goto-char (point-min))
(while (re-search-forward
@ -373,8 +367,7 @@
(deffoo nnbabyl-request-replace-article (article group buffer)
(nnbabyl-possibly-change-newsgroup group)
(save-excursion
(set-buffer nnbabyl-mbox-buffer)
(with-current-buffer nnbabyl-mbox-buffer
(goto-char (point-min))
(if (not (search-forward (nnbabyl-article-string article) nil t))
nil
@ -388,8 +381,7 @@
;; Delete all articles in GROUP.
(if (not force)
() ; Don't delete the articles.
(save-excursion
(set-buffer nnbabyl-mbox-buffer)
(with-current-buffer nnbabyl-mbox-buffer
(goto-char (point-min))
;; Delete all articles in this group.
(let ((ident (concat "\nX-Gnus-Newsgroup: " nnbabyl-current-group ":"))
@ -409,8 +401,7 @@
(deffoo nnbabyl-request-rename-group (group new-name &optional server)
(nnbabyl-possibly-change-newsgroup group server)
(save-excursion
(set-buffer nnbabyl-mbox-buffer)
(with-current-buffer nnbabyl-mbox-buffer
(goto-char (point-min))
(let ((ident (concat "\nX-Gnus-Newsgroup: " nnbabyl-current-group ":"))
(new-ident (concat "\nX-Gnus-Newsgroup: " new-name ":"))
@ -558,9 +549,8 @@
(defun nnbabyl-create-mbox ()
(unless (file-exists-p nnbabyl-mbox-file)
;; Create a new, empty RMAIL mbox file.
(save-excursion
(set-buffer (setq nnbabyl-mbox-buffer
(create-file-buffer nnbabyl-mbox-file)))
(with-current-buffer (setq nnbabyl-mbox-buffer
(create-file-buffer nnbabyl-mbox-file))
(setq buffer-file-name nnbabyl-mbox-file)
(insert "BABYL OPTIONS:\n\n\^_")
(nnmail-write-region
@ -572,8 +562,7 @@
(unless (and nnbabyl-mbox-buffer
(buffer-name nnbabyl-mbox-buffer)
(save-excursion
(set-buffer nnbabyl-mbox-buffer)
(with-current-buffer nnbabyl-mbox-buffer
(= (buffer-size) (nnheader-file-size nnbabyl-mbox-file))))
;; This buffer has changed since we read it last. Possibly.
(save-excursion

View file

@ -380,8 +380,7 @@ all. This may very well take some time.")
(deffoo nndiary-retrieve-headers (sequence &optional group server fetch-old)
(when (nndiary-possibly-change-directory group server)
(save-excursion
(set-buffer nntp-server-buffer)
(with-current-buffer nntp-server-buffer
(erase-buffer)
(let* ((file nil)
(number (length sequence))
@ -615,8 +614,7 @@ all. This may very well take some time.")
(let (nndiary-current-directory
nndiary-current-group
nndiary-article-file-alist)
(save-excursion
(set-buffer buf)
(with-current-buffer buf
(insert-buffer-substring nntp-server-buffer)
(setq result (eval accept-form))
(kill-buffer (current-buffer))
@ -672,8 +670,7 @@ all. This may very well take some time.")
(deffoo nndiary-request-replace-article (article group buffer)
(nndiary-possibly-change-directory group)
(save-excursion
(set-buffer buffer)
(with-current-buffer buffer
(nndiary-possibly-create-directory group)
(let ((chars (nnmail-insert-lines))
(art (concat (int-to-string article) "\t"))
@ -688,8 +685,7 @@ all. This may very well take some time.")
t)
(setq headers (nndiary-parse-head chars article))
;; Replace the NOV line in the NOV file.
(save-excursion
(set-buffer (nndiary-open-nov group))
(with-current-buffer (nndiary-open-nov group)
(goto-char (point-min))
(if (or (looking-at art)
(search-forward (concat "\n" art) nil t))
@ -842,8 +838,7 @@ all. This may very well take some time.")
;; Find an article number in the current group given the Message-ID.
(defun nndiary-find-group-number (id)
(save-excursion
(set-buffer (get-buffer-create " *nndiary id*"))
(with-current-buffer (get-buffer-create " *nndiary id*")
(let ((alist nndiary-group-alist)
number)
;; We want to look through all .overview files, but we want to
@ -888,8 +883,7 @@ all. This may very well take some time.")
(let ((nov (expand-file-name nndiary-nov-file-name
nndiary-current-directory)))
(when (file-exists-p nov)
(save-excursion
(set-buffer nntp-server-buffer)
(with-current-buffer nntp-server-buffer
(erase-buffer)
(nnheader-insert-file-contents nov)
(if (and fetch-old
@ -989,8 +983,7 @@ all. This may very well take some time.")
(defun nndiary-add-nov (group article headers)
"Add a nov line for the GROUP base."
(save-excursion
(set-buffer (nndiary-open-nov group))
(with-current-buffer (nndiary-open-nov group)
(goto-char (point-max))
(mail-header-set-number headers article)
(nnheader-insert-nov headers)))
@ -1015,8 +1008,7 @@ all. This may very well take some time.")
(or (cdr (assoc group nndiary-nov-buffer-alist))
(let ((buffer (get-buffer-create (format " *nndiary overview %s*"
group))))
(save-excursion
(set-buffer buffer)
(with-current-buffer buffer
(set (make-local-variable 'nndiary-nov-buffer-file-name)
(expand-file-name
nndiary-nov-file-name
@ -1103,9 +1095,8 @@ all. This may very well take some time.")
(nov (concat dir nndiary-nov-file-name))
(nov-buffer (get-buffer-create " *nov*"))
chars file headers)
(save-excursion
;; Init the nov buffer.
(set-buffer nov-buffer)
;; Init the nov buffer.
(with-current-buffer nov-buffer
(buffer-disable-undo)
(erase-buffer)
(set-buffer nntp-server-buffer)
@ -1125,20 +1116,17 @@ all. This may very well take some time.")
(unless (zerop (buffer-size))
(goto-char (point-min))
(setq headers (nndiary-parse-head chars (caar files)))
(save-excursion
(set-buffer nov-buffer)
(with-current-buffer nov-buffer
(goto-char (point-max))
(nnheader-insert-nov headers)))
(widen))
(setq files (cdr files)))
(save-excursion
(set-buffer nov-buffer)
(with-current-buffer nov-buffer
(nnmail-write-region 1 (point-max) nov nil 'nomesg)
(kill-buffer (current-buffer))))))
(defun nndiary-nov-delete-article (group article)
(save-excursion
(set-buffer (nndiary-open-nov group))
(with-current-buffer (nndiary-open-nov group)
(when (nnheader-find-nov-line article)
(delete-region (point) (progn (forward-line 1) (point)))
(when (bobp)

View file

@ -215,8 +215,7 @@ from the document.")
(deffoo nndoc-retrieve-headers (articles &optional newsgroup server fetch-old)
(when (nndoc-possibly-change-buffer newsgroup server)
(save-excursion
(set-buffer nntp-server-buffer)
(with-current-buffer nntp-server-buffer
(erase-buffer)
(let (article entry)
(if (stringp (car articles))
@ -333,8 +332,7 @@ from the document.")
(concat " *nndoc " group "*"))))
nndoc-group-alist)
(setq nndoc-dissection-alist nil)
(save-excursion
(set-buffer nndoc-current-buffer)
(with-current-buffer nndoc-current-buffer
(erase-buffer)
(if (and (stringp nndoc-address)
(string-match nndoc-binary-file-names nndoc-address))
@ -347,8 +345,7 @@ from the document.")
;; Initialize the nndoc structures according to this new document.
(when (and nndoc-current-buffer
(not nndoc-dissection-alist))
(save-excursion
(set-buffer nndoc-current-buffer)
(with-current-buffer nndoc-current-buffer
(nndoc-set-delims)
(if (eq nndoc-article-type 'mime-parts)
(nndoc-dissect-mime-parts)
@ -588,8 +585,7 @@ from the document.")
(defun nndoc-generate-clari-briefs-head (article)
(let ((entry (cdr (assq article nndoc-dissection-alist)))
subject from)
(save-excursion
(set-buffer nndoc-current-buffer)
(with-current-buffer nndoc-current-buffer
(save-restriction
(narrow-to-region (car entry) (nth 3 entry))
(goto-char (point-min))
@ -677,8 +673,7 @@ from the document.")
(let ((entry (cdr (assq article nndoc-dissection-alist)))
(from "<no address given>")
subject date)
(save-excursion
(set-buffer nndoc-current-buffer)
(with-current-buffer nndoc-current-buffer
(save-restriction
(narrow-to-region (car entry) (nth 1 entry))
(goto-char (point-min))
@ -829,8 +824,7 @@ from the document.")
(first t)
art-begin head-begin head-end body-begin body-end)
(setq nndoc-dissection-alist nil)
(save-excursion
(set-buffer nndoc-current-buffer)
(with-current-buffer nndoc-current-buffer
(goto-char (point-min))
;; Remove blank lines.
(while (eq (following-char) ?\n)
@ -902,8 +896,7 @@ When a MIME entity contains sub-entities, dissection produces one article for
the header of this entity, and one article per sub-entity."
(setq nndoc-dissection-alist nil
nndoc-mime-split-ordinal 0)
(save-excursion
(set-buffer nndoc-current-buffer)
(with-current-buffer nndoc-current-buffer
(nndoc-dissect-mime-parts-sub (point-min) (point-max) nil nil nil)))
(defun nndoc-dissect-mime-parts-sub (head-begin body-end article-insert

View file

@ -77,8 +77,7 @@ are generated if and only if they are also in `message-draft-headers'.")
(deffoo nndraft-retrieve-headers (articles &optional group server fetch-old)
(nndraft-possibly-change-group group)
(save-excursion
(set-buffer nntp-server-buffer)
(with-current-buffer nntp-server-buffer
(erase-buffer)
(let* (article)
;; We don't support fetching by Message-ID.
@ -119,8 +118,7 @@ are generated if and only if they are also in `message-draft-headers'.")
mm-text-coding-system)
mm-auto-save-coding-system)))
(nnmail-find-file newest)))
(save-excursion
(set-buffer nntp-server-buffer)
(with-current-buffer nntp-server-buffer
(goto-char (point-min))
;; If there's a mail header separator in this file,
;; we remove it.
@ -209,8 +207,7 @@ are generated if and only if they are also in `message-draft-headers'.")
result)
(and
(nndraft-request-article article group server)
(save-excursion
(set-buffer buf)
(with-current-buffer buf
(erase-buffer)
(insert-buffer-substring nntp-server-buffer)
(setq result (eval accept-form))

View file

@ -81,8 +81,7 @@ included.")
(deffoo nneething-retrieve-headers (articles &optional group server fetch-old)
(nneething-possibly-change-directory group)
(save-excursion
(set-buffer nntp-server-buffer)
(with-current-buffer nntp-server-buffer
(erase-buffer)
(let* ((number (length articles))
(count 0)
@ -323,8 +322,7 @@ included.")
(if (equal '(0 0) (nth 5 atts)) ""
(concat "Date: " (current-time-string (nth 5 atts)) "\n"))
(or (when buffer
(save-excursion
(set-buffer buffer)
(with-current-buffer buffer
(when (re-search-forward "<[a-zA-Z0-9_]@[-a-zA-Z0-9_]>" 1000 t)
(concat "From: " (match-string 0) "\n"))))
(nneething-from-line (nth 2 atts) file))
@ -332,8 +330,7 @@ included.")
(concat "Chars: " (int-to-string (nth 7 atts)) "\n")
"")
(if buffer
(save-excursion
(set-buffer buffer)
(with-current-buffer buffer
(concat "Lines: " (int-to-string
(count-lines (point-min) (point-max)))
"\n"))
@ -382,8 +379,7 @@ included.")
(defun nneething-get-head (file)
"Either find the head in FILE or make a head for FILE."
(save-excursion
(set-buffer (get-buffer-create nneething-work-buffer))
(with-current-buffer (get-buffer-create nneething-work-buffer)
(setq case-fold-search nil)
(buffer-disable-undo)
(erase-buffer)

View file

@ -157,8 +157,7 @@ the group. Then the marks file will be regenerated properly by Gnus.")
(nnoo-define-basics nnfolder)
(deffoo nnfolder-retrieve-headers (articles &optional group server fetch-old)
(save-excursion
(set-buffer nntp-server-buffer)
(with-current-buffer nntp-server-buffer
(erase-buffer)
(let (article start stop num)
(nnfolder-possibly-change-group group server)
@ -261,8 +260,7 @@ the group. Then the marks file will be regenerated properly by Gnus.")
(deffoo nnfolder-request-article (article &optional group server buffer)
(nnfolder-possibly-change-group group server)
(save-excursion
(set-buffer nnfolder-current-buffer)
(with-current-buffer nnfolder-current-buffer
(goto-char (point-min))
(when (nnfolder-goto-article article)
(let (start stop)
@ -360,8 +358,7 @@ the group. Then the marks file will be regenerated properly by Gnus.")
nnfolder-current-group (car inf))))
(when (and nnfolder-current-buffer
(buffer-name nnfolder-current-buffer))
(save-excursion
(set-buffer nnfolder-current-buffer)
(with-current-buffer nnfolder-current-buffer
;; If the buffer was modified, write the file out now.
(nnfolder-save-buffer)
;; If we're shutting the server down, we need to kill the
@ -447,8 +444,7 @@ the group. Then the marks file will be regenerated properly by Gnus.")
target)
(nnmail-activate 'nnfolder)
(save-excursion
(set-buffer nnfolder-current-buffer)
(with-current-buffer nnfolder-current-buffer
;; Since messages are sorted in arrival order and expired in the
;; same order, we can stop as soon as we find a message that is
;; too old.
@ -501,8 +497,7 @@ the group. Then the marks file will be regenerated properly by Gnus.")
result)
(and
(nnfolder-request-article article group server)
(save-excursion
(set-buffer buf)
(with-current-buffer buf
(erase-buffer)
(insert-buffer-substring nntp-server-buffer)
(goto-char (point-min))
@ -578,8 +573,7 @@ the group. Then the marks file will be regenerated properly by Gnus.")
(deffoo nnfolder-request-replace-article (article group buffer)
(nnfolder-possibly-change-group group)
(save-excursion
(set-buffer buffer)
(with-current-buffer buffer
(goto-char (point-min))
(if (not (looking-at "X-From-Line: "))
(insert "From nobody " (current-time-string) "\n")
@ -596,8 +590,7 @@ the group. Then the marks file will be regenerated properly by Gnus.")
(nnfolder-delete-mail)
(insert-buffer-substring buffer)
(unless (or gnus-nov-is-evil nnfolder-nov-is-evil)
(save-excursion
(set-buffer buffer)
(with-current-buffer buffer
(let ((headers (nnfolder-parse-head article
(point-min) (point-max))))
(with-current-buffer (nnfolder-open-nov group)
@ -630,8 +623,7 @@ the group. Then the marks file will be regenerated properly by Gnus.")
(deffoo nnfolder-request-rename-group (group new-name &optional server)
(nnfolder-possibly-change-group group server)
(save-excursion
(set-buffer nnfolder-current-buffer)
(with-current-buffer nnfolder-current-buffer
(and (file-writable-p buffer-file-name)
(ignore-errors
(let ((new-file (nnfolder-group-pathname new-name)))
@ -671,8 +663,7 @@ the group. Then the marks file will be regenerated properly by Gnus.")
(marker (concat "\n" nnfolder-article-marker))
(number "[0-9]+")
(activemin (cdr active)))
(save-excursion
(set-buffer nnfolder-current-buffer)
(with-current-buffer nnfolder-current-buffer
(goto-char (point-min))
(while (and (search-forward marker nil t)
(re-search-forward number nil t))
@ -1114,8 +1105,7 @@ This command does not work if you use short group names."
(defun nnfolder-open-nov (group)
(or (cdr (assoc group nnfolder-nov-buffer-alist))
(let ((buffer (get-buffer-create (format " *nnfolder overview %s*" group))))
(save-excursion
(set-buffer buffer)
(with-current-buffer buffer
(set (make-local-variable 'nnfolder-nov-buffer-file-name)
(nnfolder-group-nov-pathname group))
(erase-buffer)
@ -1139,8 +1129,7 @@ This command does not work if you use short group names."
(setq nnfolder-nov-buffer-alist (cdr nnfolder-nov-buffer-alist)))))
(defun nnfolder-nov-delete-article (group article)
(save-excursion
(set-buffer (nnfolder-open-nov group))
(with-current-buffer (nnfolder-open-nov group)
(when (nnheader-find-nov-line article)
(delete-region (point) (progn (forward-line 1) (point))))
t))
@ -1150,8 +1139,7 @@ This command does not work if you use short group names."
nil
(let ((nov (nnfolder-group-nov-pathname nnfolder-current-group)))
(when (file-exists-p nov)
(save-excursion
(set-buffer nntp-server-buffer)
(with-current-buffer nntp-server-buffer
(erase-buffer)
(nnheader-insert-file-contents nov)
(if (and fetch-old
@ -1187,8 +1175,7 @@ This command does not work if you use short group names."
(defun nnfolder-add-nov (group article headers)
"Add a nov line for the GROUP base."
(save-excursion
(set-buffer (nnfolder-open-nov group))
(with-current-buffer (nnfolder-open-nov group)
(goto-char (point-max))
(mail-header-set-number headers article)
(nnheader-insert-nov headers)))

View file

@ -835,8 +835,7 @@ The first string in ARGS can be a format string."
"Clear the communication buffer and insert FORMAT and ARGS into the buffer.
If FORMAT isn't a format string, it and all ARGS will be inserted
without formatting."
(save-excursion
(set-buffer nntp-server-buffer)
(with-current-buffer nntp-server-buffer
(erase-buffer)
(if (string-match "%" format)
(insert (apply 'format format args))

File diff suppressed because it is too large Load diff

View file

@ -744,8 +744,7 @@ and show thread that contains this article."
nnir-artlist
;; Cache miss.
(setq nnir-artlist (nnir-run-query group)))
(save-excursion
(set-buffer nntp-server-buffer)
(with-current-buffer nntp-server-buffer
(if (zerop (length nnir-artlist))
(progn
(setq nnir-current-query nil

View file

@ -614,6 +614,7 @@ using different case (i.e. mailing-list@domain vs Mailing-List@Domain)."
(defvar nnmail-split-tracing nil)
(defvar nnmail-split-trace nil)
(defvar nnmail-inhibit-default-split-group nil)
@ -674,8 +675,7 @@ using different case (i.e. mailing-list@domain vs Mailing-List@Domain)."
"Returns an assoc of group names and active ranges.
nn*-request-list should have been called before calling this function."
;; Go through all groups from the active list.
(save-excursion
(set-buffer nntp-server-buffer)
(with-current-buffer nntp-server-buffer
(nnmail-parse-active)))
(defun nnmail-parse-active ()
@ -1058,7 +1058,9 @@ If SOURCE is a directory spec, try to return the group name component."
(defun nnmail-split-incoming (incoming func &optional exit-func
group artnum-func)
"Go through the entire INCOMING file and pick out each individual mail.
FUNC will be called with the buffer narrowed to each mail."
FUNC will be called with the buffer narrowed to each mail.
INCOMING can also be a buffer object. In that case, the mail
will be copied over from that buffer."
(let ( ;; If this is a group-specific split, we bind the split
;; methods to just this group.
(nnmail-split-methods (if (and group
@ -1066,12 +1068,13 @@ FUNC will be called with the buffer narrowed to each mail."
(list (list group ""))
nnmail-split-methods))
(nnmail-group-names-not-encoded-p t))
(save-excursion
;; Insert the incoming file.
(set-buffer (get-buffer-create nnmail-article-buffer))
;; Insert the incoming file.
(with-current-buffer (get-buffer-create nnmail-article-buffer)
(erase-buffer)
(let ((coding-system-for-read nnmail-incoming-coding-system))
(mm-insert-file-contents incoming))
(if (bufferp incoming)
(insert-buffer-substring incoming)
(let ((coding-system-for-read nnmail-incoming-coding-system))
(mm-insert-file-contents incoming)))
(prog1
(if (zerop (buffer-size))
0
@ -1100,15 +1103,15 @@ FUNC will be called with the group name to determine the article number."
(obuf (current-buffer))
group-art method grp)
(if (and (sequencep methods)
(= (length methods) 1))
(= (length methods) 1)
(not nnmail-inhibit-default-split-group))
;; If there is only just one group to put everything in, we
;; just return a list with just this one method in.
(setq group-art
(list (cons (caar methods) (funcall func (caar methods)))))
;; We do actual comparison.
(save-excursion
;; Copy the article into the work buffer.
(set-buffer nntp-server-buffer)
;; Copy the article into the work buffer.
(with-current-buffer nntp-server-buffer
(erase-buffer)
(insert-buffer-substring obuf)
;; Narrow to headers.
@ -1149,7 +1152,8 @@ FUNC will be called with the group name to determine the article number."
;; just call this function here and use the
;; result.
(or (funcall nnmail-split-methods)
'("bogus"))
(and (not nnmail-inhibit-default-split-group)
'("bogus")))
(error
(nnheader-message
5 "Error in `nnmail-split-methods'; using `bogus' mail group: %S" error-info)
@ -1194,12 +1198,14 @@ FUNC will be called with the group name to determine the article number."
group-art))
;; This is the final group, which is used as a
;; catch-all.
(unless group-art
(when (and (not group-art)
(not nnmail-inhibit-default-split-group))
(setq group-art
(list (cons (car method)
(funcall func (car method))))))))
;; Fall back on "bogus" if all else fails.
(unless group-art
(when (and (not group-art)
(not nnmail-inhibit-default-split-group))
(setq group-art (list (cons "bogus" (funcall func "bogus"))))))
;; Produce a trace if non-empty.
(when (and trace nnmail-split-trace)
@ -1572,10 +1578,9 @@ See the documentation for the variable `nnmail-split-fancy' for details."
(and nnmail-cache-buffer
(buffer-name nnmail-cache-buffer)))
() ; The buffer is open.
(save-excursion
(set-buffer
(with-current-buffer
(setq nnmail-cache-buffer
(get-buffer-create " *nnmail message-id cache*")))
(get-buffer-create " *nnmail message-id cache*"))
(gnus-add-buffer)
(when (file-exists-p nnmail-message-id-cache-file)
(nnheader-insert-file-contents nnmail-message-id-cache-file))
@ -1587,8 +1592,7 @@ See the documentation for the variable `nnmail-split-fancy' for details."
nnmail-treat-duplicates
(buffer-name nnmail-cache-buffer)
(buffer-modified-p nnmail-cache-buffer))
(save-excursion
(set-buffer nnmail-cache-buffer)
(with-current-buffer nnmail-cache-buffer
;; Weed out the excess number of Message-IDs.
(goto-char (point-max))
(when (search-backward "\n" nil t nnmail-message-id-cache-length)
@ -1623,8 +1627,7 @@ See the documentation for the variable `nnmail-split-fancy' for details."
;; pass the first (of possibly >1) group which matches. -Josh
(unless (gnus-buffer-live-p nnmail-cache-buffer)
(nnmail-cache-open))
(save-excursion
(set-buffer nnmail-cache-buffer)
(with-current-buffer nnmail-cache-buffer
(goto-char (point-max))
(if (and grp (not (string= "" grp))
(gnus-methods-equal-p gnus-command-method
@ -1657,8 +1660,7 @@ See the documentation for the variable `nnmail-split-fancy' for details."
;; cache.
(defun nnmail-cache-fetch-group (id)
(when (and nnmail-treat-duplicates nnmail-cache-buffer)
(save-excursion
(set-buffer nnmail-cache-buffer)
(with-current-buffer nnmail-cache-buffer
(goto-char (point-max))
(when (search-backward id nil t)
(beginning-of-line)
@ -1702,8 +1704,7 @@ See the Info node `(gnus)Fancy Mail Splitting' for more details."
(defun nnmail-cache-id-exists-p (id)
(when nnmail-treat-duplicates
(save-excursion
(set-buffer nnmail-cache-buffer)
(with-current-buffer nnmail-cache-buffer
(goto-char (point-max))
(search-backward id nil t))))

View file

@ -208,20 +208,16 @@ by nnmaildir-request-article.")
(eval param))
(defmacro nnmaildir--with-nntp-buffer (&rest body)
`(save-excursion
(set-buffer nntp-server-buffer)
`(with-current-buffer nntp-server-buffer
,@body))
(defmacro nnmaildir--with-work-buffer (&rest body)
`(save-excursion
(set-buffer (get-buffer-create " *nnmaildir work*"))
`(with-current-buffer (get-buffer-create " *nnmaildir work*")
,@body))
(defmacro nnmaildir--with-nov-buffer (&rest body)
`(save-excursion
(set-buffer (get-buffer-create " *nnmaildir nov*"))
`(with-current-buffer (get-buffer-create " *nnmaildir nov*")
,@body))
(defmacro nnmaildir--with-move-buffer (&rest body)
`(save-excursion
(set-buffer (get-buffer-create " *nnmaildir move*"))
`(with-current-buffer (get-buffer-create " *nnmaildir move*")
,@body))
(defmacro nnmaildir--subdir (dir subdir)
@ -1249,8 +1245,7 @@ by nnmaildir-request-article.")
(setf (nnmaildir--srv-error nnmaildir--cur-server)
"Article has expired")
(throw 'return nil))
(save-excursion
(set-buffer (or to-buffer nntp-server-buffer))
(with-current-buffer (or to-buffer nntp-server-buffer)
(erase-buffer)
(nnheader-insert-file-contents nnmaildir-article-file-name))
(cons gname num-msgid))))
@ -1289,8 +1284,7 @@ by nnmaildir-request-article.")
(setf (nnmaildir--srv-error nnmaildir--cur-server)
(concat "File exists: " tmpfile))
(throw 'return nil))
(save-excursion
(set-buffer buffer)
(with-current-buffer buffer
(gmm-write-region (point-min) (point-max) tmpfile nil 'no-message nil
'excl))
(unix-sync) ;; no fsync :(

View file

@ -445,8 +445,7 @@ Other back ends might or might not work.")
nil)
((not query)
;; No query -> return empty group
(save-excursion
(set-buffer nntp-server-buffer)
(with-current-buffer nntp-server-buffer
(erase-buffer)
(insert (concat "211 0 1 0 " group))
t))
@ -501,9 +500,9 @@ Other back ends might or might not work.")
(nnmairix-request-group-with-article-number-correction
folder qualgroup)))
((and (= rval 1)
(save-excursion (set-buffer nnmairix-mairix-output-buffer)
(goto-char (point-min))
(looking-at "^Matched 0 messages")))
(with-current-buffer nnmairix-mairix-output-buffer
(goto-char (point-min))
(looking-at "^Matched 0 messages")))
;; No messages found -> return empty group
(nnheader-message 5 "Mairix: No matches found.")
(set-buffer nntp-server-buffer)
@ -584,8 +583,7 @@ Other back ends might or might not work.")
(when server (nnmairix-open-server server))
(if (nnmairix-call-backend "request-list" nnmairix-backend-server)
(let (cpoint cur qualgroup folder)
(save-excursion
(set-buffer nntp-server-buffer)
(with-current-buffer nntp-server-buffer
(goto-char (point-min))
(setq cpoint (point))
(while (re-search-forward nnmairix-group-regexp (point-max) t)
@ -699,8 +697,7 @@ Other back ends might or might not work.")
(when (or (eq nnmairix-propagate-marks-upon-close t)
(and (eq nnmairix-propagate-marks-upon-close 'ask)
(y-or-n-p "Propagate marks to original articles? ")))
(save-excursion
(set-buffer gnus-group-buffer)
(with-current-buffer gnus-group-buffer
(nnmairix-propagate-marks)
;; update mairix group
(gnus-group-jump-to-group qualgroup)
@ -998,8 +995,7 @@ with m:msgid of the current article and enabled threads."
(if server
(if (gnus-buffer-live-p gnus-article-buffer)
(progn
(save-excursion
(set-buffer gnus-article-buffer)
(with-current-buffer gnus-article-buffer
(gnus-summary-toggle-header 1)
(setq mid (message-fetch-field "Message-ID")))
(while (string-match "[<>]" mid)
@ -1021,8 +1017,7 @@ f:current_from."
(if server
(if (gnus-buffer-live-p gnus-article-buffer)
(progn
(save-excursion
(set-buffer gnus-article-buffer)
(with-current-buffer gnus-article-buffer
(gnus-summary-toggle-header 1)
(setq from (cadr (gnus-extract-address-components
(gnus-fetch-field "From"))))
@ -1046,8 +1041,7 @@ before deleting a group on the back end. SERVER specifies nnmairix server."
(when (nnmairix-call-backend
"request-list" nnmairix-backend-server)
(let (cur qualgroup folder)
(save-excursion
(set-buffer nntp-server-buffer)
(with-current-buffer nntp-server-buffer
(goto-char (point-min))
(while (re-search-forward nnmairix-group-regexp (point-max) t)
(setq cur (match-string 0)
@ -1152,8 +1146,7 @@ nnmairix server. Only marks from current session will be set."
(push (list (car ogroup) (list (list number) (nth 1 mid-marks) (nth 2 mid-marks)))
number-cache)))))
;; now we set the marks
(save-excursion
(set-buffer gnus-group-buffer)
(with-current-buffer gnus-group-buffer
(nnheader-message 5 "nnmairix: Propagating marks...")
(dolist (cur number-cache)
(setq method (gnus-find-method-for-group (car cur)))
@ -1272,9 +1265,8 @@ Marks propagation has to be enabled for this to work."
"Call mairix binary with COMMAND, using FOLDER and SEARCHQUERY.
If THREADS is non-nil, enable full threads."
(let ((args (cons (car command) '(nil t nil))))
(save-excursion
(set-buffer
(get-buffer-create nnmairix-mairix-output-buffer))
(with-current-buffer
(get-buffer-create nnmairix-mairix-output-buffer)
(erase-buffer)
(when (> (length command) 1)
(setq args (append args (cdr command))))
@ -1291,9 +1283,8 @@ If THREADS is non-nil, enable full threads."
(defun nnmairix-call-mairix-binary-raw (command query)
"Call mairix binary with COMMAND and QUERY in raw mode."
(let ((args (cons (car command) '(nil t nil))))
(save-excursion
(set-buffer
(get-buffer-create nnmairix-mairix-output-buffer))
(with-current-buffer
(get-buffer-create nnmairix-mairix-output-buffer)
(erase-buffer)
(when (> (length command) 1)
(setq args (append args (cdr command))))
@ -1430,8 +1421,7 @@ MAIRIXGROUP. NUMC contains values for article number correction."
(corr (not (zerop numc)))
(name (buffer-name nntp-server-buffer))
header cur xref)
(save-excursion
(set-buffer buf)
(with-current-buffer buf
(erase-buffer)
(set-buffer nntp-server-buffer)
(goto-char (point-min))
@ -1621,8 +1611,7 @@ search in raw mode."
(let ((server (nth 1 gnus-current-select-method))
mid rval group allgroups)
;; get message id
(save-excursion
(set-buffer gnus-article-buffer)
(with-current-buffer gnus-article-buffer
(gnus-summary-toggle-header 1)
(setq mid (message-fetch-field "Message-ID"))
;; first check the registry (if available)
@ -1678,8 +1667,7 @@ SERVER."
(if (zerop (nnmairix-call-mairix-binary-raw
(split-string nnmairix-mairix-command)
(list (concat "m:" mid))))
(save-excursion
(set-buffer nnmairix-mairix-output-buffer)
(with-current-buffer nnmairix-mairix-output-buffer
(goto-char (point-min))
(while (re-search-forward "^/.*$" nil t)
(push (nnmairix-get-group-from-file-path (match-string 0))

View file

@ -79,8 +79,7 @@
(nnoo-define-basics nnmbox)
(deffoo nnmbox-retrieve-headers (sequence &optional newsgroup server fetch-old)
(save-excursion
(set-buffer nntp-server-buffer)
(with-current-buffer nntp-server-buffer
(erase-buffer)
(let ((number (length sequence))
(count 0)
@ -149,8 +148,7 @@
(deffoo nnmbox-request-article (article &optional newsgroup server buffer)
(nnmbox-possibly-change-newsgroup newsgroup server)
(save-excursion
(set-buffer nnmbox-mbox-buffer)
(with-current-buffer nnmbox-mbox-buffer
(when (nnmbox-find-article article)
(let (start stop)
(re-search-backward (concat "^" message-unix-mail-delimiter) nil t)
@ -208,8 +206,7 @@
(nnmail-get-new-mail
'nnmbox
(lambda ()
(save-excursion
(set-buffer nnmbox-mbox-buffer)
(with-current-buffer nnmbox-mbox-buffer
(nnmbox-save-buffer)))
(file-name-directory nnmbox-mbox-file)
group
@ -253,8 +250,7 @@
rest)
(nnmail-activate 'nnmbox)
(save-excursion
(set-buffer nnmbox-mbox-buffer)
(with-current-buffer nnmbox-mbox-buffer
(while (and articles is-old)
(when (nnmbox-find-article (car articles))
(if (setq is-old
@ -292,8 +288,7 @@
result)
(and
(nnmbox-request-article article group server)
(save-excursion
(set-buffer buf)
(with-current-buffer buf
(erase-buffer)
(insert-buffer-substring nntp-server-buffer)
(goto-char (point-min))
@ -364,8 +359,7 @@
(deffoo nnmbox-request-replace-article (article group buffer)
(nnmbox-possibly-change-newsgroup group)
(save-excursion
(set-buffer nnmbox-mbox-buffer)
(with-current-buffer nnmbox-mbox-buffer
(if (not (nnmbox-find-article article))
nil
(nnmbox-delete-mail t t)
@ -391,8 +385,7 @@
;; Delete all articles in GROUP.
(if (not force)
() ; Don't delete the articles.
(save-excursion
(set-buffer nnmbox-mbox-buffer)
(with-current-buffer nnmbox-mbox-buffer
(goto-char (point-min))
;; Delete all articles in this group.
(let ((ident (concat "\nX-Gnus-Newsgroup: " nnmbox-current-group ":"))
@ -412,8 +405,7 @@
(deffoo nnmbox-request-rename-group (group new-name &optional server)
(nnmbox-possibly-change-newsgroup group server)
(save-excursion
(set-buffer nnmbox-mbox-buffer)
(with-current-buffer nnmbox-mbox-buffer
(goto-char (point-min))
(let ((ident (concat "\nX-Gnus-Newsgroup: " nnmbox-current-group ":"))
(new-ident (concat "\nX-Gnus-Newsgroup: " new-name ":"))
@ -633,8 +625,7 @@
(nnmbox-create-mbox)
(if (and nnmbox-mbox-buffer
(buffer-name nnmbox-mbox-buffer)
(save-excursion
(set-buffer nnmbox-mbox-buffer)
(with-current-buffer nnmbox-mbox-buffer
(= (buffer-size) (nnheader-file-size nnmbox-mbox-file))))
()
(save-excursion

View file

@ -160,8 +160,7 @@ non-nil.")
(deffoo nnml-retrieve-headers (sequence &optional group server fetch-old)
(when (nnml-possibly-change-directory group server)
(save-excursion
(set-buffer nntp-server-buffer)
(with-current-buffer nntp-server-buffer
(erase-buffer)
(let* ((file nil)
(number (length sequence))
@ -405,8 +404,7 @@ non-nil.")
(let (nnml-current-directory
nnml-current-group
nnml-article-file-alist)
(save-excursion
(set-buffer buf)
(with-current-buffer buf
(insert-buffer-substring nntp-server-buffer)
(setq result (eval accept-form))
(kill-buffer (current-buffer))
@ -462,8 +460,7 @@ non-nil.")
(deffoo nnml-request-replace-article (article group buffer)
(nnml-possibly-change-directory group)
(save-excursion
(set-buffer buffer)
(with-current-buffer buffer
(nnml-possibly-create-directory group)
(let ((chars (nnmail-insert-lines))
(art (concat (int-to-string article) "\t"))
@ -478,8 +475,7 @@ non-nil.")
t)
(setq headers (nnml-parse-head chars article))
;; Replace the NOV line in the NOV file.
(save-excursion
(set-buffer (nnml-open-nov group))
(with-current-buffer (nnml-open-nov group)
(goto-char (point-min))
(if (or (looking-at art)
(search-forward (concat "\n" art) nil t))
@ -614,8 +610,7 @@ non-nil.")
;; Find an article number in the current group given the Message-ID.
(defun nnml-find-group-number (id server)
(save-excursion
(set-buffer (get-buffer-create " *nnml id*"))
(with-current-buffer (get-buffer-create " *nnml id*")
(let ((alist nnml-group-alist)
number)
;; We want to look through all .overview files, but we want to
@ -657,8 +652,7 @@ non-nil.")
nil
(let ((nov (expand-file-name nnml-nov-file-name nnml-current-directory)))
(when (file-exists-p nov)
(save-excursion
(set-buffer nntp-server-buffer)
(with-current-buffer nntp-server-buffer
(erase-buffer)
(nnheader-insert-file-contents nov)
(if (and fetch-old
@ -804,16 +798,14 @@ article number. This function is called narrowed to an article."
(defun nnml-add-incremental-nov (group article headers)
"Add a nov line for the GROUP nov headers, incrementally."
(save-excursion
(set-buffer (nnml-open-incremental-nov group))
(with-current-buffer (nnml-open-incremental-nov group)
(goto-char (point-max))
(mail-header-set-number headers article)
(nnheader-insert-nov headers)))
(defun nnml-add-nov (group article headers)
"Add a nov line for the GROUP base."
(save-excursion
(set-buffer (nnml-open-nov group))
(with-current-buffer (nnml-open-nov group)
(goto-char (point-max))
(mail-header-set-number headers article)
(nnheader-insert-nov headers)))
@ -844,8 +836,7 @@ article number. This function is called narrowed to an article."
"")
decoded)))
(file-name-coding-system nnmail-pathname-coding-system))
(save-excursion
(set-buffer buffer)
(with-current-buffer buffer
(set (make-local-variable 'nnml-nov-buffer-file-name)
(nnmail-group-pathname decoded nnml-directory nnml-nov-file-name))
(erase-buffer)
@ -942,9 +933,8 @@ Unless no-active is non-nil, update the active file too."
(nov (concat dir nnml-nov-file-name))
(nov-buffer (get-buffer-create " *nov*"))
chars file headers)
(save-excursion
(with-current-buffer nov-buffer
;; Init the nov buffer.
(set-buffer nov-buffer)
(buffer-disable-undo)
(erase-buffer)
(set-buffer nntp-server-buffer)
@ -964,20 +954,17 @@ Unless no-active is non-nil, update the active file too."
(unless (zerop (buffer-size))
(goto-char (point-min))
(setq headers (nnml-parse-head chars (caar files)))
(save-excursion
(set-buffer nov-buffer)
(with-current-buffer nov-buffer
(goto-char (point-max))
(nnheader-insert-nov headers)))
(widen))
(setq files (cdr files)))
(save-excursion
(set-buffer nov-buffer)
(with-current-buffer nov-buffer
(nnmail-write-region (point-min) (point-max) nov nil 'nomesg)
(kill-buffer (current-buffer))))))
(defun nnml-nov-delete-article (group article)
(save-excursion
(set-buffer (nnml-open-nov group))
(with-current-buffer (nnml-open-nov group)
(when (nnheader-find-nov-line article)
(delete-region (point) (progn (forward-line 1) (point)))
(when (bobp)
@ -1260,8 +1247,7 @@ Use the nov database for the current group if available."
(gnus-info-set-marks info newmarks))
;; 3/ Update the NOV entry for this article:
(unless nnml-nov-is-evil
(save-excursion
(set-buffer (nnml-open-nov group))
(with-current-buffer (nnml-open-nov group)
(when (nnheader-find-nov-line old-number)
;; Replace the article number:
(looking-at old-number-string)

View file

@ -58,8 +58,7 @@
(defun nnnil-request-group (group &optional server fast)
(let (deactivate-mark)
(save-excursion
(set-buffer nntp-server-buffer)
(with-current-buffer nntp-server-buffer
(erase-buffer)
(insert "411 no such news group\n")))
(setq nnnil-status-string "No such group")

View file

@ -109,8 +109,7 @@ there.")
(deffoo nnspool-retrieve-headers (articles &optional group server fetch-old)
"Retrieve the headers of ARTICLES."
(save-excursion
(set-buffer nntp-server-buffer)
(with-current-buffer nntp-server-buffer
(erase-buffer)
(when (nnspool-possibly-change-directory group)
(let* ((number (length articles))
@ -209,8 +208,7 @@ there.")
(nnspool-possibly-change-directory group)
(let ((res (nnspool-request-article id)))
(when res
(save-excursion
(set-buffer nntp-server-buffer)
(with-current-buffer nntp-server-buffer
(goto-char (point-min))
(when (search-forward "\n\n" nil t)
(delete-region (point-min) (point)))
@ -221,8 +219,7 @@ there.")
(nnspool-possibly-change-directory group)
(let ((res (nnspool-request-article id)))
(when res
(save-excursion
(set-buffer nntp-server-buffer)
(with-current-buffer nntp-server-buffer
(goto-char (point-min))
(when (search-forward "\n\n" nil t)
(delete-region (1- (point)) (point-max)))
@ -343,8 +340,7 @@ there.")
;;; Internal functions.
(defun nnspool-inews-sentinel (proc status)
(save-excursion
(set-buffer (process-buffer proc))
(with-current-buffer (process-buffer proc)
(goto-char (point-min))
(if (or (zerop (buffer-size))
(search-forward "spooled" nil t))
@ -367,8 +363,7 @@ there.")
last)
(if (not (file-exists-p nov))
()
(save-excursion
(set-buffer nntp-server-buffer)
(with-current-buffer nntp-server-buffer
(erase-buffer)
(if nnspool-sift-nov-with-sed
(nnspool-sift-nov-with-sed articles nov)

View file

@ -1014,7 +1014,8 @@ command whose response triggered the error."
(unless (assq 'nntp-address defs)
(setq defs (append defs (list (list 'nntp-address server)))))
(nnoo-change-server 'nntp server defs)
(unless connectionless
(if connectionless
t
(or (nntp-find-connection nntp-server-buffer)
(nntp-open-connection nntp-server-buffer)))))

View file

@ -93,8 +93,7 @@ component group will show up when you enter the virtual group.")
(deffoo nnvirtual-retrieve-headers (articles &optional newsgroup
server fetch-old)
(when (nnvirtual-possibly-change-server server)
(save-excursion
(set-buffer nntp-server-buffer)
(with-current-buffer nntp-server-buffer
(erase-buffer)
(if (stringp (car articles))
'headers
@ -170,8 +169,7 @@ component group will show up when you enter the virtual group.")
;; the nntp-server-buffer, which is where Gnus expects to find
;; them.
(prog1
(save-excursion
(set-buffer nntp-server-buffer)
(with-current-buffer nntp-server-buffer
(erase-buffer)
(insert-buffer-substring vbuf)
;; FIX FIX FIX, we should be able to sort faster than
@ -215,8 +213,7 @@ component group will show up when you enter the virtual group.")
(t
(setq nnvirtual-last-accessed-component-group cgroup)
(if buffer
(save-excursion
(set-buffer buffer)
(with-current-buffer buffer
;; We bind this here to avoid double decoding.
(let ((gnus-article-decode-hook nil))
(gnus-request-article-this-buffer (cdr amap) cgroup)))
@ -335,8 +332,7 @@ component group will show up when you enter the virtual group.")
(when (not (numberp (gnus-group-unread g)))
(gnus-activate-group g)))
nnvirtual-component-groups)
(save-excursion
(set-buffer gnus-group-buffer)
(with-current-buffer gnus-group-buffer
(gnus-group-catchup-current nil all)))))

View file

@ -104,8 +104,7 @@ Valid types include `google', `dejanews', and `gmane'.")
(deffoo nnweb-retrieve-headers (articles &optional group server fetch-old)
(nnweb-possibly-change-server group server)
(save-excursion
(set-buffer nntp-server-buffer)
(with-current-buffer nntp-server-buffer
(erase-buffer)
(let (article header)
(mm-with-unibyte-current-buffer
@ -147,16 +146,14 @@ Valid types include `google', `dejanews', and `gmane'.")
(deffoo nnweb-close-group (group &optional server)
(nnweb-possibly-change-server group server)
(when (gnus-buffer-live-p nnweb-buffer)
(save-excursion
(set-buffer nnweb-buffer)
(with-current-buffer nnweb-buffer
(set-buffer-modified-p nil)
(kill-buffer nnweb-buffer)))
t)
(deffoo nnweb-request-article (article &optional group server buffer)
(nnweb-possibly-change-server group server)
(save-excursion
(set-buffer (or buffer nntp-server-buffer))
(with-current-buffer (or buffer nntp-server-buffer)
(let* ((header (cadr (assq article nnweb-articles)))
(url (and header (mail-header-xref header))))
(when (or (and url
@ -185,16 +182,14 @@ Valid types include `google', `dejanews', and `gmane'.")
(deffoo nnweb-close-server (&optional server)
(when (and (nnweb-server-opened server)
(gnus-buffer-live-p nnweb-buffer))
(save-excursion
(set-buffer nnweb-buffer)
(with-current-buffer nnweb-buffer
(set-buffer-modified-p nil)
(kill-buffer nnweb-buffer)))
(nnoo-close-server 'nnweb server))
(deffoo nnweb-request-list (&optional server)
(nnweb-possibly-change-server nil server)
(save-excursion
(set-buffer nntp-server-buffer)
(with-current-buffer nntp-server-buffer
(nnmail-generate-active (list (assoc server nnweb-group-alist)))
t))
@ -402,8 +397,7 @@ Valid types include `google', `dejanews', and `gmane'.")
(defun nnweb-google-create-mapping ()
"Perform the search and create a number-to-url alist."
(save-excursion
(set-buffer nnweb-buffer)
(with-current-buffer nnweb-buffer
(erase-buffer)
(nnheader-message 7 "Searching google...")
(when (funcall (nnweb-definition 'search) nnweb-search)
@ -459,8 +453,7 @@ Valid types include `google', `dejanews', and `gmane'.")
;;;
(defun nnweb-gmane-create-mapping ()
"Perform the search and create a number-to-url alist."
(save-excursion
(set-buffer nnweb-buffer)
(with-current-buffer nnweb-buffer
(let ((case-fold-search t)
(active (or (cadr (assoc nnweb-group nnweb-group-alist))
(cons 1 0)))

View file

@ -279,9 +279,9 @@ Returns the process associated with the connection."
(let ((coding-system-for-read 'binary)
(coding-system-for-write 'binary)
process)
(with-current-buffer
(get-buffer-create (concat " trace of POP session to "
mailhost))
(save-excursion
(set-buffer (get-buffer-create (concat " trace of POP session to "
mailhost)))
(erase-buffer)
(setq pop3-read-point (point-min))
(setq process
@ -353,7 +353,8 @@ Returns the process associated with the connection."
Return the response string if optional second argument is non-nil."
(let ((case-fold-search nil)
match-end)
(with-current-buffer (process-buffer process)
(save-excursion
(set-buffer (process-buffer process))
(goto-char pop3-read-point)
(while (and (memq (process-status process) '(open run))
(not (search-forward "\r\n" nil t)))
@ -510,7 +511,8 @@ Otherwise, return the size of the message-id MSG"
(if msg
(string-to-number (nth 2 (split-string response " ")))
(let ((start pop3-read-point) end)
(with-current-buffer (process-buffer process)
(save-excursion
(set-buffer (process-buffer process))
(while (not (re-search-forward "^\\.\r\n" nil t))
(pop3-accept-process-output process)
(goto-char start))
@ -528,7 +530,8 @@ Otherwise, return the size of the message-id MSG"
(pop3-send-command process (format "RETR %s" msg))
(pop3-read-response process)
(let ((start pop3-read-point) end)
(with-current-buffer (process-buffer process)
(save-excursion
(set-buffer (process-buffer process))
(while (not (re-search-forward "^\\.\r\n" nil t))
(pop3-accept-process-output process)
(goto-char start))
@ -544,7 +547,8 @@ Otherwise, return the size of the message-id MSG"
(setq end (point-marker))
(pop3-clean-region start end)
(pop3-munge-message-separator start end)
(with-current-buffer crashbuf
(save-excursion
(set-buffer crashbuf)
(erase-buffer))
(copy-to-buffer crashbuf start end)
(delete-region start end)
@ -581,7 +585,8 @@ and close the connection."
(pop3-send-command process "QUIT")
(pop3-read-response process t)
(if process
(with-current-buffer (process-buffer process)
(save-excursion
(set-buffer (process-buffer process))
(goto-char (point-max))
(delete-process process))))

View file

@ -708,8 +708,7 @@ The following commands are available:
"Go to the SMIME buffer."
(interactive)
(unless (get-buffer smime-buffer)
(save-excursion
(set-buffer (get-buffer-create smime-buffer))
(with-current-buffer (get-buffer-create smime-buffer)
(smime-mode)))
(smime-draw-buffer)
(switch-to-buffer smime-buffer))

View file

@ -109,8 +109,7 @@ Reports is as ham when HAM is set."
;; select this particular article
(gnus-summary-select-article nil nil nil article)
;; resend it to the destination address
(save-excursion
(set-buffer gnus-original-article-buffer)
(with-current-buffer gnus-original-article-buffer
(message-resend spam-report-resend-to))))
(defun spam-report-resend-ham (articles)
@ -292,8 +291,7 @@ symbol `ask', query before flushing the queue file."
(gnus-message 7 "Processing requests using `%s'."
spam-report-url-ping-function))
(or file (setq file spam-report-requests-file))
(save-excursion
(set-buffer (find-file-noselect file))
(with-current-buffer (find-file-noselect file)
(goto-char (point-min))
(while (and (not (eobp))
(re-search-forward

View file

@ -1605,8 +1605,7 @@ to find it out)."
article))))
(defun spam-fetch-article-header (article)
(save-excursion
(set-buffer gnus-summary-buffer)
(with-current-buffer gnus-summary-buffer
(gnus-read-header article)
(nth 3 (assq article gnus-newsgroup-data))))
;;}}}
@ -2172,8 +2171,7 @@ See `spam-ifile-database'."
(with-temp-buffer
(let ((temp-buffer-name (buffer-name))
(db-param (spam-get-ifile-database-parameter)))
(save-excursion
(set-buffer article-buffer-name)
(with-current-buffer article-buffer-name
(apply 'call-process-region
(point-min) (point-max) spam-ifile-program
nil temp-buffer-name nil "-c"
@ -2318,9 +2316,8 @@ With a non-nil REMOVE, remove the ADDRESSES."
;; else, we have a list of addresses here
(unless (file-exists-p (file-name-directory file))
(make-directory (file-name-directory file) t))
(save-excursion
(set-buffer
(find-file-noselect file))
(with-current-buffer
(find-file-noselect file)
(dolist (a addresses)
(when (stringp a)
(goto-char (point-min))
@ -2521,8 +2518,7 @@ With a non-nil REMOVE, remove the ADDRESSES."
return)
(with-temp-buffer
(let ((temp-buffer-name (buffer-name)))
(save-excursion
(set-buffer article-buffer-name)
(with-current-buffer article-buffer-name
(apply 'call-process-region
(point-min) (point-max)
spam-bogofilter-program
@ -2579,8 +2575,7 @@ With a non-nil REMOVE, remove the ADDRESSES."
(let ((article-buffer-name (buffer-name)))
(with-temp-buffer
(let ((temp-buffer-name (buffer-name)))
(save-excursion
(set-buffer article-buffer-name)
(with-current-buffer article-buffer-name
(let ((status
(apply 'call-process-region
(point-min) (point-max)
@ -2656,8 +2651,7 @@ With a non-nil REMOVE, remove the ADDRESSES."
(let ((article-buffer-name (buffer-name)))
(with-temp-buffer
(let ((temp-buffer-name (buffer-name)))
(save-excursion
(set-buffer article-buffer-name)
(with-current-buffer article-buffer-name
(apply 'call-process-region
(point-min) (point-max) spam-assassin-program
nil temp-buffer-name nil spam-spamassassin-arguments))
@ -2691,8 +2685,7 @@ With a non-nil REMOVE, remove the ADDRESSES."
;; group the articles into mbox format
(dolist (article articles)
(let (article-string)
(save-excursion
(set-buffer summary-buffer-name)
(with-current-buffer summary-buffer-name
(setq article-string (spam-get-article-as-string article)))
(when (stringp article-string)
(insert "From \n") ; mbox separator (sa-learn only checks the
@ -2755,8 +2748,7 @@ With a non-nil REMOVE, remove the ADDRESSES."
return)
(with-temp-buffer
(let ((temp-buffer-name (buffer-name)))
(save-excursion
(set-buffer article-buffer-name)
(with-current-buffer article-buffer-name
(apply 'call-process-region
(point-min) (point-max)
spam-bsfilter-program
@ -2841,8 +2833,7 @@ With a non-nil REMOVE, remove the ADDRESSES."
return)
(with-temp-buffer
(let ((temp-buffer-name (buffer-name)))
(save-excursion
(set-buffer article-buffer-name)
(with-current-buffer article-buffer-name
(apply 'call-process-region
(point-min) (point-max)
spam-crm114-program

View file

@ -254,8 +254,7 @@ handshake, or nil on failure."
(starttls-set-process-query-on-exit-flag process nil)
(while (and (processp process)
(eq (process-status process) 'run)
(save-excursion
(set-buffer buffer)
(with-current-buffer buffer
(goto-char old-max)
(not (setq done (re-search-forward
starttls-connect nil t)))))

View file

@ -205,6 +205,7 @@ Characters are in raw byte pairs in narrowed buffer."
(mm-decode-coding-region (point-min) (point-max) 'iso-8859-1)
(mm-enable-multibyte))
;;;###autoload
(defun utf7-encode (string &optional for-imap)
"Encode UTF-7 STRING. Use IMAP modification if FOR-IMAP is non-nil."
(if (and (coding-system-p 'utf-7) (coding-system-p 'utf-7-imap))

View file

@ -228,6 +228,7 @@ MODE can be \"login\" or \"password\", suitable for passing to
(eq type (car (cddr service)))))))
(cadr service)))
;;;###autoload
(defun netrc-credentials (machine &rest ports)
"Return a user name/password pair.
Port specifications will be prioritised in the order they are