xref: /vim-8.2.3635/runtime/doc/todo.txt (revision 519cc559)
1*todo.txt*      For Vim version 8.2.  Last change: 2021 Nov 14
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 older items are grouped
11by subject.  In the first column of the line a classification is used to be
12able to 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
30Issues can also be entered online: https://github.com/vim/vim/issues
31Only use this for bug reports, not for questions!  Those belong on the
32maillist.  Updates will be forwarded to the |vim_dev| maillist.  Issues
33entered there will not be repeated below, unless there is extra information.
34
35The #1234 numbers refer to an issue or pull request on github.  To see it in a
36browser use: https://github.com/vim/vim/issues/1234
37(replace 1234 with the issue/pull number)
38							*known-bugs*
39-------------------- Known bugs and current work -----------------------
40
41mark ends up on last byte of char. (#9047)
42
43Delete runtime/rgb.txt after a while
44
45Vim9 - Make everything work:
46- "filter #pat# ls" should work, #pat# is not a comment
47    vim9script
48    edit foobar
49    filter #foobar# ls
50- Check TODO items in vim9compile.c and vim9execute.c
51- use CheckLegacyAndVim9Success(lines) in many more places
52- For builtin functions using tv_get_string*() use check_for_string() to be
53  more strict about the argument type (not a bool).
54    done: balloon_()
55- Check many more builtin function arguments at compile time.
56    map() could check that the return type of the function argument matches
57    the type of the list or dict member. (#8092)
58    Same for other functions, such as searchpair().
59- Test try/catch and throw better, also nested.
60  Test that return inside try/finally jumps to finally and then returns.
61- Test that a function defined inside a :def function is local to that
62  function, g: functions can be defined and script-local functions cannot be
63  defined.
64- Unexpected error message when using "var x: any | x.key = 9", because "x" is
65  given the type number.  Can we use VAR_ANY?
66- Check performance with callgrind and kcachegrind.
67
68Once Vim9 is stable:
69- Add the "vim9script" feature, can use has('vim9script')
70- Change the help to prefer Vim9 syntax where appropriate
71- Add all the error numbers in a good place in documentation.
72- In the generic eval docs, point out the Vim9 syntax where it differs.
73- Use Vim9 for runtime files.
74    PR #7497 for autoload/ccomplete.vim
75
76Further Vim9 improvements, possibly after launch:
77- better implementation for partial and tests for that.
78- Compile options that are an expression, e.g. "expr:" in 'spellsuggest',
79  'foldexpr', 'foldtext', 'printexpr', 'diffexpr', 'patchexpr', 'charconvert',
80  'balloonexpr', 'includeexpr', 'indentexpr', 'formatexpr'.
81  Give an error if compilation fails. (#7625)
82  Alternatively: Detect a compiled function call and skip the expression
83  evaluation.
84  Use the location where the option was set for deciding whether it's to be
85  evaluated in Vim9 script context.
86- Handle command that is only a range more efficient than calling ISN_EXEC
87- implement :type, "import type"
88- implement enum,  "import enum".
89- implement class and interface: See |vim9-classes|
90- For range: make table of first ASCII character with flag to quickly check if
91  it can be a Vim9 command. E.g. "+" can, but "." can't.
92- Inline call to map() and filter(), better type checking.
93- Make accessing varargs faster: arg[expr]
94	EVAL expr
95	LOADVARARG (varargs idx)
96- When evaluating constants for script variables, some functions could work:
97    has(featureName), len(someString)
98- Implement as part of an expression: ++expr, --expr, expr++, expr--.
99
100
101Popup windows:
102- Preview popup not properly updated when it overlaps with completion menu.
103    (Yegappan Lakshmanan, 2021 May 22
104- In some cases prop_remove() does not work correctly. (#8261)
105- Add a flag to make a popup window focusable?
106    CTRL-W P cycle over any preview window or focusable popup, end up back in
107	     current window.
108    ? - switch between current window and all popup windows
109    Esc in popup window goes back to previous current window
110- Add a termcap entry for changing the cursor when it goes under the popup and
111  back.  like t_SI and t_EI  (t_SU and t_EU, where "U" means under?)
112- With terminal in popup, allow for popup_hide() to temporarily hide it.?
113- Make it possible to scroll horizontally when 'wrap' is off.  Does this
114  require an ascii scrollbar, like with the vertical one?
115- Fire some autocommand event after a new popup window was created and
116  positioned?  PopupNew?  Could be used to set some options or move it out of
117  the way. (#5737)
118  However, it may also cause trouble, changing the popup of another plugin.
119- Width is not computed correctly when minwidth and maxwidth are &columns
120  and padding and a scrollbar are used.  (#6676)
121- Should popup_getoptions() also return the mask?  #7774
122- Add a way to use popup_menu() synchronously: instead of invoking the
123  callback, return the choice. (Ben Jackson, #6534)
124- Use popup (or popup menu) for command line completion
125- When using a popup for the info of a completion menu, and there is not
126  enough space, let the popup overlap with the menu. (#4544)
127- Implement flip option.
128- Make redrawing more efficient and avoid flicker:
129    - put popup menu also in popup_mask?
130- Match does not have right BG color if line length equals popup width.
131  (#5658)
132- Any other commands to disable in a popup window?
133  Use ERROR_IF_POPUP_WINDOW for these.
134- Figure out the size and position better if wrapping inserts indent
135
136Text properties:
137- property is overruled by cursorline. (#8225).
138  Add better control over priority?  Make list of all highlighting, specify
139  where property fits in.
140  Or Should we let the textprop highlight overrule other (e.g. diff) highlight
141  if the priority is above a certain value?  (#7392)
142- Popup attached to text property stays visible when text is no longer
143  visible. (#7736)
144- Popup attached to text property stays visible when text is deleted with
145  "cc". (#7737)  "C" works OK.  "dd" also files in a buffer with a single
146  line.
147- Auto-indenting may cause highlighting to shift. (#7719)
148- "cc" does not call inserted_bytes(). (Axel Forsman, #5763)
149- Combining text property with 'cursorline' does not always work (Billie
150  Cleek, #5533)
151- See remarks at top of src/textprop.c
152
153'incsearch' with :s:
154- :s/foo  using CTRL-G moves to another line, should not happen, or use the
155  correct line (it uses the last but one line) (Lifepillar, Aug 18, #3345)
156- Also support range: :/foo/,/bar/delete
157- Also support for user command, e.g. Cfilter
158- :%s/foo should take the first match below the cursor line, unless there
159  isn't one?
160  Then :%s?foo should take the first match above the cursor line.
161
162Prompt buffer:
163- Add a command line history, using up/down keys.  issue #5010
164- delay next prompt until plugin gives OK?
165- add prompt_addtext({buf}, {expr})	none	add text to a prompt buffer
166
167Terminal debugger:
168- Make prompt-buffer variant work better.
169- Add option to not open the program window.  It's not used when attaching to
170  an already running program. (M. Kelly)
171- When only gdb window exists, on "quit" edit another buffer.
172- Use a sign group
173- Termdebug does not work when Vim was built with mzscheme: gdb hangs just
174  after "run".  Everything else works, including communication channel.  Not
175  initializing mzscheme avoid the problem, thus it's not some #ifdef.
176- Add support for lldb?  issue #3565
177- Could we do something similar for debugging Vim scripts?  At least see the
178  script while stepping through it.  Simple version would use an extra window.
179  More complete solution would actually run Vim in a Terminal and control it
180  with another Vim instance.
181
182Terminal emulator window:
183- Can escape a terminal popup with win_gotoid(), should be an error
184- No support for underline color, t_8u.
185- When in terminal-Normal mode when the job finishes, the cursor jumps to the
186  end but the window is not updated.  This only happens when typing "a".
187      :term bash -c "for V in {0..5}; do echo $V; sleep 1; done"
188- When started with ":terminal ++close" and the shell exits but there is a
189  background process, the window remains open, because the channel still
190  exists (and output still shows).  Perhaps close the window when an explicit
191  ++close was used? (#5931)
192- Using "CTRL-W :confirm quite" and selecting "yes" should work like ":quit!".
193    (Harm te Hennepe, #6129)
194- When the job in the terminal doesn't use mouse events, let the scroll wheel
195  scroll the scrollback, like a terminal does at the shell prompt. #2490
196  A bit like using CTRL-W N first.
197  Jump back like with "a" when any key is typed.
198  And use modeless selection.  #2962
199- Use CTRL-W CTRL-K to enter a digraph? #5371
200- When Vim runs in the terminal and changes the title, the statusline needs to
201  be redrawn.
202- GUI: When using ":set go+=!" a system() call causes the hit-enter prompt.
203  (#3327)
204- Allow for specifying the directory, with ++cwd={dir}.
205- With a vertical split only one window is updated. (Linwei, 2018 Jun 2,
206  #2977)
207- When pasting should call vterm_keyboard_start_paste(), e.g. when using
208  K_MIDDLEMOUSE, calling insert_reg().
209- Users expect parsing the :term argument like a shell does, also support
210  single quotes.  E.g. with:  :term grep 'alice says "hello"'  (#1999)
211- Win32: Redirecting input does not work, half of Test_terminal_redir_file()
212  is disabled.
213- Win32: Redirecting output works but includes escape sequences.
214- Win32: Make terminal used for :!cmd in the GUI work better.  Allow for
215  redirection.
216- When the job only outputs lines, we could handle resizing the terminal
217  better: store lines separated by line breaks, instead of screen lines,
218  then when the window is resized redraw those lines.
219- Redrawing is slow with Athena and Motif. (Ramel Eshed)
220- For the GUI fill termios with default values, perhaps like pangoterm:
221  http://bazaar.launchpad.net/~leonerd/pangoterm/trunk/view/head:/main.c#L134
222- When 'encoding' is not utf-8, or the job is using another encoding, setup
223  conversions.
224
225Include patch #6290: recognize shell directory change.
226
227When using 'cryptmethod' xchaha20 the undo file is not encrypted.
228Need to handle extra bytes.
229
230Test_communicate_ipv6(): is flaky on many systems
231Fails in line 64 of Ch_communicate, no exception is thrown.
232
233Patch for Template string: #4634
234Have another look at the implementation.
235
236Rename getdigraphlist -> digraph_getlist() etc.
237
238Valgrind reports memory leaks in test_options.
239Valgrind reports overlapping memcpy in
240    test_conceal.3
241    test_edit.1
242    test_functions.4
243    test_ins_complete.3
244    test_method
245    test_normal
246    test_popupwin.35 et al.
247    test_search_stat
248Memory leak in test_debugger
249Memory leak in test_paste, using XtOpenDisplay several times
250OLD:
251TODO: be able to run all parts of test_alot with valgrind separately
252Memory leak in test_alot with pyeval() (allocating partial)
253Memory leak in test_alot with expand()
254Memory leaks in test_channel? (or is it because of fork())
255
256Idea: when typing ":e /some/dir/" and "dir" does not exist, highlight in red.
257
258":set &shellpipe" and ":set &shellredir" should use the logic from
259initialization to figure out the default value from 'shell'.  Add a test for
260this.
261
262MS-Windows: did path modifier :p:8 stop working?  #8600
263
264test_arglist func Test_all_not_allowed_from_cmdwin() hangs on MS-Windows.
265
266Mapping with partial match not executed properly in GTK. (Ingo Karkat, #7082)
267
268Problem that a previous silent ":throw" causes a following try/catch not to
269work. (ZyX, 2013 Sep 28) With examples: (Malcolm Rowe, 2015 Dec 24)
270Also see #8487 for an example.
271
272Patch to implement the vimtutor with a plugin: #6414
273Was originally written by Felipe Morales.
274
275Request to use "." for the cursor column in search pattern \%<.c and \%<.v.
276(#8179)
277
278Remove SPACE_IN_FILENAME ? It is only used for completion.
279
280When 'term' starts with "foot" then default t_TI and t_TE to the values used
281for the builtin xterm termcap.
282
283Adding "10" to 'spellsuggest' causes spell suggestions to become very slow.
284(#4087)  Did patch 8.2.2379 help?
285Also, z= in German on a long word can take a very long time, but CTRL-C to
286interrupt does not work. Where to add ui_breakcheck()?
287New English spell files also have very slow suggestions.
288
289Searching for \%'> does not find anything when using line Visual selection.
290Probably because it's using MAXCOL.  #8238
291
292Make "g>" and "g<" in Visual mode move the text right or left.
293Also for a block selection.  #8558
294
295Add optional argument to virtcol() that specifies "start", "cursor" or "end"
296to tell which value from getvvcol() should be used. (#7964)
297Value returned by virtcol() changes depending on how lines wrap.  This is
298inconsistent with the documentation.
299
300Making breakat support multibyte characters (Yasuhiro Matsumoto, #6598)
301Scroll doesn't work correctly, why?
302
303glob() and globfile() do not always honor 'wildignorecase'. #8350
304globpath() does not use 'wildignorecase' at all?
305
306Add 'termguiattr' option, use "gui=" attributes in the terminal?  Would work
307with 'termguicolors'. #1740
308
309Patch for blockwise paste reporting changes: #6660.  Asked for a PR.
310
311Patch to make fillchars global-local. (#5206)
312
313Missing filetype test for bashrc, PKGBUILD, etc.
314
315Add an option to not fetch terminal codes in xterm, to avoid flicker when t_Co
316changes.
317
318When using ":bwipe!" also get rid of references to be buffer, e.g. in the
319jumplist and alternate file.
320
321Add an option to start_timer() to return from the input loop with K_IGNORE.
322This is useful e.g. when a popup was created that disables mappings, we need
323to return from vgetc() to make this happen.  #7011
324
325Expanding <mods> should put the tab number from cmdmod.tab before "tab".
326Any way to convert "$" back by using a special value? (#6901)
327
328Can we detect true color support?  https://gist.github.com/XVilka/8346728
329Try setting a color then request the current color, like using t_u7.
330
331Regexp to search for duplicate lines does not work correctly:
332/\(^.*\n\)\1  (Chris Morgan, #6239)
333
334MS-Windows: when writing undo file the infostreams are copied in
335mch_copy_file_attribute(), that seems unnecessary. (#7925)
336Add a flag to only copy attributes?
337
338Make the jumplist behave like a tag stack. (#7738)  Should there be a more
339time bound navigation, like with undo?
340
341Changing a capturing group to non-capturing changes the result: #7607
342    :echo matchstr('aaa bbb', '\(.\{-1,}\>\)\|.*')
343    aaa
344    :echo matchstr('aaa bbb', '\%(.\{-1,}\>\)\|.*')
345    aaa bbb
346Should also work without any group:
347    :echo matchstr('aaa bbb', '.\{-1,}\>\|.*')
348    aaa bbb  (should be aaa)
349
350Should add a match/str/list/pos method that also returns the test and position
351of submatches.  #8355
352
353Syntax highlight for a region does not work with a "nextgroup" if the start
354match is empty. #8449
355
356Check out PR #543 (Roland Puntaier).
357Patch for multibyte characters in langmap and applying a mapping on them.
358(Christian Brabandt, 2015 Jun 12, update July 25)
359Is this the right solution?  Need to cleanup langmap behavior:
360- in vgetorpeek() apply langmap to the typeahead buffer and put the result in
361  a copy-buffer, only when langmap is appropriate for the current mode. Then
362  check for mapping and let gotchars() work on the copy-buffer.
363- Remove LANGMAP_ADJUST() in other parts of the code.  Make sure the mode is
364  covered by the above change.
365So that replaying the register doesn't use keymap/langmap and still does the
366same thing.
367Also see #737: langmap not applied to replaying recording.
368
369Buffer autocommands are a bit inconsistent.  Add a separate set of
370autocommands for the buffer lifecycle:
371    BufIsCreated  (after buffer ID exists)
372    BufIsLoaded   (after buffer ID has content)
373    BufIsUnloaded (after buffer ID no longer has)
374    BufIsWiped    (after buffer ID was wiped)
375    BufIsRenamed  (after buffer ID gets another name)
376The buffer list and windows are locked, no changes possible
377
378Matchparen doesn't remove highlight after undo. (#7054)
379Is OK when syntax HL is active.
380
381Currently Del can be used to delete the last character of a typed count.
382Can it also be used to delete an incomplete Normal mode command? (#7096)
383After an operator: should work.  After "a" or "i" for text objects: should
384work.
385
386Using "au!" after "filetype on" is a bit slow.  Can the matching of
387autocommands be made faster?  (#7056)
388
389Append in Visual block mode inserts the wrong character.
390Test_visual_block_mode() already has the proper check, which is commented out.
391(#8288)
392
393Add the <=> (spaceship) operator and "cond ?< expr ?= expr ?> expr"
394    replace this:
395	let left = GetLeftFunc()
396	let right = GetRightFunc()
397	let res = left < right ? lower : left == right ? equal : upper
398    by:
399	let res = GetLeftFunc() <=> GetRightFunc() ?< lower ?= equal ?> upper
400Patch to make :q work with local arglist. (Christian Brabandt, #6286)
401
402Why does Test_invalid_sid() not work in the GUI?
403
404":pedit" ignores the local working directory when 'pvp' is set (#7267)
405
406Lua: updating wrong buffer when using newly created, unloaded buffer.
407(#6539)
408
409When "+ register is set then "" points to it.  If another Vim grabs the "+
410register, then "" doesn't contain anything.  Make it still follow "+.
411(#6435)
412
413File marks merging has duplicates since 7.4.1925. (Ingo Karkat, #5733)
414
415"make test_gui" crashed in submenu_change(). Fix and remove workaround in
416add_pixmap_args().
417Athena is OK.
418Motif: Build on Ubuntu can't enter any text in dialog text fields.
419Running test_gui and test_gui_init with Motif sometimes kills the window
420manager.  Problem with Motif?
421
422Patch to add :argdedupe. (Nir Lichtman, #6235)
423
424When editing a file with ":edit" the output of :swapname is relative, while
425editing it with "vim file" it is absolute. (#355)
426Which one should it be?
427
428:map output does not clear the reset of the command line.
429(#5623, also see #5962)
430
431Problem with auto-formatting - inserting space and putting cursor before added
432character. (#6154)
433
434undo result wrong: Masato Nishihata, #4798
435
436After recovering from a swap file the undofile should not be used, it causes
437corruption.  (#6631)
438
439When the computer crashes while writing the undofile, the contents may be
440lost.  Write to a temp file, fsync and rename. (#8879)
441
442When 'lazyredraw' is set sometimes the title is not updated.
443(Jason Franklin, 2020 Feb 3)  Looks like a race condition.
444
445With bash ":make" does not set v:shell_error.  Possible solution: set
446'shellpipe' to "2>&1| tee %s; exit ${PIPESTATUS[0]}"  #5994
447
448Using mode() when "/pat" is used in Visual mode returns "v" instead of "c",
449which is not useful.  Return "c/v" instead.  And "c/o" when using "d/pat".
450#6127
451
452Add a cterm attribute for "dimmed" or "faint" text. (#8269)
453
454When 'fileignorecase' is set ":e testfile.c" works to edit TestFile.c, but
455":find testfile.c" does not ignore case.
456Might be related to #6088.
457
458Error for reverse range when using :vimgrep in file "[id-01] file.txt".
459(#6919)
460
461When changing the crypt key the buffer should be considered modified.
462Like when changing 'fileformat'.  Save the old key in save_file_ff().
463(Ninu-Ciprian Marginean)
464
465Strange sequence of BufWipeout and BufNew events while doing omni-complete.
466(Paul Jolly, #5656)
467Get BufDelete without preceding BufNew. (Paul Jolly, #5694)
468    Later more requests for what to track.
469    Should we add new events that don't allow any buffer manipulation?
470    Really only for dealing with appearing and disappearing buffers, load and
471    unload.
472BufWinenter event not fired when saving unnamed buffer. (Paul Jolly, #5655)
473Another spurious BufDelete. (Dani Dickstein, #5701)
474
475Wrong error when using local arglist. (Harm te Hennepe, #6133)
476
477Test loose_clipboard() by selecting text before suspending.
478
479Undo puts cursor in wrong line after "cG<Esc>" undo.
480
481Implement completion for "breakadd".  Should expand the second argument, e.g.
482"func", and then function names after ":breakadd func".  Including
483script-local functions.
484Also for ":profile".
485
486:unmap <c-n> gives error but does remove the mapping. (Antony Scriven, 2019
487Dec 19)
488
489Patch to add an option to enable/disable VTP.  (Nobuhiro Takasaki, #5344)
490Should have three values: empty, "off", "on".  Name it 'winterm'?
491
492Patch to fix session file when using multiple tab pages. (Jason Franklin, 2019
493May 20)
494Also put :argadd commands at the start for all buffers, so that their order
495remains equal?  Then %argdel to clean it up.  Do try this with 'hidden' set.
496Also #5326: netrw buffers are not restored.
497
498When 'backupdir' has a path ending in double slash (meaning: use full path of
499the file) combined with 'patchmode' the file name is wrong. (#5791)
500
501Completion mixes results from the current buffer with tags and other files.
502Happens when typing CTRL-N while still searching for results.  E.g., type "b_"
503in terminal.c and then CTRL-N twice.
504Should do current file first and not split it up when more results are found.
505(Also #1890)
506
507Undo history wrong when ":next file" re-uses a buffer. (#5426)
508ex_next() should pass flag to do_argfile(), then to do_ecmd().
509Is there a test for this?
510
511Help for ":argadd fname" says that if "fname" is already in the argument list
512that entry is used.  But instead it's always added. (#6210)
513Add flag AL_FIND_ADD, if there is one argument find it in the list.
514
515":bnext" in a help buffer is supposed to go to the next help buffer, but it
516goes to any buffer, and then :bnext skips help buffers, since they are
517unlisted. (#4478)
518
519Statusline highlighting error, off by one. (#5599)
520
521":find" with 'path' set to "data*" does not find files, while completion does
522find them. (Max Kukartsev, #6218)
523
524Enable 'termbidi' if $VTE_VERSION >= 5703 ?
525
526Sound: support on Mac?  Or does libcanberra work there?
527
528Python 3.8 doesn't work. (Antonios Hadjigeorgalis, #5509)
529
530The :syntax cchar value can only be a single character.  It would be useful to
531support combining characters. (Charles Campbell)  Also #4687
532
533"--cleanFOO" does not result in an error. (#5537)
534
535Output from assert_equalfile() doesn't give a hint about what's different.
536Assuming the files are text, print the line with the difference.
537
538Result of synID() sometimes wrong in help files. (#5252)
539
540When a help file is opened that doesn't have "ft=help" in the modeline then
541the FileType is first set to "text" before it is set to "help". (#8099)
542
543Problem showing a line if the number column width changes when using "o".
544(Mateusz Morusiewicz, #4245)
545
546When using :packadd for a replacement language plugin, it is loaded after the
547default one.  #4698
548
549When using :packadd files under "later" are not used, which is inconsistent
550with packages under "start". (xtal8, #1994)
551
552Patch to add new motion ]( and ]{.  (Yasuhiro Matsumoto, #5320)
553Better: use the "z" prefix.  or ]t) and [t(.
554
555Visual highlight not removed when 'display' is "lastline" and line doesn't
556fit. (Kevin Lawler, #4457)
557
558Current position in the changelist should be local to the buffer. (#2173)
559
560Does not build with MinGW out of the box:
561- _stat64 is not defined, need to use "struct stat" in vim.h
562- WINVER conflict, should use 0x0600 by default?
563- INT_MAX not defined: need to include <limits.h> in vim.h
564
565Display messed up with matchparen, wrapping and scrolling. (#5638)
566Screen update bug related to matchparen.  (Chris Heath, 2017 Mar 4, #1532)
567
568When getting a focus event halfway a mapping this aborts the mapping.  E.g.
569when "qq" is mapped and after the first "q" the mouse is moved outside of the
570gvim window (with focus follows mouse), then the K_FOCUSLOST key is put in the
571input buffer. (#5302)
572
573:buffer completion does not escape "+" properly and results in a regexp error.
574(#5467)
575
576Check_external_diff() is used too often. (Daniel Hahler, #4800)
577
578Win32: after "[I" showing matches, scroll wheel messes up screen. (Tsakiridis,
5792007 Feb 18)
580Patch by Alex Dobrynin, 2007 Jun 3.  Also fixes other scroll wheel problems.
581
582Add a WindowScrolled event.  Trigger around the same time as CursorMoved.
583Can be used to update highlighting. #3127  #5181
584
585Incorrect formatting with autoindent. (Sebastian Gniazdowski, #4909)
586
587Patch to add the :bvimgrep command.  (Christian Brabandt, 2014 Nov 12)
588Updated 2016 Jun 10, #858  Update 2017 Mar 28: use <buffer>.
589Better use ":bufgrep" ?
590
591Improve fallback for menu translations, to avoid having to create lots of
592files that source the actual file.  E.g. menu_da_de -> menu_da
593Include part of #3242?
594
595Patch to have text objects defined by arbitrary single characters. (Daniel
596Thau, 2013 Nov 20, 2014 Jan 29, 2014 Jan 31)
597Added tests (James McCoy, 2016 Aug 3, #958).  Still needs more work.
598
599Would be nice to set tab-local values for 'diffexpr' and 'diffopt'.  Use
600t:diffexpr_option t:diffopt_option? (#4782)
601
602Internal diff doesn't handle binary file like external diff does. (Mike
603Williams, 2018 Oct 30)
604
605'[ mark in wrong column after put. (#4776)
606
607Problem with :tlmenu: Detach item added with all modes?  Issue #3563.
608
609Add an argument to expandcmd() to expand like ":next" does.
610
611When both "a" and "l" is in 'formatoptions' then auto-formatting also happens
612in a long line. #5189
613
614The quoting of the [command] argument of :terminal is not clearly documented.
615Give a few examples. (#4288)
616
617Opening a file with --remote-tab-silent that matches 'wildignore' does not
618work, results in "E479: No match". (#4610)
619
6207   Add an option to add one pixel column to the character width?  Lucida
621    Console italic is wider than the normal font ("d" overlaps with next char).
622    Opposite of 'linespace': 'columnspace'.
623Patch for this (Tristan Konolige, #1011, only added the option, no implem.)
624
625Bug: script written with "-W scriptout" contains Key codes, while the script
626read with "-s scriptin" expects escape codes.  Probably "scriptout" needs to
627be adjusted. (Daniel Steinberg, 2019 Feb 24, #4041)
628
629Add a string to the 'display' option ("smoothscroll" ?) to make CTRL-E and
630CTRL-Y scroll one screen line, also if this means the first line doesn't start
631with the first character (like what happens with a last line that doesn't
632fit).  Display "<<<" at the start of the first visible line (like "@@@" is
633displayed in the last line). (Arseny Nasokin,  #5154)
634
635Window size changes after closing a tab. (#4741)
636
637Problem with colors in terminal window. (Jason Franklin, 2019 May 12)
638
639Color schemes:
640NOTE: modernizing the default colorschemes _AND_ introducing new ones is now
641a project in its own right: https://github.com/vim/colorschemes. Feel free to
642reach out if you want to lend a hand.
643- Lifepillar: Updated/cleaned up color schemes:
644  https://github.com/lifepillar/vim8-colorschemes.
645- Include a few color schemes, based on popularity:
646  - http://www.vim.org/scripts/script_search_results.php?keywords=&script_type=color+scheme&order_by=rating&direction=descending&search=search
647http://vimawesome.com/?q=tag:color-scheme
648- Use names that indicate their appearance (Christian Brabandt, 2017 Aug 3)
649  - monokai - Xia Crusoe (2017 Aug 4)
650  - seoul256 - Christian Brabandt (2017 Aug 3)
651  - gruvbox -  Christian Brabandt (2017 Aug 3) (simplified version from
652        Lifepillar, 2018 Jan 22, #2573)
653  - janah - Marco Hinz (2017 Aug 4)
654  - apprentice - Romain Lafourcade (2017 Aug 6)  remarks about help file #1964
655- Suggested by Hiroki Kokubun:
656  - [Iceberg](https://github.com/cocopon/iceberg.vim) (my one)
657  - [hybrid](https://github.com/w0ng/vim-hybrid)
658- Include solarized color scheme?, it does not support termguicolors.
659  - Sanitized version of pablo (Lifepillar, 2017 Nov 21)
660
661Bug: "vipgw" does not put cursor back where it belongs. (Jason Franklin, 2019
662Mar 5)
663
664Some composing characters actually add a cell width to the character they are
665on top off, making the whole thing two characters wide. (#4526)
666
667Should we include some part of pull request #4505, not increment changedtick
668in some cases?  E.g. for ":write" when the changed flag was already off, the
669buffer didn't change at all.
670
671Session file contains absolute paths when "curdir" is removed form
672'sessionoptions', making it impossible to have a session with a relative path.
673(#4450)
674
675Session file only contains local option values for buffers that are in a
676window, not other buffers. (#7532)
677
678Script generated by :mksession does not work well if there are windows with
679modified buffers
680  change "silent only" into "silent only!"
681  change "edit fname" of first buffer to "hide edit fname"
682  skip "badd fname" if "fname" is already in the buffer list
683  remove remark about unloading buffers from documentation
684
685When session file has name in argument list but the buffer was deleted, the
686buffer is not deleted when using the session file. (#1393)
687Should add the buffer in hidden state.
688
689When a session file is created and there are "nofile" buffers, these are not
690filled.  Need to trigger BufReadCmd autocommands.  Also handle deleting the
691initial empty buffer better. (ZyX, 2015 March 8)
692
693Setting the spell file in a session only reads the local additions, not the
694normal spell file. (Enno Nagel, 2014 Mar 29)
695
696Directory wrong in session file, caused by ":lcd" in BufEnter autocommand.
697(Felix Kater, 2009 Mar 3)
698
699Something wrong with session that has "cd" commands and "badd", in such a way
700that Vim doesn't find the edited file in the buffer list, causing the
701ATTENTION message?  (Tony Mechelynck, 2008 Dec 1)
702Also: swap files are in ~/tmp/  One has relative file name ".mozilla/...".
703
704'foldcolumn' in modeline applied to wrong window when using a session. (Teemu
705Likonen, March 19)
706
707When using a timer callback vgetc_busy is reset, allowing for using input().
708But in a channel callback this does not happen.  We need to do something
709similar to check_due_timer().  Also see #3809.
710
711C syntax: {} inside () causes following {} to be highlighted as error.
712(Michalis Giannakidis, 2006 Jun 1)
713
714Check: __attribute__((format(printf, on semsg() and siemsg().  Where was this
715added?
716
717Add test for urxvt mouse codes.  Also test that mouse coordinates can be
718negative. (see #4326)
719
720'cmdheight' has a tab-local value, but it cannot be obtained with
721`:echo gettabwinvar(2, 1, '&cmdheight')` returns the value for the _current_
722tab page. (Ingo Karkat, #4324)
723:call settabwinvar(1, 1, '&cmdheight', 2) also doesn't work well.
724
725This modeline throws unexpected errors: (#4165)
726    vim: syn=nosyntax
727
728Make balloon_show() work outside of 'balloonexpr'?  Users expect it to work:
729#2948. (related to #1512?)
730Also see #2352, want better control over balloon, perhaps set the position.
731Should also be possible to add highlighting, like in the status line?
732balloonexpr() on MS-Windows GUI doesn't handle accented chars? (nivaemail,
7332018 Sep 14)
734Another request: #3811.
735
736More warnings from static analysis:
737https://lgtm.com/projects/g/vim/vim/alerts/?mode=list
738
739Still a E315 error when using terminal. (Masato Nishihata, #3959)
740
741Not existing directory in CDPATH leads to two shell calls. (#4525)
742
743Use dict_iterate_start() / dict_iterate_next() instead of relying on the
744internals of the dict structure.
745
746nvo-mode mapping works on Windows, not on Linux. (#3678)
747
748Missing tests for:
749- add_termcap_entry()
750
751Redo only remembers the last change.  Could use "{count}g." to redo an older
752change.  How does the user know which change?  At least have a way to list
753them: ":repeats".  Add to history, like search history and command line history.
754
755Pasting foo} causes Vim to behave weird. (John Little, 2018 Jun 17)
756Related to bracketed paste.  I cannot reproduce it.
757
758When 'confirm' is set a "silent q" doesn't show the prompt.  It should in this
759case. (Nate Peterson, 2019 Jan 31, #3892)
760For "silent! q" it should not prompt and just fail.
761
762Add <aevent>, which expands to the currently triggered autocommand event name.
763(Daniel Hahler, #4232)  Or add it to v:event (easier to use but slightly more
764expensive).
765
766Some xterm responses are not properly handled: (Markus Gömmel, 2019 Apr 1)
767    DCS 0 $ r Pt ST    should be ignored.
768    DCS 0 + r/Pt/  ST  already ignored?
769
770Using CTRL-L to add a character to the search string that contains \v,
771punctuation is repeated. (Smylers, 2018 Nov 17, #3621)
772
773Using single wide base character with double wide composing character gives
774drawing errors.  Fill up the base character?  (Dominique, #4328)
775
776Problem with two buffers with the same name a/b, if it didn't exist before and
777is created outside of Vim. (dskloetg, 2018 Jul 16, #3219)
778
779When 'sidescrolloff' is set, using "zl" to go to the end of the line, suddenly
780scrolls back.  Should allow for this scrolling, like 'scrolloff' does when
781using CTRL-E. (Yee Cheng Chin, #3721)
782
783Invalid memory access with old regexp engine. (Dominique Pelle, 2018 Sep 3,
784#3405)  Introduced by 8.0.1517, which was fixing another memory access error.
785(Sep 8)
786
787Add function to make use of internal diff, working on two lists and returning
788unified diff (list of lines).
789
790When splitting a window with few text lines, the relative cursor position is
791kept, which means part of the text isn't displayed.  Better show all the text
792when possible. (Dylan Lloyd, #3973)
793
794Make ":interactive !cmd" stop termcap mode, also when used in an autocommand.
795(#3692)
796
797Add buffer argument to undotree(). (#4001)
798
799matchaddpos() gets slow with many matches.  Proposal by Rick Howe, 2018 Jul
80019.
801
802Add something like 'fillchars' local to window, but allow for specifying a
803highlight name.  Esp. for the statusline.
804And "extends" and "precedes" are also useful without 'list' set.  Also in
805'fillchars' or another option?
806
807Sourceforge Vim pages still have content, redirect from empty page.
808Check for PHP errors. (Wayne Davison, 2018 Oct 26)
809
810Problem with Visual yank when 'linebreak' and 'showbreak' are set.
811Patch with tests, but it's not clear how it is supposed to work. (tommm, 2018
812Nov 17)  Asked about this, Dec 22. Christian will have a look.
813
814home_replace() uses $HOME instead of "homedir". (Cesar Martins, 2018 Aug 9)
815
816When the status line uses term_gettitle(), it does not get updated when the
817terminal title changes. (Josh Triplett, 2018 Sep 9, #3418)
818How would we know that the status line needs to be updated?
819
820Update for xim-input-style help (Tony Mechelynck, 2019 Jan 10).
821Feedback from someone who uses this?
822
823Only output t_Cs when t_Ce is also set.  do not use Cs and Ce termcap entries.  (Daniel Hahler, 2018 Sep 25)
824Add t_cS and t_cR for cursor color select and reset.  Use Cs and Cr terminfo
825values.
826
827Further xdiff changes:
828- More options, e.g. different kind of whitespace diff.
829- when editing text, update the surrounding diff blocks.
830- omit diff.exe from distribution
831- Can we make this show differences within a line?
832- add option to use external diff above a certain size.
833
834Difference between two regexp engines: #3373
835
836Patch to add ch_listen() (Yasuhiro Matsumoto, 2018 Nov 26, #3639)
837What is the practical use for this?  Need an example.
838
839When the last line wraps, selecting with the mouse below that line only
840includes the first screen line. (2018 Aug 23, #3368)
841
842Refactored HTML indent file. (Michael Lee, #1821)
843Asked to write a test.
844
845Merge checking for 'cursorline' and 'concealcursor', see neovim #9492.
846
847Add a windowID argument to placing a sign, so that it only shows up in one
848window for the buffer.
849
850Win32 key codes are messy.  Mike Williams tried to fix that, but now old
851mappings no longer work.  Create a new terminal for the better solution?
852
853Compiler warnings (geeknik, 2017 Oct 26):
854- signed integer overflow in do_sub() (#2249)
855- signed integer overflow in get_address() (#2248)
856- undefined left shift in get_string_tv() (#2250)
857
858Add Native language protocol server (LSP) support. (Yegappan Lakshmanan, 2018
859Oct 28)
860
861Add more testing of the GTK GUI.
862- gtk_test_widget_click() can be used to simulate a click in a widget.
863
864Tests failing for "make testgui" with GTK:
865- Test_setbufvar_options()
866- Test_exit_callback_interval()
867
868Patch to be able to use hex numbers with :digraph. (Lcd, 2015 Sep 6)
869Update Sep 7.  Update by Christian Brabandt, 2015 Sep 8, 2016 Feb 1.
870Patch to be able to disable default digraphs (incomplete) (Eric Pruitt, 2018
871Nov 22).
872
873Patch to list user digraphs. (Christian Brabandt, 2012 Apr 14)
874
875Patch to add digraph() function. (Christian Brabandt, 2013 Aug 22, update Aug
87624)
877
878Try out background make plugin:
879  https://github.com/AndrewVos/vim-make-background
880or asyncmake:
881  https://github.com/yegappan/asyncmake
882
883Add an option with file patterns, to be used when unloading a buffer: If there
884is a match, remove entries for the buffer from marks, jumplist, etc.  To be
885used for git temp files.
886
887Cursor in wrong position when line wraps. (#2540)
888
889Setting 'columns' in a BufEnter autocommand causes a second tab width to
890behave strangely, as if there is a gap and a vertical window separator.
891(Michael Soyka, 2018 Sep 23, #3477)
892
893Make {skip} argument of searchpair() consistent with other places where we
894pass an expression to evaluate.  Allow passing zero for "never skip".
895
896Add an option similar to 'lazyredraw' to skip redrawing while executing a
897script or function.
898
899When using a menu item while the "more" prompt is displayed doesn't work well.
900E.g. after using help->version.  Have a key that ends the "more" prompt and
901does nothing otherwise?
902
903MS-Windows: write may fail if another program is reading the file.
904If 'readonly' is not set but the file appears to be readonly later, try again
905(wait a little while).
906CreateFile() returns ERROR_SHARING_VIOLATION (Linwei, 2018 May 5)
907
908Using --remote to open a file in which a # appears does not work on
909MS-Windows.  Perhaps in \#  the \ is seen as a path separator. (Axel Bender,
9102017 Feb 9)  Can we expand wildcards first and send the path literally to the
911receiving Vim?  Or make an exception for #, it's not useful remotely.
912
913Should add a test for every command line argument.  Check coverage for what is
914missing: --nofork, -A , -b, -h, etc.
915
916":au * * command" should not be allowed, only use * for event when listing or
917deleting autocmds, not when adding them.
918
919With 'foldmethod' "indent" and appending an empty line, what follows isn't
920included in the existing fold.  Deleting the empty line and undo fixes it.
921(Oleg Koshovetc, 2018 Jul 15, #3214)
922
923Patch to support "xxd -ps". (Erik Auerswald, 2018 May 1)
924Lacks a test.
925
926Column number is wrong when using 'linebreak' and 'wrap'. (Keith Smiley, 2018
927Jan 15, #2555)
928
929":bufdo e" disabled syntax HL in windows other than the current. (BPJ)
930
931Check argument of systemlist(). (Pavlov)
932
933No maintainer for Vietnamese translations.
934No maintainer for Simplified Chinese translations.
935
936Python indenting: alternative way to indent arguments:
937http://orchistro.tistory.com/236
938Should be supported with a flag.
939
940Add the debug command line history to viminfo.
941
942Add Makefiles to the runtime/spell directory tree, since nobody uses Aap.
943Will have to explain the manual steps (downloading the .aff and .dic files,
944applying the diff, etc.
945
946Pasting a register in Visual mode cannot be repeated. (Mahmoud Al-Qudsi, 2018
947Apr 26, #2849)
948
949User dictionary ~/.vim/spell/lang.utf-8.add not used for spell checking until a
950word is re-added to it. (Matej Cepl, 2018 Feb 6)
951
952Fold at end of the buffer behaves inconsistently. (James McCoy, 2017 Oct 9)
953
954With foldmethod=syntax and nofoldenable comment highlighting isn't removed.
955(Marcin Szewczyk, 2017 Apr 26)
956
957Using 'wildignore' also applies to literally entered file name.  Also with
958:drop (remote commands).
959
960Implement option_save() and option_restore():
961option_restore({list})					*option_restore()*
962		Restore options previously saved by option_save().
963		When buffer-local options have been saved, this function must
964		be called when the same buffer is the current buffer.
965		When window-local options have been saved, this function must
966		be called when the same window is the current window.
967		When in the wrong buffer and/or window an error is given and
968		the local options won't be restored.
969
970option_save({list})					*option_save()*
971		Saves the options named in {list}.  The returned value can be
972		passed to option_restore().  Example: >
973			let s:saved_options = option_save([
974			    \ 'ignorecase',
975			    \ 'iskeyword',
976			    \ ])
977			 au <buffer> BufLeave *
978			    \ call option_restore(s:saved_options)
979<		The advantage over using `:let` is that global and local
980		values are handled and the script ID is restored, so that
981		`:verbose set` will show where the option was originally set,
982		not where it was restored.
983  Alternatively: save and restore ALL options.  Implementation needs to use
984	copy-on-write.  Return an ID from option_save(), when
985	option_restore(ID) is called give an error if another option_save()
986	was called in the meantime, they must be balanced.
987
988"gvim --remote" from a directory with non-word characters changes the current
989directory (Paulo Marcel Coelho Arabic, 2017 Oct 30, #2266)
990Also see #1689.
991
992When 'virtualedit' is "all" and 'cursorcolumn' is set, the wrong column may be
993highlighted. (van-de-bugger, 2018 Jan 23, #2576)
994
995No profile information for function that executes ":quit". (Daniel Hahler,
9962017 Dec 26, #2501)
997
998A function on a dictionary is not profiled. (ZyX, 2010 Dec 25)
999
1000Add script number to profile?  (#3330 breaks tests).
1001
1002A function defined locally and lambda's are not easily recognized.
1003Mention where they were defined somewhere.
1004
1005ml_get errors with buggy script. (Dominique, 2017 Apr 30)
1006
1007Error in emsg with buggy script. (Dominique, 2017 Apr 30)
1008
1009Join truncates xml comment. (Dmitrii Tcyganok, 2017 Dec 24, #2494)
1010Requires 'formatoptions' to include "j". (Gary Johnson, 2017 Dec 24)
1011
1012Patch to support hunspell. (Matej Cepl, Jan 2018, #2500) Based on older patch
1013in #846)
1014Doesn't work on Windows yet.  Not ready to included, hard coded paths.
1015
1016Win32 GUI: when running a fast timer, the cursor no longer blinks.
1017Was reported: cursor blinks in terminal on widows with a timer. (xtal8, #2142)
1018
1019When a timer is running and typing CTRL-R on the command line, it is not
1020redrawn properly. (xtal8, 2017 Oct 23, #2241)
1021
1022In an optional package the "after" directory is not scanned?
1023(Renato Fabbri, 2018 Feb 22)
1024
1025Patch for Neovim concerning restoring when closing help window. (glacambre
1026neovim #7431)
1027
1028Patch for improving detecting Ruby on Mac in configure. (Ilya Mikhaltsou, 2017
1029Nov 21)
1030
1031When t_Co is changed from termresponse, the OptionSet autocommand event isn't
1032triggered.  Use the code from the end of set_num_option() in
1033set_color_count().
1034
1035Add another autocommand like TermResponse that is fired for the other terminal
1036responses, such as bg and fg.  Use "bg", "fg", "blink", etc. for the name.
1037
1038When using command line window, CmdlineLeave is triggered without
1039CmdlineEnter.  (xtal8, 2017 Oct 30, #2263)
1040Add some way to get the nested state.  Although CmdwinEnter is obviously
1041always nested.
1042
1043matchit hasn't been maintained for a long time.  #955.
1044
1045Problem with 'delcombine'. (agguser, 2017 Nov 10, #2313)
1046
1047'delcombine' does not work for the command line. (Tony Mechelynck, 2009 Jul
104820)
1049
1050MS-Windows: buffer completion doesn't work when using backslash (or slash)
1051for a path separator. (xtal8, #2201)
1052
1053Would be nice for Insert mode completion to highlight the text that was added
1054(and may change when picking another completion).
1055
1056Test more runtime files.
1057
1058Window not closed when deleting buffer. (Harm te Hennepe, 2017 Aug 27, #2029)
1059
1060Add options_default() / options_restore() to set several options to Vim
1061defaults for a plugin. Comments from Zyx, 2017 May 10.
1062Perhaps use a vimcontext / endvimcontext command block.
1063
1064After using :noautocmd CursorMoved may still trigger. (Andy Stewart, 2017 Sep
106513, #2084).  Set old position after the command.
1066
1067When bracketed paste is used, pasting at the ":append" prompt does not get the
1068line breaks. (Ken Takata, 2017 Aug 22)
1069
1070The ":move" command does not honor closed folds. (Ryan Lue, #2351)
1071
1072Cannot copy modeless selection when cursor is inside it. (lkintact, #2300)
1073
1074Test_writefile_fails_conversion failure on Solaris because if different iconv
1075behavior.  Skip when "uname" returns "SunOS"? (Pavel Heimlich, #1872)
1076
1077'tagrelative' is broken in specific situation. (xaizek, 2017 Oct 19, #2221)
1078
1079The ++ options for the :edit command are also useful on the Vim command line.
1080
1081When recovering a file, put the swap file name in b:recovered_swapfile.  Then
1082a command can delete it.
1083
1084Overlong utf-8 sequence is displayed wrong. (Harm te Hennepe, 2017 Sep 14,
1085#2089)  Patch with possible solution by Björn Linse.
1086
1087The change list index is local to a buffer, but it doesn't make sense using it
1088for another buffer.  (lacygoill) Copy w_changelistidx to wininfo_S and back.
1089
1090X11: Putting more than about 262040 characters of text on the clipboard and
1091pasting it in another Vim doesn't work.  (Dominique Pelle, 2008 Aug 21-23)
1092clip_x11_request_selection_cb() is called with zero value and length.
1093Also: Get an error message from free() in the process that owns the selection.
1094Seems to happen when the selection is requested the second time, but before
1095clip_x11_convert_selection_cb() is invoked, thus in X library code.
1096Kazunobu Kuriyama is working on a proper fix. (2017 Jul 25)
1097
1098Problem with three-piece comment. (Michael Lee, 2017 May 11, #1696)
1099
1100Creating a partial with an autoload function is confused about the "self"
1101attribute of the function.  For an unknown function assume "self" and make
1102that optional? (Bjorn Linse, 2017 Aug 5)
1103
1104Cindent: returning a structure has more indent for the second item.
1105(Sam Pagenkopf, 2017 Sep 14, #2090)
1106
1107Patch from Christian Brabandt to preserve upper case marks when wiping out a
1108buffer. (2013 Dec 9)
1109Also fixes #2166?
1110
1111Profile of a dict function is lost when the dict is deleted.  Would it be
1112possible to collect this?  (Daniel Hahler, #2350)
1113
1114When checking if a bufref is valid, also check the buffer number, to catch the
1115case of :bwipe followed by :new.
1116
1117Patch to skip writing a temp file for diffing if the buffer is equal to the
1118existing file. (Akria Sheng, 2017 Jul 22)
1119Could also skip writing lines that are the same.
1120
1121MS-Windows: Opening same file in a second gvim hangs. (Sven Bruggemann, 2017
1122Jul 4)
1123
1124Setting 'clipboard' to "unnamed" makes a global command very slow (Daniel
1125Drucker, 2017 May 8).
1126This was supposed to be fixed, did it break again somehow?
1127Christian cannot reproduce it.
1128
1129Using composing char in mapping does not work properly. maparg() shows the
1130wrong thing. (Nikolai Pavlov, 2017 Jul 8, #1827)
1131Or is this not an actual problem?
1132
1133Better TeX indent file. (Christian Brabandt, 2017 May 3)
1134
1135Use gvimext.dll from the nightly build? (Issue #249)
1136
1137'synmaxcol' works with bytes instead of screen cells. (Llandon, 2017 May 31,
1138#1736)
1139
1140Problem with using :cd when remotely editing a file. (Gerd Wachsmuth, 2017 May
11418, #1690)
1142
1143Using "wviminfo /tmp/viminfo" does not store file marks that Vim knows about,
1144it only works when merging with an existing file.  (Shougo, 2017 Jun 19, #1781)
1145
1146Memory leak in test97?  The string is actually freed.  Weird.
1147
1148assert_fails() can only check for the first error.  Make it possible to have
1149it catch multiple errors and check all of them.
1150
1151Add a toolbar in the terminal.  Can be global, above all windows, or specific
1152for one window.
1153
1154Make maparg() also return the raw rhs, so that it doesn't depend on 'cpo'.
1155(Brett Stahlman, 2017 May 23)
1156Even better: add a way to disable a mapping temporarily and re-enable it
1157later.  This is for a sub-mode that is active for a short while (one buffer).
1158Still need maplist() to find the mappings.  What can we use to identify a
1159mapping?  Something unique would be better than the LHS.
1160Perhaps simpler: actually delete the mappings.  Use maplist() to list matching
1161mappings (with a lhs prefix, like maparg()), mapdelete() to delete,
1162maprestore() to restore (using the output of maplist()).
1163
1164Add an argument to :mkvimrc (or add another command) to skip mappings from
1165plugins (source is a Vim script).  No need to put these in a .vimrc, they will
1166be defined when the plugin is loaded.
1167
1168Use tb_set(winid, [{'text': 'stop', 'cb': callback, 'hi': 'Green'}])
1169    tb_highlight(winid, 'ToolBar')
1170    tb_get(winid)
1171
1172json_encode(): should convert to utf-8. (Nikolai Pavlov, 2016 Jan 23)
1173What if there is an invalid character?
1174
1175Json string with trailing \u should be an error. (Lcd)
1176
1177import can't be used in define option when include matches too.
1178(Romain Lafourcade, 2017 Jun 18, #1519)
1179
1180Wrong diff highlighting with three files. (2016 Oct 20, #1186)
1181Also get E749 on exit.
1182Another example in #1309
1183
1184Suggestion to improve pt-br spell checking. (Marcelo D Montu, 2016 Dec 15,
1185#1330)
1186
1187Error in test_startup_utf8 on Solaris. (Danek Duvall, 2016 Aug 17)
1188
1189GTK: When adding a timer from 'balloonexpr' it won't fire, because
1190g_main_context_iteration() doesn't return.  Need to trigger an event when the
1191timer expires.
1192
1193Rule to use "^" for statusline does not work if a space is defined with
1194highlighting for both stl and stlnc.  Patch by Ken Hamada (itchyny, 2016 Dec 11)
1195
1196Using CTRL-G_U in InsertCharPre causes trouble for redo. (Israel Chauca
1197Fuentes, 2017 Feb 12, #1470)
1198
1199Add a "keytrans()" function, which turns the internal byte representation of a
1200key into a form that can be used for :map.  E.g.
1201    let xx = "\<C-Home>"
1202    echo keytrans(xx)
1203    <C-Home>
1204
1205Check for errors E704 and E705 only does VAR_FUNC, should also do VAR_PARTIAL.
1206(Nikolai Pavlov, 2017 Mar 13, #1557)
1207Make a function to check for function-like type?
1208
1209Implement named arguments for functions with optional arguments:
1210    func Foo(start, count = 1, all = 1)
1211    call Foo(12, all = 0)
1212
1213Add a command to take a range of lines, filter them and put the output
1214somewhere else.  :{range}copy {dest} !cmd
1215
1216The TermResponse event is not triggered when a plugin has set 'eventignore' to
1217"all".  Netrw does this. (Gary Johnson, 2017 Jan 24)
1218Postpone the event until 'eventignore' is reset.
1219
1220Expanding /**/ is slow.  Idea by Luc Hermitte, 2017 Apr 14.
1221
1222Once .exe with updated installer is available: Add remark to download page
1223about /S and /D options (Ken Takata, 2016 Apr 13)
1224Or point to nightly builds: https://github.com/vim/vim-win32-installer/releases
1225
1226":sbr" docs state it respects 'switchbuf', but "vsplit" does not cause a
1227vertical split. (Haldean Brown, 2017 Mar 1)
1228
1229Use ADDR_OTHER instead of ADDR_LINES for many more commands.
1230E.g. all the location list commands use a count.
1231Add tests for using number larger than number of lines in buffer.
1232
1233Might be useful to have isreadonly(), like we have islocked().
1234Avoids exceptions, e.g. when using the b: namespace as a dict.
1235
1236Patch to make v:shell_error writable. (Christian Brabandt, 2016 Sep 27)
1237Useful to restore it.  Is there another solution?
1238
1239"ci[" does not look for next [ like ci" does look for next ".
1240(J.F. 2017 Jan 7)
1241
1242Patch for wrong cursor position on wrapped line, involving breakindent.
1243(Ozaki Kiichi, 2016 Nov 25)
1244
1245Patch for 'cursorlinenr' option. (Ozaki Kiichi, 2016 Nov 30)
1246
1247Window resizing with 'winfixheight': With a vertical split the height changes
1248anyway. (Tommy allen, 2017 Feb 21, #1502)
1249
1250Invalid behavior with NULL list. (Nikolai Pavlov, #768)
1251E.g. deepcopy(test_null_list())
1252
1253Patch to make it possible to extend a list with itself.
1254(Nikolai Pavlov, 2016 Sep 23)
1255
1256Patch to add Zstandard compressed file support. (Nick Terrell, 2016 Oct 24)
1257
1258On Windows buffer completion sees backslash as escape char instead of path
1259separator. (Toffanim, 2016 Nov 24, #1274)
1260
1261Should :vmap in matchit.vim be :xmap?  (Tony Mechelynck)
1262
1263Problem with whitespace in errorformat. (Gerd Wachsmuth, 2016 May 15, #807)
1264
1265Undo problem: "g-" doesn't go back, gets stuck. (Björn Linse, 2016 Jul 18)
1266
1267Add "unicode true" to NSIS installer.  Doesn't work with Windows 95, which we
1268no longer support.
1269
1270Support sort(l, 'F'), convert strings to float. (#7857)
1271
1272sort() is not stable when using numeric/float sort (Nikolay Pavlov, 2016 Sep
12734#1038)
1274
1275sort() does not use 'smartcase' for the skip pattern, even though 'ignorecase'
1276is used. (Filipe Brandenburger, #7322)
1277
1278+channel:
1279- Add a in_cb, invoked when the write buffer has become empty. (Matteo Landi)
1280- Add ch_readlines(): for a channel in NL mode, reads as many lines as are
1281  available.  Should be more efficient than looping over ch_read() with
1282  ch_status() to check for more.
1283- If buffer contents is changed in a callback, set w_redr_status so that it
1284  gets redrawn in redraw_after_callback(). #6120
1285- Add a separate timeout for opening a socket.  Currently it's fixed at 50
1286  msec, which is too small for a remote connection. (tverniquet, #2130)
1287- Writing raw mode to a buffer should still handle NL characters as line
1288  breaks. (Dmitry Zotikov, 2017 Aug 16)
1289- When out_cb executes :sleep, the close_cb may be invoked. (Daniel Hahler,
1290  2016 Dec 11, #1320)
1291- Implement |job-term| ?
1292- Calling a function when receiving a "call" on a channel, using feedkeys()
1293  does not work.  It does work from a timer. (Qiming Zhao, #3852)
1294- Channel test fails with Motif.  Sometimes kills the X11 server.
1295- When a message in the queue but there is no callback, drop it after a while?
1296  Add timestamp to queued messages and callbacks with ID, remove after a
1297  minute.  Option to set the droptime.
1298- Add an option to drop text of very long lines?  Default to 1 Mbyte.
1299- Add remark about undo sync, is there a way to force it?
1300- When starting a job, have an option to open the server socket, so we know
1301  the port, and pass it to the command with --socket-fd {nr}. (Olaf Dabrunz,
1302  Feb 9)  How to do this on MS-Windows?
1303- For connection to server, a "keep open" flag would be useful.  Retry
1304  connecting in the main loop with zero timeout.
1305- job_start(): run job in a newly opened terminal (not a terminal window).
1306    With xterm could use -S{pty}.
1307    Although user could use "xterm -e 'cmd arg'".
1308
1309Regexp problems:
1310- NFA engine can be slow for some patterns.  Dominique found out that most
1311  time is spent in addstate_here() copying the threads.  Instead of copying,
1312  let each thread point to the next one (by offset, the list is reallocated).
1313  (Dominique Pelle, 2019 Feb 18)
1314- Old engine: using 'incsearch' /\Zabc does not highlight the "c" if it has a
1315  composing character.  New engine is OK. (Tony Mechelynck, 2019 May 5)
1316- When search pattern has the base character both with and without combining
1317  character, search fails.  E.g. "รรีบ" in "การรีบรักใคร". (agguser, #2312)
1318- [:space:] only matches ASCII spaces.  Add [:white:] for all space-like
1319  characters, esp. including 0xa0.  Use character class zero.
1320- Since 7.4.704 the old regex engine fails to match [[:print:]] in 0xf6.
1321  (Manuel Ortega, 2016 Apr 24)
1322  Test fails on Mac.  Avoid using isalpha(), isalnum(), etc?  Depends on
1323  LC_CTYPE
1324- The old engine does not find a match for "/\%#=1\(\)\{80}", the new engine
1325  matches everywhere.
1326- Using win_linetabsize() can still be slow. Cache the result, store col and
1327  vcol. Reset them when moving to another line.
1328- Very slow with a long line and Ruby highlighting. (John Whitley, 2014 Dec 4)
1329- Bug with pattern: '\vblock (\d+)\.\n.*\d+%(\1)@<!\.$'
1330  (Lech Lorens, 2014 Feb 3)
1331- Issue 164: freeze on regexp search.
1332- Ignorecase not handled properly for multibyte characters. (Axel Bender,
1333  2013 Dec 11)
1334- Using \@> and \?. (Brett Stahlman, 2013 Dec 21) Remark from Marcin
1335  Szamotulski; Remark from Brett 2014 Jan 6 and 7.
1336- NFA regexp doesn't handle \%<v correctly. (Ingo Karkat, 2014 May 12)
1337- Does not work with NFA regexp engine:
1338  \%u, \%x, \%o, \%d followed by a composing character
1339- Search for \%d0\+ may fail with E363. (Christian Brabandt, 2016 Oct 4)
1340- \%'[ does not work.  '%'] does work.  (Masaaki Nakamura, 2016 Apr 4)
1341- Bug relating to back references. (Ingo Karkat, 2014 Jul 24)
1342- New RE does not give an error for empty group: "\(\)\{2}" (Dominique Pelle,
1343  2015 Feb 7)
1344- Using back reference before the capturing group sometimes works with the old
1345  engine, can we do this with the new engine?  E.g. with
1346  "/\%(<\1>\)\@<=.*\%(<\/\(\w\+\)>\)\@=" matching text inside HTML tags.
1347  This problem is probably the same: "\%(^\1.*$\n\)\@<=\(\d\+\).*$".
1348  (guotuofeng, 2015 Jun 22)
1349- Strange matching with "\(Hello\n\)\@<=A". (Anas Syed, 2015 Feb 12)
1350- Problem with \v(A)@<=b+\1c. (Issue 334)
1351- Diff highlighting can be very slow. (Issue 309)
1352- Using %> for a virtual column has a check based on 'tabsize'.  Better would
1353  be to cache the result of win_linetabsize(col), storing both col and vcol,
1354  and use them to decide whether win_linetabsize() needs to be called.  Reset
1355  col and vcol when moving to another line.
1356- this doesn't work: "syntax match ErrorMsg /.\%9l\%>20c\&\%<28c/".  Leaving
1357  out the \& works.  Seems any column check after \& fails.
1358- Difference between two engines: ".*\zs\/\@>\/" on text "///"
1359  (Chris Paul, 2016 Nov 13)  New engine not greedy enough?
1360  Another one: echom matchstr(" sdfsfsf\n sfdsdfsdf",'[^\n]*')
1361  (2017 May 15, #1252)
1362
1363Undo message is not always properly displayed.  Patch by Ken Takata, 2013 oct
13643.  Doesn't work properly according to Yukihiro Nakadaira.
1365Also see #1635.
1366
1367Idea from Sven: record sequence of keys.  Useful to show others what they are
1368doing (look over the shoulder), and also to see what happened.
1369Probably list of keystrokes, with some annotations for mode changes.
1370Could store in logfile to be able to analyse it with an external command.
1371E.g. to see when's the last time a plugin command was used.
1372
1373cmap using execute() has side effects. (Killthemule, 2016 Aug 17, #983)
1374
1375:map X may print invalid data. (Nikolay Pavlov, 2017 Jul 3, #1816)
1376
1377Patch to order results from taglist(). (Duncan McDougall, 2016 Oct 25)
1378
1379When using ":diffput" through a mapping, undo in the target buffer isn't
1380synced.  (Ryan Carney, 2016 Sep 14)
1381
1382Syntax highlighting for messages with RFC3339 timestamp (#946)
1383Did maintainer reply?
1384
1385ml_get errors when reloading file. (Chris Desjardins, 2016 Apr 19)
1386Also with latest version.
1387
1388Completion for input() does not expand environment variables. (chdiza, 2016
1389Jul 25, #948)
1390
1391Patch to add 'systemencoding', convert between 'encoding' and this for file
1392names, shell commands and the like.  (Kikuchan, 2010 Oct 14)
1393Assume the system converts between the actual encoding of the filesystem to
1394the system encoding (usually utf-8).
1395
1396MS-Windows: use WS_HIDE instead of SW_SHOWMINNOACTIVE in os_win32.c?
1397Otherwise task flickers in taskbar.
1398
1399Second problem in #966: ins_compl_add_tv() uses get_dict_string() multiple
1400times, overwrites the one buffer. (Nikolay Pavlov, 2016 Aug 5)
1401
1402Patch to improve map documentation. Issue #799.
1403
1404We can use '. to go to the last change in the current buffer, but how about
1405the last change in any buffer?  Can we use ', (, is next to .)?
1406
1407Ramel Eshed: system() is much slower than job_start(), why? (Aug 26)
1408
1409When generating the Unicode tables with runtime/tools/unicode.vim the
1410emoji_width table has only one entry.
1411
1412It's possible to add ",," to 'wildignore', an empty entry.  Causes problems.
1413Reject the value? #710.
1414
1415When doing "vi buf.md" a BufNew autocommand for *.md is not triggered.
1416Because of using the initial buffer? (Dun Peal, 2016 May 12)
1417
1418Neovim patch for utfc_ptr2char_len() https://github.com/neovim/neovim/pull/4574
1419No test, needs some work to include.
1420
1421Patch to improve indenting for C++ constructor with initializer list.
1422(Hirohito Higashi, 2016 Mar 31)
1423
1424Zero-out krypt key information when no longer in use. (Ben Fritz, 2017 May 15)
1425
1426Add stronger encryption.  Could use libsodium (NaCl).
1427https://github.com/jedisct1/libsodium/
1428Possibly include the needed code so that it can be built everywhere.
1429
1430Add a way to restart a timer.  It's similar to timer_stop() and timer_start(),
1431but the reference remains valid.
1432
1433Need to try out instructions in INSTALLpc.txt about how to install all
1434interfaces and how to build Vim with them.
1435Appveyor build with self-installing executable, includes getting most
1436interfaces: https://github.com/k-takata/vim/tree/chrisbra-appveyor-build
1437result: https://ci.appveyor.com/project/k-takata/vim/history
1438
1439Problem using ":try" inside ":execute". (ZyX, 2013 Sep 15)
1440
1441Patch to make tests pass with EBCDIC. (Owen Leibman, 2016 Apr 10)
1442
1443Add ":read :command", to insert the output of an Ex command?
1444Can already do it with ":$put =execute('command')".
1445
1446exists(":tearoff") does not tell you if the command is implemented. (Tony
1447Mechelynck)  Perhaps use exists("::tearoff") to check?
1448
1449Use vim.vim syntax highlighting for help file examples, but without ":" in
1450'iskeyword' for syntax.
1451
1452Installation of .desktop files does not work everywhere.
1453It's now fixed, but the target directory probably isn't right.
1454Add configure check?
1455Should use /usr/local/share/applications or /usr/share/applications.
1456Or use $XDG_DATA_DIRS.
1457Also need to run update-desktop-database (Kuriyama Kazunobu, 2015 Nov 4)
1458
1459Test object i{ and it do not behave the same. #1379
1460Do not include the linebreak at the start?
1461
1462Feature request: add the "al" text object, to manipulate a screen line.
1463Especially useful when using 'linebreak'
1464
1465":cd C:\Windows\System32\drivers\etc*" does not work, even though the
1466directory exists. (Sergio Gallelli, 2013 Dec 29)
1467
1468Patch to avoid redrawing tabline when the popup menu is visible.
1469(Christian Brabandt, 2016 Jan 28)
1470
1471When the CursorMovedI event triggers, and CTRL-X was typed, a script cannot
1472restore the mode properly. (Andrew Stewart, 2016 Apr 20)
1473Do not trigger the event?
1474
1475Patch to fix display of listchars on the cursorline. (Nayuri Aohime, 2013)
1476Update suggested by Yasuhiro Matsumoto, 2014 Nov 25:
1477https://gist.github.com/presuku/d3d6b230b9b6dcfc0477
1478
1479Patch to make the behavior of "w" more straightforward, but not Vi compatible.
1480With a 'cpo' flag.  (Christian Brabandt, 2016 Feb 8)
1481
1482Patch to add optionproperties(). (Anton Lindqvist, 2016 Mar 27, update Apr 13)
1483
1484Patch to add TagNotFound autocommand. (Anton Lindqvist, 2016 Feb 3)
1485
1486Patch to add Error autocommand. (Anton Lindqvist, 2016 Feb 17)
1487Only remembers one error.
1488
1489GVim: when both Tab and CTRL-I are mapped, use CTRL-I not for Tab.
1490
1491Unexpected delay when using CTRL-O u.  It's not timeoutlen.
1492(Gary Johnson, 2015 Aug 28)
1493
1494Instead of separately uploading patches to the ftp site, we can get them from
1495github with a URL like this:
1496   https://github.com/vim/vim/compare/v7.4.920%5E...v7.4.920.diff
1497Diff for version.c contains more context, can't skip a patch.
1498
1499Python: ":py raw_input('prompt')" doesn't work. (Manu Hack)
1500
1501Comparing nested structures with "==" uses a different comparator than when
1502comparing individual items.
1503
1504Using uninitialized memory. (Dominique Pelle, 2015 Nov 4)
1505
1506MS-Windows: When editing a file with a leading space, writing it uses the
1507wrong name. (Aram, 2014 Nov 7)  Vim 7.4.
1508
1509Can't recognize the $ProgramFiles(x86) environment variable.  Recognize it
1510specifically?  First try with the parens, then without.
1511
1512Patch to add :mapgroup, put mappings in a group like augroup.
1513(Yasuhiro Matsumoto, 2016 Feb 19)
1514
1515Can we cache the syntax attributes, so that updates for 'relativenumber' and
1516'cursorline'/'cursorcolumn' are a lot faster?  Thus store the attributes
1517before combining them.
1518
1519C highlighting: modern C allows: /* comment */ #ifdef
1520and also line continuation after #include.
1521I can't recommend it though.
1522
1523Build with Python on Mac does not always use the right library.
1524(Kazunobu Kuriyama, 2015 Mar 28)
1525
1526To support Thai (and other languages) word boundaries, include the ICU
1527library:  http://userguide.icu-project.org/boundaryanalysis
1528
1529Patch to use two highlight groups for relative numbers. (Shaun Brady, 2016 Jan
153030)
1531
1532MS-Windows: Crash opening very long file name starting with "\\".
1533(Christian Brock, 2012 Jun 29)
1534
1535The OptionSet autocommand event is not always triggered. (Rick Howe, 2015 Sep
153624): :diffthis, :diffoff.
1537
1538":set all&" still does not handle all side effects.  Centralize handling side
1539effects for when set by the user, on init and when reset to default.
1540
1541":tag" does not jump to the right entry of a :tselect. (James Speros, 2015 Oct
15429)
1543
1544The argument for "-S" is not taken literally, the ":so" command expands
1545wildcards.  Add a ":nowild" command modifier?  (ZyX, 2015 March 4)
1546
1547Proposal to make options.txt easier to read. (Arnaud Decara, 2015 Aug 5)
1548Update Aug 14.
1549
1550When using --remote-tab on MS-Windows 'encoding' hasn't been initialized yet,
1551the file name ends up encoded wrong. (Raul Coronado, 2015 Dec 21)
1552
1553Example in editing.txt uses $HOME with the expectation that it ends in a
1554slash.  For me it does, but perhaps not for everybody.  Add a function that
1555inserts a slash when needed?  pathconcat(dir, path) (Thilo Six, 2015 Aug 12)
1556
1557ml_updatechunk() is slow when retrying for another encoding. (John Little,
15582014 Sep 11)
1559
1560Patch to fix checking global option value when not using it.
1561(Arnaud Decara, 2015 Jul 23)
1562
1563When 'showbreak' is set repeating a Visual operation counts the size of the
1564'showbreak' text as part of the operation. (Axel Bender, 2015 Jul 20)
1565
1566Patch to add grepfile(). (Scott Prager, 2015 May 26)
1567Work in progress.
1568
1569Would be useful to have a treemap() or deepmap() function.  Like map() but
1570when an item is a list or dict would recurse into it.
1571
1572Patch for global-local options consistency. (Arnaud Decara, 2015 Jul 22)
1573Is this right?
1574
1575Patch to make getregtype() return the right size for non-linux systems.
1576(Yasuhiro Matsumoto, 2014 Jul 8)
1577Breaks test_eval.  Inefficient, can we only compute y_width when needed?
1578
1579Patch to use different terminal mode settings for system(). (Hayaki Saito)
1580Does this work for everybody?
1581
1582Patch for man.vim. (SungHyun Nam, 2015 May 20)
1583Doesn't work completely (Dominique Orban)
1584
1585Patch to add a "literal" argument to bufnr().  (Olaf Dabrunz, 2015 Aug 4)
1586
1587Extended file attributes lost on write (backupcopy=no).  Issue 306.
1588
1589Patch to add :lockjumps. (Carlo Baldassi, 2015 May 25)
1590OK to not block marks?
1591
1592Patch on Issue 72: 'autochdir' causes problems for :vimgrep.
1593
1594When two SIGWINCH arrive very quickly, the second one may be lost.
1595(Josh Triplett, 2015 Sep 17)
1596
1597Make comments in the test Makefile silent. (Kartik Agaram, 2014 Sep 24)
1598
1599Result of systemlist() does not show whether text ended in line break.
1600(Bjorn Linse, 2014 Nov 27)
1601
1602When in 'comments' "n:x" follows after three-part comment directly it repeats
1603any one-character from the previous line. (Kartik Agaram, 2014 Sep 19)
1604
1605Syntax highlighting slow (hangs) in SASS file. (Niek Bosch, 2013 Aug 21)
1606
1607Adding "~" to 'cdpath' doesn't work for completion?  (Davido, 2013 Aug 19)
1608
1609Patch: Let rare word highlighting overrule good word highlighting.
1610(Jakson A. Aquino, 2010 Jul 30, again 2011 Jul 2)
1611
1612Patch to add digits argument to round(). (Yasuhiro Matsumoto, 2015 Apr 26)
1613
1614Can assign to s:type when a function s:type has been defined.
1615Also the other way around: define a function while a variable with that name
1616was already defined.
1617(Yasuhiro Matsumoto, 2014 Nov 3)
1618
1619Patch for ordered dict. (Ozaki Kiichi, 2015 May 7)
1620
1621Patch to make closed folds line up. (Charles Campbell, 2014 Sep 12)
1622Remark from Roland Eggner: does it cause crashes? (2014 Dec 12)
1623Updated patch by Roland Eggner, Dec 16
1624Updated patch from Charles, 2016 Jul 2
1625
1626Patch for building a 32bit Vim with 64bit MingW compiler.
1627(Michael Soyka, 2014 Oct 15)
1628
1629Patch: On MS-Windows shellescape() may have to triple double quotes.
1630(Ingo Karkat, 2015 Jan 16)
1631
1632Patch for glob(), adding slash to normal files. (Ingo Karkat, 2014 Dec 22)
1633
1634When entering and leaving the preview window autocommands are triggered, but
1635these may not work well.  Perhaps set a flag to indicate that the preview
1636window is involved? (John Otter, 2015 Oct 27)
1637
1638Using "." to repeat an Ex command puts that command in history.  Probably
1639should not happen.  If the command is the result of a mapping it's not put in
1640history either. (Jacob Niehus, 2014 Nov 2)
1641Patch from Jacob, Nov 2.
1642
1643"hi link" does not respect groups with GUI settings only. (Mark Lodato, 2014
1644Jun 8)
1645
1646Bug: Autocompleting ":tag/pat" replaces "/pat" with a match but does not
1647insert a space. (Micha Mos, 2014 Nov 7)
1648
1649No error for missing endwhile. (ZyX, 2014 Mar 20)
1650
1651Patch to make extend() fail early when it might fail at some point.
1652(Olaf Dabrunz, 2015 May 2)  Makes extend() slower, do we still want it?
1653Perhaps only the checks that can be done without looping over the dict or
1654arguments.
1655
1656Problem with transparent and matchgroup.  Issue #475
1657
1658Idea: For a window in the middle (has window above and below it), use
1659right-mouse-drag on the status line to move a window up/down without changing
1660its height?  It's like dragging the status bar above it at the same time.
1661
1662Patch to add a :domodeline command. (Christian Brabandt, 2014 Oct 21)
1663
1664This does not give an error: (Andre Sihera, 2014 Mar 21)
1665    vim -u NONE 1 2 3 -c 'bufdo if 1 | echo 1'
1666This neither: (ZyX)
1667    vim -u NONE 1 2 3 -c 'bufdo while 1 | echo 1'
1668
1669'viewdir' default on MS-Windows is not a good choice, it's a system directory.
1670Change 'viewdir' to "$HOME/vimfiles/view" and use 'viewdiralt' to also read
1671from?
1672
1673Problem with upwards search on Windows (works OK on Linux). (Brett Stahlman,
16742014 Jun 8)
1675
1676Include a plugin manager with Vim? vim-plug seems to be the best currently:
1677https://github.com/junegunn/vim-plug.
1678Also Vundle: https://github.com/gmarik/vundle
1679Or minpac: https://github.com/k-takata/minpac, since it leverages the builtin
1680package feature.
1681Long message about this from ZyX, 2014 Mar 23.  And following replies.
1682Also see http://vim-wiki.mawercer.de/wiki/topic/vim%20plugin%20managment.html
1683User view:
1684- Support multiple sources, basically any http:// URL. Or a central place that
1685  will work for everybody (github?  redirects from vim.org?).
1686  Be able to look into the files before deciding to install.
1687- Be able to try out a plugin and remove it again with (almost) no traces.
1688- Each plugin needs a "manifest" file that has the version, dependencies
1689  (including Vim version and features), conflicts, list of files, etc.
1690  Updater uses that to decide what/how to update.
1691  Dependencies can use a URL for specific versions, or short name for scripts
1692  on vim.org.
1693- Once a plugin is installed it remembers where it came from, updater checks
1694  there.  Can manually update when really needed.
1695- Must be possible to install for one user.  Also system wide?
1696- Can edit plugin config with Vim. Can temporarily disable a plugin.
1697- Run the update manually, find latest version and install.
1698- Be able to download without special tools, must work for 95% of users.
1699Implementation:
1700- Avoid the 'runtimepath' getting long.  Need some other way to keep each
1701  plugin separate.
1702- When installing or updating, first figure out what needs to be done. This
1703  may involve recursively fetching manifest files for dependencies.  Then show
1704  the user what's going to change and ask for OK.
1705- Scripts on Vim.org must be able to consist of several files.  Is zip format
1706  sufficient?  Upload the manifest?  Or refer to a site that has the manifest?
1707- Best is to fetch individual files or use a Vimball. Reduces dependency on
1708  tools that might be missing and allows inspection of the files before
1709  installing.
1710Out of scope:
1711- Overview of plugins, ratings, comments, etc.  That's another world.
1712- Development work on plugins (although diff with distributed version would be
1713  useful).
1714
1715When typing the first character of a command, e.g. "f", then using a menu, the
1716menu item doesn't work.  Clear typeahead when using a menu?
1717
1718Editing an ascii file as ucs-2 or ucs-4 causes display errors.
1719(ZyX, 2014 Mar 30)
1720
1721":Next 1 some-arg" does not complain about trailing argument.  Also for
1722various other commands.  (ZyX, 2014 Mar 30)
1723
1724Patch to skip sort if no line matches the expression.
1725(Christian Brabandt, 2014 Jun 25)
1726
1727VMS: Select() doesn't work properly, typing ESC may hang Vim.  Use sys$qiow
1728instead. (Samuel Ferencik, 2013 Sep 28)
1729
1730Patch for XDG base directory support. (Jean François Bignolles, 2014 Mar 4)
1731Remark on the docs.  Should not be a compile time feature.  But then what?
1732Also see #2034.
1733
1734Patch to define macros for hardcoded values. (Elias Diem, 2013 Dec 14)
1735
1736Several syntax file match "^\s*" which may get underlined if that's in the
1737highlight group.  Add a "\zs" after it?
1738
1739The undo file name can get too long. (Issue 346)
1740For the path use a hash instead of dir%dir%dir%name  hash%name.
1741
1742Patch to add ":undorecover", get as much text out of the undo file as
1743possible. (Christian Brabandt, 2014 Mar 12, update Aug 22)
1744
1745Updated spec ftplugin. (Matěj Cepl, 2013 Oct 16)
1746
1747Patch to handle integer overflow. (Aaron Burrow, 2013 Dec 12)
1748
17497   Windows XP: When using "ClearType" for text smoothing, a column of yellow
1750    pixels remains when typing spaces in front of a "D" ('guifont' set to
1751    "lucida_console:h8").
1752Patch by Thomas Tuegel, also for GTK, 2013 Nov 24
1753
1754:help gives example for z?, but it does not work.  m? and t? do work.
1755
1756Discussion about canonicalization of Hebrew. (Ron Aaron, 2011 April 10)
1757
1758Checking runtime scripts: Thilo Six, 2012 Jun 6.
1759
1760When evaluating expression in backticks, autoload doesn't work.
1761(Andy Wokula, 2013 Dec 14)
1762
1763Using <nr>ifoobar<esc> can slow down Vim.  Patch by Christian Brabandt, 2013
1764Dec 13.  Only helps a bit, 10000ii<Esc> is still too slow.
1765
1766GTK: problem with 'L' in 'guioptions' changing the window width.
1767(Aaron Cornelius, 2012 Feb 6)
1768
1769Patch to add option that tells whether small deletes go into the numbered
1770registers. (Aryeh Leib Taurog, 2013 Nov 18)
1771
1772Javascript file where indent gets stuck on: GalaxyMaster, 2012 May 3.
1773
1774The BufUnload event is triggered when re-using the empty buffer.
1775(Pokey Rule, 2013 Jul 22)
1776Patch by Marcin Szamotulski, 2013 Jul 22.
1777
1778Patch to allow more types in remote_expr(). (Lech Lorens, 2014 Jan 5)
1779Doesn't work for string in list.  Other way to pass all types of variables
1780reliably?
1781
1782Patch to add {lhs} to :mapclear: clear all maps starting with {lhs}.
1783(Christian Brabandt, 2013 Dec 9)
1784
1785Exception caused by argument of return is not caught by try/catch.
1786(David Barnett, 2013 Nov 19)
1787Bug in try/catch: return with invalid compare throws error that isn't caught.
1788(ZyX, 2011 Jan 26)
1789try/catch not working for argument of return. (Matt Wozniski, 2008 Sep 15)
1790try/catch not working when inside a for loop. (ZyX, 2011 Jan 25)
1791
1792Patch to fix that 'cedit' is recognized after :normal. (Christian Brabandt,
17932013 Mar 19, later message)
1794
1795Patch to view coverage of the tests. (Nazri Ramliy, 2013 Feb 15)
1796
1797Patch to invert characters differently in GTK. (Yukihiro Nakadaira, 2013 May
17985)
1799
1800Patch to add "Q" and "A" responses to interactive :substitute. They are
1801carried over when using :global. (Christian Brabandt, 2013 Jun 19)
1802
1803Bug with 'cursorline' in diff mode.  Line being scrolled into view gets
1804highlighted as the cursor line.  (Alessandro Ivaldi, 2013 Jun 4)
1805
1806Two highlighting bugs. (ZyX, 2013 Aug 18)
1807
1808Patch to support 'u' in interactive substitute. (Christian Brabandt, 2012 Sep
180928)  With tests: Oct 9.
1810
1811Dialog is too big on Linux too. (David Fishburn, 2013 Sep 2)
1812
1813Patch to make fold updates much faster. (Christian Brabandt, 2012 Dec)
1814
1815-   Add regex for 'paragraphs' and 'sections': 'parare' and 'sectre'.  Combine
1816    the two into a regex for searching. (Ned Konz)
1817Patch by Christian Brabandt, 2013 Apr 20, unfinished.
1818
1819Bug: findfile("any", "file:///tmp;") does not work.
1820
1821In the ATTENTION message about an existing swap file, mention the name of the
1822process that is running.  It might actually be some other program, e.g. after
1823a reboot.
1824
1825patch to add "combine" flag to  syntax commands. (so8res, 2012 Dec 6)
1826Patch to add "combine" to :syntax, combines highlight attributes. (Nate
1827Soares, 2012 Dec 3)
1828
1829Syntax update problem in one buffer opened in two windows, bottom window is
1830not correctly updated. (Paul Harris, 2012 Feb 27)
1831
1832Patch to add getsid(). (Tyru, 2011 Oct 2)  Do we want this?  Update Oct 4.
1833Or use expand('<sid>')?
1834
1835Patch to make confirm() display colors. (Christian Brabandt, 2012 Nov 9)
1836
1837Problem with refresh:always in completion. (Tyler Wade, 2013 Mar 17)
1838
1839b:undo_ftplugin cannot call a script-local function. (Boris Danilov, 2013 Jan
18407)
1841
1842Win32: The Python interface only works with one version of Python, selected at
1843compile time.  Can this be made to work with version 2.1 and 2.2 dynamically?
1844
1845Python: Be able to define a Python function that can be called directly from
1846Vim script.  Requires converting the arguments and return value, like with
1847vim.bindeval().
1848
1849Patch for :tabcloseleft, after closing a tab go to left tab. (William Bowers,
18502012 Aug 4)
1851
1852Patch to improve equivalence classes in regexp patterns.
1853(Christian Brabandt, 2013 Jan 16, update Jan 17)
1854
1855Patch with suggestions for starting.txt. (Tony Mechelynck, 2012 Oct 24)
1856But use Gnome instead of GTK?
1857
1858Should be possible to enable/disable matchparen per window or buffer.
1859Add a check for b:no_match_paren in Highlight_matching_Pair() (Marcin
1860Szamotulski, 2012 Nov 8)
1861
1862Session file creation: 'autochdir' causes trouble.  Keep it off until after
1863loading all files.
1864
1865'iminsert' global value set when using ":setlocal iminsert"? (Wu, 2012 Jun 23)
1866
1867Patch to append regexp to tag commands to make it possible to select one out
1868of many matches. (Cody Cutler, 2013 Mar 28)
1869
1870The input map for CTRL-O in mswin.vim causes problems after CTRL-X CTRL-O.
1871Suggestion for another map. (Philip Mat, 2012 Jun 18)
1872But use "gi" instead of "a".  Or use CTRL-\ CTRL-O.
1873
1874When there are no command line arguments ":next" and ":argu" give E163, which
1875is confusing.  Should say "the argument list is empty".
1876
1877URXVT:
1878- will get stuck if byte sequence does not contain the expected semicolon.
1879- Use urxvt mouse support also in xterm.  Explanations:
1880  http://www.midnight-commander.org/ticket/2662
1881
1882Patch to have the fold and sign column and at the last line of the buffer.
1883(Marco Hinz, 2014 Sep 25)
1884Alternate suggestion: let all columns continue, also the number column.
1885
1886Patch to add tests for if_xcmdsrv.c., Jul 8, need some more work. (Brian Burns)
1887New tests Jul 13.   Update Jul 17.  Discussion Jul 18.
1888
1889When running Vim in silent ex mode, an existing swapfile causes Vim to wait
1890for a user action without a prompt. (Maarten Billemont, 2012 Feb 3)
1891Do give the prompt? Quit with an error?
1892
1893Patch for input method status. (Hirohito Higashi, 2012 Apr 18)
1894
1895Update Vim app icon (for Gnome). (Jakub Steiner, 2013 Dec 6)
1896
1897Patch to use .png icons for the toolbar on MS-Windows. (Martin Gieseking, 2013
1898Apr 18)
1899
1900Patch for has('unnamedplus') docs. (Tony Mechelynck, 2011 Sep 27)
1901And one for gui_x11.txt.
1902
1903":cd" doesn't work when current directory path contains "**".
1904finddir() has the same problem.  (Yukihiro Nakadaira, 2012 Jan 10)
1905Requires a rewrite of the file_file_in_path code.
1906
1907Should use has("browsefilter") in ftplugins.  Requires patch 7.3.593.
1908
1909Update for vim2html.pl. (Tyru, 2013 Feb 22)
1910
1911Patch to sort functions starting with '<' after others.  Omit dict functions,
1912they can't be called. (Yasuhiro Matsumoto, 2011 Oct 11)
1913
1914Patch to pass list to or(), and() and xor(). (Yasuhiro Matsumoto, 2012 Feb 8)
1915
1916Patch to improve "it" and "at" text object matching. (Christian Brabandt, 2011
1917Nov 20)
1918
1919Patch to improve GUI find/replace dialog. (Christian Brabandt, 2012 May 26)
1920Update Jun 2.
1921
1922`] moves to character after insert, instead of the last inserted character.
1923(Yukihiro Nakadaira, 2011 Dec 9)
1924
1925Plugin for Modeleasy. (Massimiliano Tripoli, 2011 Nov 29)
1926
1927BufWinLeave triggers too late when quitting last window in a tab page. (Lech
1928Lorens, 2012 Feb 21)
1929
1930Patch for 'transparency' option. (Sergiu Dotenco, 2011 Sep 17)
1931Only for MS-Windows.  No documentation.  Do we want this?
1932
1933Patch to support cursor shape in Cygwin console. (Ben bgold, 2011 Dec 27)
1934
1935On MS-Windows a temp dir with a & init causes system() to fail. (Ben Fritz,
19362012 Jun 19)
1937
1938'cursorline' is displayed too short when there are concealed characters and
1939'list' is set.  (Dennis Preiser)
1940Patch 7.3.116 was the wrong solution.
1941Christian Brabandt has another incomplete patch. (2011 Jul 13)
1942
1943With concealed text mouse click doesn't put the cursor in the right position.
1944(Herb Sitz)  Fix by Christian Brabandt, 2011 Jun 16.  Doesn't work properly,
1945need to make the change in where RET_WIN_BUF_CHARTABSIZE() is called.
1946
1947Syntax region with 'concealends' and a 'cchar' value, 'conceallevel' set to 2,
1948only one of the two ends gets the cchar displayed. (Brett Stahlman, 2010 Aug
194921, Ben Fritz, 2010 Sep 14)
1950
1951Win32: Patch to use task dialogs when available. (Sergiu Dotenco, 2011 Sep 17)
1952New feature, requires testing.  Made some remarks.
1953
1954Win32: Patch for alpha-blended icons and toolbar height. (Sergiu Dotenco, 2011
1955Sep 17)  Asked for feedback from others.
1956
1957Win32: Cannot cd into a directory that starts with a space. (Andy Wokula, 2012
1958Jan 19)
1959
1960Need to escape $HOME on Windows for fnameescape()?  (ZyX, 2011 Jul 21,
1961discussion 2013 Jul 4) Can't simply use a backslash, \$HOME has a different
1962meaning already.  Would be possible to use $$HOME where $HOME is to be used.
1963
1964"2" in 'formatoptions' not working in comments. (Christian Corneliussen, 2011
1965Oct 26)
1966
1967Bug in repeating Visual "u". (Lawrence Kesteloot, 2010 Dec 20)
1968
1969With "unamedplus" in 'clipboard' pasting in Visual mode causes error for empty
1970register. (Michael Seiwald, 2011 Jun 28)  I can't reproduce it.
1971
1972Windows keys not set properly on Windows 7?  (cncyber, 2010 Aug 26)
1973
1974When using a Vim server, a # in the path causes an error message.
1975(Jeff Lanzarotta, 2011 Feb 17)
1976
1977When there is a ">" in a line that "gq" wraps to the start of the next line,
1978then the following line will pick it up as a leader.  Should get the leader
1979from the first line, not a wrapped line. (Matt Ackeret, 2012 Feb 27)
1980
1981Using ":break" or something else that stops executing commands inside a
1982":finally" does not rethrow a previously uncaught exception. (ZyX, 2010 Oct
198315)
1984
1985Vim using lots of memory when joining lines. (John Little, 2010 Dec 3)
1986
1987BT regexp engine: After trying a \@> match and failing, submatches are not
1988cleared.  See test64.
1989
1990On 64 bit MS-Windows "long" is only 32 bits, but we sometimes need to store a
199164 bits value.  Change all number options to use nropt_T and define it to the
1992right type.
1993
1994string() can't parse back "inf" and "nan".  Fix documentation or fix code?
1995(ZyX, 2010 Aug 23)
1996
1997When doing "redir => s:foo" in a script and then "redir END" somewhere else
1998(e.g. in a function) it can't find s:foo.
1999When a script contains "redir => s:foo" but doesn't end redirection, a
2000following "redir" command gives an error for not being able to access s:foo.
2001(ZyX, 2011 Mar 27)
2002
2003When setqflist() uses a filename that triggers a BufReadCmd autocommand Vim
2004doesn't jump to the correct line with :cfirst. (ZyX,  2011 Sep 18)
2005
2006Behavior of i" and a" text objects isn't logical. (Ben Fritz, 2013 Nov 19)
2007
2008When setting a local option value from the global value, add a script ID that
2009indicates this, so that ":verbose set" can give a hint.  Check with options in
2010the help file.
2011
2012After patch 7.3.097 still get E15. (Yukihiro Nakadaira, 2011 Jan 18)
2013Also for another example (ZyX, 2011 Jan 24)
2014
2015Build problem with small features on Mac OS X 10.6. (Rainer, 2011 Jan 24)
2016
2017"0g@$" puts '] on last byte of multibyte. (ZyX, 2011 Jan 22)
2018
2019Patch for :tabrecently. (Hirokazu Yoshida, 2012 Jan 30)
2020
2021Problem with "syn sync grouphere". (Gustavo Niemeyer, 2011 Jan 27)
2022
2023Using "syn sync breaklines=2" works for when text is changed, but not when
2024scrolling or redrawing.  Should start search for syntax patterns above the
2025first drawn line. (#8103)
2026
2027Loading autoload script even when usage is inside "if 0". (Christian Brabandt,
20282010 Dec 18)
2029
2030With a filler line in diff mode, it isn't displayed in the column with line
2031number, but it is in the sign column.  Doesn't look right. (ZyX 2011 Jun 5)
2032Patch by Christian Brabandt, 2011 Jun 5.  Introduces new problems.
2033
2034Add jump() function. (Marcin Szamotulski, 2013 Aug 29)
2035Is this needed?  CTRL-O and CTRL-I do the same, just more difficult to use.
2036
20378   Add a command to jump to the next character highlighted with "Error".
2038Patch by Christian Brabandt, uses ]e [e ]t and [t. 2011 Aug 9.
2039
2040Add event for when the text scrolls.  A bit like CursorMoved.  Also a similar
2041one for insert mode.  Use the event in matchparen to update the highlight if
2042the match scrolls into view.
2043
20447   Use "++--", "+++--" for different levels instead of "+---" "+----".
2045Patch by Christian Brabandt, 2011 Jul 27.
2046Update by Ben Fritz, with fix for TOhtml. (2011 Jul 30)
2047
20489   Add %F to 'errorformat': file name without spaces.  Useful on Unix to
2049    avoid matching something up to a time 11:22:33.
2050Patch by Christian Brabandt, 2011 Jul 27.
2051
2052Patch to add up to 99 match groups. (Christian Brabandt, 2010 Dec 22)
2053Also add named groups: \%{name}(re)  and \%{name}g
2054
2055In the sandbox it's not allowed to do many things, but it's possible to change
2056or set variables.  Add a way to prevent variables from being changed in the
2057sandbox?  E.g.: ":protect g:restore_settings".
2058
2059GTK: drawing a double-width combining character over single-width characters
2060doesn't look right. (Dominique Pelle, 2010 Aug 8)
2061
2062GTK: tear-off menu does not work. (Kurt Sonnenmoser, 2010 Oct 25)
2063
2064Win32: tear-off menu does not work when menu language is German. (Markus
2065Bossler, 2011 Mar 2)  Fixed by 7.3.095?
2066
2067Wish for NetBeans commands:
2068    - make it possible to have 'defineAnnoType' also handle terminal colors.
2069
2070Version of netbeans.c for use with MacVim. (Kazuki Sakamoto, 2010 Nov 18)
2071
20727.3.014 changed how backslash at end of line works, but still get a NUL when
2073there is one backslash. (Ray Frush, 2010 Nov 18)  What does the original ex
2074do?
2075
2076Searching mixed with Visual mode doesn't redraw properly. (James Vega, 2010 Nov
207722)
2078
2079New esperanto spell file can't be processed. (Dominique Pelle, 2011 Jan 30)
2080- move compflags to separate growarray?
2081- instead of a regexp use a hashtable.  Expand '?', '*', '+'.  What would be
2082  the maximum repeat for * and +?
2083
2084"L'Italie" noted as a spell error at start of the sentence. (Dominique Pelle,
20852011 Feb 27)
2086
2087Editing a file with a ^M with 'ff' set to "mac", opening a help file, then the
2088^M is displayed as ^J sometimes.  Getting 'ff' value from wrong window/buffer?
2089
2090When Vim is put in the background (SIGTSTP) and then gets a SIGHUP it doesn't
2091exit.  It exists as soon as back in the foreground. (Stephen Liang, 2011 Jan
20929)  Caused by vim_handle_signal(SIGNAL_BLOCK); in ui.c.
2093
2094g` not working correctly when using :edit.  It works OK when editing a file on
2095the command line. (Ingo Karkat, 2011 Jan 25)
2096
2097Since patch 7.2.46 Yankring plugin has become very slow, eventually make Vim
2098crash? (Raiwil, 2010 Nov 17)
2099
2100Patch to add FoldedLineNr highlighting: different highlighting for the line
2101number of a closed fold. (eXerigumo Clanjor, 2013 Jul 15)
2102
2103Regexp engine performance:
2104- Profiling:
2105	./vim -u NONE -s ~/vim/test/ruby.vim
2106	./vim -u NONE -s ~/vim/test/loop.vim
2107	./vim -u NONE -s ~/vim/test/alsa.vim
2108	./vim -s ~/vim/test/todo.vim
2109	./vim -s ~/vim/test/xml.vim
2110    Dominique Pelle:  xmlSyncDT is particularly slow (Jun 7)
2111- More test files from the src/pkg/regexp/testdata directory in the Go repo.
2112- Performance tests:
2113  - Using asciidoc syntax. (Marek Schimara, 2013 Jun 6)
2114  - ~/vim/text/FeiqCfg.xml (file from Netjune)
2115  - ~/vim/text/edl.svg  (also XML)
2116  - glts has five tests. (May 25)
2117  - ~/vim/test/slowsearch
2118  - ~/vim/test/rgb.vim
2119  - search for  a.*e*exn  in the vim executable.  Go to last line to use
2120    'hlsearch'.
2121  - Slow combination of folding and PHP syntax highlighting.  Script to
2122    reproduce it.  Caused by "syntax sync fromstart" in combination with patch
2123    7.2.274.  (Christian Brabandt, 2010 May 27) Generally, folding with
2124    'foldmethod' set to "syntax" is slow.  Do profiling to find out why.
2125
2126Problem producing tags file when hebrew.frx is present.  It has a BOM.
2127Results in E670. (Tony Mechelynck, 2010 May 2)
2128
2129'beval' option should be global-local.
2130
2131Ruby: ":ruby print $buffer.number" returns zero.
2132
2133setpos() does not restore cursor position after :normal. (Tyru, 2010 Aug 11)
2134
2135With "tw=55 fo+=a" typing space before ) doesn't work well. (Scott Mcdermott,
21362010 Oct 24)
2137
2138Messages in message.txt are highlighted as examples.
2139
2140When using cp850 the NBSP (0xff) is not drawn correctly. (Brett Stahlman, 2010
2141Oct 22)  'isprint' is set to "@,161-255".
2142
2143":echo "\x85" =~# '[\u0085]'" returns 1 instead of 0. (ZyX, 2010 Oct 3)
2144
2145'cindent' not correct when 'list' is set. (Zdravi Korusef, 2010 Apr 15)
2146
2147C-indenting: A matching { in a comment is ignored, but intermediate { are not
2148checked to be in a comment.  Implement FM_SKIPCOMM flag of findmatchlimit().
2149Issue 46.
2150
2151Mac with X11: clipboard doesn't work properly. (Raf, 2010 Aug 16)
2152
2153Using CompilerSet doesn't record where an option was set from.  E.g., in the
2154gcc compiler plugin. (Gary Johnson, 2010 Dec 13)
2155
2156":helpgrep" does not put the cursor in the correct column when preceded by
2157accented character. (Tony Mechelynck, 2010 Apr 15)
2158
2159Don't call check_restricted() for histadd(), setbufvar(), settabvar(),
2160setwinvar().
2161
2162Patch for gVimExt to show an icon. (Dominik Riebeling, 2010 Nov 7)
2163
2164When 'lines' is 25 and 'scrolloff' is 12, "j" scrolls zero or two lines
2165instead of one. (Constantin Pan, 2010 Sep 10)
2166
2167Gui menu edit/paste in block mode insert only inserts in one line (Bjorn
2168Winckler, 2011 May 11)
2169Requires a map mode for Insert mode started from blockwise Visual mode.
2170
2171Writing nested List and Dict in viminfo gives error message and can't be read
2172back. (Yukihiro Nakadaira, 2010 Nov 13)
2173
2174Problem with cursor in the wrong column. (SungHyun Nam, 2010 Mar 11)
2175Additional info by Dominique Pelle. (also on 2010 Apr 10)
2176
2177CreateFile and CreateFileW are used without sharing, filewritable() fails when
2178the file was already open (e.g. script is being sourced).  Add FILE_SHARE_READ|
2179FILE_SHARE_WRITE in mch_access()? (Philippe Vaucher, 2010 Nov 2)
2180
2181Is ~/bin (literally) in $PATH supposed to work?  (Paul, 2010 March 29)
2182Looks like only bash can do it. (Yakov Lerner)
2183
2184Cscope "cs add" stopped working somewhat before 7.2.438. (Gary Johnson, 2010
2185Jun 29)  Caused by 7.2.433?
2186
2187Jumplist doesn't work properly in Insert mode? (Jean Johner, 2010 Mar 20)
2188
2189Problem with transparent cmdline.  Also: Terminal title is wrong with
2190non-ASCII character. (Lily White, 2010 Mar 7)
2191
2192iconv() doesn't fail on an illegal character, as documented. (Yongwei Wu, 2009
2193Nov 15, example Nov 26)  Add argument to specify whether iconv() should fail
2194or replace with a character and continue?
2195
2196Add local time at start of --startuptime output.
2197Requires configure check for localtime().
2198Use format year-month-day hr:min:sec.
2199
2200Patch to make ":hi link" also take arguments. (Nate Soares, 2012 Dec 4)
2201
2202Shell not recognized properly if it ends in "csh -f". (James Vega, 2009 Nov 3)
2203Find tail?  Might have a / in argument.  Find space?  Might have space in
2204path.
2205
2206Test 51 fails when language set to German. (Marco, 2011 Jan 9)
2207Dominique can't reproduce it.
2208
2209'ambiwidth' should be global-local.
2210
2211":function f(x) keepjumps" creates a function where every command is executed
2212like it has ":keepjumps" before it.
2213
2214Coverity: Check if there are new reported defects:
2215https://scan.coverity.com/projects/241
2216
2217Patch to support :undo absolute jump to file save number. (Christian Brabandt,
22182010 Nov 5)
2219
2220Patch to use 'foldnestmax' also for "marker" foldmethod. (Arnaud Lacombe, 2011
2221Jan 7)
2222
2223Problem with editing file in binary mode. (Ingo Krabbe, 2009 Oct 8)
2224
2225With 'wildmode' set to "longest:full,full" and pressing Tab once the first
2226entry in wildmenu is highlighted, that shouldn't happen. (Yuki Watanabe, 2011
2227Feb 12)
2228
2229Display error when 'tabline' that includes a file name with double-width
2230characters. (2010 Aug 14, bootleq)
2231
2232Problem with stop directory in findfile(). (Adam Simpkins, 2009 Aug 26)
2233
2234Using ']' as the end of a range in a pattern requires double escaping:
2235     /[@-\\]]  (Andy Wokula, 2011 Jun 28)
2236
2237Syntax priority problem. (Charles Campbell, 2011 Sep 15)
2238
2239When completion inserts the first match, it may trigger the line to be folded.
2240Disable updating folds while completion is active? (Peter Odding, 2010 Jun 9)
2241
2242For running gvim on a USB stick: avoid the OLE registration.  Use a command
2243line argument -noregister.
2244
2245When using an expression in 'statusline' leading white space sometimes goes
2246missing (but not always). (ZyX, 2010 Nov 1)
2247
2248When a mapping exists both for insert mode and lang-insert mode, the last one
2249doesn't work. (Tyru, 2010 May 6)  Or is this intended?
2250
2251Still a problem with ":make" in the wrong directory.  Caused by ":bufdo".
2252(Ajit Thakkar, 2009 Jul 1) More information Jul 9, Jul 15.
2253Caused by "doautoall syntaxset BufEnter *" in syntax/nosyntax.vim ?
2254There also is a BufLeave/BufEnter aucmd to save/restore view.
2255Does the patch to save/restore globaldir work?
2256
2257":bufdo normal gg" while 'hidden' is set leaves buffers without syntax
2258highlighting.  Don't disable Syntax autocommands then?  Or add a flag/modifier
2259to avoid changing 'eventignore'?
2260
2261Patch for displaying 0x200c and 0x200d. (Ali Gholami Rudi, 2009 May 6)
2262Probably needs a bit of work.
2263
2264List of encoding aliases. (Takao Fujiwara, 2009 Jul 18)
2265Are they all OK?  Update Jul 22.
2266
2267Win32: Improved Makefile for MSVC. (Leonardo Valeri Manera, 2010 Aug 18)
2268
2269Win32: Expanding 'path' runs into a maximum size limit. (bgold12, 2009 Nov 15)
2270
2271Win32: Patch for using .png files for icons. (Charles Peacech, 2012 Feb 5)
2272
2273Putting a Visual block while 'visualedit' is "all" does not leave the cursor
2274on the first character. (John Beckett, 2010 Aug 7)
2275
2276Setting 'tags' to "tagsdir/*" does not find "tagsdir/tags". (Steven K. Wong,
22772009 Jul 18)
2278
2279Patch to add "focusonly" to 'scrollopt', so that scrollbind also applies in
2280window that doesn't have focus. (Jonathon Mah, 2009 Jan 12)
2281Needs more work.
2282
2283Problem with <script> mappings (Andy Wokula, 2009 Mar 8)
2284
2285When starting Vim with "gvim -f -u non_existent_file > foo.txt" there are a
2286few control characters in the output. (Dale Wiles, 2009 May 28)
2287
2288'cmdwinheight' is only used in last window when 'winheight' is a large value.
2289(Tony Mechelynck, 2009 Apr 15)
2290
2291Status line containing winnr() isn't updated when splitting the window (Clark
2292J.  Wang, 2009 Mar 31)
2293
2294When $VIMRUNTIME is set in .vimrc, need to reload lang files.  Already done
2295for GTK, how about others? (Ron Aaron, 2010 Apr 10)
2296
2297Patch for GTK buttons X1Mouse and X2Mouse. (Christian J. Robinson, 2010 Aug 9)
2298
2299":tab split fname" doesn't set the alternate file in the original window,
2300because win_valid() always returns FALSE.  Below win_new_tabpage() in
2301ex_docmd.c.
2302
2303Space before comma in function definition not allowed: "function x(a , b)"
2304Give a more appropriate error message.  Add a remark to the docs.
2305
2306string_convert() should be able to convert between utf-8 and utf-16le.  Used
2307for GTK clipboard.  Avoid requirement for iconv.
2308
2309Now that colnr_T is int instead of unsigned, more type casts can be removed.
2310
2311Don't load macmap.vim on startup, turn it into a plugin. (Ron Aaron,
23122009 Apr 7)  Reminder Apr 14.
2313
2314Add "no_hlsearch" to winsaveview().
2315
2316When 'foldmethod' is "indent", adding an empty line below a fold and then
2317indented text, creates a new fold instead of joining it with the previous one.
2318(Evan Laforge, 2009 Oct 17)
2319
2320Bug: When reloading a buffer changed outside of Vim, BufRead autocommands
2321are applied to the wrong buffer/window. (Ben Fritz, 2009 Apr 2, May 11)
2322Ignore window options when not in the right window?
2323Perhaps we need to use a hidden window for applying autocommands to a buffer
2324that doesn't have a window.
2325
2326When using "ab foo bar" and mapping <Tab> to <Esc>, pressing <Tab> after foo
2327doesn't trigger the abbreviation like <Esc> would. (Ramana Kumar, 2009 Sep 6)
2328
2329getbufvar() to get a window-local option value for a buffer that's not
2330displayed in a window should return the value that's stored for that buffer.
2331
2332":he ctrl_u" can be auto-corrected to ":he ctrl-u".
2333
2334There should be a way after an abbreviation has expanded to go back to what
2335was typed.  CTRL-G h ?  Would also undo last word or line break inserted
2336perhaps.  And undo CTRL-W.  CTRL-G l would redo.
2337
2338Diff mode out of sync. (Gary Johnson, 2010 Aug 4)
2339
2340Win32 GUI: last message from startup doesn't show up when there is an echoerr
2341command. (Cyril Slobin, 2009 Mar 13)
2342
2343Win32: completion of file name ":e c:\!test" results in ":e c:\\!test", which
2344does not work. (Nieko Maatjes, 2009 Jan 8, Ingo Karkat, 2009 Jan 22)
2345
2346opening/closing window causes other window with 'winfixheight' to change
2347height.  Also happens when there is another window in the frame, if it's not
2348very high. (Yegappan Lakshmanan, 2010 Jul 22, Michael Peeters, 2010 Jul 22)
2349
2350Session file generates error upon loading, cause by --remote-silent-tab.
2351(7tommm (ytommm) 2010 Nov 24)
2352
2353Using ~ works OK on 'a' with composing char, but not on 0x0418  with composing
2354char 0x0301. (Tony Mechelynck, 2009 Mar 4)
2355
2356Searching for composing char works, but not when inside []. (ZyX, Benjamin R.
2357Haskell, 2010 Aug 24)
2358
2359This does not work yet: "a\(%C\)" (get composing characters into a submatch).
2360
2361Inconsistent: starting with $LANG set to es_ES.utf-8 gives Spanish
2362messages, even though locale is not supported.  But ":lang messages
2363es_ES.utf-8" gives an error and doesn't switch messages. (Dominique Pelle,
23642009 Jan 26)
2365
2366When $HOME contains special characters, such as a comma, escape them when used
2367in an option. (Michael Hordijk, 2009 May 5)
2368Turn "esc" argument of expand_env_esc() into string of chars to be escaped.
2369
2370Should make 'ignorecase' global-local, so that it makes sense setting it from
2371a modeline.
2372
2373Add cscope target to Makefile. (Tony Mechelynck, 2009 Jun 18, replies by
2374Sergey Khorev)
2375
2376Consider making YankRing or something else that keeps a list of yanked text
2377part of standard Vim.  The "1 to "9 registers are not sufficient.
23786   When yanking into the unnamed registers several times, somehow make the
2379    previous contents also available (like it's done for deleting).  What
2380    register names to use?  g"1, g"2, etc.?
2381Also do this for the small delete register "-.
2382
2383After doing "su" $HOME can be the old user's home, thus ~root/file is not
2384correct.  Don't use it in the swap file.
2385
2386Completion for ":buf" doesn't work properly on Win32 when 'shellslash' is off.
2387(Henrik Ohman, 2009, Jan 29)
2388
2389shellescape() depends on 'shellslash' for quoting.  That doesn't work when
2390'shellslash' is set but using cmd.exe. (Ben Fritz)
2391Use a different option or let it depend on whether 'shell' looks like a
2392unix-like shell?
2393
2394Bug: in Ex mode (after "Q") backslash before line break, when yanked into a
2395register and executed, results in <Nul>: instead of line break.
2396(Konrad Schwarz, 2010 Apr 16)
2397
2398Have a look at patch for utf-8 line breaking. (Yongwei Wu, 2008 Mar 1, Mar 23)
2399Now at: http://vimgadgets.sourceforge.net/liblinebreak/
2400
2401Greek sigma character should be lower cased depending on the context.  Can we
2402make this work?  (Dominique Pelle, 2009 Sep 24)
2403
2404When changing 'encoding' convert all the swap file names, so that we can
2405still delete them.  Also convert all buffer file names?
2406
2407"gqip" in Insert mode has an off-by-one error, causing it to reflow text.
2408(Raul Coronado, 2009 Nov 2)
2409
2410MS-Windows: editing the first, empty buffer, 'ffs' set to "unix,dos", ":enew"
2411doesn't set 'ff' to "unix".  (Ben Fritz, 2008 Dec 5) Reusing the old buffer
2412probably causes this.
2413
2414'scrollbind' is not respected when deleting lines or undo. (Milan Vancura,
24152009 Jan 16)
2416
2417Document that default font in Athena can be set with resources:
2418   XtDefaultFont: "9x15"
2419   XtDefaultFontSet: "9x15"
2420(Richard Sherman, 2009 Apr 12)
2421
2422Having "Syntax" in 'eventignore' for :bufdo may cause problems, e.g. for
2423":bufdo e" when buffers are open in windows.  ex_listdo(eap) could set the
2424option only for when jumping to another buffer, not when the command argument
2425is executed.
2426
2427":pedit %" with a BufReadPre autocommand causes the cursor to move to the
2428first line. (Ingo Karkat, 2008 Jul 1)  Ian Kelling is working on this.
2429Similar problem with ":e". (Marc Montu, 2014 Apr 22)
2430
2431Wildmenu not deleted: "gvim -u NONE", ":set nocp wildmenu cmdheight=3
2432laststatus=2", CTRL-D CTRL-H CTRL-H CTRL-H. (A.Politz, 2008 April 1)
2433Works OK with Vim in an xterm.
2434
2435Cursor line moves in other window when using CTRL-W J that doesn't change
2436anything.  (Dasn, 2009 Apr 7)
2437
2438On Unix "glob('does not exist~')" returns the string.  Without the "~" it
2439doesn't. (John Little, 2008 Nov 9)
2440Shell expansion returns unexpanded string?
2441Don't use shell when "~" is not at the start?
2442
2443When using ":e ++enc=foo file" and the file is already loaded with
2444'fileencoding' set to "bar", then do_ecmd() uses that buffer, even though the
2445fileencoding differs.  Reload the buffer in this situation?  Need to check for
2446the buffer to be unmodified.
2447Unfinished patch by Ian Kelling, 2008 Jul 11.  Followup Jul 14, need to have
2448another look at it.
2449
2450c.vim: XXX in a comment is colored yellow, but not when it's after "#if 0".
2451(Ilya Dogolazky, 2009 Aug 7)
2452
2453You can type ":w ++bad=x fname", but the ++bad argument is ignored.  Give an
2454error message?  Or is this easy to implement?  (Nathan Stratton Treadway, 2008
2455Aug 20)  This is in ucs2bytes(), search for 0xBF.  Using the ++bad argument is
2456at the other match for 0xBF.
2457
2458When adding "-complete=file" to a user command this also changes how the
2459argument is processed for <f-args>. (Ivan Tishchenko, 2008 Aug 19)
2460
2461Win32: associating a type with Vim doesn't take care of space after a
2462backslash? (Robert Vibrant, 2008 Jun 5)
2463
2464When 'rightleft' is set, cursorcolumn isn't highlighted after the end of a
2465line.  It's also wrong in folds. (Dominique Pelle, 2010 Aug 21)
2466
2467After using <Tab> for command line completion after ":ta blah" and getting E33
2468(no tags file), further editing the command to e.g., ":echo 'blah'", the
2469command is not executed.  Fix by Ian Kelling?
2470
2471":help s/~" jumps to *s/\~*, while ":help s/\~" doesn't find anything. (Tim
2472Chase)  Fix by Ian Kelling, 2008 Jul 14.
2473
2474When mapping : to ; and ; to :, @; doesn't work like @: and @: doesn't work
2475either.  Matt Wozniski:  nv_at() calls do_execreg() which uses
2476put_in_typebuf().  Char mapped twice?
2477
2478Despite adding save_subexpr() this still doesn't work properly:
2479Regexp: matchlist('12a4aaa', '^\(.\{-}\)\(\%5c\@<=a\+\)\(.\+\)\?')
2480Returns ['12a4', 'aaa', '4aaa'], should be ['12a4', 'aaa', '']
2481Backreference not cleared when retrying after \@<= fails?
2482(Brett Stahlman, 2008 March 8)
2483
2484Problem with remote_send(). (Charles Campbell, 2008 Aug 12)
2485
2486ftplugin for help file should set 'isk' to help file value.
2487
2488Win32: remote editing fails when the current directory name contains "[".
2489(Ivan Tishchenko, Liu Yubao)  Suggested patch by Chris Lubinski: Avoid
2490escaping characters where the backslash is not removed later.  Asked Chris for
2491an alternate solution, also for src/ex_getln.c.
2492This also fails when the file or directory name contains "%". (Thoml, 2008
2493July 7)
2494Using --remote-silent while the current directory has a # in the name does not
2495work, the # needs to be escaped. (Tramblay Bruno, 2012 Sep 15)
2496
2497When using remote-silent the -R flag is not passed on. (Axel Bender, 2012 May
249831)
2499
2500Win32: A --remote command that has a directory name starting with a ( doesn't
2501work, the backslash is removed, assuming that it escapes the (. (Valery
2502Kondakoff, 2009 May 13)
2503
2504Win32: Using "gvim --remote-tab-silent elŝuti.txt" doesn't work, the
2505multibyte character isn't passed and edits elsuti.txt.
2506(Raúl Núñez de Arenas Coronado, 2015 Dec 18)
2507
2508Problem with 'langmap' being used on the rhs of a mapping. (Nikolai Weibull,
25092008 May 14)
2510Possibly related problem: Alexey Muranov, 2015 Apr 2
2511
2512Problem with CTRL-F. (Charles Campbell, 2008 March 21)
2513Only happens with "gvim -geometry "160x26+4+27" -u NONE -U NONE prop.c".
2514'lines' is 54. (2008 March 27)
2515
2516Problem with pointer wrapping around in getvcol(). (Wolfgang Kroworsch, 2008
2517Oct 19)  Check for "col" being "MAXCOL" separately?
2518
2519Unexpectedly inserting a double quote. (Anton Woellert, 2008 Mar 23)
2520Works OK when 'cmdheight' is 2.
2521
25228   Use a mechanism similar to omni completion to figure out the kind of tab
2523    for CTRL-] and jump to the appropriate matching tag (if there are
2524    several).
2525    Alternative: be able to define a function that takes the tag name and uses
2526    taglist() to find the right location.  With indication of using CTRL-] so
2527    that the context can be taken into account. (Robert Webb)
2528Patch by Christian Brabandt, 2013 May 31.
2529
2530The utf class table is missing some entries:
2531	0x2212, minus sign
2532	0x2217, star
2533	0x2500, bar
2534	0x26ab, circle
2535
2536Visual line mode doesn't highlight properly when 'showbreak' is used and the
2537line doesn't fit. (Dasn, 2008 May 1)
2538
2539GUI: In Normal mode can't yank the modeless selection.  Make "gy" do this?
2540Works like CTRL-Y in Command line mode.
2541
2542Mac: Move Carbon todo items to os_mac.txt.  Note that this version is frozen,
2543try the Cocoa version.
2544
2545Mac: After a ":vsplit" the left scrollbar doesn't appear until 'columns' is
2546changed or the window is resized.
2547
2548GTK: when setting 'columns' in a startup script and doing ":vertical diffsplit"
2549the window isn't redrawn properly, see two vertical bars.
2550
2551Mac: Patch for configure: remove arch from ruby link args. (Knezevic, 2008
2552Mar 5)  Alternative: Kazuki Sakamoto, Mar 7.
2553
2554Mac: trouble compiling with Motif, requires --disable-darwin. (Raf, 2008 Aug
25551)  Reply by Ben Schmidt.
2556
2557C't: On utf-8 system, editing file with umlaut through Gnome results in URL
2558with %nn%nn, which is taken as two characters instead of one.
2559Try to reproduce at work.
2560
2561Patch for default choice in file changed dialog. (Bjorn Winckler, 2008 Oct 19)
2562Is there a way to list all the files first?
2563
2564When 'smartcase' is set and using CTRL-L to add to the search pattern it may
2565result in no matches.  Convert chars to lower case? (Erik Wognsen, 2009 Apr
256616)
2567
2568Fail to edit file after failed register access.  Error flag remains set?
2569(Lech Lorens, 2010 Aug 30)
2570
2571Patch for redo register. (Ben Schmidt, 2007 Oct 19)
2572Await response to question to make the register writable.
2573
2574Problem with 'ts' set to 9 and 'showbreak' to ">>>". (Matthew Winn, 2007 Oct
25751)
2576
2577In the swapfile dialog, add a H(elp) option that gives more info about what
2578each choice does.  Similar to  ":help swap-exists-choices"
2579
2580":tab help" always opens a new tab, while ":help" re-uses an existing window.
2581Would be more consistent when an existing tab is re-used. (Tony Mechelynck)
2582
2583Add ":nofold".  Range will apply without expanding to closed fold.
2584
2585Using Aap to build Vim: add remarks about how to set personal preferences.
2586Example on http://www.calmar.ws/tmp/aap.html
2587
2588Syntax highlighting wrong for transparent region. (Doug Kearns, 2007 Feb 26)
2589Bug in using a transparent syntax region. (Hanlen in vim-dev maillist, 2007
2590Jul 31)
2591
2592When 'diffopt' has "context:0" a single deleted line causes two folds to merge
2593and mess up syncing. (Austin Jennings, 2008 Jan 31)
2594
2595Gnome improvements: Edward Catmur, 2007 Jan 7
2596    Also use Save/Discard for other GUIs
2597
2598New PHP syntax file, use it? (Peter Hodge)
2599
2600":echoe" in catch block stops processing, while this doesn't happen outside of
2601a catch block. (ZyX, 2011 Jun 2)
2602
2603Test 54 uses shell commands, that doesn't work on non-Unix systems.  Use some
2604other way to test buffer-local autocommands.
2605
2606The documentation mentions the priority for ":2match" and ":3match", but it
2607appears the last one wins. (John Beckett, 2008 Jul 22)  Caused by adding
2608matchadd()?  Suggested patch by John, 2008 Jul 24.
2609
2610When 'encoding' is utf-8 the command line is redrawn as a whole on every
2611character typed. (Tyler Spivey, 2008 Sep 3)  Only redraw cmdline for
2612'arabicshape' when there is a character on the command line for which
2613(ARABIC_CHAR(u8c)) is TRUE.
2614
2615Cheng Fang made javacomplete. (2007 Aug 11)
2616Asked about latest version: 0.77.1 is on www.vim.org.
2617
2618More AmigaOS4 patches. (Peter Bengtsson, Nov 9)
2619
2620Amiga patches with vbcc. (Adrien Destugues, 2010 Aug 30)
2621http://pulkomandy.ath.cx/drop/vim73_vbcc_amiga.diff
2622
2623Problem with compound words?  (Bert, 2008 May 6)
2624No warning for when flags are defined after they are used in an affix.
2625
2626Screen redrawing when continuously updating the buffer and resizing the
2627terminal. (Yakov Lerner, 2006 Sept 7)
2628
2629Add option settings to help ftplugin. (David Eggum, 2006 Dec 18)
2630
2631Autoconf problem: when checking for iconv library we may add -L/usr/local/lib,
2632but when compiling further tests -liconv is added without the -L argument,
2633that may fail (e.g., sizeof(int)). (Blaine, 2007 Aug 21)
2634
2635Problem with ".add" files when using two languages and restarting Vim. (Raul
2636Coronado, 2008 Oct 30)
2637
2638Popup menu redraw: Instead of first redrawing the text and then drawing the
2639popup menu over it, first draw the new popup menu, remember its position and
2640size and then redraw the text, skipping the characters under the popup menu.
2641This should avoid flicker.  Other solution by A.Politz, 2007 Aug 22.
2642
2643When a register contains illegal bytes, writing viminfo in utf-8 and reading
2644it back doesn't result in utf-8. (Devin Bayer)
2645
2646Command line completion: Scanning for tags doesn't check for typed key now and
2647then?  Hangs for about 5 seconds.  Appears to be caused by finding include
2648files with "foo/**" in 'path'.  (Kalisiak, 2006 July 15)
2649Additional info: When using the |wildcards| ** globing, vim hangs
2650indefinitely on lots of directories. The |file-searching| globing, like in
2651":set path=/**" does not hang as often as with globing with |wildcards|, like
2652in ":1find /**/file".  This is for files that unix "find" can find very
2653quickly. Merging the 2 kinds of globing might make this an easier fix. (Ian
2654Kelling, 2008 July 4)
2655
2656When the file name has parenthesis, e.g., "foo (bar).txt", ":!ls '%'" has the
2657parenthesis escaped but not the space.  That's inconsistent.  Either escape
2658neither or both.  No escaping might be best, because it doesn't depend on
2659particularities of the shell. (Zvi Har'El, 2007 Nov 10) (Teemu Likonen, 2008
2660Jun 3)
2661However, for backwards compatibility escaping might be necessary.  Check if
2662the user put quotes around the expanded item?
2663
2664A throw in a function causes missing an endif below the call. (Spiros
2665Bousbouras, 2011 May 16)
2666
2667Error E324 can be given when a cron script has wiped out our temp directory.
2668Give a clear error message about this (and tell them not to wipe out /tmp).
2669
2670Color for cUserLabel should differ from case label, so that a mistake in a
2671switch list is noticed:
2672    switch (i)
2673    {
2674    case 1:
2675    foobar:
2676    }
2677
2678Look at http://www.gtk-server.org/ .  It has a Vim script implementation.
2679
2680Netbeans problem.  Use "nc -l 127.0.0.1 55555" for the server, then run gvim
2681with "gvim -nb:localhost:55555:foo".  From nc do: '1:editFile!0 "foo"'.  Then
2682go to Insert mode and add a few lines.  Then backspacing every other time
2683moves the cursor instead of deleting. (Chris Kaiser, 2007 Sep 25)
2684
2685Windows installer could add a "open in new tab of existing Vim" menu entry.
2686GvimExt: patch to add "Edit with single Vim &tabbed" menu entry.
2687Just have two choices, always using one Vim and selecting between using an
2688argument list or opening each file in a separate tab.
2689(Erik Falor, 2008 May 21, 2008 Jun 26)
2690
2691Windows installer: licence text should not use indent, causes bad word wrap.
2692(Benjamin Fritz, 2010 Aug 16)
2693
2694Changes for Win32 makefile. (Mike Williams, 2007 Jan 22, Alexei Alexandrov,
26952007 Feb 8)
2696
2697Win32: Can't complete shell command names.  Why is setting xp_context in
2698set_one_cmd_context() inside #ifndef BACKSLASH_IN_FILENAME?
2699
2700Win32: Patch for cscope external command. (Mike Williams, 2007 Aug 7)
2701
2702Win32: XPM support only works with path without spaces.  Patch by Mathias
2703Michaelis, 2006 Jun 9.  Another patch for more path names, 2006 May 31.
2704New version: http://members.tcnet.ch/michaelis/vim/patches.zip (also for other
2705patches by Mathias, see mail Feb 22)
2706
2707Win32: compiling with normal features and OLE fails.  Patch by Mathias
2708Michaelis, 2006 Jun 4.
2709
2710Win32: using CTRL-S in Insert mode doesn't remove the "+" from the tab pages
2711label.  (Tsakiridis, 2007 Feb 18)  Patch from Ian Kelling, 2008 Aug 6.
2712
2713Win32: using "gvim --remote-tab-silent fname" sometimes gives an empty screen
2714with the more prompt.  Caused by setting the guitablabel?  (Thomas Michael
2715Engelke, 2007 Dec 20 - 2008 Jan 17)
2716
2717Win32: patch for fullscreen mode. (Liushaolin, 2008 April 17)
2718
2719Win32: When 'shell' is bash shellescape() doesn't always do the right thing.
2720Depends on 'shellslash', 'shellquote' and 'shellxquote', but shellescape()
2721only takes 'shellslash' into account.
2722
2723Menu item that does "xxd -r" doesn't work when 'fileencoding' is utf-16.
2724Check for this and use iconv?  (Edward L. Fox, 2007 Sep 12)
2725Does the conversion in the other direction work when 'fileencodings' is set
2726properly?
2727
2728Cursor displayed in the wrong position when using 'numberwidth'. (James Vega,
27292007 Jun 21)
2730
2731When $VAR contains a backslash expand('$VAR') removes it. (Teemu Likonen, 2008
2732Jun 18)
2733
2734If the variable "g:x#y#z" exists completion after ":echo g:x#" doesn't work.
2735
2736In debug mode, using CTRL-R = to evaluate a function causes stepping through
2737the function. (Hari Krishna Dara, 2006 Jun 28)
2738
2739C++ indenting wrong with "=". (James Kanze, 2007 Jan 26)
2740
2741":lockvar" should use copyID to avoid endless loop.
2742
2743When using --remote-silent and the file name matches 'wildignore' get an E479
2744error.  without --remote-silent it works fine. (Ben Fritz, 2008 Jun 20)
2745
2746GVim: dialog for closing Vim should check if Vim is busy writing a file.  Then
2747use a different dialog: "busy saving, really quit? yes / no".
2748
2749Check other interfaces for changing curbuf in a wrong way.  Patch like for
2750if_ruby.c.
2751
2752":helpgrep" should use the directory from 'helpfile'.
2753
2754The need_fileinfo flag is messy.  Instead make the message right away and put
2755it in keep_msg?
2756
2757Editing a file remotely that matches 'wildignore' results in a "no match"
2758error.  Should only happen when there are wildcards, not when giving the file
2759name literally, and esp. if there is only one name.
2760
2761Test 61 fails sometimes.  This is a timing problem: "sleep 2" sometimes takes
2762longer than 2 seconds.
2763
2764Using ":au CursorMoved * cmd" invokes mch_FullName(), which can be slow.
2765Can this be avoided? (Thomas Waba, 2008 Aug 24)
2766Also for ":w" without a file name.
2767The buffer has the full path in ffname, should pass this to the autocommand.
2768
2769"vim -C" often has 'nocompatible', because it's set in some startup script.
2770Set 'compatible' after startup is done?  Patch by James Vega, 2008 Feb 7.
2771
2772VMS: while editing a file found in complex, Vim will save file into the first
2773directory of the path and not to the original location of the file.
2774(Zoltan Arpadffy)
2775
2776VMS: VFC files are in some cases truncated during reading (Zoltan Arpadffy)
2777
2778input() completion should not insert a backslash to escape a space in a file
2779name?
2780
2781Ruby completion is insecure.  Can this be fixed?
2782
2783When 'backupskip' is set from $TEMP special characters need to be escaped.
2784(patch by Grembowietz, 2007 Feb 26, not quite right)
2785Another problem is that file_pat_to_reg_pat() doesn't recognize "\\", so "\\("
2786will be seen as a path separator plus "\(".
2787
2788gvim d:\path\path\(FILE).xml should not remove the \ before the (.
2789This also fails with --remote.
2790
2791When doing ":quit" the Netbeans "killed" event isn't sent.  (Xavier de Gaye,
27922008 Nov 10)  call netbeans_file_closed() at the end of buf_freeall(), or in
2793all places where buf_freeall() is called?
2794
2795aucmd_prepbuf() should also use a window in another tab page.
2796
2797When unloading a buffer in a BufHidden autocommand the hidden flag is reset?
2798(Bob Hiestand, 2008 Aug 26, Aug 27)
2799
2800Substituting an area with a line break with almost the same area does change
2801the Visual area.  Can this be fixed? (James Vega, 2006 Sept 15)
2802
2803GUI: When combining fg en bg make sure they are not equal.
2804
2805Use different pt_br dictionary for spell checking. (Jackson A. Aquino, 2006
2806Jun 5)
2807
2808Use different romanian dictionary for spell checking. (Andrei Popescu, Nov
28092008)  Use http://downloads.sourceforge.net/rospell/ro_RO.3.2.zip
2810Or the hunspell-ro.3.2.tar.gz file, it also has a iso-8859-2 list.
2811
2812In a C file with spell checking, in "% integer" "nteger" is seen as an error,
2813but "]s" doesn't find it.  "nteger" by itself is found. (Ralf Wildenhues, 2008
2814Jul 22)
2815
2816There should be something about spell checking in the user manual.
2817
2818Mac: Using gvim: netrw window disappears. (Nick Lo, 2006 Jun 21)
2819
2820Add an option to specify the character to use when a double-width character is
2821moved to the next line.  Default '>', set to a space to blank it out.  Check
2822that char is single width when it's set (compare with 'listchars').
2823
2824The generated vim.bat can avoid the loop for NT. (Carl Zmola, 2006 Sep 3)
2825
2826When showing a diff between a non-existent file and an existing one, with the
2827cursor in the empty buffer, the other buffer only shows the last line.  Change
2828the "insert" into a change from one line to many? (Yakov Lerner, 2008 May 27)
2829
2830These two abbreviations don't give the same result:
2831	let asdfasdf = "xyz\<Left>"
2832	cabbr XXX <C-R>=asdfasdf<CR>
2833	cabbr YYY xyz<Left>
2834
2835Michael Dietrich: maximized gvim sometimes displays output of external command
2836partly. (2006 Dec 7)
2837
2838In FileChangedShell command it's no longer allowed to switch to another
2839buffer.  But the changed buffer may differ from the current buffer, how to
2840reload it then?
2841
2842For Aap: include a config.arg.example file with hints how to use config.arg.
2843
2844Command line completion when 'cmdheight' is maximum and 'wildmenu' is set,
2845only one buffer line displayed, causes display errors.
2846
2847Completing with 'wildmenu' and using <Up> and <Down> to move through directory
2848tree stops unexpectedly when using ":cd " and entering a directory that
2849doesn't contain other directories.
2850
2851Default for 'background' is wrong when using xterm with 256 colors.
2852Table with estimates from Matteo Cavalleri, 2014 Jan 10.
2853
2854Setting 'background' resets the Normal background color:
2855   highlight Normal ctermbg=DarkGray
2856   set background=dark
2857This is undesired, 'background' is supposed to tell Vim what the background
2858color is, not reset it.
2859
2860Completion menu: For a wrapping line, completing a long file name, only the
2861start of the path is shown in the menu.  Should move the menu to the right to
2862show more text of the completions.  Shorten the items that don't fit in the
2863middle?
2864
2865Accessing file#var in a function should not need the g: prepended.
2866
2867When exiting detects a modified buffer, instead of opening the buffer in the
2868current tab, use an existing tab, if possible.  Like finding a window where
2869the buffer is displayed. (Antonios Tsakiridis)
2870
2871When ":cn" moves to an error in the same line the message isn't shortened.
2872Only skip shortening for ":cc"?
2873
2874Problem with ":call" and dictionary function. Hari Krishna Dara, Charles
2875Campbell 2006 Jul 06.
2876
2877Syntax HL error caused by "containedin". (Peter Hodge, 2006 Oct 6)
2878
2879A custom completion function in a ":command" cannot be a Funcref. (Andy
2880Wokula, 2007 Aug 25)
2881
2882Problem with using :redir in user command completion function? (Hari Krishna
2883Dara, 2006 June 21)
2884
2885Another resizing problem when setting 'columns' and 'lines' to a very large
2886number. (Tony Mechelynck, 2007 Feb 6)
2887
2888After starting Vim, using '0 to jump somewhere in a file, ":sp" doesn't center
2889the cursor line.  It works OK after some other commands.
2890
2891Win32: Is it possible to have both postscript and Win32 printing?
2892
2893Problem with 'cdpath' on MS-Windows when a directory is equal to $HOME. (2006
2894Jul 26, Gary Johnson)
2895
2896Using UTF-8 character with ":command" does not work properly. (Matt Wozniski,
28972008 Sep 29)
2898
2899In the Netbeans interface add a "vimeval" function, so that the other side can
2900check the result of has("patch13").
2901
2902Cursor line at bottom of window instead of halfway after saving view and
2903restoring.  Only with 'nowrap'. (Robert Webb, 2008 Aug 25)
2904
2905Netrw has trouble executing autocommands only for a directory.  Add <isdir>
2906and <notisdir> to autocommand patterns?  Also <isfile>?
2907
2908Add command modifier that skips wildcard expansion, so that you don't need to
2909put backslashes before special chars, only for white space.
2910
2911Syntax HL: open two windows on the same C code, delete a ")" in one window,
2912resulting in highlighted "{" in that window, not in the other.
2913
2914In mswin.vim: Instead of mapping <C-V> for Insert mode in a complicated way,
2915can it be done like ":imap <C-V> <MiddleMouse>" without negative side effects?
2916
2917GTK: when the Tab pages bar appears or disappears while the window is
2918maximized the window is no longer maximized.  Patch that has some idea but
2919doesn't work from Geoffrey Antos, 2008 May 5.
2920Also: the window may no longer fit on the screen, thus the command line is not
2921visible.
2922
2923When right after "vim file", "M" then CTRL-W v the windows are scrolled
2924differently and unexpectedly.  Caused by patch 7.2.398?
2925
2926The magic clipboard format "VimClipboard2" appears in several places.  Should
2927be only one.
2928
2929Win32, NTFS: When editing a specific infostream directly and 'backupcopy' is
2930"auto" should detect this situation and work like 'backupcopy' is "yes".  File
2931name is something like "c:\path\foo.txt:bar", includes a colon.  (Alex
2932Jakushev, 2008 Feb 1)
2933
2934Small problem displaying diff filler line when opening windows with a script.
2935(David Luyer, 2007 Mar 1 ~/Mail/oldmail/mool/in.15872 )
2936
2937Is it allowed that 'backupext' is empty?  Problems when backup is in same dir
2938as original file?  If it's OK don't compare with 'patchmode'. (Thierry Closen)
2939
2940Patch for adding ":lscscope". (Navdeep Parhar, 2007 Apr 26; update 2008 Apr
294123)
2942
2943":mkview" isn't called with the right buffer argument.  Happens when using
2944tabs and the autocommand "autocmd BufWinLeave * mkview".  (James Vega, 2007
2945Jun 18)
2946
2947When completing from another file that uses a different encoding completion
2948text has the wrong encoding.  E.g., when 'encoding' is utf-8 and file is
2949latin1.  Example from Gombault Damien, 2007 Mar 24.
2950
2951Syntax HL: When using "nextgroup" and the group has an empty match, there is
2952no search at that position for another match. (Lukas Mai, 2008 April 11)
2953
2954In gvim the backspace key produces a backspace character, but on Linux the
2955VERASE key is Delete.  Set VERASE to Backspace? (patch by Stephane Chazelas,
29562007 Oct 16)
2957
2958TermResponse autocommand isn't always triggered when using vimdiff. (Aron
2959Griffis, 2007 Sep 19)
2960
2961Create a gvimtutor.1 file and change Makefiles to install it.
2962
2963When 'encoding' is utf-8 typing text at the end of the line causes previously
2964typed characters to be redrawn.  Caused by patch 7.1.329. (Tyler Spivey, 2008
2965Sep 3, 11)
2966
2967":vimgrep" does not recognize a recursive symlink.  Is it possible to detect
2968this, at least for Unix (using device/inode)?
2969
2970When switching between windows the cursor is often put in the middle.
2971Remember the relative position and restore that, just like lnum and col are
2972restored. (Luc St-Louis)
2973
2974Patch to support horizontal scroll wheel in GTK. Untested. (Bjorn Winckler,
29752010 Jun 30)
2976
2977Add an option for a minimal text length before inserting a line break for
2978'textwidth'.  Avoids very short lines when a very long word follows.
2979(Kartik Agaram)
2980
2981
2982Better plugin support (not plugin manager, see elsewhere for that):
2983- Avoid use of feedkeys, add eval functions where needed:
2984  - manipulating the Visual selection?
2985- Add createmark(): add a mark like mM, but return a unique ID.  Need some way
2986  to clean them up again...  Use a name + the script ID.
2987  Add createmark( , 'c') to track inserts/deletes before the column.
2988- Plugins need to make a lot of effort, lots of mappings, to know what
2989  happened before pressing the key that triggers a plugin action.  How about
2990  keeping the last N pressed keys, so that they do not need to be mapped?
2991- equivalent of netbeans_beval_cb().  With an autocommand?
2992- Add something to enable debugging when a remote message is received.
2993
2994
2995More patches:
2996-   Another patch for Javascript indenting. (Hari Kumar, 2010 Jul 11)
2997    Needs a few tests.
2998-   Add 'cscopeignorecase' option. (Liang Wenzhi, 2006 Sept 3)
2999-   Extra argument to strtrans() to translate special keys to their name (Eric
3000    Arnold, 2006 May 22)
3001-   Mac: indicate whether a buffer was modified. (Nicolas Weber, 2006 Jun 30)
3002-   Allow negative 'nrwidth' for left aligning. (Nathan Laredo, 2006 Aug 16)
3003-   ml_append_string(): efficiently append to an existing line. (Brad
3004    Beveridge, 2006 Aug 26)  Use in some situations, e.g., when pasting a
3005    character at a time?
3006-   recognize hex numbers better. (Mark Manning, 2006 Sep 13)
3007-   Add <AbbrExpand> key, to expand an abbreviation in a mapping. (Kana
3008    Natsuno, 2008 Jul 17)
3009-   Add 'wspara' option, also accept blank lines like empty lines for "{" and
3010    "}". (Mark Lundquist, 2008 Jul 18)
3011-   Patch to add CTRL-T to delete part of a path on cmdline. (Adek, 2008 Jul
3012    21)
3013-   Instead of creating a copy of the tutor in all the shell scripts, do it in
3014    vimtutor.vim. (Jan Minar, 2008 Jul 20)
3015-   When fsync() fails there is no hint about what went wrong.  Patch by Ben
3016    Schmidt, 2008 Jul 22.
3017-   testdir/Make_dos_sh.mak for running tests with MingW. (Bill McCarthy, 2008
3018    Sep 13)
3019-   Replace ccomplete.vim by cppcomplete.vim from www.vim.org?  script 1520 by
3020    Vissale Neang.  (Martin Stubenschrott) Asked Vissale to make the scripts
3021    more friendly for the Vim distribution.
3022    New version received 2008 Jan 6.
3023    No maintenance in two years...
3024-   Patch to open dropped files in new tabs. (Michael Trim, 2010 Aug 3)
3025
3026Awaiting updated patches:
30279   Mac unicode patch (Da Woon Jung, Eckehard Berns):
3028    8   Add patch from Muraoka Taro (Mar 16) to support input method on Mac?
3029	New patch 2004 Jun 16
3030    - selecting proportional font breaks display
3031    - UTF-8 text causes display problems.  Font replacement causes this.
3032    - Command-key mappings do not work. (Alan Schmitt)
3033    - With 'nopaste' pasting is wrong, with 'paste' Command-V doesn't work.
3034      (Alan Schmitt)
3035    - remove 'macatsui' option when this has been fixed.
3036    - when 'macatsui' is off should we always convert to "macroman" and ignore
3037      'termencoding'?
30389   HTML indenting can be slow.  Caused by using searchpair().  Can search()
3039    be used instead?  A.Politz is looking into a solution.
30408   Win32: Add minidump generation. (George Reilly, 2006 Apr 24)
30417   Completion of network shares, patch by Yasuhiro Matsumoto.
3042    Update 2004 Sep 6.
3043    How does this work?  Missing comments.
30448   Add a few more command names to the menus.  Patch from Jiri Brezina
3045    (28 feb 2002).  Will mess the translations...
30467   ATTENTION dialog choices are more logical when "Delete it" appears
3047    before "Quit".  Patch by Robert Webb, 2004 May 3.
3048-   Include flipcase patch: ~/vim/patches/wall.flipcase2 ?  Make it work
3049    for multibyte characters.
3050-   Win32: add options to print dialog.  Patch from Vipin Aravind.
3051-   Patch to add highlighting for whitespace. (Tom Schumm, 2003 Jul 5)
3052    use the patch that keeps using HLF_8 if HLF_WS has not
3053    been given values.
3054    Add section in help files for these highlight groups?
30557   Add "DefaultFG" and "DefaultBG" for the colors of the menu. (Marcin
3056    Dalecki has a patch for Motif and Carbon)
3057-   Add possibility to highlight specific columns (for Fortran).  Or put a
3058    line in between columns (e.g., for 'textwidth').
3059    Patch to add 'hlcolumn' from Vit Stradal, 2004 May 20.
30608   Add functions:
3061    gettext()		Translate a message.  (Patch from Yasuhiro Matsumoto)
3062			Update 2004 Sep 10
3063			Another patch from Edward L. Fox (2005 Nov 24)
3064			Search in 'runtimepath'?
3065			More docs needed about how to use this.
3066			How to get the messages into the .po files?
3067    confirm()		add "flags" argument, with 'v' for vertical
3068			    layout and 'c' for console dialog. (Haegg)
3069			    Flemming Madsen has a patch for the 'c' flag
3070			    (2003 May 13)
3071    raisewin()		raise gvim window (see HierAssist patch for
3072			    Tcl implementation ~/vim/HierAssist/ )
3073    taglist()		add argument to specify maximum number of matches.
3074			useful for interactive things or completion.
3075    col('^')            column of first non-white character.
3076			Can use "len(substitute(getline('.'), '\S.*', '', ''))
3077			+ 1", but that's ugly.
30787   Add patch from Benoit Cerrina to integrate Vim and Perl functions
3079    better.  Now also works for Ruby (2001 Nov 10)
30807   When 'rightleft' is set, the search pattern should be displayed right
3081    to left as well?  See patch of Dec 26. (Nadim Shaikli)
30828   Option to lock all used memory so that it doesn't get swapped to disk
3083    (unencrypted).  Patch by Jason Holt, 2003 May 23.  Uses mlock.
30847   Add ! register, for shell commands. (patch from Grenie)
30858   In the gzip plugin, also recognize *.gz.orig, *.gz.bak, etc.  Like it's
3086    done for filetype detection.  Patch from Walter Briscoe, 2003 Jul 1.
30877   Add a "-@ filelist" argument: read file names from a file. (David
3088    Kotchan has a patch for it)
30897   Add ":justify" command.  Patch from Vit Stradal 2002 Nov 25.
3090-   findmatch() should be adjusted for Lisp.  See remark at
3091    get_lisp_indent().  Esp. \( and \) should be skipped. (Dorai Sitaram,
3092    incomplete patch Mar 18)
3093-   For GUI Find/Replace dialog support using a regexp.  Patch for Motif
3094    and GTK by degreneir (nov 10 and nov 18).
3095-   Patch for "paranoid mode" by Kevin Collins, March 7.  Needs much more work.
3096
3097Better 'rightleft' or BIDI support:
3098- Minimal Vi with bidi support: https://github.com/aligrudi/neatvi
3099  By Ali Gholami Rudi, also worked on arabic.c
3100
3101
3102Spell checking:
3103-   When 'cursorline' is set and the first word should have SpellCap
3104    highlighting, redrawing the line removes it when moving the cursor away
3105    from the line. (#7085)  Would need to inspect the end of the previous line
3106    and update "capcol_lnum" and "cap_col".
3107-   Mixup of highlighting when there is a match and SpellBad. (ZyX, 2015 Jan 1)
3108-   Spell files use a latin single quote. Unicode also has another single
3109    quote: 0x2019.  (Ron Aaron, 2014 Apr 4)
3110    New OpenOffice spell files support this with ICONV.  But they are not
3111    compatible with Vim spell files.  The old files can no longer be
3112    downloaded.
3113-   Add a feature to only consider two spaces after a dot to start a new
3114    sentence.  Don't give the capitalization error when there is one space.
3115-   Add a way to specify punctuation characters.  Add the superscript numbers
3116    by default: 0x2070, 0xb9, 0xb2, 0xb3, 0x2074 - 0x2079.
3117-   In popup menu: If the only problem is the case of the first character,
3118    don't offer "ignore" and "add to word list".
3119-   Spell menu: When using the Popup menu to select a replacement word,
3120    ":spellrepeat" doesn't work.  SpellReplace() uses setline().  Can it use
3121    "z=" somehow?  Or use a new function.
3122
3123
3124Quickfix/Location List:
3125-   Window size is wrong when using quickfix window. (Lifepillar, 2018 Aug 24,
3126    #2999)
3127-   When using CTRL-W CR in the quickfix window, the jumplist in the opened
3128    window is cleared, to avoid going back to the list of errors buffer (would
3129    have two windows with it).  Can we just remove the jump list entries for
3130    the quickfix buffer?
3131-   When an item in the quickfix list has a file name that does not exist,
3132    behave like the item was not a match for :cnext.
3133-   When adding an item to a new quickfix list make ":cnext" jump to that
3134    item.  Make a difference being at the first item and not having used
3135    :cnext at all.  (Afanasiy Fet, 2017 Jan 3)
3136-   When opening quickfix window, disable spell checking?
3137-   Patch for supporting count before CR in quickfix window. (AOYAMA Shotaro,
3138    2007 Jan 1)
3139-   Patch from Herculano de Lima Einloft Neto for better formatting of the
3140    quickfix window (2004 dec 2)
3141-   Amiga: When using quickfix with the Manx compiler we only get the first 25
3142    errors.  How do we get the rest?
31438   The quickfix file is read without conversion, thus in 'encoding'.  Add an
3144    option to specify the encoding of the errorfile and convert it.  Also for
3145    ":grep" and ":helpgrep".
3146    More generic solution: support a filter (e.g., by calling a function).
31477   Add a command that goes back to the position from before jumping to the
3148    first quickfix location.
3149
3150Vi incompatibility:
3151-   Try new POSIX tests, made after my comments. (Geoff Clare, 2005 April 7)
3152    Version 1.5 is in ~/src/posix/1.5. (Lynne Canal)
31538   With undo/redo only marks in the changed lines should be changed.  Other
3154    marks should be kept.  Vi keeps each mark at the same text, even when it
3155    is deleted or restored. (Webb)
3156    Also: A mark is lost after: make change, undo, redo and undo.
3157    Example: "{d''" then "u" then "d''": deletes an extra line, because the ''
3158    position is one line down. (Veselinovic)
31598   When stdin is not a tty, and Vim reads commands from it, an error should
3160    make Vim exit.
31617   Unix Vim (not gvim): Typing CTRL-C in Ex mode should finish the line
3162    (currently you can continue typing, but it's truncated later anyway).
3163    Requires a way to make CTRL-C interrupt select() when in cooked input.
31648   When loading a file in the .exrc, Vi loads the argument anyway.  Vim skips
3165    loading the argument if there is a file already.  When no file argument
3166    given, Vi starts with an empty buffer, Vim keeps the loaded file. (Bearded)
31676   In Insert mode, when using <BS> or <Del>, don't wipe out the text, but
3168    only move back the cursor.	Behaves like '$' in 'cpoptions'.  Use a flag
3169    in 'cpoptions' to switch this on/off.
31708   When editing a file which is a symbolic link, and then opening another
3171    symbolic link on the same file, Vim uses the name of the first one.
3172    Adjust the file name in the buffer to the last one used?  Use several file
3173    names in one buffer???
3174    Also: When first editing file "test", which is symlink to "test2", and
3175    then editing "test2", you end up editing buffer "test" again.  It's not
3176    logical that the name that was first used sticks with the buffer.
31777   The ":undo" command works differently in Ex mode.  Edit a file, make some
3178    changes, "Q", "undo" and _all_ changes are undone, like the ":visual"
3179    command was one command.
3180    On the other hand, an ":undo" command in an Ex script only undoes the last
3181    change (e.g., use two :append commands, then :undo).
31827   The ":map" command output overwrites the command.  Perhaps it should keep
3183    the ":map" when it's used without arguments?
31847   CTRL-L is not the end of a section?  It is for Posix!  Make it an option.
31857   Add a way to send an email for a crashed edit session.  Create a file when
3186    making changes (containing name of the swap file), delete it when writing
3187    the file.  Supply a program that can check for crashed sessions (either
3188    all, for a system startup, or for one user, for in a .login file).
31897   Vi doesn't do autoindenting when input is not from a tty (in Ex mode).
31907   "z3<CR>" should still use the whole window, but only redisplay 3 lines.
31917   ":tag xx" should move the cursor to the first non-blank.  Or should it go
3192    to the match with the tag?	Option?
31937   Implement 'autoprint'/'ap' option.
31947   Add flag in 'cpoptions' that makes <BS> after a count work like <Del>
3195    (Sayre).
31967   Add flag in 'cpoptions' that makes operator (yank, filter) not move the
3197    cursor, at least when cancelled. (default Vi compatible).
31987   This Vi-trick doesn't work: "Q" to go to Ex mode, then "g/pattern/visual".
3199    In Vi you can edit in visual mode, and when doing "Q" you jump to the next
3200    match.  Nvi can do it too.
32017   Support '\' for line continuation in Ex mode for these commands: (Luebking)
3202	g/./a\		    g/pattern1/ s/pattern2/rep1\\
3203	line 1\		    line 2\\
3204	line 2\		    line 3\\
3205	.		    line4/
32066   ":e /tmp/$tty" doesn't work.  ":e $uid" does.  Is $tty not set because of
3207    the way the shell is started?
32086   Vi compatibility (optional): make "ia<CR><ESC>10." do the same strange
3209    thing.  (only repeat insert for the first line).
3210
3211
3212GTK+ GUI known bugs:
32139   Crash with X command server over ssh. (Ciaran McCreesh, 2006 Feb 6)
32148   GTK 2: Combining UTF-8 characters not displayed properly in menus (Mikolaj
3215    Machowski)  They are displayed as separate characters.  Problem in
3216    creating a label?
32178   GTK 2: Combining UTF-8 characters are sometimes not drawn properly.
3218    Depends on the font size, "monospace 13" has the problem.  Vim seems to do
3219    everything right, must be a GTK bug.  Is there a way to work around it?
32209   Can't paste a Visual selection from GTK-gvim to vim in xterm or Motif gvim
3221    when it is longer than 4000 characters.  Works OK from gvim to gvim and
3222    vim to vim.  Pasting through xterm (using the shift key) also works.
3223    It starts working after GTK gvim loses the selection and gains it again.
3224-   Gnome2: When moving the toolbar out of the dock, so that it becomes
3225    floating, it can no longer be moved.  Therefore making it float has been
3226    blocked for now.
3227
3228
3229Win32 GUI known bugs:
3230-   Win32: tearoff menu window should have a scrollbar when it's taller than
3231    the screen.
32328   The -P argument doesn't work very well with many MDI applications.
3233    The last argument of CreateWindowEx() should be used, see MSDN docs.
3234    Tutorial: http://win32assembly.online.fr/tut32.html
32356   Win32 GUI: With "-u NONE -U NONE" and doing "CTRL-W v" "CTRL-W o", the ":"
3236    of ":only" is highlighted like the cursor.  (Lipelis)
32378   When 'encoding' is "utf-8", should use 'guifont' for both normal and wide
3238    characters to make Asian languages work.  Win32 fonts contain both
3239    type of characters.
32407   When font smoothing is enabled, redrawing can become very slow.  The reason
3241    appears to be drawing with a transparent background.  Would it be possible
3242    to use an opaque background in most places?
32437   The cursor color indicating IME mode doesn't work properly. (Shizhu Pan,
3244    2004 May 9)
32458   Win32: When clicking on the gvim title bar, which gives it focus, produces
3246    a file-changed dialog, after clicking on a button in that dialog the gvim
3247    window follows the mouse.  The button-up event is lost.  Only with
3248    MS-Windows 98?
3249    Try this: ":set sw ts", get enter-prompt, then change the file in a
3250    console, go back to Vim and click "reload" in the dialog for the changed
3251    file: Window moves with the cursor!
3252    Put focus event in input buffer and let generic Vim code handle it?
32538   Win32 GUI: With maximized window, ":set go-=r" doesn't use the space that
3254    comes available. (Poucet)  It works OK on Win 98 but doesn't work on Win
3255    NT 4.0.  Leaves a grey area where the scrollbar was.  ":set go+=r" also
3256    doesn't work properly.
32578   When Vim is minimized and when maximizing it a file-changed dialog pops
3258    up, Vim isn't maximized.  It should be done before the dialog, so that it
3259    appears in the right position. (Webb)
32609   When selecting at the more-prompt or hit-enter-prompt, the right mouse
3261    button doesn't give popup menu.
3262    At the hit-enter prompt CTRL-Y doesn't work to copy the modeless
3263    selection.
3264    On the command line, don't get a popup menu for the right mouse button.
3265    Let the middle button paste selected text (not the clipboard but the
3266    non-Visual selection)?  Otherwise CTRL-Y has to be used to copy the text.
32678   When 'grepprg' doesn't execute, the error only flashes by, the
3268    user can hardly see what is wrong. (Moore)
3269    Could use vimrun with an "-nowait" argument to only wait when an error
3270    occurs, but "command.com" doesn't return an error code.
32718   When the 'shell' cannot be executed, should give an appropriate error msg.
3272    Esp. for a filter command, currently it only complains the file could not
3273    be read.
32747   At the hit-enter prompt scrolling now no longer works.  Need to use the
3275    keyboard to get around this.  Pretend <CR> was hit when the user tries to
3276    scroll?
32777   Scrollbar width doesn't change when selecting other windows appearance.
3278    Also background color of Toolbar and rectangle below vert. scrollbar.
32796   Drawing text transparently doesn't seem to work (when drawing part cursor).
32808   CTRL key doesn't always work in combination with ALT key.  It does work
3281    for function keys, not for alphabetic characters.  Perhaps this is because
3282    CTRL-ALT is used by Windows as AltGr?
32838   CTRL-- doesn't work for AZERTY, because it's CTRL-[ for QWERTY.  How do we
3284    know which keyboard is being used?
32857   When scrolling, and a background color is dithered, the dither pattern
3286    doesn't always join correctly between the scrolled area and the new drawn
3287    area (Koloseike).
32888   When gui_init_font() is called with "*", p_guifont is freed while it might
3289    still be used somewhere.  This is too tricky, do the font selection first,
3290    then set the new font by name (requires putting all logfont parameters in
3291    the font name).
3292
3293
3294Athena and Motif:
32956   New Motif toolbar button from Marcin Dalecki:
3296    - When the mouse pointer is over an Agide button the red becomes black.
3297      Something with the way colors are specified in the .xpm file.
3298    - The pixmap is two pixels smaller than it should be.  The gap is filled
3299      with grey instead of the current toolbar background color.
33009   Can configure be changed to disable netbeans if the Xpm library is
3301    required and it's missing?
33028   When using the resource "Vim*borderwidth 2" the widgets are positioned
3303    wrong.
33049   XIM is disabled by default for SGI/IRIX.  Fix XIM so that 'imdisable' can
3305    be off by default.
33069   XIM doesn't work properly for Athena/Motif. (Yasuhiro Matsumoto)  For now,
3307    keep XIM active at all times when the input method has the preediting
3308    flag.
33098   X11: A menu that contains an umlaut is truncated at that character.
3310    Happens when the locale is "C", which uses ASCII instead of IS0-8859-1.
3311    Is there a way to use latin1 by default?  Gnome_init() seems to do this.
33128   Perhaps use fontsets for everything?
33136   When starting in English and switching the language to Japanese, setting
3314    the locale with ":lang", 'guifontset' and "hi menu font=", deleting all
3315    menus and setting them again, the menus don't use the new font.  Most of
3316    the tooltips work though...
33177   Motif: when using a file selection dialog, the specified file name is not
3318    always used (when specifying a filter or another directory).
33198   When 'encoding' is different from the current locale (e.g., utf-8) the
3320    menu strings don't work.  Requires conversion from 'encoding' to the
3321    current locale.  Workaround: set 'langmenu'.
3322
3323
3324Athena GUI:
33259   The first event for any button in the menu or toolbar appears to get lost.
3326    The second click on a menu does work.
33279   When dragging the scrollbar thumb very fast, focus is only obtained in
3328    the scrollbar itself.  And the thumb is no longer updated when moving
3329    through files.
33307   The file selector is not resizable.  With a big font it is difficult to
3331    read long file names. (Schroeder)
33324   Re-write the widget attachments and code so that we will not have to go
3333    through and calculate the absolute position of every widget every time the
3334    window is refreshed/changes size.  This will help the "flashing-widgets"
3335    problem during a refresh.
33365   When starting gvim with all the default colors and then typing
3337    ":hi Menu guibg=cyan", the menus change color but the background of the
3338    pullright pixmap doesn't change colors.
3339    If you type ":hi Menu guibg=cyan font=anyfont", then the pixmap changes
3340    colors as it should.
3341    Allocating a new pixmap and setting the resource doesn't change the
3342    pullright pixmap's colors.  Why?  Possible Athena bug?
3343
3344
3345Motif GUI:
3346-   gui_mch_browsedir() is missing, browsedir() doesn't work nicely.
33477   Use XmStringCreateLocalized() instead of XmStringCreateSimple()?
3348    David Harrison says it's OK (it exists in Motif 1.2).
33498   Lesstif: When deleting a menu that's torn off, the torn off menu becomes
3350    very small instead of disappearing.  When closing it, Vim crashes.
3351    (Phillipps)
3352
3353
3354GUI:
33559   On Solaris, creating the popup menu causes the right mouse button no
3356    longer to work for extending the selection. (Halevy)
33579   When running an external program, it can't always be killed with CTRL-C.
3358    e.g., on Solaris 5.5, when using "K" (Keech).  Other 'guipty' problems on
3359    Solaris 2.6. (Marley)
33609   On Solaris: Using a "-geometry" argument, bigger than the window where Vim
3361    is started from, causes empty lines below the cmdline. (raf)
33628   When setting 'langmenu', it should be effective immediately.  Store both
3363    the English and the translated text in the menu structure.  Re-generate
3364    the translation when 'langmenu' has changed.
33658   Basic flaw in the GUI code: NextScreen is updated before calling
3366    gui_write(), but the GUI code relies on NextScreen to represent the state
3367    of where it is processing the output.
3368    Need better separation of Vim core and GUI code.
33698   When fontset support is enabled, setting 'guifont' to a single font
3370    doesn't work.
33718   Menu priority for sub-menus for: Amiga.
33728   When translating menus ignore the part after the Tab, the shortcut.  So
3373    that the same menu item with a different shortcut (e.g., for the Mac) are
3374    still translated.
33758   Add menu separators for Amiga.
33768   Add way to specify the file filter for the browse dialog.  At least for
3377    browse().
33788   Add dialog for search/replace to other GUIs?  Tk has something for this,
3379    use that code?  Or use console dialog.
33808   When selecting a font with the font dialog and the font is invalid, the
3381    error message disappears too quick.
33827   More features in the find/replace dialog:
3383    - regexp on/off
3384    - search in selection/buffer/all buffers/directory
3385       when all buffers/directory is used:
3386	- filter for file name
3387       when directory is used:
3388	- subdirectory on/off
3389	- top directory browser
33908   gui_check_colors() is not called at the right moment.  Do it much later,
3391    to avoid problems.
33928   gui_update_cursor() is called for a cursor shape change, even when there
3393    are mappings to be processed.  Only do something when going to wait for
3394    input.  Or maybe every 100 ms?
33958   X11: When the window size is reduced to fit on screen, there are blank
3396    lines below the text and bottom scrollbar.  "gvim -geometry 80x78+0+0".
3397    When the "+0+0" is omitted it works.
33988   When starting an external command, and 'guipty' set, BS and DEL are mixed
3399    up.  Set erase character somehow?
34008   The compose key doesn't work properly (Cepas).  Both for Win32 and X11.
34017   The cursor in an inactive window should be hollow.  Currently it's not
3402    visible.
34037   GUI on Solaris 2.5.1, using /usr/dt/..: When gvim starts, cursor is
3404    hollow, after window lowered/raised it's OK. (Godfrey)
34057   When starting GUI with ":gui", and window is made smaller because it
3406    doesn't fit on the screen, there is an extra redraw.
34078   When setting font with .Xdefaults, there is an extra empty line at the
3408    bottom, which disappears when using ":set guifont=<Tab>". (Chadzelek)
34098   When font shape changes, but not the size, doing ":set font=" does not
3410    redraw the screen with the new font.  Also for Win32.
3411    When the size changes, on Solaris 2.5 there isn't a redraw for the
3412    remaining part of the window (Phillipps).
3413-   Flashes really badly in certain cases when running remotely from a Sun.
34144   Re-write the code so that the highlighting isn't changed multiple times
3415    when doing a ":hi clear".  The color changes happen three or more times
3416    currently.  This is very obvious on a 66Mhz 486.
3417
3418
3419Win32 console:
34208   Should $USERPROFILE be preferred above $HOMEDRIVE/$HOMEPATH?  No, but it's
3421    a good fallback, thus use:
3422	    $HOME
3423	    $HOMEDRIVE$HOMEPATH
3424	    SHGetSpecialFolderPath(NULL, lpzsPath, CSIDL_APPDATA, FALSE);
3425	    $USERPROFILE
3426	    SHGetSpecialFolderPath(NULL, lpzsPath, CSIDL_COMMON_APPDATA, FALSE);
3427	    $ALLUSERSPROFILE
3428	    $SYSTEMDRIVE\
3429	    C:\
34308   Win32 console: <M-Up> and <M-Down> don't work. (Geddes)  We don't have
3431    special keys for these.  Should use modifier + key.
34328   Win32 console: caps-lock makes non-alpha keys work like with shift.
3433    Should work like in the GUI version.
34348   Environment variables in DOS are not case sensitive.  Make a define for
3435    STRCMP_ENV(), and use it when comparing environment var names.
34368   Setting 'shellslash' has no immediate effect.  Change all file names when
3437    it is set/reset?  Or only use it when actually executing a shell command?
34388   When editing a file on a Samba server, case might matter.  ":e file"
3439    followed by ":e FILE" will edit "file" again, even though "FILE" might be
3440    another one.  Set last used name in buflist_new()?  Fix do_ecmd(), etc.
34418   When a buffer is editing a file like "ftp://mach/file", which is not going
3442    to be used like a normal file name, don't change the slashes to
3443    backslashes. (Ronald Hoellwarth)
3444
3445
3446Win32 console:
34479   When editing a file by its short file name, it should be expanded into its
3448    long file name, to avoid problems like these: (Mccollister)
3449     1) Create a file called ".bashrc" using some other editor.
3450     2) Drag that file onto a shortcut or the actual executable.
3451     3) Note that the file name is something like BASHRC~1
3452     4) Go to File->Save As menu item and type ".bashrc" as the file name.
3453     5) Press "Yes" to indicate that I want to overwrite the file.
3454     6) Note that the message "File exists (add ! to override)" is displayed
3455	and the file is not saved.
3456    Use FindFirstFile() to expand a file name and directory in the path to its
3457    long name.
34588   Also implement 'conskey' option for the Win32 console version?  Look at
3459    how Xvi does console I/O under Windows NT.
34607   Re-install the use of $TERM and support the use of different terminals,
3461    besides the console.
34628   Use of <altgr> modifier doesn't work?  5.3 was OK. (Garcia-Suarez/Guckes)
34639   Mapping <C-S-Tab> doesn't work correctly.  How to see the difference with
3464    <C-S-i>?
34659   tmpnam() uses file in root of file system: "\asdf".  That doesn't work on
3466    a Netware network drive.  Use same function as for Win32 GUI?
34678   In os_win32.h, HAVE_STRICMP and HAVE_STRNICMP are defined only if __GNUC__
3468    is not defined.  Shouldn't that be the other way around?
3469
3470
3471Amiga:
34728   In mch_inchar() should use convert_input_safe() to handle incomplete byte
3473    sequences.
34749   In mch_expandpath() a "*" is to be expanded, but "\*" isn't.  Remove
3475    backslashes in result.
34768   Executing a shell, only one option for 'shell' is separated.  Should do
3477    all options, using white space separation.
3478
3479
3480Macintosh:
3481-   GUI: gui_mch_browsedir() is missing.
34827   Loading the Perl library only works on OS/X 10.2 or 10.3, never on both.
3483    Load the Perl library dynamically see Python sources file dynload_mac
3484    (Jack)
3485    dynamic linking: http://developer.apple.com/technotes/tn2002/tn2064.html
34868   inputdialog() doesn't resize when giving more text lines. (David Fishburn,
3487    2006 Sept 28)
34888   Define vim_mkdir() for Macintosh.
34898   Define mch_writable() for Macintosh.
34909   When DiskLock is running, using a swap file causes a crash.  Appears to be
3491    a problem with writing a file that starts with a dot. (Giacalone)
34929   In mac_expandpath() check that handling of backslashes is done properly.
3493
3494
3495"Small" problems:
3496-   When using e_secure in do_one_cmd() mention the command being executed,
3497    otherwise it's not clear where it comes from.
34989   For Turkish vim_tolower() and vim_toupper() also need to use utf_
3499    functions for characters below 0x80. (Sertacyildiz)
35009   When the last edited file is a help file, using '0 in a new Vim doesn't
3501    edit the file as a help file.  'filetype' is OK, but 'iskeyword' isn't,
3502    file isn't readonly, etc.
35038   When an ":edit" is inside a try command and the ATTENTION prompt is used,
3504    the :catch commands are always executed, also when the file is edited
3505    normally.  Should reset did_emsg and undo side effects.  Also make sure
3506    the ATTENTION message shows up.  Servatius Brandt works on this.
35077   Vimtutor leaves escape sequence in terminal. This is the xterm response to
3508    requesting the version number.  (Yasuhiro Matsumoto)
35098   When redirecting and using ":silent" the current column for displaying and
3510    redirection can be different.  Use a separate variable to hold the column
3511    for redirection.
35127   The messages for "vim --help" and "vim --version" don't use
3513    'termencoding'.
3514-   Could the hit-enter prompt be avoided when a message only overlaps the
3515    'showcmd' area?  Clear that area when the next cmd is typed.
35168   When 'scrollbind' is set, a window won't scroll horizontally if the cursor
3517    line is too short.  Add a word in 'scrollopt' to allow moving the cursor
3518    to longer line that is visible.  A similar thing is done for the GUI when
3519    using the horizontal scrollbar.
35207   VisVim can only open one file.  Hard to solve: each opened file is passed
3521    with a separate invocation, would need to use timestamps to know the
3522    invocations belong together.
35238   When giving a ":bwipeout" command a file-changed dialog may popup for this
3524    buffer, which is pointless.  (Mike Williams)
35258   On MS-Windows ":make" doesn't show output while it is working.  Use the
3526    tee.exe from  http://unxutils.sourceforge.net/ ?  About 16 Kbyte in the
3527    UnxUtils.zip archive.
3528    Is it better than what we have in src/tee?
35298   When doing Insert mode completion a mapping cannot recursively call
3530    edit(), because the completion information is global.  Put everything in
3531    an allocated structure?
35328   Command line completion: buffers "foo.txt" and "../b/foo.txt", completing
3533    ":buf foo<Tab>" doesn't find the second one. (George V. Reilly)
35347   mb_off2cells() doesn't work correctly on the tail byte of a double-byte
3535    character. (Yasuhiro Matsumoto)  It should return 1 when used on a tail
3536    byte, like for utf-8.  Store second byte of double-byte in ScreenLines2[]
3537    (like for DBCS_JPNU) and put a zero in the second byte (like for UTF-8).
35387   Inside a function with "perl <<EOF" a line with "$i++" is recognized as an
3539    ":insert" command, causing the following "endfunction" not to be found.
3540    Add skipping this perl construction inside function definitions.
35417   When 'ttimeoutlen' is 10 and 'timeoutlen' is 1000, there is a keycode
3542    "<Esc>a" and a mapping <Esc>x", when typing "<Esc>a" with half a second
3543    delay should not be interpreted as a keycode. (Hans Ginzel)
35447   ":botright 1 new" twice causes all window heights to be changed.  Make the
3545    bottom window only bigger as much as needed.
35467   The Cygwin and MingW makefiles define "PC", but it's not used anywhere.
3547    Remove? (Dan Sharp)
35489   User commands use the context of the script they were defined in.  This
3549    causes a "s:var" argument to unexpectedly use a variable in the defining
3550    script, not the calling script.  Add an argument to ":command":
3551    "-keepcontext".  Do replace <SID>, so that a function in the defining
3552    script can be called.
35538   The Japanese message translations for MS-Windows are called ja.sjis.po,
3554    but they use encoding cp932.  Rename the file and check that it still
3555    works.
35568   A very long message in confirm() can't be quit.  Make this possible with
3557    CTRL-C.
35588   "gf" always excludes trailing punctuation characters.  file_name_in_line()
3559    is currently fixed to use ".,:;!".  Add an option to make this
3560    configurable?
35618   'hkmap' should probably be global-local.
35628   Using ":s" in a function changes the previous replacement string.  Save
3563    "old_sub" in save_search_patterns()?
35648   Should allow multibyte characters for the delimiter: ":s+a+b+" where "+"
3565    is a multibyte character.
35668   When appending to a file and 'patchmode' isn't empty, a backup file is
3567    always written, even when the original file already exists.
35689   When getting focus while writing a large file, could warn for this file
3569    being changed outside of Vim.  Avoid checking this while the file is being
3570    written.
35717   The message in bt_dontwrite_msg() could be clearer.
35728   The script ID that is stored with an option and displayed with ":verbose
3573    set" isn't reset when the option is set internally.  For example when
3574    'foldlevel' is set from 'foldlevelstart'.
35758   Also store the line number with the script ID and use it for ":verbose",
3576    so that "set nocompatible" is found when it changes other option values.
3577    When an option is set indirectly mention the command?  E.g. when
3578    ":diffsplit" sets 'foldmethod'.
35798   In the fileformat dialog, "Cancel" isn't translated.  Add a global
3580    variable for this. (Eduardo Fernandez)
35819   When editing a file with 'readonly' set, there is no check for an existing
3582    swap file.  Then using ":write" (without making any changes) doesn't give
3583    a warning either.  Should check for an existing swap file without creating
3584    one. Unfinished patch by Ian Kelling, 2008 July 14.
35857   When 'showbreak' is set, the amount of space a Tab occupies changes.
3586    Should work like 'showbreak' is inserted without changing the Tabs.
35877   When 'mousefocus' is set and switching to another window with a typed
3588    command, the mouse pointer may be moved to a part of the window that's
3589    covered by another window and we lose focus.  Only move in the y
3590    direction, not horizontally?
35918   ":hardcopy":
3592    - Using the cterm_color[] table is wrong when t_colors is > 16.
3593    - Need to handle unprintable characters.
3594    - Win32: On a B&W printer syntax highlighting isn't visible.  Perform
3595      dithering to make grey text?
3596    - Add a flag in 'printoptions' to add an empty page to make the total
3597      number even.  "addempty"? (Mike Williams)
3598    - Respect 'linebreak'.  Perhaps also 'showbreak'?
3599    - Should interpret CTRL-L as a page break.
3600    - Grey line numbers are not always readable.  Add field in 'printoptions'.
3601      Default to black when no syntax highlighting.
3602    - Be able to print a window in diff mode.
3603    - Be able to specify a colorscheme to use for printing.  And a separate
3604      one for B&W printing (if that can be detected).
36058   When 'virtualedit' is "block,insert" and encoding is "utf-8", selecting a
3606    block of one double-wide character, then "d" deletes only half of it.
36078   When 'virtualedit' is set, should "I" in blockwise visual mode also insert
3608    in lines that don't extend into the block?
36098   With 'virtualedit' set, in Insert mode just after the end of line, CTRL-O
3610    yh does not yank the last character of the line. (Pavel Papushev)
3611    Doing "hl" first appears to make it work.
36128   With 'virtualedit' set it's possible to move into the blank area from
3613    'linebreak'.
36148   With 'virtualedit' set and 'selection' "exclusive", a Visual selection
3615    that ends in or after a tab, "d" doesn't delete (part of) the tab.
3616    (Helmut Stiegler)
36179   When jumping to a tag, the search pattern is put in the history.  When
3618    'magic' is on, the pattern may not work.  Translate the pattern depending
3619    on p_magic when putting it in the history?  Alternative: Store value of
3620    'magic' in history.  (Margo)
36219   optwin.vim: Restoring a mapping for <Space> or <CR> is not correct for
3622    ":noremap".  Add "mapcmd({string}, {mode})?  Use code from ":mkexrc".
36239   term_console is used before it is set (msdos, Amiga).
36249   Get out-of-memory for ":g/^/,$s//@/" on 1000 lines, this is not handled
3625    correctly.  Get many error messages while redrawing the screen, which
3626    cause another redraw, etc.
36278   [<C-I> doesn't work when '*' is in 'iskeyword'.  find_pattern_in_path()
3628    must escape special characters in the pattern.
36298   Vim can overwrite a read-only file with ":w!".  ":w" can't overwrite an
3630    existing file, "w!" can, but perhaps not a read-only file?  Then use
3631    ":w!!" for that.
3632    Or ask for permission to overwrite it (if file can be made writable) and
3633    restore file to readonly afterwards.
3634    Overwriting a file for which a swap file exists is similar issue.
36357   When compiled with "xterm_clipboard", startup can be slower and might get
3636    error message for invalid $DISPLAY.  Try connecting to the X server in the
3637    background (forked), so that Vim starts up quicker?  Connect as soon as
3638    the clipboard is to be used (Visual select mode starts, paste from
3639    clipboard)
36407   X11: Some people prefer to use CLIPBOARD instead of PRIMARY for the normal
3641    selection.  Add an "xclipboard" argument to the 'clipboard' option? (Mark
3642    Waggoner)
36436   When the xterm reports the number of colors, a redraw occurs.  This is
3644    annoying on a slow connection.  Wait for the xterm to report the number of
3645    colors before drawing the screen.  With a timeout.
36468   When the builtin xterm termcap contains codes that are not wanted, need a
3647    way to avoid using the builtin termcap.
36488   Xterm sends ^[[H for <Home> and ^[[F for <End> in some mode.  Also
3649    recognize these keys?  Mostly useful for xterm simulators, like gnometerm.
3650    See http://dickey.his.com/xterm/xterm.faq.html#xterm_pc_style.
36518   '[ and '] should be set to start/end of line when using a linewise operator
3652    (e.g., ":w").
36538   CTRL-A can't handle big "long" numbers, they become negative.  Check for
3654    "-" character, if not present, use unsigned long.
36558   Add suspending with CTRL-Z at the "more" prompt, and when executing a long
3656    script in do_cmdline().
36578   When using 'hidden', many swap files will be open.  When Vim runs into the
3658    maximum number of open files, error messages will appear.  Detect that
3659    this problem is present, and close any hidden files that don't have
3660    changes.
36618   With 'viminfo' set such that the ".viminfo" file is written on a FAT
3662    filesystem, an illegal file name may be created: ".vim".
36638   For each buffer that is opened, the viminfo file is opened and read to
3664    check for file marks.  This can be slow.
36658   Core dump within signal function: gdb doesn't show stack backtrace!  Option
3666    to skip catch_signals()?
36679   Repeating a "cw" with "." doesn't work if the text was pasted from the
3668    clipboard. (Thomas Jones)  It's because the menu/toolbar item exits Insert
3669    mode and uses "gP".  How to fix this without breaking inserting a block of
3670    text?
36718   In Replace mode pasting from the clipboard (using menu or toolbar) inserts
3672    all the text.  Add ":rmenu"?
36738   Pasting with the mouse in Replace mode inserts the text, instead of
3674    overwriting, when it is more than one line.  Same for using <C-R>.
36759   CTRL-E and CTRL-Y don't work in small window when 'so' is 4 and lines are
3676    wrapping (Acevedo/in.226).  E.g., when using CTRL-E, window height 7,
3677    window might actually scroll down when last line of buffer is displayed.
3678    --> Remember if the previous command was "cursor follows screen" or
3679    "screen follow cursor" and use this in cursupdate().
36807   tilde_replace() can only handle "~/", should also do "~user/".
3681    Get the list of home directories (from /etc/passwd?  Use getpwent()) and
3682    use some clever algorithm to match a path with that.  Find common strings
3683    in the list?
36848   When dragging status line with mouse, sometimes a jump when first clicking
3685    on the status line (caused by 'winheight').  Select window on button up,
3686    instead of on button down.
36878   Dragging the status line doesn't scroll but redraw.
36888   When performing incremental search, should abort searching as soon as a
3689    character is typed.
36908   When the value of $MAKE contains a path, configure can't handle this.
3691    It's an autoconf bug.  Remove the path from $MAKE to work around it.
36928   How to set VIMRC_FILE to \"something\" for configure?  Why does this not
3693    work: CFLAGS='-DVIMRC_FILE=\"/mydir/myfile\"' ./configure
36948   The temporary file is sometimes not writable.  Check for this, and use an
3695    alternate name when it isn't.  Or add the 'temptemplate' option: template
3696    for the temp file name ":set temptemplate=/usr/tmp/?????.tmp".
3697    Also: Win32 version uses Windows temp directory, which might not work for
3698    cygwin bash.
36997   Get error "*, \+ or \( operand could be empty" for pattern "\(.\)\1\{3}".
3700    Remember flags for backreferences.
37017   When switching to Daylight Saving Time, Vim complains that a file has been
3702    changed since last read.  Can we use a function that uses GMT?
37037   When completing an environment variable after a '$', check for file names
3704    that contain a '$' after all have been found.
37058   When "cm" termcap entry is missing, starting gvim shouldn't complain about
3706    it. (Lohner)  Try out with "vt100" entry, cm replaced with cX.
37077   When an include file starts with "../", the check for already visiting
3708    this file doesn't work.  Need to simplify the file name.
37097   The names and comments for the arguments of do_browse() are confusing.
3710    "dflt" isn't the default file name when "initdir" is not NULL and
3711    "initdir" is the default path to be used.
37127   When 'scrolloff' is exactly half the window height, "j" causes a scroll of
3713    two lines at a time.  "k" doesn't do this. (Cory T. Echols)
37148   When write_viminfo() is used while there are many orphaned viminfo
3715    tempfiles writing the viminfo file fails.  Give a clear error message so
3716    that the user knows the files have to be deleted.
3717
3718
3719I can't reproduce these (if you can, let me know how!):
37209   NT 4.0 on NTFS file system: Editing ".bashrc" (drag and drop), file
3721    disappears.  Editing ".xyz" is OK.  Also, drag&drop only works for three
3722    files. (McCollister)
3723
3724
3725Problems that will (probably) not be solved:
3726-   GTK: when using the popup menu with spelling suggestions and releasing the
3727    right mouse button before the menu appears selecting an item with the
3728    right mouse button has no effect.  GTK does not produce an event for this.
3729-   GTK 2: Cannot use the file selector.  When using it many things become
3730    slow.  This is caused by some code in GTK that writes
3731    ~/.recently-used.xbel every time an event is handled.  It assumes the main
3732    loop is never quit, which is a wrong assumption.  Also, it overwrites the
3733    file with different file permissions, which is a privacy issue.  This
3734    needs to be fixed in GTK.  A solution in Vim would be really complicated.
3735    (2008 Jul 31)  This appears to be fixed in Vim 7.3.
3736-   xterm title: The following scenario may occur (esp. when running the Vim
3737    test script): Vim 1 sets the title to "file1", then restores the title to
3738    "xterm" with an ESC sequence when exiting.  Vim 2 obtains the old title
3739    with an X library call, this may result in "file1", because the window
3740    manager hasn't processed the "xterm" title yet.  Can apparently only be
3741    worked around with a delay.
3742-   In a terminal with 'mouse' set such that the mouse is active when entering
3743    a command line, after executing a shell command that scrolls up the
3744    display and then pressing ":": Selecting text with the mouse works like
3745    the display wasn't scrolled.  Vim doesn't know how much the external
3746    command scrolled up the display.  Use Shift to select text.
3747-   X windows: When $DISPLAY points to a X server where there is no access
3748    permission, trying to connect to the X server causes an error message.
3749    XtOpenDisplay() prints this directly, there is no way to avoid it.
3750-   X windows: Setting 'guifontset' to an illegal value sometimes crashes Vim.
3751    This is caused by a fault in a X library function, can't be solved in Vim.
3752-   Win32 tcl: has("tcl") hangs when the tcl84.dll is from cygwin.
3753-   Motif: When adding a menu item "Find this &Symbol", the "s" in "this" will
3754    be underlined, instead of in "Symbol".  Motif doesn't let us specify which
3755    character gets the highlighting.
3756-   Moving the cursor removes color in color-xterm.  This is a color-xterm
3757    problem!  color-xterm ver. 6.1 beta 3 and later work properly.
3758-   In zsh, "gvim&" changes the terminal settings.  This is a zsh problem.
3759    (Jennings)
3760-   Problem with HPterm under X: old contents of window is lost (Cosentino).
3761-   Amiga: The ":cq" command does not always abort the Manx compiler.  Why?
3762-   Linux: A file with protection r--rw-rw- is seen readonly for others.  The
3763    access() function in GNU libc is probably wrong.
3764-   When doing a CTRL-Z and typing a command for the shell, while Vim is busy
3765    (e.g. writing a file), the command for the shell is sometimes eaten by Vim,
3766    because the terminal mode is changed from RAW to CBREAK.
3767-   An old version of GNU tgoto can't handle the terminfo code for "AF".  The
3768    "%p1" is interpreted as "%p" and "1", causing color not to be working.
3769    Fix: Change the "%p1" in the "AF" and "AB" terminfo entries to "%p".
3770    (Benzinger).
3771-   When running an external command from the GUI, typeahead is going to that
3772    program, not to Vim.  It looks like the shell eats the characters, Vim
3773    can't get back what the external command didn't use.
3774-   Win32 GUI: Error code from external command not returned in shell_error.
3775    It appears that cmd.exe and command.com don't return an error code.
3776-   Win32 GUI: The Toolbar is a bit too high when the flat style is being
3777    used.  We don't have control over the height of the Toolbar.
3778-   Win32: All files created on the day of switching from winter to summer
3779    time cause "changed since editing started" messages.  It goes away when
3780    the file is written again the next day, or the timezone is adjusted.
3781    DJGPP version is OK. (Zaimi)  Looks like a problem with the Win32 library.
3782    Rebooting doesn't help.  Time stamps look OK in directory. (Penn)
3783    Is this on FAT (stores wall clock time) or NTFS (stores UTS)?
3784-   Win32, MS-Windows XP: $HOME uses the wrong drive when the user profiles
3785    are not on the boot disk.  This is caused by a wrong value of $HOMEDRIVE.
3786    This is a bug in XP, see MSKB article 818134.
3787-   Win32, MS-Windows: expanding plugin/**/*.vim also picks up
3788    dir/ctags.vim,v.  This is because the short file name is something like
3789    "ctags~1.vim" and that matches the pattern.
3790-   SunOS 5.5.1 with Motif: The file open dialog does not have a horizontal
3791    scroll bar for the "files" selection.  This is a problem in the Motif
3792    libraries, get a patch from Sun.
3793-   Solaris 2.6 with GTK and Perl: gvim crashes when started.  Problem with X
3794    input method called from GDK code.  Without Perl it doesn't crash.
3795-   VMS: Vimdiff doesn't work with the VMS diff, because the output looks
3796    different.  This makes test 47 fail.  Install a Unix-compatible diff.
3797-   Win32 GUI: mouse wheel always scrolls rightmost window.  The events arrive
3798    in Vim as if the rightmost scrollbar was used.
3799-   GTK with Gnome: Produces an error message when starting up:
3800	Gdk-WARNING **: locale not supported by C library
3801    This is caused by the gnome library gnome_init() setting $LC_CTYPE to
3802    "en_US".  Not all systems support this locale name, thus causing the
3803    error.  Hopefully a newer version of GTK/Gnome fixes this problem.
3804-   GTK 2: With this mapping the hit-enter prompt is _sometimes_ below the
3805    screen, at other times there is a grey area below the command line:
3806	:nmap <F11> :if &guioptions=~'m' \| set guioptions-=m \| else \| set guioptions+=m \| endif<cr>
3807-   GTK: When pasting a selection from Vim to xclipboard gvim crashes with a
3808    ABRT signal.  Probably an error in the file gdkselection.c, the assert
3809    always fails when XmbTextListToTextProperty() fails. (Tom Allard)
3810-   GTK 2: gives an assertion error for every non-builtin icon in the toolbar.
3811    This is a GTK 2.4.x bug, fixed in GTK 2.4.2. (Thomas de Grenier de Latour)
3812-   When using an xterm that supports the termresponse feature, and the 't_Co'
3813    termcap option was wrong when Vim started, it will be corrected when the
3814    termresponse is received.  Since the number of colors changes, the
3815    highlighting needs to be initialized again.  This may cause colors defined
3816    in the vimrc file to be lost.
3817-   On Windows NT 4.0 the number of files passed to Vim with drag&drop and
3818    "Edit with Vim" is limited.  The maximum command line length is 255 chars.
3819
3820---------------------  extensions and improvements ----------------------
3821						    *extensions-improvements*
3822
3823Most interesting new features to be added when all bugs have been fixed:
3824-   Using ":exe edit fname" has escaping problems.  Use ":edit ++(fname)".
3825    Thus use "++=" to give arguments as expressions, comma separated as if
3826    calling a function.
3827    With options: ":edit ++(['!', '++enc=abc'], ['+/pat'], fname)".
3828    Alternative: Make a function for Ex commands: cmd_edit().
3829-   Add COLUMN NUMBERS to ":" commands ":line1,line2[col1,col2]cmd".  Block
3830    can be selected with CTRL-V.  Allow '$' (end of line) for col2.
3831    (issue #3292)
3832-   ECLIPSE plugin.  Problem is: the interface is very complicated.  Need to
3833    implement part in Java and then connect to Vim.  Some hints from Alexandru
3834    Roman, 2004 Dec 15.  Should then also work with Oracle Jdeveloper, see JSR
3835    198 standard http://www.jcp.org/en/jsr/detail?id=198.
3836    Eclim does it: http://eclim.sourceforge.net/  (Eric Van Dewoestine)
3837    Plugin that uses a terminal emulator: http://vimplugin.sf.net
3838    And another one: http://www.satokar.com/viplugin/index.php
3839-   STICKY CURSOR: Add a way of scrolling that leaves the cursor where it is.
3840    Especially when using the scrollbar.  Typing a cursor-movement command
3841    scrolls back to where the cursor is.
3842-   Scroll commands by screen line. g CTRL-E and g CTRL-Y ?  Requires the
3843    first line to be able to start halfway.
38448   Add a command to jump to a certain kind of tag.  Allow the user to specify
3845    values for the optional fields.  E.g., ":tag size type=m".
3846    Also allow specifying the file and command, so that the result of
3847    taglist() can be used.
3848-   X11: Make it possible to run Vim inside a window of another program.
3849    This can be done with XReparentWindow().  But how exactly?
3850
3851
3852Documentation:
38538   List of Vim runtime directories.  dotvim.txt from Charles Campbell, 2007
3854    Feb 20.
38558   The GUI help should explain the Find and Find/Replace dialogs.  Add a link
3856    to it from ":promptrepl" and ":promptfind".
38578   List of options should mention whether environment variables are expanded
3858    or not.
38598   Extend usr_27.txt a bit. (Adam Seyfarth)
38609   Make the Reference Manual more precise.  For each command mention:
3861    - change to cursor position and curswant
3862    - if it can be undone (u/CTRL-R) and redone (.)
3863    - how it works for folded lines
3864    - how it works with multibyte characters
38658   Spread the windows commands over the other files.  For example, ":stag"
3866    should be with ":tag".  Cross-link with tags to avoid too much double
3867    text.
38688   Add tags for all features, e.g. "gui_running".
38697   MS-Windows: When a wrong command is typed with an ALT key, give a hint to
3870    look at the help for 'winaltkeys'.
38717   Add a help.vim plugin that maps <Tab> to jump to the next tag in || and
3872    <C-Tab> (and <S-Tab>) to the previous tag.
3873    Patch by Balazs Kezes, 2007 Dec 30.  Remark from A. Politz.
3874-   Check text editor compendium for vi and Vim remarks.
3875
3876
3877Help:
3878-   First try using the ":help" argument literally, before using it as a
3879    pattern.  And then match it as part of a tag.
3880-   When a help item has multiple matches make it possible to use ":tn" to go
3881    to the other matches.
3882-   Support a way to view (and edit) .info files.
3883-   Implement a "sticky" help window, some help text lines that are always
3884    displayed in a window with fixed height. (Guckes)  Use "~/.vimhelp" file,
3885    user can edit it to insert favorite commands, new account can contain a
3886    default contents.
3887-   Make 'winminheight' a local option, so that the user can set a minimal
3888    height for the help window (and other windows).
3889-   ":help :s^I" should expand to ":help :substitute".
3890-   Make the help key (<F1>) context sensitive?
3891-   Learn mode: show short help while typing commands.
3892
3893
3894User Friendlier:
38958   Windows install with install.exe: Use .exe instead of .bat files for
3896    links, so that command line arguments are passed on unmodified? (Walter
3897    Briscoe)
38988   Windows install: Be able to associate Vim with a selection of file types?
38998   Windows uninstall: Have uninstal.c delete the vimfiles directories that
3900    dosinst.c creates.  List the contents of the directory (recursively) if
3901    the user asks for it.  Requires an implementation of "rm -rf".
39028   Remember the name of the vimrc file that was used (~/.vimrc, $VIM/_vimrc,
3903    $HOME/_vimrc, etc.) and add "edit vimrc" to the File menu.
3904-   Add a way to save local settings and mappings into a new plugin file.
3905    ":mkplugin <file>"?
3906-   Add mappings local to a window: ":map <window> ..."?
39079   Add buffer-local menu.  Should offer a choice between removing the menu or
3908    disabling it.  Be careful that tear-offs don't disappear (keep one empty
3909    item?).
3910    Alternative: use BufEnter and BufLeave autocommands.
39118   make a vimtutor script for Amiga and other systems.
39127   When Vim detects a file is being edited elsewhere and it's a gvim session
3913    of the same user it should offer a "Raise" button, so that the other gvim
3914    window can be displayed. (Eduard)
39158   Support saving and restoring session for X windows?  It should work to do
3916    ":mksession" and use "-S fname" for the restart command.  The
3917    gui_x11_wm_protocol_handler() already takes care of the rest.
3918    global_event_filter() for GTK.
3919
3920
3921Tab pages:
39229   GUI implementation for the tab pages line for other systems.
39237   GUI: Control over the appearance of the text in the labels (bold, color,
3924    font, etc.)
39258   Make GUI menu in tab pages line configurable.  Like the popup menu.
39268   balloons for the tab page labels that are shortened to show the full path.
39277   :tabdup	 duplicate the tab with all its windows.
39287   Option to put tab line at the left or right?  Need an option to specify
3929    its width.  It's like a separate window with ":tabs" output.
39308   Add local options for each tab page?  E.g., 'diffopt' could differ between
3931    tab pages.
39327   Add local highlighting for each tab page?
3933
3934
3935Spell checking:
3936-   Support more regions? Caolan McNamara argues it's needed for es_XX.
3937    https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=219777
3938-   Unicode defines another quote character: 0x2019.  Use it as an equivalent
3939    of a single quote, thus use it as a word character like a quote and match
3940    with words, replacing the curly quote with a single quote.
3941-   Could filter &eacute; things for HTML before doing spell checking.
3942    Similarly for TeX.
3943-   The Hungarian spell file uses four extra characters in the FOL/UPP/LOW
3944    items than other spell files with the ISO-8859-2 encoding, that causes
3945    problem when changing 'spelllang'.  There is no obvious way to fix this.
3946-   Considering Hunspell 1.1.4:
3947    What does MAXNGRAMSUGS do?
3948    Is COMPLEXPREFIXES necessary when we have flags for affixes?
3949-   There is no Finnish spell checking file.  For openoffice Voikko is now
3950    used, which is based on Malaga: http://home.arcor.de/bjoern-beutel/malaga/
3951    (Teemu Likonen)
39528   ":mkspell" still takes much too long in Hungarian dictionary from
3953    hunspell.  Only solution appears to be to postpone secondary suffixes.
39548   Handle postponed prefix with COMPOUNDPERMITFLAG or COMPOUNDFORBIDFLAG.
3955    WFP_COMPPERMIT and WFP_COMPFORBID
39568   implement use of <compoptions> in .spl file:
3957    implement CHECKCOMPOUNDREP: when a compound word seems to be OK apply REP
3958    items and check if the result is a valid word.
3959    implement CHECKCOMPOUNDDUP
3960    implement CHECKCOMPOUNDTRIPLE
3961    Add CHECKCOMPOUNDCASE: when compounding make leading capital lower case.
3962    How is it supposed to work?
3963-   Add a command the repeats ]s and z=, showing the misspelled word in its
3964    context.  Thus to spell-check a whole file.
3965-   suggestion for "KG" to "kg" when it's keepcase.
3966-   For flags on affixes: Use a "AFFCOMPSET" flag; means the compound flags of
3967    the word are not used.
3968-   Support breakpoint character ? 0xb7 and ignore it?  Makes it possible to
3969    use same wordlist for hyphenation.
3970-   Compound word is accepted if nr of words is <= COMPOUNDWORDMAX OR nr of
3971    syllables <= COMPOUNDSYLMAX.  Specify using AND in the affix file?
3972-   NEEDCOMPOUND also used for affix?  Or is this called ONLYINCOMPOUND now?
3973    Or is ONLYINCOMPOUND only for inside a compound, not at start or end?
3974-   Do we need a flag for the rule that when compounding is done the following
3975    word doesn't have a capital after a word character, even for Onecap words?
3976-   New hunspell home page: http://hunspell.sourceforge.net/
3977    - Version 1.1.0 is out now, look into that.
3978    - Lots of code depends on LANG, that isn't right.  Enable each mechanism
3979      in the affix file separately.
3980    - Example with compounding dash is bad, gets in the way of setting
3981      COMPOUNDMIN and COMPOUNDWORDMAX to a reasonable value.
3982    - PSEUDOROOT == NEEDAFFIX
3983    - COMPOUNDROOT -> COMPOUNDED?  For a word that already is a compound word
3984	    Or use COMPOUNDED2, COMPOUNDED3, etc.
3985-   CIRCUMFIX: when a word uses a prefix marked with the CIRCUMFIX flag, then
3986    the word must also have a suffix marked with the CIRCUMFIX flag.  It's a
3987    bit primitive, since only one flag is used, which doesn't allow matching
3988    specific prefixes with suffixes.
3989    Alternative:
3990	PSFX {flag} {pchop} {padd} {pcond} {schop} {sadd}[/flags] {scond}
3991    We might not need this at all, you can use the NEEDAFFIX flag and the
3992    affix which is required.
3993-   When a suffix has more than one syllable, it may count as a word for
3994    COMPOUNDWORDMAX.
3995-   Add flags to count extra syllables in a word.  SYLLABLEADD1 SYLLABLEADD2,
3996    etc.?  Or make it possible to specify the syllable count of a word
3997    directly, e.g., after another slash: /abc/3
3998-   MORPHO item in affix file: ignore TAB and morphological field after
3999    word/flags and affix.
4000-   Implement multiple flags for compound words and CMP item?
4001    Await comments from other spell checking authors.
4002-   Also see tklspell: http://tkltrans.sourceforge.net/
40038   Charles Campbell asks for method to add "contained" groups to existing
4004    syntax items (to add @Spell).
4005    Add ":syntax contains {pattern} add=@Spell" command?  A bit like ":syn
4006    cluster" but change the contains list directly for matching syntax items.
4007-   References: MySpell library (in OpenOffice.org).
4008	http://spellchecker.mozdev.org/source.html
4009	http://whiteboard.openoffice.org/source/browse/whiteboard/lingucomponent/source/spellcheck/myspell/
4010      author: Kevin Hendricks <[email protected]>
40118   It is currently not possible to mark "can not" as rare, because "can" and
4012    "not" are good words.  Find a way to let "rare" overrule "good"?
40138   Make "en-rare" spell file?  Ask Charles Campbell.
40148   The English dictionaries for different regions are not consistent in their
4015    use of words with a dash.
40167   Insert mode completion mechanism that uses the spell word lists.
40178   Add hl groups to 'spelllang'?
4018	:set spelllang=en_us,en-rare/SpellRare,en-math/SpellMath
4019    More complicated: Regions with different languages?  E.g., comments
4020    in English, strings in German (po file).
4021
4022
4023Diff mode:
40249   When making small changes, e.g. deleting a character, update the diff.
4025    Possibly without running diff.
40268   Also show difference with the file when editing started?  Should show what
4027    can be undone. (Tom Popovich)
4028
4029Folding:
4030    (commands still available: zI zJ zK zp zP zq zQ zV zy zY;
4031    secondary: zB zS zT zZ, z=)
40328   Vertical folds: looks like vertically split windows, but the cursor moves
4033    through the vertical separator, separator moves when scrolling.
40348   Add "z/" and "z?" for searching in not folded text only.  Or use a regexp
4035    item, so that it can be used in any pattern.
40368   When a closed fold is displayed open because of 'foldminlines', the
4037    behavior of commands is still like the fold is closed.  How to make the
4038    user aware of this?
40398   Add an option 'foldskip' with values like 'foldopen' that specifies which
4040    commands skip over a closed fold.
40418   "H" and "L" count buffer lines instead of window lines. (Servatius Brandt)
40428   Add a way to add fold-plugins.  Johannes Zellner has one for VB.
40437   When using manual folding, the undo command should also restore folds.
4044-   Allow completely hiding a closed fold.  E.g., by setting 'foldtext' to an
4045    empty string.  Require showing a character in 'foldcolumn' to avoid the
4046    missing line goes unnoticed.
4047    How to implement this?
4048-   When pressing the down arrow of a scrollbar, a closed fold doesn't scroll
4049    until after a long time.  How to make scrolling with closed folds
4050    smoother?
4051-   When creating a session, also store folds for buffers in the buffer list,
4052    using the wininfo in wi_folds.
4053-   When currently editing the first file in the argument list the session
4054    file can contain:
4055	args version.c main.c
4056	edit version.c
4057    Can editing version.c twice be avoided?
4058-   'foldmethod' "textobject": fold on sections and paragraph text objects.
4059-   "zuf": undo change in manual fold. "zUf" redo change in manual fold.  How
4060    to implement this?
4061-   "zJ" command: add the line or fold below the fold in the fold under the
4062    cursor.
4063-   'foldmethod' "syntax": "fold=3" argument: set fold level for a region or
4064    match.
4065-   Apply a new foldlevel to a range of lines. (Steve Litt)
4066
4067Multi-byte characters:
4068-   When editing a file with both utf-8 and latin1 text Vim always falls back
4069    to latin1.  Add a command to convert the latin1 characters to utf-8?
4070	:unmix utf-8,latin1 filename
4071    Would only work when 'encoding' is utf-8.
40729   When the tail byte of a double-byte character is illegal (e.g., a CR), the
4073    display is messed up (Yasuhiro Matsumoto).  Should check for illegal
4074    double-byte characters and display them differently (display each single
4075    byte).
40769   'fenc' in modeline problem: add option to reload the file when 'fenc' is
4077    set to a different value in a modeline?  Option can be default on.  Could
4078    it be done with an autocommand?
40798   Add an item in 'fileencodings' to check the first lines of a file for
4080    the encoding.  See Python PEP: http://www.python.org/peps/pep-0263.html.
4081    To avoid getting a wrong encoding only accept something Emacs-like:
4082    "-*- coding: enc-na_me.foo -*-" and "-*- coding= enc-na_me.foo -*-"
4083    Match with "-\*-\s*coding[:=]\s*\([::word::-_.]\+\)\s*-\*-" and use first
4084    item.
40858   Add an item in 'fileencodings' to check the first line of an XML file for
4086    the encoding.  <?xml version="1.0" encoding="UTF-8"?>  Or "charset=UTF-8"?
4087    For HTML look for "charset=utf-8".
40888   When a file was converted from 'fileencoding' to 'encoding', a tag search
4089    should also do this on the search pattern. (Andrzej M. Ostruszka)
40908   When filtering changes the encoding 'fileencoding' may not work.  E.g.,
4091    when using xxd and 'fileencoding' is "utf-16".  Add an option to set a
4092    different fileencoding for filter output?
40937   When converting a file fails, mention which byte could not be converted,
4094    so that the user can fix the problem.
40958   Add configure option to be able to disable using the iconv library. (Udo
4096    Schweigert)
40979   'aleph' should be set to 1488 for Unicode. (Zvi Har'El)
40988   Should add test for using various commands with multibyte characters.
40998   'infercase' doesn't work with multibyte characters.
41008   toupper() function doesn't handle byte count changes.
41017   Searching and composing characters:
4102    When searching, should order of composing characters be ignored?
4103    Add a special item to match with a composing character, so that composing
4104    characters can be manipulated.
41058   Should implement 'delcombine' for command line editing.
41068   Detect overlong UTF-8 sequences and handle them like illegal bytes.
41078   ":s/x/\u\1/" doesn't work, making uppercase isn't done for multibyte
4108    characters.
41098   UTF-8: "r" in Visual mode doesn't take composing characters.
41108   UTF-8: When there is a precomposed character in the font, use it instead
4111    of a character and a composing character.  See xterm for an example.
41127   When a character can't be displayed, display its digraph instead.
4113    'display' option to specify this.
41147   Use ideas for nl_langinfo() from Markus Kuhn in enc_default():
4115    (www.cl.cam.ac.uk/~mgk25/ucs/langinfo.c)
4116-   GTK and Win32: Allow selecting fonts for 'guifontset' with the
4117    fontselector somehow.
4118-   GTK and Win32: make it possible to set the font for the menu to make it
4119    possible to have 'encoding' different from the current locale.
4120-   dbcs_class() only works for Japanese and Korean.  Implement this for
4121    other encodings.  The "euc-jp" and "euc-kr" choices might be wrong.
4122-   Find some way to automatically select the right GUI font or fontset,
4123    depending on the default value of 'encoding'.
4124    Irrelevant in the GTK+ 2 GUI so long as UTF-8 is used.
4125    For Windows, the charset_pairs[] table could be used.  But how do we know
4126    if a font exists?
4127-   Do keyboard conversion from 'termencoding' to 'encoding' with
4128    convert_input() for Mac GUI.
4129-   Add mnemonics from RFC1345 longer than two characters.
4130    Support CTRL-K _{mnemonic}_
4131-   Make 'breakat' accept multibyte characters.  Problem: can't use a lookup
4132    table anymore (breakat_flags[]).
4133    Simplistic solution: when 'formatoptions' contains "m" also break a line
4134    at a multibyte character >= 0x100.
4135-   Add the possibility to enter mappings which are used whenever normal text
4136    could be entered.  E.g., for "f" command.  But not in Normal mode.  Sort
4137    of opposite of 'langmap'.  Use ":amap" command?
4138-   When breaking a line, take properties of multibyte characters into
4139    account.  The "linebreak" program from Bruno Haible can do it:
4140    ftp://ftp.ilog.fr/pub/Users/haible/gnu/linebreak-0.1.tar.gz
4141    But it's very complicated...
4142
4143
4144Printing:
41457   Implement "undercurl" for printing.
4146-   Add "page width" to wrap long lines.
4147-   Win32: use a font dialog for setting 'printfont'.  Can reuse the code for
4148    the 'guifont' dialog, put the common code in a separate function.
4149-   Add the file timestamp to the page header (with an option). (George
4150    Reilly)
4151-   Win32: when 'printfont' is empty use 'guifont'.
4152-   Unix: Use some dialog box to do the obvious settings (paper size, printer
4153    name, portrait/landscape, etc).
4154-   PostScript: Only works for text that can be converted to an 8-bit
4155    character set.  How to support Unicode fully?
4156-   Allow specifying the paper size, instead of using a standard size.  Same
4157    units as for the margins.
4158-   Support right-to-left text?
41598   Make the foreground color darkening function preserve the hue of the
4160    color.
4161
4162
4163Syntax highlighting:
4164    Long term goal: faster, better, etc.  Options:
4165    - use treesitter, NeoVim uses it
4166    - use TextMate, vscode uses it.  #9087
41678   Make ":syn off" use 'runtimepath' instead of $VIMRUNTIME. (Gary Johnson)
4168    Should do the same for ":syn on" and ":syn manual".
41698   Support "containedin" argument for ":syn include", so that the defined
4170    cluster can be added to existing syntax items.
41718   C syntax: Don't highlight {} as errors inside () when used like this:
4172    "({ something })", often used in GCC code.
41737   Add a "startgroup" to a region.  Used like "nextgroup" inside the region,
4174    preferred item at the start of the region. (Charles Campbell)
41758   When editing a new file without a name and giving it a name (by writing
4176    it) and 'filetype' is not set, detect the filetype.  Avoid doing it for
4177    ":wq file".
41787   For "nextgroup" we have skipwhite, skipnl and skipempty.  It would be
4179    really nice to be able to skip with a pattern.  Or skip with a syntax
4180    group. (Nikolai Weibull, 2007 Feb 27)
41818   Make conversion to HTML faster (Write it in C or pre-compile the script).
41829   There is still a redraw bug somewhere.  Probably because a cached state is
4183    used in a wrong way.  I can't reproduce it...
41847   Be able to change only the background highlighting.  Useful for Diff* and
4185    Search highlighting.
41867   When 'number' is set highlight the number of the current line.
4187    Must be enabled with an option, because it slows down display updating.
41888   Allow the user to add items to the Syntax menu sorted, without having to
4189    change this for each release.
41908   Add a "matchcontains" for regions: items contained in the start or end
4191    pattern, but not in the body.
41928   Add a "keepend-contained" argument: Don't change the end of an item this
4193    one is contained in.  Like "keepend" but specified on the contained item,
4194    instead of the containing item.
41958   cpp.vim: In C++ it's allowed to use {} inside ().
41968   Some syntax files set 'iskeyword', they should use "syn iskeyword".
4197    Also need a separate 'iskeyword' for the command line, e.g., in a help
4198    window ":e /asdf/asdf/" CTRL-W works different.
41998   Add specific syntax item to match with parens/braces that don't have a
4200    "%" match.  :syntax nomatch cMatchError (,{,[,),},] [contained]
42018   Highlight the text between two matching parens (e.g., with a grey
4202    background) when on one of the parens or in between them.
4203    Option for the matchparen plugin?
42048   When using a cterm, and no ctermfg or ctermbg are defined, use start/stop
4205    sequences.	Add remark in docs that :if 'term' == "term-name" should be
4206    used.
42078   Add @spell cluster to String and Comment groups for many languages.  Will
4208    allow spell checking. (Fleiner)
42098   When listing syntax items, try to sort the keywords alphabetically.  And
4210    re-insert the [] if possible.
42118   Make it possible to use color of text for Visual highlight group (like for
4212    the Cursor).
42138   It would be useful to make the highlight group name an expression.  Then
4214    when there is a match, the expression would be evaluated to find out what
4215    highlight group to use.  Could be used to check if the shell used in a
4216    password file appears in /etc/shells. (Nikolai Weibull)
4217	syn match =s:checkShell(v:match) contained 'pattern'
42188   Make it possible to only highlight a sub-expression of a match.  Like
4219    using "\1" in a ":s" command.
42208   Support for deleting syntax items:
4221    :syn keyword cTodo remove this
4222    :syn match cTodo remove "pattern"
4223    :syn region cString remove start="this" end="that"
42248   Add possibility to sync on something else, when the syncing in one way
4225    doesn't find match.  For HTML: When no {script} is found, try looking for
4226    a '<'.  (Fleiner)
42277   Replace the synchronizing method with a state machine specification?
4228    Should be able to start at any line in the file, search forwards or
4229    backwards, and use the result of matching a pattern.
42307   Use parsing like awk, so that e.g., a ( without a matching ) can be
4231    detected.
42328   Make it possible to use "inverted" highlighting, invert the original
4233    character.  For Visual mode.  (xterm-selection already does this).
42348   Highlight non-printable characters with "SpecialChar", linked to
4235    "Special".  Display them with the digraph characters, if possible.
42368   Highlight the clipboard-selection with a highlight group.
42378   Be able to reset highlighting to its original (default) values.
42387   Be able to write current highlighting to a file as commands, similar to
4239    ":mkvimrc".
42408   Improve c.vim:
4241    - Add check for unterminated strings, with a variable to switch it on:
4242      "c_strict_ansi".
4243    - Detect unbalanced "#endif".  Requires looking back a long way...
42448   Add an option to restrict the updating of syntax highlighting to the
4245    current line while in Insert mode.
42468   When guessing value of 'background', the syntax file has already been
4247    loaded (from the .gvimrc).	After changing 'background', load it again?
42488   Add ":syn resync" command, to re-parse the whole file until the current
4249    display position.
42508   Should support "me" offset for a region start pattern.  To be used to
4251    allow searching for the end pattern inside the match of the end pattern.
4252    Example: syn region pikeXX start="([^{]" end=")" should work on "()".
42538   When using a regexp for "contains=", should delay matching with it until
4254    redrawing happens.  Set a flag when a group is added, check this flag when
4255    highlighting starts.
42567   It's possible for an item to be transparent, so that the colors of an item
4257    lower on the stack is used.  Also do this with highlighting, so that the
4258    user can set transparent highlighting?  E.g. a number in a C comment would
4259    get the color of a comment, a number in an assignment Normal. (Nikolai
4260    Weibull)
42617   Add "semitrans": Add highlighting.  E.g., make the text bold, but keep the
4262    colors.  And add colors, so that Green+Red becomes Yellow.
4263    E.g. for this html:
4264	<B> bold text <I> italic+bold text </B> italic text </I>
42657   CTRL-] checks the highlight group for finding out what the tag is.
42667   Add an explanation how a list of words can be used to highlight misspelled
4267    words.
42688   Add more command line completion for :syntax.
42698   Add more command line completion for :highlight.
42707   Should find a better way to parse the :syntax and :highlight commands.
4271    Use tables or lists that can be shared by parsing for execution and
4272    completion?
42738   Add ColorSchemePost autocommand event, so that scripts can set up their
4274    highlighting. (Salman Halim)
42757   Add a few sets of colors (e.g. Borland Turbo C one).  With a menu to
4276    select one of the sets.
42778   Add offsets to sub-matches: "\(a*\) *"he=e1-1
4278    'e' is end of match 'e1' is end of sub-match 1, 's2' is start of submatch
4279    2, etc.
42808   In Insert mode, when there are typeahead characters, postpone the
4281    highlighting (for "." command).
42828   Syncing on comments isn't 100% correct when / / lines mix with / * and * /.
4283    For example: What about a line that starts with / / and contains * /?
42848   Ignore / * and  * / inside strings, when syncing.
42857   Build a few more syntax files from the file "/usr/share/misc/vgrindefs":
4286    ISP, LDL, Icon, ratfor.  And check "nedit/source/highlight.c".
42876   Add possibility to have background color continue until the right edge of
4288    the window.  Useful for comment blocks and function headings. (Rogall)
4289-   Make it possible to add "contains" items for all items in a group.	Useful
4290    when extending an already existing syntax file.
4291-   Add line-continuation pattern for non-syncing items too?
4292-   Add possibility to highlight the whole line, including the right margin
4293    (for comment blocks).
4294-   Add 'hlmatch' option: List of flags:
4295    'c': highlight match for character under the cursor.
4296    'b': highlight the previous (, and its match.
4297    'a': highlight all text from the previous ( until its match.
4298	 Also for {}, <>, etc.?
4299    'e': highlight all braces without a match (slow?)
4300    OR: add an argument "cursor" to the syntax command, which means that the
4301    region/match/keyword is only highlighted when the cursor is on it.
4302    (Campbell)
4303    Or do it like Elvis: define text objects and how to highlight them around
4304    the cursor. (Iain Truskett)
43057   Make it possible to use all words in the tags files as Keyword.
4306    Can also be done with a script (but it's slow).
43077   Make it possible to call a ":" command when a match is found.  Should
4308    allow for adding keywords from the text (e.g. variables that are set).
4309    And allows for sections with different highlighting.
43107   Add highlight group for commandline: "Commandline".  Make sure it
4311    highlights the command line while typing a command, and any output from
4312    messages.  And external commands?
43138   Make a version that works like less, but with highlighting: read stdin for
4314    text, exit at end of file, don't allow editing, etc.  moreim?  lessim?
43157   SpecialKey highlighting overrules syntax highlighting.  Can't give an
4316    unprintable char another color.  Would be useful for ^M at end of line.
4317
4318
4319Vim script language:
43208   Make the filename and line number available to script functions, so that
4321    they can give useful debugging info.  The whole call stack would be ideal.
4322    At least use this for error messages.
43237   Execute a function with standard option values.  No need to save and
4324    restore option values.  Especially useful for new options.  Problem: how
4325    to avoid a performance penalty (esp. for string options)?
4326-   range for ":exec", pass it on to the executed command.  (Webb)
43278   ":{range}source": source the lines from the current file.
4328	You can already yank lines and use :@" to execute them.
4329	Most of do_source() would not be used, need a new function.
4330	It's easy when not doing breakpoints or profiling.
4331    Requires copying the lines into a list and then creating a function to
4332    execute lines from the list.  Similar to getnextac().
43337   ":include" command: just like ":source" but doesn't start a new scriptID?
4334    Will be tricky for the list of script names.
43358   Have a look at VSEL.  Would it be useful to include? (Bigham)
43368   Have a prefix for a function to make it unique.  When using packages it
4337    can be the plugin name.
4338    Perhaps also have a way to remove everything that the package added?
4339    including autocommands.
43407   Pre-parse or compile Vim scripts into a bytecode.
4341    1. Put the bytecode with the original script, with an ":if
4342       has('bytecode')" around it, so that it's only used with a Vim that
4343       supports it.  Update the code with a command, can be used in an
4344       autocommand.
4345    2. Use a ".vic" file (like Python use .pyc).  Create it when writing a
4346       .vim file.  Problem: distribution.
4347    3. Use a cache directory for each user.  How to recognize which cached
4348       file belongs to a sourced script?
43497   Add argument to winwidth() to subtract the space taken by 'foldcolumn',
4350    signs and/or 'number'.
43516   Add ++ and -- operators?  They only work on variables (lvals), how to
4352    implement this?
43538   Add functions:
4354	has(":command")		Check if ":command" works.  compare function
4355				with "ex_ni".  E.g. for ":simalt".
4356	escape()		Add argument to specify what to escape with.
4357	modestack()		Instead of just the current mode return the
4358				stack of Insert / CTRL-O / :normal things.
4359	realname()		Get user name (first, last, full)
4360				user_fullname() patch by Nikolai Weibull, Nov
4361				3 2002
4362				Only add this when also implemented for
4363				non-Unix systems, otherwise a shell cmd could
4364				be used.
4365				get_user_name() gets login name.
4366	menuprop({name}, {idx}, {what})
4367				Get menu property of menu {name} item {idx}.
4368				menuprop("", 1, "name") returns "File".
4369				menuprop("File", 1, "n") returns "nmenu
4370				File.Open..." argument.
4371				Patch by Ilya Sher, 2004 Apr 22
4372				Return a list of menus and/or a dictionary
4373				with properties instead.
4374	mapname({idx}, mode)	return the name of the idx'th mapping.
4375				Patch by Ilya Sher, 2004 Mar 4.
4376				Return a list instead.
4377	char2hex()		convert char string to hex string.
4378	crypt()			encrypt string
4379	decrypt()		decrypt string
4380	base64enc()		base 64 encoding
4381	base64dec()		base 64 decoding
4382	attributes()		return file protection flags "drwxrwxrwx"
4383	filecopy(from, to)	Copy a file
4384	shorten(fname)		shorten a file name, like home_replace()
4385	perl(cmd)		call Perl and return string
4386	inputrl()		like input() but right-to-left
4387	typed()			return the characters typed and consumed (to
4388				find out what happened)
4389	virtualmode()		add argument to obtain whether "$" was used in
4390				Visual block mode.
4391	getacp()		Win32: get codepage (Glenn Maynard)
4392	libcall()		Allow more than one argument.
4393	libcallext()		Like libcall(), but using a callback function
4394				to allow the library to execute a command or
4395				evaluate an expression.
43967   Make bufname("'0") return the buffer name from mark '0.  How to get the
4397    column and line number?  col("'0") currently returns zero.
43988   argc() returns 0 when using "vim -t tag".  How to detect that no file was
4399    specified in any way?  To be able to jump to the last edited file.
44008   Pass the command line arguments to Vim scripts in some way.  As v:args
4401    List?  Or extra parameter to argv()?
44028   Add command arguments with three dashes, passed on to Vim scripts.
44036   User functions: Functions local to buffer "b:func()"?
44048   For Strings add ":let var[{expr}] = {expr}".  When past the end of "var"
4405    just ignore.
44068   The "= register should be writable, if followed by the name of a variable,
4407    option or environment variable.
44088   ":let &option" should list the value of the option.
44098   ":let Func().foo = value" should work, also when "foo" doesn't exist.
4410    Also: ":let Func()[foo] = value" should work.  Same for a List.
44117   Add synIDlist(), making the whole list of syntax items on the syntax stack
4412    available as a List.
44138   Add autocommand-event for when a variable is changed:
4414	:au VarChanged {varname} {commands}
44158   Add "has("gui_capable")", to check if the GUI can be started.
44168   Add possibility to use variables like registers: characterwise (default),
4417    linewise (when ending in '\n'), blockwise (when ending in '\001').	reg0,
4418    rega, reg%, etc.  Add functions linewise({expr}), blockwise({expr}) and
4419    charwise({expr}).
44207   Make it possible to do any command on a string variable (make a buffer
4421    with one line, containing the string).  Maybe add an (invisible) scratch
4422    buffer for this?
4423	result = scratch(string, command)
4424	result = apply(string, command)
4425	result = execute(string, command)
4426    "command" would use <> notation.
4427    Does scratch buffer have a number?  Or re-use same number?
44287   Add function to generate unique number (date in milliseconds).
4429
4430
4431Robustness:
44326   Add file locking.  Lock a file when starting to edit it with flock() or
4433    fcntl().  This patch has advisory file locking while reading/writing
4434    the file for Vim 5.4: ~/vim/patches/kahn_file_locking .
4435    The patch is incomplete (needs support for more systems, autoconf).
4436    Andy doesn't have time to work on it.
4437    Disadvantage: Need to find ways to gracefully handle failure to obtain a
4438    lock.  When to release a lock: When buffer is unloaded?
4439
4440
4441Performance:
44427   For string variables up to 3 bytes don't allocate memory, use v_list
4443    itself as a character array.  Use VAR_SSTRING (short string).
44447   Add 'lazysize' option: Above this size Vim doesn't load everything before
4445    starting to edit a file.  Things like 'fileencodings' only work up to this
4446    size, modelines only work at the top.  Useful for large log files where
4447    you only want to look at the first few pages.  Use zero to disable it.
44488   move_lines() copies every line into allocated memory, making reloading a
4449    buffer a lot slower than re-editing the file.  Can the memline be locked
4450    so that we don't need to make a copy?  Or avoid invoking ml_updatechunk(),
4451    that is taking a lot of time.  (Ralf Wildenhues, 2008 Jul 7)
4452    With a patch, but does it work?
44538   Turn b_syn_ic and b_syn_containedin into b_syn_flags.
44549   Loading menu.vim still takes quite a bit of time.  How to make it faster?
44558   in_id_list() takes much time for syntax highlighting.  Cache the result?
44567   setpcmark() shifts the jumplist, this takes quite a bit of time when
4457    jumping around.  Instead use an index for the start?
44588   When displaying a space with only foreground highlighting, it's the same
4459    as a space without attributes.  Avoid displaying spaces for the "~" lines
4460    when starting up in a color terminal.
44618   Avoid alloc() for scratch buffer use, esp. in syntax.c.  It's very slow on
4462    Win16.
44638   Profiling shows that in_id_list() is used very often for C code.  Can this
4464    function be improved?
44658   For an existing file, the page size of the swap file is always the
4466    default, instead of using the block size of the device, because the swap
4467    file is created only after setting the block size in mf_open().  How can
4468    this be improved?
44698   Set default for 'ttyscroll' to half a screen height?  Should speed up
4470    MS-DOS version. (Negri)
44717   C syntax highlighting gets a lot slower after ":set foldmethod=syntax".
4472    (Charles Campbell)  Inserting a "{" is very slow. (dman)
44737   HTML syntax highlighting is slow for long lines.  Try displaying
4474    http://www.theregister.co.uk/content/4/22908.html. (Andre Pang)
44757   Check how performance of loading the wordlist can be improved (adding a
4476    lot of abbreviations).
44777   Compile Ex commands to byte codes.  Store byte codes in a vim script file
4478    at the end, after "compiled:.  Make it look like a single comment line
4479    for old Vim versions.  Insert first line "Vim script compiled <timestamp>.
4480    Only used compiled code when timestamp matches the file stat.
4481    Add command to compile a vim script and add it to the file in-place.
4482    Split Ex command executing into a parsing and executing phase.
4483    Use compiled code for functions, while loops, etc.
44848   When defining autocommands (e.g., from $VIMRUNTIME/filetype.vim), need to
4485    compare each pattern with all existing patterns.  Use a hash code to avoid
4486    using strcmp() too often?
44877   Include turbo_loader patches, speeding up reading a file?
4488    Speed up reading a file by reading it into a fixed-size buffer, creating
4489    the list of indexes in another buffer, and then copying the result into a
4490    memfile block with two copies.  Then read the next block into another
4491    fixed-size buffer, create the second list of indexes and copy text from
4492    the two blocks to the memfile block.
44937   do_cmdline(): Avoid that the command line is copied to allocated memory
4494    and freed again later all the time.  For while loops, and for when called
4495    with an argument that can be messed with.
4496    Generic solution: Make a struct that contains a pointer and a flag that
4497    indicates if the pointer should be freed when replaced.
44987   Check that the file size is not more than "sizeof(long)".
4499-   Further improve finding mappings in maphash[] in vgetorpeek()
45008   Syntax highlighting is slow when deleting lines.  Try in
4501    $VIMRUNTIME/filetype.vim.
4502-   "out of memory" after deleting (1,$d) and changing (:%s/^/> /) a lot of
4503    lines (27000) a few times.  Memory fragmentation?
4504-   Have a look at how pdksh does memory allocation (alloc.c). (Dalecki)
4505-   Do profiling on:
4506    - :g/pat/normal cmd
4507    - deleting 10Mbyte worth of lines (netscape binary)
4508    - "[i" and "[d" (Yegappan Lakshmanan)
4509    - ":g/^/m0" on a 450Kbyte file.  And the "u".
4510    - highlighting "~/vim/test/longline.tex", "~/vim/test/scwoop.tcl" and
4511      "~/vim/test/lockup.pl".
4512    - loading a syntax file to highlight all words not from a dictionary.
4513    - editing a Vim script with syntax highlighting on (loading vim.vim).
45147   Screen updating can be further improved by only redrawing lines that were
4515    changed (and lines after them, when syntax highlighting was used, and it
4516    changed).
4517    - On each change, remember start and end of the change.
4518    - When inserting/deleting lines, remember begin, end, and line count.
4519-   Use macros/duarte/capicua for profiling.  Nvi 1.71 is the fastest!
4520-   When using a file with one long line (1Mbyte), then do "$hhhh", is still
4521    very slow.  Avoid calling getvcol() for each "h"?
4522-   Executing a register, e.g. "10000@@" is slow, because ins_typebuf has to
4523    move the previous commands forward each time.  Pass count from
4524    normal_cmd() down to do_execreg().
4525-   Avoid calls to plines() for cursor line, use w_cline_height.
4526-   After ":set nowrap" remove superfluous redraw with wrong hor. offset if
4527    cursor is right of the screen.
45288   Make CTRL-C on Unix generate a signal, avoid using select() to check for a
4529    CTRL-C (it's slow).
4530
4531
4532Code size:
45338   GUI: When NO_CONSOLE is defined, more code can be excluded.
4534-   Put getline() and cookie in a struct, so only one argument has to be
4535    passed to do_cmdline() and other functions.
45368   Make a GUI-only version for Unix?
45378   In buf_write _() isn't needed when setting errmsg, do it once when using
4538    it.
45397   When compiling with a GUI-only version, the code for cterm colors can be
4540    left out.
45418   When compiled with a GUI-only version, the termcap entries for terminals
4542    can be removed.
45438   Can the check for libelf in configure.ac be removed?
4544
4545
4546Messages:
45478   When using ":q" in a changed file, the error says to "add !".  Add the
4548    command so that beginners understand it: "use :q!".
45498   For 'verbose' level 12 prints commands from source'ed files.  How to skip
4550    lines that aren't executed?  Perhaps move the echoing to do_cmdline()?
45518   Use 'report' for ":bdel"?  (Krishna)  To avoid these messages when using a
4552    script.
4553-   Delete message after new command has been entered and have waited for key.
4554    Perhaps after ten seconds?
4555-   Make message history available in "msg" variables: msg1, msg2, .. msg9.
45569   Check handling of overwriting of messages and delays:
4557    Very wrong: errors while redrawing cause endless loop.
4558    When switching to another file and screen scrolls because of the long
4559    message and return must be typed, don't scroll the screen back before
4560    redrawing.
45618   When address range is wrong you only get "Invalid range".  Be a bit more
4562    specific: Negative, beyond last line, reverse range?  Include the text.
45638   Make it possible to ignore errors for a moment ('errorignore'?).  Another
4564    option to switch off giving error messages ('errorquiet'?).  Also an option
4565    not to give any messages ('quiet')?  Or ":quiet on", ":quiet off".
4566    Careful: For a severe error (out of memory), and when the user starts
4567    typing, error messages must be switched back on.
4568    Also a flag to ignore error messages for shell commands (for mappings).
4569-   Option to set time for emsg() sleep.  Interrupt sleep when key is typed?
4570    Sleep before second message?
45718   In Ex silent mode or when reading commands from a file, what exactly is
4572    not printed and what is?  Check ":print", ":set all", ":args", ":vers",
4573    etc.  At least there should be no prompt. (Smulders)  And don't clear the
4574    screen when reading commands from stdin. (Kendall)
4575    --> Make a difference between informative messages, prompts, etc. and
4576	error messages, printing text, etc.
45778   Window should be redrawn when resizing at the hit-enter prompt.
4578    Also at the ":tselect" prompt.  Find a generic solution for redrawing when
4579    a prompt is present (with a callback function?).
4580
4581
4582Screen updating:
4583-   screen_line():
4584    - insert/delete character stuff.
4585    - improve delete rest of line (spaces at end of line).
4586-   When moving or resizing window, try to avoid a complete redraw (esp. when
4587    dragging the status line with the mouse).
4588-   When 'lazyredraw' set, don't echo :ex commands?  Need a flag to redraw when
4589    waiting for a character.
45908   Add a ":refresh [winnr]" command, to force updating a window.  Useful from
4591    an event handler where ":normal" can't be used.  Also useful when
4592    'lazyredraw' is set in a mapping.
4593
4594Scrolling:
45958   Add "zy" command: scroll horizontally to put the cursor in the middle.
45966   Add option to set the overlap for CTRL-F and CTRL-B. (Garhi)
4597-   extend 'scrollbind' option: 'scrollopt' words "search", "relative", etc..
4598    Also 'e'xecute some commands (search, vertical movements) in all bound
4599    windows.
46007   Add 'scrollbind' feature to make the offset of one window with the next
4601    one equal to the window height.  When editing one file in both windows it
4602    looks like each window displays a page of the buffer.
4603-   Allow scrolling by dragging with the mouse (grab a character and move it
4604    up/down).  Like the "hand" in Acrobat reader.  Use Alt-LeftMouse for this?
4605    (Goldfarb)
4606-   Add command to execute some commands (search, vertical movements) in all
4607    bound windows.
4608-   Add 'search' option to 'scrollopt' to allow 'scrollbind' windows to
4609    be bound by regexp searches
4610-   Add "z>" and "z<": scroll sideways one screenful. (Campbell)
4611-   Add option to set the number of lines when not to scroll, instead of the
4612    fixed number used now (for terminals that scroll slow with a large number
4613    of lines but not with a single line).
4614
4615
4616Autoconf:
46178   Should use acconfig.h to define prototypes that are used by autoheader.
46188   Some compilers don't give an error for "-OPT:Olimit" but a warning. (Webb)
4619    Add a check for the warning, so that "Olimit" can be added automatically?
4620-   Autoconf: Use @datadir@ for the system independent files.  Make sure the
4621    system dependent and system independent files are separated. (Leitner).
4622-   Add autoconf check for waitpid()/wait4().
4623-   Remove fcntl() from autoconf, all systems have it?
4624-   Set default for 'dictionary', add search for dictionary to autoconf.
4625
4626
4627Perl interface:
46288   Rename typemap file to something else?
46297   Make buffers accessed as Perl arrays. (Clark)
46307   Make it possible to compile with non-ANSI C?
46316   Tcl/Tk has the "load" command: load a shared library (.so or .dll).
4632
4633
4634Shared libraries:
46358   libcall() can keep the library around instead of always calling dlclose().
4636    (Jason Felice, 2018 Mar 20)
46376   Add support for loading shared libraries, and calling functions in it.
4638	:libload internal-name libname
4639	:libunload internal-name
4640	:liblist
4641	:libcall internal-name function(arg1, arg2, ...)
4642	:libcall function(arg1, arg2, ...)
4643    libcall() can have only one integer or String argument at the moment.
46446   Have a look on how Perl handles loading dynamic libraries.
4645
4646
4647Tags:
46489   With ":set tags=./tags,../tags" and a tag appears in both tags files it is
4649    added twice.  Requires figuring out the actual file name for each found
4650    match.  Remove tag_fname from the match and combine it with the fname in
4651    the match (without expanding or other things that take time).  When
4652    'tagrelative' is off tag_fname isn't needed at all.
46538   For 'tags' wildcard in the file name is not supported, only in the path.
4654    This is due to it using |file-searching|. Suboptimal solution would be to
4655    make the filename or the whole option use |wildcards| globing, better
4656    would be to merge the 2 kinds of globing. originally (Erik Falor, 2008
4657    April 18), updated (Ian Kelling, 2008 July 4)
46587   Can CTRL-] (jump to tag) include a following "." and "->" to restrict the
4659    number of possible matches? Check tags file for an item that has members.
4660    (Flemming Madsen)
46618   Scope arguments for ":tag", e.g.: ":tag class:cPage open", like Elvis.
46628   When output of ":tselect" is long, getting the more-prompt, should be able
4663    to type the tag number directly.
46647   Add the possibility to use the "-t {tag}" argument multiple times.  Open a
4665    window for each tag.
46667   Make output of ":tselect" a bit nicer.  Use highlighting?
46677   Highlight the "tag 1 of >2" message.  New highlight group, or same as "hit
4668    bottom" search message.
46697   When using ":tag" at the top of the tag stack, should add another entry,
4670    so CTRL-T can bring you back to where you are now AND to where you were
4671    before the previous ":tag" command. (Webb)
4672-   When doing "[^I" or "[^D" add position to tag stack.
4673-   Add command to put current position to tag stack: ":tpush".
4674-   Add functions to save and restore the tag stack?  Or a command to switch
4675    to another tag stack?  So that you can do something else and come back to
4676    what you were working on.
46777   When using CTRL-] on someClass::someMethod, separate class from method and
4678    use ":ta class:someClass someMethod".
4679    Include C++ tags changes (Bertin).	Change "class::func" tag into "func"
4680    with "class=class"?  Docs in oldmail/bertin/in.xxx.
46817   Add ":tagargs", to set values for fields:
4682	:tagargs class:someclass file:version.c
4683	:tagargs clear
4684    These are then the default values (changes the order of priority in tag
4685    matching).
46867   Support for "gtags" and "global"?  With ":rtag" command?
4687    There is an example for how to do this in Nvi.
4688    Or do it like Elvis: 'tagprg' and 'tagprgonce' options. (Yamaguchi)
4689    The Elvis method is far more flexible, do it that way.
46907   Support "col:99" extra field, to position the cursor in that column.  With
4691    a flag in 'cpoptions' to switch it off again.
46927   Better support for jumping to where a function or variable is used.  Use
4693    the id-utils, with a connection to "gid" (Emacs can do it too).  Add
4694    ":idselect", which uses an "ID" database (made by "mkid") like "tselect".
4695
4696
4697Win32 GUI:
46988   Make debug mode work while starting up (vim -D).  Open console window for
4699    the message and input?
47007   GvimExt: when there are several existing Vims, move the list to a submenu.
4701    (Mike McCollister)
47028   When using "Edit with Vim" for one file it changes directory, when several
4703    files are selected and using "Edit with single Vim" the directory isn't
4704    changed.  At least change directory when the path is the same for all
4705    files.  Perhaps just use the path of the first file or use the longest
4706    common part of the path.
47078   Add font argument to set the lfCharSet. (Bobcik)
47088   Somehow automatically detect the system language and set $LANG, so that
4709    gettext and menus work.
47108   Could keep console open to run multiple commands, to avoid the need to hit
4711    return in every console.
4712    Also: Look at how Emacs does run external commands:
4713	http://www.cs.washington.edu/homes/voelker/ntemacs.html.
47148   Need a separate PopUp menu for modeless selection.  Need two new commands:
4715    Copy selection to clipboard, Paste selection (as typed text).
47168   Support copy/paste for other file formats.  At least HTML, perhaps RTF.
4717    Add "copy special" and "paste special" commands?
47187   Use different default colors, to match the current Windows color scheme.
4719    Sys_WindowText, Sys_Window, etc. (Lionel Schaffhauser)
47207   Use <C-Tab> to cycle through open windows (e.g., the find dialog).
47217   <Esc> should close a dialog.
47227   Keep the console for external commands open.  Don't wait for a key to be
4723    hit.  Re-open it when the user has closed it anyway.  Or use a prepended
4724    command: ":nowait {cmd}", or ":quiet", which executes {cmd} without any
4725    prompts.
47267   Should be able to set an option so that when you double click a file that
4727    is associated with Vim, you can either get a new instance of Vim, or have
4728    the file added into an already running Vim.
47297   The "-P" argument only works for the current codepage.  Use wide
4730    functions to find the window title.
4731
4732
4733GUI:
47347   Implement ":popup" for other systems than Windows.
47358   Implement ":tearoff" for other systems than Win32 GUI.
47366   Implement ":untearoff": hide a torn-off menu.
47378   When using the scrollbar to scroll, don't move the cursor position.  When
4738    moving the cursor: scroll to the cursor position.
47399   Make <S-Insert> paste from the clipboard by default. (Kunze)
47407   Menu local to a buffer, like mappings.  Or local to a filetype?
47418   In Buffers menu, add a choice whether selecting a buffer opens it in the
4742    current window, splits the window or uses ":hide".
47438   Dragging the mouse pointer outside of a Vim Window should make the text
4744    scroll.  Return a value from gui_send_mouse_event() to the machine
4745    specific code to indicate the time in which the event should be repeated.
47468   Make it possible to ignore a mouse click when it's used to give Vim (gvim)
4747    window focus.  Also when a mouse click is used to bring a window to front.
47488   Make the split into system independent code and system specific code more
4749    explicit.  There are too many #ifdefs in gui.c.
4750    If possible, separate the Vim code completely from the GUI code, to allow
4751    running them in separate processes.
47527   X11: Support cursorColor resource and "-cr" argument.
47538   X11 (and others): CTRL-; is not different from ';'.  Set the modifier mask
4754    to include CTRL for keys where CTRL produces the same ASCII code.
47557   Add some code to handle proportional fonts on more systems?  Need to draw
4756    each character separately (like xterm).  Also for when a double-width font
4757    is not exactly double-width. (Maeda)
47588   Should take font from xterm where gvim was started (if no other default).
47598   Selecting font names in X11 is difficult, make a script or something to
4760    select one.
47618   Visual highlighting should keep the same font (bold, italic, etc.).
47628   Add flag to 'guioptions' to not put anything in the clipboard at all?
47638   Should support a way to use keys that we don't recognize yet.  Add a
4764    command that adds entries to special_keys somehow.	How do we make this
4765    portable (X11, Win32, ..)?
47667   Add a flag to 'guioptions' that tells not to remove inactive menu items.
4767    For systems where greying-out or removing menu items is very slow.  The
4768    menu items would remain visibly normally, but not do anything.
47697   Add ":minimize" and ":maximize", which iconize the window and back.
4770    Useful when using gvim to run a script (e.g. 2html.vim).
47717   X11: Is it possible to free allocated colors, so that other programs can
4772    use them again?  Otherwise, allow disabling allocating the default colors.
4773    Or allocate an own colormap (check UAE).  With an option to use it.  For
4774    the commandline, "-install" is mostly used for X11 programs.
47757   Should support multi-column menus.
4776-   Should add option for where to put the "Help" menu: like Motif at the far
4777    right, or with the other menus (but still at the right).
4778-   Add menu item to "Keep Insert mode".
47798   ":mkgvimrc" command, that includes menus.
47806   Big change: Move GUI to separate program "vimgui", to make startup of vim a
4781    lot faster, but still be able to do "vim -g" or ":gui".
47827   More explicit mouse button binding instead of 'mousemodel'?
47837   Add option to set the position of the window on the screen.  'windowpos',
4784    which has a value of "123,456": <x>,<y>.
4785    Or add a command, like ":winsize"?
47867   Add toolbar for more GUIs.
47878   Make it possible to use "amenu icon=BuiltIn##", so that the toolbar item
4788    name can be chosen free.
47897   Make it possible to put the toolbar on top, left, right and/or bottom of
4790    the window?  Allows for softkey-like use.
47916   Separate the part of Vim that does the editing from the part that runs the
4792    GUI.  Communicate through a pseudo-tty.  Vim starts up, creates a
4793    pty that is connected to the terminal.  When the GUI starts, the pty is
4794    reconnected to the GUI process.  When the GUI stops, it is connected to
4795    the terminal again.  Also use the pty for external processes, it looks
4796    like a vt100 terminal to them.  Vim uses extra commands to communicate GUI
4797    things.
47987   Motif: For a confirm() dialog <Enter> should be ignored when no default
4799    button selected, <Esc> should close the dialog.
48007   When using a pseudo-tty Vim should behave like some terminal (vt52 looks
4801    simple enough).  Terminal codes to/from shell should be translated.
4802-   Would it be useful to be able to quit the GUI and go back to the terminal
4803    where it was started from?
48047   Support "-visual <type>" command line argument.
4805
4806
4807Autocommands:
48089   Rework the code from FEAT_OSFILETYPE for autocmd-osfiletypes to use
4809    'filetype'.  Only for when the current buffer is known.
4810-   Put autocommand event names in a hashtable for faster lookup?
48118   When the SwapExists event is triggered, provide information about the
4812    swap file, e.g., whether the process is running, file was modified, etc.
4813    Must be possible to check the situation that it's probably OK to delete
4814    the swap file. (Marc Merlin)
48158   When all the patterns for an event are "*" there is no need to expand
4816    buffer names to a full path.  This can be slow for NFS.
48177   For autocommand events that trigger multiple times per buffer (e.g.,
4818    CursorHold), go through the list once and cache the result for a specific
4819    buffer.  Invalidate the cache when adding/deleting autocommands or
4820    changing the buffer name.
48217   Add TagJump event: do something after jumping to a tag.
48228   Add "TagJumpFile" autocommand: When jumping to another file for a tag.
4823    Can be used to open "main.c.gz" when "main.c" isn't found.
48248   Use another option than 'updatetime' for the CursorHold event.  The two
4825    things are unrelated for the user (but the implementation is more
4826    difficult).
48277   Add autocommand event for when a buffer cannot be abandoned.  So that the
4828    user can define the action taking (autowrite, dialog, fail) based on the
4829    kind of file. (Yakov Lerner)  Or is BufLeave sufficient?
48308   Autocommand for when modified files have been found, when getting input
4831    focus again (e.g., FileChangedFocus).
4832    Check when: getting focus, jumping to another buffer, ...
48338   Autocommands should not change registers.  And marks?  And the jumplist?
4834    And anything else?  Add a command to save and restore these things.
48358   Add autocommands, user functions and user commands to ":mkvimrc".
48366   Add KeymapChanged event, so that the effects of a different keymap can be
4837    handled (e.g., other font) (Ron Aaron)
48387   When trying to open a directory, trigger an OpenDirectory event.
48397   Add file type in front of file pattern: <d> for directory, <l> for link,
4840    <x> for executable, etc.  With commas to separate alternatives.  The
4841    autocommand is only executed when both the file type AND the file pattern
4842    match. (Leonard)
48435   Add option that specifies extensions which are to be discarded from the
4844    file name.  E.g. 'ausuffix', with ".gz,.orig".  Such that file.c.gz will
4845    trigger the "*.c" autocommands.  (Belabas)
48467   Add something to break the autocommands for the current event, and for
4847    what follows.  Useful for a "BufWritePre" that wants to avoid writing the
4848    file.
48498   When editing "tt.gz", which is in DOS format, 'fileformat' stays at
4850    "unix", thus writing the file changes it.  Somehow detect that the read
4851    command used dos fileformat.  Same for 'fileencoding'.
4852-   Add events to autocommands:
4853    Error	    - When an error happens
4854    VimLeaveCheck    - Before Vim decides to exit, so that it can be cancelled
4855		      when exiting isn't a good idea.
4856    CursorHoldC     - CursorHold while command-line editing
4857    WinMoved	    - when windows have been moved around, e.g, ":wincmd J"
4858    SearchPost	    - After doing a search command (e.g. to do "M")
4859    PreDirChanged/PostDirChanged
4860		    - Before/after ":cd" has been used (for changing the
4861		      window title)
4862    ShutDown	    - when the system is about to shut down
4863    InsertCharPost  - user typed a character in Insert mode, after inserting
4864		      the char.
4865    BufModified	    - When a buffer becomes modified, or unmodified (for
4866		      putting a [+] in the window title or checking out the
4867		      file from CVS).
4868    BufFirstChange  - When making a change, when 'modified' is set.  Can be
4869		      used to do a :preserve for remote files.
4870    BufChange	    - after a change was made.  Set some variables to indicate
4871		      the position and number of inserted/deleted lines, so
4872		      that marks can be updated.  HierAssist has patch to add
4873		      BufChangePre, BufChangePost and RevertBuf. (Shah)
4874    ViewChanged	    - triggered when the text scrolls and when the window size
4875		      changes.
4876    WinResized	    - After a window has been resized
4877    WinClose	    - Just before closing a window
4878-   Write the file now and then ('autosave'):
4879				  *'autosave'* *'as'* *'noautosave'* *'noas'*
4880    'autosave' 'as' number  (default 0)
4881	    Automatically write the current buffer to file N seconds after the
4882	    last change has been made and when |'modified'| is still set.
4883	    Default: 0 = do not autosave the buffer.
4884    Alternative: have 'autosave' use 'updatetime' and 'updatecount' but make
4885    them save the file itself besides the swapfile.
4886
4887
4888Omni completion:
4889-   Add a flag to 'complete' to be able to do omni completion with CTRL-N (and
4890    mix it with other kinds of completion).
4891-   Ideas from the Vim 7 BOF at SANE:
4892	- For interpreted languages, use the interpreter to obtain information.
4893	  Should work for Java (Eclipse does this), Python, Tcl, etc.
4894	  Richard Emberson mentioned working on an interface to Java.
4895	- Check Readline for its completion interface.
4896-   Ideas from others:
4897	http://www.wholetomato.com/
4898	http://www.vim.org/scripts/script.php?script_id=747
4899	    http://sourceforge.net/projects/insenvim
4900		or http://insenvim.sourceforge.net
4901	    Java, XML, HTML, C++, JSP, SQL, C#
4902	    MS-Windows only, lots of dependencies (e.g. Perl, Internet
4903		explorer), uses .dll shared libraries.
4904	    For C++ uses $INCLUDE environment var.
4905	    Uses Perl for C++.
4906	    Uses ctags to find the info:
4907		ctags -f $allTagsFile --fields=+aiKmnsSz --language-force=C++ --C++-kinds=+cefgmnpsut-dlux -u $files
4908	www.vim.org script 1213 (Java Development Environment) (Fuchuan Wang)
4909	IComplete: http://www.vim.org/scripts/script.php?script_id=1265
4910	    and http://stud4.tuwien.ac.at/~e0125672/icomplete/
4911	http://cedet.sourceforge.net/intellisense.shtml (for Emacs)
4912	Ivan Villanueva has something for Java.
4913	Emacs: http://www.xref-tech.com/xrefactory/more_c_completion.html
4914	Completion in .NET framework SharpDevelop: http://www.icsharpcode.net
4915-   Pre-expand abbreviations, show which abbrevs would match?
4916
4917
4918Insert mode completion/expansion:
4919-   Is it possible to keep the complete menu open when calling complete()?
4920    (Prabir Shrestha, 2017 May 19, #1713)
4921-   When 'completeopt' has "noselect" does not insert a newline.
4922    (Lifepillar, 2017 Apr 23, #1653)
4923-   Can 'completeopt' be made buffer-local? (#5487)
4924-   When complete() first argument is before where insert started and
4925    'backspace' is Vi compatible, the completion fails.
4926    (Hirohito Higashi, 2015 Feb 19)
4927-   The CompleteDone autocommand needs some info passed to it:
4928    - The word that was selected (empty if abandoned complete)
4929    - Type of completion: tag, omnifunc, user func.
4930-   When a:base in 'completefunc' starts with a number it's passed as a
4931    number, not a string. (Sean Ma)  Need to add flag to call_func_retlist()
4932    to force a string value.
4933-   When editing the text and pressing CTRL-N again goes back to originally
4934    completed text, edited text is gone. (Peng Yu, 2008 Jul 24)
4935    Suggestion by Ben Schmidt, 2008 Aug 6.
4936-   GUI implementation of the popup menu.
49377   When searching in other files the name flash by, too fast to read.  Only
4938    display a name every second or so, like with ":vimgrep".
49397   When expanding file names with an environment variable, add the match with
4940    the unexpanded var.  So $HOME/tm expands to "/home/guy/tmp" and
4941    "$HOME/tmp"
49428   When there is no word before the cursor but something like "sys." complete
4943    with "sys.".  Works well for C and similar languages.
49449   ^X^L completion doesn't repeat correctly.  It uses the first match with
4945    the last added line, instead of continuing where the last match ended.
4946    (Webb)
49478   Add option to set different behavior for Insert mode completion:
4948    - ignore/match case
4949    - different characters than 'iskeyword'
49508   Add option 'isexpand', containing characters when doing expansion (so that
4951    "." and "\" can be included, without changing 'iskeyword'). (Goldfarb)
4952    Also: 'istagword': characters used for CTRL-].
4953    When 'isexpand' or 'istagword' are empty, use 'iskeyword'.
4954    Alternative: Use a pattern so that start and end of a keyword can be
4955    defined, only allow dash in the middle, etc.
49568   Add a command to undo the completion, go back to the original text.
49577   Completion of an abbreviation: Can leave letters out, like what Instant
4958    text does: www.textware.com
49598   Use the class information in the tags file to do context-sensitive
4960    completion.  After "foo." complete all member functions/variables of
4961    "foo".  Need to search backwards for the class definition of foo.
4962    Should work for C++ and Java.
4963    Even more context would be nice: "import java.^N" -> "io", "lang", etc.
49647   When expanding $HOME/dir with ^X^F keep the $HOME (with an option?).
49657   Add CTRL-X command in Insert mode like CTRL-X CTRL-N, that completes WORDS
4966    instead of words.
49678   Add CTRL-X CTRL-R: complete words from register contents.
49688   Add completion of previously inserted texts (like what CTRL-A does).
4969    Requires remembering a number of insertions.
49708   Add 'f' flag to 'complete': Expand file names.
4971    Also apply 'complete' to whole line completion.
4972-   Add a flag to 'complete' to only scan local header files, not system
4973    header files. (Andri Moell)
4974-   Make it possible to search include files in several places.  Use the
4975    'path' option?  Can this be done with the dictionary completion (use
4976    wildcards in the file name)?
4977-   Make CTRL-X CTRL-K do a binary search in the dictionary (if it's sorted).
4978-   Speed up CTRL-X CTRL-K dictionary searching (don't use a regexp?).
4979-   Set a mark at the position where the match was found (file mark, could
4980    be in another file).
4981-   Add CTRL-A command in CTRL-X mode: show all matches.
4982-   Make CTRL-X CTRL-L use the 'complete' option?
4983-   Add command in CTRL-X mode to add following words to the completed string
4984    (e.g. to complete "Pointer->element" with CTRL-X CTRL-P CTRL-W CTRL-W)
4985-   CTRL-X CTRL-F: Use 'path' to find completions.
4986-   CTRL-X CTRL-F: Option to use forward slashes on MS-Windows?
4987-   CTRL-X CTRL-F: Don't replace "$VIM" with the actual value. (Kelly)
4988-   Allow listing all matches in some way (and picking one from the list).
4989
4990
4991Command line editing:
49927   Add commands (keys) to delete from the cursor to the end of the command
4993    line.
49948   Custom completion of user commands can't use the standard completion
4995    functions.  Add a hook to invoke a user function that returns the type of
4996    completion to be done: "file", "tag", "custom", etc.
4997-   Add flags to 'whichwrap' for command line editing (cursor right at end of
4998    lines wraps to start of line).
4999-   Make editing the command line work like Insert mode in a single-line view
5000    on a buffer that contains the command line history.  But this has many
5001    disadvantages, only implement it when these can be solved.  Elvis has run
5002    into these, see remarks from Steve (~/Mail/oldmail/kirkendall/in.00012).
5003    - Going back in history and editing a line there would change the history.
5004      Would still need to keep a copy of the history elsewhere.  Like the
5005      cmdwin does now already.
5006    - Use CTRL-O to execute one Normal mode command.  How to switch to normal
5007      mode for more commands?  <Esc> should cancel the command line.  CTRL-T?
5008    - To allow "/" and "= need to recursively call getcmdline(), overwrite the
5009      cmdline.  But then we are editing a command-line again.  How to avoid
5010      that the user gets confused by the stack of command lines?
5011    - Use edit() for normal cmdline editing?  Would have to integrate
5012      getcmdline() into edit().  Need to solve conflicts between Insert mode
5013      and Command-line mode commands.  Make it work like Korn shell and tcsh.
5014      Problems:
5015	- Insert: completion with 'wildchar'
5016	- Insert: use cmdline abbreviations
5017	- Insert: CTRL-D deletes indent instead of listing matches
5018	- Normal: no CTRL-W commands
5019	- Normal: no ":" commands?
5020	- Normal: allow Visual mode only within one line.
5021    - where to show insert/normal mode message?  Change highlighting of
5022      character in first column?
5023    - Implementation ideas:
5024      - Set "curwin" and "curbuf" to the command line window and buffer.
5025      - curwin->w_topline is always equal to curwin->w_cursor.lnum.
5026      - never set 'number', no folding, etc.  No status line.
5027      - sync undo after entering a command line?
5028      - use NV_NOCL flag for commands that are not allowed in Command-line
5029	Mode.
5030
5031
5032Command line completion:
5033-   Feature request: Complete members of a dictionary.
5034    (Luc Hermitte, 2017 Jan 4, #1350)
5035-   Completion of ":e" is ":earlier", should be ":edit".  Complete to the
5036    matching command instead of doing this alphabetically. (Mikel Jorgensen)
50378   Change expand_interactively into a flag that is passed as an argument.
50388   With command line completion after '%' and '#', expand current/alternate
5039    file name, so it can be edited.  Also with modifiers, such as "%:h".
50408   When completing command names, either sort them on the long name, or list
5041    them with the optional part inside [].
50428   Add an option to ignore case when doing interactive completion.  So that
5043    ":e file<Tab>" also lists "Filelist" (sorted after matching case matches).
50447   Completion of ":map x ": fill in the current mapping, so that it can be
5045    edited. (Sven Guckes)
5046-   For 'wildmenu': Simplify "../bar" when possible.
5047-   When using <Up> in wildmenu mode for a submenu, should go back to the
5048    current menu, not the first one.  E.g., ":emenu File.Save<Up>".
50498   When using backtick expansion, the external command may write a greeting
5050    message.  Add an option or commands to remove lines that match a regexp?
50517   When listing matches of files, display the common path separately from the
5052    file names, if this makes the listing shorter. (Webb)
5053-   Add command line completion for ":ilist" and friends, show matching
5054    identifiers (Webb).
50558   Add command line completion for "old value" of a command.  ":args <key>"
5056    would result in the current list of arguments, which you can then edit.
50577   Add command line completion with CTRL-X, just like Insert mode completion.
5058    Useful for ":s/word/xx/".
5059-   Add command to go back to the text as it was before completion started.
5060    Also to be used for <Up> in the command line.
5061-   Add 'wildlongest' option: Key to use to find longest common match for
5062    command line completion (default CTRL-L), like 'wildchar'. (Cregut)
5063    Also: when there are several matches, show them line a CTRL-D.
5064
5065
5066Command line history:
5067-   Add "KeyWasTyped" flag: It's reset before each command and set when a
5068    character from the keyboard is consumed. Value is used to decide to put a
5069    command line in history or not. Put line in history if it didn't
5070    completely result from one mapping.
5071-   When using ":browse", also put the resulting edit command in the history,
5072    so that it can be repeated. (Demirel)
5073
5074
5075Insert mode:
50769   When 'autoindent' is set, hitting <CR> twice, while there is text after
5077    the cursor, doesn't delete the autoindent in the resulting blank line.
5078    (Rich Wales) This is Vi compatible, but it looks like a bug.
50798   When using CTRL-O in Insert mode, then executing an insert command
5080    "a" or "i", should we return to Insert mode after <Esc>? (Eggink)
5081    Perhaps it can be allowed a single time, to be able to do
5082    "<C-O>10axyz<Esc>".  Nesting this further is confusing.
5083    ":map <F2> 5aabc<Esc>" works only once from Insert mode.
50848   When using CTRL-G CTRL-O do like CTRL-\ CTRL-O, but when returning with
5085    the cursor in the same position and the text didn't change continue the
5086    same change, so that "." repeats the whole insert.
50877   Use CTRL-G <count> to repeat what follows.  Useful for inserting a
5088    character multiple times or repeating CTRL-Y.
5089-   Make 'revins' work in Replace mode.
50907   Use 'matchpairs' for 'showmatch': When inserting a character check if it
5091    appears in the rhs of 'matchpairs'.
5092-   In Insert mode (and command line editing?): Allow undo of the last typed
5093    character.	This is useful for CTRL-U, CTRL-W, delete and backspace, and
5094    also for characters that wrap to the next line.
5095    Also: be able to undo CTRL-R (insert register).
5096    Possibly use 'backspace'="whole" for a mode where at least a <CR> that
5097    inserts autoindent is undone by a single <BS>.
5098-   Use CTRL-G in Insert mode for an extra range of commands, like "g" in
5099    Normal mode.
5100-   Make 'paste' work without resetting other options, but override their
5101    value.  Avoids problems when changing files and modelines or autocommands
5102    are used.
5103-   When typing CTRL-V and a digit higher than 2, only expect two digits.
5104-   Insert binary numbers with CTRL-V b.
5105-   Make it possible to undo <BS>, <C-W> and <C-U>.  Bash uses CTRL-Y.
5106
5107
5108'cindent', 'smartindent':
51099   Wrapping a variable initialization should have extra indent:
5110	char * veryLongName =
5111		"very long string"
5112    Also check if "cino=+10" is used correctly.
51138   Lisp indenting: "\\" confuses the indenter. (Dorai Sitaram, 2006 May 17)
51148   Why are continuation lines outside of a {} block not indented?  E.g.:
5115	long_type foo =
5116	value;
51178   Java: Inside an anonymous class, after an "else" or "try" the indent is
5118    too small. (Vincent Bergbauer)
5119    Problem of using {} inside (), 'cindent' doesn't work then.
51208   In C++ it's possible to have {} inside (): (Kirshna)
5121		func(
5122			new String[] {
5123			    "asdf",
5124			    "asdf"
5125			}
5126		    );
51278   In C++ a function isn't recognized inside a namespace:
5128    (Chow Loong Jin)
5129	namespace {
5130	    int
5131		 func(int arg) {
5132		 }
5133	}
51346   Add 'cino' flag for this function argument layout: (Spencer Collyer)
5135	    func( arg1
5136	        , arg2
5137		, arg3
5138		);
51397   Add separate "(0" option into inside/outside a function (Zellner):
5140	func(
5141	   int x)	// indent like "(4"
5142	{
5143	   if (a
5144	       && b)	// indent like "(0"
51459   Using "{" in a comment: (Helmut Stiegler)
5146    if (a)
5147    {
5148	    if (b)
5149	    {
5150		    // {
5151	    }
5152	    } <-- this is indented incorrect
5153    Problem is that find_start_brace() checks for the matching brace to be in
5154    a comment, but not braces in between.  Requires adding a comment check to
5155    findmatchlimit().
5156-   Make smartindenting configurable.  Add 'sioptions', e.g. '#' setting the
5157    indent to 0 should be switched on/off.
51587   Support ANSI style function header, with each argument on its own line.
5159-   "[p" and "]p" should use 'cindent' code if it's on (only for the first
5160    line).
5161-   Add option to 'cindent' to set indent for comments outside of {}?
5162-   Make a command to line up a comment after a code line with a previous
5163    comment after a code line.	Can 'cindent' do this automatically?
5164-   When 'cindent'ing a '}', showmatch is done before fixing the indent.  It
5165    looks better when the indent is fixed before the showmatch. (Webb)
5166-   Add option to make indenting work in comments too (for commented-out
5167    code), unless the line starts with "*".
5168-   Don't use 'cindent' when doing formatting with "gq"?
5169-   When formatting a comment after some text, insert the '*' for the new line
5170    (indent is correct if 'cindent' is set, but '*' doesn't get inserted).
51718   When 'comments' has both "s1:/*,mb:*,ex:*/" and "s1:(*,mb:*,ex:*)", the
5172    'x' flag always uses the first match.  Need to continue looking for more
5173    matches of "*" and remember all characters that could end the comment.
5174-   For smartindent: When typing 'else' line it up with matching 'if'.
5175-   'smartindent': allow patterns in 'cinwords', for e.g. TeX files, where
5176    lines start with "\item".
5177-   Support this style of comments (with an option): (Brown)
5178	/* here is a comment that
5179	is just autoindented, and
5180	nothing else */
5181-   Add words to 'cinwords' to reduce the indent, e.g., "end" or "fi".
51827   Use Tabs for the indent of starting lines, pad with spaces for
5183    continuation lines.  Allows changing 'tabstop' without messing up the
5184    indents.
5185    Patch by Lech Lorens, 2010 Mar.  Update by James McCoy, 2014 Mar 15.
5186
5187
5188Java:
51898   Can have {} constructs inside parens.  Include changes from Steve
5190    Odendahl?
51918   Recognize "import java.util.Vector" and use $CLASSPATH to find files for
5192    "[i" commands and friends.
5193-   For files found with 'include': handle "*" in included name, for Java.
5194    (Jason)
5195-   How to make a "package java.util" cause all classes in the package to be
5196    searched?  Also for "import java.util.*". (Mark Brophy)
5197
5198
5199'comments':
52008   When formatting C comments that are after code, the "*" isn't repeated
5201    like it's done when there is no code.  And there is no automatic wrapping.
5202    Recognize comments that come after code.  Should insert the comment leader
5203    when it's "#" or "//".
5204    Other way around: when a C command starts with "* 4" the "*" is repeated
5205    while it should not.  Use syntax HL comment recognition?
52067   When using "comments=fg:--", Vim inserts three spaces for a new line.
5207    When hitting a TAB, these spaces could be removed.
52087   The 'n'esting flag doesn't do the indenting of the last (rightmost) item.
52096   Make strings in 'comments' option a RE, to be able to match more
5210    complicated things. (Phillipps)  Use a special flag to indicate that a
5211    regexp is used.
52128   Make the 'comments' option with "/* * */" lines only repeat the "*" line
5213    when there is a "/*" before it?  Or include this in 'cindent'?
5214
5215
5216Virtual edit:
52178   Make the horizontal scrollbar work to move the text further left.
52187   Allow specifying it separately for Tabs and beyond end-of-line?
5219
5220
5221Text objects:
52228   Add text object for fold, so that it can be yanked when it's open.
52238   Add test script for text object commands "aw", "iW", etc.
52248   Add text object for part of a CamelHumpedWord and under_scored_word.
5225    (Scott Graham)  "ac" and "au"?
52268   Add a text object for any kind of quoting, also with multibyte
5227    characters.  Option to specify what quotes are recognized (default: all)
5228    use "aq" and "iq".  Use 'quotepairs' to define pairs of quotes, like
5229    'matchpairs'?
52308   Add text object for any kind of parens, also multibyte ones.
52318   Add a way to make an ":omap" for a user-defined text object.  Requires
5232    changing the starting position in oap->start.
52338   Add "gp" and "gP" commands: insert text and make sure there is a single
5234    space before it, unless at the start of the line, and after it, unless at
5235    the end of the line or before a ".".
52367   Add objects with backwards extension?  Use "I" and "A".  Thus "2dAs"
5237    deletes the current and previous sentence. (Jens Paulus)
52387   Add "g{" and "g}" to move to the first/last character of a paragraph
5239    (instead of the line just before/after a paragraph as with "{" and "}").
52406   Ignore comment leaders for objects.  Make "das" work in reply-email.
52415   Make it possible to use syntax group matches as a text object.  For
5242    example, define a "ccItem" group, then do "da<ccItem>" to delete one.
5243    Or, maybe just define "dai", delete-an-item, to delete the syntax item the
5244    cursor is on.
5245
5246
5247Select mode:
52488   In blockwise mode, typed characters are inserted in front of the block,
5249    backspace deletes a column before the block. (Steve Hall)
52507   Alt-leftmouse starts block mode selection in MS Word.
5251    See http://vim.wikia.com/wiki/Use_Alt-Mouse_to_select_blockwise.
52527   Add Cmdline-select mode.  Like Select mode, but used on the command line.
5253    - Change gui_send_mouse_event() to pass on mouse events when 'mouse'
5254      contains 'C' or 'A'.
5255    - Catch mouse events in ex_getln.c.  Also shift-cursor, etc., like in
5256      normal_cmd().
5257    - remember start and end of selection in cmdline_info.
5258    - Typing text replaces the selection.
5259
5260
5261Visual mode:
52628   Support using "." in Visual mode. Use the operator applied to the Visual
5263    selection, if possible.
5264-   When dragging the Visual selection with the mouse and 'scrolloff' is zero,
5265    behave like 'scrolloff' is one, so that the text scrolls when the pointer
5266    is in the top line.
5267-   Displaying size of Visual area: use 24-33 column display.
5268    When selecting multiple lines, up to about a screenful, also count the
5269    characters.
52708   When using "I" or "A" in Visual block mode, short lines do not get the new
5271    text.  Make it possible to add the text to short lines too, with padding
5272    where needed.
52737   With a Visual block selected, "2x" deletes a block of double the width,
5274    "3y" yanks a block of triple width, etc.
52757   When selecting linewise, using "itext" should insert "text" at the start
5276    of each selected line.
52778   What is "R" supposed to do in Visual mode?
52788   Make Visual mode local to the buffer.  Allow changing to another buffer.
5279    When starting a new Visual selection, remove the Visual selection in any
5280    other buffer. (Ron Aaron)
52818   Support dragging the Visual area to drop it somewhere else. (Ron Aaron,
5282    Ben Godfrey)
52837   Support dragging the Visual area to drop it in another program, and
5284    receive dropped text from another program. (Ben Godfrey)
52857   With blockwise Visual mode and "c", "C", "I", "A", etc., allow the use of
5286    a <CR>.  The entered lines are repeated over the Visual area.
52877   Filtering a block should only apply to the block, not to the whole lines.
5288    When the number of lines is increased, add lines. When decreased, pad with
5289    spaces or delete? Use ":`<,`>" on the command line.
52908   After filtering the Visual area, make "gv" select the filtered text?
5291    Currently "gv" only selects a single line, not useful.
52927   Don't move the cursor when scrolling?  Needed when the selection should
5293    stay the same.  Scroll to the cursor at any movement command.  With an
5294    option!
52957   In Visual block mode, need to be able to define a corner on a position
5296    that doesn't have text?  Also: when using the mouse, be able to select
5297    part of a TAB.  Even more: Add a mode where the cursor can be on a screen
5298    position where there is no text.  When typing, add spaces to fill the gap.
5299    Other solution: Always use curswant, so that you can move the cursor to
5300    the right column, and then use up/down movements to select the line,
5301    without changing the column.
53026   ":left" and ":right" should work in Visual block mode.
53037   CTRL-I and CTRL-O should work in Visual mode, but only jump to marks in the
5304    current buffer.
53056   In non-Block mode, "I" should insert the same text in front of each line,
5306    before the first non-blank, "gI" in column 1.
53076   In non-Block mode, "A" should append the same text after each line.
53086   When in blockwise visual selection (CTRL-V), allow cursor to be placed
5309    right of the line.  Could also allow cursor to be placed anywhere on a TAB
5310    or other special character.
53116   Add commands to move selected text, without deselecting.
5312
5313
5314More advanced repeating commands:
5315-   Add "." command for visual mode: redo last visual command (e.g. ":fmt").
5316-   Add command to repeat last movement.  Including count.
5317-   Add "." command after operator: repeat last command of same operator.  E.g.
5318    "c." will repeat last change, also when "x" used since then (Webb).
5319    "y." will repeat last yank.
5320    "c2." will repeat the last but one change?
5321    Also: keep history of Normal mode commands, add command to list the history
5322    and/or pick an older command.
5323-   History stack for . command?  Use "g." command.
5324
5325
5326Mappings and Abbreviations:
53278   When "0" is mapped (it is a movement command) this mapping should not be
5328    used after typing another number, e.g. "20l". (Charles Campbell)
5329    Is this possible without disabling the mapping of the following command?
53308   Should mapping <C-A> and <C-S-A> both work?
53317   ":abbr b byte", append "b " to an existing word still expands to "byte".
5332    This is Vi compatible, but can we avoid it anyway?
53338   To make a mapping work with a prepended "x to select a register, store the
5334    last _typed_ register name and access it with "&.
53358   Add ":amap", like ":amenu".
53367   Add a mapping that works always, for remapping the keyboard.
53378   Add ":cab!", abbreviations that only apply to Command-line mode and not to
5338    entering search strings.
53398   Add a flag to ":abbrev" to eat the character that triggers the
5340    abbreviation.  Thus "abb ab xxx" and typing "ab<Space>" inserts "xxx" and
5341    not the <Space>.
53428   Give a warning when using CTRL-C in the lhs of a mapping.  It will never
5343    (?) work.
53447   Add <0x8f> (hex), <0o33> (octal) and <123> (decimal) to <> notation?
53457   When someone tries to unmap with a trailing space, and it fails, try
5346    unmapping without the trailing space.  Helps for ":unmap xx | unmap yy".
53476   Context-sensitive abbreviations: Specify syntax group(s) in which the
5348    abbreviations are to be used.
5349-   Add mappings that take arguments.  Could work like the ":s" command.  For
5350    example, for a mouse escape sequence:
5351	:mapexp  <Esc>{\([0-9]*\),\([0-9]*\);	H\1j\2l
5352-   Add optional <Number> argument for mappings:
5353    :map <Number>q	     ^W^W<Number>G
5354    :map <Number>q<Number>t  ^W^W<Number1-1>G<Number2>l
5355    :map q<Char>	    :s/<Char>/\u\0/g
5356    Or implicit:
5357    :map q			<Register>d<Number>$
5358-   Add command to repeat a whole mapping ("." only repeats the last change in
5359    a mapping).  Also: Repeat a whole insert command, including any mappings
5360    that it included.  Sort-of automatic recording?
5361-   Include an option (or flag to 'cpoptions') that makes errors in mappings
5362    not flush the rest of the mapping (like nvi does).
5363-   Use context sensitiveness of completion to switch abbreviations and
5364    mappings off for :unab and :unmap.
53656   When using mappings in Insert mode, insert characters for incomplete
5366    mappings first, then remove them again when a mapping matches.  Avoids
5367    that characters that are the start of some mapping are not shown until you
5368    hit another character.
5369-   Add mappings for replace mode: ":rmap".  How do we then enter mappings for
5370    non-replace Insert mode?
5371-   Add separate mappings for Visual-character/block/line mode?
5372-   Add 'mapstop' command, to stop recursive mappings.
5373-   List mappings that have a raw escape sequence both with the name of the key
5374    for that escape sequence (if there is one) and the sequence itself.
5375-   List mappings: Once with special keys listed as <>, once with meta chars as
5376    <M-a>, once with the byte values (octal?).  Sort of "spell mapping" command?
5377-   When entering mappings: Add the possibility to enter meta keys like they
5378    are displayed, within <>: <M-a>, <~@> or <|a>.
5379-   Allow multiple arguments to :unmap.
5380-   Command to show keys that are not used and available for mapping
5381    ":freekeys".
5382-   Allow any character except white space in abbreviations lhs (Riehm).
5383
5384
5385Incsearch:
5386-   Wrong scrolling when using incsearch.  Patch by Christian Brabandt, 2014
5387    Dec 4.  Is this a good solution?
5388-   Temporarily open folds to show where the search ends up.  Restore the
5389    folds when going to another line.
5390    Patch to open folds for 'incsearch'. (Christian Brabandt, 2015 Jan 6)
5391-   Bug with 'incsearch' going to wrong line. (Wolfram Kresse, 2009 Aug 17)
5392    Only with "vim -u NONE".
5393-   When no match is found and the user types more, the screen is redrawn
5394    anyway.  Could skip that.  Esp. if the line wraps and the text is scrolled
5395    up every time.
5396-   When incsearch used and hitting return, no need to search again in many
5397    cases, saves a lot of time in big files. (Slootman wants to work on this?)
5398    When not using special characters, can continue search from the last match
5399    (or not at all, when there was no match).  See oldmail/webb/in.872.
54009   incsearch is incorrect for "/that/<Return>/this/;//" (last search pattern
5401    isn't updated).
5402
5403
5404Searching:
54059   Should have an option for :vimgrep to find lines without a match.
54068   Add "g/" and "gb" to search for a pattern in the Visually selected text?
5407    "g?" is already used for rot13.
5408    The vis.vim script has a ":S" command that does something like this.
5409    Can use "g/" in Normal mode, uses the '< to '> area.
5410    Use "&/" for searching the text in the Visual area?
54119   Add "v" offset: "/pat/v": search for pattern and start Visual mode on the
5412    matching text.
54138   Add a modifier to interpret a space like "\_s\+" to make it much easier to
5414    search for a phrase.
54158   Add a mechanism for recursiveness: "\@(([^()]*\@g[^()]*)\)".  \@g stands
5416    for "go recursive here" and \@( \) marks the recursive part.
5417    Perl does it this way:
5418	    $paren = qr/ \(( [^()] | (??{ $paren }) )* \) /x;
5419    Here $paren is evaluated when it's encountered.  This is like a regexp
5420    inside a regexp.  In the above terms it would be:
5421	    \@((\([^()]\|\@g\)*)\)
54228   Show the progress every second.  Could use the code that checks for CTRL-C
5423    to find out how much time has passed.  Or use SIGALRM.  Where to show the
5424    number?
54257   Support for approximate-regexps to find similar words (agrep
5426    http://www.tgries.de/agrep/ tre: http://laurikari.net/tre/index.html).
54278   Add an item for a big character range, so that one can search for a
5428    chinese character: \z[234-1234]  or \z[XX-YY] or \z[0x23-0x234].
54297   Add an item stack to allow matching ().  One side is "push X on
5430    the stack if previous atom matched".  Other side is "match with top of
5431    stack, pop it when it matches".  Use "\@pX" and "\@m"?
5432	Example: \((\@p).\{-}\@m\)*
54337   Add a flag to "/pat/" to discard an error.  Useful to continue a mapping
5434    when a search fails.  Could be "/pat/E" (e is already used for end offset).
54357   Add pattern item to use properties of Unicode characters.  In Perl it's
5436    "\p{L}" for a letter.  See Regular Expression Pocket Reference.
54378   Would it be possible to allow ":23,45/pat/flags" to search for "pat" in
5438    lines 23 to 45?  Or does this conflict with Ex range syntax?
54398   Allow identical pairs in 'matchpairs'.  Restrict the search to the current
5440    line.
54417   Allow longer pairs in 'matchpairs'.  Use matchit.vim as an
5442    example.
54438   Make it possible to define the character that "%" checks for in
5444    #if/#endif.  For nmake it's !if/!endif.
5445-   For "%" command: set hierarchy for which things include other things that
5446    should be ignored (like "*/" or "#endif" inside /* */).
5447    Also: use "%" to jump from start to end of syntax region and back.
5448    Alternative: use matchit.vim
54498   A pattern like "\([^a]\+\)\+" takes an awful long time.  Recognize that
5450    the recursive "\+" is meaningless and optimize for it.
5451    This one is also very slow on "/* some comment */": "^\/\*\(.*[^/]\)*$".
54527   Recognize "[a-z]", "[0-9]", etc. and replace them with the faster "\l" and
5453    "\d".
54547   Add a way to specify characters in <C-M> or <Key> form.  Could be
5455    \%<C-M>.
54568   Add an argument after ":s/pat/str/" for a range of matches.  For example,
5457    ":s/pat/str/#3-4" to replace only the third and fourth "pat" in a line.
54588   When 'iskeyword' is changed the matches from 'hlsearch' may change. (Benji
5459    Fisher)  redraw if some options are set while 'hlsearch' is set?
54608   Add an option not to use 'hlsearch' highlighting for ":s" and ":g"
5461    commands. (Kahn)  It would work like ":noh" is used after that command.
5462    Also: An extra flag to do this once, and a flag to keep the existing
5463    search pattern.
5464-   Make 'hlsearch' a local/global option, so that it can be disabled in some
5465    of the windows.
5466-   Add \%h{group-name}; to search for a specific highlight group.
5467    Add \%s{syntax-group}; to search for a specific syntax group.
5468-   Support Perl regexp.  Use PCRE (Perl Compatible RE) package. (Shade)
5469    Or translate the pattern to a Vim one.
5470    Don't switch on with an option for typed commands/mappings/functions, it's
5471    too confusing.  Use "\@@" in the pattern, to avoid incompatibilities.
54728   Add a way to access the last substitute text, what is used for ":s//~/".
5473    Can't use the ~ register, it's already used for drag & drop.
5474-   Remember flags for backreferenced items, so that "*" can be used after it.
5475    Check with "\(\S\)\1\{3}". (Hemmerling)
54768   Flags that apply to the whole pattern.
5477    This works for all places where a regexp is used.
5478    Add "\q" to not store this pattern as the last search pattern?
5479-   Add flags to search command (also for ":s"?):
5480    i	ignore case
5481    I	use case
5482    p	use Perl regexp syntax (or POSIX?)
5483    v	use Vi regexp syntax
5484    f	forget pattern, don't keep it for "n" command
5485    F   remember pattern, keep it for "n" command
5486    Perl uses these too:
5487    e	evaluate the right side as an expression (Perl only)
5488    m	multiple line expression (we don't need it)
5489    o	compile only once (Perl only)
5490    s	single line expression (we don't need it)
5491    x	extended regexp (we don't need it)
5492    When used after ":g" command, backslash needed to avoid confusion with the
5493    following command.
5494    Add 'searchflags' for default flags (replaces 'gdefault').
5495-   Add command to display the last used substitute pattern and last used
5496    pattern. (Margo)  Maybe make it accessible through a register (like "/
5497    for search string)?
54987   Use T-search algorithm, to speed up searching for strings without special
5499    characters.  See C't article, August 1997.
5500-   Add 'fuzzycase' option, so that case doesn't matter, and '-' and '_' are
5501    equivalent (for Unix filenames).
5502-   Add 'v' flag to search command: enter Visual mode, with the matching text
5503    as Visual area. (variation on idea from Bertin)
5504-   Searching: "/this//that/" should find "that" after "this".
5505-   Add global search commands: Instead of wrapping at the end of the buffer,
5506    they continue in another buffer.  Use flag after search pattern:
5507    a	for the next file in the argument list
5508    f	for file in the buffer list
5509    w	for file edited in a window.
5510    e.g. "/pat/f".  Then "n" and "N" work through files too.  "f" flag also for
5511    ":s/pat/foo/f"???  Then when 'autowrite' and 'hidden' are both not set, ask
5512    before saving files: "Save modified buffer "/path/file"? (Yes/Hide/No
5513    Save-all/hide-All/Quit) ".
5514-   ":s/pat/foo/3": find 3rd match of "pat", like sed. (Thomas Koehler)
55157   When searching with 'n' give message when getting back where the search
5516    first started.  Remember start of search in '/ mark.
55177   Add option that scrolls screen to put cursor in middle of screen after
5518    search always/when off-screen/never.  And after a ":tag" command.  Maybe
5519    specify how many lines below the screen causes a redraw with the cursor in
5520    the middle (default would be half a screen, zero means always).
55216   Support multiple search buffers, so macros can be made without side
5522    effects.
55237   From xvim: Allow a newline in search patterns (also for :s, can delete
5524    newline).  Add BOW, EOW, NEWL, NLORANY, NLBUTANY, magic 'n' and 'r', etc.
5525    [not in xvim:] Add option to switch on matches crossing ONE line boundary.
55267   Add ":iselect", a combination of ":ilist" and ":tselect". (Aaron) (Zellner)
5527    Also ":dselect".
5528
5529
5530Undo:
55319   ":gundo" command: global undo.  Undoes changes spread over multiple files
5532    in the order they were made.  Also ":gredo".  Both with a count.  Useful
5533    when tests fail after making changes and you forgot in which files.
55349   After undo/redo, in the message show whether the buffer is modified or
5535    not.
55368   Search for pattern in undo tree, showing when it happened and the text
5537    state, so that you can jump to it.
55388   Undo tree: visually show the tree somehow (Damian Conway)
5539    Show only the leaves, indicating how many changed from the branch and the
5540    timestamp?
5541    Put branch with most recent change on the left, older changes get more
5542    indent?
5543-   Make it possible to undo all the commands from a mapping, including a
5544    trailing unfinished command, e.g. for ":map K iX^[r".
5545-   When accidentally hitting "R" instead of Ctrl-R, further Ctrl-R is not
5546    possible, even when typing <Esc> immediately. (Grahn)  Also for "i", "a",
5547    etc.  Postpone saving for undo until something is really inserted?
55488   When Inserting a lot of text, it can only be undone as a whole.  Make undo
5549    sync points at every line or word.  Could recognize the start of a new
5550    word (white space and then non-white space) and backspacing.
5551    Can already use CTRL-G u, but that requires remapping a lot of things.
55528   Make undo more memory-efficient: Compare text before and after change,
5553    only remember the lines that really changed.
55547   Add undo for a range of lines.  Can change these back to a previous
5555    version without changing the rest of the file.  Stop doing this when a
5556    change includes only some of these lines and changes the line count.  Need
5557    to store these undo actions as a separate change that can be undone.
5558-   For u_save() include the column number. This can be used to set '[ and '].
5559    And in the future the undo can be made more efficient (Webb).
5560-   In out-of-memory situations: Free allocated space in undo, and reduce the
5561    number of undo levels (with confirmation).
5562-   Instead of [+], give the number of changes since the last write: [+123].
5563    When undoing to before the last write, change this to a negative number:
5564    [-99].
5565-   With undo with simple line delete/insert: optimize screen updating.
5566-   When executing macro's: Save each line for undo only once.
5567-   When doing a global substitute, causing almost all lines to be changed,
5568    undo info becomes very big.  Put undo info in swap file??
5569
5570
5571Buffer list:
55727   Command to execute a command in another buffer: ":inbuf {bufname} {cmd}".
5573    Also for other windows: ":inwin {winnr} {cmd}".  How to make sure that
5574    this works properly for all commands, and still be able to return to the
5575    current buffer/window?  E.g.: ":inbuf xxx only".
55768   Add File.{recent-files} menu entries: Recently edited files.
5577    Ron Aaron has a plugin for this: mru.vim.
55788   Unix: Check all uses of fnamecmp() and fnamencmp() if they should check
5579    inode too.
55807   Add another number for a buffer, which is visible for the user.  When
5581    creating a new buffer, use the lowest number not in use (or the highest
5582    number in use plus one?).
55837   Offer some buffer selection from the command line?  Like using ":ls" and
5584    asking for a buffer number. (Zachmann)
5585-   When starting to edit a file that is already in the buffer list, use the
5586    file name argument for the new short file name. (Webb)
5587-   Add an option to make ":bnext" and ":bprev" wrap around the end of the
5588    buffer list.  Also for ":next" and ":prev"?
55897   Add argument to ":ls" which is a pattern for buffers to list.
5590    E.g. ":ls *.c". (Thompson)
55917   Add expansion of buffer names, so that "*.c" is expanded to all buffer
5592    names.  Needed for ":bdel *.c", ":bunload *.c", etc.
55938   Support for <afile> where a buffer name is expected.
55947   Add an option to mostly use slashes in file names.  Separately for
5595    internal use and for when executing an external program?
55968   Some file systems are case-sensitive, some are not.  Besides
5597    'wildignorecase' there might be more parts inside
5598    CASE_INSENSITIVE_FILENAME that are useful on Unix.
5599
5600
5601Swap (.swp) files:
56028   If writing to the swap file fails, should try to open one in another
5603    directory from 'dir'.  Useful in case the file system is full and when
5604    there are short file name problems.
56058   Also use the code to try using a short file name for the backup and swap
5606    file for the Win32 and Dos 32 bit versions.
56078   When a file is edited by root, add $LOGNAME to know who did su.
56088   When the edited file is a symlink, try to put the swap file in the same
5609    dir as the actual file.  Adjust FullName().  Avoids editing the same file
5610    twice (e.g. when using quickfix).  Also try to make the name of the backup
5611    file the same as the actual file?
5612    Use the code for resolve()?
56137   When using 64 bit inode numbers, also store the top 32 bits.  Add another
5614    field for this, using part of bo_fname[], to keep it compatible.
56157   When editing a file on removable media, should put swap file somewhere
5616    else.  Use something like 'r' flag in 'viminfo'.  'diravoid'?
5617    Also: Be able to specify minimum disk space, skip directory when not
5618    enough room.
56197   Add a configure check for which directory should be used: /tmp, /var/tmp
5620    or /var/preserve.
5621-   Add an option to create a swap file only when making the first change to
5622    the buffer.  (Liang)  Or only when the buffer is not read-only.
5623-   Add option to set "umask" for backup files and swap files (Antwerpen).
5624    'backupumask' and 'swapumask'?  Or 'umaskbackup' and 'umaskswap'?
5625-   When editing a readonly file, don't use a swap file but read parts from the
5626    original file.  Also do this when the file is huge (>'maxmem').  We do
5627    need to load the file once to count the number of lines?  Perhaps keep a
5628    cached list of which line is where.
5629
5630
5631Viminfo:
56327   Can probably remove the code that checks for a writable viminfo file,
5633    because we now do the chown() for root, and others can't overwrite someone
5634    else's viminfo file.
56358   When there is no .viminfo file and someone does "su", runs Vim, a
5636    root-owned .viminfo file is created.  Is there a good way to avoid this?
5637    Perhaps check the owner of the directory.  Only when root?
56388   Add argument to keep the list of buffers when Vim is started with a file
5639    name. (Schild)
56408   Keep the last used directory of the file browser (File/Open menu).
56418   Remember the last used register for "@@".
56428   Remember the redo buffer, so that "." works after restarting.
56438   Remember a list of last accessed files.  To be used in the
5644    "File.Open Recent" menu.  Default is to remember 10 files or so.
5645    Also remember which files have been read and written.  How to display
5646    this?
56477   Also store the ". register (last inserted text).
56487   Make it possible to store buffer names in viminfo file relative to some
5649    directory, to make them portable over a network. (Aaron)
56506   Store a snapshot of the currently opened windows.  So that when quitting
5651    Vim, and then starting again (without a file name argument), you see the
5652    same files in the windows.  Use ":mksession" code?
5653-   Make marks present in .viminfo usable as file marks: Display a list of
5654    "last visited files" and select one to jump to.
5655
5656
5657Modelines:
56588   Before trying to execute a modeline, check that it looks like one (valid
5659    option names).  If it's very wrong, silently ignore it.
5660    Ignore a line that starts with "Subject: ".
5661-   Add an option to whitelist options that are allowed in a modeline.  This
5662    would allow careful users to use modelines, e.g., only allowing
5663    'shiftwidth'.
5664-   Add an option to let modelines only set local options, not global ones
5665    such as 'encoding'.
5666-   When an option value is coming from a modeline, do not carry it over to
5667    another edited file?  Would need to remember the value from before the
5668    modeline setting.
5669-   Allow setting a variable from a modeline?  Only allow using fixed strings,
5670    no function calls, to avoid a security problem.
5671-   Allow ":doauto BufRead x.cpp" in modelines, to execute autocommands for
5672    .cpp files.
5673-   Support the "abbreviate" command in modelines (Kearns).  Careful for
5674    characters after <Esc>, that is a security leak.
5675-   Add an option setting to ask the user if the modelines are to be executed
5676    or not.  Same for .exrc in local dir.
5677
5678
5679Sessions:
56808   DOS/Windows: ":mksession" generates a "cd" command where "aa\#bb" means
5681    directory "#bb" in "aa", but it's used as "aa#bb". (Ronald Hoellwarth)
56827   When there is a "help.txt" window in a session file, restoring that
5683    session will not get the "LOCAL ADDITIONS" back.
56848   With ":mksession" always store the 'sessionoptions' option, even when
5685    "options" isn't in it. (St-Amant)
56868   When using ":mksession", also store a command to reset all options to
5687    their default value, before setting the options that are not at their
5688    default value.
56897   With ":mksession" also store the tag stack and jump history. (Michal
5690    Malecki)
56917   Persistent variables: "p:var"; stored in viminfo file and sessions files.
5692
5693
5694Options:
56957   ":with option=value | command": temporarily set an option value and
5696    restore it after the command has executed.
56978   Make "old" number options that really give a number of effects into string
5698    options that are a comma separated list.  The old number values should
5699    also be supported.
57008   Add commands to save and restore an option, which also preserves the flag
5701    that marks if the option was set.  Useful to keep the effect of setting
5702    'compatible' after ":syntax on" has been used.
57037   There is 'titleold', why is there no 'iconold'? (Chazelas)
5704
5705
5706External commands:
57078   When filtering text, redirect stderr so that it can't mess up the screen
5708    and Vim doesn't need to redraw it.  Also for ":r !cmd".
57094   Set separate shell for ":sh", piping "range!filter", reading text "r !ls"
5710    and writing text "w !wc". (Deutsche)  Allow arguments for fast start (e.g.
5711    -f).
57124   Allow direct execution, without using a shell.
57134   Run an external command in the background.  But how about I/O in the GUI?
5714    Careful: don't turn Vim into a shell!
57154   Add feature to disable using a shell or external commands.
5716
5717
5718Multiple Windows:
57197   "vim -oO file ..." use both horizontal and vertical splits.
57208   Add CTRL-W T: go to the top window in the column of the current window.
5721    And CTRL-W B: go to bottom window.
57227   Use CTRL-W <Tab>, like alt-tab, to switch between buffers.  Repeat <Tab>
5723    to select another buffer (only loaded ones?), <BS> to go back, <Enter> to
5724    select buffer, <Esc> to go back to original buffer.
57257   Make it possible to edit a new buffer in the preview window.  A script can
5726    then fill it with something.  ":popen"?
57277   Add a 'tool' window: behaves like a preview window but there can be
5728    several.  Don't count it in only_one_window(). (Alexei Alexandrov)
57296   Add an option to resize the shell when splitting and/or closing a window.
5730    ":vsp" would make the shell wider by as many columns as needed for the new
5731    window.  Specify a maximum size (or use the screen size).  ":close" would
5732    shrink the shell by as many columns as come available. (Demirel)
57337   When starting Vim several times, instantiate a Vim server, that allows
5734    communication between the different Vims.  Feels like one Vim running with
5735    multiple top-level windows.  Esp. useful when Vim is started from an IDE
5736    too.  Requires some form of inter process communication.
5737-   Support a connection to an external viewer.  Could call the viewer
5738    automatically after some seconds of non-activity, or with a command.
5739    Allow some way of reporting scrolling and cursor positioning in the viewer
5740    to Vim, so that the link between the viewed and edited text can be made.
5741
5742
5743Marks:
57448   Add ten marks for last changed files: ':0, ':1, etc.  One mark per file.
57458   When cursor is first moved because of scrolling, set a mark at this
5746    position.  (Rimon Barr)  Use '-.
57478   Add a command to jump to a mark and make the motion inclusive.  g'm and g`m?
57488   The '" mark is set to the first line, even when doing ":next" a few times.
5749    Only set the '" mark when the cursor was really moved in a file.
57508   Make `` and '', which would position the new cursor position in the middle
5751    of the window, restore the old topline (or relative position) from when
5752    the mark was set.
57537   Make a list of file marks in a separate window.  For listing all buffers,
5754    matching tags, errors, etc.  Normal commands to move around.  Add commands
5755    to jump to the mark (in current window or new window).  Start it with
5756    ":browse marks"?
57576   Add a menu that lists the Marks like ":marks". (Amerige)
57587   For ":jumps", ":tags" and ":marks", for not loaded buffers, remember the
5759    text at the mark.  Highlight the column with the mark.
57607   Highlight each mark in some way (With "Mark" highlight group).
5761    Or display marks in a separate column, like 'number' does.
57627   Use d"m to delete rectangular area from cursor to mark m (like Vile's \m
5763    command).
57647   Try to keep marks in the same position when:
5765    - replacing with a line break, like in ":s/pat/^M/", move marks after the
5766      line break column to the next line. (Acevedo)
5767    - inserting/deleting characters in a line.
57685   Include marks for start/end of the current word and section.  Useful in
5769    mappings.
57706   Add "unnamed mark" feature: Like marks for the ":g" command, but place and
5771    unplace them with commands before doing something with the lines.
5772    Highlight the marked lines somehow.
5773
5774
5775Digraphs:
57767   Make "ga" show the keymap for a character, if it exists.
5777    Also show the code of the character after conversion to 'fileencoding'.
5778-   Use digraph table to tell Vim about the collating sequence of special
5779    characters?
57808   Add command to remove one or more (all) digraphs. (Brown)
57817   Support different sets of digraphs (depending on the character set?).  At
5782    least Latin1/Unicode, Latin-2, MS-DOS (esp. for Win32).
5783
5784
5785Writing files:
5786-   In vim_rename(), should lock "from" file when deleting "to" file for
5787    systems other than Amiga.  Avoids problems with unexpected longname to
5788    shortname conversion.
57898   write mch_isdevice() for Amiga, Mac, VMS, etc.
57908   When appending to a file, Vim should also make a backup and a 'patchmode'
5791    file.
57928   'backupskip' doesn't write a backup file at all, a bit dangerous for some
5793    applications.  Add 'backupelsewhere' to write a backup file in another
5794    directory?  Or add a flag to 'backupdir'?
57956   Add an option to write a new, numbered, backup file each time.  Like
5796    'patchmode', e.g., 'backupmode'.
57976   Make it possible to write 'patchmode' files to a different directory.
5798    E.g., ":set patchmode=~/backups/*.orig". (Thomas)
57996   Add an option to prepend something to the backup file name.  E.g., "#".
5800    Or maybe allow a function to modify the backup file name?
58018   Only make a backup when overwriting a file for the first time.  Avoids
5802    losing the original when writing twice. (Slootman)
58037   On non-Unix machines, also overwrite the original file in some situations
5804    (file system full, it's a link on an NFS partition).
58057   When editing a file, check that it has been changed outside of Vim more
5806    often, not only when writing over it.  E.g., at the time the swap file is
5807    flushed.  Or every ten seconds or so (use the time of day, check it before
5808    waiting for a character to be typed).
58098   When a file was changed since editing started, show this in the status
5810    line of the window, like "[time]".
5811    Make it easier to reload all outdated files that don't have changes.
5812    Automatic and/or with a command.
5813
5814
5815Substitute:
58168   Substitute with hex/unicode number "\%xff" and "\%uabcd".  Just like
5817    "\%uabcd" in search pattern.
58188   Make it easier to replace in all files in the argument list.  E.g.:
5819    ":argsub/oldword/newword/".  Works like ":argdo %s/oldword/newword/g|w".
5820-   :s///p prints the line after a substitution.
5821-   With :s///c replace \&, ~, etc. when showing the replacement pattern.
58228   With :s///c allow scrolling horizontally when 'nowrap' is effective.
5823    Also allow a count before the scrolling keys.
5824-   Add number option to ":s//2": replace second occurrence of string?  Or:
5825    :s///N substitutes N times.
5826-   Add answers to ":substitute" with 'c' flag, used in a ":global", e.g.:
5827    ":g/pat1/s/pat2/pat3/cg": 'A' do all remaining replacements, 'Q' don't do
5828    any replacements, 'u' undo last substitution.
58297   Substitute in a block of text.  Use {line}.{column} notation in an Ex
5830    range, e.g.: ":1.3,$.5s" means to substitute from line 1 column 3 to the
5831    last line column 5.
58325   Add commands to bookmark lines, display bookmarks, remove bookmarks,
5833    operate on lines with bookmarks, etc.  Like ":global" but with the
5834    possibility to keep the bookmarks and use them with several commands.
5835    (Stanislav Sitar)
5836
5837
5838Mouse support:
58398   Add 'o' flag to 'mouse'?
58407   Be able to set a 'mouseshape' for the popup menu.
58418   Add 'mouse' flag, which sets a behavior like Visual mode, but automatic
5842    yanking at the button-up event.  Or like Select mode, but typing gets you
5843    out of Select mode, instead of replacing the text. (Bhaskar)
5844-   Implement mouse support for the Amiga console.
5845-   Using right mouse button to extend a blockwise selection should attach to
5846    the nearest corner of the rectangle (four possible corners).
5847-   Precede mouse click by a number to simulate double clicks?!?
5848-   When mouse click after 'r' command, get character that was pointed to.
5849
5850
5851Argument list:
58526   Add command to put all filenames from the tag files in the argument list.
5853    When given an argument, only use the files where that argument matches
5854    (like `grep -l ident`) and jump to the first match.
58556   Add command to form an args list from all the buffers?
5856
5857
5858Registers:
58598   Don't display empty registers with ":display". (Etienne)
58608   Add put command that overwrites existing text.  Should also work for
5861    blocks.  Useful to move text around in a table.  Works like using "R ^R r"
5862    for every line.
5863-   When appending to a register, also report the total resulting number of
5864    lines.  Or just say "99 more lines yanked", add the "more".
5865-   When inserting a register in Insert mode with CTRL-R, don't insert comment
5866    leader when line wraps?
5867-   The ":@r" commands should take a range and execute the register for each
5868    line in the range.
5869-   Add "P" command to insert contents of unnamed register, move selected text
5870	to position of previous deleted (to swap foo and bar in " + foo")
58718   Should be able to yank and delete into the "/ register.
5872    How to take care of the flags (offset, magic)?
5873
5874
5875Debug mode:
58768   Add breakpoints for setting an option
58778   Add breakpoints for assigning to a variable.
58787   Store the history from debug mode in viminfo.
58797   Make the debug mode history available with histget() et al.
5880
5881Various improvements:
58827   Add plugins for formatting?  Should be able to make a choice depending on
5883    the language of a file (English/Korean/Japanese/etc.).
5884    Setting the 'langformat' option to "chinese" would load the
5885    "format/chinese.vim" plugin.
5886    The plugin would set 'formatexpr' and define the function being called.
5887    Edward L. Fox explains how it should be done for most Asian languages.
5888    (2005 Nov 24)
5889    Alternative: patch for utf-8 line breaking. (Yongwei Wu, 2008 Feb 23)
58907   [t to move to previous xml/html tag (like "vatov"), ]t to move to next
5891    ("vatv").
58927   [< to move to previous xml/html tag, e.g., previous <li>. ]< to move to
5893    next <li>, ]< to next </li>, [< to previous </li>.
58948   Add ":rename" command: rename the file of the current buffer and rename
5895    the buffer.  Buffer may be modified.
58967   Instead of filtering errors with a shell script it should be possible to
5897    do this with Vim script.  A function that filters the raw text that comes
5898    from the 'makeprg'?
5899-   Add %b to 'errorformat': buffer number. (Yegappan Lakshmanan / Suresh
5900    Govindachar)
59017   Allow a window not to have a statusline.  Makes it possible to use a
5902    window as a buffer-tab selection.
59038   Allow non-active windows to have a different statusline. (Yakov Lerner)
59047   Add an invisible buffer which can be edited.  For use in scripts that want
5905    to manipulate text without changing the window layout.
59068   Add a command to revert to the saved version of file; undo or redo until
5907    all changes are gone.
59086   "vim -q -" should read the list of errors from stdin. (Gautam Mudunuri)
59098   Add "--remote-fail": When contacting the server fails, exit Vim.
5910    Add "--remote-self": When contacting the server fails, do it in this Vim.
5911    Overrules the default of "--remote-send" to fail and "--remote" to do it
5912    in this Vim.
59138   When Vim was started without a server, make it possible to start one, as
5914    if the "--servername" argument was given.  ":startserver <name>"?
59158   No address range can be used before the command modifiers.  This makes
5916    them difficult to use in a menu for Visual mode.  Accept the range and
5917    have it apply to the following command.
59188   Add the possibility to set 'fileformats' to force a format and strip other
5919    CR characters.  For example, for "dos" files remove CR characters at the
5920    end of the line, so that a file with mixed line endings is cleaned up.
5921    To just not display the CR characters: Add a flag to 'display'?
59227   Some compilers give error messages in which the file name does not have a
5923    path.  Be able to specify that 'path' is used for these files.
59247   Xterm sends <Esc>O3F for <M-End>.  Similarly for other <M-Home>, <M-Left>,
5925    etc.  Combinations of Alt, Ctrl and Shift are also possible.  Recognize
5926    these to avoid inserting the raw byte sequence, handle like the key
5927    without modifier (unless mapped).
59286   Add "gG": like what "gj" is to "j": go to the N'th window line.
59298   Add command like ":normal" that accepts <Key> notation like ":map".
59309   Support ACLs on more systems.
59317   Add ModeMsgVisual, ModeMsgInsert, etc. so that each mode message can be
5932    highlighted differently.
59337   Add a message area for the user.  Set some option to reserve space (above
5934    the command line?).  Use an ":echouser" command to display the message
5935    (truncated to fit in the space).
59367   Add %s to 'keywordprg': replace with word under the cursor. (Zellner)
59378   Support printing on Unix.  Can use "lpansi.c" as an example. (Bookout)
59388   Add put command that replaces the text under it.  Esp. for blockwise
5939    Visual mode.
59407   Enhance termresponse stuff: Add t_CV(?): pattern of term response, use
5941    regexp: "\e\[[>?][0-9;]*c", but only check just after sending t_RV.
59427   Add "g|" command: move to N'th column from the left margin (after wrapping
5943    and applying 'leftcol').  Works as "|" like what "g0" is to "0".
59447   Support setting 'equalprg' to a user function name.
59457   Highlight the characters after the end-of-line differently.
59467   When 'whichwrap' contains "l", "$dl" should join lines?
59478   Add an argument to configure to use $CFLAGS and not modify it? (Mooney)
59488   Enabling features is a mix of configure arguments and defines in
5949    feature.h.  How to make this consistent?  Feature.h is required for
5950    non-unix systems.  Perhaps let configure define CONF_XXX, and use #ifdef
5951    CONF_XXX in feature.h?  Then what should min-features and max-features do?
59528   Add "g^E" and "g^Y", to scroll a screen-full line up and down.
59538   Add ":confirm" handling in open_exfile(), for when file already exists.
59548   When quitting with changed files, make the dialog list the changed file
5955    and allow "write all", "discard all", "write some".  The last one would
5956    then ask "write" or "discard" for each changed file.  Patch in HierAssist
5957    does something like this. (Shah)
59587   Use growarray for replace stack.
59597   Have a look at viH (Hellenic or Greek version of Vim).  But a solution
5960    outside of Vim might be satisfactory (Haritsis).
59613   Make "2d%" work like "d%d%" instead of "d2%"?
59627   "g CTRL-O" jumps back to last used buffer.	Skip CTRL-O jumps in the same
5963    buffer.  Make jumplist remember the last ten accessed buffers?
59647   Make it possible to set the size of the jumplist (also to a smaller number
5965    than the default). (Nikolai Weibull)
5966-   Add code to disable the CAPS key when going from Insert to Normal mode.
5967-   Set date/protection/etc. of the patchfile the same as the original file.
5968-   Use growarray for termcodes[] in term.c
5969-   Add <window-99>, like <cword> but use filename of 99'th window.
59707   Add a way to change an operator to always work characterwise-inclusive
5971    (like "v" makes the operator characterwise-exclusive).  "x" could be used.
5972-   Make a set of operations on list of names: expand wildcards, replace home
5973    dir, append a string, delete a string, etc.
5974-   Remove using mktemp() and use tmpname() only?  Ctags does this.
5975-   When replacing environment variables, and there is one that is not set,
5976    turn it into an empty string?  Only when expanding options? (Hiebert)
5977-   Option to set command to be executed instead of producing a beep (e.g. to
5978    call "play newbeep.au").
5979-   Add option to show the current function name in the status line.  More or
5980    less what you find with "[[k", like how 'cindent' recognizes a function.
5981    (Bhatt).
5982-   "[r" and "]r": like "p" and "P", but replace instead of insert (esp. for
5983    blockwise registers).
5984-   Add 'timecheck' option, on by default.  Makes it possible to switch off the
5985    timestamp warning and question. (Dodt).
5986-   Add an option to set the time after which Vim should check the timestamps
5987    of the files.  Only check when an event occurs (e.g., character typed,
5988    mouse moved).  Useful for non-GUI versions where keyboard focus isn't
5989    noticeable.
5990-   Make 'smartcase' work even though 'ic' isn't set (Webb).
59917   When formatting text, allow to break the line at a number of characters.
5992    Use an option for this: 'breakchars'?  Useful for formatting Fortran code.
5993-   Add flag to 'formatoptions' to be able to format book-style paragraphs
5994    (first line of paragraph has larger indent, no empty lines between
5995    paragraphs).  Complements the '2' flag.  Use '>' flag when larger indent
5996    starts a new paragraph, use '<' flag when smaller indent starts a new
5997    paragraph.	Both start a new paragraph on any indent change.
59988   The 'a' flag in 'formatoptions' is too dangerous.  In some way only do
5999    auto-formatting in specific regions, e.g. defined by syntax highlighting.
60008   Allow using a trailing space to signal a paragraph that continues on the
6001    next line (MIME text/plain; format=flowed, RFC 2646).  Can be used for
6002    continuous formatting.  Could use 'autoformat' option, which specifies a
6003    regexp which triggers auto-formatting (for one line).
6004    ":set autoformat=\\s$".
6005-   Be able to redefine where a sentence stops.  Use a regexp pattern?
6006-   Support multibyte characters for sentences.  Example from Ben Peterson.
60077   Add command "g)" to go to the end of a sentence, "g(" to go back to the
6008    end of a sentence. (Servatius Brandt)
6009-   Be able to redefine where a paragraph starts.  For "[[" where the '{' is
6010    not in column 1.
60116   Add ":cdprev": go back to the previous directory.  Need to remember a
6012    stack of previous directories.  We also need ":cdnext".
60137   Should ":cd" for MS-DOS go to $HOME, when it's defined?
6014-   Make "gq<CR>" work on the last line in the file.  Maybe for every operator?
6015-   Add more redirecting of Ex commands:
6016	:redir #>  bufname
6017	:redir #>> bufname   (append)
6018-   Give error message when starting :redir: twice or using END when no
6019    redirection was active.
6020-   Setting of options, specifically for a buffer or window, with
6021    ":set window.option" or ":set buffer.option=val".  Or use ":buffer.set".
6022    Also: "buffer.map <F1> quit".
60236   Would it be possible to change the color of the cursor in the Win32
6024    console?  (Klaus Hast)
6025-   Add :delcr command:
6026			    *:delcr*
6027     :[range]delcr[!]	Check [range] lines (default: whole buffer) for lines
6028			ending in <CR>.  If all lines end in <CR>, or [!] is
6029			used, remove the <CR> at the end of lines in [range].
6030			A CTRL-Z at the end of the file is removed.  If
6031			[range] is omitted, or it is the whole file, and all
6032			lines end in <CR> 'textmode' is set.
6033-   Should integrate addstar() and file_pat_to_reg_pat().
6034-   When working over a serial line with 7 bit characters, remove meta
6035    characters from 'isprint'.
6036-   Use fchdir() in init_homedir(), like in FullName().
6037-   In win_update(), when the GUI is active, always use the scrolling area.
6038    Avoid that the last status line is deleted and needs to be redrawn.
6039-   That "cTx" fails when the cursor is just after 'x' is Vi compatible, but
6040    may not be what you expect.  Add a flag in 'cpoptions' for this?  More
6041    general: Add an option to allow "c" to work with a null motion.
6042-   Give better error messages by using errno (strerror()).
6043-   Give "Usage:" error message when command used with wrong arguments (like
6044    Nvi).
6045-   Make 'restorescreen' option also work for xterm (and others), replaces the
6046    SAVE_XTERM_SCREEN define.
60477   Support for ":winpos" In xterm: report the current window position.
6048-   Give warning message when using ":set t_xx=asdf" for a termcap code that
6049    Vim doesn't know about.  Add flag in 'shortmess'?
60506   Add ":che <file>", list all the include paths which lead to this file.
6051-   For a commandline that has several commands (:s, :d, etc.) summarize the
6052    changes all together instead of for each command (e.g. for the rot13
6053    macro).
6054-   Add command like "[I" that also shows the tree of included files.
6055-   ":set sm^L" results in ":set s", because short names of options are also
6056    expanded.  Is there a better way to do this?
6057-   Add ":@!" command, to ":@" like what ":source!" is to ":source".
60588   Add ":@:!": repeat last command with forceit set.
6059-   Add 't_normal': Used whenever t_me, t_se, t_ue or t_Zr is empty.
6060-   ":cab map test ^V| je", ":cunab map" doesn't work.	This is vi compatible!
6061-   CTRL-W CTRL-E and CTRL-W CTRL-Y should move the current window up or down
6062    if it is not the first or last window.
6063-   Include-file-search commands should look in the loaded buffer of a file (if
6064    there is one) instead of the file itself.
60657   Change 'nrformats' to include the leader for each format.  Example:
6066	nrformats=hex:$,binary:b,octal:0
6067    Add setting of 'nrformats' to syntax files.
6068-   'path' can become very long, don't use NameBuff for expansion.
6069-   When unhiding a hidden buffer, put the same line at top of the window as
6070    the one before hiding it.  Or: keep the same relative cursor position (so
6071    many percent down the windows).
6072-   Make it possible for the 'showbreak' to be displayed at the end of the
6073    line.  Use a comma to separate the part at the end and the start of the
6074    line?  Highlight the linebreak characters, add flag in 'highlight'.
6075    Make 'showbreak' local to a window.
6076-   Some string options should be expanded if they have wildcards, e.g.
6077    'dictionary' when it is "*.h".
6078-   Use a specific type for number and boolean options, making it possible to
6079    change it for specific machines (e.g. when a long is 64 bit).
6080-   Add option for <Insert> in replace mode going to normal mode. (Nugent)
6081-   Add a next/previous possibility to "[^I" and friends.
6082-   Add possibility to change the HOME directory.  Use the directory from the
6083    passwd file? (Antwerpen)
60848   Add commands to push and pop all or individual options. ":setpush tw",
6085    ":setpop tw", ":setpush all".  Maybe pushing/popping all options is
6086    sufficient.  ":setflush" resets the option stack?
6087    How to handle an aborted mapping?  Remember position in tag stack when
6088    mapping starts, restore it when an error aborts the mapping?
6089-   Change ":fixdel" into option 'fixdel', t_del will be adjusted each time
6090    t_bs is set? (Webb)
6091-   "gc": goto character, move absolute character positions forward, also
6092    counting newlines.  "gC" goes backwards (Weigert).
6093-   When doing CTRL-^, redraw buffer with the same topline. (Demirel)  Store
6094    cursor row and window height to redraw cursor at same percentage of window
6095    (Webb).
6096-   Besides remembering the last used line number of a file, also remember the
6097    column.  Use it with CTRL-^ et. al.
6098-   Check for non-digits when setting a number option (careful when entering
6099    hex codes like 0xff).
6100-   Add option to make "." redo the "@r" command, instead of the last command
6101    executed by it.  Also to make "." redo the whole mapping.  Basically: redo
6102    the last TYPED command.
6103-   Support URL links for ^X^F in Insert mode, like for "gf".
6104-   Support %name% expansion for "gf" on Windows.
6105-   Make "gf" work on "file://c:/path/name".  "file:/c:/" and "file:///c:/"
6106    should also work?
6107-   Add 'urlpath', used like 'path' for when "gf" used on a URL?
61088   When using "gf" on an absolute file name, while editing a remote file
6109    (starts with scp:// or http://) should prepend the method and machine
6110    name.
6111-   When finding a URL or file name, and it doesn't exist, try removing a
6112    trailing '.'.
6113-   Add ":path" command modifier.  Should work for every command that takes a
6114    file name argument, to search for the file name in 'path'.	Use
6115    find_file_in_path().
6116-   Highlight control characters on the screen: Shows the difference between
6117    CTRL-X and "^" followed by "X" (Colon).
6118-   Integrate parsing of cmdline command and parsing for expansion.
6119-   Create a program that can translate a .swp file from any machine into a
6120    form usable by Vim on the current machine.
6121-   Add ":noro" command: Reset 'ro' flag for all buffers, except ones that have
6122    a readonly file.  ":noro!" will reset all 'ro' flags.
6123-   Add a variant of CTRL-V that stops interpretation of more than one
6124    character.	For entering mappings on the command line where a key contains
6125    several special characters, e.g. a trailing newline.
6126-   Make '2' option in 'formatoptions' also work inside comments.
6127-   Add 's' flag to 'formatoptions': Do not break when inside a string. (Dodt)
6128-   When window size changed (with the mouse) and made too small, set it back
6129    to the minimal size.
6130-   Add "]>" and "[<", shift comment at end of line (command;  /* comment */).
6131-   Should not call cursorcmd() for each vgetc() in getcmdline().
6132-   ":split file1 file2" adds two more windows (Webb).
6133-   Don't give message "Incomplete last line" when editing binary file.
6134-   Add ":a", ":i" for preloading of named buffers.
6135-   When entering text, keep other windows on same buffer updated (when a line
6136    entered)?
6137-   Check out how screen does output optimizing.  Apparently this is possible
6138    as an output filter.
6139-   In dosub() regexec is called twice for the same line.  Try to avoid this.
6140-   Window updating from memline.c: insert/delete/replace line.
6141-   Optimize ml_append() for speed, esp. for reading a file.
6142-   V..c should keep indent when 'ai' is set, just like [count]cc.
6143-   Updatescript() can be done faster with a string instead of a char.
6144-   Screen updating is inefficient with CTRL-F and CTRL-B when there are long
6145    lines.
6146-   Uppercase characters in Ex commands can be made lowercase?
61478   Add option to show characters in text not as "|A" but as decimal ("^129"),
6148    hex ("\x81") or octal ("\201") or meta (M-x).  Nvi has the 'octal' option
6149    to switch from hex to octal.  Vile can show unprintable characters in hex
6150    or in octal.
61517   Tighter integration with xxd to edit binary files.  Make it more
6152    easy/obvious to use.  Command line argument?
6153-   How does vi detect whether a filter has messed up the screen?  Check source.
6154    After ":w !command" a wait_return?
6155-   Improve screen updating code for doput() (use s_ins()).
6156-   With 'p' command on last line: scroll screen up (also for terminals without
6157    insert line command).
6158-   Use insert/delete char when terminal supports it.
6159-   Optimize screen redraw for slow terminals.
6160-   Optimize "dw" for long row of spaces (say, 30000).
6161-   Add "-d null" for editing from a script file without displaying.
6162-   In Insert mode: Remember the characters that were removed with backspace
6163    and re-insert them one at a time with <key1>, all together with <key2>.
6164-   Amiga: Add possibility to set a keymap.  The code in amiga.c does not work
6165    yet.
6166-   Implement 'redraw' option.
6167-   Add special code to 'sections' option to define something else but '{' or
6168    '}' as the start of a section (e.g. one shiftwidth to the right).
61697   Allow using Vim in a pipe: "ls | vim -u xxx.vim - | yyy".  Only needs
6170    implementing ":w" to stdout in the buffer that was read from stdin.
6171    Perhaps writing to stdout will work, since stderr is used for the terminal
6172    I/O.
61738   Allow opening an unnamed buffer with ":e !cmd" and ":sp !cmd".  Vile can
6174    do it.
6175-   Add commands like ]] and [[ that do not include the line jumped to.
6176-   When :unab without matching "from" part and several matching "to" parts,
6177    delete the entry that was used last, instead of the first in the list.
6178-   Add text justification option.
6179-   Set boolean options on/off with ":set paste=off", ":set paste=on".
6180-   After "inv"ing an option show the value: ":set invpaste" gives "paste is
6181    off".
6182-   Check handling of CTRL-V and '\' for ":" commands that do not have TRLBAR.
6183-   When a file cannot be opened but does exist, give error message.
6184-   Amiga: When 'r' protection bit is not set, file can still be opened but
6185    gives read errors.  Check protection before opening.
6186-   When writing check for file exists but no permission, "Permission denied".
6187-   If file does not exist, check if directory exists.
6188-   Settings edit mode: make file with ":set opt=xx", edit it, parse it as ex
6189    commands.
6190-   ":set -w all": list one option per line.
6191-   Amiga: test for 'w' flag when reading a file.
6192-   :table command (Webb)
6193-   Add new operator: clear, make area white (replace with spaces): "g ".
6194-   Add command to ":read" a file at a certain column (blockwise read?).
6195-   Add sort of replace mode where case is taken from the old text (Goldfarb).
6196-   Allow multiple arguments for ":read", read all the files.
6197-   Support for tabs in specific columns: ":set tabcol=8,20,34,56" (Demirel).
6198-   Add 'searchdir' option: Directories to search for file name being edited
6199    (Demirel).
6200-   Modifier for the put command: Change to linewise, charwise, blockwise, etc.
6201-   Add commands for saving and restoring options ":set save" "set restore",
6202    for use in macro's and the like.
6203-   Keep output from listings in a window, so you can have a look at it while
6204    working in another window.  Put cmdline in a separate window?
6205-   Add possibility to put output of Ex commands in a buffer or file, e.g. for
6206    ":set all".  ":r :set all"?
6207-   When the 'equalalways' option is set, creating a new window should not
6208    result in windows to become bigger.  Deleting a window should not result in
6209    a window to become smaller (Webb).
6210-   When resizing the whole Vim window, the windows inside should be resized
6211    proportionally (Webb).
6212-   Include options directly in option table, no indirect pointers.  Use
6213    mkopttab to make option table?
6214-   When doing ":w dir", where "dir" is a directory name, write the current
6215    file into that directory, with the current file name (without the path)?
6216-   Support for 'dictionary's that are sorted, makes access a lot faster
6217    (Haritsis).
6218-   Add "^Vrx" on the command line, replace with contents of register x.  Used
6219    instead of CTRL-R to make repeating possible. (Marinichev)
6220-   Add "^Vb" on the command line, replace with word before or under the
6221    cursor?
6222-   Support mapping for replace mode and "r" command (Vi doesn't do this)?
62238   Sorting of filenames for completion is wrong on systems that ignore
6224    case of filenames.  Add 'ignorefncase' option.  When set, case in
6225    filenames is ignored for sorting them. Patch by Mike Williams:
6226    ~/vim/patches/ignorefncase.  Also change what matches?  Or use another
6227    option name.
62288   Should be able to compile Vim in another directory, with $(srcdir) set to
6229    where the sources are. Add $(srcdir) in the Makefile in a lot of places.
6230    (Netherton)
62316   Make it configurable when "J" inserts a space or not.  Should not add a
6232    space after "(", for example.
62335   When inserting spaces after the end-of-line for 'virtualedit', use tabs
6234    when the user wants this (e.g., add a "tab" field to 'virtualedit').
6235    (Servatius Brandt)
6236
6237
6238From Elvis:
6239-   Use "instman.sh" to install manpages?
6240-   Add ":alias" command.
6241-   Search patterns:
6242      \@	match word under cursor.
6243    but do:
6244      \@w	match the word under the cursor?
6245      \@W	match the WORD under the cursor?
62468   ":window" command:
6247    :win +	next window (up)
6248    :win ++	idem, wrapping
6249    :win -	previous window (down)
6250    :win --	idem, wrapping
6251    :win nr	to window number "nr"
6252    :win name	to window editing buffer "name"
62537   ":cc" compiles a single file (default: current one).  'ccprg'   option is
6254    program to use with ":cc".  Use ":compile" instead of ":cc"?
6255
6256
6257From xvi:
6258-   CTRL-_ : swap 8th bit of character.
6259-   Add egrep-like regex type, like xvi (Ned Konz) or Perl (Emmanuel Mogenet)
6260
6261
6262From vile:
6263-   When horizontal scrolling, use '>' for lines continuing right of a window.
6264-   Support putting .swp files in /tmp: Command in rc.local to move .swp files
6265    from /tmp to some directory before deleting files.
6266
6267
6268Far future and "big" extensions:
6269-   Instead of using a Makefile and autoconf, use a simple shell script to
6270    find the C compiler and do everything with C code.  Translate something
6271    like an Aap recipe and configure.ac to C.  Avoids depending on Python,
6272    thus will work everywhere.  With batch file to find the C compiler it
6273    would also work on MS-Windows.
6274-   Make it easy to setup Vim for groups of users: novice vi users, novice
6275    Vim users, C programmers, xterm users, GUI users,...
6276-   Change layout of blocks in swap file: Text at the start, with '\n' in
6277    between lines (just load the file without changes, except for Mac).
6278    Indexes for lines are from the end of the block backwards.  It's the
6279    current layout mirrored.
6280-   Make it possible to edit a register, in a window, like a buffer.
6281-   Add stuff to syntax highlighting to change the text (upper-case keywords,
6282    set indent, define other highlighting, etc.).
6283-   Mode to keep C-code formatted all the time (sort of on-line indent).
6284-   Several top-level windows in one Vim session.  Be able to use a different
6285    font in each top-level window.
6286-   Allow editing above start and below end of buffer (flag in 'virtualedit').
6287-   Smart cut/paste: recognize words and adjust spaces before/after them.
6288-   Add open mode, use it when terminal has no cursor positioning.
6289-   Special "drawing mode": a line is drawn where the cursor is moved to.
6290    Backspace deletes along the line (from jvim).
6291-   Support for underlining (underscore-BS-char), bold (char-BS-char) and other
6292    standout modes switched on/off with , 'overstrike' option (Reiter).
6293-   Add vertical mode (Paul Jury, Demirel): "5vdw" deletes a word in five
6294    lines, "3vitextESC" will insert "text" in three lines, etc..
62954   Recognize l, #, p as 'flags' to EX commands:
6296    :g/RE/#l shall print lines with line numbers and in list format.
6297    :g/RE/dp shall print lines that are deleted.
6298    POSIX: Commands where flags shall apply to all lines written: list,
6299    number, open, print, substitute, visual, &, z.  For other commands, flags
6300    shall apply to the current line after the command completes.  Examples:
6301    :7,10j #l Join the lines 7-10 and print the result in list
6302-   Allow two or more users to edit the same file at the same time.  Changes
6303    are reflected in each Vim immediately.  Could work with local files but
6304    also over the internet.  See http://www.codingmonkeys.de/subethaedit/.
6305
6306vim:tw=78:sw=4:sts=4:ts=8:noet:ft=help:norl:
6307vim: set fo+=n :
6308