xref: /vim-8.2.3635/runtime/doc/todo.txt (revision d4755bb0)
1*todo.txt*      For Vim version 7.0aa.  Last change: 2004 Aug 31
2
3
4		  VIM REFERENCE MANUAL	  by Bram Moolenaar
5
6
7			      TODO list for Vim		*todo*
8
9This is a veeeery long list of known bugs, current work and desired
10improvements.  To make it a little bit accessible, the items are grouped by
11subject.  In the first column of the line a classification is used to be able
12to look for "the next thing to do":
13
14Priority classification:
159   next point release
168   next release
177   as soon as possible
186   soon
195   should be included
204   nice to have
213   consider including
222   maybe not
231   probably not
24-   unclassified
25
26						    *votes-for-changes*
27See |develop.txt| for development plans.  You can vote for which items should
28be worked on, but only if you sponsor Vim development.  See |sponsor|.
29
30							*known-bugs*
31-------------------- Known bugs and current work -----------------------
32
33Multi-byte char in file name causes trouble for opening, "send to" menu and
34writing.  Patches from Taro Muraoka:
35    ~/Mail/oldmail/muraoka/in.00575
36    ~/Mail/oldmail/muraoka/in.00577
37
38Is there a limit on the buffer list in the viminfo file?
39":n ~/.trashcan/bogus*" fills it.
40
41When gvim is started from the context menu the xxd menu entries don't work
42(Valencia).  xxd.exe is not in $VIMRUNTIME.
43
44Aborting at the ATTENTION prompt causes trouble:
45    buffer remains active, nwindows isn't closed (fixed in buffer.c)
46    alternate buffer gets "read error" flag.
47    ":sbuf" and ":ball" leave an empty window behind.
48Change in handle_swap_exists() also in 6.3?
49
50Add remap-abbreviation solution to Vim 6.3?  It's about adding REMAP_SKIP and
51RM_ABBR in getchar.c.
52
53Added ga_append() here: (also to 6.3?)
54    script_get(eap, cmd)
55    gui_do_findrepl(flags, find_text, repl_text, down)
56    serverGetVimNames(dpy)  if_xcmdsrv.c, os_mswin.c
57
58Win32: When the path to a file has Russian characters, ":cd %:p:h" doesn't
59work. (Valery Kondakoff)
60
61Win32: When an argument is typed in a console in the active codepage, and
62'encoding' is "utf-8", detect this from illegal characters.  Convert from
63console or active codepage to utf-8 then.
64
65For version 7.0:
66-   Include many PATCHES:
67    8   Add functions:
68	setbufline()		set line in any buffer (patch from Yegappan
69				Lakshmanan, 2003 Jan 21)
70	filter()		Patch from Yegappan Lakshmanan, 2004 Jul 11
71    8   Make it possible to delete marks.  Charles Campbell has a patch that
72	does this with the markclear() function (2004 Jan 9).
73	And the ":delmark" command (2004 Feb 9)
74	http://mysite.verizon.net/astronaut/vim/index.html#Patch
75	~/tmp/ptch.delmark.bz2
76	~/tmp/ptch.markclear
77	Implement setmark(markname, lnum [, col [, filename]]) instead?
78	When "lnum" is zero delete the mark.
79	When "filename" has no wildcards and there is no matching buffer, add
80	the buffer (unlisted).
81    Patch for \xnn (Ciaran McCreesh)  2004 Jul 10
82	http://dev.gentoo.org/~ciaranm/patches/vim/vim-7.00a-regexp-numbered-characters-r5.patch
83    7   Add 'taglistfiles' option, show file name and type when listing matching
84	tags name with CTRL-D completion.  Patch from Yegappan Lakshmanan.
85	2004 Jul 11
86    7   For Visual mode: Command to do a search for the string in the marked
87	area.  Only when fewer than two lines. Use "g/" and "gb".  Patch from
88	Yegappan Lakshmanan. 2004 Jul 11
89    8   Make 'statusline' local, so that each window can have a different
90	value.  But should it also be local to a buffer? (Yegappan Lakshmanan
91	has a patch, 2004 Jul 11)
92    8   Add buffer-local autocommands?  Reduces overhead for autocommands that
93	trigger often (inserting a character, switching mode).
94	    :au Event <buffer> do-something
95	E.g.:
96	    :au BufEnter <buffer> menu enable ...
97	    :au BufLeave <buffer> menu disable ...
98	Patch from Yakov Lerner, including test (2004 Jan 7).
99	VimResized	    - When the Vim window has been resized (SIGWINCH)
100	  patch from Yakov Lerner, 2003 July 24.
101	Patch for specifying an expression for numbered lists. (Hugo Haas,
102	2004 Aug 7)
103    --- awaiting updated patch ---
104    7   Add patch from Wall for this one ( ~/Mail/oldmail/wall/in.00019 ):
105	'flipcase' variable: upper/lowercase pairs.
106	Insert comma's between pairs and allow a range, make it look like
107	'isfname'.  E.g. ":set flipcase=a-zA-Z,xX,23-33:143-153".  The colon to
108	separate the from and to part is optional.
109	Resp: no time now.
110    8   Add GTK 2.3 file dialog support.  Patch by Grahame Bowland, 2004 Mar 15,
111	but it doesn't use "initdir" or "dflt". (will update patch)
112    8   Add ":n" to fnamemodify(): normalize path, remove "../" when possible.
113	Aric Blumer has a patch for this.
114	He will update the patch for 6.3.
115    Autocommands:
116    7   Completion of network shares, patch by Yasuhiro Matsumoto.
117	Update 2004 Jun 17.
118	How does this work?  Missing comments.
119    gettext()		Translate a message.  (Patch from Yasuhiro Matsumoto)
120			Update 2004 Jun 17
121			Missing docs.  Search in 'runtimepath'?
122			How to get the messages into the .po files?
123    --- did not respond (yet) --
124    7   Make "5dd" on last-but-one-line not delete anything (Vi compatible).
125	Add flag in 'cpoptions' for this.  When not present, "2dd" in the last
126	line should delete the last line.  Patch from greenx 2002 Apr 11.
127    8   Accelerators don't work in a dialog.  Include patch from Martin Dalecki
128	(Jan 3, tested by David Harrison).  Should work with Alt-o then.
129    7   Use accelerators for the Motif file selection dialog.  Patch from
130	Martin Dalecki 2002 Jan 11.
131    8   Add a few more command names to the menus.  Patch from Jiri Brezina
132	(28 feb 2002).
133    7   ATTENTION dialog choices are more logical when "Delete it' appears
134	before "Quit".  Patch by Robert Webb, 2004 May 3.
135    -   Include flipcase patch: ~/vim/patches/wall.flipcase2 ?  Make it work
136	for multi-byte characters.
137    -   Win32: add options to print dialog.  Patch from Vipin Aravind.
138    -   Patch to add highlighting for whitespace. (Tom Schumm, 2003 Jul 5)
139	use the patch that keeps using HLF_8 if HLF_WS has not
140	been given values.
141	Add section in help files for these highlight groups?
142    8   "fg" and "bg" don't work in an xterm.  Get default colors from xterm
143	with an ESC sequence.  Ideas in: ~/vim/patches/vikas.xtermcolors .
144    7   Add "DefaultFG" and "DefaultBG" for the colors of the menu. (Martin
145	Dalecki has a patch for Motif)
146    -   Add possibility to highlight specific columns (for Fortran).  Or put a
147	line in between columns (e.g. for 'textwidth').
148	Patch to add 'hlcolumn' from Vit Stradal, 2004 May 20.
149    8   Add functions:
150	confirm()		add "flags" argument, with 'v' for vertical
151				layout and 'c' for console dialog. (Haegg)
152				Flemming Madsen has a patch for the 'c' flag
153				(2003 May 13)
154	system({cmd}, {expr})	Filter {expr} through the shell command
155				{cmd} and return the result.
156				(Patch from Yegappan Lakshmanan)
157	raisewin()		raise gvim window (see HierAssist patch for
158				Tcl implementation ~/vim/HierAssist/ )
159    7   Add patch from Benoit Cerrina to integrate Vim and Perl functions
160	better.  Now also works for Ruby (2001 Nov 10)
161    7   Motif: use the menu font consistently.  Patch from Martin Dalecki 2002
162	Jan 11.
163    -   Motif: add 3D shading for the menu entries?  Patch from Martin Dalecki.
164    7   When 'rightleft' is set, the search pattern should be displayed right
165	to left as well?  See patch of Dec 26. (Nadim Shaikli)
166    8   Lock all used memory so that it doesn't get swapped to disk (uncrypted).
167	Patch by Jason Holt, 2003 May 23.
168    7   Support a stronger encryption.  Jason Holt implemented AES (May 6 2003).
169    7   Add ! register, for shell commands. (patch from Grenie)
170    8   In the gzip plugin, also recognize *.gz.orig, *.gz.bak, etc.  Like it's
171	done for filetype detection.  Patch from Walter Briscoe, 2003 Jul 1.
172    7   Add a "-@ filelist" argument: read file names from a file. (David
173	Kotchan has a patch for it)
174    8   Add term entries for function keys on xterm with alt and ctrl (new in
175	pl 94).  E.g., Control adds ";5" in "<Esc>[20;5~".  Find a generic way
176	to prepend a modifier in console mode, to avoid having to specify each
177	individual modified key.
178	Steve Wall has a patch (2002 Mar 12) for adding function keys up to 37,
179	with modifiers.
180    8   Include a connection to an external program through a pipe?  See
181	patches from Felbinger for a mathematica interface.
182	Or use emacs server kind of thing?
183    7   Add ":justify" command.  Patch from Vit Stradal 2002 Nov 25.
184    -   findmatch() should be adjusted for Lisp.  See remark at
185	get_lisp_indent().  Esp. \( and \) should be skipped. (Dorai Sitaram,
186	incomplete patch Mar 18)
187
188
189-   In the kvim/KDE source files fix the formatting.
190-   KDE version is called "kvim".  Make it "gvim", like the others?
191-   Better configure check for KDE include files from Dan Sharp.
192-   KDE Input method patch. (Yasuhiro Matsumoto)
193-   Change ga_room into ga_maxlen, so that it doesn't need to be
194    incremented/decremented each time.
195-   For string variables, use length instead of NUL termination.
196-   new DATA TYPES: lists, dictionaries and function references.
197	Check old patch from Robert Webb for array support.
198    Add type checking?  See ~/vim/ideas.txt.
199-   Add SPELLCHECKER, with easy to add support for many languages.
200    8   Add spell checking.  Use "ispell -a" somehow.
201	~/vim/patches/wm_vim-5_4d.zip  can be used as an example (includes
202	ispell inside Vim).  Gautam Iyer has an example with "aspell".
203	"engspchk" from Charles Campbell is a good way.  Support for
204	approximate-regexps will help (agrep http://www.tgries.de/agrep/).
205	- Charles Campbell asks for method to add "contained" groups to
206	  existing syntax items (to add @Spell).  Add ":syntax contains
207	  {pattern} add=@Spell" command?  A bit like ":syn cluster" but change
208	  the contains list directly for matching syntax items.
209        - Keep wordlist in syntax group, load it only once and use it several
210	  times later.  Sort of global syntax items.
211-   REFACTORING: The main() function is very long.  Move parts to separate
212    functions, especially loops.  Ideas from Walter Briscoe (2003 Apr 3, 2004
213    Feb 9).
214-   Improve the interface between the generic GUI code and the system-specific
215    code.  Generic code handles text window with scrollbars, system-specific
216    code menu, toolbar, etc.
217-   Store messages to allow SCROLLING BACK for all commands.  And other "less"
218    like commands.
219-   "INTELLISENSE".  First cleanup the Insert-mode completion.
220	http://www.vim.org/scripts/script.php?script_id=747
221	http://sourceforge.net/projects/insenvim
222-   PERSISTENT UNDO: store undo in a file.
223    Support multiple threads.  Show the list of changes in a window to be able
224    to select a version.
2257   SWAP FILE CHANGE: When a dos format file was edited with ":e ++ff=unix",
226    Vim is killed and trying to recover the file, 'ff' will be dos.  Same for
227    non-default fileencoding.  (Miroslaw Dobrzanski-Neumann, Jul 17)
228    Should store the values in block 0 of the swap file, but that is an
229    incompatible change.
2307   Support WINDOW TABS.  Works like several pages, each with their own
231    split windows.  Patch for GTK 1.2 from Christian Michon, 2004 Jan 6.
232    Also for the console!
233-   EMBEDDING: Make it possible to run Vim inside a window of another program.
234    For Xwindows this can be done with XReparentWindow().
235    For GTK Neil Bird has a patch to use Vim like a widget.
236-   Add COLUMN NUMBERS to ":" commands ":line1,line2[col1,col2]cmd".  Block
237    can be selected with CTRL-V.  Allow '$' (end of line) for col2.
238-   Add DEBUGGER INTERFACE.  Implementation for gdb by Xavier de Gaye,
239    assisted by Mikolaj Machowski.  Should work like an IDE.  Try to keep it
240    generic.  Also found here: http://skawina.eu.org/mikolaj/vimgdb
241    To be able to start the debugger from inside Vim: For GUI run a program
242    with a netbeans connection; for console: start a program that splits the
243    terminal, runs the debugger in one window and reconnect Vim I/O to the
244    other window.
245    Wishes for NetBeans commands:
246    - make it possible to have 'defineAnnoType' also handle terminal colors.
247    - send 'balloonText' events for the cursor position (using CursorHold ?)
248      in terminal mode.
249-   STICKY CURSOR: Add a way of scrolling that leaves the cursor where it is.
250    Especially when using the scrollbar.  Typing a cursor-movement command
251    scrolls back to where the cursor is.
2528   Support four composing/combining characters, needed for Hebrew. (Ron Aaron)
253    Add the 'maxcombining' option to set the nr. of composing characters.
254-   Add a few more things to 'diffopt': "horizontal", "vertical",
255    "foldcolumn". (Benji Fisher, 2004 Jun 21)
256-   FileChangedShellPost autocommand event: after (not) reloading a changed
257    file.  Can be used to update statusline oslt.
2588   When a file is change outside of Vim and unmodified in Vim there is no
259    simple way to automatically reload the file.  Either add an option for
260    this or make it simple to have the FileChangedShell invoke the normal
261    action, telling it what to do.
262-   Displaying size of Visual area: use 24-33 column display.
263-   Mac: Unicode input and display (Eckehard Berns, June 27)
2648   Add patch from Muraoka Taro (Mar 16) to support input method on Mac?
265    New patch 2004 Jun 16
2669   Add cursor-column highlighting.  Enable it with 'cursorcolumn' option,
267    set highlighting with "CursorColumn" group.  Useful for aligning text.
268    Also cursor-row highlighting.  Patch from Yasuhiro Matsumoto for
269    underlining the cursor line: 2004 Jun 17.  Should use highlight group
270    instead.
271    Alternative: when 'number' is set highlight the number of the current
272    line.
2737   Make ":startinsert" command work directly for functions and scripts?
274    Also make it possible to append (it's difficult at end of line).
275-   When using 'incsearch" CTRL-R CTRL-W gets the word under the cursor, but
276    the part that already matched is doubled then.  Remove the part of the
277    word that would be doubled.  Make it work line CTRL-N in Insert mode.
278-   Add Lua interface? (Wolfgang Oertl)
279-   "onemore" flag in 'virtualedit': move cursor past end of line.  Patch by
280    Mattias Flodin (2004 Jul 30)
281
282Support ":set syntax=cpp.doxygen"?  Suggested patch by Michael Geddes (9 Aug
2832004).  Should also work for 'filetype'.
284
285Patch for 'breakindent' option: repeat indent for wrapped line. (Vaclav
286Smilauer, 2004 Aug 17)
287
288
289Vi incompatibility:
2908   With undo/redo only marks in the changed lines should be changed.  Other
291    marks should be kept.  Vi keeps each mark at the same text, even when it
292    is deleted or restored. (Webb)
293    Also: A mark is lost after: make change, undo, redo and undo.
294    Example: "{d''" then "u" then "d''": deletes an extra line, because the ''
295    position is one line down. (Veselinovic)
2968   ":change" in a single-line file adds an empty line. When the file used to
297    be longer a "~" line is displayed, but there really is an empty line.
298    (Haakon Riiser, 2003 Dec 3 and Dec 16)
2998   ":append" and ":insert" in an empty file add an extra empty line. (Haakon
300    Riiser, 2003 Dec 3)  Test for ML_EMPTY.
3018   When stdin is not a tty, and Vim reads commands from it, an error should
302    make Vim exit.
3037   Unix Vim (not gvim): Typing CTRL-C in Ex mode should finish the line
304    (currently you can continue typing, but it's truncated later anyway).
305    Requires a way to make CTRL-C interrupt select() when in cooked input.
3068   When loading a file in the .exrc, Vi loads the argument anyway.  Vim skips
307    loading the argument if there is a file already.  When no file argument
308    given, Vi starts with an empty buffer, Vim keeps the loaded file. (Bearded)
3096   In Insert mode, when using <BS> or <Del>, don't wipe out the text, but
310    only move back the cursor.	Behaves like '$' in 'cpoptions'.  Use a flag
311    in 'cpoptions' to switch this on/off.
3128   When editing a file which is a symbolic link, and then opening another
313    symbolic link on the same file, Vim uses the name of the first one.
314    Adjust the file name in the buffer to the last one used?  Use several file
315    names in one buffer???
316    Also: When first editing file "test", which is symlink to "test2", and
317    then editing "test2", you end up editing buffer "test" again.  It's not
318    logical that the name that was first used sticks with the buffer.
3197   The ":undo" command works differently in Ex mode.  Edit a file, make some
320    changes, "Q", "undo" and _all_ changes are undone, like the ":visual"
321    command was one command.
3227   The ":map" command output overwrites the command.  Perhaps it should keep
323    the ":map" when it's used without arguments?
3247   CTRL-L is not the end of a section?  It is for Posix!  Make it an option.
3257   Implement 'prompt' option.	Init to off when stdin is not a tty.
3267   CTRL-T in Insert mode inserts 'shiftwidth' of spaces at the cursor.  Add a
327    flag in 'cpoptions' for this.
3287   Add a way to send an email for a crashed edit session.  Create a file when
329    making changes (containing name of the swap file), delete it when writing
330    the file.  Supply a program that can check for crashed sessions (either
331    all, for a system startup, or for one user, for in a .login file).
3327   Vi doesn't do autoindenting when input is not from a tty (in Ex mode).
3337   "z3<CR>" should still use the whole window, but only redisplay 3 lines.
3347   ":tag xx" should move the cursor to the first non-blank.  Or should it go
335    to the match with the tag?	Option?
3367   Implement 'autoprint'/'ap' option.
3377   Add flag in 'cpoptions' that makes <BS> after a count work like <Del>
338    (Sayre).
3397   Add flag in 'cpoptions' that makes operator (yank, filter) not move the
340    cursor, at least when cancelled. (default Vi compatible).
3417   This Vi-trick doesn't work: "Q" to go to Ex mode, then "g/pattern/visual".
342    In Vi you can edit in visual mode, and when doing "Q" you jump to the next
343    match.  Nvi can do it too.
3447   Support '\' for line continuation in Ex mode for these commands: (Luebking)
345	g/./a\		    g/pattern1/ s/pattern2/rep1\\
346	line 1\		    line 2\\
347	line 2\		    line 3\\
348	.		    line4/
3496   ":e /tmp/$tty" doesn't work.  ":e $uid" does.  Is $tty not set because of
350    the way the shell is started?
3516   Vi compatibility (optional): make "ia<CR><ESC>10." do the same strange
352    thing.  (only repeat insert for the first line).
353
354
355GTK+ 1 (OK in GTK 2):
3568   When menus are disabled, 'm' removed from 'guioptions', Alt-F still pops
357    up the File menu.  Cannot reproduce this: gives a warning for a NULL
358    pointer if the menu was never displayed.
3598   When using "gvim -geom 40x30" or setting 'columns' in .gvimrc or with a
360    GUIEnter autocommand, the width is still set to fit the toolbar.  Also
361    happens when changing the font.  How to avoid that the toolbar specifies
362    the minimal window width?
3638   When using a theme with different scrollbars (gtkstep), the scrollbars can
364    be too narrow. (Drazen Kacar)
3658   Font "7x14" has a bold version "7x14bold".  Try to find the bold font by
366    appending "bold" when there are not 14 dashes.
367
368GTK+ GUI known bugs:
3698   GTK 2: Combining UTF-8 characters not displayed properly in menus (Mikolaj
370    Machowski)  They are displayed as separate characters.  Problem in
371    creating a label?
3729   Can't paste a Visual selection from GTK-gvim to vim in xterm or Motif gvim
373    when it is longer than 4000 characters.  Works OK from gvim to gvim and
374    vim to vim.  Pasting through xterm (using the shift key) also works.
375    It starts working after GTK gvim loses the selection and gains it again.
3767   DND doesn't work with KDE (also with GTK 1).
377
378KDE GUI known bugs:
379-   The default font is ugly.  bold text isn't displayed correctly.
380-   Error messages when starting up.  The "tip of the day" box is empty.
381-   Encoding of menu items needs to be converted. (Yasuhiro Matsumoto)
382
383Win32 GUI known bugs:
3848   On Windows 98 the unicows library is needed to support functions with UCS2
385    file names.  Can we load unicows.dll dynamically?
3868   The -P argument doesn't work very well with many MDI applications.
387    The last argument of CreateWindowEx() should be used, see MSDN docs.
388    Tutorial: http://win32assembly.online.fr/tut32.html
3898   In eval.c, io.h is included when MSWIN32 is defined.  Shouldn't this be
390    WIN32?  Or can including io.h be moved to vim.h? (Dan Sharp)
3917   Windows XP: When using "ClearType" for text smoothing, a column of yellow
392    pixels remains when typing spaces in front of a "D" ('guifont' set to
393    "lucida_console:h8").
3946   Win32 GUI: With "-u NONE -U NONE" and doing "CTRL-W v" "CTRL-W o", the ":"
395    of ":only" is highlighted like the cursor.  (Lipelis)
3968   When 'encoding' is "utf-8", should use 'guifont' for both normal and wide
397    characters to make Asian languages work.  Win32 fonts contain both
398    type of characters.
3997   When font smoothing is enabled, redrawing can become very slow.  The reason
400    appears to be drawing with a transparent background.  Would it be possible
401    to use an opaque background in most places?
4028   Use another default for 'termencoding': the active codepage.  Means that
403    when 'encoding' is changed typing characters still works properly.
404    Alternative: use the Unicode functions to obtain typed characters.
4058   Win32: Multi-byte characters are not displayed, even though the same font
406    in Notepad can display them. (Srinath Avadhanula)  Try with the
407    UTF-8-demo.txt page with Andale Mono.
4087   The cursor color indicating IME mode doesn't work properly. (Shizhu Pan,
409    2004 May 9)
4108   Win32: When clicking on the gvim title bar, which gives it focus, produces
411    a file-changed dialog, after clicking on a button in that dialog the gvim
412    window follows the mouse.  The button-up event is lost.  Only with
413    MS-Windows 98?
414    Try this: ":set sw ts", get enter-prompt, then change the file in a
415    console, go back to Vim and click "reload" in the dialog for the changed
416    file: Window moves with the cursor!
417    Put focus event in input buffer and let generic Vim code handle it?
4188   When activating the Vim window with mouse click, don't move cursor to
419    mouse position.  Catch WM_MOUSEACTIVATE. (Luevelsmeyer)
4208   Win32: When mouse is hidden and in the toolbar, moving it won't make it
421    appear. (Sami Salonen)
4228   Windows NT: writing to aux.* makes Vim hang. (Acevedo)
4238   Win32 GUI: With maximized window, ":set go-=r" doesn't use the space that
424    comes available. (Poucet)  It works OK on Win 98 but doesn't work on Win
425    NT 4.0.  Leaves a grey area where the scrollbar was.  ":set go+=r" also
426    doesn't work properly.
4278   When Vim is minimized and when maximizing it a file-changed dialog pops
428    up, Vim isn't maximized.  It should be done before the dialog, so that it
429    appears in the right position. (Webb)
4309   When selecting at the more-prompt or hit-enter-prompt, the right mouse
431    button doesn't give popup menu.
432    At the hit-enter prompt CTRL-Y doesn't work to copy the modeless
433    selection.
434    On the command line, don't get a popup menu for the right mouse button.
435    Let the middle button paste selected text (not the clipboard but the
436    non-Visual selection)?  Otherwise CTRL-Y has to be used to copy the text.
4378   When 'grepprg' doesn't execute, the error only flashes by, the
438    user can hardly see what is wrong. (Moore)
439    Could use vimrun with an "-nowait" argument to only wait when an error
440    occurs, but "command.com" doesn't return an error code.
4418   When the 'shell' cannot be executed, should give an appropriate error msg.
442    Esp. for a filter command, currently it only complains the file could not
443    be read.
4448   MessageBox used for error messages can be too big.	There is no way to
445    scroll it, or even hit the OK button (but you can hit return).
446    Use a scrollable window.
4477   Add an option to add one pixel column to the character width?  Lucida
448    Console italic is wider than the normal font ("d" overlaps with next char).
449    Opposite of 'linespace': 'columnspace'.
4507   At the hit-enter prompt scrolling now no longer works.  Need to use the
451    keyboard to get around this.  Pretend <CR> was hit when the user tries to
452    scroll?  Need to be able to get out of hit-enter prompt with the mouse
453    anyway.
4547   Scrollbar width doesn't change when selecting other windows appearance.
455    Also background color of Toolbar and rectangle below vert. scrollbar.
4567   "!start /min cmd" should run in a minimized window, instead of using
457    "/min" as the command name. (Rogall)
4586   Drawing text transparently doesn't seem to work (when drawing part cursor).
4598   CTRL key doesn't always work in combination with ALT key.  It does work
460    for function keys, not for alphabetic characters.  Perhaps this is because
461    CTRL-ALT is used by Windows as AltGr?
4628   CTRL-- doesn't work for AZERTY, because it's CTRL-[ for QWERTY.  How do we
463    know which keyboard is being used?
4647   When scrolling, and a background color is dithered, the dither pattern
465    doesn't always join correctly between the scrolled area and the new drawn
466    area (Koloseike).
4678   When gui_init_font() is called with "*", p_guifont is freed while it might
468    still be used somewhere.  This is too tricky, do the font selection first,
469    then set the new font by name (requires putting all logfont parameters in
470    the font name).
471
472
473Athena and Motif:
4749   Can configure be changed to disable netbeans if the Xpm library is
475    required and it's missing?
4768   When using the resource "Vim*borderwidth 2" the widgets are positioned
477    wrong.
4789   XIM is disabled by default for SGI/IRIX.  Fix XIM so that 'imdisable' can
479    be off by default.
4809   XIM doesn't work properly for Athena/Motif. (Yasuhiro Matsumoto) For now,
481    keep XIM active at all times when the input method has the preediting
482    flag.
4838   X11: A menu that contains an umlaut is truncated at that character.
484    Happens when the locale is "C", which uses ASCII instead of IS0-8859-1.
485    Is there a way to use latin1 by default?  Gnome_init() seems to do this.
4868   Perhaps use fontsets for everything?
4876   When starting in English and switching the language to Japanese, setting
488    the locale with ":lang", 'guifontset' and "hi menu font=", deleting all
489    menus and setting them again, the menus don't use the new font.  Most of
490    the tooltips work though...
4917   Motif: when using a file selection dialog, the specified file name is not
492    always used (when specifying a filter or another directory).
4938   When 'encoding' is different from the current locale (e.g., utf-8) the
494    menu strings don't work.  Requires conversion from 'encoding' to the
495    current locale.  Workaround: set 'langmenu'.
496
497
498Athena GUI:
4999   When dragging the scrollbar thumb very fast, focus is only obtained in
500    the scrollbar itself.  And the thumb is no longer updated when moving
501    through files.
5027   The file selector is not resizable.  With a big font it is difficult to
503    read long file names. (Schroeder)
5044   Re-write the widget attachments and code so that we will not have to go
505    through and calculate the absolute position of every widget every time the
506    window is refreshed/changes size.  This will help the "flashing-widgets"
507    problem during a refresh.
5085   When starting gvim with all the default colors and then typing
509    ":hi Menu guibg=cyan", the menus change color but the background of the
510    pullright pixmap doesn't change colors.
511    If you type ":hi Menu guibg=cyan font=anyfont", then the pixmap changes
512    colors as it should.
513    Allocating a new pixmap and setting the resource doesn't change the
514    pullright pixmap's colors.  Why?  Possible Athena bug?
515
516
517Motif GUI:
5188   Popup menu ordering is wrong.
5197   Use XmStringCreateLocalized() instead of XmStringCreateSimple()?
520    David Harrison says it's OK (it exists in Motif 1.2).
5218   The texts in the find/replace dialog don't use the right font.
5228   Lesstif: When deleting a menu that's torn off, the torn off menu becomes
523    very small instead of disappearing.  When closing it, Vim crashes.
524    (Phillipps)
525
526
527GUI:
5289   On Solaris, creating the popup menu causes the right mouse button no
529    longer to work for extending the selection. (Halevy)
5309   When running an external program, it can't always be killed with CTRL-C.
531    e.g. on Solaris 5.5, when using "K" (Keech).  Other 'guipty' problems on
532    Solaris 2.6. (Marley)
5339   On Solaris: Using a "-geometry" argument, bigger than the window where Vim
534    is started from, causes empty lines below the cmdline. (raf)
5358   X11 GUI: When menu is disabled by excluding 'm' from 'guioptions', ALT key
536    should not be used to trigger a menu (like the Win32 version).
5378   When setting 'langmenu', it should be effective immediately.  Store both
538    the English and the translated text in the menu structure.  Re-generate
539    the translation when 'langmenu' has changed.
5408   Basic flaw in the GUI code: NextScreen is updated before calling
541    gui_write(), but the GUI code relies on NextScreen to represent the state
542    of where it is processing the output.
543    Need better separation of Vim core and GUI code.
5448   When fontset support is enabled, setting 'guifont' to a single font
545    doesn't work.
5468   Menu priority for sub-menus for: Amiga, BeOS.
5478   Add menu separators for Amiga, RISCOS.
5488   Add way to specify the file filter for the browse dialog.  At least for
549    browse().
5508   Add dialog for search/replace to other GUIs?  Tk has something for this,
551    use that code?  Or use console dialog.
5528   When selecting a font with the font dialog and the font is invalid, the
553    error message disappears too quick.
5548   gui_check_colors() is not called at the right moment.  Do it much later,
555    to avoid problems.
5568   gui_update_cursor() is called for a cursor shape change, even when there
557    are mappings to be processed.  Only do something when going to wait for
558    input.  Or maybe every 100 ms?
5598   X11: When the window size is reduced to fit on screen, there are blank
560    lines below the text and bottom scrollbar.  "gvim -geometry 80x78+0+0".
561    When the "+0+0" is omitted it works.
5628   When starting an external command, and 'guipty' set, BS and DEL are mixed
563    up.  Set erase character somehow?
5648   A dead circumflex followed by a space should give the '^' character
565    (Rommel).  Look how xterm does this.
566    Also: Bednar has some code for dead key handling.
567    Also: Nedit 5.0.2 with USE_XMIM does it right. (Gaya)
5688   The compose key doesn't work properly (Cepas).  Both for Win32 and X11.
5697   The cursor in an inactive window should be hollow.  Currently it's not
570    visible.
5717   GUI on Solaris 2.5.1, using /usr/dt/..: When gvim starts, cursor is
572    hollow, after window lowered/raised it's OK. (Godfrey)
5737   When starting GUI with ":gui", and window is made smaller because it
574    doesn't fit on the screen, there is an extra redraw.
5758   When setting font with .Xdefaults, there is an extra empty line at the
576    bottom, which disappears when using ":set guifont=<Tab>". (Chadzelek)
5778   When font shape changes, but not the size, doing ":set font=" does not
578    redraw the screen with the new font.  Also for Win32.
579    When the size changes, on Solaris 2.5 there isn't a redraw for the
580    remaining part of the window (Phillipps).
581-   Flashes really badly in certain cases when running remotely from a Sun.
5824   Re-write the code so that the highlighting isn't changed multiple times
583    when doing a ":hi clear".  The color changes happen three or more times
584    currently.  This is very obvious on a 66Mhz 486.
585
586
587MSDOS/DJGPP:
5889   Pressing CTRL-C often crashes the console Vim runs in. (Ken Liao)
589    When 'bioskey' isn't set it doesn't happen.  Could be a problem with the
590    BIOS emulation of the console.  Version 5.6 already had this problem.
5918   DJGPP: "cd c:" can take us to a directory that no longer exists.
592    change_drive() doesn't check this.  How to check for this error?
5939   The 16 bit version runs out of memory very quickly.  Should find unused
594    code and reduce static data.
5959   Crash when running on Windows 98 in a console window and pressing CTRL-C.
596    Happens now and then.  When debugging Vim in gdb this also happens.  Since
597    the console crashes, might be a bug in the DOS console.  Resetting
598    'bioskey' avoids it, but then CTRL-C doesn't work.
5999   DOS: Make CTRL-Fx and ALT-Fx work.
600    CTRL-F1 = CE-5E, CTRL-F2 = CE-5F, .., CTRL-F10 = CE-67
601    ALT-F1 = CE-68, ALT-F2 = CE-69, .., ALT-F10 = CE-71
602    Shifted cursor keys produce same codes as unshifted keys.  Use bioskey(2)
603    to get modifier mask for <S-C-M-Fx>.
604    Use K_SPECIAL/KS_MODIFIER codes to insert modifier mask in input stream?
605    Make this work like in Win32 console.
606    Mapping things like <M-A> doesn't work, because it generates an extended
607    key code.  Use a translation table?
6089   Can't read an opened swap file when the "share" command has not been used.
609    At least ignore the swap files that Vim has opened itself.
6108   Use DJGPP 2.03.
6118   The Dos32 version (DJGPP) can't use long file names on Windows NT.
612    Check if new package can be used (v2misc/ntlfn08[bs].zip).
6138   setlocale() is bogus.
6148   Vim busy waits for new characters or mouse clicks.	Should put in some
615    sort of sleep, to avoid eating 50% of the CPU time.  Test on an unpatched
616    Windows 95 system!
6178   DJGPP: when shell is bash, make fails. (Donahoe)
6187   Hitting CTRL-P twice quickly (e.g. in keyword completion) on a 8088
619    machine, starts printer echo! (John Mullin).
6207   MSDOS 16 bit version can't work with COMSPEC that has an argument, e.g.:
621    COMSPEC=C:\WINDOWS\COMMAND.COM /E:4096    (Bradley)
622    Caused by BCC system() function (Borland "make" has the same problem).
6238   Mouse: handle left&right button pressed as middle button pressed.  Add
624    modifier keys shift, ctrl and alt.
6257   When too many files are open (depends on FILES), strange things happen.
626    The Dos16 version runs out of memory, in the Dos32 version "!ls" causes a
627    crash.  Another symptom: .swp files are not deleted, existing files are
628    "[New file]".
6297   DJGPP version doesn't work with graphics display mode.  Switch to a mode
630    that is supported?
6318   DJGPP: ":mode" doesn't work for many modes.  Disable them.
6328   DJGPP: When starting in Ex mode, shouldn't clear the screen. (Walter
633    Briscoe)
634
635
636MSDOS, OS/2 and Win32:
6378   OS/2: Add backtick expansion.  Undefine NO_EXPANDPATH and use
638    gen_expand_wildcards().
6398   OS/2: Add clipboard support?  See example clipbrd.exe from Alexander
640    Wagner.
6418   OS/2: Add Extended Attributes support and define HAVE_ACL.
6428   OS/2: When editing a file name "foo.txt" that is actually called FOO.txt,
643    writing uses "foo.txt".  Should obtain the real file name.
6448   Should $USERPROFILE be used instead of $HOMEDRIVE/$HOMEPATH?
6458   Win32 console: <M-Up> and <M-Down> don't work. (Geddes)  We don't have
646    special keys for these.  Should use modifier + key.
6478   Win32 console: caps-lock makes non-alpha keys work like with shift.
648    Should work like in the GUI version.
6498   Environment variables in DOS are not case sensitive.  Make a define for
650    STRCMP_ENV(), and use it when comparing environment var names.
6518   Setting 'shellslash' has no immediate effect.  Change all file names when
652    it is set/reset?  Or only use it when actually executing a shell command?
6538   When editing a file on a Samba server, case might matter.  ":e file"
654    followed by ":e FILE" will edit "file" again, even though "FILE" might be
655    another one.  Set last used name in buflist_new()?  Fix do_ecmd(), etc.
6568   ":mksession" generates a "cd" command where "aa\#bb" means directory "#bb"
657    in "aa", but it's used as "aa#bb". (Ronald Hoellwarth)
6588   When a buffer is editing a file like "ftp://mach/file", which is not going
659    to be used like a normal file name, don't change the slashes to
660    backslashes. (Ronald Hoellwarth)
661
662
663Windows 95:
6648   Editing a file by it's short file name and writing it, makes the long file
665    name disappear.  Setting 'backupcopy' helps.
666    Use FindFirstFile()->cAlternateFileName in fname_case() (George Reilly).
6678   Doing wildcard expansion, will match the short filename, but result in the
668    long filename (both DJGPP and Win32).
669
670
671Win32 console:
6729   When editing a file by its short file name, it should be expanded into its
673    long file name, to avoid problems like these: (Mccollister)
674     1) Create a file called ".bashrc" using some other editor.
675     2) Drag that file onto a shortcut or the actual executable.
676     3) Note that the file name is something like BASHRC~1
677     4) Go to File->Save As menu item and type ".bashrc" as the file name.
678     5) Press "Yes" to indicate that I want to overwrite the file.
679     6) Note that the message "File exists (add ! to override)" is displayed
680	and the file is not saved.
681    Use FindFirstFile() to expand a file name and directory in the path to its
682    long name.
6838   Also implement 'conskey' option for the Win32 console version?  Look at
684    how Xvi does console I/O under Windows NT.
6857   Re-install the use of $TERM and support the use of different terminals,
686    besides the console.
6878   Use of <altgr> modifier doesn't work?  5.3 was OK. (Garcia-Suarez/Guckes)
6889   Mapping <C-S-Tab> doesn't work correctly.  How to see the difference with
689    <C-S-i>?
6909   tmpnam() uses file in root of file system: "\asdf".  That doesn't work on
691    a Netware network drive.  Use same function as for Win32 GUI?
6928   In os_win32.h, HAVE_STRICMP and HAVE_STRNICMP are defined only if __GNUC__
693    is not defined.  Shouldn't that be the other way around?
6947   Use SetConsoleCP() and SetConsoleOutputCP() to implement 'termencoding'?
695    Avoids that input and output work differently.  Need to be restored when
696    exiting.
697
698
699Amiga:
7008   In mch_inchar() should use convert_input_safe() to handle incomplete byte
701    sequences.
7029   In mch_expandpath() a "*" is to be expanded, but "\*" isn't.  Remove
703    backslashes in result.
7048   Executing a shell, only one option for 'shell' is separated.  Should do
705    all options, using white space separation.
706
707
708Macintosh:
7097   Patch to add 'transparency' option.  Disadvantage: it's slow. (Eckehard
710    Berns, 2004 May 9) http://ecki.to/vim/TransBack-2004-05-09.diff
711    Needs more work.  Add when someone really wants it.
7127   Loading the Perl library only works on OS/X 10.2 or 10.3, never on both.
713    Load the Perl library dynamically see Python sources file dynload_mac
714    (Jack)
715    dynamic linking: http://developer.apple.com/technotes/tn2002/tn2064.html
7168   Inputting Unicode characters does not work in the terminal.  They appear
717    to arrive as upper and lower bytes. (David Brown, 2004 April 17)
7188   Typing Unicode characters doesn't work at all in the GUI.
7199   Problems in Carbon version for OS X: (Benji Fisher)
720    - keyboard shortcuts in the menus get lost.
7218   The Vim/About menu doesn't work.
7228   ":gui" doesn't fork.  Enabling the code in gui.c to fork causes a SEGV.
7238   Define vim_mkdir() for Macintosh.
7248   Define mch_writable() for Macintosh.
7259   When DiskLock is running, using a swap file causes a crash.  Appears to be
726    a problem with writing a file that starts with a dot. (Giacalone)
7279   On G3 Mac, OS version 8, control strip causes characters messed up when
728    scrolling (CTRL-L cleans it up). (Benji Fisher)
7299   On G3 Mac, OS version 8, variable-speed scrolling doesn't work, after two
730    seconds of scrolling the screen freezes. (Benji Fisher)
7319   In mac_expandpath() check that handling of backslashes is done properly.
7328   Standard Mac shortcuts are missing.  (Amerige)
7338   Handling of non-fixed width fonts is wrong. (Amerige)
734
735
736"Small" problems:
7378   When an ":edit" is inside a try command and the ATTENTION prompt is used,
738    the :catch commands are always executed, also when the file is edited
739    normally.  Should reset did_emsg and undo side effects.  Also make sure
740    the ATTENTION message shows up.  Servatius Brandt works on this.
7419   When using ":e ++enc=foo file" and the file is already loaded with
742    'fileencoding' set to "bar", then do_ecmd() uses that buffer, even though
743    the fileencoding differs.  Reload the buffer in this situation?  Need to
744    check for the buffer to be unmodified.
7458   ":g//" gives "Pattern not found error" with E486.  Should not use the
746    error number, it's not a regular error message.
7477   Vimtutor leaves escape sequence in terminal. This is the xterm response to
748    requesting the version number.  (Yasuhiro Matsumoto)
7498   When redirecting and using ":silent" the current column for displaying and
750    redirection can be different.  Use a separate variable to hold the column
751    for redirection.
7527   There is no way to change directory and go back without changing the local
753    and/or global directory.  Add a way to find out if the current window uses
754    a local directory.  Add cdcmd() that returns ":cd" or ":lcd"?
7557   After running "make test" the window title is sometimes not restored.
756    Mostly sticks at "test3.in", but not always.  Appears to happen more often
757    when compiled with Python (threading).
7587   The messages for "vim --help" and "vim --version" don't use
759    'termencoding'.
7608   When 'scrollbind' is set, a window won't scroll horizontally if the cursor
761    line is too short.  Add a word in 'scrollopt' to allow moving the cursor
762    to longer line that is visible.  A similar thing is done for the GUI when
763    using the horizontal scrollbar.
7647   VisVim can only open one file.  Hard to solve: each opened file is passed
765    with a separate invocation, would need to use timestamps to know the
766    invocations belong together.
7678   When giving a ":bwipeout" command a file-changed dialog may popup for this
768    buffer, which is pointless.  (Mike Williams)
7698   On MS-Windows ":make" doesn't show output while it is working.  Use the
770    tee.exe from  http://unxutils.sourceforge.net/ ?  About 16 Kbyte in the
771    UnxUtils.zip archive.
772    Alternate one: http://www.pramodx.20m.com/tee_for_win32.htm, but Walter
773    Briscoe says it's not as good.
7748   'fillchars' doesn't work for multi-byte characters.
7759   Editing a XML file with a long line is extremely slow.  Example file from
776    Randy Parker (Dec 13).  Editing the dictionaries for engspchk plugin with
777    syntax highlighting is also very slow.
778    Limit the searching for items to a few hundred characters?
7798   Command line completion: buffers "foo.txt" and "../b/foo.txt", completing
780    ":buf foo<Tab>" doesn't find the second one. (George V. Reilly)
7817   Output for ":scriptnames" and ":breaklist" should shorten the file names:
782    use "~/" when possible.
7837   mb_off2cells() doesn't work correctly on the tail byte of a double-byte
784    character. (Yasuhiro Matsumoto)  It should return 1 when used on a tail
785    byte, like for utf-8.  Store second byte of double-byte in ScreenLines2[]
786    (like for DBCS_JPNU) and put a zero in the second byte (like for UTF-8).
7878   'backupdir' and 'directory' should use $TMPDIR, $TMP and/or $TEMP when
788    defined.
7897   Inside a function with "perl <<EOF" a line with "$i++" is recognized as an
790    ":insert" command, causing the following "endfunction" not to be found.
791    Add skipping this perl construction inside function definitions.
7927   When 'ttimeoutlen' is 10 and 'timeoutlen' is 1000, there is a keycode
793    "<Esc>a" and a mapping <Esc>x", when typing "<Esc>a" with half a second
794    delay should not be interpreted as a keycode. (Hans Ginzel)
7957   ":botright 1 new" twice causes all window heights to be changed.  Make the
796    bottom window only bigger as much as needed.
7977   "[p" doesn't work in Visual mode. (David Brown)
7987   The Cygwin and MingW makefiles define "PC", but it's not used anywhere.
799    Remove? (Dan Sharp)
8009   The argument <f-args> of a user command doesn't handle backslashes
801    properly. "Cmd \ e" is one argument, "Cmd \\ e" still is one argument.
802    "Cmd \  e" is two arguments, first one ending in space. (Kontra Gergely)
8039   User commands use the context of the script they were defined in.  This
804    causes a "s:var" argument to unexpectedly use a variable in the defining
805    script, not the calling script.  Add an argument to ":command":
806    "-keepcontext".  Do replace <SID>, so that a function in the defining
807    script can be called.
8088   The Japanese message translations for MS-Windows are called ja.sjis.po,
809    but they use encoding cp932.  Rename the file and check that it still
810    works.
8119   When a syntax region does not use "keepend" and a contained item does use
812    "extend", this makes the outer region stop at the end of the contained
813    region. (Lutz Eymers)  Another example Nov 14 2002.
8148   A very long message in confirm() can't be quit.  Make this possible with
815    CTRL-C.
8167   clip_x11_own_selection() uses CurrentTime, that is not allowed.  VNC X
817    server has a problem with this.  (Mark Waggoner) Remembering the timestamp
818    of events isn't always possible.  We don't get them in an xterm.  GTK
819    doesn't obtain the selection again when the timestamp differs, thus it
820    won't work for GTK anyway.
8218   When the clipboard isn't supported: ":yank*" gives a confusing error
822    message.  Specifically mention that the register name is invalid.
8238   "gf" always excludes trailing punctuation characters. file_name_in_line()
824    is currently fixed to use ".,:;!".  Add an option to make this
825    configurable?
8268   'hkmap' should probably be global-local.
8279   When "$" is in 'cpoptions' and folding is active, a "C" command changes
828    the folds and resets w_lines_valid.  The display updating doesn't work
829    then. (Pritesh Mistry)
8308   ":s!from!to!" works, but ":smagic!from!to!" doesn't.  It sees the "!" as a
831    flag to to the command.  Same for ":snomagic". (Johan Spetz)
8328   Using ":s" in a function changes the previous replacement string.  Save
833    "old_sub" in save_search_patterns()?
8348   When appending to a file and 'patchmode' isn't empty, a backup file is
835    always written, even when the original file already exists.
8367   When using "daw" on the last word in a file and this is a single letter,
837    nothing is deleted.  Should delete the letter and preceding white space.
8389   When getting focus while writing a large file, could warn for this file
839    being changed outside of Vim.  Avoid checking this while the file is being
840    written.
8419   The "Error detected while processing modelines" message should have an
842    error number.
8437   The message in bt_dontwrite_msg() could be clearer.
8448   The script ID that is stored with an option and displayed with ":verbose
845    set" isn't reset when the option is set internally.  For example when
846    'foldlevel' is set from 'foldlevelstart'.
8478   In the fileformat dialog, "Cancel" isn't translated.  Add a global
848    variable for this. (Eduardo Fernandez)
8499   When editing a file with 'readonly' set, there is no check for an existing
850    swap file.  Then using ":write" (without making any changes) doesn't give
851    a warning either.  Should check for an existing swap file without creating
852    one.
8537   On MS-DOS or MS-Windows, when editing the same file over a network, the
854    drive letter is different, thus an existing swap file doesn't generate a
855    warning.  Use some flag to indicate the swap file is in the same directory
856    as the original file?  Could make b0_fname[] start with a special
857    character like ">".
8587   When 'showbreak' is set, the amount of space a Tab occupies changes.
859    Should work like 'showbreak' is inserted without changing the Tabs.
8607   When there is a "help.txt" window in a session file, restoring that
861    session will not get the "LOCAL ADDITIONS" back.
8627   When 'mousefocus' is set and switching to another window with a typed
863    command, the mouse pointer may be moved to a part of the window that's
864    covered by another window and we lose focus.  Only move in the y
865    direction, not horizontally?
8668   When using CTRL-D after ":help", restrict the number of matches to a
867    thousand, otherwise using CTRL-D without an argument takes too long.
8688   ":hardcopy":
869    - Using the cterm_color[] table is wrong when t_colors is > 16.
870    - Need to handle unprintable characters.
871    - Win32: On a B&W printer syntax highlighting isn't visible.  Perform
872      dithering to make grey text?
873    - Add a flag in 'printoptions' to add an empty page to make the total
874      number even.  "addempty"? (Mike Williams)
875    - Should interpreted CTRL-L as a page break.
876    - Grey line numbers are not always readable.  Add field in 'printoptions'.
877      Default to black when no syntax highlighting.
878    - Be able to print a window in diff mode.
879    - Be able to specify a colorscheme to use for printing.  And a separate
880      one for B&W printing (if that can be detected).
8818   In Visual block mode with 'lbr' set, a change command doesn't insert the
882    text in following lines where the linebreak changes.
8839   dosinst.c: The DJGPP version can't uninstall the Uninstall registry key on
884    Windows NT.  How to install a .inf file on Windows NT and how to detect
885    that Windows NT is being used?
8868   When opening the same file on Unix and on MS-Windows, there is no
887    ATTENTION message, because the path in the swap file is different.  Using
888    a relative path name will cause no ATTENTION for Vim 5.8.
889    Somehow add a flag that the swap file is in the same dir as the file?
8908   When 'virtualedit' is "block,insert" and encoding is "utf-8", selecting a
891    block of one double-wide character, then "d" deletes only half of it.
8928   When 'virtualedit' is set, should "I" in blockwise visual mode also insert
893    in lines that don't extend into the block?
8948   With 'virtualedit' set, in Insert mode just after the end of line, CTRL-O
895    yh does not yank the last character of the line. (Pavel Papushev)
896    Doing "hl" first appears to make it work.
8978   With 'virtualedit' set it's possible to move into the blank area from
898    'linebreak'.
8998   With 'virtualedit' set and 'selection' "exclusive", a Visual selection
900    that ends in or after a tab, "d" doesn't delete (part of) the tab.
901    (Helmut Stiegler)
9028   With 'virtualedit' set, a blockwise Visual selection that starts and ends
903    in a tab, "<" shifts too much. (Helmut Stiegler)
9049   When jumping to a tag, the search pattern is put in the history.  When
905    'magic' is on, the pattern may not work.  Translate the pattern depending
906    on p_magic when putting it in the history?  Alternative: Store value of
907    'magic' in history.  (Margo)
9089   optwin.vim: Restoring a mapping for <Space> or <CR> is not correct for
909    ":noremap".  Add "mapcmd({string}, {mode})?  Use code from ":mkexrc".
9109   incsearch is incorrect for "/that/<Return>/this/;//" (last search pattern
911    isn't updated).
9129   term_console is used before it is set (msdos, Amiga).
9139   Get out-of-memory for ":g/^/,$s//@/" on 1000 lines, this is not handled
914    correctly.  Get many error messages while redrawing the screen, which
915    cause another redraw, etc.
9168   [<C-I> doesn't work when '*' is in 'iskeyword'.  find_pattern_in_path()
917    must escape special characters in the pattern.
9188   Vim can overwrite a read-only file with ":w!".  ":w" can't overwrite an
919    existing file, "w!" can, but perhaps not a read-only file?  Then use
920    ":w!!" for that.
921    Or ask for permission to overwrite it (if file can be made writable) and
922    restore file to readonly afterwards.
9237   When compiled with "xterm_clipboard", startup can be slower and might get
924    error message for invalid $DISPLAY.  Try connecting to the X server in the
925    background (forked), so that Vim starts up quicker?  Connect as soon as
926    the clipboard is to be used (Visual select mode starts, paste from
927    clipboard)
9287   X11: Some people prefer to use CLIPBOARD instead of PRIMARY for the normal
929    selection.  Add an "xclipboard" argument to the 'clipboard' option? (Mark
930    Waggoner)
9318   For xterm need to open a connection to the X server to get the window
932    title, which can be slow.  Can also get the title with "<Esc>[21t", no
933    need to use X11 calls.  This returns "<Esc>]l{title}<Esc>\".
9348   When the builtin xterm termcap contains codes that are not wanted, need a
935    way to avoid using the builtin termcap.
9368   Xterm sends ^[[H for <Home> and ^[[F for <End> in some mode.  Also
937    recognize these keys?  Mostly useful for xterm simulators, like gnometerm.
938    See http://dickey.his.com/xterm/xterm.faq.html#xterm_pc_style.
9398   '[ and '] should be set to start/end of line when using a linewise operator
940    (e.g., ":w").
9418   CTRL-A can't handle big "long" numbers, they become negative.  Check for
942    "-" character, if not present, use unsigned long.
9438   Make it possible to disable the special meaning of "#" in the first column
944    for ">>".
9458   Add suspending with CTRL-Z at the "more" prompt, and when executing a long
946    script in do_cmdline().
9478   When using 'hidden', many swap files will be open.  When Vim runs into the
948    maximum number of open files, error messages will appear.  Detect that
949    this problem is present, and close any hidden files that don't have
950    changes.
9518   With 'viminfo' set such that the ".viminfo" file is written on a FAT
952    filesystem, an illegal file name may be created: ".vim".
9538   For each buffer that is opened, the viminfo file is opened and read to
954    check for file marks.  This can be slow.
9557   In xterm, recognize both vt100 and vt220 cursor keys.  Change
956    add_termcode() to not remove an existing entry for a name, when it's
957    needed.
958    Need a generic solution to recognize different codes for the same key.
9598   Core dump within signal function: gdb doesn't show stack backtrace!  Option
960    to skip catch_signals()?
9619   Repeating a "cw" with "." doesn't work if the text was pasted from the
962    clipboard. (Thomas Jones)  It's because the menu/toolbar item exits Insert
963    mode and uses "gP".  How to fix this without breaking inserting a block of
964    text?
9658   In Replace mode pasting from the clipboard (using menu or toolbar) inserts
966    all the text.  Add ":rmenu"?
9678   Pasting with the mouse in Replace mode inserts the text, instead of
968    overwriting, when it is more than one line.  Same for using <C-R>.
9699   CTRL-E and CTRL-Y don't work in small window when 'so' is 4 and lines are
970    wrapping (Acevedo/in.226).  E.g., when using CTRL-E, window height 7,
971    window might actually scroll down when last line of buffer is displayed.
972    --> Remember if the previous command was "cursor follows screen" or
973    "screen follow cursor" and use this in cursupdate().
9747   tilde_replace() can only handle "~/", should also do "~user/".
975    Get the list of home directories (from /etc/passwd?  Use getpwent()) and
976    use some clever algorithm to match a path with that.  Find common strings
977    in the list?
9788   When dragging status line with mouse, sometimes a jump when first clicking
979    on the status line (caused by 'winheight').  Select window on button up,
980    instead of on button down.
9818   Dragging the status line doesn't scroll but redraw.
9829   Evaluating 'statusline' in build_stl_str_hl() does not properly check for
983    reaching the end of the available buffer.
9848   When performing incremental search, should abort searching as soon as a
985    character is typed.
9868   When the value of $MAKE contains a path, configure can't handle this.
987    It's an autoconf bug.  Remove the path from $MAKE to work around it.
9888   How to set VIMRC_FILE to \"something\" for configure?  Why does this not
989    work: CFLAGS='-DVIMRC_FILE=\"/mydir/myfile\"' ./configure
9908   The temporary file is sometimes not writable.  Check for this, and use an
991    alternate name when it isn't.  Or add the 'temptemplate' option: template
992    for the temp file name ":set temptemplate=/usr/tmp/?????.tmp".
993    Also: Win32 version uses Windows temp directory, which might not work for
994    cygwin bash.
9957   Get error "*, \+ or \( operand could be empty" for pattern "\(.\)\1\{3}".
996    Remember flags for backreferences.
9977   When switching to Daylight Saving Time, Vim complains that a file has been
998    changed since last read.  Can we use a function that uses GMT?
9997   When completing an environment variable after a '$', check for file names
1000    that contain a '$' after all have been found.
10018   When "cm" termcap entry is missing, starting gvim shouldn't complain about
1002    it. (Lohner)  Try out with "vt100" entry, cm replaced with cX.
10037   When an include file starts with "../", the check for already visiting
1004    this file doesn't work.  Need to simplify the file name.
10057   The names and comments for the arguments of do_browse() are confusing.
1006    "dflt" isn't the default file name when "initdir" is not NULL and
1007    "initdir" is the default path to be used.
10087   When 'scrolloff' is exactly half the window height, "j" causes a scroll of
1009    two lines at a time.  "k" doesn't do this. (Cory T. Echols)
10108   When write_viminfo() is used while there are many orphaned viminfo
1011    tempfiles writing the viminfo file fails.  Give a clear error message so
1012    that the user knows he has to delete the files.
10137   It's possible to redefine a script-local function with ":func
1014    <SNR>123_Test()". (Krishna)  Disallow this.
10157   After ":%d" an undo reports the number of lines added as if there still
1016    was one line.
1017
1018
1019I can't reproduce these (if you can, let me know how!):
10209   NT 4.0 on NTFS file system: Editing ".bashrc" (drag and drop), file
1021    disappears.  Editing ".xyz" is OK.  Also, drag&drop only works for three
1022    files. (McCollister)
10238   Motif: Tear-off menu item crashes Vim on some machines.  (Netherton)  It
1024    works fine for me, maybe it's a Motif problem.
1025
1026
1027Problems that will (probably) not be solved:
1028-   In a terminal with 'mouse' set such that the mouse is active when entering
1029    a command line, after executing a shell command that scrolls up the
1030    display and then pressing ":": Selecting text with the mouse works like
1031    the display wasn't scrolled.  Vim doesn't know how much the external
1032    command scrolled up the display.  Use Shift to select text.
1033-   X windows: When $DISPLAY points to a X server where there is no access
1034    permission, trying to connect to the X server causes an error message.
1035    XtOpenDisplay() prints this directly, there is no way to avoid it.
1036-   X windows: Setting 'guifontset' to an illegal value sometimes crashes Vim.
1037    This is caused by a fault in a X library function, can't be solved in Vim.
1038-   Motif: When adding a menu item "Find this &Symbol", the "s" in "this" will
1039    be underlined, instead of in "Symbol".  Motif doesn't let us specify which
1040    character gets the highlighting.
1041-   Moving the cursor removes color in color-xterm.  This is a color-xterm
1042    problem!  color-xterm ver. 6.1 beta 3 and later work properly.
1043-   In zsh, "gvim&" changes the terminal settings.  This is a zsh problem.
1044    (Jennings)
1045-   Problem with HPterm under X: old contents of window is lost (Cosentino).
1046-   Amiga: When using quickfix with the Manx compiler we only get the first 25
1047    errors.  How do we get the rest?
1048-   Amiga: The ":cq" command does not always abort the Manx compiler.  Why?
1049-   Linux: A file with protection r--rw-rw- is seen readonly for others. The
1050    access() function in GNU libc is probably wrong.
1051-   MSDOS: When using smartdrive with write-back buffering, writing to a
1052    readonly floppy will cause problems.  How to test for a writable floppy
1053    first?
1054-   MSDOS: Both 16 and 32 bit versions: File name expansion doesn't work for
1055    names that start with a dot.  These used to be illegal file names.
1056-   When doing a CTRL-Z and typing a command for the shell, while Vim is busy
1057    (e.g. writing a file), the command for the shell is sometimes eaten by Vim,
1058    because the terminal mode is changed from RAW to CBREAK.
1059-   An old version of GNU tgoto can't handle the terminfo code for "AF".  The
1060    "%p1" is interpreted as "%p" and "1", causing color not to be working.
1061    Fix: Change the "%p1" in the "AF" and "AB" terminfo entries to "%p".
1062    (Benzinger).
1063-   When running an external command from the GUI, typeahead is going to that
1064    program, not to Vim.  It looks like the shell eats the characters, Vim
1065    can't get back what the external command didn't use.
1066-   Win32 GUI: Error code from external command not returned in shell_error.
1067    It appears that cmd.exe and command.com don't return an error code.
1068-   Win32 GUI: The Toolbar is a bit too high when the flat style is being
1069    used.  We don't have control over the height of the Toolbar.
1070-   Win32: All files created on the day of switching from winter to summer
1071    time cause "changed since editing started" messages.  It goes away when
1072    the file is written again the next day, or the timezone is adjusted.
1073    DJGPP version is OK. (Zaimi)  Looks like a problem with the Win32 library.
1074    Rebooting doesn't help.  Time stamps look OK in directory. (Penn)
1075    Is this on FAT (stores wall clock time) or NTFS (stores UTS)?
1076-   Win32, MS-Windows XP: $HOME uses the wrong drive when the user profiles
1077    are not on the boot disk.  This is caused by a wrong value of $HOMEDRIVE.
1078    This is a bug in XP, see MSKB article 818134.
1079-   SunOS 5.5.1 with Motif: The file open dialog does not have a horizontal
1080    scroll bar for the "files" selection.  This is a problem in the Motif
1081    libraries, get a patch from Sun.
1082-   Solaris 2.6 with GTK and Perl: gvim crashes when started.  Problem with X
1083    input method called from GDK code.  Without Perl it doesn't crash.
1084-   VMS: Vimdiff doesn't work with the VMS diff, because the output looks
1085    different.  This makes test 47 fail.  Install a Unix-compatible diff.
1086-   VMS v7.1 and older: Tests 21 and 32 fail.  From VMS v7.1-2 and newer Vim
1087    does not have this behavior. (Zoltan Arpadffy)
1088-   Win32 GUI: mouse wheel always scrolls rightmost window.  The events arrive
1089    in Vim as if the rightmost scrollbar was used.
1090-   GTK with Gnome: Produces an error message when starting up:
1091	Gdk-WARNING **: locale not supported by C library
1092    This is caused by the gnome library gnome_init() setting $LC_CTYPE to
1093    "en_US".  Not all systems support this locale name, thus causing the
1094    error.  Hopefully a newer version of GTK/Gnome fixes this problem.
1095-   GTK 2: With this mapping the hit-enter prompt is _sometimes_ below the
1096    screen, at other times there is a grey area below the command line:
1097	:nmap <F11> :if &guioptions=~'m' \| set guioptions-=m \| else \| set guioptions+=m \| endif<cr>
1098-   GTK: When pasting a selection from Vim to xclipboard gvim crashes with a
1099    ABRT signal.  Probably an error in the file gdkselection.c, the assert
1100    always fails when XmbTextListToTextProperty() fails. (Tom Allard)
1101-   GTK 2: gives an assertion error for every non-builtin icon in the toolbar.
1102    This is a GTK 2.4.x bug, fixed in GTK 2.4.2. (Thomas de Grenier de Latour)
1103-   When using an xterm that supports the termresponse feature, and the 't_Co'
1104    termcap option was wrong when Vim started, it will be corrected when the
1105    termresponse is received.  Since the number of colors changes, the
1106    highlighting needs to be initialized again.  This may cause colors defined
1107    in the vimrc file to be lost.
1108-   On Windows NT 4.0 the number of files passed to Vim with drag&drop and
1109    "Edit with Vim" is limited.  The maximum command line length is 255 chars.
1110
1111---------------------  extensions and improvements ----------------------
1112						    *extensions-improvements*
1113
1114Documentation:
11158   List of options should mention whether environment variables are expanded
1116    or not.
11178   Extend usr_27.txt a bit. (Adam Seyfarth)
11187   Add a section on debugging scripts in the user manual.
11199   Make the Reference Manual more precise.  For each command mention:
1120    - change to cursor position and curswant
1121    - if it can be undone (u/CTRL-R) and redone (.)
1122    - how it works for folded lines
1123    - how it works with multi-byte characters
11249   In change.txt, remark about Javadoc isn't right.  Right alignment would
1125    work too.
11268   Spread the windows commands over the other files.  For example, ":stag"
1127    should be with ":tag".  Cross-link with tags to avoid too much double
1128    text.
11298   Add tags for all features, e.g. "gui_running".
11307   MS-Windows: When a wrong command is typed with an ALT key, give a hint to
1131    look at the help for 'winaltkeys'.
11327   Add a help.vim plugin that maps <Tab> to jump to the next tag in || and
1133    <C-Tab> (and <S-Tab>) to the previous tag.
1134-   Check text editor compendium for vi and Vim remarks.
1135
1136
1137Help:
1138-   First try using the ":help" argument literally, before using it as a
1139    pattern.  And then match it as part of a tag.
1140-   When a help item has multiple matches make it possible to use ":tn" to go
1141    to the other matches.
1142-   Support a way to view (and edit) .info files.
1143-   Default mapping for help files: <Tab> to position cursor on next |:tag|.
1144-   Implement a "sticky" help window, some help text lines that are always
1145    displayed in a window with fixed height. (Guckes)  Use "~/.vimhelp" file,
1146    user can edit it to insert his favorite commands, new account can contain a
1147    default contents.
1148-   Make 'winminheight' a local option, so that the user can set a minimal
1149    height for the help window (and other windows).
1150-   ":help :s^I" should expand to ":help :substitute".
1151-   Make the help key (<F1>) context sensitive?
1152-   Learn mode: show short help while typing commands.
1153
1154
1155User Friendlier:
11568   Windows install with install.exe: Use .exe instead of .bat files for
1157    links, so that command line arguments are passed on unmodified? (Walter
1158    Briscoe)
11598   Windows install: Be able to associate Vim with a selection of file types?
11608   Windows uninstall: Have uninstal.c delete the vimfiles directories that
1161    dosinst.c creates.  List the contents of the directory (recursively) if
1162    the user asks for it.  Requires an implementation of "rm -rf".
11638   Remember the name of the vimrc file that was used (~/.vimrc, $VIM/_vimrc,
1164    $HOME/_vimrc, etc.) and add "edit vimrc" to the File menu.
1165-   Add a way to save local settings and mappings into a new plugin file.
1166    ":mkplugin <file>"?
11678   Add ":plugininstall" command.  Can be used to install a plugin file that
1168    includes documentation.  Let the user select a directory from
1169    'runtimepath'.
1170	" Vim plugin
1171	<main plugin code>
1172	" >>> plugin help start <<<
1173	<plugin docs>
1174-   Add mappings local to a window: ":map <window> ..."?
11759   Add buffer-local menu.  Should offer a choice between removing the menu or
1176    disabling it.  Be careful that tear-offs don't disappear (keep one empty
1177    item?).
1178    Alternative: use BufEnter and BufLeave autocommands.
11798   make a vimtutor script for Amiga and other systems.
11807   Add the arguments for configure to the ":version" output?
1181
1182
1183Diff mode:
11848   Use diff mode to show the changes made in a buffer (compared to the file).
1185    Use an unnamed buffer, like doing:
1186	new | set bt=nofile | r # | 0d_ | diffthis | wincmd p | diffthis
11877   Add cursor-binding: when moving the cursor in one diff'ed buffer, also
1188    move it in other diff'ed buffers, so that CTRL-W commands go to the same
1189    location.
1190
1191
1192Folding:
1193    (commands still available: zg zG zI zJ zK zp zP zq zQ zV zw zW zy zY;
1194    secondary: zB zS zT zZ)
11958   Add different highlighting for a fold line depending on the fold level.
1196    (Noel Henson)
11978   When a closed fold is displayed open because of 'foldminlines', the
1198    behavior of commands is still like the fold is closed.  How to make the
1199    user aware of this?
12008   Add an option 'foldskip' with values like 'foldopen' that specifies which
1201    commands skip over a closed fold.
12028   "H" and "L" count buffer lines instead of window lines. (Servatius Brandt)
12038   Add a way to add fold-plugins.  Johannes Zellner has one for VB.
12047   When using 2html.vim, also reproduce folds as you can see them.  When
1205    someone doesn't want the folds he can disable them before converting.
1206    First attempt by Carl Osterwisch, 2004 May 10.
12077   When using manual folding, the undo command should also restore folds.
1208-   Allow completely hiding a closed fold.  Require showing a character in
1209    'foldcolumn' to avoid the missing line goes unnoticed.
1210-   When pressing the down arrow of a scrollbar, a closed fold doesn't scroll
1211    until after a long time.  How to make scrolling with closed folds
1212    smoother?
1213-   When creating a session, also store folds for buffers in the buffer list,
1214    using the wininfo in wi_folds.
1215-   'foldmethod' "textobject": fold on sections and paragraph text objects.
1216-   Add 'hidecomment' option: don't display comments in /* */ and after //.
1217-   "zu": undo change in manual fold. "zU" redo change in manual fold.  How to
1218    implement this?
1219-   "zJ" command: add the line or fold below the fold in the fold under the
1220    cursor.
1221-   'foldmethod' "syntax": "fold=3": set fold level for a region.
1222-   Can set 'foldtext' to empty string: don't display any line.  How to
1223    implement this?
1224-   Apply a new foldlevel to a range of lines. (Steve Litt)
1225-   Have some way to restrict commands to not folded text.  Also commands like
1226    searches.
1227
1228
1229Multi-byte characters:
12309   When the tail byte of a double-byte character is illegal (e.g., a CR), the
1231    display is messed up (Yasuhiro Matsumoto).  Should check for illegal
1232    double-byte characters and display them differently (display each single
1233    byte).
12348   Add an item in 'fileencodings' to check the first lines of a file for
1235    the encoding.  See Python PEP: http://www.python.org/peps/pep-0263.html.
1236    To avoid getting a wrong encoding only accept something Emacs-like:
1237    "-*- coding: enc-na_me.foo -*-" and "-*- coding= enc-na_me.foo -*-"
1238    Match with "-\*-\s*coding[:=]\s*\([::word::-_.]\+\)\s*-\*-" and use first
1239    item.
12408   Add an item in 'fileencodings' to check the first line of an XML file for
1241    the encoding. <?xml version="1.0" encoding="UTF-8"?>  Or "charset=UTF-8"?
12428   The quickfix file is read without conversion, thus in 'encoding'.  Add an
1243    option to specify the encoding of the errorfile and convert it.  Also for
1244    ":grep".
12458   When a file was converted from 'fileencoding' to 'encoding', a tag search
1246    should also do this on the search pattern. (Andrzej M. Ostruszka)
12477   When converting a file fails, mention which byte could not be converted,
1248    so that the user can fix the problem.
12498   Add configure option to be able to disable using the iconv library. (Udo
1250    Schweigert)
12519   'aleph' should be set to 1488 for Unicode. (Zvi Har'El)
12528   Should add test for using various commands with multi-byte characters.
12538   'infercase' doesn't work with multi-byte characters.
12548   toupper() function doesn't handle byte count changes.
12558   "ga" should show all composing characters, also if there are more than 2.
12567   When searching, should order of composing characters be ignored?
12578   Should implement 'delcombine' for command line editing.
12588   Detect overlong UTF-8 sequences and handle them like illegal bytes.
12598   ":s/x/\u\1/" doesn't work, making uppercase isn't done for multi-byte
1260    characters.
12618   UTF-8: "r" in Visual mode doesn't take composing characters.
12628   UTF-8: When there is a precomposed character in the font, use it instead
1263    of a character and a composing character.  See xterm for an example.
12647   When a character can't be displayed, display its digraph instead.
1265    'display' option to specify this.
12667   Use ideas for nl_langinfo() from Markus Kuhn in enc_default():
1267    (www.cl.cam.ac.uk/~mgk25/ucs/langinfo.c)
1268-   GTK and Win32: Allow selecting fonts for 'guifontset' with the
1269    fontselector somehow.
1270-   GTK and Win32: make it possible to set the font for the menu to make it
1271    possible to have 'encoding' different from the current locale.
1272-   dbcs_class() only works for Japanese and Korean.  Implement this for
1273    other encodings.  The "euc-jp" and "euc-kr" choices might be wrong.
1274-   Find some way to automatically select the right GUI font or fontset,
1275    depending on the default value of 'encoding'.
1276    Irrelevant in the GTK+ 2 GUI so long as UTF-8 is used.
1277    For Windows, the charset_pairs[] table could be used.  But how do we know
1278    if a font exists?
1279-   Do keyboard conversion from 'termencoding' to 'encoding' with
1280    convert_input() for Mac GUI, RiscOS GUI, BeOS GUI.
1281-   Add mnemonics from RFC1345 longer than two characters.
1282    Support CTRL-K _{mnemonic}_
12837   In "-- INSERT (lang) --" show the name of the keymap used instead of
1284    "lang". (Ilya Dogolazky)
1285-   Make 'langmap' accept multi-byte characters.
1286-   Do we need the reverse of 'keymap', like 'langmap' but with files and
1287    multi-byte characters?  E.g., when using a Russian keyboard.
1288-   Add the possibility to enter mappings which are used whenever normal text
1289    could be entered.  E.g., for "f" command.  But not in Normal mode.  Sort
1290    of opposite of 'langmap'.  Use ":tmap" command?
1291-   When breaking a line, take properties of multi-byte characters into
1292    account.  The "linebreak" program from Bruno Haible can do it:
1293    ftp://ftp.ilog.fr/pub/Users/haible/gnu/linebreak-0.1.tar.gz
1294    But it's very complicated...
1295
1296
1297Printing:
1298-   Add "page width" to wrap long lines.
1299-   Win32: use a font dialog for setting 'printfont'.  Can reuse the code for
1300    the 'guifont' dialog, put the common code in a separate function.
1301-   Win32: when 'printfont' is empty use 'guifont'.
1302-   Unix: Use some dialog box to do the obvious settings (paper size, printer
1303    name, portrait/landscape, etc).
1304-   PostScript: only works for 7-bit ASCII and EBCDIC.  Should support
1305    different 'encoding' values somehow.
1306-   Allow specifying the paper size, instead of using a standard size.  Same
1307    units as for the margins.
1308-   Support right-to-left text?
13098   Make the foreground color darkening function preserve the hue of the
1310    color.
1311
1312
1313Syntax highlighting:
13148   Make ":syn off" use 'runtimepath' instead of $VIMRUNTIME. (Gary Johnson)
1315    Should do the same for ":syn on" and ":syn manual".
13168   Support "containedin" argument for ":syn include", so that the defined
1317    cluster can be added to existing syntax items.
13188   C syntax: Don't highlight {} as errors inside () when used like this:
1319    "({ something })", often used in GCC code.
13208   When editing a new file without a name and giving it a name (by writing
1321    it) and 'filetype' is not set, detect the filetype.  Avoid doing it for
1322    ":wq file".
13238   Make conversion to HTML faster (Write it in C or pre-compile the script).
13249   There is still a redraw bug somewhere.  Probably because a cached state is
1325    used in a wrong way.  I can't reproduce it...
13267   Make syntax keyword table configurable.  Set number of bits used with
1327    ":syn clear [hashbits]", so that we don't need to reallocate the table.
1328    minimal 4 bits, maximal 16. (Campbell)
13297   Be able to change only the background highlighting.  Useful for Diff* and
1330    Search highlighting.
13318   Allow the user to add items to the Syntax menu sorted, without having to
1332    change this for each release.
13338   Add a "matchcontains" for regions: items contained in the start or end
1334    pattern, but not in the body.
13358   Add a "keepend-contained" argument: Don't change the end of an item this
1336    one is contained in.  Like "keepend" but specified on the contained item,
1337    instead of the containing item.
13388   For keywords, allow to define the size of the hash table with ":syn
1339    clear".  Change KHASH_ defines into variables stored in buffer struct.
1340    Use something else than linear linked list from the hash table. (Campbell)
13418   cpp.vim: In C++ it's allowed to use {} inside ().
13428   Some syntax files set 'iskeyword'.  When switching to another filetype
1343    this isn't reset.  Add a special keyword definition for the syntax rules?
1344    When this is done, use vim.vim syntax highlighting for help file examples,
1345    but without ":" in 'iskeyword' for syntax.
13468   Add specific syntax item to match with parens/braces that don't have a
1347    "%" match.  :syntax nomatch cMatchError (,{,[,),},] [contained]
13488   Highlight the text between two matching parens (e.g., with a grey
1349    background) when on one of the parens or in between them.
1350    Or highlight the matching paren when the cursor is on one.
13518   Add a command to jump to the next character highlighted with "Error".
13528   When using a cterm, and no ctermfg or ctermbg are defined, use start/stop
1353    sequences.	Add remark in docs that :if 'term' == "term-name" should be
1354    used.
13558   Add @spell cluster to String and Comment groups for many languages.  Will
1356    allow spell checking. (Fleiner)
13578   When listing syntax items, try to sort the keywords alphabetically.  And
1358    re-insert the [] if possible.
13598   Make it possible to use color of text for Visual highlight group (like for
1360    the Cursor).
13618   Make it possible to only highlight a sub-expression of a match.  Like
1362    using "\1" in a ":s" command.
13638   Support for deleting syntax items:
1364    :syn keyword cTodo remove this
1365    :syn match cTodo remove "pattern"
1366    :syn region cString remove start="this" end="that"
13678   Add possibility to sync on something else, when the syncing in one way
1368    doesn't find match.  For HTML: When no {script} is found, try looking for
1369    a '<'.  (Fleiner)
13707   Replace the synchronizing method with a state machine specification?
1371    Should be able to start at any line in the file, search forwards or
1372    backwards, and use the result of matching a pattern.
13737   Use parsing like awk, so that e.g., a ( without a matching ) can be
1374    detected.
13758   Make it possible to use "inverted" highlighting, invert the original
1376    character.  For Visual mode. (xterm-selection already does this).
13778   Highlight non-printable characters with "SpecialChar", linked to
1378    "Special".  Display them with the digraph characters, if possible.
13798   Highlight the clipboard-selection with a highlight group.
13808   Be able to reset highlighting to its original (default) values.
13817   Be able to write current highlighting to a file as commands, similar to
1382    ":mkvimrc".
13838   Improve c.vim:
1384    - Add check for unterminated strings, with a variable to switch it on:
1385      "c_strict_ansi".
1386    - Detect unbalanced "#endif".  Requires looking back a long way...
13878   Add an option to restrict the updating of syntax highlighting to the
1388    current line while in Insert mode.
13898   When guessing value of 'background', the syntax file has already been
1390    loaded (from the .gvimrc).	After changing 'background', load it again?
13918   Add ":syn resync" command, to re-parse the whole file until the current
1392    display position.
13938   Should support "me" offset for a region start pattern.  To be used to
1394    allow searching for the end pattern inside the match of the end pattern.
1395    Example: syn region pikeXX start="([^{]" end=")" should work on "()".
13968   When using a regexp for "contains=", should delay matching with it until
1397    redrawing happens.  Set a flag when a group is added, check this flag when
1398    highlighting starts.
13997   Add "semitrans": Add highlighting.  E.g., make the text bold, but keep the
1400    colors.  And add colors, so that Green+Red becomes Yellow.
1401    E.g. for this html:
1402	<B> bold text <I> italic+bold text </B> italic text </I>
14037   Wild idea: Not only set highlighting, but also change what is displayed
1404    (e.g., remove characters, so that "<B>bold</B>" can be shown as "bold"):
1405	:syn region boldstuff start="<B>" display="" end="</B>" display=""
14067   CTRL-] checks the highlight group for finding out what the tag is.
14077   Add an explanation how a list of words can be used to highlight misspelled
1408    words.
14097   Command line completion for ":find" should search in 'path'.
14108   Add more command line completion for :syntax.
14118   Add more command line completion for :highlight.
14128   Add more command line completion for :sign.
14137   Should find a better way to parse the :syntax and :highlight commands.
1414    Use tables or lists that can be shared by parsing for execution and
1415    completion?
14168   Add ColorSchemePost autocommand event, so that scripts can set up their
1417    highlighting. (Salman Halim)
14187   Add a few sets of colors (e.g. Borland Turbo C one).  With a menu to
1419    select one of the sets.
14208   Add offsets to sub-matches: "\(a*\) *"he=e1-1
1421    'e' is end of match 'e1' is end of sub-match 1, 's2' is start of submatch
1422    2, etc.
14238   In Insert mode, when there are typeahead characters, postpone the
1424    highlighting (for "." command).
14258   Syncing on comments isn't 100% correct when / / lines mix with / * and * /.
1426    For example: What about a line that starts with / / and contains * /?
14278   Ignore / * and  * / inside strings, when syncing.
14287   Build a few more syntax files from the file "/usr/share/misc/vgrindefs":
1429    ISP, LDL, Icon, ratfor.  And check "nedit/source/highlight.c".
14306   Add possibility to have background color continue until the right edge of
1431    the window.  Useful for comment blocks and function headings. (Rogall)
1432-   Make it possible to add "contains" items for all items in a group.	Useful
1433    when extending an already existing syntax file.
1434-   Add line-continuation pattern for non-syncing items too?
1435-   Add possibility to highlight the whole line, including the right margin
1436    (for comment blocks).
1437-   Add 'hlmatch' option: List of flags:
1438    'c': highlight match for character under the cursor.
1439    'b': highlight the previous (, and its match.
1440    'a': highlight all text from the previous ( until its match.
1441	 Also for {}, <>, etc.?
1442    'e': highlight all braces without a match (slow?)
1443    OR: add an argument "cursor" to the syntax command, which means that the
1444    region/match/keyword is only highlighted when the cursor is on it.
1445    (Campbell)
1446    Or do it like Elvis: define text objects and how to highlight them around
1447    the cursor. (Iain Truskett)
14487   Make it possible to use all words in the tags files as Keyword.
1449    Can also be done with a script (but it's slow).
14507   Make it possible to call a ":" command when a match is found.  Should
1451    allow for adding keywords from the text (e.g. variables that are set).
1452    And allows for sections with different highlighting.
14537   Add highlight group for commandline: "Commandline".  Make sure it
1454    highlights the command line while typing a command, and any output from
1455    messages.  And external commands?
14568   Make a version that works like less, but with highlighting: read stdin for
1457    text, exit at end of file, don't allow editing, etc.  moreim?  lessim?
14587   SpecialKey highlighting overrules syntax highlighting.  Can't give an
1459    unprintable char another color.  Would be useful for ^M at end of line.
1460
1461
1462Built-in script language:
14638   Add referring to key options with "&t_xx".  Both for "echo &t_xx" and
1464    ":let &t_xx =".  Useful for making portable mappings.
14658   Allow range for ":exec".  Pass it on to the executed command. (Webb)
14668   exists("&&option") tests if 'option' is actually implemented.  Useful for
1467    'shellslash', for example.
14688   Have a look at VSEL.  Would it be useful to include? (Bigham)
14698   Add ":fungroup" command, to group function definitions together.  When
1470    encountered, all functions in the group are removed.  Suggest using an
1471    obscure name to avoid name clashes.  Require a ":fungroup END" in the same
1472    sourced file?  Assume the group ends at the end of the file.  Handle
1473    nested packages?
1474    Alternative: Support packages.  {package-name}:{function-name}().
1475    Packages are loaded automatically when first used, from
1476    $VIMRUNTIME/packages (or use a search path).
14777   Make globpath() also work with "**" and upwards search. (Brian Medley)
14787   Pre-parse or compile Vim scripts into a bytecode.
1479    1. Put the bytecode with the original script, with an ":if
1480       has('bytecode')" around it, so that it's only used with a Vim that
1481       supports it.  Update the code with a command, can be used in an
1482       autocommand.
1483    2. Use a ".vic" file (like Python use .pyc).  Create it when writing a
1484       .vim file.  Problem: distribution.
1485    3. Use a cache directory for each user.  How to recognize which cached
1486       file belongs to a sourced script?
14877   Add "n" flag to search() function, just like searchpair(). (Alexey
1488    Marinichev)
14897   Add argument to winwidth() to subtract the space taken by 'foldcolumn',
1490    signs and/or 'number'.
14918   Add functions:
1492	search()		Add optional offset argument.
1493	realname()		Get user name (first, last, full)
1494				user_fullname() patch by Nikolai Weibull, Nov
1495				3 2002
1496				Only add this when also implemented for
1497				non-Unix systems, otherwise a shell cmd could
1498				be used.
1499				get_user_name() gets login name.
1500	menuprop({name}, {idx}, {what})
1501				Get menu property of menu {name} item {idx}.
1502				menuprop("", 1, "name") returns "File".
1503				menuprop("File", 1, "n") returns "nmenu
1504				File.Open..." argument.
1505				Patch by Ilya Sher, 2004 Apr 22
1506				Return a list of menus and/or a dictionary
1507				with properties instead.
1508	mapname({idx}, mode)	return the name of the idx'th mapping.
1509				Patch by Ilya Sher, 2004 Mar 4.
1510				Return a list instead.
1511	sprintf(format, arg, ..) How to prevent a crash???
1512	attributes()		return file protection flags "drwxrwxrwx"
1513	mkdir(dir)		Create directory
1514	copy(from, to)		Copy a file
1515	perl(cmd)		call Perl and return string
1516	shorten(fname)		shorten a file name, like home_replace()
1517	input(prompt, complete)	like input() but do specified completion
1518	inputrl()		like input() but right-to-left
1519	virtualmode()		add argument to obtain whether "$" was used in
1520				Visual block mode.
1521	tagtype(tag)		get type of tag (also checks if it exists)
1522	getacp()		Win32: get codepage (Glenn Maynard)
1523	getbufline()		get line from any buffer
1524	deletebufline()		delete line in any buffer
1525	appendbufline()		append line in any buffer
1526	sort()			Sort a newline-separated string.  Also:
1527				":sort".
1528	libcall()		Allow more than one argument.
1529	libcallext()		Like libcall(), but using a callback function
1530				to allow the library to execute a command or
1531				evaluate an expression.
1532	char2hex()		convert char string to hex string.  XX
1533	hex2char()		convert hex string to char string. XX
15347   Make bufname("'0") return the buffer name from mark '0.  How to get the
1535    column and line number?  col("'0") currently returns zero.
15368   argc() returns 0 when using "vim -t tag".  How to detect that no file was
1537    specified in any way?  To be able to jump to the last edited file.
15388   Pass the executable name to the Vim scripts in some way.  As v:argv0?
15398   Add command arguments with three dashes, passed on to Vim scripts.
15408   When starting to source a vim script, delete all functions that it has
1541    previously defined?  Avoids using ":fun!" all the time.
15427   Add optional arguments to user functions:
1543	:func myFunc(arg1, arg2, arg3 = "blah", arg4 = 17)
15446   User functions: Functions local to buffer "b:func()"?
15458   Add ":let var[{expr}] = {expr}".  When past the end of "var" just ignore.
15468   The "= register should be writable, if followed by the name of a variable,
1547    option or environment variable.
15488   ":let &option" should list the value of the option.
15497   Add synIDlist(), making the whole list of syntax items on the
1550    stack available (separated with '\n').
15518   Add autocommand-event for when a variable is changed:
1552	:au VarChanged {varname} {commands}
15538   Add "has("gui_capable")", to check if the GUI can be started.
15548   Add possibility to use variables like registers: characterwise (default),
1555    linewise (when ending in '\n'), blockwise (when ending in '\001').	reg0,
1556    rega, reg%, etc.  Add functions linewise({expr}), blockwise({expr}) and
1557    charwise({expr}).
15587   Make it possible to do any command on a string variable (make a buffer
1559    with one line, containing the string).  Maybe add an (invisible) scratch
1560    buffer for this?
1561	result = scratch(string, command)
1562	result = apply(string, command)
1563	result = execute(string, command)
1564    "command" would use <> notation.
1565    Does scratch buffer have a number?  Or re-use same number?
15667   Add function to generate unique number (date in milliseconds).
15677   Automatically load a function from a file when it is called.  Need an
1568    option for the search path. (Sekera)
15697   Persistent variables: "p:var"; stored in viminfo file and sessions files.
1570
1571
1572Robustness:
15738   This pattern in syntax/java.vim causes a recursive call of regmatch():
1574	syn match   javaStringError      +"\([^"\\]\|\\.\)*$+
1575    A long line with a " in it can cause a crash when it runs out of stack
1576    space (on systems where this isn't caught).  How can we catch this for
1577    more systems?
15786   Add file locking.  Lock a file when starting to edit it with flock() or
1579    fcntl().  This patch has advisory file locking while reading/writing
1580    the file for Vim 5.4: ~/vim/patches/kahn_file_locking .
1581    The patch is incomplete (needs support for more systems, autoconf).
1582    Andy doesn't have time to work on it.
1583    Disadvantage: Need to find ways to gracefully handle failure to obtain a
1584    lock.  When to release a lock: When buffer is unloaded?
1585
1586
1587Performance:
15888   Loading plugins takes startup time.  Only load the part that is used to
1589    trigger the rest, and load the rest when it's needed?
15908   Turn b_syn_ic and b_syn_containedin into b_syn_flags.
15919   Loading menu.vim still takes quite a bit of time.  How to make it faster?
15928   in_id_list() takes much time for syntax highlighting.  Cache the result?
15937   setpcmark() shifts the jumplist, this takes quite a bit of time when
1594    jumping around.  Instead use an index for the start?
15958   When displaying a space with only foreground highlighting, it's the same
1596    as a space without attributes.  Avoid displaying spaces for the "~" lines
1597    when starting up in a color terminal.
15988   Avoid alloc() for scratch buffer use, esp. in syntax.c.  It's very slow on
1599    Win16.
16009   Setting GUI options in the console (e.g., 'guifont') should not cause a
1601    redraw.
16028   Profiling shows that in_id_list() is used very often for C code.  Can this
1603    function be improved?
16048   For an existing file, the page size of the swap file is always the
1605    default, instead of using the block size of the device, because the swap
1606    file is created only after setting the block size in mf_open().  How can
1607    this be improved?
16088   Set default for 'ttyscroll' to half a screen height?  Should speed up
1609    MS-DOS version. (Negri)
16107   C syntax highlighting gets a lot slower when adding a region for folding
1611    from { to }. (Charles Campbell)  Inserting a "{" is very slow. (dman)
16127   HTML syntax highlighting is slow for long lines.  Try displaying
1613    http://www.theregister.co.uk/content/4/22908.html. (Andre Pang)
16147   Check how performance of loading the wordlist can be improved (adding a
1615    lot of abbreviations).
16167   DOS console: Add t_DL support, to make scrolling faster.
16177   Compile Ex commands to byte codes.  Store byte codes in a vim script file
1618    at the end, after "compiled:.  Make it look like a single comment line
1619    for old Vim versions.  Insert first line "Vim script compiled <timestamp>.
1620    Only used compiled code when timestamp matches the file stat.
1621    Add command to compile a vim script and add it to the file in-place.
1622    Split Ex command executing into a parsing and executing phase.
1623    Use compiled code for functions, while loops, etc.
16248   When editing a file with extremely long lines (e.g., an executable), the
1625    "linerest" in readfile() is allocated twice to be able to copy what was
1626    read so far.  Use realloc() instead?  Or split the line when allocating
1627    memory fails and "linerest" is big (> 100000)?
16288   When defining autocommands (e.g., from $VIMRUNTIME/filetype.vim), need to
1629    compare each pattern with all existing patterns.  Use a hash code to avoid
1630    using strcmp() too often?
16317   Include turbo_loader patches, speeding up reading a file?
1632    Speed up reading a file by reading it into a fixed-size buffer, creating
1633    the list of indexes in another buffer, and then copying the result into a
1634    memfile block with two copies.  Then read the next block into another
1635    fixed-size buffer, create the second list of indexes and copy text from
1636    the two blocks to the memfile block.
16377   do_cmdline(): Avoid that the command line is copied to allocated memory
1638    and freed again later all the time.  For while loops, and for when called
1639    with an argument that can be messed with.
1640    Generic solution: Make a struct that contains a pointer and a flag that
1641    indicates if the pointer should be freed when replaced.
16427   Check that the file size is not more than "sizeof(long)".
1643-   Further improve finding mappings in maphash[] in vgetorpeek()
16448   Syntax highlighting is slow when deleting lines.  Try in
1645    $VIMRUNTIME/filetype.vim.
1646-   "out of memory" after deleting (1,$d) and changing (:%s/^/> /) a lot of
1647    lines (27000) a few times.  Memory fragmentation?
1648-   Have a look at how pdksh does memory allocation (alloc.c). (Dalecki)
1649-   Do profiling on:
1650    - :g/pat/normal cmd
1651    - 1000ii<Esc>
1652    - deleting 10Mbyte worth of lines (netscape binary)
1653    - "[i" and "[d" (Yegappan Lakshmanan)
1654    - ":g/^/m0" on a 450Kbyte file.  And the "u".
1655    - highlighting "~/vim/test/longline.tex", "~/vim/test/scwoop.tcl" and
1656      "~/vim/test/lockup.pl".
1657    - loading a syntax file to highlight all words not from a dictionary.
1658    - editing a vim script with syntax highlighting on (loading vim.vim).
16597   Screen updating can be further improved by only redrawing lines that were
1660    changed (and lines after them, when syntax highlighting was used, and it
1661    changed).
1662    - On each change, remember start and end of the change.
1663    - When inserting/deleting lines, remember begin, end, and line count.
1664-   Use macros/duarte/capicua for profiling.  Nvi 1.71 is the fastest!
1665-   When using a file with one long line (1Mbyte), then do "$hhhh", is still
1666    very slow.  Avoid calling getvcol() for each "h"?
1667-   Executing a register, e.g. "10000@@" is slow, because ins_typebuf has to
1668    move the previous commands forward each time.  Pass count from
1669    normal_cmd() down to do_execreg().
1670-   Repeating insert "1000i-<Esc>" displays --INSERT-- all the time, because of
1671    the <Esc> at the end.  Make this work faster (disable redrawing).
1672-   Avoid calls to plines() for cursor line, use w_cline_height.
1673-   After ":set nowrap" remove superfluous redraw with wrong hor. offset if
1674    cursor is right of the screen.
16758   Make CTRL-C on Unix generate a signal, avoid using select() to check for a
1676    CTRL-C (it's slow).
1677
1678
1679Code size:
16808   GUI: When NO_CONSOLE is defined, more code can be excluded.
1681-   Put getline() and cookie in a struct, so only one argument has to be
1682    passed to do_cmdline() and other functions.
16838   Make a GUI-only version for Unix?
16848   In buf_write _() isn't needed when setting errmsg, do it once when using
1685    it.
16867   When compiling with a GUI-only version, the code for cterm colors can be
1687    left out.
16888   When compiled with a GUI-only version, the termcap entries for terminals
1689    can be removed.
16908   Can the check for libelf in configure.in be removed?
1691
1692
1693Messages:
16948   When using ":q" in a changed file, the error says to "add !".  Add the
1695    command so that beginners understand it: "use :q!".
16968   For 'verbose' level 12 prints commands from source'ed files.  How to skip
1697    lines that aren't executed?  Perhaps move the echoing to do_cmdline()?
16988   Use 'report' for ":bdel"?  (Krishna)  To avoid these messages when using a
1699    script.
17008   "vim --version" output goes to stderr, should be stdout.  Can all output
1701    from messages using printf() go to stdout?
1702-   Delete message after new command has been entered and have waited for key.
1703    Perhaps after ten seconds?
1704-   Make message history available in "msg" variables: msg1, msg2, .. msg9.
17059   Check handling of overwriting of messages and delays:
1706    Very wrong: errors while redrawing cause endless loop.
1707    When switching to another file and screen scrolls because of the long
1708    message and return must be typed, don't scroll the screen back before
1709    redrawing.
17107   Add an option, which is a regexp, that disables warning messages which
1711    match that regexp (Tsirkin).
17128   When address range is wrong you only get "Invalid range".  Be a bit more
1713    specific: Negative, beyond last line, reverse range?  Include the text.
17148   Make it possible to ignore errors for a moment ('errorignore'?).  Another
1715    option to switch off giving error messages ('errorquiet'?).  Also an option
1716    not to give any messages ('quiet')?  Or ":quiet on", ":quiet off".
1717    Careful: For a severe error (out of memory), and when the user starts
1718    typing, error messages must be switched back on.
1719    Also a flag to ignore error messages for shell commands (for mappings).
1720-   Option to set time for emsg() sleep. Interrupt sleep when key is typed?
1721    sleep before second message?
17228   In Ex silent mode or when reading commands from a file, what exactly is
1723    not printed and what is?  Check ":print", ":set all", ":args", ":vers",
1724    etc.  At least there should be no prompt. (Smulders)  And don't clear the
1725    screen when reading commands from stdin. (Kendall)
1726    --> Make a difference between informative messages, prompts, etc. and
1727	error messages, printing text, etc.
17288   Window should be redrawn when resizing at the hit-enter prompt.
1729    Also at the ":tselect" prompt.  Find a generic solution for redrawing when
1730    a prompt is present (with a callback function?).
1731
1732
1733Screen updating:
17347   Add a string to the 'display' option to make CTRL-E and CTRL-Y scroll one
1735    screen line, also if this means the first line doesn't start with the
1736    first character (like what happens with a single line that doesn't fit).
1737-   screen_line():
1738    - insert/delete character stuff.
1739    - improve delete rest of line (spaces at end of line).
1740-   When moving or resizing window, try to avoid a complete redraw (esp. when
1741    dragging the status line with the mouse).
1742-   When 'lazyredraw' set, don't echo :ex commands?  Need a flag to redraw when
1743    waiting for a character.
17448   Add a ":refresh [winnr]" command, to force updating a window.  Useful from
1745    an event handler where ":normal" can't be used.  Also useful when
1746    'lazyredraw' is set in a mapping.
17477   Make 'list' and 'linebreak' work together.
1748
1749
1750Scrolling:
17518   Add "zm" command: scroll horizontally to put the cursor in the middle.
17526   Add option to set the overlap for CTRL-F and CTRL-B. (Garhi)
1753-   extend 'scrollbind' option: 'scrollopt' words "search", "relative", etc..
1754    Also 'e'xecute some commands (search, vertical movements) in all bound
1755    windows.
17567   Add 'scrollbind' feature to make the offset of one window with the next
1757    one equal to the window height.  When editing one file in both windows it
1758    looks like each window displays a page of the buffer.
1759-   Allow scrolling by dragging with the mouse (grab a character and move it
1760    up/down).  Like the "hand" in Acrobat reader.  Use Alt-LeftMouse for this?
1761    (Goldfarb)
1762-   Add command to execute some commands (search, vertical movements) in all
1763    bound windows.
1764-   Add 'search' option to 'scrollopt' to allow 'scrollbind' windows to
1765    be bound by regexp searches
1766-   Add "z>" and "z<": scroll sideways one screenful. (Campbell)
1767-   Add option to set the number of lines when not to scroll, instead of the
1768    fixed number used now (for terminals that scroll slow with a large number
1769    of lines but not with a single line).
1770
1771
1772Autoconf:
17738   Should use acconfig.h to define prototypes that are used by autoheader.
17748   Some compilers don't give an error for "-OPT:Olimit" but a warning. (Webb)
1775    Add a check for the warning, so that "Olimit" can be added automatically?
1776-   Autoconf: Use @datadir@ for the system independent files.  Make sure the
1777    system dependent and system independent files are separated. (Leitner).
1778-   Add autoconf check for waitpid()/wait4().
1779-   Remove fcntl() from autoconf, all systems have it?
1780-   Set default for 'dictionary', add search for dictionary to autoconf.
1781
1782
1783Perl interface:
17848   Rename typemap file to something else?
17857   Make buffers accessed as Perl arrays. (Clark)
17867   Make it possible to compile with non-ANSI C?
17876   Tcl/Tk has the "load" command: load a shared library (.so or .dll).
1788
1789
1790Shared libraries:
17916   Add support for loading shared libraries, and calling functions in it.
1792	:libload internal-name libname
1793	:libunload internal-name
1794	:liblist
1795	:libcall internal-name function(arg1, arg2, ...)
1796	:libcall function(arg1, arg2, ...)
1797    libcall() can have only one integer or String argument at the moment.
17986   Have a look on how Perl handles loading dynamic libraries.
1799
1800
1801Tags:
18028   Add a command to jump to a certain kind of tag.  Allow the user to specify
1803    values for the optional fields.  E.g., ":tag size type=m".
18048   Add a function that returns the line in the tags file for a matching tag.
1805    Can be used to extract more info (class name, inheritance, etc.) (Rico
1806    Hendriks)
18077   Count before CTRL-]: jump to N'th match
18088   Scope arguments for ":tag", e.g.: ":tag class:cPage open", like Elvis.
18098   When output of ":tselect" is long, getting the more-prompt, should be able
1810    to type the tag number directly.
18117   Add a tag-select window.  Works like ":cwindow".  (Michal Malecki)
18127   Add the possibility to use the "-t {tag}" argument multiple times.  Open a
1813    window for each tag.
18147   Make output of ":tselect" a bit nicer.  Use highlighting?
18157   Highlight the "tag 1 of >2" message.  New highlight group, or same as "hit
1816    bottom" search message.
18177   When using ":tag" at the top of the tag stack, should add another entry,
1818    so CTRL-T can bring you back to where you are now AND to where you were
1819    before the previous ":tag" command. (Webb)
18207   When using CTRL-] on someClass::someMethod, separate class from method and
1821    use ":ta class:someClass someMethod".
1822    Include C++ tags changes (Bertin).	Change "class::func" tag into "func"
1823    with "class=class"?  Docs in oldmail/bertin/in.xxx.
18247   Add ":tagargs", to set values for fields:
1825	:tagargs class:someclass file:version.c
1826	:tagargs clear
1827    These are then the default values (changes the order of priority in tag
1828    matching).
18297   Support for "gtags" and "global"?  With ":rtag" command?
1830    There is an example for how to do this in Nvi.
1831    Or do it like Elvis: 'tagprg' and 'tagprgonce' options. (Yamaguchi)
1832    The Elvis method is far more flexible, do it that way.
18337   Support "col:99" extra field, to position the cursor in that column.  With
1834    a flag in 'cpoptions' to switch it off again.
18357   Better support for jumping to where a function or variable is used.  Use
1836    the id-utils, with a connection to "gid" (Emacs can do it too).  Add
1837    ":idselect", which uses an "ID" database (made by "mkid") like "tselect".
1838
1839
1840Security:
1841-   nothing at the moment
1842
1843
1844Win32 GUI:
18458   Make debug mode work while starting up (vim -D).  Open console window for
1846    the message and input?
18477   The Python interface only works with one version of Python, selected at
1848    compile time.  Can this be made to work with version 2.1 and 2.2
1849    dynamically?
18507   GvimExt: when there are several existing Vims, move the list to a submenu.
1851    (Mike McCollister)
18528   When using "Edit with Vim" for one file it changes directory, when several
1853    files are selected and using "Edit with single Vim" the directory isn't
1854    changed.  At least change directory when the path is the same for all
1855    files.  Perhaps just use the path of the first file or use the longest
1856    common part of the path.
18578   Add font argument to set the lfCharSet. (Bobcik)
18588   Somehow automatically detect the system language and set $LANG, so that
1859    gettext and menus work.
18608   Could keep console open to run multiple commands, to avoid the need to hit
1861    return in every console.
1862    Also: Look at how Emacs does runs external commands:
1863	http://www.cs.washington.edu/homes/voelker/ntemacs.html.
18648   Need a separate PopUp menu for modeless selection.  Need two new commands:
1865    Copy selection to clipboard, Paste selection (as typed text).
18668   Support copy/paste for other file formats.  At least HTML, perhaps RTF.
1867    Add "copy special" and "paste special" commands?
18687   Use different default colors, to match the current Windows color scheme.
1869    Sys_WindowText, Sys_Window, etc. (Lionel Schaffhauser)
18707   Use <C-Tab> to cycle through open windows (e.g., the find dialog).
18717   <Esc> should close a dialog.
18727   Keep the console for external commands open.  Don't wait for a key to be
1873    hit.  Re-open it when the user has closed it anyway.  Or use a prepended
1874    command: ":nowait {cmd}", or ":quiet", which executes {cmd} without any
1875    prompts.
18767   Should be able to set an option so that when you double click a file that
1877    is associated with Vim, you can either get a new instance of Vim, or have
1878    the file added into an already running Vim.
18797   The "-P" argument only works for the current codepage.  Use wide
1880    functions to find the window title.
1881
1882
1883GUI:
18848   Make inputdialog() work for Photon, Amiga, RiscOS.
1885-   <C--> cannot be mapped.  Should be possible to recognize this as a
1886    normal "-" with the Ctrl modifier.
18877   Implement ":popup" for other systems than Windows.
18888   Implement ":tearoff" for other systems than Win32 GUI.
18896   Implement ":untearoff": hide a torn-off menu.
18908   When using the scrollbar to scroll, don't move the cursor position.  When
1891    moving the cursor: scroll to the cursor position.
18929   Make <S-Insert> paste from the clipboard by default. (Kunze)
18937   Menu local to a buffer, like mappings.  Or local to a filetype?
18948   In Buffers menu, add a choice whether selecting a buffer opens it in the
1895    current window, splits the window or uses ":hide".
18968   Dragging the mouse pointer outside of a Vim Window should make the text
1897    scroll.  Return a value from gui_send_mouse_event() to the machine
1898    specific code to indicate the time in which the event should be repeated.
18998   Make it possible to ignore a mouse click when it's used to give Vim (gvim)
1900    window focus.  Also when a mouse click is used to bring a window to front.
19018   Make the split into system independent code and system specific code more
1902    explicit.  There are too many #ifdefs in gui.c.
1903    If possible, separate the Vim code completely from the GUI code, to allow
1904    running them in separate processes.
19057   X11: Support cursorColor resource and "-cr" argument.
19068   X11 (and others): CTRL-; is not different from ';'.  Set the modifier mask
1907    to include CTRL for keys where CTRL produces the same ASCII code.
19087   Add some code to handle proportional fonts?  Need to draw each character
1909    separately (like xterm).  Also for when a double-width font is not exactly
1910    double-width. (Maeda)
19118   Should take font from xterm where gvim was started (if no other default).
19128   Selecting font names in X11 is difficult, make a script or something to
1913    select one.  Martin Dalecki has a font selector for Motif, but it needs a
1914    bit more work.
19158   Visual highlighting should keep the same font (bold, italic, etc.).
19168   Add flag to 'guioptions' to not put anything in the clipboard at all?
19178   Should support a way to use keys that we don't recognize yet.  Add a
1918    command that adds entries to special_keys somehow.	How do we make this
1919    portable (X11, Win32, ..)?
19207   Add a flag to 'guioptions' that tells not to remove inactive menu items.
1921    For systems where greying-out or removing menu items is very slow.  The
1922    menu items would remain visibly normally, but not do anything.
19237   Add ":minimize" and ":maximize", which iconize the window and back.
1924    Useful when using gvim to run a script (e.g. 2html.vim).
19257   X11: Is it possible to free allocated colors, so that other programs can
1926    use them again?  Otherwise, allow disabling allocating the default colors.
1927    Or allocate an own colormap (check UAE).  With an option to use it.  For
1928    the commandline, "-install" is mostly used for X11 programs.
19297   Add command line argument for "gvim" not to start the GUI.  Sort of the
1930    inverse of "vim -g". (Vikas)
19317   Should support multi-column menus.
1932-   Should add option for where to put the "Help" menu: like Motif at the far
1933    right, or with the other menus (but still at the right).
1934-   Add menu item to "Keep Insert mode".
19358   ":mkgvimrc" command, that includes menus.
19366   Big change: Move GUI to separate program "vimgui", to make startup of vim a
1937    lot faster, but still be able to do "vim -g" or ":gui".
19387   More explicit mouse button binding instead of 'mousemodel'?
19397   Add option to set the position of the window on the screen.  'windowpos',
1940    which has a value of "123,456": <x>,<y>.
1941    Or add a command, like ":winsize"?
19427   Add toolbar for more GUIs.
19438   Make it possible to use "amenu icon=BuiltIn##", so that the toolbar item
1944    name can be chosen free.
19457   Make it possible to put the toolbar on top, left, right and/or bottom of
1946    the window?  Allows for softkey-like use.
19476   Separate the part of Vim that does the editing from the part that runs the
1948    GUI.  Communicate through a pseudo-tty.  Vim starts up, creates a
1949    pty that is connected to the terminal.  When the GUI starts, the pty is
1950    reconnected to the GUI process.  When the GUI stops, it is connected to
1951    the terminal again.  Also use the pty for external processes, it looks
1952    like a vt100 terminal to them.  Vim uses extra commands to communicate GUI
1953    things.
19547   Motif: For a confirm() dialog <Enter> should be ignored when no default
1955    button selected, <Esc> should close the dialog.
1956-   Motif steals <F10> from us, to pop up menus with the keyboard.  How do we
1957    get it back if we want it?
1958-   Paste in Insert mode should not do autowrap etc.  Or maybe this should be
1959    changeable with an option?
1960-   Put a nice picture in the icon (but how do we do that?).
19617   When using a pseudo-tty Vim should behave like some terminal (vt52 looks
1962    simple enough). Terminal codes to/from shell should be translated.
1963-   Would it be useful to be able to quit the GUI and go back to the terminal
1964    where it was started from?
19657   Support "-visual <type>" command line argument.
1966
1967
1968VMS:
1969-   Improvement: rewrite term/TTY handling.
1970-   Improvement: create VMS GTK runtime libraries on OpenVMS 7.1-2 (today GTK
1971    works just on 7.3).
1972
1973
1974Autocommands:
19759   Make sure that side effects of autocommands are handled correctly.  Don't
1976    execute autocommands when a buffer or window is halfway some changes.
1977    Move all apply_autocmds() calls to a higher level where needed.
19788   Add ScriptReadCmd event: used to load remote Vim scripts, e.g.
1979    "vim -u http://mach/path/vimrc".
19808   Use another option than 'updatetime' for the CursorHold event.  The two
1981    things are unrelated for the user (but the implementation is more
1982    difficult).
19838   Also trigger CursorHold in Insert mode?
19847   Add autocommand event for when a buffer cannot be abandoned.  So that user
1985    can define the action taking (autowrite, dialog, fail) based on the kind
1986    of file. (Yakov Lerner)  Or is BufLeave sufficient?
19878   Can't use ":normal" in CursorHold autocommands.  Make the CursorHold event
1988    insert a special key code, and call the autocommand functions from a
1989    higher level, so that vgetc() isn't used recursively.
19908   Autocommands should not change registers.  And marks?  And the jumplist?
1991    And anything else?
19928   Autocommand for when modified files have been found, when getting input
1993    focus again (e.g., FileChangedFocus).
1994    Check when: getting focus, jumping to another buffer, ...
19958   Add autocommands, user functions and user commands to ":mkvimrc".
19968   Add "TagJumpFile" autocommand: When jumping to another file for a tag.
1997    Can be used to open "main.c.gz" when "main.c" isn't found.
19986   Add KeymapChanged event, so that the effects of a different keymap can be
1999    handled (e.g., other font) (Ron Aaron)
20007   Add a way to skip an autocommand if going from one *.c file to another *.c
2001    file.
20027   When trying to open a directory, don't load the file but trigger an
2003    autocommand event OpenDirectory.
20047   Add file type in front of file pattern: <d> for directory, <l> for link,
2005    <x> for executable, etc.  <&xxx> for Risc OS.  With commas to separate
2006    alternatives.  The autocommand is only executed when both the file type
2007    AND the file pattern match. (Leonard)
20085   Add option that specifies extensions which are to be discarded from the
2009    file name.  E.g. 'ausuffix', with ".gz,.orig".  Such that file.c.gz will
2010    trigger the "*.c" autocommands.  (Belabas)
20117   Add something to break the autocommands for the current event, and for
2012    what follows.  Useful for a "BufWritePre" that wants to avoid writing the
2013    file.
20148   When editing "tt.gz", which is in DOS format, 'fileformat' stays at
2015    "unix", thus writing the file changes it.  Somehow detect that the read
2016    command used dos fileformat.  Same for 'fileencoding'.
2017-   Add events to autocommands:
2018    Error	    - When an error happens
2019    NormalEnter	    - Entering Normal mode
2020    InsertEnter	    - Entering Insert mode
2021    ReplaceEnter    - Entering Replace mode
2022    CmdEnter	    - Entering Cmdline mode
2023    VisualEnter	    - Entering Visual mode
2024    *Leave	    - Leaving a mode (in pair with the above *Enter)
2025    VimLeaveCheck    - Before Vim decides to exit, so that it can be cancelled
2026		      when exiting isn't a good idea.
2027    CmdUndefined    - Like FuncUndefined but for user commands.
2028    SearchPost	    - After doing a search command (e.g. to do "M")
2029    PreDirChanged/PostDirChanged
2030		    - Before/after ":cd" has been used (for changing the
2031		      window title)
2032    BufReadAction   - replaces reading a file
2033    BufWriteAction  - replaces writing a file
2034    ShutDown	    - when the system is about to shut down
2035    InsertCharPre   - user typed character Insert mode, before inserting the
2036		      char.  Pattern is matched with text before the cursor.
2037		      Set v:char to the character, can be changed.
2038		      (not triggered when 'paste' is set).
2039    InsertCharPost  - user typed a character in Insert mode, after inserting
2040		      the char.
2041    BufModified	    - When a buffer becomes modified, or unmodified (for
2042		      putting a [+] in the window title or checking out the
2043		      file from CVS).
2044    BufFirstChange  - When making a change, when 'modified' is set.  Can be
2045		      used to do a :preserve for remote files.
2046    BufChange	    - after a change was made.  Set some variables to indicate
2047		      the position and number of inserted/deleted lines, so
2048		      that marks can be updated.  HierAssist has patch to add
2049		      BufChangePre, BufChangePost and RevertBuf. (Shah)
2050    WinResized	    - When a window has been resized
2051-   Add autocommand to be executed every so many seconds?  For writing the
2052    file now and then ('autosave').
2053				  *'autosave'* *'as'* *'noautosave'* *'noas'*
2054    'autosave' 'aw' number  (default 0)
2055	    Automatically write the current buffer to file N seconds after the
2056	    last change has been made and when |'modified'| is still set.
2057	    Default: 0 = do not autosave the buffer.
2058    Alternative: have 'autosave' use 'updatetime' and 'updatecount' but make
2059    them save the file itself besides the swapfile.
2060
2061
2062Insert mode completion/expansion:
20638   When there is no word before the cursor but something like "sys." complete
2064    with "sys.".  Works well for C and similar languages.
20659   ^X^L completion doesn't repeat correctly.  It uses the first match with
2066    the last added line, instead of continuing where the last match ended.
2067    (Webb)
20688   The code has become too complex.  Redesign it, or at least add proper
2069    comments.
20708   Add option to set different behavior for Insert mode completion:
2071    - ignore/match case
2072    - different characters than 'iskeyword'
20738   Add a command to undo the completion, go back to the original text.
20748   Use the class information in the tags file to do context-sensitive
2075    completion.  After "foo." complete all member functions/variables of
2076    "foo".  Need to search backwards for the class definition of foo.
2077    Should work for C++ and Java.
2078    Even more context would be nice: "import java.^N" -> "io", "lang", etc.
20797   When expanding $HOME/dir with ^X^F keep the $HOME (with an option?).
20807   Add CTRL-X command in Insert mode like CTRL-X CTRL-N, that completes WORDS
2081    instead of words.
20828   Add CTRL-X CTRL-R: complete words from register contents.
20838   Add completion of previously inserted texts (like what CTRL-A does).
2084    Requires remembering a number of insertions.
20858   Add 'f' flag to 'complete': Expand file names.
2086    Also apply 'complete' to whole line completion.
2087-   Make it possible to search include files in several places.  Use the
2088    'path' option?  Can this be done with the dictionary completion (use
2089    wildcards in the file name)?
2090-   Make CTRL-X CTRL-K do a binary search in the dictionary (if it's sorted).
2091-   Speed up CTRL-X CTRL-K dictionary searching (don't use a regexp?).
2092-   Set a mark at the position where the match was found (file mark, could
2093    be in another file).
2094-   Add CTRL-A command in CTRL-X mode: show all matches.
2095-   Make CTRL-X CTRL-L use the 'complete' option?
2096-   Add command in CTRL-X mode to add following words to the completed string
2097    (e.g. to complete "Pointer->element" with CTRL-X CTRL-P CTRL-W CTRL-W)
2098-   CTRL-X CTRL-F: Use 'path' to find completions.
2099-   CTRL-X CTRL-F: Option to use forward slashes on MS-Windows?
2100-   CTRL-X CTRL-F: Don't replace "$VIM" with the actual value. (Kelly)
21018   Add option 'isexpand', containing characters when doing expansion (so that
2102    "." and "\" can be included, without changing 'iskeyword'). (Goldfarb)
2103    Also: 'istagword': characters used for CTRL-].
2104    When 'isexpand' or 'istagword' are empty, use 'iskeyword'.
2105-   Allow listing all matches in some way (and picking one from the list).
2106
2107
2108Command line editing:
21097   Add commands (keys) to delete from the cursor to the end of the command
2110    line.
21118   Custom completion of user commands can't use the standard completion
2112    functions.  Add a hook to invoke a user function that returns the type of
2113    completion to be done: "file", "tag", "custom", etc.
2114-   Add flags to 'whichwrap' for command line editing (cursor right at end of
2115    lines wraps to start of line).
2116-   Make editing the command line work like Insert mode in a single-line view
2117    on a buffer that contains the command line history.  But this has many
2118    disadvantages, only implement it when these can be solved.  Elvis has run
2119    into these, see remarks from Steve (~/Mail/oldmail/kirkendall/in.00012).
2120    - Going back in history and editing a line there would change the history.
2121      Would still need to keep a copy of the history elsewhere.  Like the
2122      cmdwin does now already.
2123    - Use CTRL-O to execute one Normal mode command.  How to switch to normal
2124      mode for more commands?  <Esc> should cancel the command line.  CTRL-T?
2125    - To allow "/" and "= need to recursively call getcmdline(), overwrite the
2126      cmdline.  But then we are editing a command-line again.  How to avoid
2127      that the user gets confused by the stack of command lines?
2128    - Use edit() for normal cmdline editing?  Would have to integrate
2129      getcmdline() into edit().  Need to solve conflicts between Insert mode
2130      and Command-line mode commands.  Make it work like Korn shell and tcsh.
2131      Problems:
2132	- Insert: completion with 'wildchar'
2133	- Insert: use cmdline abbreviations
2134	- Insert: CTRL-D deletes indent instead of listing matches
2135	- Normal: no CTRL-W commands
2136	- Normal: no ":" commands?
2137	- Normal: allow Visual mode only within one line.
2138    - where to show insert/normal mode message?  Change highlighting of
2139      character in first column?
2140    - Implementation ideas:
2141      - Set "curwin" and "curbuf" to the command line window and buffer.
2142      - curwin->w_topline is always equal to curwin->w_cursor.lnum.
2143      - never set 'number', no folding, etc.  No status line.
2144      - sync undo after entering a command line?
2145      - use NV_NOCL flag for commands that are not allowed in Command-line
2146	Mode.
2147
2148
2149Command line completion:
21508   Change expand_interactively into a flag that is passed as an argument.
21518   With command line completion after '%' and '#', expand current/alternate
2152    file name, so it can be edited.  Also with modifiers, such as "%:h".
21538   When completing command names, either sort them on the long name, or list
2154    them with the optional part inside [].
21557   Completion of ":map x ": fill in the current mapping, so that it can be
2156    edited. (Sven Guckes)
21577   Add completion for when entering an expression after CTRL-R= and "=.
2158    (Servatius Brandt)
2159-   For 'wildmenu': Simplify "../bar" when possible.
2160-   When using <Up> in wildmenu mode for a submenu, should go back to the
2161    current menu, not the first one.  E.g., ":emenu File.Save<Up>".
21628   For ":find" and ":sfind" expand files found in 'path'.
21638   Add cmdline completion for the ":debug" command.
21648   When using backtick expansion, the external command may write a greeting
2165    message.  Add an option or commands to remove lines that match a regexp?
21667   When listing matches of files, display the common path separately from the
2167    file names, if this makes the listing shorter. (Webb)
2168-   Add command line completion for ":ilist" and friends, show matching
2169    identifiers (Webb).
21708   Add command line completion for "old value" of a command.  ":args <key>"
2171    would result in the current list of arguments, which you can then edit.
21727   Add command line completion with CTRL-X, just like Insert mode completion.
2173    Useful for ":s/word/xx/".
2174-   Add command to go back to the text as it was before completion started.
2175    Also to be used for <Up> in the command line.
2176-   Add 'wildlongest' option: Key to use to find longest common match for
2177    command line completion (default CTRL-L), like 'wildchar'. (Cregut)
2178    Also: when there are several matches, show them line a CTRL-D.
2179-   Add completion for Environment variables: ":echo $SH<Tab>" -> "$SHELL".
2180
2181
2182Command line history:
2183-   Add "KeyWasTyped" flag: It's reset before each command and set when a
2184    character from the keyboard is consumed. Value is used to decide to put a
2185    command line in history or not. Put line in history if it didn't
2186    completely resulted from one mapping.
2187-   When using ":browse", also put the resulting edit command in the history,
2188    so that it can be repeated. (Demirel)
2189
2190
2191Insert mode:
21929   When 'autoindent' is set, hitting <CR> twice, while there is text after
2193    the cursor, doesn't delete the autoindent in the resulting blank line.
2194    (Rich Wales) This is Vi compatible, but it looks like a bug.
21958   When using CTRL-O in Insert mode, then executing an insert command
2196    "a" or "i", should we return to Insert mode after <Esc>? (Eggink)
2197    Perhaps it can be allowed a single time, to be able to do
2198    "<C-O>10axyz<Esc>".  Nesting this further is confusing.
2199    ":map <F2> 5aabc<Esc>" works only once from Insert mode.
22007   Use CTRL-G <count> to repeat what follows.  Useful for inserting a
2201    character multiple times or repeating CTRL-Y.
22027   Use 'matchpairs' for 'showmatch': When inserting a character check if it
2203    appears in the rhs of 'matchpairs'.
2204-   In Insert mode (and command line editing?): Allow undo of the last typed
2205    character.	This is useful for CTRL-U, CTRL-W, delete and backspace, and
2206    also for characters that wrap to the next line.
2207    Also: be able to undo CTRL-R (insert register).
2208    Possibly use 'backspace'="whole" for a mode where at least a <CR> that
2209    inserts autoindent is undone by a single <BS>.
2210-   Use CTRL-G in Insert mode for an extra range of commands, like "g" in
2211    Normal mode.
2212-   Make 'paste' work without resetting other options, but override their
2213    value.  Avoids problems when changing files and modelines or autocommands
2214    are used.
2215-   When typing CTRL-V and a digit higher than 2, only expect two digits.
2216-   Insert binary numbers with CTRL-V b.
2217-   Make it possible to undo <BS>, <C-W> and <C-U>.  Bash uses CTRL-Y.
2218
2219
2220'cindent', 'smartindent':
22218   Wrong indent for ":" after a method with line break in arguments:
2222	Foo::Foo (int one,
2223		    int two)
2224	: something(4)
2225	{}
22268   Wrong indent for ":" after a method with multiple lines:
2227	Foo::Foo (int one, int two)
2228		: something(4),
2229	somethingelse(3)
2230	{}
22319   Too much indent for "lulu": (Uwe Zeisberger)
2232       int main ()
2233       {
2234	 if (lala)
2235	   do
2236	     ++(*lolo);
2237	   while (lili
2238		  && lele);
2239	   lulu;
2240       }
22419   Function gets extra indent: (Jamax)
2242	void function(int param) {
2243	     if (false)
2244		 return;
2245	}
22469   brace not indented correctly:
2247	case 'c':   if (cond)
2248			{
2249    Should align with "if" in case statement.
22507   Allow aligning a closing ")" with the line above, instead of the matching
2251    "(": (Riehm) if (asdfasdf &&
2252			asdf
2253			)
22548   Java: Inside an anonymous class, after an "else" or "try" the indent is
2255    too small. (Vincent Bergbauer)
22568   In C++ it's possible to have {} inside (): (Kirshna)
2257		func(
2258			new String[] {
2259			    "asdf",
2260			    "asdf"
2261			}
2262		    );
22637   Separate "(0" option into inside/outside a function (Zellner):
2264	func(
2265	   int x)	// indent like "(4"
2266	{
2267	   if (a
2268	       && b)	// indent like "(0"
22698   Strange problem with this code, "hello" is indented wrong: (Gary Holloway)
2270    main() { char	foo[] = "/*";
2271	 /* This is a comment; the indentation of C
2272	  * source below this comment gets messed up due to the string above.
2273	  */
2274	  hello
22759   Using "{" in a comment: (Helmut Stiegler)
2276    if (a)
2277    {
2278	    if (b)
2279	    {
2280		    // {
2281	    }
2282	    } <-- this is indented incorrect
22839   Wrong indent for cino=(4, removing the (void) fixes it: (Zellner)
2284	(void) MyFancyFunction(
2285			       argument);
2286-   Make smartindenting configurable. Add 'sioptions', e.g. '#' setting the
2287    indent to 0 should be switched on/off.
22887   Support ANSI style function header, with each argument on its own line.
2289-   "[p" and "]p" should use 'cindent' code if it's on (only for the first
2290    line).
2291-   Add option to 'cindent' to set indent for comments outside of {}?
2292-   Make a command to line up a comment after a code line with a previous
2293    comment after a code line.	Can 'cindent' do this automatically?
22947   Add 'j' flag to 'formatoptions': Remove comment leader when joining lines.
2295-   When 'cindent'ing a '}', showmatch is done before fixing the indent.  It
2296    looks better when the indent is fixed before the showmatch. (Webb)
2297-   Add option to make indenting work in comments too (for commented-out
2298    code), unless the line starts with "*".
2299-   Don't use 'cindent' when doing formatting with "gq"?
2300-   When formatting a comment after some text, insert the '*' for the new line
2301    (indent is correct if 'cindent' is set, but '*' doesn't get inserted).
23028   When 'comments' has both "s1:/*,mb:*,ex:*/" and "s1:(*,mb:*,ex:*)", the
2303    'x' flag always uses the first match.  Need to continue looking for more
2304    matches of "*" and remember all characters that could end the comment.
2305-   For smartindent: When typing 'else' line it up with matching 'if'.
2306-   'smartindent': allow patterns in 'cinwords', for e.g. TeX files, where
2307    lines start with "\item".
2308-   Support this style of comments (with an option): (Brown)
2309	/* here is a comment that
2310	is just autoindented, and
2311	nothing else */
2312-   Add words to 'cinwords' to reduce the indent, e.g., "end" or "fi".
23137   Use Tabs for the indent of starting lines, pad with spaces for
2314    continuation lines.  Allows changing 'tabstop' without messing up the
2315    indents.
2316    And/or: Add option to copy indent as-is, without changing spaces to tabs.
2317    also for 'autoindent'.  'keeptabs': when set don't change the tabs and
2318    spaces used for indent, when the indent remains the same or increases.
2319
2320
2321Java:
23228   Can have {} constructs inside parens.  Include changes from Steve
2323    Odendahl?
23248   Recognize "import java.util.Vector" and use $CLASSPATH to find files for
2325    "[i" commands and friends.
2326-   For files found with 'include': handle "*" in included name, for Java.
2327    (Jason)
2328-   How to make a "package java.util" cause all classes in the package to be
2329    searched?  Also for "import java.util.*". (Mark Brophy)
2330
2331
2332'comments':
23338   When formatting C comments that are after code, the "*" isn't repeated
2334    like it's done when there is no code.  And there is no automatic wrapping.
2335    Recognize comments that come after code.  Should insert the comment leader
2336    when it's "#" or "//".
23377   When using "comments=fg:--", Vim inserts three spaces for a new line.
2338    When hitting a TAB, these spaces could be removed.
23397   The 'n'esting flag doesn't do the indenting of the last (rightmost) item.
23406   Make strings in 'comments' option a RE, to be able to match more
2341    complicated things. (Phillipps)  Use a special flag to indicate that a
2342    regexp is used.
23438   Make the 'comments' option with "/* * */" lines only repeat the "*" line
2344    when there is a "/*" before it?  Or include this in 'cindent'?
2345
2346
2347Virtual edit:
23488   Make the horizontal scrollbar work to move the text further left.
23497   Add a mode where the cursor is only allowed to go one character after the
2350    end of the line?
23517   Allow specifying it separately for Tabs and beyond end-of-line?
2352
2353
2354Text objects:
23558   Add test script for text object commands "aw", "iW", etc.
23567   Add text object for current search pattern: "a/" and "i/".  Makes it
2357    possible to turn text highlighted for 'hlsearch' into a Visual area.
23588   Add "gp" and "gP" commands: insert text and make sure there is a single
2359    space before it, unless at the start of the line, and after it, unless at
2360    the end of the line or before a ".".
23617   Add objects with backwards extension?  Use "I" and "A".  Thus "2dAs"
2362    deletes the current and previous sentence. (Jens Paulus)
23637   Add "g{" and "g}" to move to the first/last character of a paragraph
2364    (instead of the line just before/after a paragraph as with "{" and "}").
23656   Ignore comment leaders for objects.  Make "das" work in reply-email.
23665   Make it possible to use syntax group matches as a text object.  For
2367    example, define a "ccItem" group, then do "da<ccItem>" to delete one.
2368    Or, maybe just define "dai", delete-an-item, to delete the syntax item the
2369    cursor is on.
2370
2371
2372Select mode:
23738   In blockwise mode, typed characters are inserted in front of the block,
2374    backspace deletes a column before the block. (Steve Hall)
23757   Alt-leftmouse starts block mode selection in MS Word.
2376    See http://www.vim.org/tips/tip.php?tip_id=743
23777   Add Cmdline-select mode.  Like Select mode, but used on the command line.
2378    - Change gui_send_mouse_event() to pass on mouse events when 'mouse'
2379      contains 'C' or 'A'.
2380    - Catch mouse events in ex_getln.c.  Also shift-cursor, etc., like in
2381      normal_cmd().
2382    - remember start and end of selection in cmdline_info.
2383    - Typing text replaces the selection.
2384
2385
2386Visual mode:
2387-   When dragging the Visual selection with the mouse and 'scrolloff' is zero,
2388    behave like 'scrolloff' is one, so that the text scrolls when the pointer
2389    is in the top line.
23908   When using "I" or "A" in Visual block mode, short lines do not get the new
2391    text.  make it possible to add the text to short lines too, with padding
2392    where needed.
23937   With a Visual block selected, "2x" deletes a block of double the width,
2394    "3y" yanks a block of triple width, etc.
23957   When selecting linewise, using "itext" should insert "text" at the start
2396    of each selected line.
23978   What is "R" supposed to do in Visual mode?
23988   Make Visual mode local to the buffer.  Allow changing to another buffer.
2399    When starting a new Visual selection, remove the Visual selection in any
2400    other buffer. (Ron Aaron)
24018   Support dragging the Visual area to drop it somewhere else. (Ron Aaron,
2402    Ben Godfrey)
24037   Support dragging the Visual area to drop it in another program, and
2404    receive dropped text from another program. (Ben Godfrey)
24057   With blockwise Visual mode and "c", "C", "I", "A", etc., allow the use of
2406    a <CR>.  The entered lines are repeated over the Visual area.
24077   CTRL-V :s should substitute only in the block, not to whole lines. (David
2408    Young is working on this)
24097   Filtering a block should only apply to the block, not to the whole lines.
2410    When the number of lines is increased, add lines. When decreased, pad with
2411    spaces or delete? Use ":`<,`>" on the command line.
24128   After filtering the Visual area, make "gv" select the filtered text?
2413    Currently "gv" only selects a single line, not useful.
24147   Don't move the cursor when scrolling?  Needed when the selection should
2415    stay the same.  Scroll to the cursor at any movement command.  With an
2416    option!
24177   In Visual block mode, need to be able to define a corner on a position
2418    that doesn't have text?  Also: when using the mouse, be able to select
2419    part of a TAB.  Even more: Add a mode where the cursor can be on a screen
2420    position where there is no text.  When typing, add spaces to fill the gap.
2421    Other solution: Always use curswant, so that you can move the cursor to
2422    the right column, and then use up/down movements to select the line,
2423    without changing the column.
24246   ":left" and ":right" should work in Visual block mode.
24257   CTRL-I and CTRL-O should work in Visual mode, but only jump to marks in the
2426    current buffer.
24277   CTRL-A and CTRL-X should increase/decrease all numbers in the Visual area.
24286   In non-Block mode, "I" should insert the same text in front of each line,
2429    before the first non-blank, "gI" in column 1.
24306   In non-Block mode, "A" should append the same text after each line.
24316   ":'<,'>source" should read the selected lines and ":source" them.
24326   When in blockwise visual selection (CTRL-V), allow cursor to be placed
2433    right of the line. Could also allow cursor to be placed anywhere on a TAB
2434    or other special character.
24356   Add commands to move selected text, without deselecting.
2436
2437
2438More advanced repeating commands:
2439-   Add "." command for visual mode: redo last visual command (e.g. ":fmt").
24407   Repeating "d:{cmd}" with "." doesn't work. (Benji Fisher) Somehow remember
2441    the command line so that it can be repeated?
2442-   Add "." command after operator: repeat last command of same operator. E.g.
2443    "c." will repeat last change, also when "x" used since then (Webb).
2444    "y." will repeat last yank.
2445    "c2." will repeat the last but one change?
2446    Also: keep history of Normal mode commands, add command to list the history
2447    and/or pick an older command.
2448-   History stack for . command?  Use "g." command.
2449
2450
2451Mappings and Abbreviations:
24528   Let ":verbose map xx" report where the mapping was set, just like with
2453    ":verbose set".
24548   When "0" is mapped (it is a movement command) this mapping should not be
2455    used after typing another number, e.g. "20l". (Charles Campbell)
2456    Is this possible without disabling the mapping of the following command?
24578   Should mapping <C-A> and <C-S-A> both work?
24587   ":abbr b byte", append "b " to an existing word still expands to "byte".
2459    This is Vi compatible, but can we avoid it anyway?
24608   ":verbose map" could show the script where the mapping was defined.
2461    m_script_ID can be used.
24628   To make a mapping work with a prepended "x to select a register, store the
2463    last _typed_ register name and access it with "&.
24648   Add ":amap", like ":amenu".
24658   Add ":cab!", abbreviations that only apply to Command-line mode and not to
2466    entering search strings.
24678   Add a flag to ":abbrev" to eat the character that triggers the
2468    abbreviation.  Thus "abb ab xxx" and typing "ab<Space>" inserts "xxx" and
2469    not the <Space>.
24708   Allow mapping of CTRL-@ (anywhere in the LHS).
24718   Give a warning when using CTRL-C in the lhs of a mapping.  It will never
2472    (?) work.
24737   ":verbose map" should display where a mapping was defined, like ":verbose
2474    set".
24758   Add a way to save a current mapping and restore it later.  Use a function
2476    that returns the mapping command to restore it: mapcmd()?  mapcheck() is
2477    not fool proof.  How to handle ambiguous mappings?
24787   Add <0x8f> (hex), <033> (octal) and <123> (decimal) to <> notation?
24797   Allow mapping "Q" and "Q}" at the same time.  Need to put a flag with "Q",
2480    that it needs an extra character before it can match. See Vile 'maplonger'
2481    option.
24827   When someone tries to unmap with a trailing space, and it fails, try
2483    unmapping without the trailing space.  Helps for ":unmap xx | unmap yy".
24847   Make it possible to map 'wildchar', but only when it's a special character
2485    (like CTRL-E).  Currently it's only recognized when typed.  Useful for
2486    mapping a key to do something and then completion.
24877   Add a mapping that works always, for remapping the keyboard.
24886   Context-sensitive abbreviations: Specify syntax group(s) in which the
2489    abbreviations are to be used.
2490-   Add mappings that take arguments.  Could work like the ":s" command.  For
2491    example, for a mouse escape sequence:
2492	:mapexp  <Esc>{\([0-9]*\),\([0-9]*\);	H\1j\2l
2493-   Make it possible to include a <Nul> in the lhs and rhs of a mapping.
2494-   Add command to repeat a whole mapping ("." only repeats the last change in
2495    a mapping).  Also: Repeat a whole insert command, including any mappings
2496    that it included.  Sort-of automatic recording?
2497-   Make it possible to undo all the commands from a mapping, including a
2498    trailing unfinished command, e.g. for ":map K iX^[r".
2499-   Add an option to ":map" that makes it display the special keys in
2500    <> notation (e.g. <CR> instead of ^M).  Or just always do this?
2501-   Include an option (or flag to 'cpoptions') that makes errors in mappings
2502    not flush the rest of the mapping (like nvi does).
2503-   Use context sensitiveness of completion to switch abbreviations and
2504    mappings off for :unab and :unmap.
25056   When using mappings in Insert mode, insert characters for incomplete
2506    mappings first, then remove them again when a mapping matches.  Avoids
2507    that characters that are the start of some mapping are not shown until you
2508    hit another character.
2509-   Add optional <Number> argument for mappings:
2510    :map <Number>q	     ^W^W<Number>G
2511    :map <Number>q<Number>t  ^W^W<Number1-1>G<Number2>l
2512    :map q<Char>	    :s/<Char>/\u\0/g
2513    Or implicit:
2514    :map q			<Register>d<Number>$
2515-   Add mappings for replace mode: ":rmap".  How do we then enter mappings for
2516    non-replace Insert mode?
2517-   Add separate mappings for Visual-character/block/line mode?
25186   Alias for Normal mode commands, works like :substitute?  Would allow
2519    mappings with arguments.
2520-   Add 'mapstop' command, to stop recursive mappings.
2521-   List mappings that have a raw escape sequence both with the name of the key
2522    for that escape sequence (if there is one) and the sequence itself.
2523-   List mappings: Once with special keys listed as <>, once with meta chars as
2524    <M-a>, once with the byte values (octal?). Sort of "spell mapping" command?
2525-   When entering mappings: Add the possibility to enter meta keys like they
2526    are displayed, within <>: <M-a>, <~@> or <|a>.
2527-   Allow multiple arguments to :unmap.
2528-   Command to show keys that are not used and available for mapping
2529    ":freekeys".
2530-   Allow any character except white space in abbreviations lhs (Riehm).
2531
2532
2533Incsearch:
2534-   Add a limit to the number of lines that are searched for 'incsearch'?
2535-   When no match is found and the user types more, the screen is redrawn
2536    anyway.  Could skip that.  Esp. if the line wraps and the text is scrolled
2537    up every time.
2538-   Temporarily open folds to show where the search ends up.  Restore the
2539    folds when going to another line.
2540-   When incsearch used and hitting return, no need to search again in many
2541    cases, saves a lot of time in big files. (Slootman wants to work on this?)
2542    When not using special characters, can continue search from the last match
2543    (or not at all, when there was no match).  See oldmail/webb/in.872.
2544-   With incsearch, use CTRL-N/CTRL-P to go to next/previous match, some other
2545    key to copy matched word to search pattern (Alexander Schmid).
2546
2547
2548Searching:
25498   Add a mechanism for recursiveness: "\(([^()]*\@@[^()]*)\)\@r".  \@@ stands
2550    for "go recursive here" and \@r marks the recursive atom.
2551item stack to allow matching ().  One side is "push X on
2552    the stack if previous atom matched".  Other side is "match with top of
2553    stack, pop it when it matches".  Use "\@pX" and "\@m"?
2554	Example: \((\@p).\{-}\@m\)*
25557   Add an option to accept a match at the cursor position.  Also for
2556    search(). (Brett)
25577   Add pattern item to use properties of Unicode characters.  In Perl it's
2558    "\p{L}" for a letter.  See Regular Expression Pocket Reference.
25598   Would it be possible to allow ":23,45/pat/flags" to search for "pat" in
2560    lines 23 to 45?  Or does this conflict with Ex range syntax?
25618   Allow identical pairs in 'matchpairs'.  Restrict the search to the current
2562    line.
25637   Allow longer pairs in 'matchpairs'.  Use ~/vim/macros/matchit.vim as an
2564    example.
25658   Make it possible to define the character that "%" checks for in
2566    #if/#endif.  For nmake it's !if/!endif.
2567-   For "%" command: set hierarchy for which things include other things that
2568    should be ignored (like "*/" or "#endif" inside /* */).
2569    Also: use "%" to jump from start to end of syntax region and back.
2570    Alternative: use matchit.vim
25718   "/:/e+1" gets stuck on a match at the end of the line.  Do we care?
25728   A pattern like "\([^a]\+\)\+" takes an awful long time.  Recognize that
2573    the recursive "\+" is meaningless and optimize for it.
2574    This one is also very slow on "/* some comment */": "^\/\*\(.*[^/]\)*$".
25757   Recognize "[a-z]", "[0-9]", etc. and replace them with the faster "\l" and
2576    "\d".
25777   Add a way to specify characters as hex, octal or <C-M> form.  Could be
2578    \%1ax, \%200o and \%<C-M>.  Also \%1234u for multi-byte chars.
25798   Flags that apply to the whole pattern.
2580    This works for all places where a regexp is used.
2581    Add "\q" to not store this pattern as the last search pattern?
25828   Add an argument after ":s/pat/str/" for a range of matches.  For example,
2583    ":s/pat/str/#3-4" to replace only the third and fourth "pat" in a line.
25848   Add an option not to use 'hlsearch' highlighting for ":s" and ":g"
2585    commands. (Kahn)  It would work like ":noh" is used after that command.
2586    Also: An extra flag to do this once, and a flag to keep the existing
2587    search pattern.
2588-   Add \%h{group-name}; to search for a specific highlight group.
2589    Add \%s{syntax-group}; to search for a specific syntax group.
2590-   Support Perl regexp.  Use PCRE (Perl Compatible RE) package. (Shade)
2591    Or translate the pattern to a Vim one.
2592    Don't switch on with an option for typed commands/mappings/functions, it's
2593    too confusing.  Use "\@@" in the pattern, to avoid incompatibilities.
25947   Add POSIX regexp, like Nvi, with 'extended' option?  It's like very-magic.
2595-   Remember flags for backreferenced items, so that "*" can be used after it.
2596    Check with "\(\S\)\1\{3}". (Hemmerling)
2597-   Add flags to search command (also for ":s"?):
2598    i	ignore case
2599    I	use case
2600    p	use Perl regexp syntax (or POSIX?)
2601    v	use Vi regexp syntax
2602    f	forget pattern, don't keep it for "n" command
2603    F   remember pattern, keep it for "n" command
2604    Perl uses these too:
2605    e	evaluate the right side as an expression (Perl only)
2606    m	multiple line expression (we don't need it)
2607    o	compile only once (Perl only)
2608    s	single line expression (we don't need it)
2609    x	extended regexp (we don't need it)
2610    When used after ":g" command, backslash needed to avoid confusion with the
2611    following command.
2612    Add 'searchflags' for default flags (replaces 'gdefault').
2613-   Add command to display the last used substitute pattern and last used
2614    pattern. (Margo)  Maybe make it accessible through a register (like "/
2615    for search string)?
26167   Use T-search algorithm, to speed up searching for strings without special
2617    characters.  See C't article, August 1997.
2618-   Add 'fuzzycase' option, so that case doesn't matter, and '-' and '_' are
2619    equivalent (for Unix filenames).
2620-   Add 'v' flag to search command: enter Visual mode, with the matching text
2621    as Visual area. (variation on idea from Bertin)
2622-   Searching: "/this//that/" should find "that" after "this".
2623-   Add global search commands: Instead of wrapping at the end of the buffer,
2624    they continue in another buffer. Use flag after search pattern:
2625    a	for the next file in the argument list
2626    f	for file in the buffer list
2627    w	for file edited in a window.
2628    e.g. "/pat/f". Then "n" and "N" work through files too. "f" flag also for
2629    ":s/pat/foo/f"??? Then when 'autowrite' and 'hidden' are both not set, ask
2630    before saving files: "Save modified buffer "/path/file"? (Yes/Hide/No
2631    Save-all/hide-All/Quit) ".
2632-   ":s/pat/foo/3": find 3rd match of "pat", like sed. (Thomas Koehler)
2633-   Special characters in patterns:
2634    Inside []:
2635    \012  octal character
2636    \0x1a hex character
2637    \0<BS> \0<Esc>: special character
26387   When searching with 'n' give message when getting back where the search
2639    first started. Remember start of search in '/ mark.
26407   Add option that scrolls screen to put cursor in middle of screen after
2641    search always/when off-screen/never.  And after a ":tag" command.  Maybe
2642    specify how many lines below the screen causes a redraw with the cursor in
2643    the middle (default would be half a screen, zero means always).
26446   Support multiple search buffers, so macros can be made without side
2645    effects.
26467   From xvim: Allow a newline in search patterns (also for :s, can delete
2647    newline).  Add BOW, EOW, NEWL, NLORANY, NLBUTANY, magic 'n' and 'r', etc.
2648    [not in xvim:] Add option to switch on matches crossing ONE line boundary.
26497   Add ":iselect", a combination of ":ilist" and ":tselect". (Aaron)
2650    Also ":dselect".
2651
2652
2653Undo:
2654-   When accidentally hitting "R" instead of Ctrl-R, further Ctrl-R is not
2655    possible, even when typing <Esc> immediately. (Grahn)  Also for "i", "a",
2656    etc.  Postpone saving for undo until something is really inserted?
26578   When Inserting a lot of text, it can only be undone as a whole.  Make undo
2658    sync points at every line or word.  Could recognize the start of a new
2659    word (white space and then non-white space) and backspacing.
2660    Can already use CTRL-G u, but that requires remapping a lot of things.
26618   Make undo more memory-efficient: Compare text before and after change,
2662    only remember the lines that really changed.
26637   Add undo for a range of lines.  Can change these back to a previous
2664    version without changing the rest of the file.  Stop doing this when a
2665    change includes only some of these lines and changes the line count.  Need
2666    to store these undo actions as a separate change that can be undone.
26677   Add an undo tree: When making a change, instead of clearing any future
2668    undo (thus redo) info, make a new branch.  How to navigate through the
2669    undo tree?
2670-   For u_save() include the column number. This can be used to set '[ and '].
2671    And in the future the undo can be made more efficient (Webb).
2672-   In out-of-memory situations: Free allocated space in undo, and reduce the
2673    number of undo levels (with confirmation).
2674-   Instead of [+], give the number of changes since the last write: [+123].
2675    When undoing to before the last write, change this to a negative number:
2676    [-99].
2677-   With undo with simple line delete/insert: optimize screen updating.
2678-   When executing macro's: Save each line for undo only once.
2679-   Store undo info in a file that survives until the next edit.  Then it's
2680    possible to undo to before the current editing session.  Combined with
2681    viminfo?
2682-   When doing a global substitute, causing almost all lines to be changed,
2683    undo info becomes very big.  Put undo info in swap file??
2684
2685
2686Buffer list:
26877   Command to execute a command in another buffer: ":inbuf {bufname} {cmd}".
2688    Also for other windows: ":inwin {winnr} {cmd}".  How to make sure that
2689    this works properly for all commands, and still be able to return to the
2690    current buffer/window?  E.g.: ":inbuf xxx only".
26918   Add File.{recent_files} menu entries: Recently edited files.
2692    Ron Aaron has a plugin for this: mru.vim.
26938   Unix: Check all uses of fnamecmp() and fnamencmp() if they should check
2694    inode too.
26957   Add another number for a buffer, which is visible for the user.  When
2696    creating a new buffer, use the lowest number not in use. (or the highest
2697    number in use plus one?)
26987   Offer some buffer selection from the command line?  Like using ":ls" and
2699    asking for a buffer number. (Zachmann)
2700-   When starting to edit a file that is already in the buffer list, use the
2701    file name argument for the new short file name. (Webb)
2702-   Add an option to make ":bnext" and ":bprev" wrap around the end of the
2703    buffer list.  Also for ":next" and ":prev"?
27047   Add argument to ":ls" which is a pattern for buffers to list.
2705    E.g. ":ls *.c". (Thompson)
27067   Add expansion of buffer names, so that "*.c" is expanded to all buffer
2707    names.  Needed for ":bdel *.c", ":bunload *.c", etc.
27088   Support for <afile> where a buffer name is expected.
27098   Some commands don't use line numbers, but buffer numbers. '$'
2710    should then mean the number of the last buffer.  E.g.: "4,$bdel".
27117   Add an option to mostly use slashes in file names.  Separately for
2712    internal use and for when executing an external program?
2713
2714
2715Swap (.swp) files:
27168   If writing to the swap file fails, should try to open one in another
2717    directory from 'dir'.  Useful in case the file system is full and when
2718    there are short file name problems.
27198   Also use the code to try using a short file name for the backup and swap
2720    file for the Win32 and Dos 32 bit versions.
27218   When a file is edited by root, add $LOGNAME to know who did su.
27228   When the edited file is a symlink, try to put the swap file in the same
2723    dir as the actual file. Adjust FullName().	Avoids editing the same file
2724    twice (e.g. when using quickfix).  Also try to make the name of the backup
2725    file the same as the actual file?
2726    Use the code for resolve()?
27277   Store the options 'fileencoding', 'fileformat', etc. in the swapfile,
2728    because they change what will be written to the file.  Requires adding
2729    another block to the swapfile.
27307   When using 64 bit inode numbers, also store the top 32 bits.  Add another
2731    field for this, using part of bo_fname[], to keep it compatible.
27327   When editing a file on removable media, should put swap file somewhere
2733    else.  Use something like 'r' flag in 'viminfo'. 'diravoid'?
2734    Also: Be able to specify minimum disk space, skip directory when not
2735    enough room.
27367   Add a configure check for which directory should be used: /tmp, /var/tmp
2737    or /var/preserve.
2738-   Add an option to create a swap file only when making the first change to
2739    the buffer.  (Liang)  Or only when the buffer is not read-only.
2740-   Add option to set "umask" for backup files and swap files (Antwerpen).
2741    'backupumask' and 'swapumask'?  Or 'umaskback' and 'umaskswap'?
2742-   When editing a readonly file, don't use a swap file but read parts from the
2743    original file.  Also do this when the file is huge (>'maxmem').  We do
2744    need to load the file once to count the number of lines?  Perhaps keep a
2745    cached list of which line is where.
2746
2747
2748Viminfo:
27497   Can probably remove the code that checks for a writable viminfo file,
2750    because we now do the chown() for root, and others can't overwrite someone
2751    else's viminfo file.
27528   Add argument to keep the list of buffers when Vim is started with a file
2753    name. (Schild)
27548   Keep the last used directory of the file browser (File/Open menu).
27558   Remember the last used register for "@@".
27568   Remember a list of last accessed files.  To be used in the
2757    "File.Open Recent" menu.  Default is to remember 10 files or so.
2758    Also remember which files have been read and written.  How to display
2759    this?
27607   Also store the ". register (last inserted text).
27617   Make it possible to store buffer names in viminfo file relative to some
2762    directory, to make them portable over a network. (Aaron)
27636   Store a snapshot of the currently opened windows.  So that when quitting
2764    Vim, and then starting again (without a file name argument), you see the
2765    same files in the windows.  Use ":mksession" code?
2766-   Make marks present in .viminfo usable as file marks: Display a list of
2767    "last visited files" and select one to jump to.
2768
2769
2770Modelines:
27718   Before trying to execute a modeline, check that it looks like one (valid
2772    option names).  If it's very wrong, silently ignore it.
2773    Ignore a line that starts with "Subject: ".
2774-   When an option value is coming from a modeline, do not carry it over to
2775    another edited file?  Would need to remember the value from before the
2776    modeline setting.
2777-   Allow setting a variable from a modeline?  Only allow using fixed strings,
2778    no function calls, to avoid a security problem.
2779-   Allow ":doauto BufRead x.cpp" in modelines, to execute autocommands for
2780    .cpp files.
2781-   Support the "abbreviate" command in modelines (Kearns).  Careful for
2782    characters after <Esc>, that is a security leak.
2783-   Add option setting to ask user if he wants to have the modelines executed
2784    or not.  Same for .exrc in local dir.
2785
2786
2787Options:
27888   Make ":mksession" store buffer-specific options for the specific buffer.
27898   With ":mksession" always store the 'sessionoptions' option, even when
2790    "options" isn't in it. (St-Amant)
27917   Setting an option always sets "w_set_curswant", while this is only
2792    required for a few options.  Only do it for those options to avoid the
2793    side effect.
27948   When using ":mksession", also store a command to reset all options to
2795    their default value, before setting the options that are not at their
2796    default value.
27978   Should ":mksession" restore the current directory when writing the
2798    session, or the directory where the session file is?  Probably need a word
2799    in 'sessionoptions' to make a choice:
2800    "curdir" (cd to current directory when session file was generated)
2801    "sessiondir" (cd to directory of session file)
2802    "nodir" (don't cd at all)
28038   Make "old" number options that really give a number of effects into string
2804    options that are a comma separated list.  The old number values should
2805    also be supported.
28068   Add commands to save and restore an option, which also preserves the flag
2807    that marks if the option was set.  Useful to keep the effect of setting
2808    'compatible' after ":syntax on" has been used.
28097   There is 'titleold', why is there no 'iconold'? (Chazelas)
28107   Make 'scrolloff' a global-local option, so that it can be different in the
2811    quickfix window, for example. (Gary Holloway)
28127   Add plugins for formatting.  Should be able to make a choice depending on
2813    the language of a file (English/Korean/Japanese/etc.).
2814
2815
2816External commands:
28178   When filtering text, redirect stderr so that it can't mess up the screen
2818    and Vim doesn't need to redraw it.  Also for ":r !cmd".
28194   Set separate shell for ":sh", piping "range!filter", reading text "r !ls"
2820    and writing text "w !wc". (Deutsche)  Allow arguments for fast start (e.g.
2821    -f).
28224   Allow direct execution, without using a shell.
28234   Run an external command in the background.  But how about I/O in the GUI?
2824    Careful: don't turn Vim into a shell!
28254   Add feature to disable using a shell or external commands.
2826
2827
2828Multiple Windows:
28297   "vim -oO file ..." use both horizontal and vertical splits.
28308   Add CTRL-W T: go to the top window in the column of the current window.
2831    And CTRL-W B: go to bottom window.
28327   Use CTRL-W <Tab>, like alt-tab, to switch between buffers.  Repeat <Tab>
2833    to select another buffer (only loaded ones?), <BS> to go back, <Enter> to
2834    select buffer, <Esc> to go back to original buffer.
28357   Add a 'winfixwidth' option, similar to 'winfixheight'.
28366   Add an option to resize the shell when splitting and/or closing a window.
2837    ":vsp" would make the shell wider by as many columns as needed for the new
2838    window.  Specify a maximum size (or use the screen size). ":close" would
2839    shrink the shell by as many columns as come available. (Demirel)
28407   When starting Vim several times, instantiate a Vim server, that allows
2841    communication between the different Vims.  Feels like one Vim running with
2842    multiple top-level windows.  Esp. useful when Vim is started from an IDE
2843    too.  Requires some form of inter process communication.
2844-   Support a connection to an external viewer.  Could call the viewer
2845    automatically after some seconds of non-activity, or with a command.
2846    Allow some way of reporting scrolling and cursor positioning in the viewer
2847    to Vim, so that the link between the viewed and edited text can be made.
2848
2849
2850Marks:
28518   When cursor is first moved because of scrolling, set a mark at this
2852    position.  (Rimon Barr)  Use '-.
28538   Add a command to jump to a mark and make the motion inclusive. g'm and g`m?
28548   The '" mark is set to the first line, even when doing ":next" a few times.
2855    Only set the '" mark when the cursor was really moved in a file.
28568   Make `` and '', which would position the new cursor position in the middle
2857    of the window, restore the old topline (or relative position) from when
2858    the mark was set.
28597   Make a list of file marks in a separate window.  For listing all buffers,
2860    matching tags, errors, etc.  Normal commands to move around.  Add commands
2861    to jump to the mark (in current window or new window).  Start it with
2862    ":browse marks"?
28636   Add a menu that lists the Marks like ":marks". (Amerige)
28647   For ":jumps", ":tags" and ":marks", for not loaded buffers, remember the
2865    text at the mark.  Highlight the column with the mark.
28667   Highlight each mark in some way (With "Mark" highlight group).
2867    Or display marks in a separate column, like 'number' does.
28687   Use d"m to delete rectangular area from cursor to mark m (like Vile's \m
2869    command).
28707   Try to keep marks in the same position when:
2871    - replacing with a line break, like in ":s/pat/^M/", move marks after the
2872      line break column to the next line. (Acevedo)
2873    - inserting/deleting characters in a line.
28745   Include marks for start/end of the current word and section.  Useful in
2875    mappings.
28766   Add "unnamed mark" feature: Like marks for the ":g" command, but place and
2877    unplace them with commands before doing something with the lines.
2878    Highlight the marked lines somehow.
2879
2880
2881Digraphs:
28827   Make "ga" show the digraph for a character, if it exists.
2883    Also the keymap?
2884-   Make it possible to enter "r<C-E>" and "r<C-Y>" (get character from line
2885    below/above).
2886-   Use digraph table to tell Vim about the collating sequence of special
2887    characters?
28888   Add command to remove (all) digraphs. (Brown)
28897   Support different sets of digraphs (depending on the character set?).  At
2890    least Latin1/Unicode, Latin-2, MS-DOS (esp. for Win32).
2891
2892
2893Writing files:
2894-   In vim_rename(), should lock "from" file when deleting "to" file for
2895    systems other than Amiga.  Avoids problems with unexpected longname to
2896    shortname conversion.
28978   write mch_isdevice() for Amiga, Mac, VMS, etc.
28988   When appending to a file, Vim should also make a backup and a 'patchmode'
2899    file.
29008   'backupskip' doesn't write a backup file at all, a bit dangerous for some
2901    applications.  Add 'backupelsewhere' to write a backup file in another
2902    directory?  Or add a flag to 'backupdir'?
29037   The 'directory' option supports changing path separators to "%" to make
2904    file names unique, also support this for 'backupdir'. (Mikolaj Machowski)
29056   Add an option to write a new, numbered, backup file each time.  Like
2906    'patchmode', e.g., 'backupmode'.
29076   Make it possible to write 'patchmode' files to a different directory.
2908    E.g., ":set patchmode=~/backups/*.orig". (Thomas)
29096   Add an option to prepend something to the backup file name.  E.g., "#".
2910    Or maybe allow a function to modify the backup file name?
29118   Only make a backup when overwriting a file for the first time. Avoids
2912    losing the original when writing twice. (Slootman)
29137   On non-Unix machines, also overwrite the original file in some situations
2914    (file system full, it's a link on an NFS partition).
29157   When editing a file, check that it has been change outside of Vim more
2916    often, not only when writing over it.  E.g., at the time the swap file is
2917    flushed.  Or every ten seconds or so (use the time of day, check it before
2918    waiting for a character to be typed).
29198   When a file was changed since editing started, show this in the status
2920    line of the window, like "[time]".
2921    Make it easier to reload all outdated files that don't have changes.
2922    Automatic and/or with a command.
2923
2924
2925Substitute:
29268   Make it easier to replace in all files in the argument list. E.g.:
2927    ":argsub/oldword/newword/".  Works like ":argdo %s/oldword/newword/g|w".
2928-   :s///p prints the line after a substitution.
2929-   With :s///c replace \&, ~, etc. when showing the replacement pattern.
29308   With :s///c allow scrolling horizontally when 'nowrap' is effective.
2931    Also allow a count before the scrolling keys.
2932-   Add number option to ":s//2": replace second occurrence of string? Or:
2933    :s///N substitutes N times.
2934-   Add answers to ":substitute" with 'c' flag, used in a ":global", e.g.:
2935    ":g/pat1/s/pat2/pat3/cg": 'A' do all remaining replacements, 'Q' don't do
2936    any replacements, 'u' undo last substitution.
29377   Substitute in a block of text.  Use {line}.{column} notation in an Ex
2938    range, e.g.: ":1.3,$.5s" means to substitute from line 1 column 3 to the
2939    last line column 5.
29405   Add commands to bookmark lines, display bookmarks, remove bookmarks,
2941    operate on lines with bookmarks, etc.  Like ":global" but with the
2942    possibility to keep the bookmarks and use them with several commands.
2943    (Stanislav Sitar)
2944
2945
2946Mouse support:
29478   Add 'o' flag to 'mouse'?
29487   Be able to set a 'mouseshape' for the popup menu.
29498   Add 'mouse' flag, which sets a behavior like Visual mode, but automatic
2950    yanking at the button-up event.  Or like Select mode, but typing gets you
2951    out of Select mode, instead of replacing the text. (Bhaskar)
29527   Checkout sysmouse() for FreeBSD console mouse support.
2953-   Implement mouse support for the Amiga console.
2954-   Using right mouse button to extend a blockwise selection should attach to
2955    the nearest corner of the rectangle (four possible corners).
2956-   Precede mouse click by a number to simulate double clicks?!?
2957-   When mouse click after 'r' command, get character that was pointed to.
2958
2959
2960Crypt and security:
29618   Also crypt the swapfile, each block separately.  Change mf_write() and
2962    mf_read().  How to get b_p_key to these functions?
2963
2964
2965Argument list:
29666   Add command to put all filenames from the tag files in the argument list.
2967    When given an argument, only use the files where that argument matches
2968    (like `grep -l ident`) and jump to the first match.
29696   Add command to form an args list from all the buffers?
2970
2971
2972Registers:
29738   Don't display empty registers with ":display". (Etienne)
29748   Make the # register writable, so that it can be restored after jumping
2975    around in windows.
29768   Add put command that overwrites existing text.  Should also work for
2977    blocks.  Useful to move text around in a table.  Works like using "R ^R r"
2978    for every line.
29796   When yanking into the unnamed registers several times, somehow make the
2980    previous contents also available (like it's done for deleting).  What
2981    register names to use?  g"1, g"2, etc.?
2982-   When appending to a register, also report the total resulting number of
2983    lines.  Or just say "99 more lines yanked", add the "more".
2984-   When inserting a register in Insert mode with CTRL-R, don't insert comment
2985    leader when line wraps?
2986-   The ":@r" commands should take a range and execute the register for each
2987    line in the range.
2988-   Add "P" command to insert contents of unnamed register, move selected text
2989	to position of previous deleted (to swap foo and bar in " + foo")
29908   Should be able to yank and delete into the "/ register.
2991    How to take care of the flags (offset, magic)?
2992
2993
2994Debug mode:
29957   Add something to enable debugging when a remote message is received.
29968   Add breakpoints for setting an option
29978   Add breakpoints for assigning to a variable.
29987   Add a watchpoint in the debug mode: An expression that breaks execution
2999    when evaluating to non-zero.
30007   Store the history from debug mode in viminfo.
30017   Make the debug mode history available with histget() et al.
3002
3003
3004Various improvements:
30058   Add ":rename" command: rename the file of the current buffer and rename
3006    the buffer.  Buffer may be modified.
30076   In the quickfix window statusline add the command used to get the list of
3008    errors, e.g. ":make foo", ":grep something *.c".
30097   Add a ":cstring" command.  Works like ":cfile" but reads from a string
3010    variable.  Also accept a list variable?
30116   Python interface: add vim.message() function. (Michal Vitecek, 2002 Nov 5)
30127   Support using ":vert" with User commands.  Add expandable items <vert>.
3013    Do the same for ":browse" and ":confirm"?
3014    For ":silent" and ":debug" apply to the whole user command.
30157   Allow a window not to have a statusline.  Makes it possible to use a
3016    window as a buffer-tab selection.
30177   Add an invisible buffer which can be edited.  For use in scripts that want
3018    to manipulate text without changing the window layout.
30198   Add a command to revert to the saved version of file; undo or redo until
3020    all changes are gone.
30217   Add a ":cpfile", go in the other direction as ":cnfile".
30226   "vim -q -" should read the list of errors from stdin. (Gautam Mudunuri)
30238   Add "--remote-fail": When contacting the server fails, exit Vim.
3024    Add "--remote-self": When contacting the server fails, do it in this Vim.
3025    Overrules the default of "--remote-send" to fail and "--remote" to do it
3026    in this Vim.
30278   When Vim was started without a server, make it possible to start one, as
3028    if the "--servername" argument was given. ":startserver <name>"?
30298   No address range can be used before the command modifiers.  This makes
3030    them difficult to use in a menu for Visual mode.  Accept the range and
3031    have it apply to the following command.
30328   Add the possibility to set 'fileformats' to force a format and strip other
3033    CR characters.  For example, for "dos" files remove CR characters at the
3034    end of the line, so that a file with mixed line endings is cleaned up.
3035    To just not display the CR characters: Add a flag to 'display'?
30367   Some compilers give error messages in which the file name does not have a
3037    path.  Be able to specify that 'path' is used for these files.
30387   Xterm sends <Esc>O3F for <M-End>.  Similarly for other <M-Home>, <M-Left>,
3039    etc.  Combinations of Alt, Ctrl and Shift are also possible.  Recognize
3040    these to avoid inserting the raw byte sequence, handle like the key
3041    without modifier (unless mapped).
30428   Add ":breakdel *": delete all breakpoints.
30437   Support ":browse edit" in console, using explorer.vim?
30446   Add "gG": like what "gj" is to "j": go to the N'th window line.
30458   Add command like ":normal" that accepts <Key> notation like ":map".
30469   Support ACLs on more systems.
30477   Add ModeMsgVisual, ModeMsgInsert, etc. so that each mode message can be
3048    highlighted differently.
30498   Allow using "**" as a wildcard in commands like ":next" and ":args".
30508   Provide a way to avoid wildcard expansion.  Use double quotes, like in the
3051    shell?  :edit "my[file].txt"  (currently works if there is no "myf.txt")
30527   Add a message area for the user.  Set some option to reserve space (above
3053    the command line?).  Use an ":echouser" command to display the message
3054    (truncated to fit in the space).
30557   Add %s to 'keywordprg': replace with word under the cursor. (Zellner)
30568   Support printing on Unix.  Can use "lpansi.c" as an example. (Bookout)
30578   Add put command that replaces the text under it.  Esp. for blockwise
3058    Visual mode.
30597   Enhance termresponse stuff: Add t_CV(?): pattern of term response, use
3060    regexp: "\e\[[>?][0-9;]*c", but only check just after sending t_RV.
30617   Add "g|" command: move to N'th column from the left margin (after wrapping
3062    and applying 'leftcol').  Works as "|" like what "g0" is to "0".
30637   Support setting 'equalprg' to a user function name.
30647   Highlight the characters after the end-of-line differently.
30657   When 'whichwrap' contains "l", "$dl" should join lines?
30668   Add an argument to configure to use $CFLAGS and not modify it? (Mooney)
30678   Enabling features is a mix of configure arguments and defines in
3068    feature.h.  How to make this consistent?  Feature.h is required for
3069    non-unix systems.  Perhaps let configure define CONF_XXX, and use #ifdef
3070    CONF_XXX in feature.h?  Then what should min-features and max-features do?
30718   Add "g^E" and "g^Y", to scroll a screen-full line up and down.
30726   Add ":timer" command, to set a command to be executed at a certain
3073    interval, or once after some time has elapsed. (Aaron)
30748   Add ":confirm" handling in open_exfile(), for when file already exists.
30758   Use confirm/dialog stuff to ask the user, when a file has changed outside
3076    of Vim, if he wants to reload it.  Triggered when focus gained, after
3077    shell command, when entering another buffer, etc..
3078    Also do this when editing a new file, and another application creates
3079    the file before doing ":w" in Vim.
3080    Also check if the file protection has changed.  When checking a file into
3081    RCS it is made read-only, when checking out it is made read-write.
30828   When quitting with changed files, make the dialog list the changed file
3083    and allow "write all", "discard all", "write some".  The last one would
3084    then ask "write" or "discard" for each changed file.  Patch in HierAssist
3085    does something like this. (Shah)
30867   Use growarray for replace stack.
30877   Have a look at viH (Hellenic or Greek version of Vim).  But a solution
3088    outside of Vim might be satisfactory (Haritsis).
30893   Make "2d%" work like "d%d%" instead of "d2%"?
30908   Make "more" prompt accept command characters, like "hit-enter" prompt?
3091    Or extend it with more commands, like "less": 'b' for back, 'j' for one
3092    line down, etc.
30938   For the "--more--" prompt, support the 'b'ack command for more commands.
3094    Possible implementation: Do it at a very low level, caching the lines that
3095    are on the screen (with highlight attributes).  Avoids that changes have
3096    to be made for all functions that list something.
30977   "g CTRL-O" jumps back to last used buffer.	Skip CTRL-O jumps in the same
3098    buffer.  Make jumplist remember the last ten accessed buffers?
3099-   Keep a list of most recently used files for each window, use "[o" to go
3100    back (older file) and "]n" to go forward (newer file) (like ^O and ^I for
3101    jumps) (Webb). Use ":files" and ":ls" to list the files in history order.
31027   Add a history of recently accessed buffer.	Maybe make "2 CTRL-^" jump to
3103    the 2nd previously visited buffer, "3 CTRL-^" to the third, etc.  Or use
3104    "3 g CTRL-^" for this?
3105-   Add code to disable the CAPS key when going from Insert to Normal mode.
3106-   Set date/protection/etc. of the patchfile the same as the original file.
3107-   Use growarray for termcodes[] in term.c
3108-   Add <window-99>, like <cword> but use filename of 99'th window.
31097   Add a way to change an operator to always work characterwise-inclusive
3110    (like "v" makes the operator characterwise-exclusive).  "x" could be used.
3111-   Make a set of operations on list of names: expand wildcards, replace home
3112    dir, append a string, delete a string, etc.
3113-   Remove mktemp() and use tmpname() only?  Ctags does this.
3114-   When replacing environment variables, and there is one that is not set,
3115    turn it into an empty string?  Only when expanding options? (Hiebert)
3116-   Option to set command to be executed instead of producing a beep (e.g. to
3117    call "play newbeep.au").
3118-   Add option to show the current function name in the status line.  More or
3119    less what you find with "[[k", like how 'cindent' recognizes a function.
3120    (Bhatt).
3121-   "[r" and "]r": like "p" and "P", but replace instead of insert (esp. for
3122    blockwise registers).
3123-   Add 'timecheck' option, on by default.  Makes it possible to switch off the
3124    timestamp warning and question. (Dodt).
3125-   Add an option to set the time after which Vim should check the timestamps
3126    of the files.  Only check when an event occurs (e.g., character typed,
3127    mouse moved).  Useful for non-GUI versions where keyboard focus isn't
3128    noticeable.
31299   When using ":w <fname>" it's possible that this file is loaded in another
3130    buffer.  Give a warning right away, don't wait for a shell command.
3131-   Make 'smartcase' work even though 'ic' isn't set (Webb).
31327   When formatting text, allow to break the line at a number of characters.
3133    Use an option for this: 'breakchars'?  Useful for formatting Fortran code.
3134-   Add flag to 'formatoptions' to be able to format book-style paragraphs
3135    (first line of paragraph has larger indent, no empty lines between
3136    paragraphs).  Complements the '2' flag.  Use '>' flag when larger indent
3137    starts a new paragraph, use '<' flag when smaller indent starts a new
3138    paragraph.	Both start a new paragraph on any indent change.
31397   Add a way to define an item list with a pattern in 'formatoptions'.  The
3140    'n' flag doesn't work for "6.3" or "6a.".
31418   Add 'formatexpr' option: Used for formatting operator "gq" instead of the
3142    builtin formatting or 'formatprg'.
31438   Allow using a trailing space to signal a paragraph that continues on the
3144    next line (MIME text/plain; format=flowed, RFC 2646).  Can be used for
3145    continuous formatting.  Could use 'autoformat' option, which specifies a
3146    regexp which triggers auto-formatting (for one line).
3147    ":set autoformat=\\s$".
3148-   Be able to redefine where a sentence stops.  Use a regexp pattern?
31497   Add command "g)" to go to the end of a sentence, "g(" to go back to the
3150    end of a sentence. (Servatius Brandt)
3151-   Be able to redefine where a paragraph starts.  For "[[" where the '{' is
3152    not in column 1.
31536   Add ":cdprev": go back to the previous directory.  Need to remember a
3154    stack of previous directories.  We also need ":cdnext".
31557   Should ":cd" for MS-DOS go to $HOME, when it's defined?
3156-   Make "gq<CR>" work on the last line in the file.  Maybe for every operator?
31578   findmatchlimit() should be able to skip comments.  Solves problem of
3158    matching the '{' in /* if (foo) { */ (Fiveash)
3159-   Add more redirecting of Ex commands:
3160	:redir @> register  (append)
3161	:redir #  bufname
3162	:redir #> bufname   (append)
3163	:redir =  variable
3164	:redir => variable  (append)
3165-   Setting of options, specifically for a buffer or window, with
3166    ":set window.option" or ":set buffer.option=val".  Or use ":buffer.set".
3167    Also: "buffer.map <F1> quit".
31686   Would it be possible to change the color of the cursor in the Win32
3169    console?  (Klaus Hast)
3170-   Add :delcr command:
3171			    *:delcr*
3172     :[range]delcr[!]	Check [range] lines (default: whole buffer) for lines
3173			ending in <CR>.  If all lines end in <CR>, or [!] is
3174			used, remove the <CR> at the end of lines in [range].
3175			A CTRL-Z at the end of the file is removed.  If
3176			[range] is omitted, or it is the whole file, and all
3177			lines end in <CR> 'textmode' is set.  {not in Vi}
3178-   Should integrate addstar() and file_pat_to_reg_pat().
3179-   When working over a serial line with 7 bit characters, remove meta
3180    characters from 'isprint'.
3181-   Use fchdir() in init_homedir(), like in FullName().
3182-   In win_update(), when the GUI is active, always use the scrolling area.
3183    Avoid that the last status line is deleted and needs to be redrawn.
3184-   That "cTx" fails when the cursor is just after 'x' is Vi compatible, but
3185    may not be what you expect.  Add a flag in 'cpoptions' for this?  More
3186    general: Add an option to allow "c" to work with a null motion.
3187-   Give better error messages by using errno (strerror()).
3188-   Give "Usage:" error message when command used with wrong arguments (like
3189    Nvi).
3190-   Make 'restorescreen' option also work for xterm (and others), replaces the
3191    SAVE_XTERM_SCREEN define.
31927   Support for ":winpos" In xterm: report the current window position.
3193-   Give warning message when using ":set t_xx=asdf" for a termcap code that
3194    Vim doesn't know about.  Add flag in 'shortmess'?
31956   Add ":che <file>", list all the include paths which lead to this file.
3196-   For a commandline that has several commands (:s, :d, etc.) summarize the
3197    changes all together instead of for each command (e.g. for the rot13
3198    macro).
3199-   Add command like "[I" that also shows the tree of included files.
3200-   Add command like ":ts" that shows the output of "[I" and asks for a match
3201    to jump to. (Zellner)
3202-   ":set sm^L" results in ":set s", because short names of options are also
3203    expanded.  Is there a better way to do this?
3204-   Add ":@!" command, to ":@" like what ":source!" is to ":source".
32058   Add ":@:!": repeat last command with forceit set.
3206-   Should be possible to write to a device, e.g. ":w! /dev/null".
3207-   Add 't_normal': Used whenever t_me, t_se, t_ue or t_Zr is empty.
3208-   ":cab map test ^V| je", ":cunab map" doesn't work.	This is vi compatible!
3209-   CTRL-W CTRL-E and CTRL-W CTRL-Y should move the current window up or down
3210    if it is not the first or last window.
3211-   Include-file-search commands should look in the loaded buffer of a file (if
3212    there is one) instead of the file itself.
32137   Change 'nrformats' to include the leader for each format.  Example:
3214	nrformats=hex:$,binary:b,octal:0
3215    Add setting of 'nrformats' to syntax files.
3216-   'path' can become very long, don't use NameBuff for expansion.
3217-   When unhiding a hidden buffer, put the same line at top of the window as
3218    the one before hiding it. Or: keep the same relative cursor position (so
3219    many percent down the windows).
3220-   Make it possible for the 'showbreak' to be displayed at the end of the
3221    line.  Use a comma to separate the part at the end and the start of the
3222    line?  Highlight the linebreak characters, add flag in 'highlight'.
3223-   Some string options should be expanded if they have wildcards, e.g.
3224    'dictionary' when it is "*.h".
3225-   Use a specific type for number and boolean options, making it possible to
3226    change it for specific machines (e.g. when a long is 64 bit).
3227-   Add option for <Insert> in replace mode going to normal mode. (Nugent)
3228-   Add a next/previous possibility to "[^I" and friends.
3229-   Add possibility to change the HOME directory.  Use the directory from the
3230    passwd file? (Antwerpen)
3231-   When doing "[^I" or "[^D" add position to tag stack.
3232-   Add command to put current position to tag stack: ":tpush".
32338   Add commands to push and pop all or individual options. ":setpush tw",
3234    ":setpop tw", ":setpush all".  Maybe pushing/popping all options is
3235    sufficient.  ":setflush" resets the option stack?
3236    How to handle an aborted mapping?  Remember position in tag stack when
3237    mapping starts, restore it when an error aborts the mapping?
3238-   Use a builtin grep command for ":grep"?  Makes it possible to add the
3239    column number.  Can use the code of ":helpgrep".
3240    Also support using "**" in filename, so that a directory tree can be
3241    searched.
3242    Also see the "minigrep.vim" script on www.vim.org.
3243-   Change ":fixdel" into option 'fixdel', t_del will be adjusted each time
3244    t_bs is set? (Webb)
3245-   "gc": goto character, move absolute character positions forward, also
3246    counting newlines. "gC" goes backwards (Weigert).
3247-   When doing CTRL-^, redraw buffer with the same topline (Demirel). Store
3248    cursor row and window height to redraw cursor at same percentage of window
3249    (Webb).
3250-   Besides remembering the last used line number of a file, also remember the
3251    column. Use it with CTRL-^ et. al.
3252-   Check for non-digits when setting a number option (careful when entering
3253    hex codes like 0xff).
3254-   Add option to make "." redo the "@r" command, instead of the last command
3255    executed by it.  Also to make "." redo the whole mapping.  Basically: redo
3256    the last TYPED command.
3257-   Support URL links for ^X^F in Insert mode, like for "gf".
3258-   Support %name% expansion for "gf" on Windows.
3259-   Make "gf" work on "file://c:/path/name".  "file:/c:/" and "file:///c:/"
3260    should also work?
3261-   Add 'urlpath', used like 'path' for when "gf" used on an URL?
32628   When using "gf" on an absolute file name, while editing a remote file
3263    (starts with scp:// or http://) should prepend the method and machine
3264    name.
3265-   When finding an URL or file name, and it doesn't exist, try removing a
3266    trailing '.'.
3267-   Add ":path" command modifier.  Should work for every command that takes a
3268    file name argument, to search for the file name in 'path'.	Use
3269    find_file_in_path().
3270-   Highlight control characters on the screen: Shows the difference between
3271    CTRL-X and "^" followed by "X" (Colon).
3272-   Integrate parsing of cmdline command and parsing for expansion.
3273-   Create a program that can translate a .swp file from any machine into a
3274    form usable by Vim on the current machine.
3275-   Add ":noro" command: Reset 'ro' flag for all buffers, except ones that have
3276    a readonly file. ":noro!" will reset all 'ro' flags.
3277-   Add a variant of CTRL-V that stops interpretation of more than one
3278    character.	For entering mappings on the command line where a key contains
3279    several special characters, e.g. a trailing newline.
3280-   Add regex for 'paragraphs' and 'sections': 'parare' and 'sectre'. Combine
3281    the two into a regex for searching. (Ned Konz)
3282-   Make '2' option in 'formatoptions' also work inside comments.
3283-   Add 's' flag to 'formatoptions': Do not break when inside a string. (Dodt)
3284-   When window size changed (with the mouse) and made too small, set it back
3285    to the minimal size.
3286-   Add "]>" and "[<", shift comment at end of line (command;  /* comment */).
3287-   Should not call cursorcmd() for each vgetc() in getcmdline().
3288-   ":split file1 file2" adds two more windows (Webb).
3289-   Don't give message "Incomplete last line" when editing binary file.
3290-   Add ":a", ":i" for preloading of named buffers.
3291-   Allow autowrite when doing ":e file" (with an option 'eaw').
3292-   Allow a "+command" argument before each file name in the Vim command line:
3293    "vim +123 file1 +234 file2 +345 file3". ???
3294-   When entering text, keep other windows on same buffer updated (when a line
3295    entered)?
3296-   Check out how screen does output optimizing.  Apparently this is possible
3297    as an output filter.
3298-   In dosub() regexec is called twice for the same line. Try to avoid this.
3299-   Window updating from memline.c: insert/delete/replace line.
3300-   Optimize ml_append() for speed, esp. for reading a file.
3301-   V..c should keep indent when 'ai' is set, just like [count]cc.
3302-   Updatescript() can be done faster with a string instead of a char.
3303-   Screen updating is inefficient with CTRL-F and CTRL-B when there are long
3304    lines.
3305-   Uppercase characters in ex commands can be made lowercase?
33068   Add option to show characters in text not as "|A" but as decimal ("^129"),
3307    hex ("\x81") or octal ("\201") or meta (M-x).  Nvi has the 'octal' option
3308    to switch from hex to octal.  Vile can show unprintable characters in hex
3309    or in octal.
33107   Tighter integration with xxd to edit binary files.  Make it more
3311    easy/obvious to use.  Command line argument?
3312-   How does vi detect whether a filter has messed up the screen? Check source.
3313    After ":w !command" a wait_return?
3314-   Improve screen updating code for doput() (use s_ins()).
3315-   With 'p' command on last line: scroll screen up (also for terminals without
3316    insert line command).
3317-   Use insert/delete char when terminal supports it.
3318-   Optimize screen redraw for slow terminals.
3319-   Optimize "dw" for long row of spaces (say, 30000).
3320-   Add "-d null" for editing from a script file without displaying.
3321-   In Insert mode: Remember the characters that were removed with backspace
3322    and re-insert them one at a time with <key1>, all together with <key2>.
3323-   Amiga: Add possibility to set a keymap. The code in amiga.c does not work
3324    yet.
3325-   Implement 'redraw' option.
3326-   Add special code to 'sections' option to define something else but '{' or
3327    '}' as the start of a section (e.g. one shiftwidth to the right).
3328-   Use pipes for filtering on Unix.  Requires using fork() to be able to read
3329    and write at the same time, or some select() mechanism.
33307   Allow using Vim in a pipe: "ls | vim -u xxx.vim - | yyy".  Only needs
3331    implementing ":w" to stdout in the buffer that was read from stdin.
33328   Allow opening an unnamed buffer with ":e !cmd" and ":sp !cmd".  Vile can
3333    do it.
3334-   Add commands like ]] and [[ that do not include the line jumped to.
3335-   When :unab without matching "from" part and several matching "to" parts,
3336    delete the entry that was used last, instead of the first in the list.
3337-   Add text justification option.
3338-   Set boolean options on/off with ":set paste=off", ":set paste=on".
3339-   After "inv"ing an option show the value: ":set invpaste" gives "paste is
3340    off".
3341-   Check handling of CTRL-V and '\' for ":" commands that do not have TRLBAR.
3342-   When a file cannot be opened but does exist, give error message.
3343-   Amiga: When 'r' protection bit is not set, file can still be opened but
3344    gives read errors. Check protection before opening.
3345-   When writing check for file exists but no permission, "Permission denied".
3346-   If file does not exists, check if directory exists.
3347-   MSDOS: although t_cv and t_ci are not set, do invert char under cursor.
3348-   Settings edit mode: make file with ":set opt=xx", edit it, parse it as ex
3349    commands.
3350-   ":set -w all": list one option per line.
3351-   Amiga: test for 'w' flag when reading a file.
3352-   :table command (Webb)
3353-   Add new operator: clear, make area white (replace with spaces): "g ".
3354-   Make it possible for a user to define a new operator.  Implementation with
3355    internal scripting language or Perl?
3356-   Add command to ":read" a file at a certain column (blockwise read?).
3357-   Add sort of replace mode where case is taken from the old text (Goldfarb).
3358-   Allow multiple arguments for ":read", read all the files.
3359-   Support for tabs in specific columns: ":set tabcol=8,20,34,56" (Demirel).
3360-   Add 'searchdir' option: Directories to search for file name being edited
3361    (Demirel).
3362-   Modifier for the put command: Change to linewise, charwise, blockwise, etc.
3363-   Add commands for saving and restoring options ":set save" "set restore",
3364    for use in macro's and the like.
3365-   Keep output from listings in a window, so you can have a look at it while
3366    working in another window. Put cmdline in a separate window?
3367-   Add possibility to put output of ex commands in a buffer or file, e.g. for
3368    ":set all".  ":r :set all"?
3369-   'edit' option: When off changing the buffer is not possible (Really
3370    read-only mode).
3371-   When the 'equalalways' option is set, creating a new window should not
3372    result in windows to become bigger. Deleting a window should not result in
3373    a window to become smaller (Webb).
3374-   When resizing the whole Vim window, the windows inside should be resized
3375    proportionally (Webb).
3376-   Include options directly in option table, no indirect pointers. Use
3377    mkopttab to make option table?
3378-   When doing ":w dir", where "dir" is a directory name, write the current
3379    file into that directory, with the current file name (without the path)?
3380-   Support for 'dictionary's that are sorted, makes access a lot faster
3381    (Haritsis).
3382-   Add "^Vrx" on the command line, replace with contents of register x. Used
3383    instead of CTRL-R to make repeating possible. (Marinichev)
3384-   Add "^Vb" on the command line, replace with word before or under the
3385    cursor?
3386-   Option to make a .swp file only when a change is made (Templeton).
3387-   Support mapping for replace mode and "r" command (Vi doesn't do this)?
33885   Add 'ignorefilecase' option: Ignore case when expanding file names.
3389    ":e ma<Tab>" would also find "Makefile" on Unix.
33908   Sorting of filenames for completion is wrong on systems that ignore
3391    case of filenames.  Add 'ignorefncase' option.  When set, case in
3392    filenames is ignored for sorting them. Patch by Mike Williams:
3393    ~/vim/patches/ignorefncase.  Also change what matches?  Or use another
3394    option name.
33958   Should be able to compile Vim in another directory, with $(srcdir) set to
3396    where the sources are. Add $(srcdir) in the Makefile in a lot of places.
3397    (Netherton)
33986   Make it configurable when "J" inserts a space or not.  Should not add a
3399    space after "(", for example.
34005   When inserting spaces after the end-of-line for 'virtualedit', use tabs
3401    when the user wants this (e.g., add a "tab" field to 'virtualedit').
3402    (Servatius Brandt)
3403
3404
3405From Elvis:
3406-   Use "instman.sh" to install manpages?
3407-   Add ":alias" command.
3408-   fontchanges recognized "\\fB" etc.
3409-   Search patterns:
3410      \@	match word under cursor.
3411    but do:
3412      \@w	match the word under the cursor?
3413      \@W	match the WORD under the cursor?
34148   ":window" command:
3415    :win +	next window (up)
3416    :win ++	idem, wrapping
3417    :win -	previous window (down)
3418    :win --	idem, wrapping
3419    :win nr	to window number "nr"
3420    :win name	to window editing buffer "name"
34217   ":cc" compiles a single file (default: current one).  'ccprg'   option is
3422    program to use with ":cc".  Use ":compile" instead of ":cc"?
3423
3424
3425From Nvi:
3426-   'searchincr' option, alias for 'incsearch'?
3427-   'leftright' option, alias for 'nowrap'?
3428-   Have a look at "vi/doc/vi.chart", for Nvi specialties.
34298   Add 'keytime', time in 1/10 sec for mapping timeout?
3430-   Add 'filec' option as an alternative for 'wildchar'.
34316   Support Nvi command names as an alias:
3432    :bg		    :hide
3433    :fg	fname	    :buf fname (with 'hidden' set?)
3434    :dis b	    :ls
3435    :Edit fname	    :split fname
3436    :Fg fname	    :sbuf fname (with 'hidden' set?)
3437    :Next	    :snext (can't do this, already use :Next)
3438    :Previous	    :sprevious
3439    :Tag	    :stag
3440
3441
3442From xvi:
3443-   CTRL-_ : swap 8th bit of character.
3444-   Add egrep-like regex type, like xvi (Ned Konz) or Perl (Emmanuel Mogenet)
3445
3446
3447From vile:
3448-   When horizontal scrolling, use '>' for lines continuing right of a window.
3449-   Support putting .swp files in /tmp: Command in rc.local to move .swp files
3450    from /tmp to some directory before deleting files.
3451
3452
3453Far future and "big" extensions:
3454-   Make it easy to setup Vim for groups of users: novice vi users, novice
3455    Vim users, C programmers, xterm users, GUI users,...
3456-   Change layout of blocks in swap file: Text at the start, with '\n' in
3457    between lines (just load the file without changes, except for Mac).
3458    Indexes for lines are from the end of the block backwards.  It's the
3459    current layout mirrored.
3460-   Make it possible to edit a register, in a window, like a buffer.
3461-   Add stuff to syntax highlighting to change the text (upper-case keywords,
3462    set indent, define other highlighting, etc.).
3463-   Mode to keep C-code formatted all the time (sort of on-line indent).
3464-   Several top-level windows in one Vim session.  Be able to use a different
3465    font in each top-level window.
3466-   Allow editing above start and below end of buffer (flag in 'virtualedit').
3467-   Smart cut/paste: recognize words and adjust spaces before/after them.
3468-   Add open mode, use it when terminal has no cursor positioning.
3469-   Special "drawing mode": a line is drawn where the cursor is moved to.
3470    Backspace deletes along the line (from jvim).
3471-   Implement ":Bset", set option in all buffers.  Also ":Wset", set in all
3472    windows, ":Aset, set in all arguments and ":Tset", set in all files
3473    mentioned in the tags file.
3474    Add buffer/arg range, like in ":2,5B%s/..." (do we really need this???)
3475    Add search string: "B/*.c/%s/.."?  Or ":F/*.c/%s/.."?
3476-   Support for underlining (underscore-BS-char), bold (char-BS-char) and other
3477    standout modes switched on/off with , 'overstrike' option (Reiter).
3478-   Add vertical mode (Paul Jury, Demirel): "5vdw" deletes a word in five
3479    lines, "3vitextESC" will insert "text" in three lines, etc..
34804   Recognize l, #, p as 'flags' to EX commands:
3481    :g/RE/#l shall print lines with line numbers and in list format.
3482    :g/RE/dp shall print lines that are deleted.
3483    POSIX: Commands where flags shall apply to all lines written: list,
3484    number, open, print, substitute, visual, &, z. For other commands, flags
3485    shall apply to the current line after the command completes.  Examples:
3486    :7,10j #l Join the lines 7-10 and print the result in list
3487-   Allow two or more users to edit the same file at the same time.  Changes
3488    are reflected in each Vim immediately.  Could work with local files but
3489    also over the internet.  See http://www.codingmonkeys.de/subethaedit/.
3490
3491
3492vim:tw=78:sw=4:sts=4:ts=8:ft=help:norl:
3493vim: set fo+=n :
3494