							  TODO list for Vim

This is a veeeery long list of known bugs, current work, and desired
improvements.  To make it a little bit accessible, the items are grouped in
sections.  In the first columns of the line a classification is used to be
able to look for "the next thing to do":

Priority classification:		Amount of work expected:
9	next point release			q	quick fix
8	next release				s	small change
7	as soon as possible			l	a little work
6	soon						w	quite a bit of work
5	should be included			b	big change
4	nice to have				m	major change
3	consider including
2	maybe not
1	probably not
-   unclassified

-------------------- Known bugs and current work -----------------------

Check:
9	MSDOS,DJGPP and Win32: "Q" should work now.
9	DJGPP: Moving the cursor with the mouse doesn't work? (Eusebio)


Bugs:
9	GUI Athena: when using "menu a.b.c.d lll", the "b" submenu does not
	disappear.
9	Crash while in copy_viminfo_marks(), called from read_viminfo(). Several
	numbered marks for the same file!? (Heimann). [can't reproduce it...] Also
	crash when writing viminfo (.viminfo.tmp is empty)(hard to reproduce...).
9	Using horizontal scrollbar: doesn't go completely to the left when moved
	not too fast, not too slow...


Win32 GUI known bugs:
- Updating after moving the scrollbar is postponed until dragging is finished.
- Need to type CTRL-SHIFT-- to get CTRL-_.
- Can simulate middle mouse button by using left&right button.
- Selecting text while editing a command-line has an implied copy to the
  clipboard.
- ":menu" commands in _vimrc don't work, sourcing it by hand does work.
- CTRL-Z doesn't minimize the window.
- Beeping doesn't work properly.
- (non-GUI?) pressing a key with caps-lock on causes Vim to hang (Maximo).
-	Make title work: CGui::CanRestoreTitle() should return TRUE.


Vi incompatibility:
- "yw" on the last char in the file doesn't work (Trapp).
- Implement use of silent_mode (when started as ex).
- CTRL-T in insert mode inserts 'shiftwidth' of spaces at the cursor.
- "m'" and "m`" set the '' mark at the cursor position.
- CTRL-L is not the end of a section?  It is for Posix!  Make it an option.
- "0;/pat" starts searching in line 2 instead of line 1.
- "z3<CR>" should still use the whole window, but only redisplay 3 lines.
- text is put in register 1 when using "c" and "d" with a motion character:
	<control-A>   %   (   ) `<character>   /   ?   N n   {   }
  (from Nvi manual).
- After ":cd", meaning of file names for existing buffers changes.  Do we
  care?
- Always catch SIGINT, don't let it kill us?
- ":n" and ":rew" keep the old cursor position of the file.
- ":tag xx" should move the cursor to the first non-blank.  Or should it go
  to the match with the tag?  Option?
- Implement 'autoprint'/'ap' option.
- Implement 'prompt' option.  Init to off when stdin is not a tty.
- When stdin is not a tty, and Vim reads commands from it, an error should
  make Vim exit.
- Vi doesn't do autoindenting when input is not from a tty (in Ex mode).
- "-x" argument should be used for encryption.
- Support enctrypted files (-x option).  See also -z.
- Make default to be like 'compatible' set, when executable is called "vi".
  Use 'nocompatible' when called "vim" or "gvim"?
  Alternative: Make three versions available: vi (compatible, few features),
  vim (most features, no GUI) and gvim (all features).
- Make ":set nocompatible" set the defaults like they normally are.
  Use a table with option names and default value for compatible/nocompatible.
- In insert mode, when using <BS> or <Del>, don't wipe out the text, but only
  move back the cursor.  Behaves like '$' in 'cpoptions'.  Use a flag in
  'cpoptions' to switch this on/off.
-	"6x" at end of line should not break a mapping (vi compatible).
	"6X" at start of line should beep, but not break a mapping (vi compatible).
	But "6hll" at start of line does break!


Highlighting:
- BUG: Cursor removes color in color-xterm.  It's a color-xterm problem!
  color-xterm ver. 6.1 beta 3 doesn't have this problem.
  Still everybody has this problem, is there a simple fix?
- In color term colors 1/4 and 3/6 are swapped.  Why?
- LineSkip doesn't work: "\" after #define doesn't make it continue on the
  next line.  Using a skip="\\$" DOES work.
- simple String region doesn't contiue on next line (Barantsef barbar).
- When a pattern contains another pattern, allow it to start at the same
  character.  Either allow this for patterns that don't include themselves, or
  check at each match that this pattern didn't match here yet.
- Number highlighting in c.vim still isn't 100% correct.
- Support "highlight_exists()" function, to check if a highlight group has
  been defined yet.
- Add the "ALL" argument, for "ALLBUT" without arguments.

- Allow mixing of flags and start/skip/stop for "match" and "region" commands.
- Make "highlight NONE" reset all highlighting for one group.
- When using a cterm, and no ctermfg or ctermbg are defined, use start/stop
  sequences.  Add remark in docs that :if 'term' == "term-name" should be
  used.
- Add flag to make keywords case-insensitive.  Also for patterns?  Use "icase"
  argument (between ":syntax keyword" and group name)?  Or use "/i" flag?
  Otherwise: Use ":syntax ic[ase]" and ":syntax noic[ase]" to set this for the
  :syntax commands that follow.  ":syntax clear" should reset it.
- Add flag to avoid updating while in Insert mode, for slow systems.
- Syncing on comments isn't 100% correct when / / lines mix with / * and * /.
  For example: What about a line that starts with / / and contains * /?
- Ignore / * and  * / inside strings, when syncing.

- Allow ":doauto BufRead x.cpp" in modelines, to execute autocommands for .cpp
  files.

- Add "foreground" and "background" colors as color names.
- Use highlight group "Normal" to set highlighting for "normal"?  Default
  from background/foreground and guifont.
- Allow the use of "blink".  Make a new attr when it's used.
- Build a few syntax files from the file "/usr/share/misc/vgrindefs".
  And "nedit/source/highlight.c".
- Add ":highlight" command to list the current highlighting (colors, fonts,
  etc.).
- in 'highlight' option allow combination modes, e.g. bold&reverse.
  Compatibility with older versions?
- Add command line completion for :syntax.
- Add line-continuation pattern for non-syncing items too?
- Add possibility to include parts of the start pattern in the end pattern,
  with "\1", like in ":substitute". (Campbell)  This needs adjustment of
  the end pattern and recompilation before it is used.
- Add possibility to highlight specific columns (for Fortran).
- Add possibility to highlight the whole line, including the right margin (for
  comment blocks).
- Add 'hlmatch' option: List of flags:
	'c': highlight match for character under the cursor.
	'b': highlight the previous (, and its match.
	'a': highlight all text from the previous ( until its match.
		 Also for {}, <>, etc.?
	'e': highlight all braces without a match
- Make it possible to use all words in the tags file as Keyword.
- Make it possible to call a ":" command when a match is found.  Should allow
  for adding keywords from the text (e.g. variables that are set).  And allows
  for sections with different highlighting.
- Add highlight group for commandline: "Commandline".


Busy with:
9	Include (part of) patches/farsi.patch.50e.
- Check handling of overwriting of messages (start of edit(), in normal()).
  Completely new policy?  Message history?
  Wrong now: errors in c.syn cause wait_return for each message.
  Very wrong: errors while redrawing cause endless loop.
  "Vim normal.c", with an existing swap file, there is no hit-return for
  the warning message.
  Wrong: "!ls<CR>:pwd", output of "pwd" is removed by redraw.
  Improvement:  When writing and reading a file (with ":wn" or 'autowrite'),
  write the file messages after each other on the same line.  That's what Vi
  does.
  When exiting, with xterm changing screens, there is an extra empty line (was
  included to get prompt in col 0 after error message).
  Starting with "ex filename", file message is overwritten with "entering Ex
  mode" message.
  When exiting and "Viminfo not writable" message appears, don't ask to hit
  return.
- Check handling of starting GUI, "vim -r" et. al., with full_screen default
  set to FALSE until the termcap is initialized.
- When 'lazyredraw' set, don't echo :ex commands?  Need a flag to redraw when
  waiting for a character.
- Re-insert special trick to make copy/paste of wrapped lines work with
  xterm/screen.
- Check if ".viminfo" and "_viminfo" are both tried.
- make expand_env() allocate a buffer for the result.
- testdir/test7.in and testdir/test9.in: need to avoid putting the commands in
  the .ok file.
- Still need to read from stderr instead of stdin (for "-" cmdline argument)
  for: Win32 and OS/2.
- When reading stdin doesn't work use stderr (for "xargs vim"), use
  read_cmd_fd.  For: Win32 and OS/2.
- Include ../patches/goldbert.auto.nest?


Support real script language:
  - Improve Perl interface:
	- Rename typemap file to something else?
	- Check for errors.  Vim crashes when using illegal window nr.
  - Have a look on how Perl handles loading dynamic libraries.
  - Tcl/Tk has the "load" command: load a shared library (.so or .dll).


Add built-in mini-script language:
  - Don't have TRLCMD for ":if", check for nextcomm in eval().
  - Add command line completion for ":let" and ":if"
  - Add listing internal variables.  Combine with ":set" listing?
  - for "= register:
	- Documentation for: "={expr1}<CR>  insert result of expression into
	  text/commandline.  Also CTRL-R = in Insert mode and command line.
	  Uses previous line for "=<CR>.  Use <Esc> to abandon (like with
	  "/<CR>").
  - Add date() and time() functions?  Maybe use strftime()?
  - Add possibility to use variables like registers: characterwise (default),
	linewise (when ending in '\n'), blockwise (when ending in '\001').  reg0,
	rega, reg%, etc.  Add functions linewise({expr}), blockwise({expr}) and
	charwise({expr}).

  - Consider patches/bodenstab (:putenv and :if).  See also hayes/out.xxx.
  - Support using '\' at the end of the line for continuation.  For all
	:sourced files?
  - some string manipulation functions (strchr(), etc.)
	Check Elvis 2.0 for a list of functions.
	substitute(string, pattern, substitute) to remove/change parts of an
	option?
  - Allow "^R='termcap'" and "^R='all'", useful for generating bug reports.

  Later, Normal mode conditionals:
	- "g{if cond}" "g{while cond}", etc. in Normal mode, for mappings.
	- Like Lotus: <IF cond>commands<ELSE>commands<ENDIF> (in any mode, handle
	  in vgetorpeek())
	  ":map _a athe term is <IF $TERM=="xterm">xterm<ELSE>unknown<ENDIF>.<Esc>"
	  Use "<IF expression>commands<ELSE>commands<ENDIF>

  Later, text manipulation functions:
  - col("'a")	column number of mark 'a
  - line("'a")	line number of mark 'a

  Later, loops etc.:
  - Add catching errors for a block of commands ":try" - ":onerror" - ":endtry"?
  - ":while (expr)" - ":endwhile" (with ":continue" and ":break")
  - function definition ":function {name}" = "endfunction" with arg1, arg2,
	etc.

- Use growarray for replace stack.
- Change replace_push to always put a NUL terminated string on the replace
  stack.  Makes it possible to put several characters back with <BS> (when
  deleting a TAB that replaced several other characters).
- Make Win32 and DJGPP version available with most options enabled.  Also
  for OS/2, Amiga, et al?


Documentation:
- Syntax.txt: explain that the ":hi" command only changes the things that are
  in the argument, and leaves the rest alone.
- Update perl.txt.
- Remove references to "section 9.9", replace by a |tag|.
- Replace all "file name" with "filename".
- Replace most '_' in tags by '-'.
- Documentation for 't_Co'.
- Documentation for 'nrformats' option.
- Remove "old features" list from vi_diff.txt, summarise the most important
  ones only.
- Add items to CHECKLIST
- Apply patches/premuz.vimref, lots of commas added.
- Update docs for 'hlsearch' (setting type of highlighting).
- '@' flag in 'highlight'.
- Use of "rvim", "rview", etc.  without shell commands.  "-Z" command line
  argument for restricted mode.
- Give names to some messages, e.g. hit-return, file (buffer?) message, etc.
  Use the same name everywhere.
- Autocommand example: use ":retab! 4" when reading, ":retab! 8" when writing.
- Replace "toggle" with "boolean" for options?
- Make a few sample menu sets (.gvimrc files) for novice vi users, novice Vim
  users, C programmers, ...
- Check text editor compendium for vi and Vim remarks.
- Use tags sorting from ctags.c when making vim_tags (for non-unix machines).
- Reduce number of characters in help tags file: remove ".txt", we know it's
  there, and remove the search command, it can be generated from the tag name.


Unix:
- When the value of $MAKE contains a path, configure can't handle this.  It's
  an autoconf bug.  Remove the path from $MAKE to work around it.


GUI:
7	GUI with Lesstif: adding a menu item that doesn't fit crashes Vim.
7	GUI with Lesstif: Tear-off menu's don't work.
7	GUI on Solaris 2.5.1, using /usr/dt/..: When gvim starts, cursor is
	hollow, after window lowered/raised it's OK. (Godfrey)


Mac:
- Add patches st-amant.eol?  No, it's too complicated.  Just add 'macmode'
  option?


MSDOS/DJGPP:
-	Check appending <CR>, then <BS>: no redraw for '{'? on MSDOS (Bradley)
	int main(void)
	{
	}
-	Hitting CTRL-P twice quickly (e.g. in keyword completion) on a 8088 machine,
	starts printer echo! (John Mullin).
-	MSDOS 16 bit version can't work with COMSPEC that has an argument, e.g.:
	COMSPEC=C:\WINDOWS\COMMAND.COM /E:4096	  (Bradley)
	Caused by BCC system() function (Borland make has the same problem).
-	Check if with DJGPP 2.01 the problem of a path starting with a backslash is
	still present.
-	Can't read an opened swap file when the "share" command has not been used.
	At least ignore the swap files that Vim has opened itself.
-	Mouse: handle left&right button pressed as middle button pressed.  Add
	modifier keys shift, ctrl and alt.
-	When too many files are open (10 or 15), strange things happen.  The Dos16
	version runs out of memory, in the Dos32 version "!ls" causes a crash.
	Another symptom: .swp files are not delete, existing files are "[New file]".


MSDOS, OS/2 and Win32:
-	Should look for $HOME/_vimrc before $VIM/_vimrc.
	Maybe look for docs in $VIM/doc before $VIM?
-	vim_getenv() now uses the executable path before the path of 'helpfile',
	this is the wrong order.
-	ml_setname() contains code to handle ":!cd dir", but mf_do_open() doesn't.
	Is this a bug?  How can the ":!cd dir" problem be reproduced anyway (Webb).
-	In MSDOS version(s): typing ESC three or four times crashes Vim, when
	'visualbell' is set (Kielhorn).


Windows 95:
-	Win32 version: changes font size in DOS box? (Man)
-	When 'lines' is set in _vimrc or columns is not 80, executing external
	commands sometimes hangs or crashes Vim or the PC.  This is a Windows 95
	problem. --> disallow changing 'columns' and 'lines' for Windows 95.
-	There is an occasional lockup when repeating a key while scrolling.  Vim
	unlocks when resizing the window.  Might be a Windows 95 problem.
-	Recommend using the DJGPP version in a Windows 95 console instead of the
	Win32 version, because:
	- Dead keys don't work properly with Windows 95.
	- Screen updating is slow.
-	Editing a file by it's short file name and writing it, makes the long file
	name disappear.  Use Unix method for making a backup file?  Better: make the
	way the backup file is made (copy or rename) an option, not a #define.
	Use FindFirstFile()->cAlternateFileName in fname_case() (George).
-	Doing wildcard expansion, will match the short filename, but result in the
	long filename (both DJGPP and Win32).


Win32:
-	Re-install the use of $TERM and support the use of different terminals,
	besides the console.
-	Make shift-left mouse extend the selection, right mouse pop up a menu.
-	Under NT, these abbreviations don't always work correctly (Shahar):
	:ca head split ../h/%<.h
	:ca srcf split ../cpp/%<.cpp
-	When exiting, sends ^M^M^J to the console in raw mode (Webb).


AIX 4:
-	After running Vim tty setting "cs8" is not restored, it becomes "cs5".  This
	causes 8 bit characters to loose their 8th bit.  Only with AIX 4, AIX 3 is
	fine. (Albayrak)  Maybe the "-parenb" problem?


Small problems:
- Try out the XFree 3.2A for Linux, check using Visual area on color-xterm
  (Schueller).  Does this work properly?
- incsearch is incorrect for "/that/<Return>/this/;//" (last search pattern
  isn't updated).
- '[ and '] should be set to start/end of line when using a linewise operator
  (e.g., ":w").
- Redraw bug: After /pat, "." doesn't always redraw (when line gets longer?).
- Problem with expanding tag names? (Webb) ":ta ui_wr<Tab>".
- "sourcing_name" might be wrong when _vimrc is used instead of .vimrc.
- These mappings don't work with the Win32 version: (Bradley)
	nmap ,p {<Right>V}<Left>
	nmap ,>	,p,>
	vmap ,> >
- Some versions of zsh don't return a NUL separated list for "print -N".
  Check if there are NULs in the returned string, may have to switch to
  space-separated list.
- When doing ":buf N", going to a buffer that was edited with ":view", the
  readonly flag is reset by readfile().  Make a difference between readfile()
  for the ":e" command and the ":buf" command, considering setting the
  readonly flag.
- Quickfix mode: column number should be interpreted with an 8-character
  tabstop.
- Use "mkinstalldirs" instead of "mkdir"?  Yes, it helps when the top
  directory doesn't exist yet.  No, if it doesn't exist there is probably
  something wrong with the location.
- When starting search for "/test/s+1" at first char of file, get bottom-top
  message, should not be there (Nam).  When 'ws' is not set, it doesn't work
  at all.  Also for "?test?e-1"?  Solution: Start searching in line 0.
- "vlllllllx" and then repeat close to the end of a line, deletes characters
  before the cursor.
- In xterm, when screen is saved/restored, there is an extra newline.
- For xterm, can get the title with "<Esc>[21t", no need to use X11 calls.
  This returns "<Esc>]l<title><Esc>\".
- Should full_screen be set/reset by starttermcap() and stoptermcap()?
- Support ACLs (Access Control Lists, Security Descriptor in WinNT).  Check
  with Windows NT or HPUX?  Add configure check for it, add code for when
  overwriting a file (viminfo or ":w" command) that copies the ACL to the new
  file.  Use info from Maximo: GetNamedSecurityInfo and SetNamedSecurityInfo.
- In xterm, recognize both vt100 and vt220 function keys f1-f4 and cursor
  keys.  Change add_termcode() to not remove an existing entry for a name,
  when it's needed.
- core dump within signal function: gdb doesn't show stack backtrace!  option
  to skip catch_signals()?
- Replace __PARMS() with __ARGS() everywhere?
- When using CTRL-R in insert mode, don't interpret special characters
  (commands), but do handle 'textwidth'.  Like using CTRL-V for every special
  character.  Also use this for pasting with the mouse.  Should also fix that
  pasting in Replace mode insert the text, instead of overwriting.
  How to handle ".p?  Like pasting with the mouse?
- Avoid that ":make" deletes the 'errorfile' from another Vim running ":make".
  When the 'errorfile' option contains ##, replace it with a unique number.
  Put the 'errorfile' in "/tmp" by default.
- Bug: Search commands from mappings should not be put in the history.  Only
  search commands from "*" and "#", ":ta", etc.
  NO: put only one search command from a mapping in history, the one that can
  also be used for "n".
- When using search history, the trailing '/' or '?' needs to be changed
  depending on the search command.  When there was no '/' or '?', add one, so
  flags can be added easily?
- CTRL-F at the end of the file, when 'so' is set, redraws twice.  When the
  window is small (< 2 * 'so') it behaves differently.
- CTRL-E, when 'so' is non-zero, at end of the file, causes jumping up-down.
- CTRL-E and CTRL-Y don't work in small window when 'so' is 4 (Acevedo/in.226).
  --> Remember if the previous command was "cursor follows screen" or "screen
  follow cursor" and use this in cursupdate().
- in configure, put termlib before termcap?
- tilde_replace() can only handle "~/", should also do "~user/".
- If writing to the swap file fails, should try to open one in another
  directory from 'dir'.  Useful in case the file system is full.
- should use acconfig.h to define prototypes that are used by autoheader.
- When dragging status line with mouse, sometimes a jump when first clicking
  on the status line (caused by 'winheight').  Select window on button up,
  instead of on button down.
- Using 'cmdheight' set to 2, edit two files, do ":wq" then ":w", cmdline is
  wrong (Sievert).
- Win32: when doing ":v *.burp", when there is no match, tries to edit file
  with a star, which causes a "cannot open swapfile" error.  Don't include
  filenames with forbidden characters in ExpandWild..(), even when
  LIST_NOTFOUND is included.  Or just remove list_notfound (unix doesn't
  support it anyway).
- Unix ExpandWildCards() doesn't use list_notfound.  Make this work the same
  over all platforms.
- Expand environment variables in ExpandWildCards() with expand_env().  Makes
  $VIM work when it's not set.
- 'term' isn't seen when set from $TERM, but 'ttytype' is.
- term_console is used before it is set (msdos, Amiga).
- Order of initialization is messy.  termcapinit() is called AFTER
  mch_windinit(), which may call getlinecol(), which uses the termcap entries.
  Move the mch_windinit() call to after termcapinit()?
  msg() and cursor_off() may be called before termcap initialized (e.g. for
  error message from alloc()).  Add flag that shows that termcap has been
  initialised?
- There are often a few <CR> on a row sent to the screen, should not be
  necessary.
- Text is scrolled up and down: (acevedo)
   - set scrolloff to something >1 (i always use "set so=4")
   - set the win. hegiht to scrolloff + 1  (i'd do ^W5_)
   - load a file with scrolloff + 2 lines
   - put the cursor in line scrolloff +1  (5G)
   - if you move the cursor along the line (h, l, insert text, etc)
	 the text is crolled with each keystroke (once up, once down,...)
	 sometimes with <Esc> the text is scrolled up and down whitout stop!!!!
- In replace mode, when 'expandtab' and 'smarttab' are set, and inserting
  Tabs, backspacing doesn't work correctly.
- When performing incremental search, should abort searching as soon as a
  character is typed.
- ExpandWildCards() should have three values for list_notfound:
	list_notfound == 0	don't list any not found files
	list_notfound == 1	only list not found files if there are not wildcards
	list_notfound == 2	list all not found files
	Use 1 for ":next" (currently wrong for Amiga?).
  Make sure that when there is no match, an error message is given (already
  works with glob, but not with "sh").
- Make CTRL-C on Unix generate a signal, avoid using select() to check for a
  CTRL-C (it's slow).
- Instead of using CTRL-C, use the INTR character from the tty settings.
  Somebody has INTR set to DEL.
- When editing a help file with "vi vim_ref.txt", ":help something" opens a
  NEW buffer on the SAME file.  Problem with comparing long file names?
- Move VimLeave autocommands to after writing the viminfo file?  Useful when
  something needs to be done with the viminfo file (chmod it). (Hiebert)
- When writing viminfo file, handle CTRL-J in filename (needs to be escaped
  with CTRL-V). (Acevedo)
- qf_types() should output the single qf_type character, when it's not 'e' or
  'w'.
- When checking name of shell, for setting 'shellpipe', ignore any arguments
  like "-f".
- Simplify_filename(): Check that removing a ".." really takes us to the right
  file (watch out for symbolic links).
- Quitting Visual mode with <Esc> should put cursor back at start (like when
  executing an operator).
- Selecting a block-Visual area with the mouse, should be able to pick up each
  corner, not just start and end.
- When starting Vim, switch terminal to RAW mode asap, so typeahead is handle
  correctly (without the need for a <CR>).
- When starting with "vim -o *.c" (in GUI only?), the commandline height is
  too big, and the current window is too small.
- After ":set all&", 'lines' and 'ttytype' are still non-default, because the
  defaults never get set.
- otherfile() is unreliable when using links.  Use stat() and compare
  device/inode numbers?


I can't reproduce these:

-	With backupdir=~/tmp,/tmp nowritebackup nobackup patchmode=.smr and the
	patchmode file exists, backup files in the tmp directory are left lying
	around - they should be deleted! (Riehm)

[These have been reported for version 3.0, they may not appear in this version]
-	On Diamond Viper 132x43 mode crash on exit (John Lange)
-	MSDOS: After writing on a network the 'w' bit for others is set.


Problems that will probably not be solved:

-	Problem with HPterm under X: old contents of window is lost (Cosentino).
-	Amiga: When using quickfix with the Manx compiler we only get the first 25
	errors. How do we get the rest?
-	Amiga: The ":cq" command does not always abort the Manx compiler. Why?
-	Linux: A file with protection r--rw-rw- is seen readonly for others. The
	access() function in GNU libc is probably wrong.
-	MSDOS: When using smardrive with write-back buffering, writing to a readonly
	floppy will cause problems. How to test for writable floppy first?
-	When doing a CTRL-Z and typing a command for the shell, while Vim is busy
	(e.g. writing a file), the command for the shell is sometimes eaten by Vim,
	because the terminal mode is changed from RAW to CBREAK.


---------------------  extensions and improvements ----------------------

Performance:
  - Further improve finding mappings in maphash[] in vgetorpeek()
  - Do profiling on:
	- :g/pat/normal cmd
	- 1000ii<Esc>
	- deleting 10Mbyte worth of lines (netscape binary)
	- ":g/^/m0" on a 450Kbyte file.  And the "u".
  - Use macros/duarte/capicua for profiling.  Nvi 1.71 is the fastest!


Screen updating:
- screen_line():
	- insert/delete character stuff.
	- improve delete rest of line (spaces at end of line).
- When moving or resizing window, try to avoid a complete redraw (esp. when
  dragging the status line with the mouse).


Tags:
8w	Propose a new format for the tags file (Darren?).
	- Check out cscope and its use in Nvi (:tagnext/:tagprev).
	- Check out /usr/local/lib/elvis/elvistag.html.
	- Alternative: Change format of tags for static tags: use "0," in front of
	  search pattern.
8w	Multiple tags: CTRL-] again jumps to next tag?
8w	Use tag-completion to select the right one (show filename and line number
	or search string to select the right one).  See ../patches/nahshon.tag.diff.
-	Completion of tags should include static tags, at the end.
-	Disallow changing the buffer for commands from a tags file.  Also for
	commands from a local .vimrc?
-	Binary searching in big tags file (Leo Chan).
-	Search commands in a tags file: Allow optional "e", "b" and "s" flags to
	position the cursor in the right column.
-	Using a tags file relative to the current file, and 'tags' contains
	"./../tags", the file name becomes "/path/dir/b/file.c".  Should not always
	use absolute path. (Hiebert)
-	For duplicate tags: Add commands ":ntag", "Ntag", ":prevtag", ":rewtag",
	:lasttag". Make CTRL-D listing of matching tags more informative. Keep count
	for tag index in the tag stack, so CTRL-T and :ta work.
	Alternative: When CTRL-] used and there are duplicates, list the duplicates
	(inluding search pattern) and let the user enter a number.
-	Allow multiple arguments to ":stag", make one window for each.
-	Add include files for emacs-tags files (David Brown).
-	When searching for a tag pattern, where to start when it's in the current
	file (current cursor position, or first line always)?


GUI:
-	Visual highlighting should keep the same font (bold, italic, etc.).
-	Problem in Athena, when "j" or "k" repeated quickly, display is messed up
	(Lauther).
-	After killing gvim, get "16H" in the terminal where it was started.
-	When starting GUI with ":gui" while 'writedel' is non-zero, escape sequences
	are split up.
-	When starting GUI with ":gui", and window is made smaller because it doesn't
	fit on the screen, there is an extra redraw.
-	When using our bold-font-trick, sometimes the next character is not cleared
	properly.
-	When the window is bigger than the screen, the scrolling up of ":vers"
	message is wrong.  Also when the bottom part of the window is obscured by
	another window.
-	When selecting the output from ":vers", including the hit-return message, it
	works OK, unless another window is clicked on.
-	When setting font with .Xdefaults, there is an extra empty line at the
	bottom, which disappears when using ":set guifont=<Tab>". (Chadzelek)
-	Big change: Move GUI to separate program "vimgui", to make startup of vim a
	lot faster, but still be able to do "vim -g" or ":gui".
-	When 'mouse' is empty, pasting should work like in xterm, not at the current
	cursor position.
-	Make cursor blink when it has not moved for 'blinkwait' 1/10 seconds, with
	'blinktime' 1/10 seconds on/off time.  Don't do this when 'blinktime' is 0.
-	Add option to set the appearance of the cursor in different modes (for the
	GUI): color, shape, blink frequency.  Example:
	  :set cursor=n:block,v:flash-block,ic:bar
	  :set gui_pointer=nv:arrow,ic:bar
-	Motif: Scrollbar for cmdline disappears with ":set go=", ":set go=lbrm".
-	Motif: Tear-off menu item "----------" crashes Vim on some machines.
	(Netherton)  It works fine for me, maybe it's a Motif problem.
-	When font shape changes, but not the size, doing ":set font=" does not
	redraw the screen with the new font.
-	Horizontal scrollbar doesn't work in rightleft mode.
-	Athena: When dragging last status line with the mouse, small black lines
	appear in the command line pseudo-scrollbar (only when status line moved
	quickly).
-	Add toolbar?  With 't' flag in 'guioptions' and ":tool" command.  Or just
	use ":menu" command with a single menu name?  Don't mix with menu bar, that
	breaks the Motif style guidelines.  Make it possible to put the toolbar on
	top, left, right and/or bottom of the window?  Allows for softkey-like use.
-	Flashes really badly in certain cases when running remotely from a Sun
-	Window should be redrawn when resizing at the hit-return prompt.
-	Scrollbars with Motif 1.1 are ordered upside down!  Do we care?
-	Motif steals <F10> from us, to pop up menus with the keyboard.  How do we
	get it back if we want it?
-	Paste in Insert mode should not do autowrap etc.  Or maybe this should be
	changeable with an option?
-	Option/resource to use pointer focus from the mouse to select the current
	Vim window.
-	Add command or option to set fg/bg color.
-	Put a nice picture in the icon (but how do we do that?).
-	":menu" should take count for where the menu is inserted (for first menu
	item that doesn't exist yet)
-	Should add option for where to put the "Help" menu: like Motif at the far
	right, or with the other menus (but still at the right).
-	Would be nice if menu items can be specified for several modes at once.
-	Make better default menus!
-	Add "Buffers" menu, list of (hidden) buffers.
-	Add menu item to "Keep Insert mode". More generally: Include a nice way to
	change options.
-	When using a pseudo-tty Vim should behave like some terminal. Terminal codes
	to/from shell should be translated.
-	Make it easy to specify a shortcut (key) for a menu item.
-	":mkgvimrc" command, that includes menus.
-	Would it be useful to be able to quit the GUI and go back to the terminal
	where it was started from?
-	When using the scrollbar, don't display the command with 'showcmd'.
-	Add a file selector (Tsirkin has one for Athena).


Insert mode completion:
-	Add CTRL-X command in insert mode like CTRL-X CTRL-N, that completes WORDS
	instead of words.
-	Make CTRL-X CTRL-K do a binary search in the dictionary (if it's sorted).
-	Set a mark at the postition where the match was found (file mark, could be
	in another file).
-	Add 'complete' option: Which completion to be done for CTRL-N/CTRL-P in
	insert mode: 'w' for other windows, 'b' for other buffers, 'd' for
	dictionaries (Webb).
-	Add CTRL-A command in CTRL-X mode: show all matches.
-	Add command in CTRL-X mode to add following words to the completed string
	(e.g. to complete "Pointer->element" with CTRL-X CTRL-P CTRL-W CTRL-W)
-	CTRL-X CTRL-F: Use 'path' to find completions.


'cindent':
	- Two labels below each other, second one is not handled correctly:
	{
	label1:
		label2:
	}
	- Handle a comment halfway the line: "if (/* foo */ bar)".  Adjust
	isterminated().
	- Include patches/cpp_labels (cindent stuff). now: patches/cpp_labels2
	- Make it possible to handle "C::M" for C++ (currently the first ":" removes
	all indent, because it looks like a label.
	- "[p" and "]p" should use 'cindent' code if it's on (only for the first
	line).
	- Add option to 'cindent' to set indent for comments outside of {}?
	- Add options for this style inside parens:
			if (	(interrupt_action != USE_SORT_ATN_HANDLING)
			 && (interrupt_action != DISABLE_ATN_HANDLING)
			 && (interrupt_action != USE_CURRENT_ATN_HANDLING)
		   )
	- Make a command to line up a comment after a code line with a previous
	comment after a code line.  Can 'cindent' do this automatically?
	- formatting of struct/array inits:
	- The lines used to initialise the struct or array above should not be
	  considered 'continuation' lines just because the previous one does not
	  end with ';'.  If you go back line by line I think it should be possible
	  to tell the difference.  If you find a line that ends in ';', then it's
	  OK to have continuation lines.  If you find a "{", and the character
	  before it (not counting space & comments) is either ',' or '=', then
	  there should not be continuation lines.  If the character before the "{"
	  is another "{", then you have to check before that one too.
	- When 'cindent'ing a '}', showmatch is done before fixing the indent.  It
	looks better when the indent is fixed before the showmatch. (Webb)
	- Add option to make indenting work in comments too (for commented-out
	 code), unless the line starts with "*".
	- Don't use 'cindent' when doing formatting with "gq"?
	- When formatting a comment after some text, insert the '*' for the new line
	  (indent is correct if 'cindent' is set, but '*' doesn't get inserted).
	- Make smartindenting configurable. Add 'sioptions', e.g. '#' setting the
	  indent to 0 should be switched on/off.
	- For smartindent: When typing 'else' line it up with matching 'if'.


Text objects:
-	Change characters for objects.  Use "a" for object with white space, "i"
	for inner objects (without white space).  See what I wrote to Barantsev and
	Battle.
-	Ignore comment leaders for objects.  Make "das" work in reply-email.


Visual mode, soon:
-	With blockwise visual mode and "c" command, insert same text in every line.
	With "r" replace all chars in visual area witht the next char. With "C"
	replace each line with entered text (go to next line with <CR>).  With "i"
	insert the same text in front of the block in each line, with "a" append
	after every line.
-	For visual mode: Command to do a search for the string in the marked area.
	Only when less than two lines. Use "g/" and "g?".
-	When selecting in visual block mode, use curswant instead of cursor column.
	(Webb 97) adjust 'o' command etc.
-	Filtering a block should only apply to the block, not to the whole lines.
	When the number of lines is increased, add lines. When decreased, padd with
	spaces or delete? Use ":`<,`>" on the command line.
-	CTRL-V :s should substitute only in the block.
-	CTRL-V > should move the block, not whole lines.
-	Add "O" command in Block Visual mode: exchange columns of Visual and
	w_cursor (move cursor to other corner, on same line).
	Add CTRL-O: same, but exchange line numbers.
-	CTRL-I and CTRL-O should work in Visual mode, but only jump to marks in the
	current buffer.
-	CTRL-A and CTRL-X should increase/decrease all numbers in the Visual area.
-	"gCTRL-G" should count the number of characters in the Visual area.

Visual mode, later:
-	"p" should replace the Visual area with the contents of a register (swap
	register contents with Visual text).
-	When in blockwise visual selection (CTRL-V), allow cursor to be placed right
	of the line. Could also allow cursor to be placed anywhere on a TAB or other
	special character.
-	Add commands to move selected text, without deselecting.
-	Add visual command to swap selected text with unnamed register.
-	Add visual command to do rot13 encoding.


Incsearch:
-	Add a limit to the number of lines that are searched for 'incsearch'?
-	When incsearch used and hitting return, no need to search again in many
	cases, saves a lot of time in big files. (Slootman wants to work on this?)
	When not using special characters, can continue search from the last match
	(or not at all, when there was no match).  See oldmail/webb/in.872.
-	With incsearch, use CTRL-N/CTRL-P to go to next/previous match, some other
	key to copy matched word to search pattern (Alexander Schmid).


Quickfix:
-	Add parsing of multi-line error messages, where one of the lines contains a
	"^" at the column number (Campbell).  Maybe with a Perl script?
-	Add parsing of change-directory lines in 'errorformat', for gmake:
	  make[1]: Entering directory `/tmp/tools/tools-2.16/example'
-	Add joining of lines to 'errorformat' at "\n".


More advanced repeating commands:
-	Add "." command for visual mode: redo last visual command (e.g. ":fmt").
-	Add "." command after operator: repeat last command of same operator. E.g.
	"c." will repeat last change, also when "x" used since then (Webb).
	Also: keep history of Normal mode commands, add command to list the history
	and/or pick an older command.


Command line history:
-	Add ":history" command for command lines and search patterns.
-	Add "KeyWasTyped" flag: It's reset before each command and set when a
	character from the keyboard is consumed. Value is used to decide to put a
	command line in history or not. Put line in history if it didn't completely
	resulted from one mapping.


Mappings and Abbreviations:
-	Add mappings that take arguments.  Could work like the ":s" command.  For
	example, for a mouse escape sequence:
		:mapexp  <Esc>{\([0-9]*\),\([0-9]*\);	H\1j\2l
-	Make it possible to have an empty rhs for a mapping in a vimrc file.
-	Make it possible to include a <Nul> in the lhs and rhs of a mapping.
-	Add command to repeat a whole mapping ("." only repeats the last change in
	a mapping).  Also: Repeat a whole insert command, including any mappings
	that it included.  Sort-of automatic recording?
-	Make it possible to undo all the commands from a mapping, including a
	trailing unfinished command, e.g. for ":map K iX^[r".
-	Add an option to ":map" that makes it display the special keys in
	<> notation (e.g. <CR> instead of ^M).  Or just always do this?
-	Include an option (or flag to 'cpoptions') that makes errors in mappings not
	flush the rest of the mapping (like nvi does).
-	Use context sensitiveness of completion to switch abbreviations and mappings
	off for :unab and :unmap.
-	completion of existing mappings for ":unmap", ":unab", etc.
-	Local mappings for a buffer. Useful for autocmds. Count for map command is
	buffer number. ":0map bar foo" = enter mapping for current buffer.
	Same for abbreviations.
-	Add optional <Number> argument for mappings:
	:map <Number>q			 ^W^W<Number>G
	:map <Number>q<Number>t	 ^W^W<Number1-1>G<Number2>l
	:map q<Char>			   :s/<Char>/\u\0/g
	Or implicit:
	:map q						<Register>d<Number>$
-	Add mappings for replace mode: ":rmap".  How do we then enter mappings for
	non-replace insert mode?
-	Add ":alias" command, like ":cmap" or ":cabb", but only for the command name
	and it isn't displayed.  Or add the possibility to define a function (with
	arguments range, forceit, etc.).
-	Add 'mapstop' command, to stop recursive mappings.
-	List mappings that have a raw escape sequence both with the name of the key
	for that escape sequence (if there is one) and the sequence itself.
-	List mappings: Once with special keys listed as <>, once with meta chars as
	<M-a>, once with the byte values (octal?). Sort of "spell mapping" command?
-	When entering mappings: Add the possibility to enter meta keys like they are
	displayed, within <>: <M-a>, <~@> or <|a>.
-	Allow multiple arguments to :unmap.
-	Error message for ambiguous mapping: Include the arguments.
-	Command to show keys that are not used and available for mapping
	":freekeys".
-	Support the "abbreviate" command in modelines (Kearns).  Careful for
	characters after <Esc>, that is a security leak.
-	Allow any character except white space in abbreviations lhs (Riehm).


Various improvements:
-	Allow the use of environment variables in the autocmd pattern, e.g.,
		:au BufWritePost $VIM/vimrc :so $VIM/vimrc
-	Include the clipboard patches (patches/singer.clipboard2) after Robert Webb
	has changed the GUI stuff?
-	Add code to disable the CAPS key when going from Insert to Normal mode.
-	Make it possible to ignore errors for a moment ('errorignore'?).  Another
	option to switch off giving error messages ('errorquiet'?).  Also an option
	not to give any messages ('quiet')?
-	Add ":begin" command, keep getting lines until an ":end".  Useful for
	defining multi-line mappings (Webb).
-	Add pre-command to ignore errors for one command: ":ignore"?
-	Set date/protection/etc. of the patchfile the same as the original file.
-	Use growarray for termcodes[] in term.c
-	Default mapping for help files: <Tab> to position cursor on next |tag|.
-	Set the defaults for 'maxmem' and 'maxmemtot' much higher, Ram prices have
	dropped.  Use getrlimit() if possible.
-	Add <window-99>, like <cword> but use filename of 99'th window.
-	Should make it possible for ml_get() to keep more than one line locked.  Use
	ml_get_locked()?  Needed to be able to make a regexp that understands line
	breaks.
-	in configure, put termlib before termcap?
-	Make a set of operations on list of names: expand wildcards, replace home
	dir, append a string, delete a string, etc.
-	Use CTRL-G in Insert mode for an extra range of commands, like "g" in Normal
	mode.
-	Support making vi (compatible) vim (without GUI) gvim (with GUI) and all
	(vi, vim without GUI, gvim with GUI).  Use different extensions for each
	compile-set.  ".oc", ".ov", ".og".
-	add_to_showcmd() is slow when executing macros (test with life.mac).
	Disable when !KeyTyped or !char_avail()?
-	Add 'bindsidescroll' option: patches/locksidescroll.
	Change: 'scrollbind' option for each window, 'scrollopt' list of flags for
	how to bind windows: 'h'orizontal, 'v'ertical, 's'earch, 'r'elative, etc..
	Also 'e'xecute some commands (search, vertical movements) in all bound
	windows.
-	Remove mktemp() and use tmpname() only?  Ctags does this.
-	Add support for environment variables in ExpandWildcard in win32.c (like in
	msdos.c).
-	Add patches/goldberg.bufchanged2: BufChangedShell autocommand, instead of
	giving "file changed since reading".
-	Implement command like "[[" ("]]") for Java: go to the previous (next) '{'
	('}') that's not in column 0.
-	When replacing environment variables, and there is one that is not set, turn
	it into an empty string?  Only when expanding options? (Hiebert)
-	Speed up CTRL-X CTRL-K dictionary searching (don't use a regexp?).
-	Add possibility to set separate shell for ":sh", piping "range!filter",
	reading text "r !ls" and writing text "w !wc". (Deutsche)
-	Option to set command to be executed instead of producing a beep (e.g. to
	call "play newbeep.au").
-	Add string option to show in status line (like the [Help] item).  Per
	buffer.
-	Add option to always use '" when starting to edit a new buffer.  Could use
	autocommand for this, but it gives an error message when the mark is not
	set.
-	"gp" and "gP": like "p" and "P", but replace instead of insert (esp. for
	blockwise registers).
-	Add 'timecheck' option, on by default.  Makes it possible to switch off the
	timestamp warning and question. (Dodt).
-	Add patches from Burgnara for { and } in Ex address?  Also "[[" and "]]"?
-	Add ":first", ":bfirst", etc. to complement ":last", ":blast, etc.
-	Be able to disable autocommands for a buffer or before starting to edit a
	file (flag to ":e" command?  'autocmd' option, boolean or list of events?).
-	Set cursor line to 1 before executing autocommands, to make it work
	consitantly?
-	Make it possible to use the ":au" command from within an autocommand (e.g.
	to be able to remove itself).
-	Add autocommands to ":mkvimrc".
-	Add ":ebuf" command: Works like ":edit", but takes arguments like ":buf"
	(Webb).  NO!  The use of 'hidden' is not consistent.  Find another way to
	make it possible to have commands that depend on 'hidden', never hide and
	always hide.  Use '&' flag after command to hide, '@' flag not to hide.
	Or make all current commands depend on 'hidden', also buf list commands like
	":only" and ":buf".  Yes, that's probably better.
-	After ":cd" has been used, all file names are long.  Remove the current
	directory from the displayed file name when possible, in home_replace().
-	Accept ":set so=$ENV", environment variables for number settings.
-	After ":cd", a newly opened file can use the short name again.  Remove the
	"did_cd" global variable?
-	When starting to edit a file that is already in the buffer list, use the
	file name argument for the new short file name. (Webb)
-	Use "patches/selectfile.tgz" as a base for a file selector in Vim.
-	Add "?" flag to Ex commands: pop up a requester for changed files.  Also
	":e*" to show a file selector. (Webb)  Add 'confirm' option to have '?' on
	by default?  Requester in Motif is called MessageBox.
	Alternative: prepend ":browse" command or ":confirm" command.
-	Add ":request" command, to pop up a user-defined requester.  The result
	would go in a variable.
-	Make "5dd" on last-but-one-line not delete anything (vi compatible).  Change
	cursor_down()???  Many other commands will change too: "5j", "c5j", etc.
	Add flag in 'cpoptions'?
-	Make 'smartcase' work even though 'ic' isn't set (Webb).
-	Add 'i' flag to search command: ignore case; 'u' flag: use case.
	When used after ":g" command, backslash needed to avoid confusion with the
	following command.
-	Add 'v' flag to search command: enter Visual mode, with the matching text as
	Visual area. (variation on idea from Bertin)
-	When replacing with a line break, like in ":s/pat/^M/", move marks after the
	line break column to the next line. (Acevedo)
-	When filtering lines, try to keep the marks in the filtered lines.  Need to
	move some marks if the number of lines decreases.
-	When changing text, e.g. when formatting with "gq", try to keep the marks in
	the same position.
-	Add ":switch bufname" command, like ":buf", but jump to window with that
	buffer, or open new window if there isn't one.
-	Add flags to 'whichwrap' for command line editing (cursor right at end of
	lines wraps to start of line).
-	Include marks for start/end of current word, sentence, paragraph, section.
	Useful in mappings.
-	Searching: "/this//that/" should find "that" after "this".  ":/this//that/"
	should find "that" after "this", this being one address.
-	Use "instman.sh" from Elvis to install manpages?
-	Add option to make messages scroll up from the bottom, increasing
	'cmdheight' and remove the wait-for-return message.  Needs a setting for the
	maximum number of lines for which this will work.  And a setting for when
	the messages will be removed (any key press/timeout of N seconds/CTRL-L)
	(Webb).
	ALTERNATIVE: Keep a history of the last N messages.  Don't ask to hit return
	for that many messages.  Add command to scroll up/down in message history
	(Aerts).  Also need to keep the most important messages: Error messages are
	not overwritten by warning or informative messages.
-	Disallow setting the 'shell', 'makeprg', 'formatprg' or 'keywordprg' options
	in a modeline???  Also 'secure' and 'exrc' should be forbidden.
-	Make count for "K" command, when 'keywordprg' is "man", work like
		"!man <count> <word>"
-	Add flag in 'cpoptions' that makes <BS> after a count work like <Del> (Sayre).
-	Add flag in 'cpoptions' that makes operator (yank, filter) not move the
	cursor, at least when canceled. (default vi compatible).
-	MSDOS: Support the use of "~" for $HOME.  Expand $VAR in file names.
-	":cd": echo the new current directory.
-	After ":cd", a newly opened file can use the short name again.  Remove the
	"did_cd" global variable?
-	Unix: Support the use of "~" in WildExpand() when 'shell' doesn't do it.
-	Make "gq<CR>" work on the last line in the file.  Maybe for every operator?
-	findmatchlimit() should be able to skip comments.
-	Repeating insert "1000i-<Esc>" displays --INSERT-- all the time, because of
	the <Esc> at the end.  Make this work faster (disable redrawing).
-	Add redirecting of Ex commands.  Add a command to dump all the settings,
	mappings, autocommands, etc. in a file, to be included in a bug report.
	":redirect  {file}  {command}".  Add ">&" to redirect error message too.
	Add ">>" for appending.  Add ":redirbuf" to redirect to a buffer.
-	Setting of options, specifically for a buffer or window, with
	":set window.option" or ":set buffer.option=val".  Or use ":buffer.set".
	Also: "buffer.map <F1> quit".
-	Detect textmode after executing the autocommands, otherwise the .gz
	autocommands don't work for MS-DOS.  Needs to be able to remove the ^Ms at
	the end of each line.  Alternative: don't use a filter command, write the
	file, gunzip, set nobin, delete the lines, read the file.
-	When hitting <Esc> or CTRL-C in Normal mode, give a message to help novice
	users to get out: "Type  :q!  to quit Vim".
-	Add possibility to ask for confirmation before exiting Vim.
-	Add :delcr command:
							*:delcr*
	 :[range]delcr[!]		Check [range] lines (default: whole buffer) for lines
						ending in <CR>.  If all lines end in <CR>, or [!] is
						used, remove the <CR> at the end of lines in [range].
						A CTRL-Z at the end of the file is removed.  If
						[range] is omitted, or it is the whole file, and all
						lines end in <CR> 'textmode' is set.  {not in Vi}
-	Should integrate addstar() and file_pat_to_reg_pat().
-	Add option, like 'scrolloff', to make the cursor always appear in the middle
	of the window (Benjamin Griffin).  Like always doing "zm".
-	Make it possible to enter a digraph after "r" (with CTRL-K).
-	Make it possible to enter "r<C-E>" and "r<C-Y>" (get character from line
	below/above).
-	Use digraph table to tell Vim about the collating sequence of special
	characters?
-	Autoconf: Use @datadir@ for the system independent files.  Make sure the
	system dependend and system independed files are separated. (Leitner).
-	When working over a serial line with 7 bit characters, remove meta
	characters from 'isprint'.
-	Change 'smarttab' into an option to make <Tab> always insert 'shiftwidth'
	characters?  Better: behave like 'ts' is 'shiftwidth', but write files like
	'ts' is 8.
	Alternative: Add 'softtab': Possibility to keep 'ts' at 8 and insert
	'softtab' characters when <Tab> is hit.
-	MSDOS: look for .vimrc, helpfile and .viminfo in argv0 dir. (Ferenc)
-	Add autoconf check for waitpid()/wait4().
-	Add autoconf check for library path "/usr/lib" and remove it (like for
	/usr/include).
-	Always output <CR><NL> to the screen, never just <NL>. (Olaf Seibert)
-	Option to make all swap file names start with ".", to make them hidden
	(Grundman).  For MS-DOS: set the 'hidden' file attribute.
-	Use fchdir() in init_homedir(), like in FullName().
-	In win_update(), when the GUI is active, always use the scrolling area.
	Avoid that the last status line is deleted and needs to be redrawn.
-	Vi compatibility (optional): make "ia<CR><ESC>10." do the same strange
	thing.  (only repeat insert for the first line).
-	Make marks present in .viminfo usable as file marks: Display a list of "last
	visited files" and select one to jump to.
-	Include turbo_loader patches, speeding up reading a file?
-	In regexp.c: "\^" after "\|" or "\(" is start of line, and "\$" before "\|"
	and "\)" is end of line.
-	Change request: "/^$\|the" finds both empty lines and "the", but "/the\|^$"
	doesn't.  Make '^' after "\|" also a special character?
-	Call maketitle() whenever curbuf->b_changed is set or reset, and include
	"Vim +" in the title for changed buffers.  How about the icon?
-	Add an option 'titlesub' that has a match pattern and replacement string for
	the title, like the ":s" command.
	OR: Allow the user to define a title() function that sets the window title
	to anything.
-	Add events to autocommands:?
	normalenter  - Entering normal mode.
	insertenter  - Entering insert mode.
	replaceenter - Entering replace mode.
	cmdenter	 - Entering cmdline mode.
	visualenter  - Entering visual mode.
-	Give better error messages by using errno (strerror()).
-	Give "Usage:" error message when command used with wrong arguments (like
	Nvi).
-	Add 'sidescrolloff' option, like 'scrolloff' for sideways scrolling.
-	Make 'restorescreen' option also work for xterm (and others), replaces the
	SAVE_XTERM_SCREEN define.
-	Add an option to make ":bnext" and ":bprev" wrap around the end of the
	buffer list.  Also for ":next" and ":prev"?
-	When 'wrap' is off, add commands to scroll screen left/right by half the
	screen width: "zH" and "zL"?
	NO: use "zH" and "zL" to work like "zt" and "zb", because that's what would
	be logical compared to the "H" and "L" commands. (Guckes)
	Use "z0" and "z$" to scroll half a page?
-	Implement a "sticky" help window, some help text lines that are always
	displayed in a window with fixed height. (Guckes)  Use "~/.vimhelp" file,
	user can edit it to insert his favorite commands, new account can contain a
	default contents.
-	Avoid calls to plines() for cursor line, use w_cline_height.
-	Give warning message when using ":set t_xx=asdf" for a termcap code that Vim
	doesn't know about.  Add flag in 'shortmess'?
-	Make "vim -o file1 file2" start without the need to hit return.  Add 'O'
	flag in 'shortmess' to switch off file messages, or make them overwrite each
	other (also for "2 files to edit").
-	Remove fcntl() from autoconf, all systems have it?
-	Add ":che <file>", list all the include paths which lead to this file.
-	"-V" command line argument: Verbose, show which .vimrc, .exrc, .viminfo
	files etc. are used for initializing.
-	For a commandline that has several commands (:s, :d, etc.) summarize the
	changes all together instead of for each command (e.g. for the rot13 macro).
-	Add command like "[I" that also shows the tree of included files.
-	Add words to 'cinwords' to reduce the indent, e.g., "end" or "fi".
-	":set sm^L" results in ":set s", because short names of options are also
	expanded.  Is there a better way to do this?
-	Set default for 'dictionary', add search for dictionary to autoconf.
-	Add 'wildlongest' option: Key to use to find longest common match for
	command line completion (default CTRL-L), like 'wildchar'. (Cregut)
	Also: when there are several matches, show them line a CTRL-D.
-	":buf" and ":bdel" should accept '%' and '#' argument, like for ":e".
-	With command line completion after '%' and '#', expand current/alternate file
	name, so it can be edited.
-	On the command line, where a % is expanded: "%:s/r/s/" substitution (Dixon)
	patches/dixon.329
-	Add ":@!" command, to ":@" like what ":source!" is to ":source".
-	Should be possible to write to a device, e.g. ":w! /dev/null".
-	Add 't_normal': Used whenever t_me, t_se, t_ue or t_Zr is empty.
-	Make strings in 'comment' option a RE, to be able to match more complicated
	things. (Phillipps)
-	Add option to show the current function name in the status line.  More or
	less what you find with "[[k", like how 'cindent' recognizes a function.
	(Bhatt).
-	Bind windows together, scrolling is done in both windows synchronous
	(horizontally and/or vertically and for seach commands).  Use 'winbind'
	option, with flags 'v'ertical, 'h'orizontal and 's'earch?
-	":cab map test ^V| je", ":cunab map" doesn't work.  This is vi compatible!
-	Add command to remove (all) digraphs. (Brown)
-	Make it possible to toggle 'paste' in Insert mode.
-	Make 'paste' work without resetting other options, but override their value.
	Avoids problems when changing files and modelines or autocommands are used.
-	Include option to switch shell off, for secure version (impossible to switch
	on again).
-	CTRL-W CTRL-E and CTRL-W CTRL-Y should move the current window up or down if
	it is not the first or last window.
-	Include-file-search commands should look in the loaded buffer of a file (if
	there is one) instead of the file itself.
-	Make 'lisp' code more vi compatible.
-	"g CTRL-A" and "g CTRL-X": Increment/decrement alphabetical char
	(a -> b -> c)?  With flag in 'nrformats'?
-	Add possibility for file name on the command line to be searched for in the
	'path',  when there is a special character before the file name ('<' ?).
-	'path' can become very long, don't use NameBuff for expansion.
-	Allow the use of wildcards in 'path'.
-	Add possibility in 'path' to define the top of a tree to be searched, e.g.
	":set path=.,/usr/include,~/include/**".
-	When unhiding a hidden buffer, put the same line at top of the window as the
	one before hiding it. Or: keep the same relative cursor position (so many
	percent down the windows).
-	File name put into swap file should have first part of the path replaced by
	"~user", also when editing a file in somebody else his home directory, to
	make it work from different machines (Webb).
-	When entering the help window, don't resize to 'helpheight' if the user has
	reduced the size before (Webb). Keep the window height that the user set the
	window to in a "preferred window height" entry for each window.
-	Add flag to search command to forget it for "n", e.g. "/foo/f".  Also for
	":s/pat//f".  Also add flag to 'r'emember (for mappings).
-	Add command to display the current search pattern, substitue pattern and
	last used pattern. (Margo) Maybe make it accessible through a register ("/
	for search string)?  Also make "/ register writable (Maxi)
-	Add a command like ":cn" that jumps to the next error, but uses an open
	window for the buffer with the error if possible, and opens a new window
	otherwise. Use ":cj"?
-	When in replace mode and 'expandtab' set, make tab look like spaces.
-	When started to edit another file, make message "file 1 of 8" different (add
	"not"?).
-	Make it possible for the 'showbreak' to be displayed at the end of the line.
	Use a comma to separate the part at the end and the start of the line?
	Highlight the linebreak characters, add flag in 'highlight'.
-	Some string options should be expanded if they have wildcards, e.g.
	'dictionary' when it is "*.h".
-	Use a specific type for number and boolean options, making it possible to
	change it for specific machines (e.g. when a long is 64 bit).
-	Add option for <Insert> in replace mode going to normal mode. (Nugent)
-	Add a next/previous possibility to "[^I" and friends.
-	Add possibility to change the HOME directory.  Use the directory from the
	passwd file? (Antwerpen)
-	Add option to set "umask" for backup files and swap files (Antwerpen).
	'backupumask' and 'swapumask'?  Or 'umaskback' and 'umaskswap'?
-	When doing "[^I" or "[^D" add position to tag stack.
-	Add command to put current position to tag stack: ":push" or "gp".
-	Add commands to push and pop all or individual options. ":setpush tw",
	":setpop tw", ":setpush all".  ":setflush" resets the option stack.
-	Add command to put all filenames from the tag files in the argument list.
	When given an argument, only use the files where that argument matches (like
	`grep -l ident`) and jump to the first match.
-	When appending to a register, also report the total resulting number of
	lines.  Or just say "99 more lines yanked", add the "more".
-	Add ":grep" command. Works like ":make" but uses "grep -n" instead of
	"make", 'grepprg' instead of 'makeprg', 'grepformat' instead of
	'errorformat'.
-	Add global search commands: Instead of wrapping at the end of the buffer,
	they continue in another buffer. Use flag after search pattern: "a" for the
	next file in the argument list, "f" for file in the buffer list, "w" for
	file edited in a window. e.g. "/pat/f". Then "n" and "N" work through files
	too. "f" flag also for ":s/pat/foo/f"??? Then when 'autowrite' and 'hidden'
	are both not set, ask before saving files: "Save modified buffer
	"/path/file"? (Yes/Hide/No Save-all/hide-All/Quit) ".
-	Add command to form an args list from all the buffers.
-	Keep a list of most recently used files for each window, use "gp" to go back
	and "gn" to go forward (like ^O and ^I for jumps) (Webb). Use ":files" and
	":ls" to list the files in history order.
-	Add 'scrollmax' option, maximum number of lines to scroll display, above
	this a redraw is done.
-	Visual selection with the mouse: When selecting one character after the
	line, include the rest of the line, including the end-of-line (like xterm).
-	Implement mouse support for the Amiga.
-	xterm: Implement support for visual feedback of mouse dragging.
-	Using right mouse button to extend a blockwise selection should attach to
	the nearest corner of the rectangle (four possible corners).
-	Precede mouse click by a number to simulate double clicks?!?
-	Change ":fixdel" into option 'fixdel', t_del will be adjusted each time t_bs
	is set? (Webb)
-	"gc": goto character, move absolute character positions forward, also
	counting newlines. "gC" goes backwards, "g^C" goes to absolute position
	(Weigert).
-	When doing CTRL-^, redraw buffer with the same topline (Demirel). Store
	cursor row and window height to redraw cursor at same percentage of window
	(Webb).
-	Besides remembering the last used line number of a file, also remember the
	column. Use it with CTRL-^ et. al.
-	When a window resizes, the line with the cursor should stay at the same
	percentage from the start of the window as it was before.
-	Check for non-digits when setting a number option (careful when entering hex
	codes like 0xff).
-	Add option to make "." redo the "@r" command, instead of the last command
	executed by it.  Also to make "." redo the whole mapping.  Basically: redo
	the last TYPED command.
-	Support URL links for ^X^F in insert mode, like for "gf".
-	":help :s^I" should expand to ":help :substitute".
-	Highlight control characters on the screen: Shows the difference between
	CTRL-X and "^" followed by "X" (Colon).
-	Integrate parsing of cmdline command and parsing for expansion.
-	When inserting a register in insert mode with CTRL-R, don't insert comment
	leader when line wraps?
-	'flipcase' variable: upper/lower case pairs. (alternative: translate
	command, e.g. ":tr \248-\254 \216-\222") (From Elvis, don't like it). Insert
	comma's between pairs and allow a range, e.g. :set flipcase=a-zA-Z,..
-	Make the help key (<F1>) context sensitive?
-	Create a program that can translate a .swp file from any machine into a form
	usable by Vim on the current machine.
-	Add ":noro" command: Reset 'ro' flag for all buffers, except ones that have
	a readonly file. ":noro!" will reset all 'ro' flags.
-	Add a variant of CTRL-V that stops interpretation of more than one
	character.  For entering mappings on the command line where a key contains
	several special characters, e.g. a trailing newline.
-	The ":@r" commands should take a range and execute the register for each
	line in the range.
-	Add regex for 'paragraphs' and 'sections': 'parare' and 'sectre'. Combine
	the two into a regex for searching. (Ned Konz)
-	Make it possible to set options from modelines only temporarily for that
	file (needs a stack for saving old options).
-	Make '2' option in 'formatoptions' also work inside comments.
-	Add 's' flag to 'formatoptions': Do not break when inside a string. (Dodt)
-	Add flag to 'formatoptions' to recognize the change of indent as the start
	of a new paragraph (for paragraphs without separating empty line, but extra
	indent for the new paragraph) (Leitner).
-	Consider adding patches/list_indent (indenting for bullet lists).
-	Add commands ":C", ":P" and ":X". ":C" does encryption and ":P" the same as
	":p". What should they do exactly?
-	Option for filter when reading/writing a file for compression or crypting
	(-x command line option, -z option: gzip/gunzip).  Also for crypting the
	swap file.
-	When window size changed (with the mouse) and made too small, set it back to
	the minimal size.
-	Add "]>" and "[<", shift comment at end of line (command;  /* comment */).
-	Should not call cursorcmd() for each vgetc() in getcmdline().
-	Add the ex address '}', next empty line (like the "}" command).
-	Add command line completion for ":ilist" and friends, show matching
	identifiers (Webb).
-	When switching to another file and screen scrolls because of the long
	message and return must be typed, don't scroll the screen back before
	redrawing.
-	For u_save() include the column number. This can be used to set '[ and '].
	And in the future the undo can be made more efficient (Webb).
-	":split file1 file2" adds two more windows (Webb).
-	Add the possibility to use more than one argument list: ":arglist 2".
-	When mouse click after 'r' command, get character that was pointed to.
-	Don't give message "Incomplete last line" when editing binary file.
-	When writing a file, name it "foo.new". Then rename "foo" to "foo.bak" and
	"foo.new" to "foo". If dir is not writable or on write error copy "foo" to
	"backupdir/foo.bak" and overwrite "foo". Check for correct group/owner and
	try to set it if not. NO: this breaks with hard links.  INSTEAD: make Amiga
	and MSDOS work like unix: first make copy of file, then truncate and
	overwrite original file. Use an option for this, default on for Unix, off
	for Amiga/MSDOS (Sayre has the algorithm worked out).
-	When appending to a file, should Vim also make a backup and a 'patchmode'
	file?
-	Only make a backup when overwriting a file for the first time. Avoids
	loosing the original when writing twice. (Slootman)
-	On non-Unix machines, also overwrite the original file in some situations
	(file system full, it's a link on an NFS partition).
-	Add number option to ":s//2": replace second occurance of string? Or: :s///N
	substitutes N times.
-	Add ":a", ":i" for preloading of named buffers.
-	In Replace mode, tab replaces as many characters as it takes on the screen,
	text remains at the same position. Requires replace-stack to work with
	strings instead of characters? Implement 'replacealign' in a different way
	from Webb.
-	Allow autowrite when doing ":e file" (with an option 'eaw').
-	Make command line arguments options to be combined after a single dash, eg
	"-nb".
-	Allow a "+command" argument before each file name in the Vim command line:
	"vim +123 file1 +234 file2 +345 file3".
-	When entering text, keep other windows on same buffer updated (when a line
	entered)?
-	Check out how screen does output optimizing.  Apparantly this is possible as
	an output filter.
-	Change ".swp" to ".vim", because it give a hint who created the file?
-	Use termcap 'ts' and 'fs' entries for setting the window title. Check 'hs'
	and use minimum of 'ws' (if present) and Columns to truncate the title.
-	In dosub() regexec is called twice for the same line. Try to avoid this.
-	When line is too long to fit on screen, display part where cursor is (like
	nvi). Use an offset to the start of the first line on the screen.
-	Window updating from memline.c: insert/delete/replace line.
-	Optimize ml_append() for speed, esp. for reading a file.
-	V..c should keep indent when 'ai' is set, just like <count>cc.
-	:s///p prints the line after a substitution.
-	Updatescript() can be done faster with a string instead of a char.
-	When searching with 'n' give message when getting back where the search
	first started. Remember start of search in '/ mark.
-	Add option that scrolls screen to put cursor in middle of screen after
	search.
-	Add \! to search patterns: matches string that does not match previous atom.
-	Screen updating is inefficient with CTRL-F and CTRL-B when there are long
	lines.
-	Uppercase characters in ex commands can be made lowercase?
-	Add "P" command to insert contents of unnamed register, move selected text to
	position of previous deleted (to swap foo and bar in " + foo")
-	In out-of-memory situations: Free allocated space in undo (after asking).
-	When memory gets low, reduce the number of undo levels (with confirmation).
-	Insert octal numbers with CTRL-V o, hexadecimal with CTRL-V x and binary
	with CTRL-V b.
-	Add option to show character value under the cursor in octal, decimal, hex
	and screen code all the time (like 'ruler' plus "g CTRL-G").
-	Add option to show characters in text not as "|A" but as decimal ("^129"),
	hex ("\x81") or octal ("\201") or meta (M-x).  Nvi has the 'octal' option to
	switch from hex to octal.
-	How does vi detect whether a filter has messed up the screen? Check source.
	After ":w !command" a wait_return?
-	Improve screen updating code for doput() (use s_ins()).
-	With 'p' command on last line: scroll screen up (also for terminals without
	insert line command).
-	Amiga: ExpandWildCards in amiga.c: don't expand if there are no wildcards.
-	unix: Speedup wildcard expansion of "*", "~" and "$": do it internally, more
	complicated things can still be done with the shell.
-	Option to set time for emsg() sleep. Interrupt sleep when key is typed?
	sleep before second message?
-	Delete message after new command has been entered and have waited for key.
-	History stack for . command? Use "g." command.
-	Use insert/delete char when terminal supports it.
-	With undo with simple line delete/insert: optimize screen updating.
-	Optimize screen redraw for slow terminals.
-	Optimize "dw" for long row of spaces (say, 30000).
-	Add "-d null" for editing from a script file without displaying.
-	MSDOS: search for _exrc in the directory where the binary is, instead of
	using $VIM\_exrc.
-	In insert mode: Remember the characters that were removed with backspace and
	re-insert them one at a time with <key1>, all together with <key2>.
-	Amiga: Add possibility to set a keymap. The code in amiga.c does not work
	yet.
-	Implement 'redraw' option.
-	Add possibility to put the value of an option into the text: "'lines'p
	CTRL-R'lines'
-	Add possibility to put an environment variable into the text: "$DATE$p
-	Unix: WildExpand: Without csh file name with embedded space will be split in
	two.
-	Add special code to 'sections' option to define something else but '{' or
	'}' as the start of a section (e.g. one shiftwidth to the right).
-	Nopaste option: Mappings with non-printable characters are OK.
-	Add 'indent' option: Always use this amount of indent when starting a new
	line and when formatting text.
-	Use pipes for filtering on Unix.
-	Allow for +command and -option on any position in argv[].
-	Add commands like ]] and [[ that do not include the line jumped to.
-	When :unab without matching "from" part and several matching "to" parts,
	delete the entry that was used last, instead of the first in the list.
-	After :set nowrap remove superflous redraw with wrong hor. offset if cursor
	is right of the screen.
-	Recognize "$*" in 'makeprg'; replace it by the arguments to :make.
-	With :s///c replace \&, ~, etc. when showing the replacement pattern.
-	Command line: cursor up on empty line: go to previous command, on non-empty
	line: go to previous matching command.
-	Add text justification option.
-	Add option setting to ask user if he wants to have the modelines executed or
	not.  Same for .exrc in local dir.
-	When the edited file is a symlink, try to put the .swp file in the same dir
	as the actual file. Adjust FullName().  Also try to make the name of the
	backup file the same as the actual file.
-	Add put function that replaces the text under it.
-	After "inv"ing an option show the value: ":set invpaste" gives "paste is off".
-	Check handling of CTRL-V and '\' for ":" commands that do not have TRLBAR.
-	When a file cannot be opened but does exist, give error message.
-	Amiga: When 'r' protection bit is not set, file can still be opened but
	gives read errors. Check protection before opening.
-	When writing check for file exists but no permission, "Permission denied".
-	If file does not exists, check if directory exists.
-	MSDOS: although t_cv and t_ci are not set, do invert char under cursor.
-	Settings edit mode: make file with ":set opt=xx", edit it, parse it as ex
	commands.
-	":set -w all": list one option per line.
-	When writing to a not writable file (with ":w!") ask for permission to
	overwrite it (if file can be made writable) and restore file to readonly
	afterwards.
-	Amiga: test for 'w' flag when reading a file.
-	:table command (Webb)
-	Add command to go to last non-blank in line (like 0 vs. ^, $ vs. ???)
-	Add new operator: clear, make area white (replace with spaces): "gb".
-	Make it possible for a user to define a new operator.  Implementation with
	internal scripting language or Perl?
-	For 'shell' option add possibility to give arguments for fast start (e.g.
	-f).  Not to be used for ":shell".
-	Make ":sleep" accept floating point numbers, like ":sleep 0.01".
-	Support multiple search buffers, so macros can be made without side effects.
-	Add command to ":read" a file at a certain column (blockwise read?).
-	Include several sets of options. Make settings from modelines valid only in
	the file where they were set, reset when exiting that file.
-	Add option to set the characters for "%", 'matchpairs', default "{,};(,)".
	Could set to "{,};(,);/*,*/;<,>". Or 'matchstrings' =
	(/*,*/),(^#if,^#else,^#endif).  Also: set hierarchy for which things include
	other things that should be ignored (like "*/" inside /* */).
-	Add 'resizecmd' option: vi command to be executed when window is resized.
-	Add sort of replace mode where case is taken from the old text (Goldfarb).
-	When 'backup' is not set and 'writebackup is set, use a unique name for the
	backup file, don't deleted the ".bak" file.
-	Allow multiple arguments for ":edit", add them to the argument list.
-	Allow multiple arguments for ":read", read all the files.
-	Support for tabs in specific columns: ":set tabcol=8,20,34,56" (Demirel).
-	Add 'searchdir' option: Directories to search for file name being edited
	(Demirel).
-	Modifier for the put command: Change to linewise, charwise, blockwise, etc.
-	Add commands for saving and restoring options ":set save" "set restore", for
	use in macro's and the like.
-	Add possibility to ":jumps" to show the text in the line (for loaded files).
	Only show the part of the line that fits in the current screen width and
	contains the mark.  Highlight the column with the mark.  Show "<not loaded>"
	for not loaded buffers.  Also for ":tags" and ":marks".
-	Each swap file should include a flag that shows if the swapfile contains any
	changes. Report this when giving the ATTENTION message.
-	Add option to set the number of lines when not to scroll, instead of the
	fixed number used now (for terminals that scroll slow with a large number of
	lines but not with a single line).
-	Keep output from listings in a window, so you can have a look at it while
	working in another window. Put cmdline in a separate window?
-	Add possibility to put output of ex commands in a buffer or file, e.g. for
	":set all".  ":r :set all"?
-	'edit' option: When off changing the buffer is not possible (Really
	read-only mode).
-	When the 'equalalways' option is set, creating a new window should not
	result in windows to become bigger. Deleting a window should not result in a
	window to become smaller (Webb).
-	When resizing the whole Vim window, the windows inside should be resized
	proportionally (Webb).
-	Include options directly in option table, no indirect pointers. Use mkopttab
	to make option table?
-	When doing ":w dir", where "dir" is a directory name, write the current file
	into that directory, with the current file name (without the path)?
-	Add command to go to Nth character in the file, "123g|"?
-	Allow completion with all words in the current AND the other opened buffers.
-	Add 'echo' option: When off don't echo shell commands.
-	Support for 'dictionary's that are sorted, makes access a lot faster
	(Haritsis).
-	Add "^Vrx" on the command line, replace with contents of register x. Used
	instead of CTRL-R to make repeating possible. (Marinichev)
-	Add "^Vb" on the command line, replace with word before or under the cursor?
-	In Insert mode (and command line editing?): Allow undo of CTRL-U (and
	CTRL-W, delete and backspace) (Marinichev).
-	Make contents of status line configurable, with a printf-like format string.
-	Option to make a .swp file only when a change is made (Templeton).
-	Add "+=" and "-=" to option setting: add or remove parts of a string option,
	add or subtract a number from a number option.  How do we insert in front/at
	the end of a sting option?  Automatically add a comma?
-	Support mapping for replace mode and "r" command (Vi doesn't do this)?
-	Set boolean options on/off with ":set paste=off", ":set paste=on".
-	In an Ex range, use { for start of paragraph, } for end of paragraph,
	[, ], etc.?


From Elvis:
-	fontchanges recognized "\\fB" etc.
-	:color command
-	Read .exfilerc when starting to edit a new file (can be used to load macros
	for specific file type). (translate into autocommands)
-	Change cursor shape in command/insert mode. Use options t_cun (normal mode),
	t_cuv (visual mode), t_cur (replace mode), t_cui (insert mode), t_cuc
	(command line mode), t_cuq (back to standard cursor).
-	Search patterns:
	\{m,n\}	 	match at least m and at most n of preceding pattern.
	  \=		match empty string, leave cursor here.
	  \@		match word under cursor.
	but do:
	\{m,n\}		m to n matches. \{m\} is m matches, \{m,\} is at least m
				matches, \{,n\}: up to n matches.
	  \@		leave the cursor "at" this position
	  \w		match the word under the cursor
	  \W		match the WORD under the cursor.
-	'optimize' option: don't update screen while executing a mapping.
-	cursor up/down in insert mode moves to column where insert started.  Use
	different commands for this "<C-G><UP>" and "<C-G><Down>"?  Use set_curswant
	or not? (patch from Lord)


From Nvi:
-	'cdpath' option.
-	Allow editing lines that do not fit in the window.
-	Have a look at "vi/doc/vi.chart", for Nvi specialities.
-	Add 'matchtime', time in 1/10 sec for showmatch.
-	Add 'keytime', time in 1/10 sec for mapping timeout?
-	Add 'cedit' option: editing commandline in a window?
	NO!  It's too confusing (e.g. when using ^W^W to go to another window, when
	doing ":" and starting another commandline edit windows, etc.).
	YES!  Some people like it anyway (forbid ^W^W).
	Use Elvis's method too (commandline is like a one-line window into a buffer
	that contains the commandline history).
-	Add 'filec' option as an alternative for 'wildchar'.


From xvim:
-	Use '\' before commands to make them linewise.
-	Allow a newline in search patterns (also for :s, can delete newline).  Add
	BOW, EOW, NEWL, NLORANY, NLBUTANY, magic 'n' and 'r', etc.  [not in xvim:]
	Use "\s" for "space" characters (like Perl): space, tab, newline, etc.  Add
	option to switch on matches crossing ONE line boundary.
-	Add register for '?' and '/' commands? (yank_buf()).
-	Remember last cursor position, optimize setcursor().
-	Add :collapse, remove multiple blank lines (Demirel, Webb)?


From xvi:
-	CTRL-_ : swap 8th bit of character
-	Add egrep-like regex type, like xvi (Ned Konz) or Perl (Emmanuel Mogenet)


From vile:
-	Show unprintable characters in hex. (or in octal)
-	When horizontal scrolling, use '<' and '>' for lines continuing outside of
	window.
-	Support putting .swp files in /tmp: Command in rc.local to move .swp files
	from /tmp to some directory before deleting files.


Far future extentions:

-	Make it possible to edit a register, in a window, like a buffer.
-	Add stuff to syntax highlighting to change the text (upper-case keywords,
	set indent, define other highlighting, etc.).
-	Mode to keep C-code formatted (sort of on-line indent). Use colors for
	keywords, comments, etc.
-	Allow vertical splitting of screen (once?).
-	Allow editing beyond end of line, just like there are all spaces. Switch
	this on with an option or special insert mode command. Also allow editing
	above start and below end of buffer.
-	When executing macro's: Save each line for undo only once.
-	Make undo more memory-efficient: Compare text before and after change, only
	remember the lines that really changed. When calling u_save with a single
	line, don't save it if line is already saved for undo.
-	When doing a global substitute, causing almost all lines to be changed, undo
	info becomes very big. Put undo info in swap file??
-	Store undo info in a file that survives until the next edit.  Then it's
	possible to undo to before the current editing session.  Combined with
	viminfo?
-	When inserting/deleting characters in a line, adjust marks.
-	Smart cut/paste: recognize words and adjust spaces before/after them.
-	Option verbose; when on keep the screen uptodate, when off only redisplay
	when input needed. Also possible to use Vim from a shell script.
-	Change the output to the message line. Don't redraw the screen until the
	next vi command. Remember message line for redraw. Integrate the command
	line in updateScreen().
-	Mode to keep text formatted while inserting/deleting. Use soft/hard returns
	with an option to switch this off.
-	Korn-shell or tcsh like command line editing (like editing a single line
	with vi). Use :cmap! for mappings. Can be implemented like a buffer
	containing command lines. Use CTRL-O instead of <Esc>, to remain
	vi-compatible?
-	Add column numbers to ":" commands ":line1,line2[col1,col2]cmd".  Block can
	be selected with CTRL-V.  Allow '$' (end of line) for col2.
-	Add 'hidecomment' option: don't display comments in /* */ and after //.
-	Add open mode, use it when terminal has no cursor positioning.
-	Special "drawing mode": a line is drawn where the cursor is moved to.
	Backspace deletes along the line (from jvim).
-	Add a command or option to save the current editing session (which files are
	open, window sizes, file positions, etc.), so it can be resumed later.
-	Perform commands on multiple windows (:W%s/foo/bar/g), multiple arguments
	(:A) or multiple buffers (:B). Implement ":Bset", set option in all buffers.
	Also ":Wset", set in all windows, ":Aset, set in all arguments and ":Tset",
	set in all files mentioned in the tags file.  Add buffer/arg range, like in
	":2,5B%s/..." (do we really need this???) Add search string: "B/*.c/%s/.."?
	Or ":F/*.c/%s/.."?
-	Support for underlining (underscore-BS-char), bold (char-BS-char) and other
	standout modes switched on/off with , 'overstrike' option (Reiter).
-	Add vertical mode (Paul Jury, Demirel): "5vdw" deletes a word in five lines,
	"3vitextESC" will insert "text" in three lines, etc..
-	Internationalization: wide characters and multibyte char support.
-	When editing a readonly file, don't use a swap file but read parts from the
	original file.
4w	Recognize l, #, p as 'flags' to EX commands:
	:g/RE/#l shall print lines with line numbers and in list format.
	:g/RE/dp shall print lines that are deleted.
	POSIX: Commands where flags shall apply to all lines written: list, number,
	open, print, substitute, visual, &, z. For other commands, flags shall apply
	to the current line after the command completes.  Examples: :7,10j #l Join
	the lines 7-10 and print the result in list
4l	Make a function (autocommand?) be called when entering/leaving insert mode.
	To change keyboard settings (e.g., enable/disable caps lock).

vim:ts=4:tw=78:sw=4:
vim:comments=fb\:9,fb\:8,fb\:7,fb\:6,fb\:5,fb\:4,fb\:3,fb\:2,fb\:1,fb\:-,fb\:9q,fb\:8q,fb\:7q,fb\:6q,fb\:5q,fb\:4q,fb\:3q,fb\:2q,fb\:1q,fb\:9s,fb\:8s,fb\:7s,fb\:6s,fb\:5s,fb\:4s,fb\:3s,fb\:2s,fb\:1s,fb\:9l,fb\:8l,fb\:7l,fb\:6l,fb\:5l,fb\:4l,fb\:3l,fb\:2l,fb\:1l,fb\:9w,fb\:8w,fb\:7w,fb\:6w,fb\:5w,fb\:4w,fb\:3w,fb\:2w,fb\:1w,fb\:9b,fb\:8b,fb\:7b,fb\:6b,fb\:5b,fb\:4b,fb\:3b,fb\:2b,fb\:1b,fb\:9m,fb\:8m,fb\:7m,fb\:6m,fb\:5m,fb\:4m,fb\:3m,fb\:2m,fb\:1m
