[TxMt] a shell mode for TextMate?
Pete Siemsen
siemsen at UCAR.EDU
Mon Jul 30 22:02:25 UTC 2007
This is a blue-sky kind of question, not a query about TextMate
features. I want to do something that's probably impossible...
As I mentioned in another thread on this list titled "opening a file
readonly", I often use TextMate to view files that contain saved
copies of router or switch configurations. I never change the files,
but I like the power TextMate provides when reading the files which
can be quite large. I wrote TextMate language grammars for the 3
kinds of configuration files that I peruse, so now I have syntax
highlighting in all 3 types. Very cool!
With a little TextMate hacking I've added another benefit. When
"editing" one of these files with TextMate, I can place the caret in
an IP address, autonomous system number or VLAN number, hit the
"help" key, and TextMate looks up and displays a tooltip window that
tells me what I'm looking at. For example, if I put the caret in an
IP address and hit "help", a tooltip window pops up containing the
name that corresponds to the IP address. You can probably guess that
this is implemented with a TextMate "command" in a bundle. The
command executes a 40-line Perl script that uses gethostbyaddr or
looks strings up in a file based on very simple guesses about what
the search string is. This is *very* convenient when viewing
configuration files.
My question is, can I push this any further? I'd like to have the
same functionality when I'm logged into a device interactively. Today
I access network devices through Terminal windows that run telnet or
ssh sessions to the devices. I'd like to be able to place the mouse
cursor over something in such a window, hit the "help" key and have
the system make an attempt to tell me something useful about what I'm
pointing at. Terminal.app can't do this, but TextMate can.
Terminal.app can do interactive command-line sessions, but TextMate
can't. But TextMate has ^R for executing the current line as a shell
command, which is close...
Emacs has it. It's called "shell mode" or "eshell". An Emacs edit
buffer functions something like a Terminal window that's also an edit
buffer. If you move the caret (Emacs calls it "point") over any line
and hit RETURN, the point is moved to the bottom of the buffer, the
line is sent to the shell, and the output is appended to the buffer,
including the shell's prompt. With this system, command-line history
takes on a new meaning - it's not only the commands, it's all their
output that is available in the edit buffer. Instead of a shell with
Emacs-style command-line editing, it's an editor with command-line
features. I suppose Emacs handles the ever-growing edit buffer size
somehow, probably by only preserving 1000 lines or something. Emacs
urban legend has it that at some universities in the 70s, beginning
computer science students were give accounts that by default put them
in Emacs in shell mode instead of a true shell when they logged in.
If TextMate supported this, it would be an invaluable aid when I'm
working on network devices. It could probably be used in similar
scenarios to give TextMate users their own dynamic help for various
command-line interfaces.
-- Pete
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macromates.com/textmate/attachments/20070730/0eed0083/attachment.html>
More information about the textmate
mailing list