emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] /srv/bzr/emacs/trunk r108449: * lisp/gnus/nntp.el: Stop th


From: Stefan Monnier
Subject: [Emacs-diffs] /srv/bzr/emacs/trunk r108449: * lisp/gnus/nntp.el: Stop the `letf' madness.
Date: Fri, 01 Jun 2012 16:24:17 -0400
User-agent: Bazaar (2.5.0)

------------------------------------------------------------
revno: 108449
committer: Stefan Monnier <address@hidden>
branch nick: trunk
timestamp: Fri 2012-06-01 16:24:17 -0400
message:
  * lisp/gnus/nntp.el: Stop the `letf' madness.
  (nntp--report-1): New var.
  (nntp-report): Merge nntp-report-1 into it.
  (nntp-with-open-group-function): Set nntp--report-1 instead of modifying
  the nntp-report function.
modified:
  lisp/gnus/ChangeLog
  lisp/gnus/nntp.el
=== modified file 'lisp/gnus/ChangeLog'
--- a/lisp/gnus/ChangeLog       2012-06-01 20:12:11 +0000
+++ b/lisp/gnus/ChangeLog       2012-06-01 20:24:17 +0000
@@ -1,5 +1,11 @@
 2012-06-01  Stefan Monnier  <address@hidden>
 
+       * nntp.el: Stop the `letf' madness.
+       (nntp--report-1): New var.
+       (nntp-report): Merge nntp-report-1 into it.
+       (nntp-with-open-group-function): Set nntp--report-1 instead of modifying
+       the nntp-report function.
+
        * auth-source.el: Fix comment-style to follow the convention.
 
 2012-05-27  Katsumi Yamaoka  <address@hidden>

=== modified file 'lisp/gnus/nntp.el'
--- a/lisp/gnus/nntp.el 2012-02-25 00:39:24 +0000
+++ b/lisp/gnus/nntp.el 2012-06-01 20:24:17 +0000
@@ -344,26 +344,26 @@
     (insert (format-time-string "%Y%m%dT%H%M%S.%3N")
            " " nntp-address " " string "\n")))
 
+(defvar nntp--report-1 nil)
+
 (defun nntp-report (&rest args)
   "Report an error from the nntp backend.  The first string in ARGS
 can be a format string.  For some commands, the failed command may be
 retried once before actually displaying the error report."
-
-  (when nntp-record-commands
-    (nntp-record-command "*** CALLED nntp-report ***"))
-
-  (nnheader-report 'nntp args)
-
-  (apply 'error args))
-
-(defun nntp-report-1 (&rest args)
-  "Throws out to nntp-with-open-group-error so that the connection may
-be restored and the command retried."
-
-  (when nntp-record-commands
-    (nntp-record-command "*** CONNECTION LOST ***"))
-
-  (throw 'nntp-with-open-group-error t))
+  (if nntp--report-1
+      (progn
+        ;; Throw out to nntp-with-open-group-error so that the connection may
+        ;; be restored and the command retried."
+        (when nntp-record-commands
+          (nntp-record-command "*** CONNECTION LOST ***"))
+        (throw 'nntp-with-open-group-error t))
+
+    (when nntp-record-commands
+      (nntp-record-command "*** CALLED nntp-report ***"))
+
+    (nnheader-report 'nntp args)
+
+    (apply 'error args)))
 
 (defmacro nntp-copy-to-buffer (buffer start end)
   "Copy string from unibyte current buffer to multibyte buffer."
@@ -633,10 +633,6 @@
    (t
     nil)))
 
-(eval-when-compile
-  (defvar nntp-with-open-group-internal nil)
-  (defvar nntp-report-n nil))
-
 (defun nntp-with-open-group-function (-group -server -connectionless -bodyfun)
   "Protect against servers that don't like clients that keep idle connections 
opens.
 The problem being that these servers may either close a connection or
@@ -647,9 +643,9 @@
 `nntp-connection-timeout' has expired.  When these occur
 `nntp-with-open-group', opens a new connection then re-issues the NNTP
 command whose response triggered the error."
-  (letf ((nntp-report-n (symbol-function 'nntp-report))
-         ((symbol-function 'nntp-report) (symbol-function 'nntp-report-1))
-         (nntp-with-open-group-internal nil))
+  (let ((nntp-report-n nntp--report-1)
+        (nntp--report-1 t)
+        (nntp-with-open-group-internal nil))
     (while (catch 'nntp-with-open-group-error
              ;; Open the connection to the server
              ;; NOTE: Existing connections are NOT tested.
@@ -685,7 +681,7 @@
                  (when -timer
                    (nnheader-cancel-timer -timer)))
                nil))
-      (setf (symbol-function 'nntp-report) nntp-report-n))
+      (setq nntp--report-1 nntp-report-n))
     nntp-with-open-group-internal))
 
 (defmacro nntp-with-open-group (group server &optional connectionless &rest 
forms)


reply via email to

[Prev in Thread] Current Thread [Next in Thread]