On Mar 20, 2005, at 12:36 AM, Allan Odgaard wrote:
On Mar 20, 2005, at 5:06, Chris Thomas wrote:
MPW-style worksheets are basically Terminal in a text window [...] This would be a great thing to have in TextMate.
Agree -- initially I dropped this item because I thought I'd have to do terminal emulation, which I still wait for some knight in shining armor to write for me. But I guess in majority of cases, this isn't necessary!?!
On reflection, there are different issues bundled up in the concept of 'worksheets'.
(*) MPW-style worksheet capability is sort of separate from the question of terminal emulation. The salient features of MPW as far as I can remember are these:
- Per-window autosave-on-close (window always saves itself on close). MPW had one 'Worksheet' window that was always open, but you could create essentially any number of them by setting the autosave-on- close per-window variable.
- Bind the execute-command-in-shell key to Enter (no modifiers) and Command-Return.
- Redirection to a specific window. If I specify a pathname while piping ("echo something | tm /path/to/file"), open a window for that file and direct the output of the pipe to it. Probably want both append and replace command-line options. If the file is already open in TM, just bring the window to front. [In MPW, because the shell language was intimately bound into the application, you'd actually just redirect to the path of an open file using standard shell append and replace redirection, and the output would appear in the file's window, no intermediate tool required.]
(*) Full terminal emulation, sufficient to -- say -- run emacs, doesn't make sense to me; Terminal and iTerm are fine. Others may disagree (vehemently :). The question is what value TM can add to the experience. Really basic interactivity -- sufficient to run language interpreters -- is probably more interesting. irb with syntax highlight and other features of TM's editor. I _think_ what you'd do is allocate a psuedotty and do line-buffered input, i.e. do not send each character, instead send a full line to the input pipe when the user presses return. This does not handle all possible command-line interactivity, but it ought to work for all the cases that are interesting for a text editor/IDE, and also for some standard tools like gdb and ssh. [I wonder what happens in the cases where it doesn't work, though.]
My thoughts, Chris