2013-12-06 12:04:52 +01:00
|
|
|
# Id: TODO,v 8.2 1997/04/12 15:53:31 bostic Exp (Berkeley) Date: 1997/04/12 15:53:31
|
2013-01-22 12:03:53 +01:00
|
|
|
|
|
|
|
========================================================================
|
|
|
|
GENERAL
|
|
|
|
========================================================================
|
|
|
|
2.0: Open mode is not yet implemented.
|
|
|
|
|
|
|
|
|
|
|
|
========================================================================
|
|
|
|
DB
|
|
|
|
========================================================================
|
|
|
|
1.N When nvi edits files that don't have trailing newlines, it appends
|
|
|
|
one, regardless. This is required, by default, from POSIX.2.
|
|
|
|
|
|
|
|
1.N: If you run out of space in the recovery directory, the recovery
|
|
|
|
file is left in place.
|
|
|
|
|
|
|
|
2.0: It's known that it's possible to sync the backing files in the
|
|
|
|
wrong manner, leaving backup files that aren't recoverable. This
|
|
|
|
is going to be left alone until we have a logging version of DB,
|
|
|
|
which will hopefully fix this (or at least make it possible to
|
|
|
|
easily do so).
|
|
|
|
|
|
|
|
========================================================================
|
|
|
|
VI
|
|
|
|
========================================================================
|
|
|
|
1.N: Make the search pattern and command history (what the '.' command
|
|
|
|
executes) remembered between windows, or configurable so that it
|
|
|
|
is.
|
|
|
|
|
|
|
|
1.N: Change the screen scrolling to not eat user characters... i.e.
|
|
|
|
g/pattern/foo should not eat already entered chars.
|
|
|
|
|
|
|
|
1.N: The vi main command loop should use the general-purpose overflow
|
|
|
|
and underflow routines. In addition, the vi command loop uses
|
|
|
|
unsigned longs -- should probably be fixed as a 32-bit unsigned
|
|
|
|
type, and then check to make sure it's never used as as variable
|
|
|
|
type again.
|
|
|
|
|
|
|
|
1.N: Should "view" set a lock on the file?
|
|
|
|
|
|
|
|
1.N: Should "view" copy the file (or even open a recovery file)?
|
|
|
|
|
|
|
|
1.N: The strings found by searches should be highlighted until the next
|
|
|
|
character is entered.
|
|
|
|
|
|
|
|
1.N: Display a split vi screen for the :help command.
|
|
|
|
|
|
|
|
1.N: When getting a key for a continue screen, we should always read from
|
|
|
|
the terminal, not from a mapped key.
|
|
|
|
|
|
|
|
1.N: The sentence, paragraph and section movement commands don't match
|
|
|
|
historic practice in some boundary cases. This should be left
|
|
|
|
alone until POSIX 1003.2 makes up its mind.
|
|
|
|
|
|
|
|
1.N: The vs_sm_fill routine should scroll if possible, not always redraw.
|
|
|
|
|
|
|
|
1.N: Think about setting a dirty/inuse bits on the lines of the SMAP
|
|
|
|
structure. That way the message routines could steal lines and
|
|
|
|
refresh would continue to work, because it would know not to touch
|
|
|
|
the lines that were in use.
|
|
|
|
|
|
|
|
========================================================================
|
|
|
|
EX
|
|
|
|
========================================================================
|
|
|
|
2.0: ^C isn't passed to the shell in the script windows as an interrupt
|
|
|
|
character.
|
|
|
|
|
|
|
|
2.0: It would be nice to inverse video the replaced text during
|
|
|
|
interactive substitute.
|
|
|
|
|
|
|
|
2.0: The :args command should put the current file name out in reverse
|
|
|
|
video. This isn't going to be easy, currently only full lines can
|
|
|
|
be in reverse video, not just parts.
|
|
|
|
|
|
|
|
========================================================================
|
|
|
|
CURSES
|
|
|
|
========================================================================
|
|
|
|
1.N In single-line screens, have to press 'q' twice when quitting out
|
|
|
|
of a ":set all" display.
|
|
|
|
|
|
|
|
========================================================================
|
|
|
|
MOTIF/IPC
|
|
|
|
========================================================================
|
|
|
|
1.N: We currently permit the user to change the lines, columns and term
|
|
|
|
edit options. Shouldn't that be illegal in a window interface?
|
|
|
|
|
|
|
|
========================================================================
|
|
|
|
REDESIGN
|
|
|
|
========================================================================
|
|
|
|
2.0: There's a serious problem with error returns -- we need to separate
|
|
|
|
command failure from fatal error, consistently, over the entire source
|
|
|
|
tree. We need to rework all of vi to have three return values:
|
|
|
|
0: success
|
|
|
|
1: vi error, continue
|
|
|
|
2: fatal error, die
|
|
|
|
Right now we don't recognize fatal errors for what they are.
|
|
|
|
|
|
|
|
2.0: The complete list of POSIX.1 calls that can return EINTR are:
|
|
|
|
wait, waitpid, sleep, dup2, close, read, write,
|
|
|
|
fcntl(SETLCKW) tcsetattr, tcdrain
|
|
|
|
The problem is that technically, any system/library call can
|
|
|
|
return EINTR, so, while nvi blocks (most of?) the obvious ones,
|
|
|
|
someone may have to do a complete pass and block signals
|
|
|
|
everywhere.
|
|
|
|
|
|
|
|
2.0: The options hardtabs, lisp, optimize, redraw, and slowopen
|
|
|
|
are recognized, but not implemented.
|
|
|
|
|
|
|
|
|
|
|
|
2.0: Field editing shouldn't be hard to add to nvi:
|
|
|
|
|
|
|
|
Field editing file template:
|
|
|
|
version #
|
|
|
|
field # row/column start row/column stop
|
|
|
|
label field # Label string
|
|
|
|
re field # Matching re string.
|
|
|
|
field # row/column start row/column stop
|
|
|
|
label field # Label string
|
|
|
|
re field # Matching re string.
|
|
|
|
|
|
|
|
<tab> moves to the next field
|
|
|
|
<bs> in column 0 moves to the previous field
|