annotate lisp/rlogin.el @ 16883:d1d4d81f9ece

Change all uses of win95, winnt, and win32 into Windows 95, Windows NT, and W32, respectively. Expand "win" substring in variables referring to Microsoft Windows constructs into "windows". Canonicalize header comments to use same terminology.
author Geoff Voelker <voelker@cs.washington.edu>
date Mon, 20 Jan 1997 00:34:34 +0000
parents 1fe754bafbcb
children cc4d6343afca
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13310
diff changeset
3 ;; Copyright (C) 1992, 1993, 1994, 1995 Free Software Foundation, Inc.
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13310
diff changeset
4
2539
577c77cfd199 *** empty log message ***
Noah Friedman <friedman@splode.com>
parents: 2405
diff changeset
5 ;; Author: Noah Friedman
2233
fb0ed5a1d0f3 Add standard library headers.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2231
diff changeset
6 ;; Maintainer: Noah Friedman <friedman@prep.ai.mit.edu>
2259
2ba32183ea62 Added keyword.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2233
diff changeset
7 ;; Keywords: unix, comm
2233
fb0ed5a1d0f3 Add standard library headers.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2231
diff changeset
8
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13310
diff changeset
9 ;; This file is part of GNU Emacs.
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13310
diff changeset
10
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13310
diff changeset
11 ;; 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
12 ;; 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
13 ;; 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
14 ;; any later version.
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13310
diff changeset
15
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13310
diff changeset
16 ;; 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
17 ;; 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
18 ;; 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
19 ;; GNU General Public License for more details.
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13310
diff changeset
20
2315
9e7ec92a4fdf Added or corrected Commentary headers
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2259
diff changeset
21 ;; You should have received a copy of the GNU General Public License
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13310
diff changeset
22 ;; along with GNU Emacs; see the file COPYING. If not, write to the
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13310
diff changeset
23 ;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13310
diff changeset
24 ;; Boston, MA 02111-1307, USA.
2231
1c7ad2a0f4d9 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
25
15490
1fe754bafbcb (rlogin): add rlogin-carriage-filter to comint-output-filter-functions, not
Noah Friedman <friedman@splode.com>
parents: 15465
diff changeset
26 ;; $Id: rlogin.el,v 1.34 1996/06/20 17:30:41 friedman Exp friedman $
10374
d6de68b87cbd Removed several more gratuitous autoload cookies.
Noah Friedman <friedman@splode.com>
parents: 10130
diff changeset
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
1c7ad2a0f4d9 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
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
1c7ad2a0f4d9 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
42 (require 'comint)
4685
3bf9019e5c39 require 'shell
Noah Friedman <friedman@splode.com>
parents: 4678
diff changeset
43 (require 'shell)
2231
1c7ad2a0f4d9 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
44
1c7ad2a0f4d9 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
45 (defvar rlogin-program "rlogin"
1c7ad2a0f4d9 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
46 "*Name of program to invoke rlogin")
1c7ad2a0f4d9 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
47
2404
845db675b3e9 *** empty log message ***
Noah Friedman <friedman@splode.com>
parents: 2387
diff changeset
48 (defvar rlogin-explicit-args nil
845db675b3e9 *** empty log message ***
Noah Friedman <friedman@splode.com>
parents: 2387
diff changeset
49 "*List of arguments to pass to rlogin on the command line.")
845db675b3e9 *** empty log message ***
Noah Friedman <friedman@splode.com>
parents: 2387
diff changeset
50
2231
1c7ad2a0f4d9 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
51 (defvar rlogin-mode-hook nil
1c7ad2a0f4d9 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
52 "*Hooks to run after setting current buffer to rlogin-mode.")
1c7ad2a0f4d9 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
53
2539
577c77cfd199 *** empty log message ***
Noah Friedman <friedman@splode.com>
parents: 2405
diff changeset
54 (defvar rlogin-process-connection-type nil
10849
eb6af491e98f (rlogin-carriage-filter): Don't assume region is narrowed to most recent
Noah Friedman <friedman@splode.com>
parents: 10384
diff changeset
55 "*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
56 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
57
577c77cfd199 *** empty log message ***
Noah Friedman <friedman@splode.com>
parents: 2405
diff changeset
58 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
59 number of them. On the other hand, some implementations of `rlogin' assume
577c77cfd199 *** empty log message ***
Noah Friedman <friedman@splode.com>
parents: 2405
diff changeset
60 a pty is being used, and errors will result from using a pipe instead.")
577c77cfd199 *** empty log message ***
Noah Friedman <friedman@splode.com>
parents: 2405
diff changeset
61
10374
d6de68b87cbd Removed several more gratuitous autoload cookies.
Noah Friedman <friedman@splode.com>
parents: 10130
diff changeset
62 (defvar 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
63 "*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
64
10130
2fb93cbc2d87 (rlogin-initially-track-cwd): Now a 3-way flag.
Richard M. Stallman <rms@gnu.org>
parents: 9250
diff changeset
65 nil means don't do directory tracking.
10374
d6de68b87cbd Removed several more gratuitous autoload cookies.
Noah Friedman <friedman@splode.com>
parents: 10130
diff changeset
66
10130
2fb93cbc2d87 (rlogin-initially-track-cwd): Now a 3-way flag.
Richard M. Stallman <rms@gnu.org>
parents: 9250
diff changeset
67 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
68
10130
2fb93cbc2d87 (rlogin-initially-track-cwd): Now a 3-way flag.
Richard M. Stallman <rms@gnu.org>
parents: 9250
diff changeset
69 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
70 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
71 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
72
d6de68b87cbd Removed several more gratuitous autoload cookies.
Noah Friedman <friedman@splode.com>
parents: 10130
diff changeset
73 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
74
d6de68b87cbd Removed several more gratuitous autoload cookies.
Noah Friedman <friedman@splode.com>
parents: 10130
diff changeset
75 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
76 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
77 simply setting this variable, since the function does the necessary
d6de68b87cbd Removed several more gratuitous autoload cookies.
Noah Friedman <friedman@splode.com>
parents: 10130
diff changeset
78 re-synching of directories.")
d6de68b87cbd Removed several more gratuitous autoload cookies.
Noah Friedman <friedman@splode.com>
parents: 10130
diff changeset
79
d6de68b87cbd Removed several more gratuitous autoload cookies.
Noah Friedman <friedman@splode.com>
parents: 10130
diff changeset
80 (make-variable-buffer-local 'rlogin-directory-tracking-mode)
d6de68b87cbd Removed several more gratuitous autoload cookies.
Noah Friedman <friedman@splode.com>
parents: 10130
diff changeset
81
d6de68b87cbd Removed several more gratuitous autoload cookies.
Noah Friedman <friedman@splode.com>
parents: 10130
diff changeset
82 (defvar rlogin-host nil
d6de68b87cbd Removed several more gratuitous autoload cookies.
Noah Friedman <friedman@splode.com>
parents: 10130
diff changeset
83 "*The name of the remote host. This variable is buffer-local.")
d6de68b87cbd Removed several more gratuitous autoload cookies.
Noah Friedman <friedman@splode.com>
parents: 10130
diff changeset
84
d6de68b87cbd Removed several more gratuitous autoload cookies.
Noah Friedman <friedman@splode.com>
parents: 10130
diff changeset
85 (defvar rlogin-remote-user nil
d6de68b87cbd Removed several more gratuitous autoload cookies.
Noah Friedman <friedman@splode.com>
parents: 10130
diff changeset
86 "*The username used on the remote host.
d6de68b87cbd Removed several more gratuitous autoload cookies.
Noah Friedman <friedman@splode.com>
parents: 10130
diff changeset
87 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
88 If rlogin is invoked with the `-l' option to specify the remote username,
d6de68b87cbd Removed several more gratuitous autoload cookies.
Noah Friedman <friedman@splode.com>
parents: 10130
diff changeset
89 this variable is set from that.")
4856
896f3b49b53c (rlogin-initially-track-cwd): New variable.
Noah Friedman <friedman@splode.com>
parents: 4685
diff changeset
90
2231
1c7ad2a0f4d9 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
91 ;; Initialize rlogin mode map.
1c7ad2a0f4d9 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
92 (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
93 (cond
10374
d6de68b87cbd Removed several more gratuitous autoload cookies.
Noah Friedman <friedman@splode.com>
parents: 10130
diff changeset
94 ((null rlogin-mode-map)
d6de68b87cbd Removed several more gratuitous autoload cookies.
Noah Friedman <friedman@splode.com>
parents: 10130
diff changeset
95 (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
96 (cons 'keymap shell-mode-map)
d6de68b87cbd Removed several more gratuitous autoload cookies.
Noah Friedman <friedman@splode.com>
parents: 10130
diff changeset
97 (copy-keymap shell-mode-map)))
d6de68b87cbd Removed several more gratuitous autoload cookies.
Noah Friedman <friedman@splode.com>
parents: 10130
diff changeset
98 (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
99 (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
100 (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
101 (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
102 (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
103 (define-key rlogin-mode-map "\C-i" 'rlogin-tab-or-complete)))
2231
1c7ad2a0f4d9 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
104
10374
d6de68b87cbd Removed several more gratuitous autoload cookies.
Noah Friedman <friedman@splode.com>
parents: 10130
diff changeset
105
10977
a173cfead4ce (rlogin): Use pop-to-buffer.
Richard M. Stallman <rms@gnu.org>
parents: 10849
diff changeset
106 ;;;###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
107
11805
95a2506fba60 (rlogin-history): New defvar.
Roland McGrath <roland@gnu.org>
parents: 11276
diff changeset
108 (defvar rlogin-history nil)
95a2506fba60 (rlogin-history): New defvar.
Roland McGrath <roland@gnu.org>
parents: 11276
diff changeset
109
2387
cb44857cab89 moby rlogin-filter fixes
Noah Friedman <friedman@splode.com>
parents: 2315
diff changeset
110 ;;;###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
111 (defun rlogin (input-args &optional buffer)
15436
0dd0e409b9fb (rlogin): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 15182
diff changeset
112 "Open a network login connection via `rlogin' with args INPUT-ARGS.
0dd0e409b9fb (rlogin): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 15182
diff changeset
113 INPUT-ARGS should start with a host name; it may also contain
0dd0e409b9fb (rlogin): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 15182
diff changeset
114 other arguments for `rlogin'.
0dd0e409b9fb (rlogin): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 15182
diff changeset
115
2404
845db675b3e9 *** empty log message ***
Noah Friedman <friedman@splode.com>
parents: 2387
diff changeset
116 Input is sent line-at-a-time to the remote connection.
845db675b3e9 *** empty log message ***
Noah Friedman <friedman@splode.com>
parents: 2387
diff changeset
117
10977
a173cfead4ce (rlogin): Use pop-to-buffer.
Richard M. Stallman <rms@gnu.org>
parents: 10849
diff changeset
118 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
119 \(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
120 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
121 a new buffer with a different connection will be made.
2404
845db675b3e9 *** empty log message ***
Noah Friedman <friedman@splode.com>
parents: 2387
diff changeset
122
15436
0dd0e409b9fb (rlogin): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 15182
diff changeset
123 When called from a program, if the optional second argument BUFFER is
0dd0e409b9fb (rlogin): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 15182
diff changeset
124 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
125
2404
845db675b3e9 *** empty log message ***
Noah Friedman <friedman@splode.com>
parents: 2387
diff changeset
126 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
127 run. It can be a relative or absolute path.
2404
845db675b3e9 *** empty log message ***
Noah Friedman <friedman@splode.com>
parents: 2387
diff changeset
128
845db675b3e9 *** empty log message ***
Noah Friedman <friedman@splode.com>
parents: 2387
diff changeset
129 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
130 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
131 INPUT-ARGS.
9250
7cf726dccf2e (rlogin): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 8917
diff changeset
132
10374
d6de68b87cbd Removed several more gratuitous autoload cookies.
Noah Friedman <friedman@splode.com>
parents: 10130
diff changeset
133 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
134 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
135 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
136 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
137 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
138
10374
d6de68b87cbd Removed several more gratuitous autoload cookies.
Noah Friedman <friedman@splode.com>
parents: 10130
diff changeset
139 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
140 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
141 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
142 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
143
d6de68b87cbd Removed several more gratuitous autoload cookies.
Noah Friedman <friedman@splode.com>
parents: 10130
diff changeset
144 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
145 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
146 variable."
8917
de32691e953c * rlogin.el (rlogin): recognise the `-l user' option to rlogin and
Francesco Potortì <pot@gnu.org>
parents: 7922
diff changeset
147 (interactive (list
11805
95a2506fba60 (rlogin-history): New defvar.
Roland McGrath <roland@gnu.org>
parents: 11276
diff changeset
148 (read-from-minibuffer "rlogin arguments (hostname first): "
95a2506fba60 (rlogin-history): New defvar.
Roland McGrath <roland@gnu.org>
parents: 11276
diff changeset
149 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
150 current-prefix-arg))
10374
d6de68b87cbd Removed several more gratuitous autoload cookies.
Noah Friedman <friedman@splode.com>
parents: 10130
diff changeset
151
2539
577c77cfd199 *** empty log message ***
Noah Friedman <friedman@splode.com>
parents: 2405
diff changeset
152 (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
153 (args (if rlogin-explicit-args
d6de68b87cbd Removed several more gratuitous autoload cookies.
Noah Friedman <friedman@splode.com>
parents: 10130
diff changeset
154 (append (rlogin-parse-words input-args)
d6de68b87cbd Removed several more gratuitous autoload cookies.
Noah Friedman <friedman@splode.com>
parents: 10130
diff changeset
155 rlogin-explicit-args)
d6de68b87cbd Removed several more gratuitous autoload cookies.
Noah Friedman <friedman@splode.com>
parents: 10130
diff changeset
156 (rlogin-parse-words input-args)))
d6de68b87cbd Removed several more gratuitous autoload cookies.
Noah Friedman <friedman@splode.com>
parents: 10130
diff changeset
157 (host (car args))
d6de68b87cbd Removed several more gratuitous autoload cookies.
Noah Friedman <friedman@splode.com>
parents: 10130
diff changeset
158 (user (or (car (cdr (member "-l" args)))
d6de68b87cbd Removed several more gratuitous autoload cookies.
Noah Friedman <friedman@splode.com>
parents: 10130
diff changeset
159 (user-login-name)))
d6de68b87cbd Removed several more gratuitous autoload cookies.
Noah Friedman <friedman@splode.com>
parents: 10130
diff changeset
160 (buffer-name (if (string= user (user-login-name))
d6de68b87cbd Removed several more gratuitous autoload cookies.
Noah Friedman <friedman@splode.com>
parents: 10130
diff changeset
161 (format "*rlogin-%s*" host)
d6de68b87cbd Removed several more gratuitous autoload cookies.
Noah Friedman <friedman@splode.com>
parents: 10130
diff changeset
162 (format "*rlogin-%s@%s*" user host)))
d6de68b87cbd Removed several more gratuitous autoload cookies.
Noah Friedman <friedman@splode.com>
parents: 10130
diff changeset
163 proc)
d6de68b87cbd Removed several more gratuitous autoload cookies.
Noah Friedman <friedman@splode.com>
parents: 10130
diff changeset
164
12126
0b0b0c2e5254 (rlogin): If optional second arg is buffer or string, use that as name.
Roland McGrath <roland@gnu.org>
parents: 11805
diff changeset
165 (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
166 ((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
167 (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
168 ((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
169 (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
170 ((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
171 (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
172 (t
57b244b67848 (rlogin): Use format, not concat, to generate numeric buffer names.
Noah Friedman <friedman@splode.com>
parents: 10977
diff changeset
173 (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
174
13310
5280c707658e (rlogin): If `buffer' arg is a buffer object, initialize buffer-name to the
Noah Friedman <friedman@splode.com>
parents: 12126
diff changeset
175 (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
176 (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
177
10374
d6de68b87cbd Removed several more gratuitous autoload cookies.
Noah Friedman <friedman@splode.com>
parents: 10130
diff changeset
178 (cond
11274
57b244b67848 (rlogin): Use format, not concat, to generate numeric buffer names.
Noah Friedman <friedman@splode.com>
parents: 10977
diff changeset
179 ((comint-check-proc buffer-name))
10374
d6de68b87cbd Removed several more gratuitous autoload cookies.
Noah Friedman <friedman@splode.com>
parents: 10130
diff changeset
180 (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
181 (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
182 (setq proc (get-buffer-process buffer))
10374
d6de68b87cbd Removed several more gratuitous autoload cookies.
Noah Friedman <friedman@splode.com>
parents: 10130
diff changeset
183 ;; 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
184 ;; buffer from a previous exited process.
d6de68b87cbd Removed several more gratuitous autoload cookies.
Noah Friedman <friedman@splode.com>
parents: 10130
diff changeset
185 (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
186
10374
d6de68b87cbd Removed several more gratuitous autoload cookies.
Noah Friedman <friedman@splode.com>
parents: 10130
diff changeset
187 ;; comint-output-filter-functions is just like a hook, except that the
d6de68b87cbd Removed several more gratuitous autoload cookies.
Noah Friedman <friedman@splode.com>
parents: 10130
diff changeset
188 ;; functions in that list are passed arguments. add-hook serves well
d6de68b87cbd Removed several more gratuitous autoload cookies.
Noah Friedman <friedman@splode.com>
parents: 10130
diff changeset
189 ;; enough for modifying it.
15465
d2efb8b0d453 (rlogin): make comint-output-filter-functions local before adding hooks.
Noah Friedman <friedman@splode.com>
parents: 15436
diff changeset
190 ;; 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
191 ;; permanent-local property, at least in emacs 19.27 or later.
d2efb8b0d453 (rlogin): make comint-output-filter-functions local before adding hooks.
Noah Friedman <friedman@splode.com>
parents: 15436
diff changeset
192 (if (fboundp 'make-local-hook)
d2efb8b0d453 (rlogin): make comint-output-filter-functions local before adding hooks.
Noah Friedman <friedman@splode.com>
parents: 15436
diff changeset
193 (make-local-hook 'comint-output-filter-functions)
d2efb8b0d453 (rlogin): make comint-output-filter-functions local before adding hooks.
Noah Friedman <friedman@splode.com>
parents: 15436
diff changeset
194 (make-local-variable 'comint-output-filter-functions))
15490
1fe754bafbcb (rlogin): add rlogin-carriage-filter to comint-output-filter-functions, not
Noah Friedman <friedman@splode.com>
parents: 15465
diff changeset
195 (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
196
15182
cab8ffe3a3b7 (rlogin): Call rlogin-mode after adding rlogin-carriage-filter to output
Noah Friedman <friedman@splode.com>
parents: 14169
diff changeset
197 (rlogin-mode)
cab8ffe3a3b7 (rlogin): Call rlogin-mode after adding rlogin-carriage-filter to output
Noah Friedman <friedman@splode.com>
parents: 14169
diff changeset
198
10374
d6de68b87cbd Removed several more gratuitous autoload cookies.
Noah Friedman <friedman@splode.com>
parents: 10130
diff changeset
199 (make-local-variable 'rlogin-host)
d6de68b87cbd Removed several more gratuitous autoload cookies.
Noah Friedman <friedman@splode.com>
parents: 10130
diff changeset
200 (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
201 (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
202 (setq rlogin-remote-user user)
10374
d6de68b87cbd Removed several more gratuitous autoload cookies.
Noah Friedman <friedman@splode.com>
parents: 10130
diff changeset
203
15465
d2efb8b0d453 (rlogin): make comint-output-filter-functions local before adding hooks.
Noah Friedman <friedman@splode.com>
parents: 15436
diff changeset
204 (condition-case ()
d2efb8b0d453 (rlogin): make comint-output-filter-functions local before adding hooks.
Noah Friedman <friedman@splode.com>
parents: 15436
diff changeset
205 (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
206 ;; 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
207 ;; 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
208 ;; 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
209 (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
210 (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
211 (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
212 ((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
213 (t
d2efb8b0d453 (rlogin): make comint-output-filter-functions local before adding hooks.
Noah Friedman <friedman@splode.com>
parents: 15436
diff changeset
214 (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
215 (error nil))))))
10130
2fb93cbc2d87 (rlogin-initially-track-cwd): Now a 3-way flag.
Richard M. Stallman <rms@gnu.org>
parents: 9250
diff changeset
216
2231
1c7ad2a0f4d9 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
217 (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
218 "Set major-mode for rlogin sessions.
2539
577c77cfd199 *** empty log message ***
Noah Friedman <friedman@splode.com>
parents: 2405
diff changeset
219 If `rlogin-mode-hook' is set, run it."
2231
1c7ad2a0f4d9 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
220 (interactive)
2404
845db675b3e9 *** empty log message ***
Noah Friedman <friedman@splode.com>
parents: 2387
diff changeset
221 (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
222 (shell-mode)
2231
1c7ad2a0f4d9 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
223 (setq major-mode 'rlogin-mode)
2404
845db675b3e9 *** empty log message ***
Noah Friedman <friedman@splode.com>
parents: 2387
diff changeset
224 (setq mode-name "rlogin")
2231
1c7ad2a0f4d9 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
225 (use-local-map rlogin-mode-map)
10374
d6de68b87cbd Removed several more gratuitous autoload cookies.
Noah Friedman <friedman@splode.com>
parents: 10130
diff changeset
226 (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
227 (make-local-variable 'comint-file-name-prefix)
2231
1c7ad2a0f4d9 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
228 (run-hooks 'rlogin-mode-hook))
1c7ad2a0f4d9 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
229
10374
d6de68b87cbd Removed several more gratuitous autoload cookies.
Noah Friedman <friedman@splode.com>
parents: 10130
diff changeset
230 (defun rlogin-directory-tracking-mode (&optional prefix)
d6de68b87cbd Removed several more gratuitous autoload cookies.
Noah Friedman <friedman@splode.com>
parents: 10130
diff changeset
231 "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
232
d6de68b87cbd Removed several more gratuitous autoload cookies.
Noah Friedman <friedman@splode.com>
parents: 10130
diff changeset
233 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
234 ``\\[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
235 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
236
d6de68b87cbd Removed several more gratuitous autoload cookies.
Noah Friedman <friedman@splode.com>
parents: 10130
diff changeset
237 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
238 entirely.
d6de68b87cbd Removed several more gratuitous autoload cookies.
Noah Friedman <friedman@splode.com>
parents: 10130
diff changeset
239
10849
eb6af491e98f (rlogin-carriage-filter): Don't assume region is narrowed to most recent
Noah Friedman <friedman@splode.com>
parents: 10384
diff changeset
240 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
241 ``\\[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
242 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
243 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
244 local one share the same directories (through NFS)."
d6de68b87cbd Removed several more gratuitous autoload cookies.
Noah Friedman <friedman@splode.com>
parents: 10130
diff changeset
245 (interactive "P")
d6de68b87cbd Removed several more gratuitous autoload cookies.
Noah Friedman <friedman@splode.com>
parents: 10130
diff changeset
246 (cond
d6de68b87cbd Removed several more gratuitous autoload cookies.
Noah Friedman <friedman@splode.com>
parents: 10130
diff changeset
247 ((or (null prefix)
d6de68b87cbd Removed several more gratuitous autoload cookies.
Noah Friedman <friedman@splode.com>
parents: 10130
diff changeset
248 (consp prefix))
d6de68b87cbd Removed several more gratuitous autoload cookies.
Noah Friedman <friedman@splode.com>
parents: 10130
diff changeset
249 (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
250 (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
251 (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
252 (concat "/" rlogin-remote-user "@" rlogin-host ":")))
10374
d6de68b87cbd Removed several more gratuitous autoload cookies.
Noah Friedman <friedman@splode.com>
parents: 10130
diff changeset
253 ((< prefix 0)
d6de68b87cbd Removed several more gratuitous autoload cookies.
Noah Friedman <friedman@splode.com>
parents: 10130
diff changeset
254 (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
255 (setq shell-dirtrackp nil))
10374
d6de68b87cbd Removed several more gratuitous autoload cookies.
Noah Friedman <friedman@splode.com>
parents: 10130
diff changeset
256 (t
d6de68b87cbd Removed several more gratuitous autoload cookies.
Noah Friedman <friedman@splode.com>
parents: 10130
diff changeset
257 (setq rlogin-directory-tracking-mode 'local)
d6de68b87cbd Removed several more gratuitous autoload cookies.
Noah Friedman <friedman@splode.com>
parents: 10130
diff changeset
258 (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
259 (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
260 (cond
11276
7b78e66e6e3d (rlogin-directory-tracking-mode): Set shell-dirtrackp, not shell-dirtrack-p.
Noah Friedman <friedman@splode.com>
parents: 11274
diff changeset
261 (shell-dirtrackp
10374
d6de68b87cbd Removed several more gratuitous autoload cookies.
Noah Friedman <friedman@splode.com>
parents: 10130
diff changeset
262 (let* ((proc (get-buffer-process (current-buffer)))
d6de68b87cbd Removed several more gratuitous autoload cookies.
Noah Friedman <friedman@splode.com>
parents: 10130
diff changeset
263 (proc-mark (process-mark proc))
d6de68b87cbd Removed several more gratuitous autoload cookies.
Noah Friedman <friedman@splode.com>
parents: 10130
diff changeset
264 (current-input (buffer-substring proc-mark (point-max)))
d6de68b87cbd Removed several more gratuitous autoload cookies.
Noah Friedman <friedman@splode.com>
parents: 10130
diff changeset
265 (orig-point (point))
d6de68b87cbd Removed several more gratuitous autoload cookies.
Noah Friedman <friedman@splode.com>
parents: 10130
diff changeset
266 (offset (and (>= orig-point proc-mark)
d6de68b87cbd Removed several more gratuitous autoload cookies.
Noah Friedman <friedman@splode.com>
parents: 10130
diff changeset
267 (- (point-max) orig-point))))
d6de68b87cbd Removed several more gratuitous autoload cookies.
Noah Friedman <friedman@splode.com>
parents: 10130
diff changeset
268 (unwind-protect
d6de68b87cbd Removed several more gratuitous autoload cookies.
Noah Friedman <friedman@splode.com>
parents: 10130
diff changeset
269 (progn
d6de68b87cbd Removed several more gratuitous autoload cookies.
Noah Friedman <friedman@splode.com>
parents: 10130
diff changeset
270 (delete-region proc-mark (point-max))
d6de68b87cbd Removed several more gratuitous autoload cookies.
Noah Friedman <friedman@splode.com>
parents: 10130
diff changeset
271 (goto-char (point-max))
d6de68b87cbd Removed several more gratuitous autoload cookies.
Noah Friedman <friedman@splode.com>
parents: 10130
diff changeset
272 (shell-resync-dirs))
d6de68b87cbd Removed several more gratuitous autoload cookies.
Noah Friedman <friedman@splode.com>
parents: 10130
diff changeset
273 (goto-char proc-mark)
d6de68b87cbd Removed several more gratuitous autoload cookies.
Noah Friedman <friedman@splode.com>
parents: 10130
diff changeset
274 (insert current-input)
d6de68b87cbd Removed several more gratuitous autoload cookies.
Noah Friedman <friedman@splode.com>
parents: 10130
diff changeset
275 (if offset
d6de68b87cbd Removed several more gratuitous autoload cookies.
Noah Friedman <friedman@splode.com>
parents: 10130
diff changeset
276 (goto-char (- (point-max) offset))
d6de68b87cbd Removed several more gratuitous autoload cookies.
Noah Friedman <friedman@splode.com>
parents: 10130
diff changeset
277 (goto-char orig-point)))))))
d6de68b87cbd Removed several more gratuitous autoload cookies.
Noah Friedman <friedman@splode.com>
parents: 10130
diff changeset
278
2539
577c77cfd199 *** empty log message ***
Noah Friedman <friedman@splode.com>
parents: 2405
diff changeset
279
10374
d6de68b87cbd Removed several more gratuitous autoload cookies.
Noah Friedman <friedman@splode.com>
parents: 10130
diff changeset
280 ;; 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
281 ;; whitespace). Return a list of the words.
d6de68b87cbd Removed several more gratuitous autoload cookies.
Noah Friedman <friedman@splode.com>
parents: 10130
diff changeset
282 (defun rlogin-parse-words (line)
d6de68b87cbd Removed several more gratuitous autoload cookies.
Noah Friedman <friedman@splode.com>
parents: 10130
diff changeset
283 (let ((list nil)
d6de68b87cbd Removed several more gratuitous autoload cookies.
Noah Friedman <friedman@splode.com>
parents: 10130
diff changeset
284 (posn 0)
d6de68b87cbd Removed several more gratuitous autoload cookies.
Noah Friedman <friedman@splode.com>
parents: 10130
diff changeset
285 (match-data (match-data)))
d6de68b87cbd Removed several more gratuitous autoload cookies.
Noah Friedman <friedman@splode.com>
parents: 10130
diff changeset
286 (while (string-match "[^ \t\n]+" line posn)
d6de68b87cbd Removed several more gratuitous autoload cookies.
Noah Friedman <friedman@splode.com>
parents: 10130
diff changeset
287 (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
288 list))
d6de68b87cbd Removed several more gratuitous autoload cookies.
Noah Friedman <friedman@splode.com>
parents: 10130
diff changeset
289 (setq posn (match-end 0)))
d6de68b87cbd Removed several more gratuitous autoload cookies.
Noah Friedman <friedman@splode.com>
parents: 10130
diff changeset
290 (store-match-data (match-data))
d6de68b87cbd Removed several more gratuitous autoload cookies.
Noah Friedman <friedman@splode.com>
parents: 10130
diff changeset
291 (nreverse list)))
d6de68b87cbd Removed several more gratuitous autoload cookies.
Noah Friedman <friedman@splode.com>
parents: 10130
diff changeset
292
10849
eb6af491e98f (rlogin-carriage-filter): Don't assume region is narrowed to most recent
Noah Friedman <friedman@splode.com>
parents: 10384
diff changeset
293 (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
294 (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
295 (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
296 (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
297 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
298 (- 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
299 (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
300 (while (search-forward "\C-m" end t)
10374
d6de68b87cbd Removed several more gratuitous autoload cookies.
Noah Friedman <friedman@splode.com>
parents: 10130
diff changeset
301 (delete-char -1))
d6de68b87cbd Removed several more gratuitous autoload cookies.
Noah Friedman <friedman@splode.com>
parents: 10130
diff changeset
302 (goto-char point-marker)))
d6de68b87cbd Removed several more gratuitous autoload cookies.
Noah Friedman <friedman@splode.com>
parents: 10130
diff changeset
303
2231
1c7ad2a0f4d9 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
304 (defun rlogin-send-Ctrl-C ()
1c7ad2a0f4d9 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
305 (interactive)
1c7ad2a0f4d9 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
306 (send-string nil "\C-c"))
1c7ad2a0f4d9 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
307
5792
242985a124fc Removed many extra autoload cookies.
Roland McGrath <roland@gnu.org>
parents: 5208
diff changeset
308 (defun rlogin-send-Ctrl-D ()
242985a124fc Removed many extra autoload cookies.
Roland McGrath <roland@gnu.org>
parents: 5208
diff changeset
309 (interactive)
242985a124fc Removed many extra autoload cookies.
Roland McGrath <roland@gnu.org>
parents: 5208
diff changeset
310 (send-string nil "\C-d"))
242985a124fc Removed many extra autoload cookies.
Roland McGrath <roland@gnu.org>
parents: 5208
diff changeset
311
2231
1c7ad2a0f4d9 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
312 (defun rlogin-send-Ctrl-Z ()
1c7ad2a0f4d9 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
313 (interactive)
1c7ad2a0f4d9 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
314 (send-string nil "\C-z"))
1c7ad2a0f4d9 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
315
1c7ad2a0f4d9 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
316 (defun rlogin-send-Ctrl-backslash ()
1c7ad2a0f4d9 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
317 (interactive)
1c7ad2a0f4d9 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
318 (send-string nil "\C-\\"))
1c7ad2a0f4d9 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
319
1c7ad2a0f4d9 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
320 (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
321 "\
10849
eb6af491e98f (rlogin-carriage-filter): Don't assume region is narrowed to most recent
Noah Friedman <friedman@splode.com>
parents: 10384
diff changeset
322 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
323 (interactive "p")
2231
1c7ad2a0f4d9 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
324 (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
325 (rlogin-send-Ctrl-D)
2231
1c7ad2a0f4d9 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
326 (delete-char arg)))
1c7ad2a0f4d9 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
327
10374
d6de68b87cbd Removed several more gratuitous autoload cookies.
Noah Friedman <friedman@splode.com>
parents: 10130
diff changeset
328 (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
329 "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
330 (interactive)
d6de68b87cbd Removed several more gratuitous autoload cookies.
Noah Friedman <friedman@splode.com>
parents: 10130
diff changeset
331 (if rlogin-directory-tracking-mode
d6de68b87cbd Removed several more gratuitous autoload cookies.
Noah Friedman <friedman@splode.com>
parents: 10130
diff changeset
332 (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
333 (insert "\C-i")))
10374
d6de68b87cbd Removed several more gratuitous autoload cookies.
Noah Friedman <friedman@splode.com>
parents: 10130
diff changeset
334
2233
fb0ed5a1d0f3 Add standard library headers.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2231
diff changeset
335 ;;; rlogin.el ends here