diff options
| author | Richard M. Stallman | 1997-07-26 18:41:15 +0000 |
|---|---|---|
| committer | Richard M. Stallman | 1997-07-26 18:41:15 +0000 |
| commit | e259d5a3bded534ccada5eb5713c56eeb77bf15f (patch) | |
| tree | 082e933309616e9b8127b1bac28f8f6dda49b024 | |
| parent | 632c6364e65fe44d4ac182389793e07ad9c51849 (diff) | |
| download | emacs-e259d5a3bded534ccada5eb5713c56eeb77bf15f.tar.gz emacs-e259d5a3bded534ccada5eb5713c56eeb77bf15f.zip | |
(telnet): Handle multiple telnet programs better.
(telnet-host-properties): New variable.
| -rw-r--r-- | lisp/telnet.el | 27 |
1 files changed, 22 insertions, 5 deletions
diff --git a/lisp/telnet.el b/lisp/telnet.el index d05c249bc24..3b2fbc8f9e8 100644 --- a/lisp/telnet.el +++ b/lisp/telnet.el | |||
| @@ -24,7 +24,7 @@ | |||
| 24 | 24 | ||
| 25 | ;;; Commentary: | 25 | ;;; Commentary: |
| 26 | 26 | ||
| 27 | ;; This mode is intended to be used for telnet or rsh to a remode host; | 27 | ;; This mode is intended to be used for telnet or rsh to a remote host; |
| 28 | ;; `telnet' and `rsh' are the two entry points. Multiple telnet or rsh | 28 | ;; `telnet' and `rsh' are the two entry points. Multiple telnet or rsh |
| 29 | ;; sessions are supported. | 29 | ;; sessions are supported. |
| 30 | ;; | 30 | ;; |
| @@ -37,6 +37,9 @@ | |||
| 37 | ;; remote system. The mode tries to do other useful translations based | 37 | ;; remote system. The mode tries to do other useful translations based |
| 38 | ;; on what it sees coming back from the other system before the password | 38 | ;; on what it sees coming back from the other system before the password |
| 39 | ;; query. It knows about UNIX, ITS, TOPS-20 and Explorer systems. | 39 | ;; query. It knows about UNIX, ITS, TOPS-20 and Explorer systems. |
| 40 | ;; | ||
| 41 | ;; You can use the global telnet-host-properties to associate a telnet | ||
| 42 | ;; program and login name with each host you regularly telnet to. | ||
| 40 | 43 | ||
| 41 | ;;; Code: | 44 | ;;; Code: |
| 42 | 45 | ||
| @@ -50,6 +53,13 @@ | |||
| 50 | 53 | ||
| 51 | (require 'comint) | 54 | (require 'comint) |
| 52 | 55 | ||
| 56 | (defvar telnet-host-properties | ||
| 57 | "Specify which telnet program to use for particular hosts. | ||
| 58 | Each element has the form (HOSTNAME PROGRAM [LOGIN-NAME]) | ||
| 59 | HOSTNAME says which machine the element applies to. | ||
| 60 | PROGRAM says which program to run, to talk to that machine. | ||
| 61 | LOGIN-NAME, which is optional, says what to log in as on that machine.") | ||
| 62 | |||
| 53 | (defvar telnet-new-line "\r") | 63 | (defvar telnet-new-line "\r") |
| 54 | (defvar telnet-mode-map nil) | 64 | (defvar telnet-mode-map nil) |
| 55 | (defvar telnet-prompt-pattern "^[^#$%>\n]*[#$%>] *") | 65 | (defvar telnet-prompt-pattern "^[^#$%>\n]*[#$%>] *") |
| @@ -181,16 +191,23 @@ rejecting one login and prompting again for a username and password.") | |||
| 181 | ;;;###autoload | 191 | ;;;###autoload |
| 182 | (defun telnet (host) | 192 | (defun telnet (host) |
| 183 | "Open a network login connection to host named HOST (a string). | 193 | "Open a network login connection to host named HOST (a string). |
| 184 | Communication with HOST is recorded in a buffer `*telnet-HOST*'. | 194 | Communication with HOST is recorded in a buffer `*PROGRAM-HOST*' |
| 195 | where PROGRAM is the telnet program being used. This program | ||
| 196 | is controlled by the contents of the global variable `telnet-host-properties', | ||
| 197 | falling back on the value of the global variable `telnet-program'. | ||
| 185 | Normally input is edited in Emacs and sent a line at a time." | 198 | Normally input is edited in Emacs and sent a line at a time." |
| 186 | (interactive "sOpen telnet connection to host: ") | 199 | (interactive "sOpen connection to host: ") |
| 187 | (let* ((comint-delimiter-argument-list '(?\ ?\t)) | 200 | (let* ((comint-delimiter-argument-list '(?\ ?\t)) |
| 188 | (name (concat "telnet-" (comint-arguments host 0 nil) )) | 201 | (properties (cdr (assoc host telnet-host-properties))) |
| 202 | (telnet-program (if properties (car properties) telnet-program)) | ||
| 203 | (name (concat telnet-program "-" (comint-arguments host 0 nil) )) | ||
| 189 | (buffer (get-buffer (concat "*" name "*"))) | 204 | (buffer (get-buffer (concat "*" name "*"))) |
| 205 | (telnet-options (if (cdr properties) (cons "-l" (cdr properties)))) | ||
| 190 | process) | 206 | process) |
| 191 | (if (and buffer (get-buffer-process buffer)) | 207 | (if (and buffer (get-buffer-process buffer)) |
| 192 | (pop-to-buffer (concat "*" name "*")) | 208 | (pop-to-buffer (concat "*" name "*")) |
| 193 | (pop-to-buffer (make-comint name telnet-program)) | 209 | (pop-to-buffer |
| 210 | (apply 'make-comint name telnet-program nil telnet-options)) | ||
| 194 | (setq process (get-buffer-process (current-buffer))) | 211 | (setq process (get-buffer-process (current-buffer))) |
| 195 | (set-process-filter process 'telnet-initial-filter) | 212 | (set-process-filter process 'telnet-initial-filter) |
| 196 | ;; Don't send the `open' cmd till telnet is ready for it. | 213 | ;; Don't send the `open' cmd till telnet is ready for it. |