File: em-smart.el.html
The best way to get a sense of what this code is trying to do is by using it. Basically, the philosophy represents a blend between the ease of use of modern day shells, and the review-before-you-proceed mentality of Plan 9's 9term.
@ When you invoke a command, it is assumed that you want to read
the output of that command.
@ If the output is not what you wanted, it is assumed that you will
want to edit, and then resubmit a refined version of that
command.
@ If the output is valid, pressing any self-inserting character key
will jump to end of the buffer and insert that character, in
order to begin entry of a new command.
@ If you show an intention to edit the previous command -- by
moving around within it -- then the next self-inserting
characters will insert *there*, instead of at the bottom of the
buffer.
@ If you show an intention to review old commands, such as M-p or
M-r, point will jump to the bottom of the buffer before invoking
that command.
@ If none of the above has happened yet (i.e., your point is just
sitting on the previous command), you can use SPACE and BACKSPACE
(or DELETE) to page forward and backward *through the output of
the last command only*. It will constrain the movement of the
point and window so that the maximum amount of output is always
displayed at all times.
@ While output is being generated from a command, the window will
be constantly reconfigured (until it would otherwise make no
difference) in order to always show you the most output from the
command possible. This happens if you change window sizes,
scroll, etc.
@ Like I said, it's not really comprehensible until you try it! ;)
One disadvantage of this module is that it increases Eshell's
memory consumption by a factor of two or more. With small commands
(such as pwd), where the screen is mostly full, consumption can
increase by orders of magnitude.
Defined variables (6)
eshell-review-quick-commands | If t, always review commands. |
eshell-smart-display-navigate-list | A list of commands which cause Eshell to jump to the end of buffer. |
eshell-smart-load-hook | A list of functions to call when loading ‘eshell-smart’. |
eshell-smart-space-goes-to-end | If non-nil, space will go to end of buffer when ‘point-max’ is visible. |
eshell-smart-unload-hook | A hook that gets run when ‘eshell-smart’ is unloaded. |
eshell-where-to-jump | The location where point should jump to after a command. |