Robin has done what I've thought of doing for a long time (for much the
same reason), only better than I'd thought of. Just a few
additions/comments:
* Incremental search, both forward and reverse, and wrapping around
after you've reached the end or the beginning of the document. I like
to have the same key to start the search and also do a search-next
after you've typed all the characters you are searching for, and also
to have backspace go back one search position and/or remove one
character from the search text.
Also, as you enter characters in the search string, it highlights all
visible matches for the string ... and for extra credit, incremental
regex search.
* Multiple top level windows, and able to show any buffer in any TLW,
including those that are already displayed in another TLW. Of course
there should be key-bindings available for opening a new TLW, cycling
forward and backward through the buffer list, and a way to select a
buffer from a popup list of buffer/file names.
Emacs provides a "buffer list mode", showing all the current buffers.
It makes it easy to browse the list, mark some of the buffers for
deletion, etc. Particularly useful when you've been doing edits and
searches in many files of a project, and your popup list is getting just
too long.
* Able to have selections be either a stream of characters or a
rectangle.
I use the rectangle commands once in a great while, but when I need
them, it's a great time-saver.
* If you must have a toolbar make it optional and keep it simple.
Toolbars require the mouse and the goal is to keep the hand off the
mouse as much as possible.
Similarly, all menu/toolbar items must be accessible via keystrokes --
pretty common, I guess, but I think worth mentioning.
* .... So I would prefer this editor to have something like emacs'
minibuffer, or the QuickFind panel in Firefox. In other words, when
there is something you would normally use a dialog for just create a
small panel that rolls up from the bottom of the frame, put the
keyboard focus there, perhaps do stuff in the main buffer as they are
typing if appropriate, and then when the user is done the panel rolls
out of sight again and keyboard focus is restored to their active
buffer. This can be done for file open/saves, search & replace,
specifying build or grep commands (see next item) choosing to execute
some editor function by name that may not have some key-binding yet
(see item after next) etc.
+1. For non-Emacsers, it's worth spending some time learning how the
minibuffer is used to do a variety of things. It's way out from most
GUI interface guidelines, but once you're used to it, it really
contributes to usability. (Another example: in the case of a
multi-keystroke command, if you hesitate partway through for a second or
two, the minibuffer echoes what you've typed so far.)
* For access to editor commands/functionality that may not be bound to
a keystroke it's real nice to have the ability to hit a key, type the
command name, press enter and then it's done. This can also allow for
commands that might need to prompt for parameters, be interactive,
etc. All editor commands should be named and can be bound to keys by
name or executed by name in this way.
And a help mode that lets you type a keystroke or command name and get a
description of what it does (in a Help Mode buffer, of course). (If you
type the name, it'll show the keys bound to it; if you type a key, it'll
show you the command name.)
* Regex search. Emacs has support for regular expression search modes
for all of the search types, incremental search, search/replace,
although I don't use it that much.
I use it maybe 1/3 of the time.
* Multi-file search and replace. Be able to select files
interactively, or by wildcard, or both. Enter search string, or
regex, and replace text. The editor loads each file and does the
search, allowing you to choose for each one whether to do the
replacement, or replace all.
Also, a directory edit mode. I use this mode mostly to support
incremental multi-file search through a directory hierarchy of source
code. Since I'm maintaining a mixed set of VB, SQL, Python, etc., this
is a very useful feature. (By incremental, I mean that it begins the
search until it finds a match, then opens the file where the match
occured in a buffer with the point at the match; you can look around in
the buffer and edit it as usual. A single keystroke moves to the next
match.)
Finally, look at Emacs' point and mark concept for selection. The
question it addresses is, how do you allow convenient, flexible
selection of chunks of text using only the keyboard?
--
Don Dwiggins
Advanced Publishing Technology