Mercurial > emacs
diff lisp/net/telnet.el @ 88155:d7ddb3e565de
sync with trunk
author | Henrik Enberg <henrik.enberg@telia.com> |
---|---|
date | Mon, 16 Jan 2006 00:03:54 +0000 |
parents | 0d8b17d428b5 |
children |
line wrap: on
line diff
--- a/lisp/net/telnet.el Sun Jan 15 23:02:10 2006 +0000 +++ b/lisp/net/telnet.el Mon Jan 16 00:03:54 2006 +0000 @@ -1,6 +1,7 @@ ;;; telnet.el --- run a telnet session from within an Emacs buffer -;; Copyright (C) 1985, 1988, 1992, 1994 Free Software Foundation, Inc. +;; Copyright (C) 1985, 1988, 1992, 1994, 2002, 2003, 2004, +;; 2005 Free Software Foundation, Inc. ;; Author: William F. Schelter ;; Maintainer: FSF @@ -20,8 +21,8 @@ ;; You should have received a copy of the GNU General Public License ;; along with GNU Emacs; see the file COPYING. If not, write to the -;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, -;; Boston, MA 02111-1307, USA. +;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, +;; Boston, MA 02110-1301, USA. ;;; Commentary: @@ -89,21 +90,21 @@ rejecting one login and prompting again for a username and password.") (defun telnet-interrupt-subjob () + "Interrupt the program running through telnet on the remote host." (interactive) - "Interrupt the program running through telnet on the remote host." - (send-string nil telnet-interrupt-string)) + (process-send-string nil telnet-interrupt-string)) (defun telnet-c-z () (interactive) - (send-string nil "\C-z")) + (process-send-string nil "\C-z")) (defun send-process-next-char () (interactive) - (send-string nil - (char-to-string - (let ((inhibit-quit t)) - (prog1 (read-char) - (setq quit-flag nil)))))) + (process-send-string nil + (char-to-string + (let ((inhibit-quit t)) + (prog1 (read-char) + (setq quit-flag nil)))))) ; initialization on first load. (if telnet-mode-map @@ -141,8 +142,8 @@ ((string-match "passw" string) (telnet-filter proc string) (setq telnet-count 0) - (send-string proc (concat (comint-read-noecho "Password: " t) - telnet-new-line)) + (process-send-string proc (concat (comint-read-noecho "Password: " t) + telnet-new-line)) (clear-this-command-keys)) (t (telnet-check-software-type-initialize string) (telnet-filter proc string) @@ -197,18 +198,28 @@ ;;;###autoload (add-hook 'same-window-regexps "\\*telnet-.*\\*\\(\\|<[0-9]+>\\)") ;;;###autoload -(defun telnet (host) +(defun telnet (host &optional port) "Open a network login connection to host named HOST (a string). +Optional arg PORT specifies alternative port to connect to. +Interactively, use \\[universal-argument] prefix to be prompted for port number. + Communication with HOST is recorded in a buffer `*PROGRAM-HOST*' where PROGRAM is the telnet program being used. This program is controlled by the contents of the global variable `telnet-host-properties', falling back on the value of the global variable `telnet-program'. Normally input is edited in Emacs and sent a line at a time." - (interactive "sOpen connection to host: ") + (interactive (list (read-string "Open connection to host: ") + (cond + ((null current-prefix-arg) nil) + ((consp current-prefix-arg) (read-string "Port: ")) + (t (prefix-numeric-value current-prefix-arg))))) + (if (and port (numberp port)) + (setq port (int-to-string port))) (let* ((comint-delimiter-argument-list '(?\ ?\t)) (properties (cdr (assoc host telnet-host-properties))) (telnet-program (if properties (car properties) telnet-program)) - (name (concat telnet-program "-" (comint-arguments host 0 nil) )) + (hname (if port (concat host ":" port) host)) + (name (concat telnet-program "-" (comint-arguments hname 0 nil) )) (buffer (get-buffer (concat "*" name "*"))) (telnet-options (if (cdr properties) (cons "-l" (cdr properties)))) process) @@ -221,29 +232,22 @@ ;; Don't send the `open' cmd till telnet is ready for it. (accept-process-output process) (erase-buffer) - (send-string process (concat "open " host "\n")) + (process-send-string process (concat "open " host + (if port " " "") (or port "") + "\n")) (telnet-mode) (setq comint-input-sender 'telnet-simple-send) (setq telnet-count telnet-initial-count)))) (put 'telnet-mode 'mode-class 'special) -(defun telnet-mode () +(define-derived-mode telnet-mode comint-mode "Telnet" "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} -" - (interactive) - (comint-mode) - (setq major-mode 'telnet-mode - mode-name "Telnet" - comint-prompt-regexp telnet-prompt-pattern) - (use-local-map telnet-mode-map) - (run-hooks 'telnet-mode-hook)) +Data is sent to the remote host when RET is typed." + (set (make-local-variable 'comint-prompt-regexp) telnet-prompt-pattern)) ;;;###autoload (add-hook 'same-window-regexps "\\*rsh-[^-]*\\*\\(\\|<[0-9]*>\\)") @@ -262,4 +266,5 @@ (provide 'telnet) +;;; arch-tag: 98218821-d04a-48b6-9058-57d0d4677a56 ;;; telnet.el ends here