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

Reply via email to