annotate lisp/telnet.el @ 18092:8428d56cd207

(smtpmail-via-smtp): Recognize XVRB as a synonym for VERB and XONE as a synonym for ONEX. (smtpmail-read-response): Add "%s" to `message' calls to avoid problems with percent signs in strings. (smtpmail-read-response): Return all lines of the response text as a list of strings. Formerly only the first line was returned. This is insufficient when one wants to parse e.g. an EHLO response. Ignore responses starting with "0". This is necessary to support the VERB SMTP extension. (smtpmail-via-smtp): Try EHLO and find out which SMTP service extensions the receiving mailer supports. Issue the ONEX and XUSR commands if the corresponding extensions are supported. Issue VERB if supported and `smtpmail-debug-info' is non-nil. Add SIZE attribute to MAIL FROM: command if SIZE extension is supported. Add code that could set the BODY= attribute to MAIL FROM: if the receiving mailer supports 8BITMIME. This is currently disabled, since doing it right might involve adding MIME headers to, and in some cases reencoding, the message.
author Richard M. Stallman <rms@gnu.org>
date Sun, 01 Jun 1997 22:24:22 +0000
parents 132278ebdbc9
children 20ff67539cfb
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
658
7cbd4fcd8b0f *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 584
diff changeset
1 ;;; telnet.el --- run a telnet session from within an Emacs buffer
775
1ca26ccad38e *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 707
diff changeset
2
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 10987
diff changeset
3 ;; Copyright (C) 1985, 1988, 1992, 1994 Free Software Foundation, Inc.
841
2cdce064065f entered into RCS
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 775
diff changeset
4
775
1ca26ccad38e *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 707
diff changeset
5 ;; Author: William F. Schelter
1ca26ccad38e *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 707
diff changeset
6 ;; Maintainer: FSF
48
82ef7404837f Initial revision
root <root>
parents:
diff changeset
7
82ef7404837f Initial revision
root <root>
parents:
diff changeset
8 ;; This file is part of GNU Emacs.
82ef7404837f Initial revision
root <root>
parents:
diff changeset
9
82ef7404837f Initial revision
root <root>
parents:
diff changeset
10 ;; GNU Emacs is free software; you can redistribute it and/or modify
82ef7404837f Initial revision
root <root>
parents:
diff changeset
11 ;; it under the terms of the GNU General Public License as published by
707
e4253da532fb *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 658
diff changeset
12 ;; the Free Software Foundation; either version 2, or (at your option)
48
82ef7404837f Initial revision
root <root>
parents:
diff changeset
13 ;; any later version.
82ef7404837f Initial revision
root <root>
parents:
diff changeset
14
82ef7404837f Initial revision
root <root>
parents:
diff changeset
15 ;; GNU Emacs is distributed in the hope that it will be useful,
82ef7404837f Initial revision
root <root>
parents:
diff changeset
16 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of
82ef7404837f Initial revision
root <root>
parents:
diff changeset
17 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
82ef7404837f Initial revision
root <root>
parents:
diff changeset
18 ;; GNU General Public License for more details.
82ef7404837f Initial revision
root <root>
parents:
diff changeset
19
82ef7404837f Initial revision
root <root>
parents:
diff changeset
20 ;; You should have received a copy of the GNU General Public License
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 10987
diff changeset
21 ;; along with GNU Emacs; see the file COPYING. If not, write to the
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 10987
diff changeset
22 ;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 10987
diff changeset
23 ;; Boston, MA 02111-1307, USA.
48
82ef7404837f Initial revision
root <root>
parents:
diff changeset
24
2562
2715e893d220 Commentary added.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1577
diff changeset
25 ;;; Commentary:
2715e893d220 Commentary added.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1577
diff changeset
26
2715e893d220 Commentary added.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1577
diff changeset
27 ;; This mode is intended to be used for telnet or rsh to a remode host;
2715e893d220 Commentary added.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1577
diff changeset
28 ;; `telnet' and `rsh' are the two entry points. Multiple telnet or rsh
2715e893d220 Commentary added.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1577
diff changeset
29 ;; sessions are supported.
2715e893d220 Commentary added.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1577
diff changeset
30 ;;
2715e893d220 Commentary added.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1577
diff changeset
31 ;; Normally, input is sent to the remote telnet/rsh line-by-line, as you
2715e893d220 Commentary added.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1577
diff changeset
32 ;; type RET or LFD. C-c C-c sends a C-c to the remote immediately;
2715e893d220 Commentary added.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1577
diff changeset
33 ;; C-c C-z sends C-z immediately. C-c C-q followed by any character
2715e893d220 Commentary added.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1577
diff changeset
34 ;; sends that character immediately.
2715e893d220 Commentary added.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1577
diff changeset
35 ;;
2715e893d220 Commentary added.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1577
diff changeset
36 ;; All RET characters are filtered out of the output coming back from the
2715e893d220 Commentary added.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1577
diff changeset
37 ;; remote system. The mode tries to do other useful translations based
2715e893d220 Commentary added.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1577
diff changeset
38 ;; on what it sees coming back from the other system before the password
2715e893d220 Commentary added.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1577
diff changeset
39 ;; query. It knows about UNIX, ITS, TOPS-20 and Explorer systems.
2715e893d220 Commentary added.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1577
diff changeset
40
775
1ca26ccad38e *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 707
diff changeset
41 ;;; Code:
48
82ef7404837f Initial revision
root <root>
parents:
diff changeset
42
2562
2715e893d220 Commentary added.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1577
diff changeset
43 ;; to do fix software types for lispm:
2715e893d220 Commentary added.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1577
diff changeset
44 ;; to eval current expression. Also to try to send escape keys correctly.
2715e893d220 Commentary added.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1577
diff changeset
45 ;; essentially we'll want the rubout-handler off.
48
82ef7404837f Initial revision
root <root>
parents:
diff changeset
46
82ef7404837f Initial revision
root <root>
parents:
diff changeset
47 ;; filter is simplistic but should be okay for typical shell usage.
82ef7404837f Initial revision
root <root>
parents:
diff changeset
48 ;; needs hacking if it is going to deal with asynchronous output in a sane
82ef7404837f Initial revision
root <root>
parents:
diff changeset
49 ;; manner
82ef7404837f Initial revision
root <root>
parents:
diff changeset
50
82ef7404837f Initial revision
root <root>
parents:
diff changeset
51 (require 'comint)
707
e4253da532fb *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 658
diff changeset
52
48
82ef7404837f Initial revision
root <root>
parents:
diff changeset
53 (defvar telnet-new-line "\r")
82ef7404837f Initial revision
root <root>
parents:
diff changeset
54 (defvar telnet-mode-map nil)
5273
59fee4967e01 (telnet-filter): Rewrite, taken mostly from Lucid.
Richard M. Stallman <rms@gnu.org>
parents: 5142
diff changeset
55 (defvar telnet-prompt-pattern "^[^#$%>\n]*[#$%>] *")
48
82ef7404837f Initial revision
root <root>
parents:
diff changeset
56 (defvar telnet-replace-c-g nil)
82ef7404837f Initial revision
root <root>
parents:
diff changeset
57 (make-variable-buffer-local
82ef7404837f Initial revision
root <root>
parents:
diff changeset
58 (defvar telnet-remote-echoes t
82ef7404837f Initial revision
root <root>
parents:
diff changeset
59 "True if the telnet process will echo input."))
82ef7404837f Initial revision
root <root>
parents:
diff changeset
60 (make-variable-buffer-local
82ef7404837f Initial revision
root <root>
parents:
diff changeset
61 (defvar telnet-interrupt-string "\C-c" "String sent by C-c."))
82ef7404837f Initial revision
root <root>
parents:
diff changeset
62
82ef7404837f Initial revision
root <root>
parents:
diff changeset
63 (defvar telnet-count 0
5142
2d8ae66d6906 (telnet-rsh-program): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 4828
diff changeset
64 "Number of output strings from telnet process while looking for password.")
2d8ae66d6906 (telnet-rsh-program): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 4828
diff changeset
65 (make-variable-buffer-local 'telnet-count)
2d8ae66d6906 (telnet-rsh-program): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 4828
diff changeset
66
8756
1c9ee34d9094 (telnet-program): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 7300
diff changeset
67 (defvar telnet-program "telnet"
1c9ee34d9094 (telnet-program): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 7300
diff changeset
68 "Program to run to open a telnet connection.")
1c9ee34d9094 (telnet-program): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 7300
diff changeset
69
48
82ef7404837f Initial revision
root <root>
parents:
diff changeset
70 (defvar telnet-initial-count -50
1577
a52da8d63ff3 Doc fix.
Christopher Zaborsky <rogue@erratum.com>
parents: 1418
diff changeset
71 "Initial value of `telnet-count'. Should be set to the negative of the
48
82ef7404837f Initial revision
root <root>
parents:
diff changeset
72 number of terminal writes telnet will make setting up the host connection.")
82ef7404837f Initial revision
root <root>
parents:
diff changeset
73
82ef7404837f Initial revision
root <root>
parents:
diff changeset
74 (defvar telnet-maximum-count 4
1577
a52da8d63ff3 Doc fix.
Christopher Zaborsky <rogue@erratum.com>
parents: 1418
diff changeset
75 "Maximum value `telnet-count' can have.
48
82ef7404837f Initial revision
root <root>
parents:
diff changeset
76 After this many passes, we stop looking for initial setup data.
82ef7404837f Initial revision
root <root>
parents:
diff changeset
77 Should be set to the number of terminal writes telnet will make
6402
33dec33f382d (telnet-maximum-count): Doc fix.
Karl Heuer <kwzh@gnu.org>
parents: 6156
diff changeset
78 rejecting one login and prompting again for a username and password.")
48
82ef7404837f Initial revision
root <root>
parents:
diff changeset
79
82ef7404837f Initial revision
root <root>
parents:
diff changeset
80 (defun telnet-interrupt-subjob ()
82ef7404837f Initial revision
root <root>
parents:
diff changeset
81 (interactive)
82ef7404837f Initial revision
root <root>
parents:
diff changeset
82 "Interrupt the program running through telnet on the remote host."
82ef7404837f Initial revision
root <root>
parents:
diff changeset
83 (send-string nil telnet-interrupt-string))
82ef7404837f Initial revision
root <root>
parents:
diff changeset
84
82ef7404837f Initial revision
root <root>
parents:
diff changeset
85 (defun telnet-c-z ()
82ef7404837f Initial revision
root <root>
parents:
diff changeset
86 (interactive)
82ef7404837f Initial revision
root <root>
parents:
diff changeset
87 (send-string nil "\C-z"))
82ef7404837f Initial revision
root <root>
parents:
diff changeset
88
82ef7404837f Initial revision
root <root>
parents:
diff changeset
89 (defun send-process-next-char ()
82ef7404837f Initial revision
root <root>
parents:
diff changeset
90 (interactive)
82ef7404837f Initial revision
root <root>
parents:
diff changeset
91 (send-string nil
82ef7404837f Initial revision
root <root>
parents:
diff changeset
92 (char-to-string
82ef7404837f Initial revision
root <root>
parents:
diff changeset
93 (let ((inhibit-quit t))
82ef7404837f Initial revision
root <root>
parents:
diff changeset
94 (prog1 (read-char)
82ef7404837f Initial revision
root <root>
parents:
diff changeset
95 (setq quit-flag nil))))))
82ef7404837f Initial revision
root <root>
parents:
diff changeset
96
82ef7404837f Initial revision
root <root>
parents:
diff changeset
97 ; initialization on first load.
82ef7404837f Initial revision
root <root>
parents:
diff changeset
98 (if telnet-mode-map
82ef7404837f Initial revision
root <root>
parents:
diff changeset
99 nil
8887
9a6dc53633aa (telnet-mode-map): Inherit from comint-mode-map.
Richard M. Stallman <rms@gnu.org>
parents: 8876
diff changeset
100 (setq telnet-mode-map (nconc (make-sparse-keymap) comint-mode-map))
48
82ef7404837f Initial revision
root <root>
parents:
diff changeset
101 (define-key telnet-mode-map "\C-m" 'telnet-send-input)
82ef7404837f Initial revision
root <root>
parents:
diff changeset
102 ; (define-key telnet-mode-map "\C-j" 'telnet-send-input)
82ef7404837f Initial revision
root <root>
parents:
diff changeset
103 (define-key telnet-mode-map "\C-c\C-q" 'send-process-next-char)
82ef7404837f Initial revision
root <root>
parents:
diff changeset
104 (define-key telnet-mode-map "\C-c\C-c" 'telnet-interrupt-subjob)
82ef7404837f Initial revision
root <root>
parents:
diff changeset
105 (define-key telnet-mode-map "\C-c\C-z" 'telnet-c-z))
82ef7404837f Initial revision
root <root>
parents:
diff changeset
106
82ef7404837f Initial revision
root <root>
parents:
diff changeset
107 ;;maybe should have a flag for when have found type
82ef7404837f Initial revision
root <root>
parents:
diff changeset
108 (defun telnet-check-software-type-initialize (string)
82ef7404837f Initial revision
root <root>
parents:
diff changeset
109 "Tries to put correct initializations in. Needs work."
82ef7404837f Initial revision
root <root>
parents:
diff changeset
110 (let ((case-fold-search t))
82ef7404837f Initial revision
root <root>
parents:
diff changeset
111 (cond ((string-match "unix" string)
82ef7404837f Initial revision
root <root>
parents:
diff changeset
112 (setq telnet-prompt-pattern comint-prompt-regexp)
82ef7404837f Initial revision
root <root>
parents:
diff changeset
113 (setq telnet-new-line "\n"))
82ef7404837f Initial revision
root <root>
parents:
diff changeset
114 ((string-match "tops-20" string) ;;maybe add telnet-replace-c-g
82ef7404837f Initial revision
root <root>
parents:
diff changeset
115 (setq telnet-prompt-pattern "[@>]*"))
82ef7404837f Initial revision
root <root>
parents:
diff changeset
116 ((string-match "its" string)
5273
59fee4967e01 (telnet-filter): Rewrite, taken mostly from Lucid.
Richard M. Stallman <rms@gnu.org>
parents: 5142
diff changeset
117 (setq telnet-prompt-pattern "^[^*>\n]*[*>] *"))
48
82ef7404837f Initial revision
root <root>
parents:
diff changeset
118 ((string-match "explorer" string) ;;explorer telnet needs work
82ef7404837f Initial revision
root <root>
parents:
diff changeset
119 (setq telnet-replace-c-g ?\n))))
82ef7404837f Initial revision
root <root>
parents:
diff changeset
120 (setq comint-prompt-regexp telnet-prompt-pattern))
82ef7404837f Initial revision
root <root>
parents:
diff changeset
121
82ef7404837f Initial revision
root <root>
parents:
diff changeset
122 (defun telnet-initial-filter (proc string)
82ef7404837f Initial revision
root <root>
parents:
diff changeset
123 ;For reading up to and including password; also will get machine type.
16847
76159aa277eb (telnet-initial-filter): Fix error message.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
124 (let ((case-fold-search t))
76159aa277eb (telnet-initial-filter): Fix error message.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
125 (cond ((string-match "No such host" string)
76159aa277eb (telnet-initial-filter): Fix error message.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
126 (kill-buffer (process-buffer proc))
76159aa277eb (telnet-initial-filter): Fix error message.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
127 (error "No such host"))
76159aa277eb (telnet-initial-filter): Fix error message.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
128 ((string-match "passw" string)
48
82ef7404837f Initial revision
root <root>
parents:
diff changeset
129 (telnet-filter proc string)
16847
76159aa277eb (telnet-initial-filter): Fix error message.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
130 (setq telnet-count 0)
76159aa277eb (telnet-initial-filter): Fix error message.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
131 (send-string proc (concat (comint-read-noecho "Password: " t)
76159aa277eb (telnet-initial-filter): Fix error message.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
132 telnet-new-line)))
76159aa277eb (telnet-initial-filter): Fix error message.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
133 (t (telnet-check-software-type-initialize string)
76159aa277eb (telnet-initial-filter): Fix error message.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
134 (telnet-filter proc string)
76159aa277eb (telnet-initial-filter): Fix error message.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
135 (cond ((> telnet-count telnet-maximum-count)
76159aa277eb (telnet-initial-filter): Fix error message.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
136 (set-process-filter proc 'telnet-filter))
76159aa277eb (telnet-initial-filter): Fix error message.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
137 (t (setq telnet-count (1+ telnet-count))))))))
48
82ef7404837f Initial revision
root <root>
parents:
diff changeset
138
3562
ec0c98304624 (telnet-simple-send): New function.
Richard M. Stallman <rms@gnu.org>
parents: 2562
diff changeset
139 ;; Identical to comint-simple-send, except that it sends telnet-new-line
ec0c98304624 (telnet-simple-send): New function.
Richard M. Stallman <rms@gnu.org>
parents: 2562
diff changeset
140 ;; instead of "\n".
ec0c98304624 (telnet-simple-send): New function.
Richard M. Stallman <rms@gnu.org>
parents: 2562
diff changeset
141 (defun telnet-simple-send (proc string)
ec0c98304624 (telnet-simple-send): New function.
Richard M. Stallman <rms@gnu.org>
parents: 2562
diff changeset
142 (comint-send-string proc string)
ec0c98304624 (telnet-simple-send): New function.
Richard M. Stallman <rms@gnu.org>
parents: 2562
diff changeset
143 (comint-send-string proc telnet-new-line))
ec0c98304624 (telnet-simple-send): New function.
Richard M. Stallman <rms@gnu.org>
parents: 2562
diff changeset
144
48
82ef7404837f Initial revision
root <root>
parents:
diff changeset
145 (defun telnet-filter (proc string)
5273
59fee4967e01 (telnet-filter): Rewrite, taken mostly from Lucid.
Richard M. Stallman <rms@gnu.org>
parents: 5142
diff changeset
146 (save-excursion
59fee4967e01 (telnet-filter): Rewrite, taken mostly from Lucid.
Richard M. Stallman <rms@gnu.org>
parents: 5142
diff changeset
147 (set-buffer (process-buffer proc))
59fee4967e01 (telnet-filter): Rewrite, taken mostly from Lucid.
Richard M. Stallman <rms@gnu.org>
parents: 5142
diff changeset
148 (let* ((last-insertion (marker-position (process-mark proc)))
59fee4967e01 (telnet-filter): Rewrite, taken mostly from Lucid.
Richard M. Stallman <rms@gnu.org>
parents: 5142
diff changeset
149 (delta (- (point) last-insertion))
59fee4967e01 (telnet-filter): Rewrite, taken mostly from Lucid.
Richard M. Stallman <rms@gnu.org>
parents: 5142
diff changeset
150 (ie (and comint-last-input-end
59fee4967e01 (telnet-filter): Rewrite, taken mostly from Lucid.
Richard M. Stallman <rms@gnu.org>
parents: 5142
diff changeset
151 (marker-position comint-last-input-end)))
59fee4967e01 (telnet-filter): Rewrite, taken mostly from Lucid.
Richard M. Stallman <rms@gnu.org>
parents: 5142
diff changeset
152 (w (get-buffer-window (current-buffer)))
59fee4967e01 (telnet-filter): Rewrite, taken mostly from Lucid.
Richard M. Stallman <rms@gnu.org>
parents: 5142
diff changeset
153 (ws (and w (window-start w))))
59fee4967e01 (telnet-filter): Rewrite, taken mostly from Lucid.
Richard M. Stallman <rms@gnu.org>
parents: 5142
diff changeset
154 (goto-char last-insertion)
59fee4967e01 (telnet-filter): Rewrite, taken mostly from Lucid.
Richard M. Stallman <rms@gnu.org>
parents: 5142
diff changeset
155 (insert-before-markers string)
59fee4967e01 (telnet-filter): Rewrite, taken mostly from Lucid.
Richard M. Stallman <rms@gnu.org>
parents: 5142
diff changeset
156 (set-marker (process-mark proc) (point))
59fee4967e01 (telnet-filter): Rewrite, taken mostly from Lucid.
Richard M. Stallman <rms@gnu.org>
parents: 5142
diff changeset
157 (if ws (set-window-start w ws t))
59fee4967e01 (telnet-filter): Rewrite, taken mostly from Lucid.
Richard M. Stallman <rms@gnu.org>
parents: 5142
diff changeset
158 (if ie (set-marker comint-last-input-end ie))
59fee4967e01 (telnet-filter): Rewrite, taken mostly from Lucid.
Richard M. Stallman <rms@gnu.org>
parents: 5142
diff changeset
159 (while (progn (skip-chars-backward "^\C-m" last-insertion)
59fee4967e01 (telnet-filter): Rewrite, taken mostly from Lucid.
Richard M. Stallman <rms@gnu.org>
parents: 5142
diff changeset
160 (> (point) last-insertion))
59fee4967e01 (telnet-filter): Rewrite, taken mostly from Lucid.
Richard M. Stallman <rms@gnu.org>
parents: 5142
diff changeset
161 (delete-region (1- (point)) (point)))
48
82ef7404837f Initial revision
root <root>
parents:
diff changeset
162 (goto-char (process-mark proc))
5273
59fee4967e01 (telnet-filter): Rewrite, taken mostly from Lucid.
Richard M. Stallman <rms@gnu.org>
parents: 5142
diff changeset
163 (and telnet-replace-c-g
59fee4967e01 (telnet-filter): Rewrite, taken mostly from Lucid.
Richard M. Stallman <rms@gnu.org>
parents: 5142
diff changeset
164 (subst-char-in-region last-insertion (point) ?\C-g
59fee4967e01 (telnet-filter): Rewrite, taken mostly from Lucid.
Richard M. Stallman <rms@gnu.org>
parents: 5142
diff changeset
165 telnet-replace-c-g t))
59fee4967e01 (telnet-filter): Rewrite, taken mostly from Lucid.
Richard M. Stallman <rms@gnu.org>
parents: 5142
diff changeset
166 ;; If point is after the insertion place, move it
59fee4967e01 (telnet-filter): Rewrite, taken mostly from Lucid.
Richard M. Stallman <rms@gnu.org>
parents: 5142
diff changeset
167 ;; along with the text.
59fee4967e01 (telnet-filter): Rewrite, taken mostly from Lucid.
Richard M. Stallman <rms@gnu.org>
parents: 5142
diff changeset
168 (if (> delta 0)
59fee4967e01 (telnet-filter): Rewrite, taken mostly from Lucid.
Richard M. Stallman <rms@gnu.org>
parents: 5142
diff changeset
169 (goto-char (+ (process-mark proc) delta))))))
48
82ef7404837f Initial revision
root <root>
parents:
diff changeset
170
82ef7404837f Initial revision
root <root>
parents:
diff changeset
171 (defun telnet-send-input ()
82ef7404837f Initial revision
root <root>
parents:
diff changeset
172 (interactive)
707
e4253da532fb *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 658
diff changeset
173 ; (comint-send-input telnet-new-line telnet-remote-echoes)
e4253da532fb *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 658
diff changeset
174 (comint-send-input)
e4253da532fb *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 658
diff changeset
175 (if telnet-remote-echoes
e4253da532fb *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 658
diff changeset
176 (delete-region comint-last-input-start
e4253da532fb *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 658
diff changeset
177 comint-last-input-end)))
48
82ef7404837f Initial revision
root <root>
parents:
diff changeset
178
10980
aa3f323f1dea Fix typos in previous change.
Richard M. Stallman <rms@gnu.org>
parents: 10979
diff changeset
179 ;;;###autoload (add-hook 'same-window-regexps "\\*telnet-.*\\*\\(\\|<[0-9]+>\\)")
10979
a3de1a78a79f (rsh, telnet): Use pop-to-buffer.
Richard M. Stallman <rms@gnu.org>
parents: 10452
diff changeset
180
258
1e0bc00dca7a *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 48
diff changeset
181 ;;;###autoload
4432
f00905dd8a41 (telnet): If we already have a telnet to HOST, just switch buffers.
Richard M. Stallman <rms@gnu.org>
parents: 3562
diff changeset
182 (defun telnet (host)
48
82ef7404837f Initial revision
root <root>
parents:
diff changeset
183 "Open a network login connection to host named HOST (a string).
8876
1f90adde8d6c (telnet): Use name *telnet-HOST*, not *HOST-telnet*.
Richard M. Stallman <rms@gnu.org>
parents: 8756
diff changeset
184 Communication with HOST is recorded in a buffer `*telnet-HOST*'.
48
82ef7404837f Initial revision
root <root>
parents:
diff changeset
185 Normally input is edited in Emacs and sent a line at a time."
82ef7404837f Initial revision
root <root>
parents:
diff changeset
186 (interactive "sOpen telnet connection to host: ")
6156
3aafcde7e7c4 (telnet): Use chars in comint-delimiter-argument-list.
Richard M. Stallman <rms@gnu.org>
parents: 5549
diff changeset
187 (let* ((comint-delimiter-argument-list '(?\ ?\t))
8876
1f90adde8d6c (telnet): Use name *telnet-HOST*, not *HOST-telnet*.
Richard M. Stallman <rms@gnu.org>
parents: 8756
diff changeset
188 (name (concat "telnet-" (comint-arguments host 0 nil) ))
10129
c2fa03370e73 (telnet): Don't make assumptions about process name.
Richard M. Stallman <rms@gnu.org>
parents: 8887
diff changeset
189 (buffer (get-buffer (concat "*" name "*")))
c2fa03370e73 (telnet): Don't make assumptions about process name.
Richard M. Stallman <rms@gnu.org>
parents: 8887
diff changeset
190 process)
4432
f00905dd8a41 (telnet): If we already have a telnet to HOST, just switch buffers.
Richard M. Stallman <rms@gnu.org>
parents: 3562
diff changeset
191 (if (and buffer (get-buffer-process buffer))
10979
a3de1a78a79f (rsh, telnet): Use pop-to-buffer.
Richard M. Stallman <rms@gnu.org>
parents: 10452
diff changeset
192 (pop-to-buffer (concat "*" name "*"))
a3de1a78a79f (rsh, telnet): Use pop-to-buffer.
Richard M. Stallman <rms@gnu.org>
parents: 10452
diff changeset
193 (pop-to-buffer (make-comint name telnet-program))
10129
c2fa03370e73 (telnet): Don't make assumptions about process name.
Richard M. Stallman <rms@gnu.org>
parents: 8887
diff changeset
194 (setq process (get-buffer-process (current-buffer)))
c2fa03370e73 (telnet): Don't make assumptions about process name.
Richard M. Stallman <rms@gnu.org>
parents: 8887
diff changeset
195 (set-process-filter process 'telnet-initial-filter)
4432
f00905dd8a41 (telnet): If we already have a telnet to HOST, just switch buffers.
Richard M. Stallman <rms@gnu.org>
parents: 3562
diff changeset
196 ;; Don't send the `open' cmd till telnet is ready for it.
10129
c2fa03370e73 (telnet): Don't make assumptions about process name.
Richard M. Stallman <rms@gnu.org>
parents: 8887
diff changeset
197 (accept-process-output process)
4432
f00905dd8a41 (telnet): If we already have a telnet to HOST, just switch buffers.
Richard M. Stallman <rms@gnu.org>
parents: 3562
diff changeset
198 (erase-buffer)
10129
c2fa03370e73 (telnet): Don't make assumptions about process name.
Richard M. Stallman <rms@gnu.org>
parents: 8887
diff changeset
199 (send-string process (concat "open " host "\n"))
4432
f00905dd8a41 (telnet): If we already have a telnet to HOST, just switch buffers.
Richard M. Stallman <rms@gnu.org>
parents: 3562
diff changeset
200 (telnet-mode)
f00905dd8a41 (telnet): If we already have a telnet to HOST, just switch buffers.
Richard M. Stallman <rms@gnu.org>
parents: 3562
diff changeset
201 (setq comint-input-sender 'telnet-simple-send)
f00905dd8a41 (telnet): If we already have a telnet to HOST, just switch buffers.
Richard M. Stallman <rms@gnu.org>
parents: 3562
diff changeset
202 (setq telnet-count telnet-initial-count))))
48
82ef7404837f Initial revision
root <root>
parents:
diff changeset
203
17648
132278ebdbc9 (telnet-mode): Add a mode-class property.
Richard M. Stallman <rms@gnu.org>
parents: 16847
diff changeset
204 (put 'telnet-mode 'mode-class 'special)
132278ebdbc9 (telnet-mode): Add a mode-class property.
Richard M. Stallman <rms@gnu.org>
parents: 16847
diff changeset
205
48
82ef7404837f Initial revision
root <root>
parents:
diff changeset
206 (defun telnet-mode ()
2562
2715e893d220 Commentary added.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1577
diff changeset
207 "This mode is for using telnet (or rsh) from a buffer to another host.
1577
a52da8d63ff3 Doc fix.
Christopher Zaborsky <rogue@erratum.com>
parents: 1418
diff changeset
208 It has most of the same commands as comint-mode.
48
82ef7404837f Initial revision
root <root>
parents:
diff changeset
209 There is a variable ``telnet-interrupt-string'' which is the character
82ef7404837f Initial revision
root <root>
parents:
diff changeset
210 sent to try to stop execution of a job on the remote host.
82ef7404837f Initial revision
root <root>
parents:
diff changeset
211 Data is sent to the remote host when RET is typed.
82ef7404837f Initial revision
root <root>
parents:
diff changeset
212
82ef7404837f Initial revision
root <root>
parents:
diff changeset
213 \\{telnet-mode-map}
2562
2715e893d220 Commentary added.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1577
diff changeset
214 "
48
82ef7404837f Initial revision
root <root>
parents:
diff changeset
215 (interactive)
82ef7404837f Initial revision
root <root>
parents:
diff changeset
216 (comint-mode)
82ef7404837f Initial revision
root <root>
parents:
diff changeset
217 (setq major-mode 'telnet-mode
82ef7404837f Initial revision
root <root>
parents:
diff changeset
218 mode-name "Telnet"
82ef7404837f Initial revision
root <root>
parents:
diff changeset
219 comint-prompt-regexp telnet-prompt-pattern)
82ef7404837f Initial revision
root <root>
parents:
diff changeset
220 (use-local-map telnet-mode-map)
82ef7404837f Initial revision
root <root>
parents:
diff changeset
221 (run-hooks 'telnet-mode-hook))
82ef7404837f Initial revision
root <root>
parents:
diff changeset
222
10987
1c47aad4c1c7 (rsh): Name the buffer *rsh-HOST*.
Richard M. Stallman <rms@gnu.org>
parents: 10980
diff changeset
223 ;;;###autoload (add-hook 'same-window-regexps "\\*rsh-[^-]*\\*\\(\\|<[0-9]*>\\)")
10979
a3de1a78a79f (rsh, telnet): Use pop-to-buffer.
Richard M. Stallman <rms@gnu.org>
parents: 10452
diff changeset
224
2562
2715e893d220 Commentary added.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1577
diff changeset
225 ;;;###autoload
4432
f00905dd8a41 (telnet): If we already have a telnet to HOST, just switch buffers.
Richard M. Stallman <rms@gnu.org>
parents: 3562
diff changeset
226 (defun rsh (host)
2562
2715e893d220 Commentary added.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1577
diff changeset
227 "Open a network login connection to host named HOST (a string).
10987
1c47aad4c1c7 (rsh): Name the buffer *rsh-HOST*.
Richard M. Stallman <rms@gnu.org>
parents: 10980
diff changeset
228 Communication with HOST is recorded in a buffer `*rsh-HOST*'.
2562
2715e893d220 Commentary added.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1577
diff changeset
229 Normally input is edited in Emacs and sent a line at a time."
2715e893d220 Commentary added.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1577
diff changeset
230 (interactive "sOpen rsh connection to host: ")
2715e893d220 Commentary added.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1577
diff changeset
231 (require 'shell)
10987
1c47aad4c1c7 (rsh): Name the buffer *rsh-HOST*.
Richard M. Stallman <rms@gnu.org>
parents: 10980
diff changeset
232 (let ((name (concat "rsh-" host )))
10979
a3de1a78a79f (rsh, telnet): Use pop-to-buffer.
Richard M. Stallman <rms@gnu.org>
parents: 10452
diff changeset
233 (pop-to-buffer (make-comint name remote-shell-program nil host))
2562
2715e893d220 Commentary added.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1577
diff changeset
234 (set-process-filter (get-process name) 'telnet-initial-filter)
2715e893d220 Commentary added.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1577
diff changeset
235 (telnet-mode)
2715e893d220 Commentary added.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1577
diff changeset
236 (setq telnet-count -16)))
2715e893d220 Commentary added.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1577
diff changeset
237
584
4cd7543be581 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 557
diff changeset
238 (provide 'telnet)
4cd7543be581 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 557
diff changeset
239
658
7cbd4fcd8b0f *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 584
diff changeset
240 ;;; telnet.el ends here