Article View: comp.emacs
Article #9617Re: cmushell-mode
From: Olin Shivers
Date: Sun, 25 Feb 1990 06:34
Date: Sun, 25 Feb 1990 06:34
57 lines
3533 bytes
3533 bytes
From: scott@grlab.UUCP (Scott Blachowicz)
Newsgroups: comp.emacs
Date: 21 Feb 90 15:35:59 GMT
Is it possible to have the shell mode re-sync its current-directory on
a pwd command? Either by recognizing that a pwd command was typed or
by a key-binding that somehow figures it out (send a pwd command and
get the response)? Maybe there could be a regexp that describes what a
"pwd" command will look like that gets matched against the command.
Now, I don't know enough to know how possible it would be to grab the
command's output (if it can even be reliably identified).
It is not possible to reliably track the current working directory %100
of the time. Forget it. You can always run some random program under your
shell that takes "cd" or "pwd" arguments and does strange things with them;
the gnumacs code will never know this. FTP's "cd" command is one example.
Stuffing a "dirs" or "pwd" command to the shell and analysing the result
is just as ugly and fragile a hack, for similar reasons. That's why I haven't
put these things into cmushell mode.
The attitude you have to take in situations like this is that simple heuristics
like cd/pushd/popd tracking will get you 95% of the cases, and for the rest,
you just have to reset the buffer's idea of where you are with a
M-x cd <dir> command. Don't stress out about it.
Does the new directory tracking stuff allow me to say "cd -" to "goto
the previous directory"? My ksh allows that (actually, I think it's a
bunch of functions that get loaded up that do it).
I don't use ksh, so I'm not familiar enough with it to hack in ksh-specific
things. That's a fine idea, though, and you should not find it very hard to
modify the standard directory-tracking function to handle this case.
-Could it recognize a "Password:" prompt at the beginning of a line
and not echo the chars? or is there a better way to get a
super-user shell?
Comint provides a general send-invisible command for entering text that should
be sent to a process but should not be echoed.
M-x send-invisible <password> return
is what you do when you're prompted for your password, for instance.
-A lot of times, when I run an interactive command I start getting
commands echoed back at me, and sometimes "^M" at the end of each
line... Would this be because the command is doing some stty/ioctl
commands? Anyone know of the magic incantation to give stty to
correct things?
Either the command or your shell has decided to do echoing in raw/cbreak mode.
If you can turn this off, you win. At CMU, we run a locally-developed shell
that does line-editing, command history and filename completion. There
are a lot of shells like it: ksh, tcsh, I don't know -- a bunch. The point
is, this shell puts the tty in raw mode, so when you run it under
emacs in cmushell mode, it echoes everything, and tosses in ^M's as well.
The solution is make sure that cmushell runs the vanilla /bin/csh that
doesn't do any of this stuff, which you arrange with
(setq explicit-shell-file-name "/bin/csh")
in your .emacs.
-Olin
Technical Details
Message-ID:
<wZtrldm00htFFhJS9X@cs.cmu.edu>Path:
arc1-ca.pugleaf.net!utzoo!censor!geac!torsqnt!jarvis.csri.toronto.edu!rutgers!tut.cis.ohio-state.edu!pt.cs.cmu.edu!andrew.cmu.edu!<UNAUTHENTICATED>+Show Full Headers
Complete Article Headers
Path: arc1-ca.pugleaf.net!utzoo!censor!geac!torsqnt!jarvis.csri.toronto.edu!rutgers!tut.cis.ohio-state.edu!pt.cs.cmu.edu!andrew.cmu.edu!<UNAUTHENTICATED>+ From: shivers@cs.cmu.edu (Olin Shivers) Newsgroups: comp.emacs Subject: Re: cmushell-mode Message-ID: <wZtrldm00htFFhJS9X@cs.cmu.edu> Date: 25 Feb 90 06:34:17 GMT Organization: Carnegie Mellon, Pittsburgh, PA Lines: 57