]> git.eshelyaron.com Git - emacs.git/commitdiff
(nntp-send-region-to-server): Use a temporary buffer to
authorRichard M. Stallman <rms@gnu.org>
Fri, 9 Feb 1996 20:47:07 +0000 (20:47 +0000)
committerRichard M. Stallman <rms@gnu.org>
Fri, 9 Feb 1996 20:47:07 +0000 (20:47 +0000)
send text to the server.

lisp/nntp.el

index 4577fe5258590d4e084e5c0930dadbbe9835f9f5..b6a49ee5888c6ad7f2ade08a24cb9642dfef733b 100644 (file)
@@ -1,6 +1,6 @@
 ;;; nntp.el --- nntp access for Gnus
 
-;; Copyright (C) 1987,88,89,90,92,93,94,95 Free Software Foundation, Inc.
+;; Copyright (C) 1987,88,89,90,92,93,94,95,96 Free Software Foundation, Inc.
 
 ;; Author: Masanobu UMEDA <umerin@flab.flab.fujitsu.junet>
 ;;     Lars Magne Ingebrigtsen <larsi@ifi.uio.no>
@@ -1019,36 +1019,28 @@ It will prompt for a password."
     (process-send-string nntp-server-process cmd)))
 
 (defun nntp-send-region-to-server (begin end)
-  "Send current buffer region (from BEGIN to END) to news server."
+  "Send the current buffer region (from BEGIN to END) to the server."
   (save-excursion
-    ;; We have to work in the buffer associated with NNTP server
-    ;;  process because of NEmacs hack.
-    (copy-to-buffer nntp-server-buffer begin end)
-    (set-buffer nntp-server-buffer)
-    (setq begin (point-min))
-    (setq end (point-max))
-    ;; `process-send-region' does not work if text to be sent is very
-    ;;  large. I don't know maximum size of text sent correctly.
-    (let ((last nil)
-         (size 100))                   ;Size of text sent at once.
-      (save-restriction
-       (narrow-to-region begin end)
-       (goto-char begin)
-       (while (not (eobp))
-         ;;(setq last (min end (+ (point) size)))
-         ;; NEmacs gets confused if character at `last' is Kanji.
-         (setq last (save-excursion
-                      (goto-char (min end (+ (point) size)))
-                      (or (eobp) (forward-char 1)) ;Adjust point
-                      (point)))
-         (process-send-region nntp-server-process (point) last)
-         ;; I don't know whether the next codes solve the known
-         ;;  problem of communication error of GNU Emacs.
-         (accept-process-output)
-         ;;(sit-for 0)
-         (goto-char last))))
-    ;; We cannot erase buffer, because reply may be received.
-    (delete-region begin end)))
+    (let ((cur (current-buffer)))
+      ;; Copy the buffer over to the send buffer.
+      (set-buffer (get-buffer-create " *nntp send*"))
+      (buffer-disable-undo (current-buffer))
+      (erase-buffer)
+      (insert-buffer-substring cur begin end)
+      (save-excursion
+       (set-buffer cur)
+       (erase-buffer))
+      ;; `process-send-region' does not work if the text to be sent is very
+      ;; large, so we send it piecemeal.
+      (let ((last (point-min))
+           (size 100))                 ;Size of text sent at once.
+       (while (/= last (point-max))
+         (process-send-region 
+          nntp-server-process
+          last (setq last (min (+ last size) (point-max))))
+         ;; Read any output from the server.  May be unnecessary.
+         (accept-process-output)))
+      (kill-buffer (current-buffer)))))
 
 (defun nntp-open-server-semi-internal (server &optional service)
   "Open SERVER.