]> code.delx.au - gnu-emacs/blobdiff - lisp/telnet.el
(mouse-choose-completion): New function.
[gnu-emacs] / lisp / telnet.el
index 5fb439adc1e8a9d5cb5d537d819d8ccf16aa4943..fec7f9c976ed4f86ef35999e90dcfe9056652b5a 100644 (file)
 ;; along with GNU Emacs; see the file COPYING.  If not, write to
 ;; the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
 
+;;; Commentary:
+
+;; This mode is intended to be used for telnet or rsh to a remode host;
+;; `telnet' and `rsh' are the two entry points.  Multiple telnet or rsh
+;; sessions are supported.
+;;
+;; Normally, input is sent to the remote telnet/rsh line-by-line, as you
+;; type RET or LFD.  C-c C-c sends a C-c to the remote immediately; 
+;; C-c C-z sends C-z immediately.  C-c C-q followed by any character
+;; sends that character immediately.
+;;
+;; All RET characters are filtered out of the output coming back from the
+;; remote system.  The mode tries to do other useful translations based
+;; on what it sees coming back from the other system before the password
+;; query.  It knows about UNIX, ITS, TOPS-20 and Explorer systems.
+
 ;;; Code:
 
-;;to do fix software types for lispm:
-;;to eval current expression.  Also to try to send escape keys correctly.
-;;essentially we'll want the rubout-handler off.
+;; to do fix software types for lispm:
+;; to eval current expression.  Also to try to send escape keys correctly.
+;; essentially we'll want the rubout-handler off.
 
 ;; filter is simplistic but should be okay for typical shell usage.
 ;; needs hacking if it is going to deal with asynchronous output in a sane
@@ -116,6 +132,12 @@ rejecting one login and prompting for the again for a username and password.")
                  (set-process-filter proc 'telnet-filter))
                 (t (setq telnet-count (1+ telnet-count)))))))
 
+;; Identical to comint-simple-send, except that it sends telnet-new-line
+;; instead of "\n".
+(defun telnet-simple-send (proc string)
+  (comint-send-string proc string)
+  (comint-send-string proc telnet-new-line))
+
 (defun telnet-filter (proc string)
   (let ((at-end
         (and (eq (process-buffer proc) (current-buffer))
@@ -162,19 +184,18 @@ Normally input is edited in Emacs and sent a line at a time."
     (erase-buffer)
     (send-string  name (concat "open " arg "\n"))
     (telnet-mode)
+    (setq comint-input-sender 'telnet-simple-send)
     (setq telnet-count telnet-initial-count)))
 
 (defun telnet-mode ()
-  "This mode is for telnetting from a buffer to another host.
+  "This mode is for using telnet (or rsh) from a buffer to another host.
 It has most of the same commands as comint-mode.
 There is a variable ``telnet-interrupt-string'' which is the character
 sent to try to stop execution of a job on the remote host.
 Data is sent to the remote host when RET is typed.
 
 \\{telnet-mode-map}
-
-Bugs:
---Replaces \r by a space, really should remove."
+"
   (interactive)
   (comint-mode)
   (setq major-mode 'telnet-mode
@@ -183,6 +204,19 @@ Bugs:
   (use-local-map telnet-mode-map)
   (run-hooks 'telnet-mode-hook))
 
+;;;###autoload
+(defun rsh (arg)
+  "Open a network login connection to host named HOST (a string).
+Communication with HOST is recorded in a buffer *HOST-rsh*.
+Normally input is edited in Emacs and sent a line at a time."
+  (interactive "sOpen rsh connection to host: ")
+  (require 'shell)
+  (let ((name (concat arg "-rsh" )))
+    (switch-to-buffer (make-comint name "rsh"))
+    (set-process-filter (get-process name) 'telnet-initial-filter)
+    (telnet-mode)
+    (setq telnet-count -16)))
+
 (defun read-password ()
   (let ((answ "") tem)
     (message "Reading password...")