List of things that should be added at some point: =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= + X11 interface. + Message catalogs. + Forms editing package; use RE's to verify field contents. + Internationalization, including wide character support. + Make db, curses real libraries that we load against instead of compiling directly. + Full editing capability on the : command line. + Rob Pike's sam RE's. + Filename completion. While on the subject of completion, it would be nice to have the completion mechanism found in tcsh version >= 6.03. For instance, the completion for the `:cd' command will be directories only. The completion for the `:set' command will be all options not set at that moment, and for `:set un' will be all options that are set at that moment. The completion for `:< count' will be the flags. List of suggested features: =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= + Add a "push" command that would push a file on the tags stack. (Essentially make tags a special case of the stack, and make the stack more general purpose.) + Make :script just run a command and edit the output, and :interactive, which allows interactive shell session, instead of just the current :script. + Add versioning based on a "set version" variable, that would create backup copies when the file was written back, i.e. the ":w" and autowrite's would copy the original. + Add tagging information to the man page so that users can display the part of the man page that discusses the command in which they're interested. + Add a zone option so that you can declare that top/bottom few lines of the screen aren't filled except by accident, so that the text you ask for is always concentrated in the center of the screen. + Add "set searchdir" for a list of directories to look in for files to edit. The semantic is that ":e foo" is replaced with the file name that is found, so there's no confusion as to which file is written. + Change :di[splay] tags -> :tags :di[splay] screens -> :screens :di[splay] buffers -> :buffers + A macro record function. Add the ability to record a sequence of keystrokes into a named buffer for later use. Handy when you're trying to build a semi-complex macro. + The semantics of :split, :bg, and :fg aren't right. Someone needs to rethink how they should interact. The main problem arises when users want to get a window into a new file. Currently, the necessary sequence is ":split newfile|^W|:bg". It would be nice if you could simply background the current screen and edit a new one. + An option to turn on a ``quarter plane'' model so that you can go as far to the right or down as you wish. The File or the current line is only extended if you actually put down a char at the new location. Very handy for ascii graphics and tables. + Some way of replacing the command bindings. For this to work cleanly the notion of a command must be separate from that of a key. (Simulate the Rand editor?) + Vertical splitting, so you can see files side by side. + Tracking. Two or more files are associated so that when one file is scrolled up/down/left/right other files track by the same amount. Tracking may be constrained such that two files only track vertically or horizontally. This is relatively easy to implement. + A status file so that the next time invocation of the editor returns to the same place, with the same number of windows etc. In case of change of the screen size, reasonable defaults are used. For each window size and location of the window, name of the file and position in it, any tab settings, any other settings for the window (such as insert/overwrite mode, auto indent etc). Last search RE and maybe direction. If a file does not exist the next time you invoke the editor, its window is left in the same place but with some default message.