;;; rlogin.el --- remote login interface
-;; Copyright (C) 1992, 1993, 1994, 1995, 1997, 1998, 2001, 2002, 2003,
-;; 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1992-1995, 1997-1998, 2001-2012
+;; Free Software Foundation, Inc.
;; Author: Noah Friedman
;; Maintainer: Noah Friedman <friedman@splode.com>
:group 'unix)
(defcustom rlogin-program "rlogin"
- "*Name of program to invoke rlogin"
+ "Name of program to invoke rlogin"
:type 'string
:group 'rlogin)
(defcustom rlogin-explicit-args nil
- "*List of arguments to pass to rlogin on the command line."
+ "List of arguments to pass to rlogin on the command line."
:type '(repeat (string :tag "Argument"))
:group 'rlogin)
(defcustom rlogin-mode-hook nil
- "*Hooks to run after setting current buffer to rlogin-mode."
+ "Hooks to run after setting current buffer to rlogin-mode."
:type 'hook
:group 'rlogin)
(defcustom rlogin-process-connection-type
- (save-match-data
- ;; Solaris 2.x `rlogin' will spew a bunch of ioctl error messages if
- ;; stdin isn't a tty.
- (cond ((and (boundp 'system-configuration)
- (stringp system-configuration)
- (string-match "-solaris2" system-configuration))
- t)
- (t nil)))
- "*If non-nil, use a pty for the local rlogin process.
+ ;; Solaris 2.x `rlogin' will spew a bunch of ioctl error messages if
+ ;; stdin isn't a tty.
+ (and (string-match-p "-solaris2" system-configuration) t)
+ "If non-nil, use a pty for the local rlogin process.
If nil, use a pipe (if pipes are supported on the local system).
Generally it is better not to waste ptys on systems which have a static
:group 'rlogin)
(defcustom rlogin-directory-tracking-mode 'local
- "*Control whether and how to do directory tracking in an rlogin buffer.
+ "Control whether and how to do directory tracking in an rlogin buffer.
nil means don't do directory tracking.
(make-variable-buffer-local 'rlogin-directory-tracking-mode)
(defcustom rlogin-host nil
- "*The name of the remote host. This variable is buffer-local."
+ "The name of the remote host. This variable is buffer-local."
:type '(choice (const nil) string)
:group 'rlogin)
(defcustom rlogin-remote-user nil
- "*The username used on the remote host.
+ "The username used on the remote host.
This variable is buffer-local and defaults to your local user name.
If rlogin is invoked with the `-l' option to specify the remote username,
this variable is set from that."
:type '(choice (const nil) string)
:group 'rlogin)
-;; Initialize rlogin mode map.
-(defvar rlogin-mode-map '())
-(cond
- ((null rlogin-mode-map)
- (setq rlogin-mode-map (if (consp shell-mode-map)
- (cons 'keymap shell-mode-map)
- (copy-keymap shell-mode-map)))
- (define-key rlogin-mode-map "\C-c\C-c" 'rlogin-send-Ctrl-C)
- (define-key rlogin-mode-map "\C-c\C-d" 'rlogin-send-Ctrl-D)
- (define-key rlogin-mode-map "\C-c\C-z" 'rlogin-send-Ctrl-Z)
- (define-key rlogin-mode-map "\C-c\C-\\" 'rlogin-send-Ctrl-backslash)
- (define-key rlogin-mode-map "\C-d" 'rlogin-delchar-or-send-Ctrl-D)
- (define-key rlogin-mode-map "\C-i" 'rlogin-tab-or-complete)))
+(defvar rlogin-mode-map
+ (let ((map (if (consp shell-mode-map)
+ (cons 'keymap shell-mode-map)
+ (copy-keymap shell-mode-map))))
+ (define-key rlogin-mode-map "\C-c\C-c" 'rlogin-send-Ctrl-C)
+ (define-key rlogin-mode-map "\C-c\C-d" 'rlogin-send-Ctrl-D)
+ (define-key rlogin-mode-map "\C-c\C-z" 'rlogin-send-Ctrl-Z)
+ (define-key rlogin-mode-map "\C-c\C-\\" 'rlogin-send-Ctrl-backslash)
+ (define-key rlogin-mode-map "\C-d" 'rlogin-delchar-or-send-Ctrl-D)
+ (define-key rlogin-mode-map "\C-i" 'rlogin-tab-or-complete)
+ map)
+ "Keymap for `rlogin-mode'.")
-\f
-;;;###autoload (add-hook 'same-window-regexps (purecopy "^\\*rlogin-.*\\*\\(\\|<[0-9]+>\\)"))
+\f
(defvar rlogin-history nil)
;;;###autoload
(read-from-minibuffer "rlogin arguments (hostname first): "
nil nil nil 'rlogin-history)
current-prefix-arg))
-
(let* ((process-connection-type rlogin-process-connection-type)
(args (if rlogin-explicit-args
(append (split-string input-args)
(buffer-name (if (string= user (user-login-name))
(format "*rlogin-%s*" host)
(format "*rlogin-%s@%s*" user host))))
-
(cond ((null buffer))
((stringp buffer)
(setq buffer-name buffer))
(setq buffer-name (format "%s<%d>" buffer-name buffer)))
(t
(setq buffer-name (generate-new-buffer-name buffer-name))))
-
(setq buffer (get-buffer-create buffer-name))
- (pop-to-buffer buffer-name)
-
+ (switch-to-buffer buffer-name)
(unless (comint-check-proc buffer-name)
(comint-exec buffer buffer-name rlogin-program nil args)
-
(rlogin-mode)
-
(make-local-variable 'rlogin-host)
(setq rlogin-host host)
(make-local-variable 'rlogin-remote-user)
(setq rlogin-remote-user user)
-
- (condition-case ()
- (cond ((eq rlogin-directory-tracking-mode t)
- ;; Do this here, rather than calling the tracking mode
- ;; function, to avoid a gratuitous resync check; the default
- ;; should be the user's home directory, be it local or remote.
- (setq comint-file-name-prefix
- (concat "/" rlogin-remote-user "@" rlogin-host ":"))
- (cd-absolute comint-file-name-prefix))
- ((null rlogin-directory-tracking-mode))
- (t
- (cd-absolute (concat comint-file-name-prefix "~/"))))
- (error nil)))))
+ (ignore-errors
+ (cond ((eq rlogin-directory-tracking-mode t)
+ ;; Do this here, rather than calling the tracking mode
+ ;; function, to avoid a gratuitous resync check; the default
+ ;; should be the user's home directory, be it local or remote.
+ (setq comint-file-name-prefix
+ (concat "/" rlogin-remote-user "@" rlogin-host ":"))
+ (cd-absolute comint-file-name-prefix))
+ ((null rlogin-directory-tracking-mode))
+ (t
+ (cd-absolute (concat comint-file-name-prefix "~/"))))))))
(put 'rlogin-mode 'mode-class 'special)
(process-send-string nil "\C-\\"))
(defun rlogin-delchar-or-send-Ctrl-D (arg)
- "\
-Delete ARG characters forward, or send a C-d to process if at end of buffer."
+ "Delete ARG characters forward, or send a C-d to process if at end of buffer."
(interactive "p")
(if (eobp)
(rlogin-send-Ctrl-D)
(provide 'rlogin)
-;; arch-tag: 6e20eabf-feda-40fa-ab40-0d156db447e4
;;; rlogin.el ends here