]> git.eshelyaron.com Git - emacs.git/commitdiff
Ensure erc-dcc-chat-setup runs in the right buffer
authorF. Jason Park <jp@neverwas.me>
Sun, 24 Jul 2022 12:14:24 +0000 (05:14 -0700)
committerF. Jason Park <jp@neverwas.me>
Wed, 27 Jul 2022 12:19:09 +0000 (05:19 -0700)
* lisp/erc/erc-dcc.el (erc-dcc-chat-setup): Ensure initialization runs
in the intended buffer regardless of the value of `erc-join-buffer'.
(erc-dcc--send-final-turbo-ack, erc-dcc-get-filter): Rename internal
variable formerly known as `erc-dcc--X-send-final-turbo-ack'.

lisp/erc/erc-dcc.el

index d0e1848e0eb43c944f7cc380d40ef49bab61f779..5862fba3b817b76b1812e27ee02222d006dfa4f3 100644 (file)
@@ -987,7 +987,7 @@ The contents of the BUFFER will then be erased."
 
 ;; If people really need this, we can convert it into a proper option.
 
-(defvar erc-dcc--X-send-final-turbo-ack nil
+(defvar erc-dcc--send-final-turbo-ack nil
   "Workaround for maverick turbo senders that only require a final ACK.
 The only known culprit is WeeChat, with its xfer.network.fast_send
 option, which is on by default.  Leaving this set to nil and calling
@@ -1032,7 +1032,7 @@ rather than every 1024 byte block, but nobody seems to care."
        ;; Some senders want us to hang up.  Only observed w. TSEND.
        ((and (plist-get erc-dcc-entry-data :turbo)
              (= received-bytes (plist-get erc-dcc-entry-data :size)))
-        (when erc-dcc--X-send-final-turbo-ack
+        (when erc-dcc--send-final-turbo-ack
           (process-send-string proc (erc-pack-int received-bytes)))
         (delete-process proc))
        ((not (or (plist-get erc-dcc-entry-data :turbo)
@@ -1182,18 +1182,18 @@ other client."
          (proc (plist-get entry :peer))
          (parent-proc (plist-get entry :parent)))
     (erc-setup-buffer buffer)
-    ;; buffer is now the current buffer.
-    (erc-dcc-chat-mode)
-    (setq erc-server-process parent-proc)
-    (setq erc-dcc-from nick)
-    (setq erc-dcc-entry-data entry)
-    (setq erc-dcc-unprocessed-output "")
-    (setq erc-insert-marker (point-max-marker))
-    (setq erc-input-marker (make-marker))
-    (erc-display-prompt buffer (point-max))
-    (set-process-buffer proc buffer)
-    (add-hook 'kill-buffer-hook #'erc-dcc-chat-buffer-killed nil t)
-    (run-hook-with-args 'erc-dcc-chat-connect-hook proc)
+    (with-current-buffer buffer
+      (erc-dcc-chat-mode)
+      (setq erc-server-process parent-proc
+            erc-dcc-from nick
+            erc-dcc-entry-data entry
+            erc-dcc-unprocessed-output ""
+            erc-insert-marker (point-max-marker)
+            erc-input-marker (make-marker))
+      (erc-display-prompt buffer (point-max))
+      (set-process-buffer proc buffer)
+      (add-hook 'kill-buffer-hook #'erc-dcc-chat-buffer-killed nil t)
+      (run-hook-with-args 'erc-dcc-chat-connect-hook proc))
     buffer))
 
 (defun erc-dcc-chat-accept (entry parent-proc)