Wishlist
This wishlist is rather outdated, in that several of the items mentioned
have already been implemented, or patches are available. If you want to revive
a discussion on a particular feature, the best way is to do that on one of the
mailing lists or on Niki.
The list below is one Mark Edel sent to the discussion list.
Little or no controversy
- Awk-style associative arrays for macro language
- Font-selector should detect scalable fonts (size 0) and make them
available at any size.
- Key binding needs in NEdit is way too complex, and Motif menu accelerators
have silly problems with num-lock/caps-lock. NEdit should have a unified
system for key-binding, spanning what are now shell/macro commands,
accelerator resources and translations, and a nice dialog for key binding to
existing macros and actions.
- Macros and actions should be unified and integrated so there aren't two
classes of callable subroutines. Users should be able to bind arbitrary macro
code to a key without having to define a menu item.
- Break up the .nedit file into a .nedit directory, so that parts can be
more easily modified independently. Maybe a new syntax based on the nedit
macro language, rather than X resources, would be better, as well, because it
would allow better integration of macro vs. preferences initialization. It
would be nice if the macro language could add and remove menu items, and read
and modify all preference settings. I'm still a bit fuzzy about all of this,
though.
- Better compiler integration. Most users would prefer tighter integration
of the compile/review cycle in NEdit. Currently, users must select line
numbers relatively exactly in their compiler output to jump to the line of a
compiler warning or error.
Opinions vary widely on how this should be done. Because compilers
vary in how they present error messages, it is probably impossible
to devise a non-programmable scheme that will cover all of them. Some
possibilities:
- Include a more comprehensive Make macro. To do this properly, the macro
language needs to be extended to allow some form of continuous updating from
shell command output, such that a list_dialog containing compiler output could
show intermediate output as a make progressed. As it stands, a make would be
much worse than the current shell command version, because you wouldn't be
able to see how your compile was going until it was completely finished.
- Improve, standardize, and distribute the programming-tools in the contrib
directory, which are separate programs for compile/review, search, source-code
analysis tree-display which use the client/server interface to NEdit.
- Add programmable filters to Open Selected and/or Goto Line Number, which
translate compiler messages (as well as output from programs like grep) into
file names and line numbers for a file to open and line to select. User could
then select the entire message (in xterm or nedit window) to find the file and
line.
- Full, embedded compile/review mode (with programmable filters for
extracting file-name, line numbers from compiler messages), in the same style
as the make browser from the NEdit programming tools. Could also track changes
since make, to keep line number references fresh.
- Paren flashing and Match () command both could use improvement:
- Match target should be multi-character, to be able to match /* ... */,
begin end, and others.
- Paren flashing & match command should exclude matches within comments and
quoted strings. This is difficult because what constitutes a comment is
language dependent.
The quick and dirty answer is to use syntax highlighting information,
but that means syntax highlighting must be on for the feature
to work properly, and it attaches more meaning to the highlight
styles than was originally intended. At the moment, the highlight
style "Comment" means just draw in italics with a slightly lighter
gray color. Hard-coding flash/match code to pay attention to specific
styles would make it impossible for users to add additional string
or comment styles.
An alternative approach might be to code comment/string recognition
in the flash/match code. Recognizing multi-line strings and comments
in some languages theoretically requires unlimited backtracking,
which may make this difficult to do without performance penalty.
- Support for special features of CDE, Gnome, and KDE environments (turned
on by default when it doesn't interfere in other environments, conditional
when it requires special libraries or creates problems at runtime for other
systems.
- Search and Open should have watch (busy) cursor, because under some
circumstances, these can be lengthy (due to complex regular expression
matching, or remote-access file systems). Ideally, search should also be
interruptable (making regular expression search interruptable is probably
quite difficult).
- Some form of multiple-cut-buffer. X has a convention for this, but other
programs don't use it, so there's not much need for interoperability. If I
recall correctly, the X mechanism is server-memory based, in which case using
it would be a bad idea, since it would waste server resources when NEdit is
not in use.
- In syntax highlighting, many pattern authors have asked for the ability to
have a sub-expressions from a beginning re-match available in the ending
expression, to match special verbatim fields in tex, perl, and other
languages. We got started on this in 5.1.1, but got stuck on the problem of
controlling incremental re-parsing. To avoid costly reparsing of huge sections
of text on every keystroke, nedit needs to detect changes in the spanning
subexpression. At the time, the only options seemed to be: storing the
subexpression matches by associating them with a position in the text, or
trying to recreate the original match by reconstructing and re-parsing the
text as it existed before the change. Both of these would be very
complicated.
Thinking about it some more, there may be a simple heuristic, which
doesn't require maintaining or reconstructing the original beginning
expression match to determine whether to reparse the entire begin/end range.
That would be to reparse the begin range and extract the ranges of the
spanning subexpression(s), and compare them with range of the modification
that triggered the reparsing. If any of the subexpression ranges touches the
modification, the begin/end range should be reparsed. It's still significant
work, and the rule has a loophole: A change outside of the spanning
subexpression can causes the expression to point to a different, unmodified,
range of text. Also there's still not a reliable way to find the start of a
style range from the end, because abutting styles are allowed. In practice, I
don't think either of these things will happen much, but I would feel better
if it were mathematically correct.
- Improvements in help system. (already under development)
- A tutorial
- Make initial window size sensitive to size of file being edited. If the
file is shorter than the window, make the window shorter (up to some minimum
limit).
- Command-line highlight/no-highlight option.
- Use .neditdb to remember window size, location, scroll position, and
cursor position.
- Single icon option (Tried and failed in 5.1, probably not possible).
- Resource for setting backup file extension.
- Accelerated scroll-bar arrow button scrolling. Use timer to smooth out
scrolling on oddly loaded systems. Begin slow, then accelerate at some
threshold to higher and higher speeds.
- Some kind of option to keep an nedit server running in the background when
it has no associated windows.
- nc -wait option. Tells nc not to return until requested file(s?) are
(closed? saved? a finish command is executed? ((closed or a macro command is
executed first?)))
- Make pointer disappear during typing (until next mouse movement).
- Show-whitespace mode. NEdit draws something in the character cells to show
what white-space is composed of. Should differentiate tabs from spaces. Maybe,
separate show-tabs-only mode might be useful too, but maybe that's too many
options.
- Open Selected include-command format should be programmable so it will
work with more languages (also see #3 in compiler integration, Open Selected
would also be expected to translate error message formats).
- Dialog when Find Definition doesn't have a selection, or the selection is
not found, to allow a name to be entered.
- Dim inactive commands in read-only mode.
- Various improvements in file-dialog behavior. NEdit has taken the Motif
file selection dialog about as far as it can go without re-writing, but
re-writing could make it much nicer. Possible improvements: moving the
previously opened files list there, allowing multiple selection of files,
better default sizing, and overall, a more sensible interface.
- Use inode comparison, rather than path-name comparison to to determine
whether a file is already being edited. I know that someone once showed me a
case where name comparison fails (possibly with ClearCase?), but I can't find
the mail. Anyhow, inode comparison is definitely cleaner than translating
symbolic links. There may be some contributed code for this.
- More preference settings need to be macro-settable.
- Macro-callable multiple-entry string_dialog.
- Macro-callable file selection dialog.
- Load and Save macro hooks, to allow users to add various warnings,
translations, etc.
- Text-modified macro hook
- Macro function to iconize a window (to allow users who want the single-
window editing style to emulate it with macros).
- C/C++ smart-indent should trigger re-indent on recognition of "case:", and
public:, private:, etc. in C++.
- Action routine and binding for jumping between panes in a multi-pane
window.
- Do something intelligent with stdin. Ideally, open a window with a
cancellable (macro?) process, transferring stdin data into the window, until
stdin is closed.
- Macro -> Repeat -> last command should coalesce inserted characters
as undo does. Repeating the insertion of a single character is not the most
useful default case.
- Ability to determine language mode from file name via prefix or regular-
expression, in addition to suffix.
- Option to list full path in window title and possibly windows menu
- Split window mode should align text in lower panes to where it fell
naturally before the split, rather than starting new panes both at the same
position as the parent pane.
- Smart indent macros for more languages.
- New Untitled windows should inherit path from their parent window (I
think).
- Preferences menu settings for background and plain foreground color.
- Color picker in Text Styles dialog for syntax highlighting (I have a few
GPL'd candidates sitting around).
- A chown of a file can also cause the readonly status to change, and nedit
should detect this.
- Add default macros for Open URL and Grep-browser to default macros.
Some controversy
- Emulation of other editors. It would be nice to have key bindings a few
other editors. Some of these bindings might need additional internal support
to work more smoothly. Unfortunately, the current key-binding environment in
NEdit is complex, and whole-scale re-binding of keys combined with the odd
functionality required by some editors (Advance/Backup in EDT, command mode in
vi, multi-key/command mixes in emacs) makes this difficult. Probably better to
upgrade the key binding situation first.
- Native Windows, Mac, Qt, Gnome versions. This would be very nice, but I'm
guessing that it would also be quite difficult. The problem is not the text
widget itself, it's re-creating all of the supporting dialogs, and all of the
subtle shortcut functionality that took so long to develop for Motif. Fully
supporting Max's extensions for running in the NT/Windows environment with an
X server might be be reasonable, though.
- NEdit's vi-style Mark/Goto Mark commands are kind of clumsy. I originally
wanted to do fully-labeled marks, with a sub-menu for locating marks in the
file. The Macintosh MPW editor did this very nicely. In MPW, the Mark command
presents a dialog with the selected string entered, by default, as the mark
name, so the user types only a few keystrokes to create a named mark, and can
go there by simply selecting it from the menu. It helped that on the
Macintosh, the marks were maintained across editor sessions in the resource
fork of the file, but nedit could save them in the .neditdb file.
I also like the idea of MS Visual C++ style, which is to have visible
marks which you step through with Next/Prev commands. Which is best?
- Backup-file-exists warning. Backup files are left either because of
simultaneous editing, or because of process termination, which makes this a
kind of schizophrenic function. Backup files don't exist until you actually do
a certain amount of editing in the file, which means it's not a perfect
indicator of simultaneous editing (and opening backup files early before users
do any editing, to make them better indicators, would increase he likelihood
of orphaned backup files).
- Ability to collapse blocks in outline form, as in the Scriptum editor and
others. This would be great, but I think it would be difficult to do in a
language-independent way. Also, the basic organization of nedit's drawing code
is to fetch and measure text as necessary for drawing, and hundreds of fetch
and measure operations are scattered throughout. This would be a change to the
basic structure, and therefore very difficult.
- Tear-off menus should be independent of the window from which they were
torn-off. There are two technical and one user-interface problems which need
to be solved before this can be done properly:
- The X window manager protocol, as far as I know, does not have an
adequate model for windows which float above a group of other windows.
- To make tear-offs truly window-independent, you probably can't use any of
the Motif tear-off code. Motif has a strongly embedded need for parent
widgets. You can't fake-out or re-parent the tear-offs when the window they
were posted from goes away. They must be independent entities.
- (The ui problem) Most menu items are editing operations, which must refer
to a particular window/file. How does NEdit decide which window to act upon
when a torn-of item is chosen? The last window to have focus? In this case,
pointer-focus users had better watch out where they move their mouse on the
way to the menu.
- Tab stops at arbitrary positions. I'm not sure there's much need for
arbitrary hardware tab-stops, given that the tab-stop data can't be stored as
a part of the text file (maybe if you were still using an old mechanical
teletype). However tab-stops in combination with emulated tabs would be
helpful to people laying-out columnar data. Making NEdit draw text using tab
stops is probably not that hard, but the user- interface parts for entering
the stop positions probably is, because ideally you would want something like
MS-Word's tab bar at the top of the window, where you could drag tab-stops in
and out.
- Go-back to last search-position, last cursor-jump (more than one line of
movement or scrolling)
- Integrate Tony Balinski's range set macro extensions for highlighting
arbitrary areas of text. I'd like to find a way to make this functionality
easier to use and easier for users to understand. Just hiding it in the macro
language doesn't really solve the problem. If we did provide default macros
for multiple-find and highlighting differences, users would need to learn to
control the coloring to properly use them.
- Some kind of file-comparison (diff) mode, for scroll-locking two (or
more?) files together (and highlighting differences?). (see above)
- Some sort of find-all command to find all occurrences of a string. Display
would be in some sort of alternate highlight mode (see above), or in a pop-up
window showing all matching lines.
- Environment variable or resource for setting an explicit backup directory.
- Search and replace dialogs operating in Keep-Up mode should warp pointer
into dialog on new Find or Replace command (and/or do something else to
attract more attention to the dialog box).
- A dialog for changing file protections (including access lists?). Can this
be made relatively system-independent? Is this beyond what an editor should
do?
- Should commands with optional [Shift] modifiers be somehow marked more
clearly so that the effect of the shift key is clearer, i.e: Find... [Rev]
Shift Left [Tab]?
- Make inter-line spacing settable (is this worth an additional resource?)
- Do multi-line overstrike pastes as overlay. User suggested looking at how
Windows '95 text fields handle overstrike paste.
- Should pointer cursor change to I-beam? If it did, it would nice to
generate this on the fly to match the font size somewhat.
- Highlight styles don't have a selected foreground color, or a background
color. These might be useful, though they obviously require specifying a lot
of colors.
- Optional tool-bar (personally, I hate these). Must be done by someone who
is either a good graphic designer, or who knows a good public source for
high-quality bitmap icons.
- Make syntax-highlight pass-1 cancellable, for the case where a humongous
file gets opened with slow highlight patterns (I don't think this is easy).
- NEdit can't edit files with names beginning with + or - (of course just
about everything else in Unix rejects them as well). A -- (end of arguments)
keyword, after which all items are files would allow this.
- Next/Prev Window command for cycling through window list (could this be
done as a macro to keep menus simpler?)
Much controversy
- Single-window mode (w/ emacs-like buffer switching), possibly multi-pane
with different files in different panes of the same window. This is highly
requested, but I am personally against it. If you have a decent window manager
and a system with reasonable performance, there should be very little
substantive difference between working with multiple windows and working with
a single window. Implementing a single-window mode would add menu items, and
confuse the interface for everyone else.
- Max's Clone-window code. I know everyone likes this, and it's even
relatively well tested now. It changes nedit's internal architecture quite a
bit though, and in my mind, makes the code less maintainable. (though, I guess
having two separate versions of NEdit makes it less maintainable too).
- Save Selection As... I don't like this, because it's a semi-redundant menu
item. In the few instances where it would be useful, you can just create a new
window and paste the contents you want to save.
- Save to selected file-name. I'm not sure this merits an additional menu
item since you can use Save As... and paste the file name into the dialog.
- Append command or append option in save-as dialog. There are lots of
existing ways to append files both inside and outside of nedit. I don't think
this merits the additional menu items or buttons.
- Option to turn-off control character representation.
- Remote editing via ftp (Open FTP). Technically, this is easy to do, except
for the almost infinite creeping featurism of the gui dialog for accessing
remote files. How many users would it benefit, though?
|
|
Search nedit.org
|
|
|
Sponsors
|
hosting and design by

|
|
unless otherwise stated all material is © 1999-2004 NEdit.org
|
|