Mercurial > emacs
annotate lisp/rlogin.el @ 26370:5f52cc1417ab
Use block statements in cases and declare v1 and v2
locally there. Rearrange case statements so that thos most
frequently executed come first. Avoid goto's in frequently
executed cases.
author | Gerd Moellmann <gerd@gnu.org> |
---|---|
date | Sun, 07 Nov 1999 13:06:59 +0000 |
parents | e2d1e6562433 |
children | a6edcce8ada3 |
rev | line source |
---|---|
2233
fb0ed5a1d0f3
Add standard library headers.
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
2231
diff
changeset
|
1 ;;; rlogin.el --- remote login interface |
fb0ed5a1d0f3
Add standard library headers.
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
2231
diff
changeset
|
2 |
23237
72418dac2378
(rlogin): If using make-local-hook, pass the 4th arg t to add-hook also to
Noah Friedman <friedman@splode.com>
parents:
22597
diff
changeset
|
3 ;; Copyright (C) 1992-1995, 1997, 1998 Free Software Foundation, Inc. |
14169 | 4 |
2539
577c77cfd199
*** empty log message ***
Noah Friedman <friedman@splode.com>
parents:
2405
diff
changeset
|
5 ;; Author: Noah Friedman |
23237
72418dac2378
(rlogin): If using make-local-hook, pass the 4th arg t to add-hook also to
Noah Friedman <friedman@splode.com>
parents:
22597
diff
changeset
|
6 ;; Maintainer: Noah Friedman <friedman@splode.com> |
2259 | 7 ;; Keywords: unix, comm |
2233
fb0ed5a1d0f3
Add standard library headers.
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
2231
diff
changeset
|
8 |
23369
e2d1e6562433
(rlogin-send-Ctrl-C): Use process-send-string, not send-string.
Noah Friedman <friedman@splode.com>
parents:
23237
diff
changeset
|
9 ;; $Id: rlogin.el,v 1.43 1998/09/11 01:22:53 friedman Exp $ |
18419 | 10 |
14169 | 11 ;; This file is part of GNU Emacs. |
12 | |
13 ;; GNU Emacs is free software; you can redistribute it and/or modify | |
2315
9e7ec92a4fdf
Added or corrected Commentary headers
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
2259
diff
changeset
|
14 ;; it under the terms of the GNU General Public License as published by |
9e7ec92a4fdf
Added or corrected Commentary headers
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
2259
diff
changeset
|
15 ;; the Free Software Foundation; either version 2, or (at your option) |
9e7ec92a4fdf
Added or corrected Commentary headers
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
2259
diff
changeset
|
16 ;; any later version. |
14169 | 17 |
18 ;; GNU Emacs is distributed in the hope that it will be useful, | |
2315
9e7ec92a4fdf
Added or corrected Commentary headers
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
2259
diff
changeset
|
19 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of |
9e7ec92a4fdf
Added or corrected Commentary headers
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
2259
diff
changeset
|
20 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
9e7ec92a4fdf
Added or corrected Commentary headers
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
2259
diff
changeset
|
21 ;; GNU General Public License for more details. |
14169 | 22 |
2315
9e7ec92a4fdf
Added or corrected Commentary headers
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
2259
diff
changeset
|
23 ;; You should have received a copy of the GNU General Public License |
14169 | 24 ;; along with GNU Emacs; see the file COPYING. If not, write to the |
25 ;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, | |
26 ;; Boston, MA 02111-1307, USA. | |
2231 | 27 |
2315
9e7ec92a4fdf
Added or corrected Commentary headers
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
2259
diff
changeset
|
28 ;;; Commentary: |
9e7ec92a4fdf
Added or corrected Commentary headers
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
2259
diff
changeset
|
29 |
2387
cb44857cab89
moby rlogin-filter fixes
Noah Friedman <friedman@splode.com>
parents:
2315
diff
changeset
|
30 ;; Support for remote logins using `rlogin'. |
10374
d6de68b87cbd
Removed several more gratuitous autoload cookies.
Noah Friedman <friedman@splode.com>
parents:
10130
diff
changeset
|
31 ;; This program is layered on top of shell.el; the code here only accounts |
d6de68b87cbd
Removed several more gratuitous autoload cookies.
Noah Friedman <friedman@splode.com>
parents:
10130
diff
changeset
|
32 ;; for the variations needed to handle a remote process, e.g. directory |
d6de68b87cbd
Removed several more gratuitous autoload cookies.
Noah Friedman <friedman@splode.com>
parents:
10130
diff
changeset
|
33 ;; tracking and the sending of some special characters. |
4856
896f3b49b53c
(rlogin-initially-track-cwd): New variable.
Noah Friedman <friedman@splode.com>
parents:
4685
diff
changeset
|
34 |
7922
8fcef41c85b7
(rlogin-password-paranoia): Variable deleted.
Noah Friedman <friedman@splode.com>
parents:
5793
diff
changeset
|
35 ;; If you wish for rlogin mode to prompt you in the minibuffer for |
8fcef41c85b7
(rlogin-password-paranoia): Variable deleted.
Noah Friedman <friedman@splode.com>
parents:
5793
diff
changeset
|
36 ;; passwords when a password prompt appears, just enter m-x send-invisible |
8fcef41c85b7
(rlogin-password-paranoia): Variable deleted.
Noah Friedman <friedman@splode.com>
parents:
5793
diff
changeset
|
37 ;; and type in your line, or add `comint-watch-for-password-prompt' to |
8fcef41c85b7
(rlogin-password-paranoia): Variable deleted.
Noah Friedman <friedman@splode.com>
parents:
5793
diff
changeset
|
38 ;; `comint-output-filter-functions'. |
2231 | 39 |
2233
fb0ed5a1d0f3
Add standard library headers.
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
2231
diff
changeset
|
40 ;;; Code: |
fb0ed5a1d0f3
Add standard library headers.
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
2231
diff
changeset
|
41 |
2231 | 42 (require 'comint) |
4685 | 43 (require 'shell) |
2231 | 44 |
17408
cc4d6343afca
Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents:
15490
diff
changeset
|
45 (defgroup rlogin nil |
cc4d6343afca
Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents:
15490
diff
changeset
|
46 "Remote login interface" |
cc4d6343afca
Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents:
15490
diff
changeset
|
47 :group 'processes |
cc4d6343afca
Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents:
15490
diff
changeset
|
48 :group 'unix) |
cc4d6343afca
Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents:
15490
diff
changeset
|
49 |
cc4d6343afca
Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents:
15490
diff
changeset
|
50 (defcustom rlogin-program "rlogin" |
cc4d6343afca
Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents:
15490
diff
changeset
|
51 "*Name of program to invoke rlogin" |
cc4d6343afca
Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents:
15490
diff
changeset
|
52 :type 'string |
cc4d6343afca
Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents:
15490
diff
changeset
|
53 :group 'rlogin) |
2231 | 54 |
17408
cc4d6343afca
Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents:
15490
diff
changeset
|
55 (defcustom rlogin-explicit-args nil |
cc4d6343afca
Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents:
15490
diff
changeset
|
56 "*List of arguments to pass to rlogin on the command line." |
cc4d6343afca
Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents:
15490
diff
changeset
|
57 :type '(repeat (string :tag "Argument")) |
cc4d6343afca
Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents:
15490
diff
changeset
|
58 :group 'rlogin) |
2404
845db675b3e9
*** empty log message ***
Noah Friedman <friedman@splode.com>
parents:
2387
diff
changeset
|
59 |
17408
cc4d6343afca
Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents:
15490
diff
changeset
|
60 (defcustom rlogin-mode-hook nil |
cc4d6343afca
Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents:
15490
diff
changeset
|
61 "*Hooks to run after setting current buffer to rlogin-mode." |
cc4d6343afca
Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents:
15490
diff
changeset
|
62 :type 'hook |
cc4d6343afca
Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents:
15490
diff
changeset
|
63 :group 'rlogin) |
2231 | 64 |
17472
c7a720ef31e6
(rlogin-process-connection-type): Default to t for solaris 2.x.
Noah Friedman <friedman@splode.com>
parents:
17409
diff
changeset
|
65 (defcustom rlogin-process-connection-type |
c7a720ef31e6
(rlogin-process-connection-type): Default to t for solaris 2.x.
Noah Friedman <friedman@splode.com>
parents:
17409
diff
changeset
|
66 (save-match-data |
c7a720ef31e6
(rlogin-process-connection-type): Default to t for solaris 2.x.
Noah Friedman <friedman@splode.com>
parents:
17409
diff
changeset
|
67 ;; Solaris 2.x `rlogin' will spew a bunch of ioctl error messages if |
c7a720ef31e6
(rlogin-process-connection-type): Default to t for solaris 2.x.
Noah Friedman <friedman@splode.com>
parents:
17409
diff
changeset
|
68 ;; stdin isn't a tty. |
c7a720ef31e6
(rlogin-process-connection-type): Default to t for solaris 2.x.
Noah Friedman <friedman@splode.com>
parents:
17409
diff
changeset
|
69 (cond ((and (boundp 'system-configuration) |
c7a720ef31e6
(rlogin-process-connection-type): Default to t for solaris 2.x.
Noah Friedman <friedman@splode.com>
parents:
17409
diff
changeset
|
70 (stringp system-configuration) |
c7a720ef31e6
(rlogin-process-connection-type): Default to t for solaris 2.x.
Noah Friedman <friedman@splode.com>
parents:
17409
diff
changeset
|
71 (string-match "-solaris2" system-configuration)) |
c7a720ef31e6
(rlogin-process-connection-type): Default to t for solaris 2.x.
Noah Friedman <friedman@splode.com>
parents:
17409
diff
changeset
|
72 t) |
c7a720ef31e6
(rlogin-process-connection-type): Default to t for solaris 2.x.
Noah Friedman <friedman@splode.com>
parents:
17409
diff
changeset
|
73 (t nil))) |
10849
eb6af491e98f
(rlogin-carriage-filter): Don't assume region is narrowed to most recent
Noah Friedman <friedman@splode.com>
parents:
10384
diff
changeset
|
74 "*If non-`nil', use a pty for the local rlogin process. |
eb6af491e98f
(rlogin-carriage-filter): Don't assume region is narrowed to most recent
Noah Friedman <friedman@splode.com>
parents:
10384
diff
changeset
|
75 If `nil', use a pipe (if pipes are supported on the local system). |
2539
577c77cfd199
*** empty log message ***
Noah Friedman <friedman@splode.com>
parents:
2405
diff
changeset
|
76 |
577c77cfd199
*** empty log message ***
Noah Friedman <friedman@splode.com>
parents:
2405
diff
changeset
|
77 Generally it is better not to waste ptys on systems which have a static |
577c77cfd199
*** empty log message ***
Noah Friedman <friedman@splode.com>
parents:
2405
diff
changeset
|
78 number of them. On the other hand, some implementations of `rlogin' assume |
17408
cc4d6343afca
Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents:
15490
diff
changeset
|
79 a pty is being used, and errors will result from using a pipe instead." |
22597
aaf6b0301b95
(rlogin-process-connection-type,
Andreas Schwab <schwab@suse.de>
parents:
21158
diff
changeset
|
80 :type '(choice (const :tag "pipes" nil) |
aaf6b0301b95
(rlogin-process-connection-type,
Andreas Schwab <schwab@suse.de>
parents:
21158
diff
changeset
|
81 (other :tag "ptys" t)) |
17408
cc4d6343afca
Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents:
15490
diff
changeset
|
82 :group 'rlogin) |
2539
577c77cfd199
*** empty log message ***
Noah Friedman <friedman@splode.com>
parents:
2405
diff
changeset
|
83 |
17408
cc4d6343afca
Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents:
15490
diff
changeset
|
84 (defcustom rlogin-directory-tracking-mode 'local |
10130
2fb93cbc2d87
(rlogin-initially-track-cwd): Now a 3-way flag.
Richard M. Stallman <rms@gnu.org>
parents:
9250
diff
changeset
|
85 "*Control whether and how to do directory tracking in an rlogin buffer. |
10374
d6de68b87cbd
Removed several more gratuitous autoload cookies.
Noah Friedman <friedman@splode.com>
parents:
10130
diff
changeset
|
86 |
10130
2fb93cbc2d87
(rlogin-initially-track-cwd): Now a 3-way flag.
Richard M. Stallman <rms@gnu.org>
parents:
9250
diff
changeset
|
87 nil means don't do directory tracking. |
10374
d6de68b87cbd
Removed several more gratuitous autoload cookies.
Noah Friedman <friedman@splode.com>
parents:
10130
diff
changeset
|
88 |
10130
2fb93cbc2d87
(rlogin-initially-track-cwd): Now a 3-way flag.
Richard M. Stallman <rms@gnu.org>
parents:
9250
diff
changeset
|
89 t means do so using an ftp remote file name. |
10374
d6de68b87cbd
Removed several more gratuitous autoload cookies.
Noah Friedman <friedman@splode.com>
parents:
10130
diff
changeset
|
90 |
10130
2fb93cbc2d87
(rlogin-initially-track-cwd): Now a 3-way flag.
Richard M. Stallman <rms@gnu.org>
parents:
9250
diff
changeset
|
91 Any other value means do directory tracking using local file names. |
2fb93cbc2d87
(rlogin-initially-track-cwd): Now a 3-way flag.
Richard M. Stallman <rms@gnu.org>
parents:
9250
diff
changeset
|
92 This works only if the remote machine and the local one |
10374
d6de68b87cbd
Removed several more gratuitous autoload cookies.
Noah Friedman <friedman@splode.com>
parents:
10130
diff
changeset
|
93 share the same directories (through NFS). This is the default. |
d6de68b87cbd
Removed several more gratuitous autoload cookies.
Noah Friedman <friedman@splode.com>
parents:
10130
diff
changeset
|
94 |
d6de68b87cbd
Removed several more gratuitous autoload cookies.
Noah Friedman <friedman@splode.com>
parents:
10130
diff
changeset
|
95 This variable becomes local to a buffer when set in any fashion for it. |
d6de68b87cbd
Removed several more gratuitous autoload cookies.
Noah Friedman <friedman@splode.com>
parents:
10130
diff
changeset
|
96 |
d6de68b87cbd
Removed several more gratuitous autoload cookies.
Noah Friedman <friedman@splode.com>
parents:
10130
diff
changeset
|
97 It is better to use the function of the same name to change the behavior of |
d6de68b87cbd
Removed several more gratuitous autoload cookies.
Noah Friedman <friedman@splode.com>
parents:
10130
diff
changeset
|
98 directory tracking in an rlogin session once it has begun, rather than |
d6de68b87cbd
Removed several more gratuitous autoload cookies.
Noah Friedman <friedman@splode.com>
parents:
10130
diff
changeset
|
99 simply setting this variable, since the function does the necessary |
17408
cc4d6343afca
Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents:
15490
diff
changeset
|
100 re-synching of directories." |
cc4d6343afca
Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents:
15490
diff
changeset
|
101 :type '(choice (const :tag "off" nil) |
cc4d6343afca
Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents:
15490
diff
changeset
|
102 (const :tag "ftp" t) |
22597
aaf6b0301b95
(rlogin-process-connection-type,
Andreas Schwab <schwab@suse.de>
parents:
21158
diff
changeset
|
103 (other :tag "local" local)) |
17408
cc4d6343afca
Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents:
15490
diff
changeset
|
104 :group 'rlogin) |
10374
d6de68b87cbd
Removed several more gratuitous autoload cookies.
Noah Friedman <friedman@splode.com>
parents:
10130
diff
changeset
|
105 |
d6de68b87cbd
Removed several more gratuitous autoload cookies.
Noah Friedman <friedman@splode.com>
parents:
10130
diff
changeset
|
106 (make-variable-buffer-local 'rlogin-directory-tracking-mode) |
d6de68b87cbd
Removed several more gratuitous autoload cookies.
Noah Friedman <friedman@splode.com>
parents:
10130
diff
changeset
|
107 |
17408
cc4d6343afca
Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents:
15490
diff
changeset
|
108 (defcustom rlogin-host nil |
cc4d6343afca
Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents:
15490
diff
changeset
|
109 "*The name of the remote host. This variable is buffer-local." |
cc4d6343afca
Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents:
15490
diff
changeset
|
110 :type '(choice (const nil) string) |
cc4d6343afca
Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents:
15490
diff
changeset
|
111 :group 'rlogin) |
10374
d6de68b87cbd
Removed several more gratuitous autoload cookies.
Noah Friedman <friedman@splode.com>
parents:
10130
diff
changeset
|
112 |
17408
cc4d6343afca
Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents:
15490
diff
changeset
|
113 (defcustom rlogin-remote-user nil |
10374
d6de68b87cbd
Removed several more gratuitous autoload cookies.
Noah Friedman <friedman@splode.com>
parents:
10130
diff
changeset
|
114 "*The username used on the remote host. |
d6de68b87cbd
Removed several more gratuitous autoload cookies.
Noah Friedman <friedman@splode.com>
parents:
10130
diff
changeset
|
115 This variable is buffer-local and defaults to your local user name. |
d6de68b87cbd
Removed several more gratuitous autoload cookies.
Noah Friedman <friedman@splode.com>
parents:
10130
diff
changeset
|
116 If rlogin is invoked with the `-l' option to specify the remote username, |
17408
cc4d6343afca
Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents:
15490
diff
changeset
|
117 this variable is set from that." |
cc4d6343afca
Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents:
15490
diff
changeset
|
118 :type '(choice (const nil) string) |
cc4d6343afca
Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents:
15490
diff
changeset
|
119 :group 'rlogin) |
4856
896f3b49b53c
(rlogin-initially-track-cwd): New variable.
Noah Friedman <friedman@splode.com>
parents:
4685
diff
changeset
|
120 |
2231 | 121 ;; Initialize rlogin mode map. |
122 (defvar rlogin-mode-map '()) | |
10849
eb6af491e98f
(rlogin-carriage-filter): Don't assume region is narrowed to most recent
Noah Friedman <friedman@splode.com>
parents:
10384
diff
changeset
|
123 (cond |
10374
d6de68b87cbd
Removed several more gratuitous autoload cookies.
Noah Friedman <friedman@splode.com>
parents:
10130
diff
changeset
|
124 ((null rlogin-mode-map) |
d6de68b87cbd
Removed several more gratuitous autoload cookies.
Noah Friedman <friedman@splode.com>
parents:
10130
diff
changeset
|
125 (setq rlogin-mode-map (if (consp shell-mode-map) |
d6de68b87cbd
Removed several more gratuitous autoload cookies.
Noah Friedman <friedman@splode.com>
parents:
10130
diff
changeset
|
126 (cons 'keymap shell-mode-map) |
d6de68b87cbd
Removed several more gratuitous autoload cookies.
Noah Friedman <friedman@splode.com>
parents:
10130
diff
changeset
|
127 (copy-keymap shell-mode-map))) |
d6de68b87cbd
Removed several more gratuitous autoload cookies.
Noah Friedman <friedman@splode.com>
parents:
10130
diff
changeset
|
128 (define-key rlogin-mode-map "\C-c\C-c" 'rlogin-send-Ctrl-C) |
d6de68b87cbd
Removed several more gratuitous autoload cookies.
Noah Friedman <friedman@splode.com>
parents:
10130
diff
changeset
|
129 (define-key rlogin-mode-map "\C-c\C-d" 'rlogin-send-Ctrl-D) |
d6de68b87cbd
Removed several more gratuitous autoload cookies.
Noah Friedman <friedman@splode.com>
parents:
10130
diff
changeset
|
130 (define-key rlogin-mode-map "\C-c\C-z" 'rlogin-send-Ctrl-Z) |
d6de68b87cbd
Removed several more gratuitous autoload cookies.
Noah Friedman <friedman@splode.com>
parents:
10130
diff
changeset
|
131 (define-key rlogin-mode-map "\C-c\C-\\" 'rlogin-send-Ctrl-backslash) |
d6de68b87cbd
Removed several more gratuitous autoload cookies.
Noah Friedman <friedman@splode.com>
parents:
10130
diff
changeset
|
132 (define-key rlogin-mode-map "\C-d" 'rlogin-delchar-or-send-Ctrl-D) |
d6de68b87cbd
Removed several more gratuitous autoload cookies.
Noah Friedman <friedman@splode.com>
parents:
10130
diff
changeset
|
133 (define-key rlogin-mode-map "\C-i" 'rlogin-tab-or-complete))) |
2231 | 134 |
10374
d6de68b87cbd
Removed several more gratuitous autoload cookies.
Noah Friedman <friedman@splode.com>
parents:
10130
diff
changeset
|
135 |
10977
a173cfead4ce
(rlogin): Use pop-to-buffer.
Richard M. Stallman <rms@gnu.org>
parents:
10849
diff
changeset
|
136 ;;;###autoload (add-hook 'same-window-regexps "^\\*rlogin-.*\\*\\(\\|<[0-9]+>\\)") |
a173cfead4ce
(rlogin): Use pop-to-buffer.
Richard M. Stallman <rms@gnu.org>
parents:
10849
diff
changeset
|
137 |
11805
95a2506fba60
(rlogin-history): New defvar.
Roland McGrath <roland@gnu.org>
parents:
11276
diff
changeset
|
138 (defvar rlogin-history nil) |
95a2506fba60
(rlogin-history): New defvar.
Roland McGrath <roland@gnu.org>
parents:
11276
diff
changeset
|
139 |
2387
cb44857cab89
moby rlogin-filter fixes
Noah Friedman <friedman@splode.com>
parents:
2315
diff
changeset
|
140 ;;;###autoload |
12126
0b0b0c2e5254
(rlogin): If optional second arg is buffer or string, use that as name.
Roland McGrath <roland@gnu.org>
parents:
11805
diff
changeset
|
141 (defun rlogin (input-args &optional buffer) |
15436 | 142 "Open a network login connection via `rlogin' with args INPUT-ARGS. |
143 INPUT-ARGS should start with a host name; it may also contain | |
144 other arguments for `rlogin'. | |
145 | |
2404
845db675b3e9
*** empty log message ***
Noah Friedman <friedman@splode.com>
parents:
2387
diff
changeset
|
146 Input is sent line-at-a-time to the remote connection. |
845db675b3e9
*** empty log message ***
Noah Friedman <friedman@splode.com>
parents:
2387
diff
changeset
|
147 |
10977
a173cfead4ce
(rlogin): Use pop-to-buffer.
Richard M. Stallman <rms@gnu.org>
parents:
10849
diff
changeset
|
148 Communication with the remote host is recorded in a buffer `*rlogin-HOST*' |
a173cfead4ce
(rlogin): Use pop-to-buffer.
Richard M. Stallman <rms@gnu.org>
parents:
10849
diff
changeset
|
149 \(or `*rlogin-USER@HOST*' if the remote username differs\). |
a173cfead4ce
(rlogin): Use pop-to-buffer.
Richard M. Stallman <rms@gnu.org>
parents:
10849
diff
changeset
|
150 If a prefix argument is given and the buffer `*rlogin-HOST*' already exists, |
10374
d6de68b87cbd
Removed several more gratuitous autoload cookies.
Noah Friedman <friedman@splode.com>
parents:
10130
diff
changeset
|
151 a new buffer with a different connection will be made. |
2404
845db675b3e9
*** empty log message ***
Noah Friedman <friedman@splode.com>
parents:
2387
diff
changeset
|
152 |
15436 | 153 When called from a program, if the optional second argument BUFFER is |
154 a string or buffer, it specifies the buffer to use. | |
12126
0b0b0c2e5254
(rlogin): If optional second arg is buffer or string, use that as name.
Roland McGrath <roland@gnu.org>
parents:
11805
diff
changeset
|
155 |
2404
845db675b3e9
*** empty log message ***
Noah Friedman <friedman@splode.com>
parents:
2387
diff
changeset
|
156 The variable `rlogin-program' contains the name of the actual program to |
10849
eb6af491e98f
(rlogin-carriage-filter): Don't assume region is narrowed to most recent
Noah Friedman <friedman@splode.com>
parents:
10384
diff
changeset
|
157 run. It can be a relative or absolute path. |
2404
845db675b3e9
*** empty log message ***
Noah Friedman <friedman@splode.com>
parents:
2387
diff
changeset
|
158 |
845db675b3e9
*** empty log message ***
Noah Friedman <friedman@splode.com>
parents:
2387
diff
changeset
|
159 The variable `rlogin-explicit-args' is a list of arguments to give to |
10130
2fb93cbc2d87
(rlogin-initially-track-cwd): Now a 3-way flag.
Richard M. Stallman <rms@gnu.org>
parents:
9250
diff
changeset
|
160 the rlogin when starting. They are added after any arguments given in |
2fb93cbc2d87
(rlogin-initially-track-cwd): Now a 3-way flag.
Richard M. Stallman <rms@gnu.org>
parents:
9250
diff
changeset
|
161 INPUT-ARGS. |
9250 | 162 |
10374
d6de68b87cbd
Removed several more gratuitous autoload cookies.
Noah Friedman <friedman@splode.com>
parents:
10130
diff
changeset
|
163 If the default value of `rlogin-directory-tracking-mode' is t, then the |
d6de68b87cbd
Removed several more gratuitous autoload cookies.
Noah Friedman <friedman@splode.com>
parents:
10130
diff
changeset
|
164 default directory in that buffer is set to a remote (FTP) file name to |
d6de68b87cbd
Removed several more gratuitous autoload cookies.
Noah Friedman <friedman@splode.com>
parents:
10130
diff
changeset
|
165 access your home directory on the remote machine. Occasionally this causes |
d6de68b87cbd
Removed several more gratuitous autoload cookies.
Noah Friedman <friedman@splode.com>
parents:
10130
diff
changeset
|
166 an error, if you cannot access the home directory on that machine. This |
d6de68b87cbd
Removed several more gratuitous autoload cookies.
Noah Friedman <friedman@splode.com>
parents:
10130
diff
changeset
|
167 error is harmless as long as you don't try to use that default directory. |
10130
2fb93cbc2d87
(rlogin-initially-track-cwd): Now a 3-way flag.
Richard M. Stallman <rms@gnu.org>
parents:
9250
diff
changeset
|
168 |
10374
d6de68b87cbd
Removed several more gratuitous autoload cookies.
Noah Friedman <friedman@splode.com>
parents:
10130
diff
changeset
|
169 If `rlogin-directory-tracking-mode' is neither t nor nil, then the default |
10130
2fb93cbc2d87
(rlogin-initially-track-cwd): Now a 3-way flag.
Richard M. Stallman <rms@gnu.org>
parents:
9250
diff
changeset
|
170 directory is initially set up to your (local) home directory. |
2fb93cbc2d87
(rlogin-initially-track-cwd): Now a 3-way flag.
Richard M. Stallman <rms@gnu.org>
parents:
9250
diff
changeset
|
171 This is useful if the remote machine and your local machine |
10374
d6de68b87cbd
Removed several more gratuitous autoload cookies.
Noah Friedman <friedman@splode.com>
parents:
10130
diff
changeset
|
172 share the same files via NFS. This is the default. |
d6de68b87cbd
Removed several more gratuitous autoload cookies.
Noah Friedman <friedman@splode.com>
parents:
10130
diff
changeset
|
173 |
d6de68b87cbd
Removed several more gratuitous autoload cookies.
Noah Friedman <friedman@splode.com>
parents:
10130
diff
changeset
|
174 If you wish to change directory tracking styles during a session, use the |
d6de68b87cbd
Removed several more gratuitous autoload cookies.
Noah Friedman <friedman@splode.com>
parents:
10130
diff
changeset
|
175 function `rlogin-directory-tracking-mode' rather than simply setting the |
d6de68b87cbd
Removed several more gratuitous autoload cookies.
Noah Friedman <friedman@splode.com>
parents:
10130
diff
changeset
|
176 variable." |
8917
de32691e953c
* rlogin.el (rlogin): recognise the `-l user' option to rlogin and
Francesco Potortì <pot@gnu.org>
parents:
7922
diff
changeset
|
177 (interactive (list |
11805
95a2506fba60
(rlogin-history): New defvar.
Roland McGrath <roland@gnu.org>
parents:
11276
diff
changeset
|
178 (read-from-minibuffer "rlogin arguments (hostname first): " |
95a2506fba60
(rlogin-history): New defvar.
Roland McGrath <roland@gnu.org>
parents:
11276
diff
changeset
|
179 nil nil nil 'rlogin-history) |
8917
de32691e953c
* rlogin.el (rlogin): recognise the `-l user' option to rlogin and
Francesco Potortì <pot@gnu.org>
parents:
7922
diff
changeset
|
180 current-prefix-arg)) |
10374
d6de68b87cbd
Removed several more gratuitous autoload cookies.
Noah Friedman <friedman@splode.com>
parents:
10130
diff
changeset
|
181 |
2539
577c77cfd199
*** empty log message ***
Noah Friedman <friedman@splode.com>
parents:
2405
diff
changeset
|
182 (let* ((process-connection-type rlogin-process-connection-type) |
10374
d6de68b87cbd
Removed several more gratuitous autoload cookies.
Noah Friedman <friedman@splode.com>
parents:
10130
diff
changeset
|
183 (args (if rlogin-explicit-args |
d6de68b87cbd
Removed several more gratuitous autoload cookies.
Noah Friedman <friedman@splode.com>
parents:
10130
diff
changeset
|
184 (append (rlogin-parse-words input-args) |
d6de68b87cbd
Removed several more gratuitous autoload cookies.
Noah Friedman <friedman@splode.com>
parents:
10130
diff
changeset
|
185 rlogin-explicit-args) |
d6de68b87cbd
Removed several more gratuitous autoload cookies.
Noah Friedman <friedman@splode.com>
parents:
10130
diff
changeset
|
186 (rlogin-parse-words input-args))) |
d6de68b87cbd
Removed several more gratuitous autoload cookies.
Noah Friedman <friedman@splode.com>
parents:
10130
diff
changeset
|
187 (host (car args)) |
d6de68b87cbd
Removed several more gratuitous autoload cookies.
Noah Friedman <friedman@splode.com>
parents:
10130
diff
changeset
|
188 (user (or (car (cdr (member "-l" args))) |
d6de68b87cbd
Removed several more gratuitous autoload cookies.
Noah Friedman <friedman@splode.com>
parents:
10130
diff
changeset
|
189 (user-login-name))) |
d6de68b87cbd
Removed several more gratuitous autoload cookies.
Noah Friedman <friedman@splode.com>
parents:
10130
diff
changeset
|
190 (buffer-name (if (string= user (user-login-name)) |
d6de68b87cbd
Removed several more gratuitous autoload cookies.
Noah Friedman <friedman@splode.com>
parents:
10130
diff
changeset
|
191 (format "*rlogin-%s*" host) |
d6de68b87cbd
Removed several more gratuitous autoload cookies.
Noah Friedman <friedman@splode.com>
parents:
10130
diff
changeset
|
192 (format "*rlogin-%s@%s*" user host))) |
d6de68b87cbd
Removed several more gratuitous autoload cookies.
Noah Friedman <friedman@splode.com>
parents:
10130
diff
changeset
|
193 proc) |
d6de68b87cbd
Removed several more gratuitous autoload cookies.
Noah Friedman <friedman@splode.com>
parents:
10130
diff
changeset
|
194 |
12126
0b0b0c2e5254
(rlogin): If optional second arg is buffer or string, use that as name.
Roland McGrath <roland@gnu.org>
parents:
11805
diff
changeset
|
195 (cond ((null buffer)) |
13310
5280c707658e
(rlogin): If `buffer' arg is a buffer object, initialize buffer-name to the
Noah Friedman <friedman@splode.com>
parents:
12126
diff
changeset
|
196 ((stringp buffer) |
12126
0b0b0c2e5254
(rlogin): If optional second arg is buffer or string, use that as name.
Roland McGrath <roland@gnu.org>
parents:
11805
diff
changeset
|
197 (setq buffer-name buffer)) |
13310
5280c707658e
(rlogin): If `buffer' arg is a buffer object, initialize buffer-name to the
Noah Friedman <friedman@splode.com>
parents:
12126
diff
changeset
|
198 ((bufferp buffer) |
5280c707658e
(rlogin): If `buffer' arg is a buffer object, initialize buffer-name to the
Noah Friedman <friedman@splode.com>
parents:
12126
diff
changeset
|
199 (setq buffer-name (buffer-name buffer))) |
12126
0b0b0c2e5254
(rlogin): If optional second arg is buffer or string, use that as name.
Roland McGrath <roland@gnu.org>
parents:
11805
diff
changeset
|
200 ((numberp buffer) |
0b0b0c2e5254
(rlogin): If optional second arg is buffer or string, use that as name.
Roland McGrath <roland@gnu.org>
parents:
11805
diff
changeset
|
201 (setq buffer-name (format "%s<%d>" buffer-name buffer))) |
11274
57b244b67848
(rlogin): Use format, not concat, to generate numeric buffer names.
Noah Friedman <friedman@splode.com>
parents:
10977
diff
changeset
|
202 (t |
57b244b67848
(rlogin): Use format, not concat, to generate numeric buffer names.
Noah Friedman <friedman@splode.com>
parents:
10977
diff
changeset
|
203 (setq buffer-name (generate-new-buffer-name buffer-name)))) |
57b244b67848
(rlogin): Use format, not concat, to generate numeric buffer names.
Noah Friedman <friedman@splode.com>
parents:
10977
diff
changeset
|
204 |
13310
5280c707658e
(rlogin): If `buffer' arg is a buffer object, initialize buffer-name to the
Noah Friedman <friedman@splode.com>
parents:
12126
diff
changeset
|
205 (setq buffer (get-buffer-create buffer-name)) |
11274
57b244b67848
(rlogin): Use format, not concat, to generate numeric buffer names.
Noah Friedman <friedman@splode.com>
parents:
10977
diff
changeset
|
206 (pop-to-buffer buffer-name) |
13310
5280c707658e
(rlogin): If `buffer' arg is a buffer object, initialize buffer-name to the
Noah Friedman <friedman@splode.com>
parents:
12126
diff
changeset
|
207 |
10374
d6de68b87cbd
Removed several more gratuitous autoload cookies.
Noah Friedman <friedman@splode.com>
parents:
10130
diff
changeset
|
208 (cond |
11274
57b244b67848
(rlogin): Use format, not concat, to generate numeric buffer names.
Noah Friedman <friedman@splode.com>
parents:
10977
diff
changeset
|
209 ((comint-check-proc buffer-name)) |
10374
d6de68b87cbd
Removed several more gratuitous autoload cookies.
Noah Friedman <friedman@splode.com>
parents:
10130
diff
changeset
|
210 (t |
13310
5280c707658e
(rlogin): If `buffer' arg is a buffer object, initialize buffer-name to the
Noah Friedman <friedman@splode.com>
parents:
12126
diff
changeset
|
211 (comint-exec buffer buffer-name rlogin-program nil args) |
5280c707658e
(rlogin): If `buffer' arg is a buffer object, initialize buffer-name to the
Noah Friedman <friedman@splode.com>
parents:
12126
diff
changeset
|
212 (setq proc (get-buffer-process buffer)) |
10374
d6de68b87cbd
Removed several more gratuitous autoload cookies.
Noah Friedman <friedman@splode.com>
parents:
10130
diff
changeset
|
213 ;; Set process-mark to point-max in case there is text in the |
d6de68b87cbd
Removed several more gratuitous autoload cookies.
Noah Friedman <friedman@splode.com>
parents:
10130
diff
changeset
|
214 ;; buffer from a previous exited process. |
d6de68b87cbd
Removed several more gratuitous autoload cookies.
Noah Friedman <friedman@splode.com>
parents:
10130
diff
changeset
|
215 (set-marker (process-mark proc) (point-max)) |
10849
eb6af491e98f
(rlogin-carriage-filter): Don't assume region is narrowed to most recent
Noah Friedman <friedman@splode.com>
parents:
10384
diff
changeset
|
216 |
23237
72418dac2378
(rlogin): If using make-local-hook, pass the 4th arg t to add-hook also to
Noah Friedman <friedman@splode.com>
parents:
22597
diff
changeset
|
217 ;; comint-output-filter-functions is treated like a hook: it is |
72418dac2378
(rlogin): If using make-local-hook, pass the 4th arg t to add-hook also to
Noah Friedman <friedman@splode.com>
parents:
22597
diff
changeset
|
218 ;; processed via run-hooks or run-hooks-with-args in later versions |
72418dac2378
(rlogin): If using make-local-hook, pass the 4th arg t to add-hook also to
Noah Friedman <friedman@splode.com>
parents:
22597
diff
changeset
|
219 ;; of emacs. |
15465
d2efb8b0d453
(rlogin): make comint-output-filter-functions local before adding hooks.
Noah Friedman <friedman@splode.com>
parents:
15436
diff
changeset
|
220 ;; comint-output-filter-functions should already have a |
d2efb8b0d453
(rlogin): make comint-output-filter-functions local before adding hooks.
Noah Friedman <friedman@splode.com>
parents:
15436
diff
changeset
|
221 ;; permanent-local property, at least in emacs 19.27 or later. |
23237
72418dac2378
(rlogin): If using make-local-hook, pass the 4th arg t to add-hook also to
Noah Friedman <friedman@splode.com>
parents:
22597
diff
changeset
|
222 (cond |
72418dac2378
(rlogin): If using make-local-hook, pass the 4th arg t to add-hook also to
Noah Friedman <friedman@splode.com>
parents:
22597
diff
changeset
|
223 ((fboundp 'make-local-hook) |
72418dac2378
(rlogin): If using make-local-hook, pass the 4th arg t to add-hook also to
Noah Friedman <friedman@splode.com>
parents:
22597
diff
changeset
|
224 (make-local-hook 'comint-output-filter-functions) |
72418dac2378
(rlogin): If using make-local-hook, pass the 4th arg t to add-hook also to
Noah Friedman <friedman@splode.com>
parents:
22597
diff
changeset
|
225 (add-hook 'comint-output-filter-functions 'rlogin-carriage-filter |
72418dac2378
(rlogin): If using make-local-hook, pass the 4th arg t to add-hook also to
Noah Friedman <friedman@splode.com>
parents:
22597
diff
changeset
|
226 nil t)) |
72418dac2378
(rlogin): If using make-local-hook, pass the 4th arg t to add-hook also to
Noah Friedman <friedman@splode.com>
parents:
22597
diff
changeset
|
227 (t |
72418dac2378
(rlogin): If using make-local-hook, pass the 4th arg t to add-hook also to
Noah Friedman <friedman@splode.com>
parents:
22597
diff
changeset
|
228 (make-local-variable 'comint-output-filter-functions) |
72418dac2378
(rlogin): If using make-local-hook, pass the 4th arg t to add-hook also to
Noah Friedman <friedman@splode.com>
parents:
22597
diff
changeset
|
229 (add-hook 'comint-output-filter-functions 'rlogin-carriage-filter))) |
10374
d6de68b87cbd
Removed several more gratuitous autoload cookies.
Noah Friedman <friedman@splode.com>
parents:
10130
diff
changeset
|
230 |
15182
cab8ffe3a3b7
(rlogin): Call rlogin-mode after adding rlogin-carriage-filter to output
Noah Friedman <friedman@splode.com>
parents:
14169
diff
changeset
|
231 (rlogin-mode) |
cab8ffe3a3b7
(rlogin): Call rlogin-mode after adding rlogin-carriage-filter to output
Noah Friedman <friedman@splode.com>
parents:
14169
diff
changeset
|
232 |
10374
d6de68b87cbd
Removed several more gratuitous autoload cookies.
Noah Friedman <friedman@splode.com>
parents:
10130
diff
changeset
|
233 (make-local-variable 'rlogin-host) |
d6de68b87cbd
Removed several more gratuitous autoload cookies.
Noah Friedman <friedman@splode.com>
parents:
10130
diff
changeset
|
234 (setq rlogin-host host) |
10384
1d0a7f841ffb
rlogin-tab-or-complete: insert tab in buffer, don't send directly to process.
Noah Friedman <friedman@splode.com>
parents:
10374
diff
changeset
|
235 (make-local-variable 'rlogin-remote-user) |
1d0a7f841ffb
rlogin-tab-or-complete: insert tab in buffer, don't send directly to process.
Noah Friedman <friedman@splode.com>
parents:
10374
diff
changeset
|
236 (setq rlogin-remote-user user) |
10374
d6de68b87cbd
Removed several more gratuitous autoload cookies.
Noah Friedman <friedman@splode.com>
parents:
10130
diff
changeset
|
237 |
15465
d2efb8b0d453
(rlogin): make comint-output-filter-functions local before adding hooks.
Noah Friedman <friedman@splode.com>
parents:
15436
diff
changeset
|
238 (condition-case () |
d2efb8b0d453
(rlogin): make comint-output-filter-functions local before adding hooks.
Noah Friedman <friedman@splode.com>
parents:
15436
diff
changeset
|
239 (cond ((eq rlogin-directory-tracking-mode t) |
d2efb8b0d453
(rlogin): make comint-output-filter-functions local before adding hooks.
Noah Friedman <friedman@splode.com>
parents:
15436
diff
changeset
|
240 ;; Do this here, rather than calling the tracking mode |
d2efb8b0d453
(rlogin): make comint-output-filter-functions local before adding hooks.
Noah Friedman <friedman@splode.com>
parents:
15436
diff
changeset
|
241 ;; function, to avoid a gratuitous resync check; the default |
d2efb8b0d453
(rlogin): make comint-output-filter-functions local before adding hooks.
Noah Friedman <friedman@splode.com>
parents:
15436
diff
changeset
|
242 ;; should be the user's home directory, be it local or remote. |
d2efb8b0d453
(rlogin): make comint-output-filter-functions local before adding hooks.
Noah Friedman <friedman@splode.com>
parents:
15436
diff
changeset
|
243 (setq comint-file-name-prefix |
d2efb8b0d453
(rlogin): make comint-output-filter-functions local before adding hooks.
Noah Friedman <friedman@splode.com>
parents:
15436
diff
changeset
|
244 (concat "/" rlogin-remote-user "@" rlogin-host ":")) |
d2efb8b0d453
(rlogin): make comint-output-filter-functions local before adding hooks.
Noah Friedman <friedman@splode.com>
parents:
15436
diff
changeset
|
245 (cd-absolute comint-file-name-prefix)) |
d2efb8b0d453
(rlogin): make comint-output-filter-functions local before adding hooks.
Noah Friedman <friedman@splode.com>
parents:
15436
diff
changeset
|
246 ((null rlogin-directory-tracking-mode)) |
d2efb8b0d453
(rlogin): make comint-output-filter-functions local before adding hooks.
Noah Friedman <friedman@splode.com>
parents:
15436
diff
changeset
|
247 (t |
d2efb8b0d453
(rlogin): make comint-output-filter-functions local before adding hooks.
Noah Friedman <friedman@splode.com>
parents:
15436
diff
changeset
|
248 (cd-absolute (concat comint-file-name-prefix "~/")))) |
d2efb8b0d453
(rlogin): make comint-output-filter-functions local before adding hooks.
Noah Friedman <friedman@splode.com>
parents:
15436
diff
changeset
|
249 (error nil)))))) |
10130
2fb93cbc2d87
(rlogin-initially-track-cwd): Now a 3-way flag.
Richard M. Stallman <rms@gnu.org>
parents:
9250
diff
changeset
|
250 |
17647
e99589f5ddd7
(rlogin-mode): Add a mode-class property.
Richard M. Stallman <rms@gnu.org>
parents:
17472
diff
changeset
|
251 (put 'rlogin-mode 'mode-class 'special) |
e99589f5ddd7
(rlogin-mode): Add a mode-class property.
Richard M. Stallman <rms@gnu.org>
parents:
17472
diff
changeset
|
252 |
2231 | 253 (defun rlogin-mode () |
10849
eb6af491e98f
(rlogin-carriage-filter): Don't assume region is narrowed to most recent
Noah Friedman <friedman@splode.com>
parents:
10384
diff
changeset
|
254 "Set major-mode for rlogin sessions. |
2539
577c77cfd199
*** empty log message ***
Noah Friedman <friedman@splode.com>
parents:
2405
diff
changeset
|
255 If `rlogin-mode-hook' is set, run it." |
2231 | 256 (interactive) |
2404
845db675b3e9
*** empty log message ***
Noah Friedman <friedman@splode.com>
parents:
2387
diff
changeset
|
257 (kill-all-local-variables) |
4678
cd842296bebf
(rlogin): After rlogin-mode, set comint-filename-prefix locally to indicate
Roland McGrath <roland@gnu.org>
parents:
2948
diff
changeset
|
258 (shell-mode) |
2231 | 259 (setq major-mode 'rlogin-mode) |
2404
845db675b3e9
*** empty log message ***
Noah Friedman <friedman@splode.com>
parents:
2387
diff
changeset
|
260 (setq mode-name "rlogin") |
2231 | 261 (use-local-map rlogin-mode-map) |
10374
d6de68b87cbd
Removed several more gratuitous autoload cookies.
Noah Friedman <friedman@splode.com>
parents:
10130
diff
changeset
|
262 (setq shell-dirtrackp rlogin-directory-tracking-mode) |
4874
20154e6389eb
(rlogin, rlogin-mode): Use comint-file-name-prefix,
Richard M. Stallman <rms@gnu.org>
parents:
4856
diff
changeset
|
263 (make-local-variable 'comint-file-name-prefix) |
2231 | 264 (run-hooks 'rlogin-mode-hook)) |
265 | |
10374
d6de68b87cbd
Removed several more gratuitous autoload cookies.
Noah Friedman <friedman@splode.com>
parents:
10130
diff
changeset
|
266 (defun rlogin-directory-tracking-mode (&optional prefix) |
d6de68b87cbd
Removed several more gratuitous autoload cookies.
Noah Friedman <friedman@splode.com>
parents:
10130
diff
changeset
|
267 "Do remote or local directory tracking, or disable entirely. |
d6de68b87cbd
Removed several more gratuitous autoload cookies.
Noah Friedman <friedman@splode.com>
parents:
10130
diff
changeset
|
268 |
d6de68b87cbd
Removed several more gratuitous autoload cookies.
Noah Friedman <friedman@splode.com>
parents:
10130
diff
changeset
|
269 If called with no prefix argument or a unspecified prefix argument (just |
d6de68b87cbd
Removed several more gratuitous autoload cookies.
Noah Friedman <friedman@splode.com>
parents:
10130
diff
changeset
|
270 ``\\[universal-argument]'' with no number) do remote directory tracking via |
d6de68b87cbd
Removed several more gratuitous autoload cookies.
Noah Friedman <friedman@splode.com>
parents:
10130
diff
changeset
|
271 ange-ftp. If called as a function, give it no argument. |
d6de68b87cbd
Removed several more gratuitous autoload cookies.
Noah Friedman <friedman@splode.com>
parents:
10130
diff
changeset
|
272 |
d6de68b87cbd
Removed several more gratuitous autoload cookies.
Noah Friedman <friedman@splode.com>
parents:
10130
diff
changeset
|
273 If called with a negative prefix argument, disable directory tracking |
d6de68b87cbd
Removed several more gratuitous autoload cookies.
Noah Friedman <friedman@splode.com>
parents:
10130
diff
changeset
|
274 entirely. |
d6de68b87cbd
Removed several more gratuitous autoload cookies.
Noah Friedman <friedman@splode.com>
parents:
10130
diff
changeset
|
275 |
10849
eb6af491e98f
(rlogin-carriage-filter): Don't assume region is narrowed to most recent
Noah Friedman <friedman@splode.com>
parents:
10384
diff
changeset
|
276 If called with a positive, numeric prefix argument, e.g. |
10374
d6de68b87cbd
Removed several more gratuitous autoload cookies.
Noah Friedman <friedman@splode.com>
parents:
10130
diff
changeset
|
277 ``\\[universal-argument] 1 M-x rlogin-directory-tracking-mode\'', |
d6de68b87cbd
Removed several more gratuitous autoload cookies.
Noah Friedman <friedman@splode.com>
parents:
10130
diff
changeset
|
278 then do directory tracking but assume the remote filesystem is the same as |
d6de68b87cbd
Removed several more gratuitous autoload cookies.
Noah Friedman <friedman@splode.com>
parents:
10130
diff
changeset
|
279 the local system. This only works in general if the remote machine and the |
d6de68b87cbd
Removed several more gratuitous autoload cookies.
Noah Friedman <friedman@splode.com>
parents:
10130
diff
changeset
|
280 local one share the same directories (through NFS)." |
d6de68b87cbd
Removed several more gratuitous autoload cookies.
Noah Friedman <friedman@splode.com>
parents:
10130
diff
changeset
|
281 (interactive "P") |
d6de68b87cbd
Removed several more gratuitous autoload cookies.
Noah Friedman <friedman@splode.com>
parents:
10130
diff
changeset
|
282 (cond |
d6de68b87cbd
Removed several more gratuitous autoload cookies.
Noah Friedman <friedman@splode.com>
parents:
10130
diff
changeset
|
283 ((or (null prefix) |
d6de68b87cbd
Removed several more gratuitous autoload cookies.
Noah Friedman <friedman@splode.com>
parents:
10130
diff
changeset
|
284 (consp prefix)) |
d6de68b87cbd
Removed several more gratuitous autoload cookies.
Noah Friedman <friedman@splode.com>
parents:
10130
diff
changeset
|
285 (setq rlogin-directory-tracking-mode t) |
11276
7b78e66e6e3d
(rlogin-directory-tracking-mode): Set shell-dirtrackp, not shell-dirtrack-p.
Noah Friedman <friedman@splode.com>
parents:
11274
diff
changeset
|
286 (setq shell-dirtrackp t) |
10849
eb6af491e98f
(rlogin-carriage-filter): Don't assume region is narrowed to most recent
Noah Friedman <friedman@splode.com>
parents:
10384
diff
changeset
|
287 (setq comint-file-name-prefix |
10384
1d0a7f841ffb
rlogin-tab-or-complete: insert tab in buffer, don't send directly to process.
Noah Friedman <friedman@splode.com>
parents:
10374
diff
changeset
|
288 (concat "/" rlogin-remote-user "@" rlogin-host ":"))) |
10374
d6de68b87cbd
Removed several more gratuitous autoload cookies.
Noah Friedman <friedman@splode.com>
parents:
10130
diff
changeset
|
289 ((< prefix 0) |
d6de68b87cbd
Removed several more gratuitous autoload cookies.
Noah Friedman <friedman@splode.com>
parents:
10130
diff
changeset
|
290 (setq rlogin-directory-tracking-mode nil) |
11276
7b78e66e6e3d
(rlogin-directory-tracking-mode): Set shell-dirtrackp, not shell-dirtrack-p.
Noah Friedman <friedman@splode.com>
parents:
11274
diff
changeset
|
291 (setq shell-dirtrackp nil)) |
10374
d6de68b87cbd
Removed several more gratuitous autoload cookies.
Noah Friedman <friedman@splode.com>
parents:
10130
diff
changeset
|
292 (t |
d6de68b87cbd
Removed several more gratuitous autoload cookies.
Noah Friedman <friedman@splode.com>
parents:
10130
diff
changeset
|
293 (setq rlogin-directory-tracking-mode 'local) |
d6de68b87cbd
Removed several more gratuitous autoload cookies.
Noah Friedman <friedman@splode.com>
parents:
10130
diff
changeset
|
294 (setq comint-file-name-prefix "") |
11276
7b78e66e6e3d
(rlogin-directory-tracking-mode): Set shell-dirtrackp, not shell-dirtrack-p.
Noah Friedman <friedman@splode.com>
parents:
11274
diff
changeset
|
295 (setq shell-dirtrackp t))) |
10849
eb6af491e98f
(rlogin-carriage-filter): Don't assume region is narrowed to most recent
Noah Friedman <friedman@splode.com>
parents:
10384
diff
changeset
|
296 (cond |
11276
7b78e66e6e3d
(rlogin-directory-tracking-mode): Set shell-dirtrackp, not shell-dirtrack-p.
Noah Friedman <friedman@splode.com>
parents:
11274
diff
changeset
|
297 (shell-dirtrackp |
10374
d6de68b87cbd
Removed several more gratuitous autoload cookies.
Noah Friedman <friedman@splode.com>
parents:
10130
diff
changeset
|
298 (let* ((proc (get-buffer-process (current-buffer))) |
d6de68b87cbd
Removed several more gratuitous autoload cookies.
Noah Friedman <friedman@splode.com>
parents:
10130
diff
changeset
|
299 (proc-mark (process-mark proc)) |
d6de68b87cbd
Removed several more gratuitous autoload cookies.
Noah Friedman <friedman@splode.com>
parents:
10130
diff
changeset
|
300 (current-input (buffer-substring proc-mark (point-max))) |
d6de68b87cbd
Removed several more gratuitous autoload cookies.
Noah Friedman <friedman@splode.com>
parents:
10130
diff
changeset
|
301 (orig-point (point)) |
d6de68b87cbd
Removed several more gratuitous autoload cookies.
Noah Friedman <friedman@splode.com>
parents:
10130
diff
changeset
|
302 (offset (and (>= orig-point proc-mark) |
d6de68b87cbd
Removed several more gratuitous autoload cookies.
Noah Friedman <friedman@splode.com>
parents:
10130
diff
changeset
|
303 (- (point-max) orig-point)))) |
d6de68b87cbd
Removed several more gratuitous autoload cookies.
Noah Friedman <friedman@splode.com>
parents:
10130
diff
changeset
|
304 (unwind-protect |
d6de68b87cbd
Removed several more gratuitous autoload cookies.
Noah Friedman <friedman@splode.com>
parents:
10130
diff
changeset
|
305 (progn |
d6de68b87cbd
Removed several more gratuitous autoload cookies.
Noah Friedman <friedman@splode.com>
parents:
10130
diff
changeset
|
306 (delete-region proc-mark (point-max)) |
d6de68b87cbd
Removed several more gratuitous autoload cookies.
Noah Friedman <friedman@splode.com>
parents:
10130
diff
changeset
|
307 (goto-char (point-max)) |
d6de68b87cbd
Removed several more gratuitous autoload cookies.
Noah Friedman <friedman@splode.com>
parents:
10130
diff
changeset
|
308 (shell-resync-dirs)) |
d6de68b87cbd
Removed several more gratuitous autoload cookies.
Noah Friedman <friedman@splode.com>
parents:
10130
diff
changeset
|
309 (goto-char proc-mark) |
d6de68b87cbd
Removed several more gratuitous autoload cookies.
Noah Friedman <friedman@splode.com>
parents:
10130
diff
changeset
|
310 (insert current-input) |
d6de68b87cbd
Removed several more gratuitous autoload cookies.
Noah Friedman <friedman@splode.com>
parents:
10130
diff
changeset
|
311 (if offset |
d6de68b87cbd
Removed several more gratuitous autoload cookies.
Noah Friedman <friedman@splode.com>
parents:
10130
diff
changeset
|
312 (goto-char (- (point-max) offset)) |
d6de68b87cbd
Removed several more gratuitous autoload cookies.
Noah Friedman <friedman@splode.com>
parents:
10130
diff
changeset
|
313 (goto-char orig-point))))))) |
d6de68b87cbd
Removed several more gratuitous autoload cookies.
Noah Friedman <friedman@splode.com>
parents:
10130
diff
changeset
|
314 |
2539
577c77cfd199
*** empty log message ***
Noah Friedman <friedman@splode.com>
parents:
2405
diff
changeset
|
315 |
10374
d6de68b87cbd
Removed several more gratuitous autoload cookies.
Noah Friedman <friedman@splode.com>
parents:
10130
diff
changeset
|
316 ;; Parse a line into its constituent parts (words separated by |
d6de68b87cbd
Removed several more gratuitous autoload cookies.
Noah Friedman <friedman@splode.com>
parents:
10130
diff
changeset
|
317 ;; whitespace). Return a list of the words. |
d6de68b87cbd
Removed several more gratuitous autoload cookies.
Noah Friedman <friedman@splode.com>
parents:
10130
diff
changeset
|
318 (defun rlogin-parse-words (line) |
d6de68b87cbd
Removed several more gratuitous autoload cookies.
Noah Friedman <friedman@splode.com>
parents:
10130
diff
changeset
|
319 (let ((list nil) |
d6de68b87cbd
Removed several more gratuitous autoload cookies.
Noah Friedman <friedman@splode.com>
parents:
10130
diff
changeset
|
320 (posn 0) |
d6de68b87cbd
Removed several more gratuitous autoload cookies.
Noah Friedman <friedman@splode.com>
parents:
10130
diff
changeset
|
321 (match-data (match-data))) |
d6de68b87cbd
Removed several more gratuitous autoload cookies.
Noah Friedman <friedman@splode.com>
parents:
10130
diff
changeset
|
322 (while (string-match "[^ \t\n]+" line posn) |
d6de68b87cbd
Removed several more gratuitous autoload cookies.
Noah Friedman <friedman@splode.com>
parents:
10130
diff
changeset
|
323 (setq list (cons (substring line (match-beginning 0) (match-end 0)) |
d6de68b87cbd
Removed several more gratuitous autoload cookies.
Noah Friedman <friedman@splode.com>
parents:
10130
diff
changeset
|
324 list)) |
d6de68b87cbd
Removed several more gratuitous autoload cookies.
Noah Friedman <friedman@splode.com>
parents:
10130
diff
changeset
|
325 (setq posn (match-end 0))) |
21158
7ba84f53e054
(rlogin-parse-words): store-match-data => set-match-data.
Richard M. Stallman <rms@gnu.org>
parents:
18419
diff
changeset
|
326 (set-match-data (match-data)) |
10374
d6de68b87cbd
Removed several more gratuitous autoload cookies.
Noah Friedman <friedman@splode.com>
parents:
10130
diff
changeset
|
327 (nreverse list))) |
d6de68b87cbd
Removed several more gratuitous autoload cookies.
Noah Friedman <friedman@splode.com>
parents:
10130
diff
changeset
|
328 |
10849
eb6af491e98f
(rlogin-carriage-filter): Don't assume region is narrowed to most recent
Noah Friedman <friedman@splode.com>
parents:
10384
diff
changeset
|
329 (defun rlogin-carriage-filter (string) |
eb6af491e98f
(rlogin-carriage-filter): Don't assume region is narrowed to most recent
Noah Friedman <friedman@splode.com>
parents:
10384
diff
changeset
|
330 (let* ((point-marker (point-marker)) |
eb6af491e98f
(rlogin-carriage-filter): Don't assume region is narrowed to most recent
Noah Friedman <friedman@splode.com>
parents:
10384
diff
changeset
|
331 (end (process-mark (get-buffer-process (current-buffer)))) |
eb6af491e98f
(rlogin-carriage-filter): Don't assume region is narrowed to most recent
Noah Friedman <friedman@splode.com>
parents:
10384
diff
changeset
|
332 (beg (or (and (boundp 'comint-last-output-start) |
eb6af491e98f
(rlogin-carriage-filter): Don't assume region is narrowed to most recent
Noah Friedman <friedman@splode.com>
parents:
10384
diff
changeset
|
333 comint-last-output-start) |
eb6af491e98f
(rlogin-carriage-filter): Don't assume region is narrowed to most recent
Noah Friedman <friedman@splode.com>
parents:
10384
diff
changeset
|
334 (- end (length string))))) |
eb6af491e98f
(rlogin-carriage-filter): Don't assume region is narrowed to most recent
Noah Friedman <friedman@splode.com>
parents:
10384
diff
changeset
|
335 (goto-char beg) |
eb6af491e98f
(rlogin-carriage-filter): Don't assume region is narrowed to most recent
Noah Friedman <friedman@splode.com>
parents:
10384
diff
changeset
|
336 (while (search-forward "\C-m" end t) |
10374
d6de68b87cbd
Removed several more gratuitous autoload cookies.
Noah Friedman <friedman@splode.com>
parents:
10130
diff
changeset
|
337 (delete-char -1)) |
d6de68b87cbd
Removed several more gratuitous autoload cookies.
Noah Friedman <friedman@splode.com>
parents:
10130
diff
changeset
|
338 (goto-char point-marker))) |
d6de68b87cbd
Removed several more gratuitous autoload cookies.
Noah Friedman <friedman@splode.com>
parents:
10130
diff
changeset
|
339 |
2231 | 340 (defun rlogin-send-Ctrl-C () |
341 (interactive) | |
23369
e2d1e6562433
(rlogin-send-Ctrl-C): Use process-send-string, not send-string.
Noah Friedman <friedman@splode.com>
parents:
23237
diff
changeset
|
342 (process-send-string nil "\C-c")) |
2231 | 343 |
5792
242985a124fc
Removed many extra autoload cookies.
Roland McGrath <roland@gnu.org>
parents:
5208
diff
changeset
|
344 (defun rlogin-send-Ctrl-D () |
242985a124fc
Removed many extra autoload cookies.
Roland McGrath <roland@gnu.org>
parents:
5208
diff
changeset
|
345 (interactive) |
23369
e2d1e6562433
(rlogin-send-Ctrl-C): Use process-send-string, not send-string.
Noah Friedman <friedman@splode.com>
parents:
23237
diff
changeset
|
346 (process-send-string nil "\C-d")) |
5792
242985a124fc
Removed many extra autoload cookies.
Roland McGrath <roland@gnu.org>
parents:
5208
diff
changeset
|
347 |
2231 | 348 (defun rlogin-send-Ctrl-Z () |
349 (interactive) | |
23369
e2d1e6562433
(rlogin-send-Ctrl-C): Use process-send-string, not send-string.
Noah Friedman <friedman@splode.com>
parents:
23237
diff
changeset
|
350 (process-send-string nil "\C-z")) |
2231 | 351 |
352 (defun rlogin-send-Ctrl-backslash () | |
353 (interactive) | |
23369
e2d1e6562433
(rlogin-send-Ctrl-C): Use process-send-string, not send-string.
Noah Friedman <friedman@splode.com>
parents:
23237
diff
changeset
|
354 (process-send-string nil "\C-\\")) |
2231 | 355 |
356 (defun rlogin-delchar-or-send-Ctrl-D (arg) | |
5793
85abf27f701f
(rlogin-delchar-or-send-Ctrl-D): Call rlogin-send-Ctrl-D. Doc fix.
Roland McGrath <roland@gnu.org>
parents:
5792
diff
changeset
|
357 "\ |
10849
eb6af491e98f
(rlogin-carriage-filter): Don't assume region is narrowed to most recent
Noah Friedman <friedman@splode.com>
parents:
10384
diff
changeset
|
358 Delete ARG characters forward, or send a C-d to process if at end of buffer." |
eb6af491e98f
(rlogin-carriage-filter): Don't assume region is narrowed to most recent
Noah Friedman <friedman@splode.com>
parents:
10384
diff
changeset
|
359 (interactive "p") |
2231 | 360 (if (eobp) |
5793
85abf27f701f
(rlogin-delchar-or-send-Ctrl-D): Call rlogin-send-Ctrl-D. Doc fix.
Roland McGrath <roland@gnu.org>
parents:
5792
diff
changeset
|
361 (rlogin-send-Ctrl-D) |
2231 | 362 (delete-char arg))) |
363 | |
10374
d6de68b87cbd
Removed several more gratuitous autoload cookies.
Noah Friedman <friedman@splode.com>
parents:
10130
diff
changeset
|
364 (defun rlogin-tab-or-complete () |
10384
1d0a7f841ffb
rlogin-tab-or-complete: insert tab in buffer, don't send directly to process.
Noah Friedman <friedman@splode.com>
parents:
10374
diff
changeset
|
365 "Complete file name if doing directory tracking, or just insert TAB." |
10374
d6de68b87cbd
Removed several more gratuitous autoload cookies.
Noah Friedman <friedman@splode.com>
parents:
10130
diff
changeset
|
366 (interactive) |
d6de68b87cbd
Removed several more gratuitous autoload cookies.
Noah Friedman <friedman@splode.com>
parents:
10130
diff
changeset
|
367 (if rlogin-directory-tracking-mode |
d6de68b87cbd
Removed several more gratuitous autoload cookies.
Noah Friedman <friedman@splode.com>
parents:
10130
diff
changeset
|
368 (comint-dynamic-complete) |
10384
1d0a7f841ffb
rlogin-tab-or-complete: insert tab in buffer, don't send directly to process.
Noah Friedman <friedman@splode.com>
parents:
10374
diff
changeset
|
369 (insert "\C-i"))) |
10374
d6de68b87cbd
Removed several more gratuitous autoload cookies.
Noah Friedman <friedman@splode.com>
parents:
10130
diff
changeset
|
370 |
18419 | 371 (provide 'rlogin) |
372 | |
2233
fb0ed5a1d0f3
Add standard library headers.
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
2231
diff
changeset
|
373 ;;; rlogin.el ends here |