Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/vim73/doc/todo.txt
diff options
context:
space:
mode:
Diffstat (limited to 'vim73/doc/todo.txt')
-rw-r--r--vim73/doc/todo.txt4921
1 files changed, 4921 insertions, 0 deletions
diff --git a/vim73/doc/todo.txt b/vim73/doc/todo.txt
new file mode 100644
index 0000000..2277c41
--- /dev/null
+++ b/vim73/doc/todo.txt
@@ -0,0 +1,4921 @@
+*todo.txt* For Vim version 7.3. Last change: 2011 Jan 07
+
+
+ VIM REFERENCE MANUAL by Bram Moolenaar
+
+
+ TODO list for Vim *todo*
+
+This is a veeeery long list of known bugs, current work and desired
+improvements. To make it a little bit accessible, the items are grouped by
+subject. In the first column of the line a classification is used to be able
+to look for "the next thing to do":
+
+Priority classification:
+9 next point release
+8 next release
+7 as soon as possible
+6 soon
+5 should be included
+4 nice to have
+3 consider including
+2 maybe not
+1 probably not
+- unclassified
+
+ *votes-for-changes*
+See |develop.txt| for development plans. You can vote for which items should
+be worked on, but only if you sponsor Vim development. See |sponsor|.
+
+ *known-bugs*
+-------------------- Known bugs and current work -----------------------
+
+'cursorline' is displayed too short when there are concealed characters and
+'list' is set, 'listchars' at default value. (Dennis Preiser, 2010 Aug 15)
+
+When running external command with ":make", cursor line is redrawn on top of
+external output.
+
+Conceal: using Tab for cchar causes problems. Should reject it. (ZyX, 2010
+Aug 25)
+
+Problems with building after 7.3.050, -as-needed does not work for gcc 4.4.1?
+(Charles Campbell, 2010 Nov 7) Or is the problem that we should use -ltinfo,
+because nothing is used from ncurses?
+
+Syntax region with 'concealends' and a 'cchar' value, 'conceallevel' set to 2,
+only one of the two ends gets the cchar displayed. (Brett Stahlman, 2010 Aug
+21, Ben Fritz, 2010 Sep 14)
+
+Bug in repeating Visual "u". (Lawrence Kesteloot, 2010 Dec 20)
+
+Windows keys not set properly on Windows 7? (cncyber, 2010 Aug 26)
+
+This line hangs Vim, because of syntax HL:
+call append(line, "INFO ....12....18....24....30....36....42....48....54....60....66....72....78%$")
+
+Building the MingW version without clipboard but with multi-byte doesn't
+work. (Bill Lam, 2010 Sep 18)
+
+Bug: E685 error for func_unref(). (ZyX, 2010 Aug 5)
+
+Using ":break" or something else that stops executing commands inside a
+":finally" does not rethrow a previously uncaught exception. (ZyX, 2010 Oct
+15)
+
+Vim using lots of memory when joining lines. (John Little, 2010 Dec 3)
+
+On 64 bit MS-Windows "long" is only 32 bits, but we sometimes need to store a
+64 bits value. Change all number options to use nropt_T and define it to the
+right type.
+
+Patch to improve mf_hash, dynamic sizing. (Ivan Krasilnikov, 2010 Dec 17)
+Needs tests.
+
+string() can't parse back "inf" and "nan". Fix documentation or fix code?
+(ZyX, 2010 Aug 23)
+
+maparg() does not show the <script> flag. When temporarily changing a
+mapping, how to restore the script ID?
+
+Patch to fix \%V item in regexp. (Christian Brabandt, 2010 Nov 8)
+Update Nov 19. James Vega: still not right. Christian: it's difficult.
+
+Patch to add up to 99 match groups. (Christian Brabandt, 2010 Dec 22)
+Also add named groups: \%{name}(re) and \%{name}g
+
+Highlighting stops working after changing it many times. Script to reproduce
+it: Pablo Contreras, 2010 Oct 12 Windows XP and 7. Font is never freed?
+
+Loading autoload script even when usage is inside "if 0". (Christian Brabandt,
+2010 Dec 18)
+
+When 'cursorcolumn' is set locally to a window, ":new" opens a window with the
+same highlighting but 'cursorcolumn' is empty. (Tyru, 2010 Nov 15)
+
+In the sandbox it's not allowed to do many things, but it's possible to change
+or set variables. Add a way to prevent variables from being changed in the
+sandbox? E.g.: ":protect g:restore_settings".
+
+GTK: drawing a double-width combining character over single-width characters
+doesn't look right. (Dominique Pelle, 2010 Aug 8)
+
+GTK: tear-off menu does not work. (Kurt Sonnenmoser, 2010 Oct 25)
+
+Version of netbeans.c for use with MacVim. (Kazuki Sakamoto, 2010 Nov 18)
+
+7.3.014 changed how backslash at end of line works, but still get a NUL when
+there is one backslash. (Ray Frush, 2010 Nov 18) What does the original ex
+do?
+
+":find" completion does not escape space in directory name. (Isz, 2010 Nov 2)
+
+Searching mixed with Visual mode doesn't redraw properly. (James Vega, 2010 Nov
+22)
+
+Patch to support ":!start /b cmd". (Xaizek, 2010 Dec 22)
+
+Copy/paste between Vim and Google chrome doesn't work well for multi-byte
+characters. (Ben Haskell, 2010 Sep 17)
+When putting text in the cut buffer (when exiting) and conversion doesn't work
+properly, Prepend "ENC==={value of 'enc'}:" to the text and don't convert?
+Then it should at least work from Vim to Vim and in other applications it's
+clear why it doesn't work.
+
+Editing a file with a ^M with 'ff' set to "mac", opening a help file, then the
+^M is displayed as ^J sometimes. Getting 'ff' value from wrong window/buffer?
+
+Since patch 7.2.46 Yankring plugin has become very slow, eventually make Vim
+crash? (Raiwil, 2010 Nov 17)
+
+Patch to disallow fork() when __APPLE__ is defined. (Hisashi T Fujinaka, 2010
+Nov 25)
+
+GTK: Patch to fix menu popping down. (Hong Xu, 2010 Dec 4, Dec 5)
+
+Python: Adding line to buffer other than the current one doesn't work
+correctly. (Rozbujnik, 2010 Dec 19)
+
+Patch to add 'systemencoding', convert between 'encoding' and this for file
+names, shell commands and the like. (Kikuchan, 2010 Oct 14)
+Assume the system converts between the actual encoding of the filesystem to
+the system encoding (usually utf-8).
+
+Problem producing tags file when hebrew.frx is present. It has a BOM.
+Results in E670. (Tony Mechelynck, 2010 May 2)
+
+Patch to support sorting on floating point number. (Alex Jakushev, 2010 Oct
+30)
+
+Ruby: ":ruby print $buffer.number" returns zero.
+
+setpos() does not restore cursor position after :normal. (Tyru, 2010 Aug 11)
+
+7 The 'directory' option supports changing path separators to "%" to make
+ file names unique, also support this for 'backupdir'. (Mikolaj Machowski)
+ Patch by Christian Brabandt, 2010 Oct 21.
+
+getpos()/setpos() don't include curswant. getpos() could return a fifth
+element. setpos() could accept an optional fifth element.
+Patch by Christian Brabandt, 2010 Sep 6. Check that new argument is optional
+and that it's documented.
+
+With "tw=55 fo+=a" typing space before ) doesn't work well. (Scott Mcdermott,
+2010 Oct 24)
+
+Patch to add random number generator. (Hong Xu, 2010 Nov 8, update Nov 10)
+Alternative from Christian Brabandt. (2010 Sep 19)
+
+Messages in message.txt are highlighted as examples.
+
+When using cp850 the NBSP (0xff) is not drawn correctly. (Brett Stahlman, 2010
+Oct 22) 'isprint' is set to "@,161-255".
+
+Test 73 fails on MS-Windows when compiled with DJGPP and run twice. How to
+delete the Xfind directory? Add an rmdir() function, just like we have
+mkdir().
+
+":echo "\x85" =~# '[\u0085]'" returns 1 instead of 0. (ZyX, 2010 Oct 3)
+
+'cindent' not correct when 'list' is set. (Zdravi Korusef, 2010 Apr 15)
+
+When 'paste' is changed with 'pastetoggle', the ruler doesn't reflect this
+right away. (Samuel Ferencik, 2010 Dec 7)
+
+Windows installer: licence text should not use indent, causes bad word wrap.
+(Benjamin Fritz, 2010 Aug 16)
+
+Mac with X11: clipboard doesn't work properly. (Raf, 2010 Aug 16)
+
+Using CompilerSet doesn't record where an option was set from. E.g., in the
+gcc compiler plugin. (Gary Johnson, 2010 Dec 13)
+
+":helpgrep" does not put the cursor in the correct column when preceded by
+accented character. (Tony Mechelynck, 2010 Apr 15)
+
+Don't call check_restricted() for histadd(), setbufvar(), settabvar(),
+setwinvar().
+
+Echo starts in the wrong column:
+ while 1 | let s = input('A') | echo 'R' | endw
+(Boyko Bantchev, 2010 Aug 9)
+
+Patch for GVimExt to show an icon. (Dominik Riebeling, 2010 Nov 7)
+
+When writing a file > 2Gbyte, the reported number of bytes is negative.
+(Antonio Colombo, 2010 Dec 18)
+
+Patch: Let rare word highlighting overrule good word highlighting.
+(Jakson A. Aquino, 2010 Jul 30)
+
+Patch to make more characters work in dialogs. (Yankwei Jia, 2010 Aug 4)
+
+Patch for VisVim, pass file name to VimOpenFile. (Jiri Sedlak, 2010 Nov 12)
+
+When 'lines' is 25 and 'scrolloff' is 12, "j" scrolls zero or two lines
+instead of one. (Constantin Pan, 2010 Sep 10)
+
+Crash in setqflist(). (Benoit Mortgat, 2010 Nov 18)
+
+Patch to handle resizing when tab is opened, when at full size. (Yukihiro
+Nakadaira, 2010 Jan 6)
+
+Writing nested List and Dict in viminfo gives error message and can't be read
+back. (Yukihiro Nakadaira, 2010 Nov 13)
+
+Can 'undolevels' be a buffer-local option? Helps for making big changes in
+one file only, set 'ul' to -1 only for that buffer.
+Patch by Christian Brabandt, 2010 Dec 17. Needs test.
+
+Dos uninstal may delete vim.bat from the wrong directory (e.g., when someone
+makes his own wrapper). Add a magic string with the version number to the
+.bat file and check for it in the uninstaller. E.g.
+ # uninstall key: vim7.3*
+
+Problem with cursor in the wrong column. (SungHyun Nam, 2010 Mar 11)
+Additional info by Dominique Pelle. (also on 2010 Apr 10)
+
+CreateFile and CreateFileW are used without sharing, filewritable() fails when
+the file was already open (e.g. script is being sourced). Add FILE_SHARE_READ|
+FILE_SHARE_WRITE in mch_access()? (Phillippe Vaucher, 2010 Nov 2)
+
+Is ~/bin (literally) in $PATH supposed to work? (Paul, 2010 March 29)
+Looks like only bash can do it. (Yakov Lerner)
+
+8 Add an event like CursorHold that is triggered repeatedly, not just once
+ after typing something.
+Need for CursorHold that retriggers. Use a key that doesn't do anything, or a
+function that resets did_cursorhold.
+
+Cscope "cs add" stopped working somewhat before 7.2.438. (Gary Johnson, 2010
+Jun 29) Caused by 7.2.433?
+
+I often see pasted text (from Firefox, to Vim in xterm) appear twice.
+Also, Vim in xterm sometimes loses copy/paste ability (probably after running
+an external command).
+
+Jumplist doesn't work properly in Insert mode? (Jean Johner, 2010 Mar 20)
+
+Problem with transparent cmdline. Also: Terminal title is wrong with
+non-ASCII character. (Lily White, 2010 Mar 7)
+
+iconv() doesn't fail on an illegal character, as documented. (Yongwei Wu, 2009
+Nov 15, example Nov 26) Add argument to specify whether iconv() should fail
+or replace with a character and continue?
+
+Add local time at start of --startuptime output.
+Requires configure check for localtime().
+Use format year-month-day hr:min:sec.
+
+Shell not recognized properly if it ends in "csh -f". (James Vega, 2009 Nov 3)
+Find tail? Might have a / in argument. Find space? Might have space in
+path.
+
+":sort n" treats empty line as higher than zero. (Beeyawned, 2010 Oct 13)
+
+":function f(x) keepjumps" creates a function where every command is executed
+like it has ":keepjumps" before it.
+
+Coverity: ask someone to create new user: Dominique.
+Check if there are new reported defects: http://scan.coverity.com/rung2.html
+
+Patch to support :undo absolute jump to file save number. (Christian Brabandt,
+2010 Nov 5)
+
+Patch to use 'foldnextmax' also for "marker" foldmethod. (Arnaud Lacombe, 2011
+Jan 7)
+
+When setting 'undofile' while the file is already loaded, but unchanged, try
+to read the undo file. Requires computing a checksum of the text. (Andy
+Wokula)
+
+Bug with 'incsearch' going to wrong line. (Wolfram Kresse, 2009 Aug 17)
+Only with "vim -u NONE".
+
+Problem with editing file in binary mode. (Ingo Krabbe, 2009 Oct 8)
+
+Display error when 'tabline' that includes a file name with double-width
+characters. (2010 Aug 14, bootleq)
+
+Problem with stop directory in findfile(). (Adam Simpkins, 2009 Aug 26)
+
+Undo problem: line not removed as expected when using setline() from Insert
+mode. (Israel Chauca, 2010 May 13, more in second msg)
+Break undo when CTRL-R = changes the text? Or save more lines?
+
+Patch for static code analysis errors in riscOS. (Dominique Pelle, 2010 Dec 3)
+
+Change to C syntax folding to make it work much faster, but a bit less
+reliable. (Lech Lorens, 2009 Nov 9) Enable with an option?
+Most time is spent in in_id_list().
+
+Slow combination of folding and PHP syntax highlighting. Script to reproduce
+it. Caused by "syntax sync fromstart" in combination with patch 7.2.274.
+(Christian Brabandt, 2010 May 27)
+Generally, folding with 'foldmethod' set to "syntax" is slow. Do profiling to
+find out why.
+
+When completion inserts the first match, it may trigger the line to be folded.
+Disable updating folds while completion is active? (Peter Odding, 2010 Jun 9)
+
+In command line window ":close" doesn't work properly. (Tony Mechelynck, 2009
+Jun 1)
+
+Cannot use getchar() inside :normal and using an expression mapping. Is this
+supposed to work? (XyX, 2010 Sep 22)
+
+When using an expression mapping with a multi-byte character each byte is
+converted to a utf-8 character. (ZyX, 2011 Jan 4)
+Patch for possible solution. (Yukihiro Nakadaira, 2011 Jan 5)
+
+When a:base in 'completefunc' starts with a number it's passed as a number,
+not a string. (Sean Ma) Need to add flag to call_func_retlist() to force a
+string value.
+
+There is no command line completion for ":lmap".
+
+":e ~br<Tab>" does not complete to ":e /home/bram/". Would need to use
+getpwent() to find all the matches.
+
+Invalid read error in Farsi mode. (Dominique Pelle, 2009 Aug 2)
+
+For running gvim on an USB stick: avoid the OLE registration. Use a command
+line argument -noregister.
+
+When using an expression in 'statusline' leading white space sometimes goes
+missing (but not always). (ZyX, 2010 Nov 1)
+
+When a mapping exists both for insert mode and lang-insert mode, the last one
+doesn't work. (Tyru, 2010 May 6) Or is this intended?
+
+Still a problem with ":make" in the wrong directory. Caused by ":bufdo".
+(Ajit Thakkar, 2009 Jul 1) More information Jul 9, Jul 15.
+Caused by "doautoall syntaxset BufEnter *" in syntax/nosyntax.vim ?
+There also is a BufLeave/BufEnter aucmd to save/restore view.
+Does the patch to save/restore globaldir work?
+
+":bufdo normal gg" while 'hidden' is set leaves buffers without syntax
+highlighting. Don't disable Syntax autocommands then? Or add a flag/modifier
+to avoid changing 'eventignore'?
+
+Patch for displaying 0x200c and 0x200d. (Ali Gholami Rudi, 2009 May 6)
+Probably needs a bit of work.
+
+List of encoding aliases. (Takao Fujiware, 2009 Jul 18)
+Are they all OK? Update Jul 22.
+
+Win32: Improved Makefile for MSVC. (Leonardo Valeri Manera, 2010 Aug 18)
+
+Win32: Expanding 'path' runs into a maximum size limit. (bgold12, 2009 Nov 15)
+
+Win32: Patch for enabling quick edit mode in console. (Craig Barkhouse, 2010
+Sep 1)
+
+Putting a Visual block while 'visualedit' is "all" does not leave the cursor
+on the first character. (John Beckett, 2010 Aug 7)
+
+Setting 'tags' to "tagsdir/*" does not find "tagsdir/tags". (Steven K. Wong,
+2009 Jul 18)
+
+Patch to add farsi handling to arabic.c (Ali Gholami Rudi, 2009 May 2)
+Added test, updates, June 23.
+
+Patch to add "focusonly" to 'scrollopt', so that scrollbind also applies in
+window that doesn't have focus. (Jonathon Mah, 2009 Jan 12)
+Needs more work.
+
+Problem with <script> mappings (Andy Wokula, 2009 Mar 8)
+
+When starting Vim with "gvim -f -u non_existent_file > foo.txt" there are a
+few control characters in the output. (Dale Wiles, 2009 May 28)
+
+'cmdwinheight is only used in last window when 'winheight' is a large value.
+(Tony Mechelynck, 2009 Apr 15)
+
+Status line containing winnr() isn't updated when splitting the window (Clark
+J. Wang, 2009 Mar 31)
+
+When $VIMRUNTIME is set in .vimrc, need to reload lang files. Already done
+for GTK, how about others? (Ron Aaron, 2010 Apr 10)
+
+Patch for GTK buttons X1Mouse and X2Mouse. (Christian J. Robinson, 2010 Aug 9)
+
+Motif: Build on Ubuntu can't enter any text in dialog text fields.
+
+When 'ft' changes redraw custom status line.
+
+":tab split fname" doesn't set the alternate file in the original window,
+because win_valid() always returns FALSE. Below win_new_tabpage() in
+ex_docmd.c.
+
+Space before comma in function definition not allowed: "function x(a , b)"
+Give a more appropriate error message. Add a remark to the docs.
+
+string_convert() should be able to convert between utf-8 and utf-16le. Used
+for GTK clipboard. Avoid requirement for iconv.
+
+Now that colnr_T is int instead of unsigned, more type casts can be removed.
+
+'delcombine' does not work for the command line. (Tony Mechelynck, 2009 Jul
+20)
+
+Unwanted file name escaping: ":echo input('file:' , '', 'file')"
+And use file name completion on a file with spaces. (Frederic Hardy, 2009 Mar
+23)
+
+Don't load macmap.vim on startup, turn it into a plugin. (Ron Aaron,
+2009 Apr 7) Reminder Apr 14.
+
+Add "no_hlsearch" to winsaveview().
+
+Cursorline highlighting combines with Search ('hlsearch') but not with
+SpellBad. (Jim Karsten, 2009 Mar 18)
+
+When 'foldmethod' is "indent", using >> on a line just above a fold makes the
+cursor line folded. (Evan Laforge, 2009 Oct 17)
+
+When 'foldmethod' is "indent", adding an empty line below a fold and then
+indented text, creates a new fold instead of joining it with the previous one.
+(Evan Laforge, 2009 Oct 17)
+
+Bug: When reloading a buffer changed outside of Vim, BufRead autocommands
+are applied to the wrong buffer/window. (Ben Fritz, 2009 Apr 2, May 11)
+Ignore window options when not in the right window?
+Perhaps we need to use a hidden window for applying autocommands to a buffer
+that doesn't have a window.
+
+When using "ab foo bar" and mapping <Tab> to <Esc>, pressing <Tab> after foo
+doesn't trigger the abbreviation like <Esc> would. (Ramana Kumar, 2009 Sep 6)
+
+getbufvar() to get a window-local option value for a buffer that's not
+displayed in a window should return the value that's stored for that buffer.
+
+":he ctrl_u" can be auto-corrected to ":he ctrl-u".
+
+There should be a way after an abbreviation has expanded to go back to what
+was typed. CTRL-G h ? Would also undo last word or line break inserted
+perhaps. And undo CTRL-W. CTRL-G l would redo.
+
+Diff mode out of sync. (Gary Johnson, 2010 Aug 4)
+
+Support a 'systemencoding' option (for Unix). It specifies the encoding of
+file names. (Kikuchan, 2010 Oct 5). Useful on a latin1 or double-byte Asian
+system when 'encoding' is "utf-8".
+
+Win32: A --remote command that has a directory name starting with a ( doesn't
+work, the backslash is removed, assuming that it escapes the (. (Valery
+Kondakoff, 2009 May 13)
+
+Win32 GUI: Changing manifest helps for dpi changes (Joe Castro, 2009 Mar 27)
+
+Win32 GUI: last message from startup doesn't show up when there is an echoerr
+command. (Cyril Slobin, 2009 Mar 13)
+
+Win32: use different args for SearchPath()? (Yasuhiro Matsumoto, 2009 Jan 30)
+
+Win32: completion of file name ":e c:\!test" results in ":e c:\\!test", which
+does not work. (Nieko Maatjes, 2009 Jan 8, Ingo Karkat, 2009 Jan 22)
+
+opening/closing window causes other window with 'winfixheight' to change
+height. Also happens when there is another window in the frame, if it's not
+very high. (Yegappan Lakshmanan, 2010 Jul 22, Michael Peeters, 2010 Jul 22)
+
+Directory wrong in session file, caused by ":lcd" in BufEnter autocommand.
+(Felix Kater, 2009 Mar 3)
+
+Session file generates error upon loading, cause bu --remote-silent-tab.
+(7tommm (ytommm) 2010 Nov 24)
+
+Using ~ works OK on 'a' with composing char, but not on 0x0418 with composing
+char 0x0301. (Tony Mechelynck, 2009 Mar 4)
+
+A function on a dictionary is not profiled. (Zyx, 2010 Dec 25)
+
+Inconsistent: starting with $LANG set to es_ES.utf-8 gives Spanish
+messages, even though locale is not supported. But ":lang messages
+es_ES.utf-8" gives an error and doesn't switch messages. (Dominique Pelle,
+2009 Jan 26)
+
+When $HOME contains special characters, such as a comma, escape them when used
+in an option. (Michael Hordijk, 2009 May 5)
+Turn "esc" argument of expand_env_esc() into string of chars to be escaped.
+
+Should make 'ignorecase' global-local, so that it makes sense setting it from
+a modeline.
+
+Add cscope target to Makefile. (Tony Mechelynck, 2009 Jun 18, replies by
+Sergey Khorev)
+
+Consider making YankRing or something else that keeps a list of yanked text
+part of standard Vim. The "1 to "9 registers are not sufficient.
+
+netrw: dragging status line causes selection of entry. Should check row
+number to be below last visible line.
+
+After doing "su" $HOME can be the old user's home, thus ~root/file is not
+correct. Don't use it in the swap file.
+
+Completion for ":buf" doesn't work properly on Win32 when 'shellslash' is off.
+(Henrik Ohman, 2009, Jan 29)
+
+shellescape() depends on 'shellshash' for quoting. That doesn't work when
+'shellslash' is set but using cmd.exe. (Ben Fritz)
+Use a different option or let it depend on whether 'shell' looks like a
+unix-like shell?
+
+Allow patches to add something to version.c, like with an official patch, so
+that :version output shows which patches have been applied.
+
+Bug: in Ex mode (after "Q") backslash before line break, when yanked into a
+register and executed, results in <Nul>: instead of line break.
+(Konrad Schwarz, 2010 Apr 16)
+
+Have a look at patch for utf-8 line breaking. (Yongwei Wu, 2008 Mar 1, Mar 23)
+Now at: http://vimgadgets.sourceforge.net/liblinebreak/
+
+Greek sigma character should be lower cased depending on the context. Can we
+make this work? (Dominique Pelle, 2009 Sep 24)
+
+When changing 'encoding' convert all the swap file names, so that we can
+still delete them. Also convert all buffer file names?
+
+"gqip" in Insert mode has an off-by-one error, causing it to reflow text.
+(Raul Coronado, 2009 Nov 2)
+
+Update src/testdir/main.aap.
+
+"vim -c 'sniff connect'" hangs Vim. (Dominique Pelle, 2008 Dec 7)
+
+Something wrong with session that has "cd" commands and "badd", in such a way
+that Vim doesn't find the edited file in the buffer list, causing the
+ATTENTION message? (Tony Mechelynck, 2008 Dec 1)
+Also: swap files are in ~/tmp/ One has relative file name ".mozilla/...".
+
+Add v:motion_force. (Kana Natsuno, 2008 Dec 6)
+
+Runtime files for Clojure. (Toralf Wittner, 2008 Jun 25)
+
+MS-Windows: editing the first, empty buffer, 'ffs' set to "unix,dos", ":enew"
+doesn't set 'ff' to "unix". (Ben Fritz, 2008 Dec 5) Reusing the old buffer
+probably causes this.
+
+'scrollbind' is not respected when deleting lines or undo. (Milan Vancura,
+2009 Jan 16)
+
+Document that default font in Athena can be set with resources:
+ XtDefaultFont: "9x15"
+ XtDefaultFontSet: "9x15"
+(Richard Sherman, 2009 Apr 12)
+
+Having "Syntax" in 'eventignore' for :bufdo may cause problems, e.g. for
+":bufdo e" when buffers are open in windows. ex_listdo(eap) could set the
+option only for when jumping to another buffer, not when the command argument
+is executed.
+
+":pedit %" with a BufReadPre autocommand causes the cursor to move to the
+first line. (Ingo Karkat, 2008 Jul 1) Ian Kelling is working on this.
+
+Wildmenu not deleted: "gvim -u NONE", ":set nocp wildmenu cmdheight=3
+laststatus=2", CTRL-D CTRL-H CTRL-H CTRL-H. (A.Politz, 2008 April 1)
+Works OK with Vim in an xterm.
+
+Cursor line moves in other window when using CTRL-W J that doesn't change
+anything. (Dasn, 2009 Apr 7)
+
+On Unix "glob('does not exist~')" returns the string. Without the "~" it
+doesn't. (John Little, 2008 Nov 9)
+Shell expansion returns unexpanded string?
+Don't use shell when "~" is not at the start?
+
+":unlet $VAR" doesn't work.
+
+When using ":e ++enc=foo file" and the file is already loaded with
+'fileencoding' set to "bar", then do_ecmd() uses that buffer, even though the
+fileencoding differs. Reload the buffer in this situation? Need to check for
+the buffer to be unmodified.
+Unfinished patch by Ian Kelling, 2008 Jul 11. Followup Jul 14, need to have
+another look at it.
+
+Patch for c.vim and cpp.vim syntax files. (Chung-chieh Shan, 2008 Nov 26)
+
+c.vim: XXX in a comment is colored yellow, but not when it's after "#if 0".
+(Ilya Dogolazky, 2009 Aug 7)
+
+You can type ":w ++bad=x fname", but the ++bad argument is ignored. Give an
+error message? Or is this easy to implement? (Nathan Stratton Treadway, 2008
+Aug 20) This is in ucs2bytes(), search for 0xBF. Using the ++bad argument is
+at the other match for 0xBF.
+
+Fix for matchparen HL doesn't work. beep.
+
+When adding "-complete=file" to a user command this also changes how the
+argument is processed for <f-args>. (Ivan Tishchenko, 2008 Aug 19)
+
+Win32: associating a type with Vim doesn't take care of space after a
+backslash? (Robert Vibrant, 2008 Jun 5)
+
+Win32: bold font doesn't work when 'guifontwide' has been set. (Yue Wu, 2010
+Aug 23)
+
+When 'rightleft' is set, cursorcolumn isn't highlighted after the end of a
+line. It's also wrong in folds. (Dominique Pelle, 2010 Aug 21)
+
+Using an insert mode expression mapping, cursor is not in the expected
+position. (ZyX, 2010 Aug 29)
+
+After using <Tab> for command line completion after ":ta blah" and getting E33
+(no tags file), further editing the command to e.g., ":echo 'blah'", the
+command is not executed. Fix by Ian Kelling?
+
+":help s/~" jumps to *s/\~*, while ":help s/\~" doesn't find anything. (Tim
+Chase) Fix by Ian Kelling, 2008 Jul 14.
+
+Use "\U12345678" for 32 bit Unicode characters? (Tony Mechelynck, 2009
+Apr 6) Or use "\u(123456)", similar to Perl.
+
+When mapping : to ; and ; to :, @; doesn't work like @: and @: doesn't work
+either. Matt Wozniski: nv_at() calls do_execreg() which uses
+put_in_typebuf(). Char mapped twice?
+
+Despite adding save_subexpr() this still doesn't work properly:
+Regexp: matchlist('12a4aaa', '^\(.\{-}\)\(\%5c\@<=a\+\)\(.\+\)\?')
+Returns ['12a4', 'aaa', '4aaa'], should be ['12a4', 'aaa', '']
+Backreference not cleared when retrying after \@<= fails?
+(Brett Stahlman, 2008 March 8)
+
+Problem with remote_send(). (Charles Campbell, 2008 Aug 12)
+
+ftplugin for help file should set 'isk' to help file value.
+
+Win32: remote editing fails when the current directory name contains "[".
+(Ivan Tishchenko, Liu Yubao) Suggested patch by Chris Lubinski: Avoid
+escaping characters where the backslash is not removed later. Asked Chris for
+an alternate solution, also for src/ex_getln.c.
+This also fails when the file or directory name contains "%". (Thoml, 2008
+July 7)
+
+The str2special() function doesn't handle multi-byte characters properly.
+Patch from Vladimir Vichniakov, 2007 Apr 24.
+Should clean up the whole function. Also allow modifiers like <S-Char-32>?
+find_special_key() also has this problem.
+
+Problem with 'langmap' being used on the rhs of a mapping. (Nikolai Weibull,
+2008 May 14)
+
+Problem with CTRL-F. (Charles Campbell, 2008 March 21)
+Only happens with "gvim -geometry "160x26+4+27" -u NONE -U NONE prop.c".
+'lines' is 54. (2008 March 27)
+
+Problem with pointer wrapping around in getvcol(). (Wolfgang Kroworsch, 2008
+Oct 19) Check for "col" being "MAXCOL" separately?
+
+Unexpectedly inserting a double quote. (Anton Woellert, 2008 Mar 23)
+Works OK when 'cmdheight' is 2.
+
+Test54 should not use shell commands. Make it portable.
+
+The utf class table is missing some entries:
+ 0x2212, minus sign
+ 0x2217, star
+ 0x2500, bar
+ 0x26ab, circle
+
+Visual line mode doesn't highlight properly when 'showbreak' is used and the
+line doesn't fit. (Dasn, 2008 May 1)
+
+GUI: In Normal mode can't yank the modeless selection. Make "gy" do this?
+Works like CTRL-Y in Command line mode.
+
+Mac: Move Carbon todo items to os_mac.txt. Note that this version is frozen,
+try the Cocoa version.
+
+Mac: After a ":vsplit" the left scrollbar doesn't appear until 'columns' is
+changed or the window is resized.
+
+GTK: when setting 'columns' in a startup script and doing ":vertical diffsplit"
+the window isn't redrawn properly, see two vertical bars.
+
+Mac: Patch for configure: remove arch from ruby link args. (Knezevic, 2008
+Mar 5) Alternative: Kazuki Sakamoto, Mar 7.
+
+Mac: trouble compiling with Motif, requires --disable-darwin. (Raf, 2008 Aug
+1) Reply by Ben Schmidt.
+
+C't: On utf-8 system, editing file with umlaut through Gnome results in URL
+with %nn%nn, which is taken as two characters instead of one.
+Try to reproduce at work.
+
+Patch for default choice in file changed dialog. (Bjorn Winckler, 2008 Oct 19)
+Is there a way to list all the files first?
+
+When 'smartcase' is set and using CTRL-L to add to the search pattern it may
+result in no matches. Convert chars to lower case? (Erik Wognsen, 2009 Apr
+16)
+
+Searching for composing char works, but not when inside []. (ZyX, Benjamin R.
+Haskell, 2010 Aug 24)
+
+Fail to edit file after failed register access. Error flag remains set?
+(Lech Lorens, 2010 Aug 30)
+
+Patch for redo register. (Ben Schmidt, 2007 Oct 19)
+Await response to question to make the register writable.
+
+src/testdir/Make_dos.mak: not all tests are included, e.g., test49, without a
+remark why.
+
+Problem with 'ts' set to 9 and 'showbreak' to ">>>". (Matthew Winn, 2007 Oct
+1)
+
+In the swapfile dialog, add a H(elp) option that gives more info about what
+each choice does. Similar to ":help swap-exists-choices"
+
+try/catch not working for argument of return. (Matt Wozniski, 2008 Sep 15)
+
+Recognize and ignore BOM in error file. (Aleksey Baibarin)
+
+":tab help" always opens a new tab, while ":help" re-uses an existing window.
+Would be more consistent when an existing tab is re-used. (Tony Mechelynck)
+
+":tab drop filename" doesn't work nicely when "filename" is open in a window
+in another tab. (Tony Mechelynck, 2009 Feb 13)
+
+Add ":nofold". Range will apply without expanding to closed fold.
+
+Including NFA regexp code:
+Use "\%#= to set the engine: 0 = automatic, 1 = backtracking, 2 = new.
+Useful in tests.
+Performance tests:
+- ~/vim/test/veryslow.js (file from Daniel Fetchinson)
+- ~/vim/test/slowsearch
+- ~/vim/test/rgb.vim
+- ~/vim/text/FeiqCfg.xml (file from Netjune)
+- search for a.*e*exn in the vim executable. Go to last line to use
+ 'hlsearch'.
+
+Using Aap to build Vim: add remarks about how to set personal preferences.
+Example on http://www.calmar.ws/tmp/aap.html
+
+Syntax highlighting wrong for transparent region. (Doug Kearns, 2007 Feb 26)
+Bug in using a transparent syntax region. (Hanlen in vim-dev maillist, 2007
+Jul 31)
+
+C syntax: {} inside () causes following {} to be highlighted as error.
+(Michalis Giannakidis, 2006 Jun 1)
+
+Can't easily close the help window, like ":pc" closes the preview window and
+":ccl" closes the quickfix window. Add ":hclose". (Chris Gaal)
+Patch for :helpclose, Christian Brabandt, 2010 Sep 6.
+
+When 'diffopt' has "context:0" a single deleted line causes two folds to merge
+and mess up syncing. (Austin Jennings, 2008 Jan 31)
+
+Gnome improvements: Edward Catmur, 2007 Jan 7
+ Also use Save/Discard for other GUIs
+
+New PHP syntax file, use it? (Peter Hodge)
+
+'foldcolumn' in modeline applied to wrong window when using a session. (Teemu
+Likonen, March 19)
+
+Test 54 uses shell commands, that doesn't work on non-Unix systems. Use some
+other way to test buffer-local autocommands.
+
+The documentation mentions the priority for ":2match" and ":3match", but it
+appears the last one wins. (John Beckett, 2008 Jul 22) Caused by adding
+matchadd()? Suggested patch by John, 2008 Jul 24.
+
+When 'encoding' is utf-8 the command line is redrawn as a whole on every
+character typed. (Tyler Spivey, 2008 Sep 3) Only redraw cmdline for
+'arabicshape' when there is a character on the command line for which
+(ARABIC_CHAR(u8c)) is TRUE.
+
+Cheng Fang made javacomplete. (2007 Aug 11)
+Asked about latest version: 0.77.1 is on www.vim.org.
+
+More AmigaOS4 patches. (Peter Bengtsson, Nov 9)
+
+Amiga patches with vbcc. (Adrien Destugues, 2010 Aug 30)
+http://pulkomandy.ath.cx/drop/vim73_vbcc_amiga.diff
+
+Insert mode completion: When editing the text and pressing CTRL-N again goes
+back to originally completed text, edited text is gone. (Peng Yu, 2008 Jul 24)
+Suggestion by Ben Schmidt, 2008 Aug 6.
+
+Problem with compound words? (Bert, 2008 May 6)
+No warning for when flags are defined after they are used in an affix.
+
+Screen redrawing when continuously updating the buffer and resizing the
+terminal. (Yakov Lerner, 2006 Sept 7)
+
+Add option settings to help ftplugin. (David Eggum, 2006 Dec 18)
+
+Autoconf problem: when checking for iconv library we may add -L/usr/local/lib,
+but when compiling further tests -liconv is added without the -L argument,
+that may fail (e.g., sizeof(int)). (Blaine, 2007 Aug 21)
+
+When opening quickfix window, disable spell checking?
+
+Problem with ".add" files when using two languages and restarting Vim. (Raul
+Coronado, 2008 Oct 30)
+
+Popup menu redraw: Instead of first redrawing the text and then drawing the
+popup menu over it, first draw the new popup menu, remember its position and
+size and then redraw the text, skipping the characters under the popup menu.
+This should avoid flicker. Other solution by A.Politz, 2007 Aug 22.
+
+When the popup menu is close to the edge of the window it is truncated. Patch
+to anchor the popup menu in a different way. (James Vega, 2008 Jul 30)
+
+Windows 98: pasting from the clipboard with text from another application has
+a trailing NUL. (Joachim Hofmann) Perhaps the length specified for CF_TEXT
+isn't right?
+
+When a register contains illegal bytes, writing viminfo in utf-8 and reading
+it back doesn't result in utf-8. (Devin Bayer)
+
+Command line completion: Scanning for tags doesn't check for typed key now and
+then? Hangs for about 5 seconds. Appears to be caused by finding include
+files with "foo/**" in 'path'. (Kalisiak, 2006 July 15)
+Additional info: When using the |wildcards| ** globing, vim hangs
+indefinitely on lots of directories. The |file-searching| globing, like in
+":set path=/**" does not hang as often as with globing with |wildcards|, like
+in ":1find /**/file". This is for a files that unix "find" can find very
+quick. Merging the 2 kinds of globing might make this an easier fix. (Ian
+Kelling, 2008 July 4)
+
+When the file name has parenthesis, e.g., "foo (bar).txt", ":!ls '%'" has the
+parenthesis escaped but not the space. That's inconsistent. Either escape
+neither or both. No escaping might be best, because it doesn't depend on
+particularities of the shell. (Zvi Har'El, 2007 Nov 10) (Teemu Likonen, 2008
+Jun 3)
+However, for backwards compatibility escaping might be necessary. Check if
+the user put quotes around the expanded item?
+
+Error E324 can be given when a cron script has wiped out our temp directory.
+Give a clear error message about this (and tell them not to wipe out /tmp).
+
+Color for cUserLabel should differ from case label, so that a mistake in a
+switch list is noticed:
+ switch (i)
+ {
+ case 1:
+ foobar:
+ }
+
+Look at http://www.gtk-server.org/ . It has a Vim script implementation.
+
+Netbeans problem. Use "nc -l 127.0.0.1 55555" for the server, then run gvim
+with "gvim -nb:localhost:55555:foo". From nc do: '1:editFile!0 "foo"'. Then
+go to Insert mode and add a few lines. Then backspacing every other time
+moves the cursor instead of deleting. (Chris Kaiser, 2007 Sep 25)
+
+Patch to use Modern UI 2.0 for the Nsis installer. (Guopeng Wen, 2010 Jul 30)
+8 Windows install with NSIS: make it possible to do a silent install, see
+ http://nsis.sourceforge.net/Docs/Chapter4.html#4.12
+ Version from Guopeng Wen that does this (2010 Dec 27)
+
+Changes for Win32 makefile. (Mike Williams, 2007 Jan 22, Alexei Alexandrov,
+2007 Feb 8)
+
+Patch for Win32 clipboard under Cygwin. (Frodak Baksik, Feb 15)
+ Sutcliffe says it works well.
+ Update 2007 May 22 for Vim 7.1
+ Update 2008 Dec 2008 for Vim 7.2.xx (Sharonov)
+
+Win32: Can't complete shell command names. Why is setting xp_context in
+set_one_cmd_context() inside #ifndef BACKSLASH_IN_FILENAME?
+
+Win32: Patch for convert_filterW(). (Taro Muraoka, 2007 Mar 2)
+
+Win32: Patch for cscope external command. (Mike Williams, 2007 Aug 7)
+
+Win32: XPM support only works with path without spaces. Patch by Mathias
+Michaelis, 2006 Jun 9. Another patch for more path names, 2006 May 31.
+New version: http://members.tcnet.ch/michaelis/vim/patches.zip (also for other
+patches by Mathias, see mail Feb 22)
+
+Win32: compiling with normal features and OLE fails. Patch by Mathias
+Michaelis, 2006 Jun 4.
+
+Win32: echo doesn't work for gvim.exe.mnf. Use inline file. Patch by Mathias
+Michaelis. http://groups.yahoo.com/group/vimdev/message/43765
+Patch that includes this and does more by George Reilly, 2007 Feb 12
+
+Win16: include patches to make Win16 version work. (Vince Negri, 2006 May 22)
+
+Win32: after "[I" showing matches, scroll wheel messes up screen. (Tsakiridis,
+2007 Feb 18)
+Patch by Alex Dobrynin, 2007 Jun 3. Also fixes other scroll wheel problems.
+
+Win32: using CTRL-S in Insert mode doesn't remove the "+" from the tab pages
+label. (Tsakiridis, 2007 Feb 18) Patch from Ian Kelling, 2008 Aug 6.
+
+Win32: using "gvim --remote-tab-silent fname" sometimes gives an empty screen
+with the more prompt. Caused by setting the guitablabel? (Thomas Michael
+Engelke, 2007 Dec 20 - 2008 Jan 17)
+
+Win64: Seek error in swap file for a very big file (3 Gbyte). Check storing
+pointer in long and seek offset in 64 bit var.
+
+Win32: patch for fullscreen mode. (Liushaolin, 2008 April 17)
+
+Win32: When 'shell' is cmd.exe this command fails:
+ echo system('"c:/path/echo.exe" "foo bar"')
+Should we set the default for 'shellxquote' to a double quote, when 'shell'
+contains "cmd" in the tail? (Benjamin Fritz, 2008 Oct 13)
+Also set 'shellcmdflag' to include /s.
+
+Win32: When there is 4 Gbyte of memory mch_avail_mem() doesn't work properly.
+Unfinished patch by Jelle Geerts, 2008 Aug 24.
+Let mch_avail_mem() return Kbyte instead?
+
+Win32: When 'shell' is bash shellescape() doesn't always do the right thing.
+Depends on 'shellslash', 'shellquote' and 'shellxquote', but shellescape()
+only takes 'shellslash' into account.
+
+Pressing the 'pastetoggle' key doesn't update the statusline. (Jan Christoph
+Ebersbach, 2008 Feb 1)
+
+Menu item that does "xxd -r" doesn't work when 'fileencoding' is utf-16.
+Check for this and use iconv? (Edward L. Fox, 2007 Sep 12)
+Does the conversion in the other direction work when 'filenecodings' is set
+properly?
+
+Cursor displayed in the wrong position when using 'numberwidth'. (James Vega,
+2007 Jun 21)
+
+When $VAR contains a backslash expand('$VAR') removes it. (Teemu Likonen, 2008
+Jun 18)
+
+If the variable "g:x#y#z" exists completion after ":echo g:x#" doesn't work.
+
+Feature request: Command to go to previous tab, like what CTRL-W p does for
+windows. (Adam George)
+
+When using input() in a loop and then ":echo" the display column isn't right.
+(Benjamin Fritz, 2008 Aug 28) Patch by Ben Schmidt, 2008 Sep 2.
+
+F1 - F4 in an xterm produce a different escape sequence when used with a
+modifier key. Need to catch three different sequences. Use K_ZF1, like
+K_ZHOME? (Dickey, 2007 Dec 2)
+
+UTF-8: mapping a multi-byte key where the second byte is 0x80 doesn't appear
+to work. (Tony Mechelynck, 2007 March 2)
+
+In debug mode, using CTRL-R = to evaluate a function causes stepping through
+the function. (Hari Krishna Dara, 2006 Jun 28)
+
+C++ indenting wrong with "=". (James Kanze, 2007 Jan 26)
+
+":lockvar" should use copyID to avoid endless loop.
+
+When using --remote-silent and the file name matches 'wildignore' get an E479
+error. without --remote-silent it works fine. (Ben Fritz, 2008 Jun 20)
+
+Gvim: dialog for closing Vim should check if Vim is busy writing a file. Then
+use a different dialog: "busy saving, really quit? yes / no".
+
+Check other interfaces for changing curbuf in a wrong way. Patch like for
+if_ruby.c.
+
+":helpgrep" should use the directory from 'helpfile'.
+
+Patch to dynamically load Python on Solaris. (Danek Duvall, 2009 Feb 16)
+Needs more work.
+
+Python3 interface doesn't handle utf-8 correctly? (Nov 2010, lilydjwg)
+
+The need_fileinfo flag is messy. Instead make the message right away and put
+it in keep_msg?
+
+Editing a file remotely that matches 'wildignore' results in a "no match"
+error. Should only happen when there are wildcards, not when giving the file
+name literally, and esp. if there is only one name.
+
+Test 61 fails sometimes. This is a timing problem: "sleep 2" sometimes takes
+longer than 2 seconds.
+
+Using ":au CursorMoved * cmd" invokes mch_FullName(), which can be slow.
+Can this be avoided? (Thomas Waba, 2008 Aug 24)
+Also for ":w" without a file name.
+The buffer has the full path in ffname, should pass this to the autocommand.
+
+"vim -C" often has 'nocompatible', because it's set in some startup script.
+Set 'compatible' after startup is done? Patch by James Vega, 2008 Feb 7.
+
+VMS: while editing a file found in complex, Vim will save file into the first
+directory of the path and not to the original location of the file.
+(Zoltan Arpadffy)
+
+VMS: VFC files are in some cases truncated during reading (Zoltan Arpadffy)
+
+input() completion should not insert a backslash to escape a space in a file
+name?
+
+Ruby completion is insecure. Can this be fixed?
+
+When 'backupskip' is set from $TEMP special characters need to be escaped.
+(patch by Grembowietz, 2007 Feb 26, not quite right)
+Another problem is that file_pat_to_reg_pat() doesn't recognize "\\", so "\\("
+will be seen as a path separator plus "\(".
+
+gvim d:\path\path\(FILE).xml should not remove the \ before the (.
+This also fails with --remote.
+
+When doing ":quit" the Netbeans "killed" event isn't sent. (Xavier de Gaye,
+2008 Nov 10) call netbeans_file_closed() at the end of buf_freeall(), or in
+all places where buf_freeall() is called?
+
+":python os.chdir('/tmp')" makes short buffer names invalid. (Xavier de Gaye)
+Check directory and call shorten_fnames()?
+
+aucmd_prepbuf() should also use a window in another tab page.
+
+When unloading a buffer in a BufHidden autocommand the hidden flag is reset?
+(Bob Hiestand, 2008 Aug 26, Aug 27)
+
+Substituting an area with a line break with almost the same area does change
+the Visual area. Can this be fixed? (James Vega, 2006 Sept 15)
+
+Windows installer could add a "open in new tab of existing Vim" menu entry.
+Gvimext: patch to add "Edit with single Vim &tabbed" menu entry.
+Just have two choices, always using one Vim and selecting between using an
+argument list or opening each file in a separate tab.
+(Erik Falor, 2008 May 21, 2008 Jun 26)
+
+GUI: When combining fg en bg make sure they are not equal.
+
+Spell checking: Add a way to specify punctuation characters. Add the
+superscript numbers by default: 0x2070, 0xb9, 0xb2, 0xb3, 0x2074 - 0x2079.
+
+Spell checking in popup menu: If the only problem is the case of the first
+character, don't offer "ignore" and "add to word list".
+
+Use different pt_br dictionary for spell checking. (Jackson A. Aquino, 2006
+Jun 5)
+
+Use different romanian dictionary for spell checking. (Andrei Popescu, Nov
+2008) Use http://downloads.sourceforge.net/rospell/ro_RO.3.2.zip
+Or the hunspell-ro.3.2.tar.gz file, it also has a iso-8859-2 list.
+
+In a C file with spell checking, in "% integer" "nteger" is seen as an error,
+but "]s" doesn't find it. "nteger" by itself is found. (Ralf Wildenhues, 2008
+Jul 22)
+
+There should be something about spell checking in the user manual.
+
+Spell menu: When using the Popup menu to select a replacement word,
+":spellrepeat" doesn't work. SpellReplace() uses setline(). Can it use "z="
+somehow? Or use a new function.
+
+Mac: Using gvim: netrw window disappears. (Nick Lo, 2006 Jun 21)
+
+Mac: OS/X 10.4 with Python 2.5 installed: configure finds an extra argument
+that breaks the build. (Brian Victor, 2008 Sep 1)
+
+Add an option to specify the character to use when a double-width character is
+moved to the next line. Default '>', set to a space to blank it out. Check
+that char is single width when it's set (compare with 'listchars').
+
+The generated vim.bat can avoid the loop for NT. (Carl Zmola, 2006 Sep 3)
+
+Session file creation: 'autochdir' causes trouble. Keep it off until after
+loading all files.
+
+Win32: When 'autochdir' is on and 'encoding' is changed, files on the command
+line are opened again, but from the wrong directory. Apply 'autochdir' only
+after starting up?
+
+When showing a diff between a non-existent file and an existing one, with the
+cursor in the empty buffer, the other buffer only shows the last line. Change
+the "insert" into a change from one line to many? (Yakov Lerner, 2008 May 27)
+
+Add autocommand for when a tabpage is being closed. Also for when a tab page
+has been created.
+
+Using ":make" blocks Vim. Allow running one make in the background (if the
+shell supports it), catch errors in a file and update the error list on the
+fly. A bit like "!make > file&" and repeating ":cf file". ":bgmake",
+background make. ":bgcancel" interrupts it.
+A.Politz may work on this.
+
+These two abbreviations don't give the same result:
+ let asdfasdf = "xyz\<Left>"
+ cabbr XXX <C-R>=asdfasdf<CR>
+ cabbr YYY xyz<Left>
+
+Michael Dietrich: maximized gvim sometimes displays output of external command
+partly. (2006 Dec 7)
+
+In FileChangedShell command it's no longer allowed to switch to another
+buffer. But the changed buffer may differ from the current buffer, how to
+reload it then?
+
+New syntax files for fstab and resolv from Radu Dineiu, David Necas did
+previous version.
+
+For Aap: include a config.arg.example file with hints how to use config.arg.
+
+Command line completion when 'cmdheight' is maximum and 'wildmenu' is set,
+only one buffer line displayed, causes display errors.
+
+Completing with 'wildmenu' and using <Up> and <Down> to move through directory
+tree stops unexpectedly when using ":cd " and entering a directory that
+doesn't contain other directories.
+
+Linux distributions:
+- Suggest compiling xterm with --enable-tcap-query, so that nr of colors is
+ known to Vim. 88 colors instead of 16 works better. See ":help
+ xfree-xterm".
+- Suggest including bare "vi" and "vim" with X11, syntax, etc.
+
+Completion menu: For a wrapping line, completing a long file name, only the
+start of the path is shown in the menu. Should move the menu to the right to
+show more text of the completions. Shorten the items that don't fit in the
+middle?
+
+When running inside screen it's possible to kill the X server and restart it
+(using pty's the program can keep on running). Vim dies because it loses the
+connection to the X server. Can Vim simply quit using the X server instead of
+dying? Also relevant when running in a console.
+
+Accessing file#var in a function should not need the g: prepended.
+
+When exiting detects a modified buffer, instead of opening the buffer in the
+current tab, use an existing tab, if possible. Like finding a window where
+the buffer is displayed. (Antonios Tsakiridis)
+
+When ":cn" moves to an error in the same line the message isn't shortened.
+Only skip shortening for ":cc"?
+
+Write "making vim work better" for the docs (mostly pointers): *nice*
+ - sourcing $VIMRUNTIME/vimrc_example.vim
+ - setting 'mouse' to "a"
+ - getting colors in xterm
+ - compiling Vim with X11, GUI, etc.
+
+Problem with ":call" and dictionary function. Hari Krishna Dara, Charles
+Campbell 2006 Jul 06.
+
+Syntax HL error caused by "containedin". (Peter Hodge, 2006 Oct 6)
+
+A custom completion function in a ":command" cannot be a Funcref. (Andy
+Wokula, 2007 Aug 25)
+
+Problem with using :redir in user command completion function? (Hari Krishna
+Dara, 2006 June 21)
+
+Another resizing problem when setting 'columns' and 'lines' to a very large
+number. (Tony Mechelynck, 2007 Feb 6)
+
+After starting Vim, using '0 to jump somewhere in a file, ":sp" doesn't center
+the cursor line. It works OK after some other commands.
+
+Win32: Is it possible to have both postscript and Win32 printing?
+Does multi-byte printing with ":hardcopy" work? Add remark in documentation
+about this.
+
+Check: Running Vim in a console and still having connect to the X server for
+copy/paste: is stopping the X server handled gracefully? Should catch the X
+error and stop using the connection to the server.
+
+Problem with 'cdpath' on MS-Windows when a directory is equal to $HOME. (2006
+Jul 26, Gary Johnson)
+
+Using UTF-8 character with ":command" does not work properly. (Matt Wozniski,
+2008 Sep 29)
+
+In the Netbeans interface add a "vimeval" function, so that the other side can
+check the result of has("patch13").
+
+Cursor line at bottom of window instead of halfway after saving view and
+restoring. Only with 'nowrap'. (Robert Webb, 2008 Aug 25)
+
+Add command modifier that skips wildcard expansion, so that you don't need to
+put backslashes before special chars, only for white space.
+
+Syntax HL: open two windows on the same C code, delete a ")" in one window,
+resulting in highlighted "{" in that window, not in the other.
+
+In mswin.vim: Instead of mapping <C-V> for Insert mode in a complicated way,
+can it be done like ":imap <C-V> <MiddleMouse>" without negative side effects?
+
+GTK: when the Tab pages bar appears or disappears while the window is
+maximized the window is no longer maximized. Patch that has some idea but
+doesn't work from Geoffrey Antos, 2008 May 5.
+Also: the window may no longer fit on the screen, thus the command line is not
+visible.
+
+When right after "vim file", "M" then CTRL-W v the windows are scrolled
+differently and unexpectedly. Caused by patch 7.2.398?
+
+The magic clipboard format "VimClipboard2" appears in several places. Should
+be only one.
+
+"vim -C" often has 'nocompatible', because it's set somewhere in a startup
+script. Do "set compatible" after startup?
+
+It's difficult to debug numbered functions (function in a Dictionary). Print
+the function name before resolving it to a number?
+ let d = {}
+ fun! d.foo()
+ echo "here"
+ endfun
+ call d.foo(9)
+
+Add a mark for the other end of the Visual area (VIsual pos). '< and '> are
+only set after Visual moded is ended.
+Also add a variable for the Visual mode. So that this mode and '< '> can be
+used to set what "gv" selects. (Ben Schmidt)
+
+Win32: When running ":make" and 'encoding' differs from the system locale, the
+output should be converted. Esp. when 'encoding' is "utf-8". (Yongwei Wu)
+Should we use 'termencoding' for this?
+
+Win32, NTFS: When editing a specific infostream directly and 'backupcopy' is
+"auto" should detect this situation and work like 'backupcopy' is "yes". File
+name is something like "c:\path\foo.txt:bar", includes a colon. (Alex
+Jakushev, 2008 Feb 1)
+
+Small problem displaying diff filler line when opening windows with a script.
+(David Luyer, 2007 Mar 1 ~/Mail/oldmail/mool/in.15872 )
+
+Is it allowed that 'backupext' is empty? Problems when backup is in same dir
+as original file? If it's OK don't compare with 'patchmode'. (Thierry Closen)
+
+Patch for supporting count before CR in quickfix window. (AOYAMA Shotaro, 2007
+Jan 1)
+
+Patch for adding ":lscscope". (Navdeep Parhar, 2007 Apr 26; update 2008 Apr
+23)
+
+":mkview" isn't called with the right buffer argument. Happens when using
+tabs and the autocommand "autocmd BufWinLeave * mkview". (James Vega, 2007
+Jun 18)
+
+xterm should be able to pass focus changes to Vim, so that Vim can check for
+buffers that changed. Perhaps in misc.c, function selectwindow().
+Xterm 224 supports it!
+
+When completing from another file that uses a different encoding completion
+text has the wrong encoding. E.g., when 'encoding' is utf-8 and file is
+latin1. Example from Gombault Damien, 2007 Mar 24.
+
+Is it possible to use "foo#var" instead of "g:foo#var" inside a function?
+
+Syntax HL: When using "nextgroup" and the group has an empty match, there is
+no search at that position for another match. (Lukas Mai, 2008 April 11)
+
+In gvim the backspace key produces a backspace character, but on Linux the
+VERASE key is Delete. Set VERASE to Backspace? (patch by Stephane Chazelas,
+2007 Oct 16)
+
+When entering a C /* comment, after typing <Enter> for 70 times the indent
+disappears. (Vincent Beffara, 2008 Jul 3)
+
+TermResponse autocommand isn't always triggered when using vimdiff. (Aron
+Griffis, 2007 Sep 19)
+
+Create a gvimtutor.1 file and change Makefiles to install it.
+
+When 'encoding' is utf-8 typing text at the end of the line causes previously
+typed characters to be redrawn. Caused by patch 7.1.329. (Tyler Spivey, 2008
+Sep 3, 11)
+
+When Vim in an xterm owns the selection and the user does ":shell" Vim doesn't
+respond to selection requests. Invoking XtDisownSelection() before executing
+the shell doesn't help. Would require forking and doing a message loop, like
+what happens for the GUI.
+
+X11: Putting more than about 262040 characters of text on the clipboard and
+pasting it in another Vim doesn't work. (Dominique Pelle, 2008 Aug 21-23)
+clip_x11_request_selection_cb() is called with zero value and length.
+Also: Get an error message from free() in the process that owns the selection.
+Seems to happen when the selection is requested the second time, but before
+clip_x11_convert_selection_cb() is invoked, thus in X library code.
+
+":vimgrep" does not recognize a recursive symlink. Is it possible to detect
+this, at least for Unix (using device/inode)?
+
+When switching between windows the cursor is often put in the middle.
+Remember the relative position and restore that, just like lnum and col are
+restored. (Luc St-Louis)
+
+Patch to support horizontal scroll wheel in GTK. Untested. (Bjorn Winckler,
+2010 Jun 30)
+
+
+More patches:
+- Another patch for Javascript indenting. (Hari Kumar, 2010 Jul 11)
+ Needs a few tests.
+- Add 'cscopeignorecase' option. (Liang Wenzhi, 2006 Sept 3)
+- Argument for feedkeys() to prepend to typeahead (Yakov Lerner, 2006 Oct
+ 21)
+- Load intl.dll too, not only libintl.dll. (Mike Williams, 2006 May 9, docs
+ patch May 10)
+- Extra argument to strtrans() to translate special keys to their name (Eric
+ Arnold, 2006 May 22)
+- 'threglookexp' option: only match with first word in thesaurus file.
+ (Jakson A. Aquino, 2006 Jun 14)
+- Mac: indicate whether a buffer was modified. (Nicolas Weber, 2006 Jun 30)
+- Allow negative 'nrwidth' for left aligning. (Nathan Laredo, 2006 Aug 16)
+- ml_append_string(): efficiently append to an existing line. (Brad
+ Beveridge, 2006 Aug 26) Use in some situations, e.g., when pasting a
+ character at a time?
+- recognize hex numbers better. (Mark Manning, 2006 Sep 13)
+- Add <AbbrExpand> key, to expand an abbreviation in a mapping. (Kana
+ Natsuno, 2008 Jul 17)
+- Add 'wspara' option, also accept blank lines like empty lines for "{" and
+ "}". (Mark Lundquist, 2008 Jul 18)
+- Patch to add CTRL-T to delete part of a path on cmdline. (Adek, 2008 Jul
+ 21)
+- Instead of creating a copy of the tutor in all the shell scripts, do it in
+ vimtutor.vim. (Jan Minar, 2008 Jul 20)
+- When fsync() fails there is no hint about what went wrong. Patch by Ben
+ Schmidt, 2008 Jul 22.
+- testdir/Make_dos_sh.mak for running tests with MingW. (Bill Mccarthy, 2008
+ Sep 13)
+- Patch for adding "space" item in 'listchars'. (Jérémie Roquet, 2009 Oct 29,
+ Docs patch Oct 30)
+- Replace ccomplete.vim by cppcomplete.vim from www.vim.org? script 1520 by
+ Vissale Neang. (Martin Stubenschrott) Asked Vissale to make the scripts
+ more friendly for the Vim distribution.
+ New version received 2008 Jan 6.
+ No maintenance in two years...
+- Patch to access screen under Python. (Marko Mahni, 2010 Jul 18)
+- Patch to open dropped files in new tabs. (Michael Trim, 2010 Aug 3)
+
+Awaiting updated patches:
+9 Mac unicode patch (Da Woon Jung, Eckehard Berns):
+ 8 Add patch from Muraoka Taro (Mar 16) to support input method on Mac?
+ New patch 2004 Jun 16
+ - selecting proportional font breaks display
+ - UTF-8 text causes display problems. Font replacement causes this.
+ - Command-key mappings do not work. (Alan Schmitt)
+ - With 'nopaste' pasting is wrong, with 'paste' Command-V doesn't work.
+ (Alan Schmitt)
+ - remove 'macatsui' option when this has been fixed.
+ - when 'macatsui' is off should we always convert to "macroman" and ignore
+ 'termencoding'?
+9 HTML indenting can be slow. Caused by using searchpair(). Can search()
+ be used instead? A.Politz is looking into a solution.
+8 Win32: Add minidump generation. (George Reilly, 2006 Apr 24)
+8 Add ":n" to fnamemodify(): normalize path, remove "../" when possible.
+ Aric Blumer has a patch for this. He will update the patch for 6.3.
+7 Completion of network shares, patch by Yasuhiro Matsumoto.
+ Update 2004 Sep 6.
+ How does this work? Missing comments.
+- Patch for 'breakindent' option: repeat indent for wrapped line. (Vaclav
+ Smilauer, 2004 Sep 13, fix Oct 31, update 2007 May 30)
+ Version for latest MacVim: Tobia Conforto, 2009 Nov 23
+8 Add a few more command names to the menus. Patch from Jiri Brezina
+ (28 feb 2002). Will mess the translations...
+7 ATTENTION dialog choices are more logical when "Delete it' appears
+ before "Quit". Patch by Robert Webb, 2004 May 3.
+- Include flipcase patch: ~/vim/patches/wall.flipcase2 ? Make it work
+ for multi-byte characters.
+- Win32: add options to print dialog. Patch from Vipin Aravind.
+- Patch to add highlighting for whitespace. (Tom Schumm, 2003 Jul 5)
+ use the patch that keeps using HLF_8 if HLF_WS has not
+ been given values.
+ Add section in help files for these highlight groups?
+8 "fg" and "bg" don't work in an xterm. Get default colors from xterm
+ with an ESC sequence.
+ xterm can send colors for many things. E.g. for the cursor:
+ <Esc>]12;?<Bel>
+ Can use this to get the background color and restore the colors on exit.
+7 Add "DefaultFG" and "DefaultBG" for the colors of the menu. (Marcin
+ Dalecki has a patch for Motif and Carbon)
+- Add possibility to highlight specific columns (for Fortran). Or put a
+ line in between columns (e.g., for 'textwidth').
+ Patch to add 'hlcolumn' from Vit Stradal, 2004 May 20.
+8 Add functions:
+ gettext() Translate a message. (Patch from Yasuhiro Matsumoto)
+ Update 2004 Sep 10
+ Another patch from Edward L. Fox (2005 Nov 24)
+ Search in 'runtimepath'?
+ More docs needed about how to use this.
+ How to get the messages into the .po files?
+ strchars() Like strlen() and strwidth() but counting characters
+ instead of bytes.
+ confirm() add "flags" argument, with 'v' for vertical
+ layout and 'c' for console dialog. (Haegg)
+ Flemming Madsen has a patch for the 'c' flag
+ (2003 May 13)
+ raisewin() raise gvim window (see HierAssist patch for
+ Tcl implementation ~/vim/HierAssist/ )
+ taglist() add argument to specify maximum number of matches.
+ useful for interactive things or completion.
+ col('^') column of first non-white character.
+ Can use "len(substitute(getline('.'), '\S.*', '', ''))
+ + 1", but that's ugly.
+7 Add patch from Benoit Cerrina to integrate Vim and Perl functions
+ better. Now also works for Ruby (2001 Nov 10)
+- Patch from Herculano de Lima Einloft Neto for better formatting of the
+ quickfix window (2004 dec 2)
+7 When 'rightleft' is set, the search pattern should be displayed right
+ to left as well? See patch of Dec 26. (Nadim Shaikli)
+8 Option to lock all used memory so that it doesn't get swapped to disk
+ (uncrypted). Patch by Jason Holt, 2003 May 23. Uses mlock.
+7 Add ! register, for shell commands. (patch from Grenie)
+8 In the gzip plugin, also recognize *.gz.orig, *.gz.bak, etc. Like it's
+ done for filetype detection. Patch from Walter Briscoe, 2003 Jul 1.
+7 Add a "-@ filelist" argument: read file names from a file. (David
+ Kotchan has a patch for it)
+8 Include a connection to an external program through a pipe? See
+ patches from Felbinger for a mathematica interface.
+ Or use emacs server kind of thing?
+7 Add ":justify" command. Patch from Vit Stradal 2002 Nov 25.
+- findmatch() should be adjusted for Lisp. See remark at
+ get_lisp_indent(). Esp. \( and \) should be skipped. (Dorai Sitaram,
+ incomplete patch Mar 18)
+- For GUI Find/Replace dialog support using a regexp. Patch for Motif
+ and GTK by degreneir (nov 10 and nov 18).
+- Patch for "paranoid mode" by Kevin Collins, March 7. Needs much more work.
+
+
+Vi incompatibility:
+- Try new POSIX tests, made after my comments. (Geoff Clare, 2005 April 7)
+ Version 1.5 is in ~/src/posix/1.5. (Lynne Canal)
+8 With undo/redo only marks in the changed lines should be changed. Other
+ marks should be kept. Vi keeps each mark at the same text, even when it
+ is deleted or restored. (Webb)
+ Also: A mark is lost after: make change, undo, redo and undo.
+ Example: "{d''" then "u" then "d''": deletes an extra line, because the ''
+ position is one line down. (Veselinovic)
+8 When stdin is not a tty, and Vim reads commands from it, an error should
+ make Vim exit.
+7 Unix Vim (not gvim): Typing CTRL-C in Ex mode should finish the line
+ (currently you can continue typing, but it's truncated later anyway).
+ Requires a way to make CTRL-C interrupt select() when in cooked input.
+8 When loading a file in the .exrc, Vi loads the argument anyway. Vim skips
+ loading the argument if there is a file already. When no file argument
+ given, Vi starts with an empty buffer, Vim keeps the loaded file. (Bearded)
+6 In Insert mode, when using <BS> or <Del>, don't wipe out the text, but
+ only move back the cursor. Behaves like '$' in 'cpoptions'. Use a flag
+ in 'cpoptions' to switch this on/off.
+8 When editing a file which is a symbolic link, and then opening another
+ symbolic link on the same file, Vim uses the name of the first one.
+ Adjust the file name in the buffer to the last one used? Use several file
+ names in one buffer???
+ Also: When first editing file "test", which is symlink to "test2", and
+ then editing "test2", you end up editing buffer "test" again. It's not
+ logical that the name that was first used sticks with the buffer.
+7 The ":undo" command works differently in Ex mode. Edit a file, make some
+ changes, "Q", "undo" and _all_ changes are undone, like the ":visual"
+ command was one command.
+ On the other hand, an ":undo" command in an Ex script only undoes the last
+ change (e.g., use two :append commands, then :undo).
+7 The ":map" command output overwrites the command. Perhaps it should keep
+ the ":map" when it's used without arguments?
+7 CTRL-L is not the end of a section? It is for Posix! Make it an option.
+7 Implement 'prompt' option. Init to off when stdin is not a tty.
+7 CTRL-T in Insert mode inserts 'shiftwidth' of spaces at the cursor. Add a
+ flag in 'cpoptions' for this.
+7 Add a way to send an email for a crashed edit session. Create a file when
+ making changes (containing name of the swap file), delete it when writing
+ the file. Supply a program that can check for crashed sessions (either
+ all, for a system startup, or for one user, for in a .login file).
+7 Vi doesn't do autoindenting when input is not from a tty (in Ex mode).
+7 "z3<CR>" should still use the whole window, but only redisplay 3 lines.
+7 ":tag xx" should move the cursor to the first non-blank. Or should it go
+ to the match with the tag? Option?
+7 Implement 'autoprint'/'ap' option.
+7 Add flag in 'cpoptions' that makes <BS> after a count work like <Del>
+ (Sayre).
+7 Add flag in 'cpoptions' that makes operator (yank, filter) not move the
+ cursor, at least when cancelled. (default Vi compatible).
+7 This Vi-trick doesn't work: "Q" to go to Ex mode, then "g/pattern/visual".
+ In Vi you can edit in visual mode, and when doing "Q" you jump to the next
+ match. Nvi can do it too.
+7 Support '\' for line continuation in Ex mode for these commands: (Luebking)
+ g/./a\ g/pattern1/ s/pattern2/rep1\\
+ line 1\ line 2\\
+ line 2\ line 3\\
+ . line4/
+6 ":e /tmp/$tty" doesn't work. ":e $uid" does. Is $tty not set because of
+ the way the shell is started?
+6 Vi compatibility (optional): make "ia<CR><ESC>10." do the same strange
+ thing. (only repeat insert for the first line).
+
+
+GTK+ GUI known bugs:
+9 Crash with X command server over ssh. (Ciaran McCreesh, 2006 Feb 6)
+8 GTK 2: Combining UTF-8 characters not displayed properly in menus (Mikolaj
+ Machowski) They are displayed as separate characters. Problem in
+ creating a label?
+8 GTK 2: Combining UTF-8 characters are sometimes not drawn properly.
+ Depends on the font size, "monospace 13" has the problem. Vim seems to do
+ everything right, must be a GTK bug. Is there a way to work around it?
+9 Can't paste a Visual selection from GTK-gvim to vim in xterm or Motif gvim
+ when it is longer than 4000 characters. Works OK from gvim to gvim and
+ vim to vim. Pasting through xterm (using the shift key) also works.
+ It starts working after GTK gvim loses the selection and gains it again.
+- Gnome2: When moving the toolbar out of the dock, so that it becomes
+ floating, it can no longer be moved. Therefore making it float has been
+ blocked for now.
+
+
+Win32 GUI known bugs:
+- Win32: tearoff menu window should have a scrollbar when it's taller than
+ the screen.
+8 non-ASCII font names don't work. Need to convert from 'encoding' and use
+ the wide functions.
+8 On Windows 98 the unicows library is needed to support functions with UCS2
+ file names. Can we load unicows.dll dynamically?
+8 Win32: With two monitors, gvim partly on both, and adding/removing a
+ scrollbar Vim resizes and moves to one of the monitors. (Chris Monkiewicz,
+ 2008 Oct)
+8 When the primary monitor is below or right of the secondary monitor and
+ Vim is on the secondary monitor it will often move to the primary monitor.
+ Window position coordinates can be negative. (James Harvey)
+ When the primary monitor is on the right, coordinates on the left monitor
+ are negative. Clamping to zero means gvim jups to the primary monitor.
+ (Michael Wookey, 2010 Aug 17)
+ Probably the same issue: When the GUI tab pages line is displayed Vim
+ jumps from the secondary to the primary monitor. (Afton Lewis, 2007 Mar 9)
+ Possible solution using GetSystemMetrics() (Sergey Khorev, 2010 Aug 18)
+8 The -P argument doesn't work very well with many MDI applications.
+ The last argument of CreateWindowEx() should be used, see MSDN docs.
+ Tutorial: http://win32assembly.online.fr/tut32.html
+8 In eval.c, io.h is included when MSWIN32 is defined. Shouldn't this be
+ WIN32? Or can including io.h be moved to vim.h? (Dan Sharp)
+7 Windows XP: When using "ClearType" for text smoothing, a column of yellow
+ pixels remains when typing spaces in front of a "D" ('guifont' set to
+ "lucida_console:h8").
+6 Win32 GUI: With "-u NONE -U NONE" and doing "CTRL-W v" "CTRL-W o", the ":"
+ of ":only" is highlighted like the cursor. (Lipelis)
+8 When 'encoding' is "utf-8", should use 'guifont' for both normal and wide
+ characters to make Asian languages work. Win32 fonts contain both
+ type of characters.
+7 When font smoothing is enabled, redrawing can become very slow. The reason
+ appears to be drawing with a transparent background. Would it be possible
+ to use an opaque background in most places?
+8 Use another default for 'termencoding': the active codepage. Means that
+ when 'encoding' is changed typing characters still works properly.
+ Alternative: use the Unicode functions to obtain typed characters.
+8 Win32: Multi-byte characters are not displayed, even though the same font
+ in Notepad can display them. (Srinath Avadhanula) Try with the
+ UTF-8-demo.txt page with Andale Mono.
+7 The cursor color indicating IME mode doesn't work properly. (Shizhu Pan,
+ 2004 May 9)
+8 Win32: When clicking on the gvim title bar, which gives it focus, produces
+ a file-changed dialog, after clicking on a button in that dialog the gvim
+ window follows the mouse. The button-up event is lost. Only with
+ MS-Windows 98?
+ Try this: ":set sw ts", get enter-prompt, then change the file in a
+ console, go back to Vim and click "reload" in the dialog for the changed
+ file: Window moves with the cursor!
+ Put focus event in input buffer and let generic Vim code handle it?
+8 Win32: When mouse is hidden and in the toolbar, moving it won't make it
+ appear. (Sami Salonen)
+8 Win32 GUI: With maximized window, ":set go-=r" doesn't use the space that
+ comes available. (Poucet) It works OK on Win 98 but doesn't work on Win
+ NT 4.0. Leaves a grey area where the scrollbar was. ":set go+=r" also
+ doesn't work properly.
+8 When Vim is minimized and when maximizing it a file-changed dialog pops
+ up, Vim isn't maximized. It should be done before the dialog, so that it
+ appears in the right position. (Webb)
+9 When selecting at the more-prompt or hit-enter-prompt, the right mouse
+ button doesn't give popup menu.
+ At the hit-enter prompt CTRL-Y doesn't work to copy the modeless
+ selection.
+ On the command line, don't get a popup menu for the right mouse button.
+ Let the middle button paste selected text (not the clipboard but the
+ non-Visual selection)? Otherwise CTRL-Y has to be used to copy the text.
+8 When 'grepprg' doesn't execute, the error only flashes by, the
+ user can hardly see what is wrong. (Moore)
+ Could use vimrun with an "-nowait" argument to only wait when an error
+ occurs, but "command.com" doesn't return an error code.
+8 When the 'shell' cannot be executed, should give an appropriate error msg.
+ Esp. for a filter command, currently it only complains the file could not
+ be read.
+7 Add an option to add one pixel column to the character width? Lucida
+ Console italic is wider than the normal font ("d" overlaps with next char).
+ Opposite of 'linespace': 'columnspace'.
+7 At the hit-enter prompt scrolling now no longer works. Need to use the
+ keyboard to get around this. Pretend <CR> was hit when the user tries to
+ scroll?
+7 Scrollbar width doesn't change when selecting other windows appearance.
+ Also background color of Toolbar and rectangle below vert. scrollbar.
+6 Drawing text transparently doesn't seem to work (when drawing part cursor).
+8 CTRL key doesn't always work in combination with ALT key. It does work
+ for function keys, not for alphabetic characters. Perhaps this is because
+ CTRL-ALT is used by Windows as AltGr?
+8 CTRL-- doesn't work for AZERTY, because it's CTRL-[ for QWERTY. How do we
+ know which keyboard is being used?
+7 When scrolling, and a background color is dithered, the dither pattern
+ doesn't always join correctly between the scrolled area and the new drawn
+ area (Koloseike).
+8 When gui_init_font() is called with "*", p_guifont is freed while it might
+ still be used somewhere. This is too tricky, do the font selection first,
+ then set the new font by name (requires putting all logfont parameters in
+ the font name).
+
+
+Athena and Motif:
+6 New Motif toolbar button from Marcin Dalecki:
+ - When the mouse pointer is over an Agide button the red becomes black.
+ Something with the way colors are specified in the .xpm file.
+ - The pixmap is two pixels smaller than it should be. The gap is filled
+ with grey instead of the current toolbar background color.
+9 Can configure be changed to disable netbeans if the Xpm library is
+ required and it's missing?
+8 When using the resource "Vim*borderwidth 2" the widgets are positioned
+ wrong.
+9 XIM is disabled by default for SGI/IRIX. Fix XIM so that 'imdisable' can
+ be off by default.
+9 XIM doesn't work properly for Athena/Motif. (Yasuhiro Matsumoto) For now,
+ keep XIM active at all times when the input method has the preediting
+ flag.
+8 X11: A menu that contains an umlaut is truncated at that character.
+ Happens when the locale is "C", which uses ASCII instead of IS0-8859-1.
+ Is there a way to use latin1 by default? Gnome_init() seems to do this.
+8 Perhaps use fontsets for everything?
+6 When starting in English and switching the language to Japanese, setting
+ the locale with ":lang", 'guifontset' and "hi menu font=", deleting all
+ menus and setting them again, the menus don't use the new font. Most of
+ the tooltips work though...
+7 Motif: when using a file selection dialog, the specified file name is not
+ always used (when specifying a filter or another directory).
+8 When 'encoding' is different from the current locale (e.g., utf-8) the
+ menu strings don't work. Requires conversion from 'encoding' to the
+ current locale. Workaround: set 'langmenu'.
+
+
+Athena GUI:
+9 The first event for any button in the menu or toolbar appears to get lost.
+ The second click on a menu does work.
+9 When dragging the scrollbar thumb very fast, focus is only obtained in
+ the scrollbar itself. And the thumb is no longer updated when moving
+ through files.
+7 The file selector is not resizable. With a big font it is difficult to
+ read long file names. (Schroeder)
+4 Re-write the widget attachments and code so that we will not have to go
+ through and calculate the absolute position of every widget every time the
+ window is refreshed/changes size. This will help the "flashing-widgets"
+ problem during a refresh.
+5 When starting gvim with all the default colors and then typing
+ ":hi Menu guibg=cyan", the menus change color but the background of the
+ pullright pixmap doesn't change colors.
+ If you type ":hi Menu guibg=cyan font=anyfont", then the pixmap changes
+ colors as it should.
+ Allocating a new pixmap and setting the resource doesn't change the
+ pullright pixmap's colors. Why? Possible Athena bug?
+
+
+Motif GUI:
+- gui_mch_browsedir() is missing, browsedir() doesn't work nicely.
+7 Use XmStringCreateLocalized() instead of XmStringCreateSimple()?
+ David Harrison says it's OK (it exists in Motif 1.2).
+8 Lesstif: When deleting a menu that's torn off, the torn off menu becomes
+ very small instead of disappearing. When closing it, Vim crashes.
+ (Phillipps)
+
+
+GUI:
+9 On Solaris, creating the popup menu causes the right mouse button no
+ longer to work for extending the selection. (Halevy)
+9 When running an external program, it can't always be killed with CTRL-C.
+ e.g., on Solaris 5.5, when using "K" (Keech). Other 'guipty' problems on
+ Solaris 2.6. (Marley)
+9 On Solaris: Using a "-geometry" argument, bigger than the window where Vim
+ is started from, causes empty lines below the cmdline. (raf)
+8 X11 GUI: When menu is disabled by excluding 'm' from 'guioptions', ALT key
+ should not be used to trigger a menu (like the Win32 version).
+8 When setting 'langmenu', it should be effective immediately. Store both
+ the English and the translated text in the menu structure. Re-generate
+ the translation when 'langmenu' has changed.
+8 Basic flaw in the GUI code: NextScreen is updated before calling
+ gui_write(), but the GUI code relies on NextScreen to represent the state
+ of where it is processing the output.
+ Need better separation of Vim core and GUI code.
+8 When fontset support is enabled, setting 'guifont' to a single font
+ doesn't work.
+8 Menu priority for sub-menus for: Amiga, BeOS.
+8 When translating menus ignore the part after the Tab, the shortcut. So
+ that the same menu item with a different shortcut (e.g., for the Mac) are
+ still translated.
+8 Add menu separators for Amiga, RISCOS.
+8 Add way to specify the file filter for the browse dialog. At least for
+ browse().
+8 Add dialog for search/replace to other GUIs? Tk has something for this,
+ use that code? Or use console dialog.
+8 When selecting a font with the font dialog and the font is invalid, the
+ error message disappears too quick.
+7 More features in the find/replace dialog:
+ - regexp on/off
+ - search in selection/buffer/all buffers/directory
+ when all buffers/directory is used:
+ - filter for file name
+ when directory is used:
+ - subdirectory on/off
+ - top directory browser
+8 gui_check_colors() is not called at the right moment. Do it much later,
+ to avoid problems.
+8 gui_update_cursor() is called for a cursor shape change, even when there
+ are mappings to be processed. Only do something when going to wait for
+ input. Or maybe every 100 ms?
+8 X11: When the window size is reduced to fit on screen, there are blank
+ lines below the text and bottom scrollbar. "gvim -geometry 80x78+0+0".
+ When the "+0+0" is omitted it works.
+8 When starting an external command, and 'guipty' set, BS and DEL are mixed
+ up. Set erase character somehow?
+8 A dead circumflex followed by a space should give the '^' character
+ (Rommel). Look how xterm does this.
+ Also: Bednar has some code for dead key handling.
+ Also: Nedit 5.0.2 with USE_XMIM does it right. (Gaya)
+8 The compose key doesn't work properly (Cepas). Both for Win32 and X11.
+7 The cursor in an inactive window should be hollow. Currently it's not
+ visible.
+7 GUI on Solaris 2.5.1, using /usr/dt/..: When gvim starts, cursor is
+ hollow, after window lowered/raised it's OK. (Godfrey)
+7 When starting GUI with ":gui", and window is made smaller because it
+ doesn't fit on the screen, there is an extra redraw.
+8 When setting font with .Xdefaults, there is an extra empty line at the
+ bottom, which disappears when using ":set guifont=<Tab>". (Chadzelek)
+8 When font shape changes, but not the size, doing ":set font=" does not
+ redraw the screen with the new font. Also for Win32.
+ When the size changes, on Solaris 2.5 there isn't a redraw for the
+ remaining part of the window (Phillipps).
+- Flashes really badly in certain cases when running remotely from a Sun.
+4 Re-write the code so that the highlighting isn't changed multiple times
+ when doing a ":hi clear". The color changes happen three or more times
+ currently. This is very obvious on a 66Mhz 486.
+
+
+MSDOS/DJGPP:
+9 Pressing CTRL-C often crashes the console Vim runs in. (Ken Liao)
+ When 'bioskey' isn't set it doesn't happen. Could be a problem with the
+ BIOS emulation of the console. Version 5.6 already had this problem.
+8 DJGPP: "cd c:" can take us to a directory that no longer exists.
+ change_drive() doesn't check this. How to check for this error?
+9 The 16 bit version runs out of memory very quickly. Should find unused
+ code and reduce static data. Resetting 'writebackup' helps to be able to
+ write a file.
+9 Crash when running on Windows 98 in a console window and pressing CTRL-C.
+ Happens now and then. When debugging Vim in gdb this also happens. Since
+ the console crashes, might be a bug in the DOS console. Resetting
+ 'bioskey' avoids it, but then CTRL-C doesn't work.
+9 DOS: Make CTRL-Fx and ALT-Fx work.
+ CTRL-F1 = CE-5E, CTRL-F2 = CE-5F, .., CTRL-F10 = CE-67
+ ALT-F1 = CE-68, ALT-F2 = CE-69, .., ALT-F10 = CE-71
+ Shifted cursor keys produce same codes as unshifted keys. Use bioskey(2)
+ to get modifier mask for <S-C-M-Fx>.
+ Use K_SPECIAL/KS_MODIFIER codes to insert modifier mask in input stream?
+ Make this work like in Win32 console.
+ Mapping things like <M-A> doesn't work, because it generates an extended
+ key code. Use a translation table?
+9 Can't read an opened swap file when the "share" command has not been used.
+ At least ignore the swap files that Vim has opened itself.
+8 Use DJGPP 2.03.
+8 The Dos32 version (DJGPP) can't use long file names on Windows NT.
+ Check if new package can be used (v2misc/ntlfn08[bs].zip).
+8 setlocale() is bogus.
+8 Vim busy waits for new characters or mouse clicks. Should put in some
+ sort of sleep, to avoid eating 50% of the CPU time. Test on an unpatched
+ Windows 95 system!
+8 DJGPP: when shell is bash, make fails. (Donahoe)
+7 Hitting CTRL-P twice quickly (e.g., in keyword completion) on a 8088
+ machine, starts printer echo! (John Mullin).
+7 MSDOS 16 bit version can't work with COMSPEC that has an argument, e.g.:
+ COMSPEC=C:\WINDOWS\COMMAND.COM /E:4096 (Bradley)
+ Caused by BCC system() function (Borland "make" has the same problem).
+8 Mouse: handle left&right button pressed as middle button pressed. Add
+ modifier keys shift, ctrl and alt.
+7 When too many files are open (depends on FILES), strange things happen.
+ The Dos16 version runs out of memory, in the Dos32 version "!ls" causes a
+ crash. Another symptom: .swp files are not deleted, existing files are
+ "[New file]".
+7 DJGPP version doesn't work with graphics display mode. Switch to a mode
+ that is supported?
+8 DJGPP: ":mode" doesn't work for many modes. Disable them.
+8 DJGPP: When starting in Ex mode, shouldn't clear the screen. (Walter
+ Briscoe)
+
+
+MSDOS, OS/2 and Win32:
+8 OS/2: Add backtick expansion. Undefine NO_EXPANDPATH and use
+ gen_expand_wildcards().
+8 OS/2: Add clipboard support? See example clipbrd.exe from Alexander
+ Wagner.
+8 OS/2: Add Extended Attributes support and define HAVE_ACL.
+8 OS/2: When editing a file name "foo.txt" that is actually called FOO.txt,
+ writing uses "foo.txt". Should obtain the real file name.
+8 Should $USERPROFILE be preferred above $HOMEDRIVE/$HOMEPATH? No, but it's
+ a good fallback, thus use:
+ $HOME
+ $HOMEDRIVE$HOMEPATH
+ SHGetSpecialFolderPath(NULL, lpzsPath, CSIDL_APPDATA, FALSE);
+ $USERPROFILE
+ SHGetSpecialFolderPath(NULL, lpzsPath, CSIDL_COMMON_APPDATA, FALSE);
+ $ALLUSERSPROFILE
+ $SYSTEMDRIVE\
+ C:\
+8 Win32 console: <M-Up> and <M-Down> don't work. (Geddes) We don't have
+ special keys for these. Should use modifier + key.
+8 Win32 console: caps-lock makes non-alpha keys work like with shift.
+ Should work like in the GUI version.
+8 Environment variables in DOS are not case sensitive. Make a define for
+ STRCMP_ENV(), and use it when comparing environment var names.
+8 Setting 'shellslash' has no immediate effect. Change all file names when
+ it is set/reset? Or only use it when actually executing a shell command?
+8 When editing a file on a Samba server, case might matter. ":e file"
+ followed by ":e FILE" will edit "file" again, even though "FILE" might be
+ another one. Set last used name in buflist_new()? Fix do_ecmd(), etc.
+8 When a buffer is editing a file like "ftp://mach/file", which is not going
+ to be used like a normal file name, don't change the slashes to
+ backslashes. (Ronald Hoellwarth)
+
+
+Windows 95:
+8 Editing a file by its short file name and writing it, makes the long file
+ name disappear. Setting 'backupcopy' helps.
+ Use FindFirstFile()->cAlternateFileName in fname_case() (George Reilly).
+8 Doing wildcard expansion, will match the short filename, but result in the
+ long filename (both DJGPP and Win32).
+
+
+Win32 console:
+9 When editing a file by its short file name, it should be expanded into its
+ long file name, to avoid problems like these: (Mccollister)
+ 1) Create a file called ".bashrc" using some other editor.
+ 2) Drag that file onto a shortcut or the actual executable.
+ 3) Note that the file name is something like BASHRC~1
+ 4) Go to File->Save As menu item and type ".bashrc" as the file name.
+ 5) Press "Yes" to indicate that I want to overwrite the file.
+ 6) Note that the message "File exists (add ! to override)" is displayed
+ and the file is not saved.
+ Use FindFirstFile() to expand a file name and directory in the path to its
+ long name.
+8 Also implement 'conskey' option for the Win32 console version? Look at
+ how Xvi does console I/O under Windows NT.
+7 Re-install the use of $TERM and support the use of different terminals,
+ besides the console.
+8 Use of <altgr> modifier doesn't work? 5.3 was OK. (Garcia-Suarez/Guckes)
+9 Mapping <C-S-Tab> doesn't work correctly. How to see the difference with
+ <C-S-i>?
+9 tmpnam() uses file in root of file system: "\asdf". That doesn't work on
+ a Netware network drive. Use same function as for Win32 GUI?
+8 In os_win32.h, HAVE_STRICMP and HAVE_STRNICMP are defined only if __GNUC__
+ is not defined. Shouldn't that be the other way around?
+7 Use SetConsoleCP() and SetConsoleOutputCP() to implement 'termencoding'?
+ Avoids that input and output work differently. Need to be restored when
+ exiting.
+
+
+Amiga:
+8 In mch_inchar() should use convert_input_safe() to handle incomplete byte
+ sequences.
+9 In mch_expandpath() a "*" is to be expanded, but "\*" isn't. Remove
+ backslashes in result.
+8 Executing a shell, only one option for 'shell' is separated. Should do
+ all options, using white space separation.
+
+
+Macintosh:
+- GUI: gui_mch_browsedir() is missing.
+7 Loading the Perl library only works on OS/X 10.2 or 10.3, never on both.
+ Load the Perl library dynamically see Python sources file dynload_mac
+ (Jack)
+ dynamic linking: http://developer.apple.com/technotes/tn2002/tn2064.html
+8 inputdialog() doesn't resize when giving more text lines. (David Fishburn,
+ 2006 Sept 28)
+8 Define vim_mkdir() for Macintosh.
+8 Define mch_writable() for Macintosh.
+9 When DiskLock is running, using a swap file causes a crash. Appears to be
+ a problem with writing a file that starts with a dot. (Giacalone)
+9 In mac_expandpath() check that handling of backslashes is done properly.
+
+
+"Small" problems:
+- Can't disable terminal flow control, to enable the use of CTRL-S and
+ CTRL-Q. Add an option for it?
+- When using e_secure in do_one_cmd() mention the command being executed,
+ otherwise it's not clear where it comes from.
+- When the quickfix window is open and executing ":echo 'hello'" using the
+ Command-line window, the text is immediately removed by the redrawing.
+ (Michael Henry, 2008 Nov 1)
+ Generic solution: When redrawing while there is a message on the
+ cmdline, don't erase the display but draw over the existing text.
+ Other solution, redraw after closing the cmdline window, before executing
+ the command.
+9 For Turkish vim_tolower() and vim_toupper() also need to use utf_
+ functions for characters below 0x80. (Sertacyildiz)
+9 When the last edited file is a help file, using '0 in a new Vim doesn't
+ edit the file as a help file. 'filetype' is OK, but 'iskeyword' isn't,
+ file isn't readonly, etc.
+8 When an ":edit" is inside a try command and the ATTENTION prompt is used,
+ the :catch commands are always executed, also when the file is edited
+ normally. Should reset did_emsg and undo side effects. Also make sure
+ the ATTENTION message shows up. Servatius Brandt works on this.
+8 ":g//" gives "Pattern not found error" with E486. Should not use the
+ error number, it's not a regular error message.
+7 Vimtutor leaves escape sequence in terminal. This is the xterm response to
+ requesting the version number. (Yasuhiro Matsumoto)
+8 When redirecting and using ":silent" the current column for displaying and
+ redirection can be different. Use a separate variable to hold the column
+ for redirection.
+7 The messages for "vim --help" and "vim --version" don't use
+ 'termencoding'.
+- Could the hit-enter prompt be avoided when a message only overlaps the
+ 'showcmd' area? Clear that area when the next cmd is typed.
+8 When 'scrollbind' is set, a window won't scroll horizontally if the cursor
+ line is too short. Add a word in 'scrollopt' to allow moving the cursor
+ to longer line that is visible. A similar thing is done for the GUI when
+ using the horizontal scrollbar.
+7 VisVim can only open one file. Hard to solve: each opened file is passed
+ with a separate invocation, would need to use timestamps to know the
+ invocations belong together.
+8 When giving a ":bwipeout" command a file-changed dialog may popup for this
+ buffer, which is pointless. (Mike Williams)
+8 On MS-Windows ":make" doesn't show output while it is working. Use the
+ tee.exe from http://unxutils.sourceforge.net/ ? About 16 Kbyte in the
+ UnxUtils.zip archive.
+ Alternate one: http://www.pramodx.20m.com/tee_for_win32.htm, but Walter
+ Briscoe says it's not as good.
+8 "stl" and "stlnc" in 'fillchars' don't work for multi-byte characters.
+8 When doing Insert mode completion a mapping cannot recursively call
+ edit(), because the completion information is global. Put everything in
+ an allocated structure?
+6 Python: ":py raw_input('prompt')" doesn't work. (Manu Hack)
+8 Command line completion: buffers "foo.txt" and "../b/foo.txt", completing
+ ":buf foo<Tab>" doesn't find the second one. (George V. Reilly)
+7 Output for ":scriptnames" and ":breaklist" should shorten the file names:
+ use "~/" when possible.
+7 mb_off2cells() doesn't work correctly on the tail byte of a double-byte
+ character. (Yasuhiro Matsumoto) It should return 1 when used on a tail
+ byte, like for utf-8. Store second byte of double-byte in ScreenLines2[]
+ (like for DBCS_JPNU) and put a zero in the second byte (like for UTF-8).
+8 'backupdir' and 'directory' should use $TMPDIR, $TMP and/or $TEMP when
+ defined.
+7 Inside a function with "perl <<EOF" a line with "$i++" is recognized as an
+ ":insert" command, causing the following "endfunction" not to be found.
+ Add skipping this perl construction inside function definitions.
+7 When 'ttimeoutlen' is 10 and 'timeoutlen' is 1000, there is a keycode
+ "<Esc>a" and a mapping <Esc>x", when typing "<Esc>a" with half a second
+ delay should not be interpreted as a keycode. (Hans Ginzel)
+7 ":botright 1 new" twice causes all window heights to be changed. Make the
+ bottom window only bigger as much as needed.
+7 The Cygwin and MingW makefiles define "PC", but it's not used anywhere.
+ Remove? (Dan Sharp)
+9 User commands use the context of the script they were defined in. This
+ causes a "s:var" argument to unexpectedly use a variable in the defining
+ script, not the calling script. Add an argument to ":command":
+ "-keepcontext". Do replace <SID>, so that a function in the defining
+ script can be called.
+8 The Japanese message translations for MS-Windows are called ja.sjis.po,
+ but they use encoding cp932. Rename the file and check that it still
+ works.
+8 A very long message in confirm() can't be quit. Make this possible with
+ CTRL-C.
+8 When the clipboard isn't supported: ":yank*" gives a confusing error
+ message. Specifically mention that the register name is invalid.
+8 "gf" always excludes trailing punctuation characters. file_name_in_line()
+ is currently fixed to use ".,:;!". Add an option to make this
+ configurable?
+8 'hkmap' should probably be global-local.
+9 When "$" is in 'cpoptions' and folding is active, a "C" command changes
+ the folds and resets w_lines_valid. The display updating doesn't work
+ then. (Pritesh Mistry)
+8 Using ":s" in a function changes the previous replacement string. Save
+ "old_sub" in save_search_patterns()?
+8 Should allow multi-byte characters for the delimiter: ":s+a+b+" where "+"
+ is a multi-byte character.
+8 When appending to a file and 'patchmode' isn't empty, a backup file is
+ always written, even when the original file already exists.
+7 When using "daw" on the last word in a file and this is a single letter,
+ nothing is deleted. Should delete the letter and preceding white space.
+9 When getting focus while writing a large file, could warn for this file
+ being changed outside of Vim. Avoid checking this while the file is being
+ written.
+7 The message in bt_dontwrite_msg() could be clearer.
+8 The script ID that is stored with an option and displayed with ":verbose
+ set" isn't reset when the option is set internally. For example when
+ 'foldlevel' is set from 'foldlevelstart'.
+8 Also store the line number with the script ID and use it for ":verbose",
+ so that "set nocompatible" is found when it changes other option values.
+ When an option is set indirectly mention the command? E.g. when
+ ":diffsplit" sets 'foldmethod'.
+8 In the fileformat dialog, "Cancel" isn't translated. Add a global
+ variable for this. (Eduardo Fernandez)
+9 When editing a file with 'readonly' set, there is no check for an existing
+ swap file. Then using ":write" (without making any changes) doesn't give
+ a warning either. Should check for an existing swap file without creating
+ one. Unfinished patch by Ian Kelling, 2008 July 14.
+7 When 'showbreak' is set, the amount of space a Tab occupies changes.
+ Should work like 'showbreak' is inserted without changing the Tabs.
+7 When 'mousefocus' is set and switching to another window with a typed
+ command, the mouse pointer may be moved to a part of the window that's
+ covered by another window and we lose focus. Only move in the y
+ direction, not horizontally?
+8 ":hardcopy":
+ - Using the cterm_color[] table is wrong when t_colors is > 16.
+ - Need to handle unprintable characters.
+ - Win32: On a B&W printer syntax highlighting isn't visible. Perform
+ dithering to make grey text?
+ - Add a flag in 'printoptions' to add an empty page to make the total
+ number even. "addempty"? (Mike Williams)
+ - Respect 'linebreak'. Perhaps also 'showbreak'?
+ - Should interpret CTRL-L as a page break.
+ - Grey line numbers are not always readable. Add field in 'printoptions'.
+ Default to black when no syntax highlighting.
+ - Be able to print a window in diff mode.
+ - Be able to specify a colorscheme to use for printing. And a separate
+ one for B&W printing (if that can be detected).
+8 In Visual block mode with 'lbr' set, a change command doesn't insert the
+ text in following lines where the linebreak changes.
+9 dosinst.c: The DJGPP version can't uninstall the Uninstall registry key on
+ Windows NT. How to install a .inf file on Windows NT and how to detect
+ that Windows NT is being used?
+8 When 'virtualedit' is "block,insert" and encoding is "utf-8", selecting a
+ block of one double-wide character, then "d" deletes only half of it.
+8 When 'virtualedit' is set, should "I" in blockwise visual mode also insert
+ in lines that don't extend into the block?
+8 With 'virtualedit' set, in Insert mode just after the end of line, CTRL-O
+ yh does not yank the last character of the line. (Pavel Papushev)
+ Doing "hl" first appears to make it work.
+8 With 'virtualedit' set it's possible to move into the blank area from
+ 'linebreak'.
+8 With 'virtualedit' set and 'selection' "exclusive", a Visual selection
+ that ends in or after a tab, "d" doesn't delete (part of) the tab.
+ (Helmut Stiegler)
+9 When jumping to a tag, the search pattern is put in the history. When
+ 'magic' is on, the pattern may not work. Translate the pattern depending
+ on p_magic when putting it in the history? Alternative: Store value of
+ 'magic' in history. (Margo)
+9 optwin.vim: Restoring a mapping for <Space> or <CR> is not correct for
+ ":noremap". Add "mapcmd({string}, {mode})? Use code from ":mkexrc".
+9 incsearch is incorrect for "/that/<Return>/this/;//" (last search pattern
+ isn't updated).
+9 term_console is used before it is set (msdos, Amiga).
+9 Get out-of-memory for ":g/^/,$s//@/" on 1000 lines, this is not handled
+ correctly. Get many error messages while redrawing the screen, which
+ cause another redraw, etc.
+8 [<C-I> doesn't work when '*' is in 'iskeyword'. find_pattern_in_path()
+ must escape special characters in the pattern.
+8 Vim can overwrite a read-only file with ":w!". ":w" can't overwrite an
+ existing file, "w!" can, but perhaps not a read-only file? Then use
+ ":w!!" for that.
+ Or ask for permission to overwrite it (if file can be made writable) and
+ restore file to readonly afterwards.
+ Overwriting a file for which a swap file exists is similar issue.
+7 When compiled with "xterm_clipboard", startup can be slower and might get
+ error message for invalid $DISPLAY. Try connecting to the X server in the
+ background (forked), so that Vim starts up quicker? Connect as soon as
+ the clipboard is to be used (Visual select mode starts, paste from
+ clipboard)
+7 X11: Some people prefer to use CLIPBOARD instead of PRIMARY for the normal
+ selection. Add an "xclipboard" argument to the 'clipboard' option? (Mark
+ Waggoner)
+8 For xterm need to open a connection to the X server to get the window
+ title, which can be slow. Can also get the title with "<Esc>[21t", no
+ need to use X11 calls. This returns "<Esc>]l{title}<Esc>\".
+6 When the xterm reports the number of colors, a redraw occurs. This is
+ annoying on a slow connection. Wait for the xterm to report the number of
+ colors before drawing the screen. With a timeout.
+8 When the builtin xterm termcap contains codes that are not wanted, need a
+ way to avoid using the builtin termcap.
+8 Xterm sends ^[[H for <Home> and ^[[F for <End> in some mode. Also
+ recognize these keys? Mostly useful for xterm simulators, like gnometerm.
+ See http://dickey.his.com/xterm/xterm.faq.html#xterm_pc_style.
+8 For xterm also recognize keypad up/down/left/right and insert.
+8 '[ and '] should be set to start/end of line when using a linewise operator
+ (e.g., ":w").
+8 CTRL-A can't handle big "long" numbers, they become negative. Check for
+ "-" character, if not present, use unsigned long.
+8 Make it possible to disable the special meaning of "#" in the first column
+ for ">>".
+8 Add suspending with CTRL-Z at the "more" prompt, and when executing a long
+ script in do_cmdline().
+8 When using 'hidden', many swap files will be open. When Vim runs into the
+ maximum number of open files, error messages will appear. Detect that
+ this problem is present, and close any hidden files that don't have
+ changes.
+8 With 'viminfo' set such that the ".viminfo" file is written on a FAT
+ filesystem, an illegal file name may be created: ".vim".
+8 For each buffer that is opened, the viminfo file is opened and read to
+ check for file marks. This can be slow.
+7 In xterm, recognize both vt100 and vt220 cursor keys. Change
+ add_termcode() to not remove an existing entry for a name, when it's
+ needed.
+ Need a generic solution to recognize different codes for the same key.
+8 Core dump within signal function: gdb doesn't show stack backtrace! Option
+ to skip catch_signals()?
+9 Repeating a "cw" with "." doesn't work if the text was pasted from the
+ clipboard. (Thomas Jones) It's because the menu/toolbar item exits Insert
+ mode and uses "gP". How to fix this without breaking inserting a block of
+ text?
+8 In Replace mode pasting from the clipboard (using menu or toolbar) inserts
+ all the text. Add ":rmenu"?
+8 Pasting with the mouse in Replace mode inserts the text, instead of
+ overwriting, when it is more than one line. Same for using <C-R>.
+9 CTRL-E and CTRL-Y don't work in small window when 'so' is 4 and lines are
+ wrapping (Acevedo/in.226). E.g., when using CTRL-E, window height 7,
+ window might actually scroll down when last line of buffer is displayed.
+ --> Remember if the previous command was "cursor follows screen" or
+ "screen follow cursor" and use this in cursupdate().
+7 tilde_replace() can only handle "~/", should also do "~user/".
+ Get the list of home directories (from /etc/passwd? Use getpwent()) and
+ use some clever algorithm to match a path with that. Find common strings
+ in the list?
+8 When dragging status line with mouse, sometimes a jump when first clicking
+ on the status line (caused by 'winheight'). Select window on button up,
+ instead of on button down.
+8 Dragging the status line doesn't scroll but redraw.
+9 Evaluating 'statusline' in build_stl_str_hl() does not properly check for
+ reaching the end of the available buffer.
+ Patch to dynamically allocate the buffer for % items. (Eric Arnold, 2006
+ May 14)
+8 When performing incremental search, should abort searching as soon as a
+ character is typed.
+8 When the value of $MAKE contains a path, configure can't handle this.
+ It's an autoconf bug. Remove the path from $MAKE to work around it.
+8 How to set VIMRC_FILE to \"something\" for configure? Why does this not
+ work: CFLAGS='-DVIMRC_FILE=\"/mydir/myfile\"' ./configure
+8 The temporary file is sometimes not writable. Check for this, and use an
+ alternate name when it isn't. Or add the 'temptemplate' option: template
+ for the temp file name ":set temptemplate=/usr/tmp/?????.tmp".
+ Also: Win32 version uses Windows temp directory, which might not work for
+ cygwin bash.
+7 Get error "*, \+ or \( operand could be empty" for pattern "\(.\)\1\{3}".
+ Remember flags for backreferences.
+7 When switching to Daylight Saving Time, Vim complains that a file has been
+ changed since last read. Can we use a function that uses GMT?
+7 When completing an environment variable after a '$', check for file names
+ that contain a '$' after all have been found.
+8 When "cm" termcap entry is missing, starting gvim shouldn't complain about
+ it. (Lohner) Try out with "vt100" entry, cm replaced with cX.
+7 When an include file starts with "../", the check for already visiting
+ this file doesn't work. Need to simplify the file name.
+7 The names and comments for the arguments of do_browse() are confusing.
+ "dflt" isn't the default file name when "initdir" is not NULL and
+ "initdir" is the default path to be used.
+7 When 'scrolloff' is exactly half the window height, "j" causes a scroll of
+ two lines at a time. "k" doesn't do this. (Cory T. Echols)
+8 When write_viminfo() is used while there are many orphaned viminfo
+ tempfiles writing the viminfo file fails. Give a clear error message so
+ that the user knows he has to delete the files.
+7 It's possible to redefine a script-local function with ":func
+ <SNR>123_Test()". (Krishna) Disallow this.
+
+
+I can't reproduce these (if you can, let me know how!):
+9 NT 4.0 on NTFS file system: Editing ".bashrc" (drag and drop), file
+ disappears. Editing ".xyz" is OK. Also, drag&drop only works for three
+ files. (McCollister)
+
+
+Problems that will (probably) not be solved:
+- GTK: when using the popup menu with spelling suggestions and releasing the
+ right mouse button before the menu appears selecting an item with the
+ right mouse button has no effect. GTK does not produce an event for this.
+- GTK 2: Cannot use the file selector. When using it many things become
+ slow. This is caused by some code in GTK that writes
+ ~/.recently-used.xbel every time an event is handled. It assumes the main
+ loop is never quit, which is a wrong assumption. Also, it overwrites the
+ file with different file permissions, which is a privacy issue. This
+ needs to be fixed in GTK. A solution in Vim would be really complicated.
+ (2008 Jul 31) This appears to be fixed in Vim 7.3.
+- xterm title: The following scenario may occur (esp. when running the Vim
+ test script): Vim 1 sets the title to "file1", then restores the title to
+ "xterm" with an ESC sequence when exiting. Vim 2 obtains the old title
+ with an X library call, this may result in "file1", because the window
+ manager hasn't processed the "xterm" title yet. Can apparently only be
+ worked around with a delay.
+- In a terminal with 'mouse' set such that the mouse is active when entering
+ a command line, after executing a shell command that scrolls up the
+ display and then pressing ":": Selecting text with the mouse works like
+ the display wasn't scrolled. Vim doesn't know how much the external
+ command scrolled up the display. Use Shift to select text.
+- X windows: When $DISPLAY points to a X server where there is no access
+ permission, trying to connect to the X server causes an error message.
+ XtOpenDisplay() prints this directly, there is no way to avoid it.
+- X windows: Setting 'guifontset' to an illegal value sometimes crashes Vim.
+ This is caused by a fault in a X library function, can't be solved in Vim.
+- Win32 tcl: has("tcl") hangs when the tcl84.dll is from cygwin.
+- Motif: When adding a menu item "Find this &Symbol", the "s" in "this" will
+ be underlined, instead of in "Symbol". Motif doesn't let us specify which
+ character gets the highlighting.
+- Moving the cursor removes color in color-xterm. This is a color-xterm
+ problem! color-xterm ver. 6.1 beta 3 and later work properly.
+- In zsh, "gvim&" changes the terminal settings. This is a zsh problem.
+ (Jennings)
+- Problem with HPterm under X: old contents of window is lost (Cosentino).
+- Amiga: When using quickfix with the Manx compiler we only get the first 25
+ errors. How do we get the rest?
+- Amiga: The ":cq" command does not always abort the Manx compiler. Why?
+- Linux: A file with protection r--rw-rw- is seen readonly for others. The
+ access() function in GNU libc is probably wrong.
+- MSDOS: When using smartdrive with write-back buffering, writing to a
+ readonly floppy will cause problems. How to test for a writable floppy
+ first?
+- MSDOS: Both 16 and 32 bit versions: File name expansion doesn't work for
+ names that start with a dot. These used to be illegal file names.
+- When doing a CTRL-Z and typing a command for the shell, while Vim is busy
+ (e.g. writing a file), the command for the shell is sometimes eaten by Vim,
+ because the terminal mode is changed from RAW to CBREAK.
+- An old version of GNU tgoto can't handle the terminfo code for "AF". The
+ "%p1" is interpreted as "%p" and "1", causing color not to be working.
+ Fix: Change the "%p1" in the "AF" and "AB" terminfo entries to "%p".
+ (Benzinger).
+- When running an external command from the GUI, typeahead is going to that
+ program, not to Vim. It looks like the shell eats the characters, Vim
+ can't get back what the external command didn't use.
+- Win32 GUI: Error code from external command not returned in shell_error.
+ It appears that cmd.exe and command.com don't return an error code.
+- Win32 GUI: The Toolbar is a bit too high when the flat style is being
+ used. We don't have control over the height of the Toolbar.
+- Win32: All files created on the day of switching from winter to summer
+ time cause "changed since editing started" messages. It goes away when
+ the file is written again the next day, or the timezone is adjusted.
+ DJGPP version is OK. (Zaimi) Looks like a problem with the Win32 library.
+ Rebooting doesn't help. Time stamps look OK in directory. (Penn)
+ Is this on FAT (stores wall clock time) or NTFS (stores UTS)?
+- Win32, MS-Windows XP: $HOME uses the wrong drive when the user profiles
+ are not on the boot disk. This is caused by a wrong value of $HOMEDRIVE.
+ This is a bug in XP, see MSKB article 818134.
+- SunOS 5.5.1 with Motif: The file open dialog does not have a horizontal
+ scroll bar for the "files" selection. This is a problem in the Motif
+ libraries, get a patch from Sun.
+- Solaris 2.6 with GTK and Perl: gvim crashes when started. Problem with X
+ input method called from GDK code. Without Perl it doesn't crash.
+- VMS: Vimdiff doesn't work with the VMS diff, because the output looks
+ different. This makes test 47 fail. Install a Unix-compatible diff.
+- VMS v7.1 and older: Tests 21 and 32 fail. From VMS v7.1-2 and newer Vim
+ does not have this behavior. (Zoltan Arpadffy)
+- Win32 GUI: mouse wheel always scrolls rightmost window. The events arrive
+ in Vim as if the rightmost scrollbar was used.
+- GTK with Gnome: Produces an error message when starting up:
+ Gdk-WARNING **: locale not supported by C library
+ This is caused by the gnome library gnome_init() setting $LC_CTYPE to
+ "en_US". Not all systems support this locale name, thus causing the
+ error. Hopefully a newer version of GTK/Gnome fixes this problem.
+- GTK 2: With this mapping the hit-enter prompt is _sometimes_ below the
+ screen, at other times there is a grey area below the command line:
+ :nmap <F11> :if &guioptions=~'m' \| set guioptions-=m \| else \| set guioptions+=m \| endif<cr>
+- GTK: When pasting a selection from Vim to xclipboard gvim crashes with a
+ ABRT signal. Probably an error in the file gdkselection.c, the assert
+ always fails when XmbTextListToTextProperty() fails. (Tom Allard)
+- GTK 2: gives an assertion error for every non-builtin icon in the toolbar.
+ This is a GTK 2.4.x bug, fixed in GTK 2.4.2. (Thomas de Grenier de Latour)
+- When using an xterm that supports the termresponse feature, and the 't_Co'
+ termcap option was wrong when Vim started, it will be corrected when the
+ termresponse is received. Since the number of colors changes, the
+ highlighting needs to be initialized again. This may cause colors defined
+ in the vimrc file to be lost.
+- On Windows NT 4.0 the number of files passed to Vim with drag&drop and
+ "Edit with Vim" is limited. The maximum command line length is 255 chars.
+
+--------------------- extensions and improvements ----------------------
+ *extensions-improvements*
+
+Most interesting new features to be added when all bugs have been fixed:
+- Using ":exe edit fname" has escaping problems. Use ":edit ++(fname)".
+ Thus use "++=" to give arguments as expressions, comma separated as if
+ calling a function.
+ With options: ":edit ++(['!', '++enc=abc'], ['+/pat'], fname)".
+ Alternative: Make a function for Ex commands: cmd_edit().
+- Add COLUMN NUMBERS to ":" commands ":line1,line2[col1,col2]cmd". Block
+ can be selected with CTRL-V. Allow '$' (end of line) for col2.
+- Add DEBUGGER INTERFACE. Implementation for gdb by Xavier de Gaye.
+ Should work like an IDE. Try to keep it generic. Now found here:
+ http://clewn.sf.net.
+ And the idevim plugin/script.
+ To be able to start the debugger from inside Vim: For GUI run a program
+ with a netbeans connection; for console: start a program that splits the
+ terminal, runs the debugger in one window and reconnect Vim I/O to the
+ other window.
+ Wishes for NetBeans commands:
+ - make it possible to have 'defineAnnoType' also handle terminal colors.
+ - send 'balloonText' events for the cursor position (using CursorHold ?)
+ in terminal mode.
+- ECLIPSE plugin. Problem is: the interface is very complicated. Need to
+ implement part in Java and then connect to Vim. Some hints from Alexandru
+ Roman, 2004 Dec 15. Should then also work with Oracle Jdeveloper, see JSR
+ 198 standard http://www.jcp.org/en/jsr/detail?id=198.
+ Eclim does it: http://eclim.sourceforge.net/ (Eric Van Dewoestine)
+ Plugin that uses a terminal emulator: http://vimplugin.sf.net
+ And another one: http://www.satokar.com/viplugin/index.php
+- STICKY CURSOR: Add a way of scrolling that leaves the cursor where it is.
+ Especially when using the scrollbar. Typing a cursor-movement command
+ scrolls back to where the cursor is.
+- Scroll commands by screen line. g CTRL-E and g CTRL-Y ? Requires the
+ first line to be able to start halfway.
+- Running a shell command from the GUI still has limitations. Look into how
+ the terminal emulator of the Vim shell project can help:
+ http://vimshell.wana.at
+8 Add a command to jump to a certain kind of tag. Allow the user to specify
+ values for the optional fields. E.g., ":tag size type=m".
+ Also allow specifying the file and command, so that the result of
+ taglist() can be used.
+- X11: Make it possible to run Vim inside a window of another program.
+ This can be done with XReparentWindow(). But how exactly?
+
+
+Documentation:
+8 List of Vim runtime directories. dotvim.txt from Charles Campbell, 2007
+ Feb 20.
+8 The GUI help should explain the Find and Find/Replace dialogs. Add a link
+ to it from ":promptrepl" and ":promptfind".
+8 List of options should mention whether environment variables are expanded
+ or not.
+8 Extend usr_27.txt a bit. (Adam Seyfarth)
+7 Add a section on debugging scripts in the user manual.
+9 Make the Reference Manual more precise. For each command mention:
+ - change to cursor position and curswant
+ - if it can be undone (u/CTRL-R) and redone (.)
+ - how it works for folded lines
+ - how it works with multi-byte characters
+9 In change.txt, remark about Javadoc isn't right. Right alignment would
+ work too.
+8 Spread the windows commands over the other files. For example, ":stag"
+ should be with ":tag". Cross-link with tags to avoid too much double
+ text.
+8 Add tags for all features, e.g. "gui_running".
+7 MS-Windows: When a wrong command is typed with an ALT key, give a hint to
+ look at the help for 'winaltkeys'.
+7 Add a help.vim plugin that maps <Tab> to jump to the next tag in || and
+ <C-Tab> (and <S-Tab>) to the previous tag.
+ Patch by Balazs Kezes, 2007 Dec 30. Remark from A. Politz.
+- Check text editor compendium for vi and Vim remarks.
+
+
+Help:
+- First try using the ":help" argument literally, before using it as a
+ pattern. And then match it as part of a tag.
+- When a help item has multiple matches make it possible to use ":tn" to go
+ to the other matches.
+- Support a way to view (and edit) .info files.
+- Default mapping for help files: <Tab> to position cursor on next |:tag|.
+- Implement a "sticky" help window, some help text lines that are always
+ displayed in a window with fixed height. (Guckes) Use "~/.vimhelp" file,
+ user can edit it to insert his favorite commands, new account can contain a
+ default contents.
+- Make 'winminheight' a local option, so that the user can set a minimal
+ height for the help window (and other windows).
+- ":help :s^I" should expand to ":help :substitute".
+- Make the help key (<F1>) context sensitive?
+- Learn mode: show short help while typing commands.
+
+
+User Friendlier:
+8 Windows install with install.exe: Use .exe instead of .bat files for
+ links, so that command line arguments are passed on unmodified? (Walter
+ Briscoe)
+8 Windows install: Be able to associate Vim with a selection of file types?
+8 Windows uninstall: Have uninstal.c delete the vimfiles directories that
+ dosinst.c creates. List the contents of the directory (recursively) if
+ the user asks for it. Requires an implementation of "rm -rf".
+8 Remember the name of the vimrc file that was used (~/.vimrc, $VIM/_vimrc,
+ $HOME/_vimrc, etc.) and add "edit vimrc" to the File menu.
+- Add a way to save local settings and mappings into a new plugin file.
+ ":mkplugin <file>"?
+8 Add ":plugininstall" command. Can be used to install a plugin file that
+ includes documentation. Let the user select a directory from
+ 'runtimepath'.
+ " Vim plugin
+ <main plugin code>
+ " >>> plugin help start <<<
+ <plugin docs>
+- Add mappings local to a window: ":map <window> ..."?
+9 Add buffer-local menu. Should offer a choice between removing the menu or
+ disabling it. Be careful that tear-offs don't disappear (keep one empty
+ item?).
+ Alternative: use BufEnter and BufLeave autocommands.
+8 make a vimtutor script for Amiga and other systems.
+7 Add the arguments for configure to the ":version" output?
+7 When Vim detects a file is being edited elsewhere and it's a gvim session
+ of the same user it should offer a "Raise" button, so that the other gvim
+ window can be displayed. (Eduard)
+8 Support saving and restoring session for X windows? It should work to do
+ ":mksession" and use "-S fname" for the restart command. The
+ gui_x11_wm_protocol_handler() already takes care of the rest.
+ global_event_filter() for GTK.
+
+
+Tab pages:
+9 GUI implementation for the tab pages line for other systems.
+7 GUI: Control over the appearance of the text in the labels (bold, color,
+ font, etc.)
+8 Make GUI menu in tab pages line configurable. Like the popup menu.
+8 balloons for the tab page labels that are shortened to show the full path.
+8 :tabmove +N move tab page N pages forward
+8 :tabmove -N move tab page N pages backward
+7 :tabdup duplicate the tab with all its windows.
+7 Option to put tab line at the left or right? Need an option to specify
+ its width. It's like a separate window with ":tabs" output.
+7 Add local variables for each tab page?
+8 Add local options for each tab page? E.g., 'diffopt' could differ between
+ tab pages.
+7 Add local highlighting for each tab page?
+7 Add local directory for tab pages? How would this interfere with
+ window-local directories?
+
+
+Spell checking:
+- have some way not to give spelling errors for a range of characters.
+ E.g. for Chinese and other languages with specific characters for which we
+ don't have a spell file. Useful when there is also text in other
+ languages in the file.
+- Support more regions? Caolan McNamara argues it's needed for es_XX.
+ https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=219777
+- Unicode defines another quote character: 0x2019. Use it as an equivalent
+ of a single quote, thus use it as a word character like a quote and match
+ with words, replacing the curly quote with a single quote.
+- Could filter &eacute; things for HTML before doing spell checking.
+ Similarly for TeX.
+- The Hungarian spell file uses four extra characters in the FOL/UPP/LOW
+ items than other spell files with the ISO-8859-2 encoding, that causes
+ problem when changing 'spelllang'. There is no obvious way to fix this.
+- Considering Hunspell 1.1.4:
+ What does MAXNGRAMSUGS do?
+ Is COMPLEXPREFIXES necessary when we have flags for affixes?
+- Support spelling words in CamelCase as if they were two separate words.
+ Requires some option to enable it. (Timothy Knox)
+- There is no Finnish spell checking file. For openoffice Voikko is now
+ used, which is based on Malaga: http://home.arcor.de/bjoern-beutel/malaga/
+ (Teemu Likonen)
+8 ":mkspell" still takes much too long in Hungarian dictionary from
+ hunspell. Only solution appears to be to postpone secondary suffixes.
+8 Handle postponed prefix with COMPOUNDPERMITFLAG or COMPOUNDFORBIDFLAG.
+ WFP_COMPPERMIT and WFP_COMPFORBID
+8 implement use of <compoptions> in .spl file:
+ implement CHECKCOMPOUNDREP: when a compound word seems to be OK apply REP
+ items and check if the result is a valid word.
+ implement CHECKCOMPOUNDDUP
+ implement CHECKCOMPOUNDTRIPLE
+ Add CHECKCOMPOUNDCASE: when compounding make leading capital lower case.
+ How is it supposed to work?
+- Add a command the repeats ]s and z=, showing the misspelled word in its
+ context. Thus to spell-check a whole file.
+- suggestion for "KG" to "kg" when it's keepcase.
+- For flags on affixes: Use a "AFFCOMPSET" flag; means the compound flags of
+ the word are not used.
+- Support breakpoint character ? 0xb7 and ignore it? Makes it possible to
+ use same wordlist for hyphenation.
+- Compound word is accepted if nr of words is <= COMPOUNDWORDMAX OR nr of
+ syllables <= COMPOUNDSYLMAX. Specify using AND in the affix file?
+- NEEDCOMPOUND also used for affix? Or is this called ONLYINCOMPOUND now?
+ Or is ONLYINCOMPOUND only for inside a compound, not at start or end?
+- Do we need a flag for the rule that when compounding is done the following
+ word doesn't have a capital after a word character, even for Onecap words?
+- New hunspell home page: http://hunspell.sourceforge.net/
+ - Version 1.1.0 is out now, look into that.
+ - Lots of code depends on LANG, that isn't right. Enable each mechanism
+ in the affix file separately.
+ - Example with compounding dash is bad, gets in the way of setting
+ COMPOUNDMIN and COMPOUNDWORDMAX to a reasonable value.
+ - PSEUDOROOT == NEEDAFFIX
+ - COMPOUNDROOT -> COMPOUNDED? For a word that already is a compound word
+ Or use COMPOUNDED2, COMPOUNDED3, etc.
+- CIRCUMFIX: when a word uses a prefix marked with the CIRCUMFIX flag, then
+ the word must also have a suffix marked with the CIRCUMFIX flag. It's a
+ bit primitive, since only one flag is used, which doesn't allow matching
+ specific prefixes with suffixes.
+ Alternative:
+ PSFX {flag} {pchop} {padd} {pcond} {schop} {sadd}[/flags] {scond}
+ We might not need this at all, you can use the NEEDAFFIX flag and the
+ affix which is required.
+- When a suffix has more than one syllable, it may count as a word for
+ COMPOUNDWORDMAX.
+- Add flags to count extra syllables in a word. SYLLABLEADD1 SYLLABLEADD2,
+ etc.? Or make it possible to specify the syllable count of a word
+ directly, e.g., after another slash: /abc/3
+- MORPHO item in affix file: ignore TAB and morphological field after
+ word/flags and affix.
+- Implement multiple flags for compound words and CMP item?
+ Await comments from other spell checking authors.
+- Also see tklspell: http://tkltrans.sourceforge.net/
+8 Charles Campbell asks for method to add "contained" groups to existing
+ syntax items (to add @Spell).
+ Add ":syntax contains {pattern} add=@Spell" command? A bit like ":syn
+ cluster" but change the contains list directly for matching syntax items.
+- References: MySpell library (in OpenOffice.org).
+ http://spellchecker.mozdev.org/source.html
+ http://whiteboard.openoffice.org/source/browse/whiteboard/lingucomponent/source/spellcheck/myspell/
+ author: Kevin Hendricks <kevin.hendricks@sympatico.ca>
+8 It is currently not possible to mark "can not" as rare, because "can" and
+ "not" are good words. Find a way to let "rare" overrule "good"?
+8 Make "en-rare" spell file? Ask Charles Campbell.
+8 The English dictionaries for different regions are not consistent in their
+ use of words with a dash.
+7 Insert mode completion mechanism that uses the spell word lists.
+8 Add hl groups to 'spelllang'?
+ :set spelllang=en_us,en-rare/SpellRare,en-math/SpellMath
+ More complicated: Regions with different languages? E.g., comments
+ in English, strings in German (po file).
+
+
+Diff mode:
+9 Instead invoking an external diff program, use builtin code. One can be
+ found here: http://www.ioplex.com/~miallen/libmba/dl/src/diff.c
+ It's quite big and badly documented though.
+8 Use diff mode to show the changes made in a buffer (compared to the file).
+ Use an unnamed buffer, like doing:
+ new | set bt=nofile | r # | 0d_ | diffthis | wincmd p | diffthis
+ Also show difference with the file when editing started? Should show what
+ can be undone. (Tom Popovich)
+7 Add cursor-binding: when moving the cursor in one diff'ed buffer, also
+ move it in other diff'ed buffers, so that CTRL-W commands go to the same
+ location.
+
+
+Folding:
+ (commands still available: zI zJ zK zp zP zq zQ zV zy zY;
+ secondary: zB zS zT zZ, z=)
+8 Vertical folds: looks like vertically split windows, but the cursor moves
+ through the vertical separator, separator moves when scrolling.
+8 Add "z/" and "z?" for searching in not folded text only.
+9 Add search pattern item to only match in closed or open fold and/or fold
+ with certain level. Allows doing ":g/pat/cmd" to work on closed folds.
+7 Use "++--", "+++--" for different levels instead of "+---" "+----".
+8 When a closed fold is displayed open because of 'foldminlines', the
+ behavior of commands is still like the fold is closed. How to make the
+ user aware of this?
+8 Add an option 'foldskip' with values like 'foldopen' that specifies which
+ commands skip over a closed fold.
+8 "H" and "L" count buffer lines instead of window lines. (Servatius Brandt)
+8 Add a way to add fold-plugins. Johannes Zellner has one for VB.
+7 When using manual folding, the undo command should also restore folds.
+- Allow completely hiding a closed fold. E.g., by setting 'foldtext' to an
+ empty string. Require showing a character in 'foldcolumn' to avoid the
+ missing line goes unnoticed.
+ How to implement this?
+- When pressing the down arrow of a scrollbar, a closed fold doesn't scroll
+ until after a long time. How to make scrolling with closed folds
+ smoother?
+- When creating a session, also store folds for buffers in the buffer list,
+ using the wininfo in wi_folds.
+- When currently editing the first file in the argument list the session
+ file can contain:
+ args version.c main.c
+ edit version.c
+ Can editing version.c twice be avoided?
+- 'foldmethod' "textobject": fold on sections and paragraph text objects.
+- "zuf": undo change in manual fold. "zUf" redo change in manual fold. How
+ to implement this?
+- "zJ" command: add the line or fold below the fold in the fold under the
+ cursor.
+- 'foldmethod' "syntax": "fold=3" argument: set fold level for a region or
+ match.
+- Apply a new foldlevel to a range of lines. (Steve Litt)
+8 Have some way to restrict commands to not folded text. Also commands like
+ searches.
+
+
+Multi-byte characters:
+- When editing a file with both utf-8 and latin1 text Vim always falls back
+ to latin1. Add a command to convert the latin1 characters to utf-8?
+ :unmix utf-8,latin1 filename
+ Would only work when 'encoding' is utf-8.
+9 When the tail byte of a double-byte character is illegal (e.g., a CR), the
+ display is messed up (Yasuhiro Matsumoto). Should check for illegal
+ double-byte characters and display them differently (display each single
+ byte).
+9 'fenc' in modeline problem: add option to reload the file when 'fenc' is
+ set to a different value in a modeline? Option can be default on. Could
+ it be done with an autocommand?
+8 Add an item in 'fileencodings' to check the first lines of a file for
+ the encoding. See Python PEP: http://www.python.org/peps/pep-0263.html.
+ To avoid getting a wrong encoding only accept something Emacs-like:
+ "-*- coding: enc-na_me.foo -*-" and "-*- coding= enc-na_me.foo -*-"
+ Match with "-\*-\s*coding[:=]\s*\([::word::-_.]\+\)\s*-\*-" and use first
+ item.
+8 Add an item in 'fileencodings' to check the first line of an XML file for
+ the encoding. <?xml version="1.0" encoding="UTF-8"?> Or "charset=UTF-8"?
+ For HTML look for "charset=utf-8".
+8 The quickfix file is read without conversion, thus in 'encoding'. Add an
+ option to specify the encoding of the errorfile and convert it. Also for
+ ":grep" and ":helpgrep".
+ More generic solution: support a filter (e.g., by calling a function).
+8 When a file was converted from 'fileencoding' to 'encoding', a tag search
+ should also do this on the search pattern. (Andrzej M. Ostruszka)
+8 When filtering changes the encoding 'fileencoding' may not work. E.g.,
+ when using xxd and 'fileencoding' is "utf-16". Add an option to set a
+ different fileencoding for filter output?
+7 When converting a file fails, mention which byte could not be converted,
+ so that the user can fix the problem.
+8 Add configure option to be able to disable using the iconv library. (Udo
+ Schweigert)
+9 'aleph' should be set to 1488 for Unicode. (Zvi Har'El)
+8 Should add test for using various commands with multi-byte characters.
+8 'infercase' doesn't work with multi-byte characters.
+8 toupper() function doesn't handle byte count changes.
+7 Searching and composing characters:
+ When searching, should order of composing characters be ignored?
+ Add special item to match with a composing character, zero-width, so that
+ one can replace a base character and keep the composing characters.
+ Add a special item to match with a composing character, so that composing
+ characters can be manipulated.
+ Add a modifier to ignore composing characters, only compare base
+ characters. Useful for Hebrew (Ron Aaron)
+8 Should implement 'delcombine' for command line editing.
+8 Detect overlong UTF-8 sequences and handle them like illegal bytes.
+8 ":s/x/\u\1/" doesn't work, making uppercase isn't done for multi-byte
+ characters.
+8 UTF-8: "r" in Visual mode doesn't take composing characters.
+8 UTF-8: When there is a precomposed character in the font, use it instead
+ of a character and a composing character. See xterm for an example.
+7 When a character can't be displayed, display its digraph instead.
+ 'display' option to specify this.
+7 Use ideas for nl_langinfo() from Markus Kuhn in enc_default():
+ (www.cl.cam.ac.uk/~mgk25/ucs/langinfo.c)
+- GTK and Win32: Allow selecting fonts for 'guifontset' with the
+ fontselector somehow.
+- GTK and Win32: make it possible to set the font for the menu to make it
+ possible to have 'encoding' different from the current locale.
+- dbcs_class() only works for Japanese and Korean. Implement this for
+ other encodings. The "euc-jp" and "euc-kr" choices might be wrong.
+- Find some way to automatically select the right GUI font or fontset,
+ depending on the default value of 'encoding'.
+ Irrelevant in the GTK+ 2 GUI so long as UTF-8 is used.
+ For Windows, the charset_pairs[] table could be used. But how do we know
+ if a font exists?
+- Do keyboard conversion from 'termencoding' to 'encoding' with
+ convert_input() for Mac GUI and RiscOS GUI.
+- Add mnemonics from RFC1345 longer than two characters.
+ Support CTRL-K _{mnemonic}_
+7 In "-- INSERT (lang) --" show the name of the keymap used instead of
+ "lang". (Ilya Dogolazky)
+- Make 'breakat' accept multi-byte characters. Problem: can't use a lookup
+ table anymore (breakat_flags[]).
+ Simplistic solution: when 'formatoptions' contains "m" also break a line
+ at a multi-byte character >= 0x100.
+- Add the possibility to enter mappings which are used whenever normal text
+ could be entered. E.g., for "f" command. But not in Normal mode. Sort
+ of opposite of 'langmap'. Use ":tmap" command?
+- When breaking a line, take properties of multi-byte characters into
+ account. The "linebreak" program from Bruno Haible can do it:
+ ftp://ftp.ilog.fr/pub/Users/haible/gnu/linebreak-0.1.tar.gz
+ But it's very complicated...
+
+
+Printing:
+7 Implement "undercurl" for printing.
+- Add "page width" to wrap long lines.
+- Win32: use a font dialog for setting 'printfont'. Can reuse the code for
+ the 'guifont' dialog, put the common code in a separate function.
+- Add the file timestamp to the page header (with an option). (George
+ Reilly)
+- Win32: when 'printfont' is empty use 'guifont'.
+- Unix: Use some dialog box to do the obvious settings (paper size, printer
+ name, portrait/landscape, etc).
+- PostScript: Only works for text that can be converted to an 8-bit
+ character set. How to support Unicode fully?
+- Allow specifying the paper size, instead of using a standard size. Same
+ units as for the margins.
+- Support right-to-left text?
+8 Make the foreground color darkening function preserve the hue of the
+ color.
+
+
+Syntax highlighting:
+8 Make ":syn off" use 'runtimepath' instead of $VIMRUNTIME. (Gary Johnson)
+ Should do the same for ":syn on" and ":syn manual".
+8 Support "containedin" argument for ":syn include", so that the defined
+ cluster can be added to existing syntax items.
+8 C syntax: Don't highlight {} as errors inside () when used like this:
+ "({ something })", often used in GCC code.
+7 Add a "startgroup" to a region. Used like "nextgroup" inside the region,
+ preferred item at the start of the region. (Charles Campbell)
+8 When editing a new file without a name and giving it a name (by writing
+ it) and 'filetype' is not set, detect the filetype. Avoid doing it for
+ ":wq file".
+7 For "nextgroup" we have skipwhite, skipnl and skipempty. It would be
+ really nice to be able to skip with a pattern. Or skip with a syntax
+ group. (Nikolai Weibull, 2007 Feb 27)
+8 Make conversion to HTML faster (Write it in C or pre-compile the script).
+9 There is still a redraw bug somewhere. Probably because a cached state is
+ used in a wrong way. I can't reproduce it...
+7 Be able to change only the background highlighting. Useful for Diff* and
+ Search highlighting.
+7 When 'number' is set highlight the number of the current line.
+ Must be enabled with an option, because it slows down display updating.
+8 Allow the user to add items to the Syntax menu sorted, without having to
+ change this for each release.
+8 Add a "matchcontains" for regions: items contained in the start or end
+ pattern, but not in the body.
+8 Add a "keepend-contained" argument: Don't change the end of an item this
+ one is contained in. Like "keepend" but specified on the contained item,
+ instead of the containing item.
+8 cpp.vim: In C++ it's allowed to use {} inside ().
+8 Some syntax files set 'iskeyword'. When switching to another filetype
+ this isn't reset. Add a special keyword definition for the syntax rules?
+ When this is done, use vim.vim syntax highlighting for help file examples,
+ but without ":" in 'iskeyword' for syntax.
+8 Add specific syntax item to match with parens/braces that don't have a
+ "%" match. :syntax nomatch cMatchError (,{,[,),},] [contained]
+8 Highlight the text between two matching parens (e.g., with a grey
+ background) when on one of the parens or in between them.
+ Option for the matchparen plugin?
+8 Add a command to jump to the next character highlighted with "Error".
+8 When using a cterm, and no ctermfg or ctermbg are defined, use start/stop
+ sequences. Add remark in docs that :if 'term' == "term-name" should be
+ used.
+8 Add @spell cluster to String and Comment groups for many languages. Will
+ allow spell checking. (Fleiner)
+8 When listing syntax items, try to sort the keywords alphabetically. And
+ re-insert the [] if possible.
+8 Make it possible to use color of text for Visual highlight group (like for
+ the Cursor).
+8 It would be useful to make the highlight group name an expression. Then
+ when there is a match, the expression would be evaluated to find out what
+ highlight group to use. Could be used to check if the shell used in a
+ password file appears in /etc/shells. (Nikolai Weibull)
+ syn match =s:checkShell(v:match) contained 'pattern'
+8 Make it possible to only highlight a sub-expression of a match. Like
+ using "\1" in a ":s" command.
+8 Support for deleting syntax items:
+ :syn keyword cTodo remove this
+ :syn match cTodo remove "pattern"
+ :syn region cString remove start="this" end="that"
+8 Add possibility to sync on something else, when the syncing in one way
+ doesn't find match. For HTML: When no {script} is found, try looking for
+ a '<'. (Fleiner)
+7 Replace the synchronizing method with a state machine specification?
+ Should be able to start at any line in the file, search forwards or
+ backwards, and use the result of matching a pattern.
+7 Use parsing like awk, so that e.g., a ( without a matching ) can be
+ detected.
+8 Make it possible to use "inverted" highlighting, invert the original
+ character. For Visual mode. (xterm-selection already does this).
+8 Highlight non-printable characters with "SpecialChar", linked to
+ "Special". Display them with the digraph characters, if possible.
+8 Highlight the clipboard-selection with a highlight group.
+8 Be able to reset highlighting to its original (default) values.
+7 Be able to write current highlighting to a file as commands, similar to
+ ":mkvimrc".
+8 Improve c.vim:
+ - Add check for unterminated strings, with a variable to switch it on:
+ "c_strict_ansi".
+ - Detect unbalanced "#endif". Requires looking back a long way...
+8 Add an option to restrict the updating of syntax highlighting to the
+ current line while in Insert mode.
+8 When guessing value of 'background', the syntax file has already been
+ loaded (from the .gvimrc). After changing 'background', load it again?
+8 Add ":syn resync" command, to re-parse the whole file until the current
+ display position.
+8 Should support "me" offset for a region start pattern. To be used to
+ allow searching for the end pattern inside the match of the end pattern.
+ Example: syn region pikeXX start="([^{]" end=")" should work on "()".
+8 When using a regexp for "contains=", should delay matching with it until
+ redrawing happens. Set a flag when a group is added, check this flag when
+ highlighting starts.
+8 Some terminals can display colors like the GUI. Add some setting to use
+ GUI colors for the terminal? With something to define the escape
+ sequence.
+7 It's possible for an item to be transparent, so that the colors of an item
+ lower on the stack is used. Also do this with highlighting, so that the
+ user can set transparent highlighting? E.g. a number in a C comment would
+ get the color of a comment, a number in an assignment Normal. (Nikolai
+ Weibull)
+7 Add "semitrans": Add highlighting. E.g., make the text bold, but keep the
+ colors. And add colors, so that Green+Red becomes Yellow.
+ E.g. for this html:
+ <B> bold text <I> italic+bold text </B> italic text </I>
+7 CTRL-] checks the highlight group for finding out what the tag is.
+7 Add an explanation how a list of words can be used to highlight misspelled
+ words.
+8 Add more command line completion for :syntax.
+8 Add more command line completion for :highlight.
+7 Should find a better way to parse the :syntax and :highlight commands.
+ Use tables or lists that can be shared by parsing for execution and
+ completion?
+8 Add ColorSchemePost autocommand event, so that scripts can set up their
+ highlighting. (Salman Halim)
+7 Add a few sets of colors (e.g. Borland Turbo C one). With a menu to
+ select one of the sets.
+8 Add offsets to sub-matches: "\(a*\) *"he=e1-1
+ 'e' is end of match 'e1' is end of sub-match 1, 's2' is start of submatch
+ 2, etc.
+8 In Insert mode, when there are typeahead characters, postpone the
+ highlighting (for "." command).
+8 Syncing on comments isn't 100% correct when / / lines mix with / * and * /.
+ For example: What about a line that starts with / / and contains * /?
+8 Ignore / * and * / inside strings, when syncing.
+7 Build a few more syntax files from the file "/usr/share/misc/vgrindefs":
+ ISP, LDL, Icon, ratfor. And check "nedit/source/highlight.c".
+6 Add possibility to have background color continue until the right edge of
+ the window. Useful for comment blocks and function headings. (Rogall)
+- Make it possible to add "contains" items for all items in a group. Useful
+ when extending an already existing syntax file.
+- Add line-continuation pattern for non-syncing items too?
+- Add possibility to highlight the whole line, including the right margin
+ (for comment blocks).
+- Add 'hlmatch' option: List of flags:
+ 'c': highlight match for character under the cursor.
+ 'b': highlight the previous (, and its match.
+ 'a': highlight all text from the previous ( until its match.
+ Also for {}, <>, etc.?
+ 'e': highlight all braces without a match (slow?)
+ OR: add an argument "cursor" to the syntax command, which means that the
+ region/match/keyword is only highlighted when the cursor is on it.
+ (Campbell)
+ Or do it like Elvis: define text objects and how to highlight them around
+ the cursor. (Iain Truskett)
+7 Make it possible to use all words in the tags files as Keyword.
+ Can also be done with a script (but it's slow).
+7 Make it possible to call a ":" command when a match is found. Should
+ allow for adding keywords from the text (e.g. variables that are set).
+ And allows for sections with different highlighting.
+7 Add highlight group for commandline: "Commandline". Make sure it
+ highlights the command line while typing a command, and any output from
+ messages. And external commands?
+8 Make a version that works like less, but with highlighting: read stdin for
+ text, exit at end of file, don't allow editing, etc. moreim? lessim?
+7 SpecialKey highlighting overrules syntax highlighting. Can't give an
+ unprintable char another color. Would be useful for ^M at end of line.
+
+
+Built-in script language:
+8 Make the filename and line number available to script functions, so that
+ they can give useful debugging info. The whole call stack would be ideal.
+7 Execute a function with standard option values. No need to save and
+ restore option values. Especially useful for new options. Problem: how
+ to avoid a performance penalty (esp. for string options)?
+8 Add referring to key options with "&t_xx". Both for "echo &t_xx" and
+ ":let &t_xx =". Useful for making portable mappings.
+- Add ":let var ?= value", conditional assignment. Patch by Dave Eggum,
+ 2006 Dec 11.
+- range for ":exec", pass it on to the executed command. (Webb)
+8 ":{range}source": source the lines from the current file.
+ You can already yank lines and use :@" to execute them.
+ Most of do_source() would not be used, need a new function.
+ It's easy when not doing breakpoints or profiling.
+ Requires copying the lines into a list and then creating a function to
+ execute lines from the list. Similar to getnextac().
+7 ":include" command: just like ":source" but doesn't start a new scriptID?
+ Will be tricky for the list of script names.
+8 Have a look at VSEL. Would it be useful to include? (Bigham)
+8 Add ":fungroup" command, to group function definitions together. When
+ encountered, all functions in the group are removed. Suggest using an
+ obscure name to avoid name clashes. Require a ":fungroup END" in the same
+ sourced file? Assume the group ends at the end of the file. Handle
+ nested packages?
+ Alternative: Support packages. {package-name}:{function-name}().
+ Packages are loaded automatically when first used, from
+ $VIMRUNTIME/packages (or use a search path).
+7 Pre-parse or compile Vim scripts into a bytecode.
+ 1. Put the bytecode with the original script, with an ":if
+ has('bytecode')" around it, so that it's only used with a Vim that
+ supports it. Update the code with a command, can be used in an
+ autocommand.
+ 2. Use a ".vic" file (like Python use .pyc). Create it when writing a
+ .vim file. Problem: distribution.
+ 3. Use a cache directory for each user. How to recognize which cached
+ file belongs to a sourced script?
+7 Add argument to winwidth() to subtract the space taken by 'foldcolumn',
+ signs and/or 'number'.
+6 Add ++ and -- operators? They only work on variables (lvals), how to
+ implement this?
+8 Add functions:
+ has(":command") Check if ":command" works. compare function
+ with "ex_ni". E.g. for ":simalt".
+ system() With a List argument. Bypasses the shell, use
+ exec() directly. (Bob Hiestand)
+ escape() Add argument to specify what to escape with.
+ modestack() Instead of just the current mode return the
+ stack of Insert / CTRL-O / :normal things.
+ realname() Get user name (first, last, full)
+ user_fullname() patch by Nikolai Weibull, Nov
+ 3 2002
+ Only add this when also implemented for
+ non-Unix systems, otherwise a shell cmd could
+ be used.
+ get_user_name() gets login name.
+ menuprop({name}, {idx}, {what})
+ Get menu property of menu {name} item {idx}.
+ menuprop("", 1, "name") returns "File".
+ menuprop("File", 1, "n") returns "nmenu
+ File.Open..." argument.
+ Patch by Ilya Sher, 2004 Apr 22
+ Return a list of menus and/or a dictionary
+ with properties instead.
+ mapname({idx}, mode) return the name of the idx'th mapping.
+ Patch by Ilya Sher, 2004 Mar 4.
+ Return a list instead.
+ char2hex() convert char string to hex string.
+ attributes() return file protection flags "drwxrwxrwx"
+ filecopy(from, to) Copy a file
+ shorten(fname) shorten a file name, like home_replace()
+ perl(cmd) call Perl and return string
+ inputrl() like input() but right-to-left
+ typed() return the characters typed and consumed (to
+ find out what happened)
+ virtualmode() add argument to obtain whether "$" was used in
+ Visual block mode.
+ getacp() Win32: get codepage (Glenn Maynard)
+ deletebufline() delete line in any buffer
+ appendbufline() append line in any buffer
+ libcall() Allow more than one argument.
+ libcallext() Like libcall(), but using a callback function
+ to allow the library to execute a command or
+ evaluate an expression.
+7 Make bufname("'0") return the buffer name from mark '0. How to get the
+ column and line number? col("'0") currently returns zero.
+8 argc() returns 0 when using "vim -t tag". How to detect that no file was
+ specified in any way? To be able to jump to the last edited file.
+8 Pass the command line arguments to Vim scripts in some way. As v:args
+ List? Or extra parameter to argv()?
+8 Add command arguments with three dashes, passed on to Vim scripts.
+7 Add optional arguments to user functions:
+ :func myFunc(arg1, arg2, arg3 = "blah", arg4 = 17)
+6 User functions: Functions local to buffer "b:func()"?
+8 For Strings add ":let var[{expr}] = {expr}". When past the end of "var"
+ just ignore.
+8 The "= register should be writable, if followed by the name of a variable,
+ option or environment variable.
+8 ":let &option" should list the value of the option.
+8 ":let Func().foo = value" should work, also when "foo" doesn't exist.
+ Also: ":let Func()[foo] = value" should work. Same for a List.
+7 Add synIDlist(), making the whole list of syntax items on the syntax stack
+ available as a List.
+8 Add autocommand-event for when a variable is changed:
+ :au VarChanged {varname} {commands}
+8 Add "has("gui_capable")", to check if the GUI can be started.
+8 Add possibility to use variables like registers: characterwise (default),
+ linewise (when ending in '\n'), blockwise (when ending in '\001'). reg0,
+ rega, reg%, etc. Add functions linewise({expr}), blockwise({expr}) and
+ charwise({expr}).
+7 Make it possible to do any command on a string variable (make a buffer
+ with one line, containing the string). Maybe add an (invisible) scratch
+ buffer for this?
+ result = scratch(string, command)
+ result = apply(string, command)
+ result = execute(string, command)
+ "command" would use <> notation.
+ Does scratch buffer have a number? Or re-use same number?
+7 Add function to generate unique number (date in milliseconds).
+
+
+Robustness:
+6 Add file locking. Lock a file when starting to edit it with flock() or
+ fcntl(). This patch has advisory file locking while reading/writing
+ the file for Vim 5.4: ~/vim/patches/kahn_file_locking .
+ The patch is incomplete (needs support for more systems, autoconf).
+ Andy doesn't have time to work on it.
+ Disadvantage: Need to find ways to gracefully handle failure to obtain a
+ lock. When to release a lock: When buffer is unloaded?
+
+
+Performance:
+7 For string variables up to 3 bytes don't allocate memory, use v_list
+ itself as a character array. Use VAR_SSTRING (short string).
+7 Add 'lazysize' option: Above this size Vim doesn't load everything before
+ starting to edit a file. Things like 'fileencodings' only work up to this
+ size, modelines only work at the top. Useful for large log files where
+ you only want to look at the first few pages. Use zero to disable it.
+8 move_lines() copies every line into allocated memory, making reloading a
+ buffer a lot slower than re-editing the file. Can the memline be locked
+ so that we don't need to make a copy? Or avoid invoking ml_updatechunk(),
+ that is taking a lot of time. (Ralf Wildenhues, 2008 Jul 7)
+ With a patch, but does it work?
+8 Instead of loading rgb.txt every time a color wasn't recognized load it
+ once and keep it in memory. Move the code to a common place to avoid
+ repeating it in various system files.
+8 Turn b_syn_ic and b_syn_containedin into b_syn_flags.
+9 Loading menu.vim still takes quite a bit of time. How to make it faster?
+8 in_id_list() takes much time for syntax highlighting. Cache the result?
+7 setpcmark() shifts the jumplist, this takes quite a bit of time when
+ jumping around. Instead use an index for the start?
+8 When displaying a space with only foreground highlighting, it's the same
+ as a space without attributes. Avoid displaying spaces for the "~" lines
+ when starting up in a color terminal.
+8 Avoid alloc() for scratch buffer use, esp. in syntax.c. It's very slow on
+ Win16.
+8 Profiling shows that in_id_list() is used very often for C code. Can this
+ function be improved?
+8 For an existing file, the page size of the swap file is always the
+ default, instead of using the block size of the device, because the swap
+ file is created only after setting the block size in mf_open(). How can
+ this be improved?
+8 Set default for 'ttyscroll' to half a screen height? Should speed up
+ MS-DOS version. (Negri)
+7 C syntax highlighting gets a lot slower after ":set foldmethod=syntax".
+ (Charles Campbell) Inserting a "{" is very slow. (dman)
+7 HTML syntax highlighting is slow for long lines. Try displaying
+ http://www.theregister.co.uk/content/4/22908.html. (Andre Pang)
+7 Check how performance of loading the wordlist can be improved (adding a
+ lot of abbreviations).
+7 MS-DOS console: Add t_DL support, to make scrolling faster.
+7 Compile Ex commands to byte codes. Store byte codes in a vim script file
+ at the end, after "compiled:. Make it look like a single comment line
+ for old Vim versions. Insert first line "Vim script compiled <timestamp>.
+ Only used compiled code when timestamp matches the file stat.
+ Add command to compile a vim script and add it to the file in-place.
+ Split Ex command executing into a parsing and executing phase.
+ Use compiled code for functions, while loops, etc.
+8 When editing a file with extremely long lines (e.g., an executable), the
+ "linerest" in readfile() is allocated twice to be able to copy what was
+ read so far. Use realloc() instead? Or split the line when allocating
+ memory fails and "linerest" is big (> 100000)?
+8 When defining autocommands (e.g., from $VIMRUNTIME/filetype.vim), need to
+ compare each pattern with all existing patterns. Use a hash code to avoid
+ using strcmp() too often?
+7 Include turbo_loader patches, speeding up reading a file?
+ Speed up reading a file by reading it into a fixed-size buffer, creating
+ the list of indexes in another buffer, and then copying the result into a
+ memfile block with two copies. Then read the next block into another
+ fixed-size buffer, create the second list of indexes and copy text from
+ the two blocks to the memfile block.
+7 do_cmdline(): Avoid that the command line is copied to allocated memory
+ and freed again later all the time. For while loops, and for when called
+ with an argument that can be messed with.
+ Generic solution: Make a struct that contains a pointer and a flag that
+ indicates if the pointer should be freed when replaced.
+7 Check that the file size is not more than "sizeof(long)".
+- Further improve finding mappings in maphash[] in vgetorpeek()
+8 Syntax highlighting is slow when deleting lines. Try in
+ $VIMRUNTIME/filetype.vim.
+- "out of memory" after deleting (1,$d) and changing (:%s/^/> /) a lot of
+ lines (27000) a few times. Memory fragmentation?
+- Have a look at how pdksh does memory allocation (alloc.c). (Dalecki)
+- Do profiling on:
+ - :g/pat/normal cmd
+ - 1000ii<Esc>
+ - deleting 10Mbyte worth of lines (netscape binary)
+ - "[i" and "[d" (Yegappan Lakshmanan)
+ - ":g/^/m0" on a 450Kbyte file. And the "u".
+ - highlighting "~/vim/test/longline.tex", "~/vim/test/scwoop.tcl" and
+ "~/vim/test/lockup.pl".
+ - loading a syntax file to highlight all words not from a dictionary.
+ - editing a Vim script with syntax highlighting on (loading vim.vim).
+7 Screen updating can be further improved by only redrawing lines that were
+ changed (and lines after them, when syntax highlighting was used, and it
+ changed).
+ - On each change, remember start and end of the change.
+ - When inserting/deleting lines, remember begin, end, and line count.
+- Use macros/duarte/capicua for profiling. Nvi 1.71 is the fastest!
+- When using a file with one long line (1Mbyte), then do "$hhhh", is still
+ very slow. Avoid calling getvcol() for each "h"?
+- Executing a register, e.g. "10000@@" is slow, because ins_typebuf has to
+ move the previous commands forward each time. Pass count from
+ normal_cmd() down to do_execreg().
+- Repeating insert "1000i-<Esc>" displays --INSERT-- all the time, because of
+ the <Esc> at the end. Make this work faster (disable redrawing).
+- Avoid calls to plines() for cursor line, use w_cline_height.
+- After ":set nowrap" remove superfluous redraw with wrong hor. offset if
+ cursor is right of the screen.
+8 Make CTRL-C on Unix generate a signal, avoid using select() to check for a
+ CTRL-C (it's slow).
+
+
+Code size:
+8 GUI: When NO_CONSOLE is defined, more code can be excluded.
+- Put getline() and cookie in a struct, so only one argument has to be
+ passed to do_cmdline() and other functions.
+8 Make a GUI-only version for Unix?
+8 In buf_write _() isn't needed when setting errmsg, do it once when using
+ it.
+7 When compiling with a GUI-only version, the code for cterm colors can be
+ left out.
+8 When compiled with a GUI-only version, the termcap entries for terminals
+ can be removed.
+8 Can the check for libelf in configure.in be removed?
+
+
+Messages:
+8 When using ":q" in a changed file, the error says to "add !". Add the
+ command so that beginners understand it: "use :q!".
+8 For 'verbose' level 12 prints commands from source'ed files. How to skip
+ lines that aren't executed? Perhaps move the echoing to do_cmdline()?
+8 Use 'report' for ":bdel"? (Krishna) To avoid these messages when using a
+ script.
+- Delete message after new command has been entered and have waited for key.
+ Perhaps after ten seconds?
+- Make message history available in "msg" variables: msg1, msg2, .. msg9.
+8 When reading from stdin allow suppressing the "reading from stdin"
+ message.
+9 Check handling of overwriting of messages and delays:
+ Very wrong: errors while redrawing cause endless loop.
+ When switching to another file and screen scrolls because of the long
+ message and return must be typed, don't scroll the screen back before
+ redrawing.
+8 When address range is wrong you only get "Invalid range". Be a bit more
+ specific: Negative, beyond last line, reverse range? Include the text.
+8 Make it possible to ignore errors for a moment ('errorignore'?). Another
+ option to switch off giving error messages ('errorquiet'?). Also an option
+ not to give any messages ('quiet')? Or ":quiet on", ":quiet off".
+ Careful: For a severe error (out of memory), and when the user starts
+ typing, error messages must be switched back on.
+ Also a flag to ignore error messages for shell commands (for mappings).
+- Option to set time for emsg() sleep. Interrupt sleep when key is typed?
+ Sleep before second message?
+8 In Ex silent mode or when reading commands from a file, what exactly is
+ not printed and what is? Check ":print", ":set all", ":args", ":vers",
+ etc. At least there should be no prompt. (Smulders) And don't clear the
+ screen when reading commands from stdin. (Kendall)
+ --> Make a difference between informative messages, prompts, etc. and
+ error messages, printing text, etc.
+8 Window should be redrawn when resizing at the hit-enter prompt.
+ Also at the ":tselect" prompt. Find a generic solution for redrawing when
+ a prompt is present (with a callback function?).
+
+
+Screen updating:
+7 Add a string to the 'display' option to make CTRL-E and CTRL-Y scroll one
+ screen line, also if this means the first line doesn't start with the
+ first character (like what happens with a single line that doesn't fit).
+- screen_line():
+ - insert/delete character stuff.
+ - improve delete rest of line (spaces at end of line).
+- When moving or resizing window, try to avoid a complete redraw (esp. when
+ dragging the status line with the mouse).
+- When 'lazyredraw' set, don't echo :ex commands? Need a flag to redraw when
+ waiting for a character.
+8 Add a ":refresh [winnr]" command, to force updating a window. Useful from
+ an event handler where ":normal" can't be used. Also useful when
+ 'lazyredraw' is set in a mapping.
+7 Make 'list' and 'linebreak' work together.
+
+
+Scrolling:
+8 Add "zy" command: scroll horizontally to put the cursor in the middle.
+6 Add option to set the overlap for CTRL-F and CTRL-B. (Garhi)
+- extend 'scrollbind' option: 'scrollopt' words "search", "relative", etc..
+ Also 'e'xecute some commands (search, vertical movements) in all bound
+ windows.
+7 Add 'scrollbind' feature to make the offset of one window with the next
+ one equal to the window height. When editing one file in both windows it
+ looks like each window displays a page of the buffer.
+- Allow scrolling by dragging with the mouse (grab a character and move it
+ up/down). Like the "hand" in Acrobat reader. Use Alt-LeftMouse for this?
+ (Goldfarb)
+- Add command to execute some commands (search, vertical movements) in all
+ bound windows.
+- Add 'search' option to 'scrollopt' to allow 'scrollbind' windows to
+ be bound by regexp searches
+- Add "z>" and "z<": scroll sideways one screenful. (Campbell)
+- Add option to set the number of lines when not to scroll, instead of the
+ fixed number used now (for terminals that scroll slow with a large number
+ of lines but not with a single line).
+
+
+Autoconf:
+8 Should use acconfig.h to define prototypes that are used by autoheader.
+8 Some compilers don't give an error for "-OPT:Olimit" but a warning. (Webb)
+ Add a check for the warning, so that "Olimit" can be added automatically?
+- Autoconf: Use @datadir@ for the system independent files. Make sure the
+ system dependent and system independent files are separated. (Leitner).
+- Add autoconf check for waitpid()/wait4().
+- Remove fcntl() from autoconf, all systems have it?
+- Set default for 'dictionary', add search for dictionary to autoconf.
+
+
+Perl interface:
+8 Rename typemap file to something else?
+7 Make buffers accessed as Perl arrays. (Clark)
+7 Make it possible to compile with non-ANSI C?
+6 Tcl/Tk has the "load" command: load a shared library (.so or .dll).
+
+
+Shared libraries:
+6 Add support for loading shared libraries, and calling functions in it.
+ :libload internal-name libname
+ :libunload internal-name
+ :liblist
+ :libcall internal-name function(arg1, arg2, ...)
+ :libcall function(arg1, arg2, ...)
+ libcall() can have only one integer or String argument at the moment.
+6 Have a look on how Perl handles loading dynamic libraries.
+
+
+Tags:
+9 With ":set tags=./tags,../tags" and a tag appears in both tags files it is
+ added twice. Requires figuring out the actual file name for each found
+ match. Remove tag_fname from the match and combine it with the fname in
+ the match (without expanding or other things that take time). When
+ 'tagrelative' is off tag_fname isn't needed at all.
+8 For 'tags' wildcard in the file name is not supported, only in the path.
+ This is due to it using |file-searching|. Suboptimal solution would be to
+ make the filename or the whole option use |wildcards| globing, better
+ would be to merge the 2 kinds of globing. originally (Erik Falor, 2008
+ April 18), updated (Ian Kelling, 2008 July 4)
+8 Use a mechanism similar to omni completion to figure out the kind of tab
+ for CTRL-] and jump to the appropriate matching tag (if there are
+ several).
+ Alternative: be able to define a function that takes the tag name and uses
+ taglist() to find the right location. With indication of using CTRL-] so
+ that the context can be taken into account. (Robert Webb)
+7 Can CTRL-] (jump to tag) include a following "." and "->" to restrict the
+ number of possible matches? Check tags file for an item that has members.
+ (Flemming Madsen)
+8 Scope arguments for ":tag", e.g.: ":tag class:cPage open", like Elvis.
+8 When output of ":tselect" is long, getting the more-prompt, should be able
+ to type the tag number directly.
+7 Add the possibility to use the "-t {tag}" argument multiple times. Open a
+ window for each tag.
+7 Make output of ":tselect" a bit nicer. Use highlighting?
+7 Highlight the "tag 1 of >2" message. New highlight group, or same as "hit
+ bottom" search message.
+7 When using ":tag" at the top of the tag stack, should add another entry,
+ so CTRL-T can bring you back to where you are now AND to where you were
+ before the previous ":tag" command. (Webb)
+- When doing "[^I" or "[^D" add position to tag stack.
+- Add command to put current position to tag stack: ":tpush".
+- Add functions to save and restore the tag stack? Or a command to switch
+ to another tag stack? So that you can do something else and come back to
+ what you were working on.
+7 When using CTRL-] on someClass::someMethod, separate class from method and
+ use ":ta class:someClass someMethod".
+ Include C++ tags changes (Bertin). Change "class::func" tag into "func"
+ with "class=class"? Docs in oldmail/bertin/in.xxx.
+7 Add ":tagargs", to set values for fields:
+ :tagargs class:someclass file:version.c
+ :tagargs clear
+ These are then the default values (changes the order of priority in tag
+ matching).
+7 Support for "gtags" and "global"? With ":rtag" command?
+ There is an example for how to do this in Nvi.
+ Or do it like Elvis: 'tagprg' and 'tagprgonce' options. (Yamaguchi)
+ The Elvis method is far more flexible, do it that way.
+7 Support "col:99" extra field, to position the cursor in that column. With
+ a flag in 'cpoptions' to switch it off again.
+7 Better support for jumping to where a function or variable is used. Use
+ the id-utils, with a connection to "gid" (Emacs can do it too). Add
+ ":idselect", which uses an "ID" database (made by "mkid") like "tselect".
+
+
+Win32 GUI:
+8 Make debug mode work while starting up (vim -D). Open console window for
+ the message and input?
+7 The Python interface only works with one version of Python, selected at
+ compile time. Can this be made to work with version 2.1 and 2.2
+ dynamically?
+7 GvimExt: when there are several existing Vims, move the list to a submenu.
+ (Mike McCollister)
+8 When using "Edit with Vim" for one file it changes directory, when several
+ files are selected and using "Edit with single Vim" the directory isn't
+ changed. At least change directory when the path is the same for all
+ files. Perhaps just use the path of the first file or use the longest
+ common part of the path.
+8 Add font argument to set the lfCharSet. (Bobcik)
+8 Somehow automatically detect the system language and set $LANG, so that
+ gettext and menus work.
+8 Could keep console open to run multiple commands, to avoid the need to hit
+ return in every console.
+ Also: Look at how Emacs does run external commands:
+ http://www.cs.washington.edu/homes/voelker/ntemacs.html.
+8 Need a separate PopUp menu for modeless selection. Need two new commands:
+ Copy selection to clipboard, Paste selection (as typed text).
+8 Support copy/paste for other file formats. At least HTML, perhaps RTF.
+ Add "copy special" and "paste special" commands?
+7 Use different default colors, to match the current Windows color scheme.
+ Sys_WindowText, Sys_Window, etc. (Lionel Schaffhauser)
+7 Use <C-Tab> to cycle through open windows (e.g., the find dialog).
+7 <Esc> should close a dialog.
+7 Keep the console for external commands open. Don't wait for a key to be
+ hit. Re-open it when the user has closed it anyway. Or use a prepended
+ command: ":nowait {cmd}", or ":quiet", which executes {cmd} without any
+ prompts.
+7 Should be able to set an option so that when you double click a file that
+ is associated with Vim, you can either get a new instance of Vim, or have
+ the file added into an already running Vim.
+7 The "-P" argument only works for the current codepage. Use wide
+ functions to find the window title.
+
+
+GUI:
+8 Make inputdialog() work for Photon, Amiga, RiscOS.
+- <C--> cannot be mapped. Should be possible to recognize this as a
+ normal "-" with the Ctrl modifier.
+7 Implement ":popup" for other systems than Windows.
+8 Implement ":tearoff" for other systems than Win32 GUI.
+6 Implement ":untearoff": hide a torn-off menu.
+8 When using the scrollbar to scroll, don't move the cursor position. When
+ moving the cursor: scroll to the cursor position.
+9 Make <S-Insert> paste from the clipboard by default. (Kunze)
+7 Menu local to a buffer, like mappings. Or local to a filetype?
+8 In Buffers menu, add a choice whether selecting a buffer opens it in the
+ current window, splits the window or uses ":hide".
+8 Dragging the mouse pointer outside of a Vim Window should make the text
+ scroll. Return a value from gui_send_mouse_event() to the machine
+ specific code to indicate the time in which the event should be repeated.
+8 Make it possible to ignore a mouse click when it's used to give Vim (gvim)
+ window focus. Also when a mouse click is used to bring a window to front.
+8 Make the split into system independent code and system specific code more
+ explicit. There are too many #ifdefs in gui.c.
+ If possible, separate the Vim code completely from the GUI code, to allow
+ running them in separate processes.
+7 X11: Support cursorColor resource and "-cr" argument.
+8 X11 (and others): CTRL-; is not different from ';'. Set the modifier mask
+ to include CTRL for keys where CTRL produces the same ASCII code.
+7 Add some code to handle proportional fonts on more systems? Need to draw
+ each character separately (like xterm). Also for when a double-width font
+ is not exactly double-width. (Maeda)
+8 Should take font from xterm where gvim was started (if no other default).
+8 Selecting font names in X11 is difficult, make a script or something to
+ select one.
+8 Visual highlighting should keep the same font (bold, italic, etc.).
+8 Add flag to 'guioptions' to not put anything in the clipboard at all?
+8 Should support a way to use keys that we don't recognize yet. Add a
+ command that adds entries to special_keys somehow. How do we make this
+ portable (X11, Win32, ..)?
+7 Add a flag to 'guioptions' that tells not to remove inactive menu items.
+ For systems where greying-out or removing menu items is very slow. The
+ menu items would remain visibly normally, but not do anything.
+7 Add ":minimize" and ":maximize", which iconize the window and back.
+ Useful when using gvim to run a script (e.g. 2html.vim).
+7 X11: Is it possible to free allocated colors, so that other programs can
+ use them again? Otherwise, allow disabling allocating the default colors.
+ Or allocate an own colormap (check UAE). With an option to use it. For
+ the commandline, "-install" is mostly used for X11 programs.
+7 Add command line argument for "gvim" not to start the GUI. Sort of the
+ inverse of "vim -g". (Vikas)
+7 Should support multi-column menus.
+- Should add option for where to put the "Help" menu: like Motif at the far
+ right, or with the other menus (but still at the right).
+- Add menu item to "Keep Insert mode".
+8 ":mkgvimrc" command, that includes menus.
+6 Big change: Move GUI to separate program "vimgui", to make startup of vim a
+ lot faster, but still be able to do "vim -g" or ":gui".
+7 More explicit mouse button binding instead of 'mousemodel'?
+7 Add option to set the position of the window on the screen. 'windowpos',
+ which has a value of "123,456": <x>,<y>.
+ Or add a command, like ":winsize"?
+7 Add toolbar for more GUIs.
+8 Make it possible to use "amenu icon=BuiltIn##", so that the toolbar item
+ name can be chosen free.
+7 Make it possible to put the toolbar on top, left, right and/or bottom of
+ the window? Allows for softkey-like use.
+6 Separate the part of Vim that does the editing from the part that runs the
+ GUI. Communicate through a pseudo-tty. Vim starts up, creates a
+ pty that is connected to the terminal. When the GUI starts, the pty is
+ reconnected to the GUI process. When the GUI stops, it is connected to
+ the terminal again. Also use the pty for external processes, it looks
+ like a vt100 terminal to them. Vim uses extra commands to communicate GUI
+ things.
+7 Motif: For a confirm() dialog <Enter> should be ignored when no default
+ button selected, <Esc> should close the dialog.
+7 When using a pseudo-tty Vim should behave like some terminal (vt52 looks
+ simple enough). Terminal codes to/from shell should be translated.
+- Would it be useful to be able to quit the GUI and go back to the terminal
+ where it was started from?
+7 Support "-visual <type>" command line argument.
+
+
+Autocommands:
+- Put autocommand event names in a hashtable for faster lookup?
+8 When the SwapExists event is triggered, provide information about the
+ swap file, e.g., whether the process is running, file was modified, etc.
+ Must be possible to check the situation that it's probably OK to delete
+ the swap file. (Marc Merlin)
+8 When all the patterns for an event are "*" there is no need to expand
+ buffer names to a full path. This can be slow for NFS.
+7 For autocommand events that trigger multiple times per buffer (e.g.,
+ CursorHold), go through the list once and cache the result for a specific
+ buffer. Invalidate the cache when adding/deleting autocommands or
+ changing the buffer name.
+7 Add TagJump event: do something after jumping to a tag.
+8 Add "TagJumpFile" autocommand: When jumping to another file for a tag.
+ Can be used to open "main.c.gz" when "main.c" isn't found.
+8 Use another option than 'updatetime' for the CursorHold event. The two
+ things are unrelated for the user (but the implementation is more
+ difficult).
+7 Add autocommand event for when a buffer cannot be abandoned. So that the
+ user can define the action taking (autowrite, dialog, fail) based on the
+ kind of file. (Yakov Lerner) Or is BufLeave sufficient?
+8 Autocommand for when modified files have been found, when getting input
+ focus again (e.g., FileChangedFocus).
+ Check when: getting focus, jumping to another buffer, ...
+7 Autocommand for when an option is changed. Match buffer name or option
+ name?
+8 Autocommands should not change registers. And marks? And the jumplist?
+ And anything else? Add a command to save and restore these things.
+8 Add autocommands, user functions and user commands to ":mkvimrc".
+6 Add KeymapChanged event, so that the effects of a different keymap can be
+ handled (e.g., other font) (Ron Aaron)
+7 When trying to open a directory, trigger an OpenDirectory event.
+7 Add file type in front of file pattern: <d> for directory, <l> for link,
+ <x> for executable, etc. <&xxx> for Risc OS. With commas to separate
+ alternatives. The autocommand is only executed when both the file type
+ AND the file pattern match. (Leonard)
+5 Add option that specifies extensions which are to be discarded from the
+ file name. E.g. 'ausuffix', with ".gz,.orig". Such that file.c.gz will
+ trigger the "*.c" autocommands. (Belabas)
+7 Add something to break the autocommands for the current event, and for
+ what follows. Useful for a "BufWritePre" that wants to avoid writing the
+ file.
+8 When editing "tt.gz", which is in DOS format, 'fileformat' stays at
+ "unix", thus writing the file changes it. Somehow detect that the read
+ command used dos fileformat. Same for 'fileencoding'.
+- Add events to autocommands:
+ Error - When an error happens
+ NormalEnter - Entering Normal mode
+ ReplaceEnter - Entering Replace mode
+ CmdEnter - Entering Cmdline mode (with type of cmdline to allow
+ different mapping)
+ VisualEnter - Entering Visual mode
+ *Leave - Leaving a mode (in pair with the above *Enter)
+ VimLeaveCheck - Before Vim decides to exit, so that it can be cancelled
+ when exiting isn't a good idea.
+ CursorHoldC - CursorHold while command-line editing
+ WinMoved - when windows have been moved around, e.g, ":wincmd J"
+ CmdUndefined - Like FuncUndefined but for user commands.
+ SearchPost - After doing a search command (e.g. to do "M")
+ PreDirChanged/PostDirChanged
+ - Before/after ":cd" has been used (for changing the
+ window title)
+ ShutDown - when the system is about to shut down
+ InsertCharPre - user typed character Insert mode, before inserting the
+ char. Pattern is matched with text before the cursor.
+ Set v:char to the character, can be changed.
+ (not triggered when 'paste' is set).
+ InsertCharPost - user typed a character in Insert mode, after inserting
+ the char.
+ BufModified - When a buffer becomes modified, or unmodified (for
+ putting a [+] in the window title or checking out the
+ file from CVS).
+ BufFirstChange - When making a change, when 'modified' is set. Can be
+ used to do a :preserve for remote files.
+ BufChange - after a change was made. Set some variables to indicate
+ the position and number of inserted/deleted lines, so
+ that marks can be updated. HierAssist has patch to add
+ BufChangePre, BufChangePost and RevertBuf. (Shah)
+ ViewChanged - triggered when the text scrolls and when the window size
+ changes.
+ WinResized - After a window has been resized
+ WinClose - Just before closing a window
+- Write the file now and then ('autosave'):
+ *'autosave'* *'as'* *'noautosave'* *'noas'*
+ 'autosave' 'as' number (default 0)
+ Automatically write the current buffer to file N seconds after the
+ last change has been made and when |'modified'| is still set.
+ Default: 0 = do not autosave the buffer.
+ Alternative: have 'autosave' use 'updatetime' and 'updatecount' but make
+ them save the file itself besides the swapfile.
+
+
+Omni completion:
+- Add a flag to 'complete' to be able to do omni completion with CTRL-N (and
+ mix it with other kinds of completion).
+- Ideas from the Vim 7 BOF at SANE:
+ - For interpreted languages, use the interpreter to obtain information.
+ Should work for Java (Eclipse does this), Python, Tcl, etc.
+ Richard Emberson mentioned working on an interface to Java.
+ - Check Readline for its completion interface.
+- Ideas from others:
+ http://www.wholetomato.com/
+ http://www.vim.org/scripts/script.php?script_id=747
+ http://sourceforge.net/projects/insenvim
+ or http://insenvim.sourceforge.net
+ Java, XML, HTML, C++, JSP, SQL, C#
+ MS-Windows only, lots of dependencies (e.g. Perl, Internet
+ explorer), uses .dll shared libraries.
+ For C++ uses $INCLUDE environment var.
+ Uses Perl for C++.
+ Uses ctags to find the info:
+ ctags -f $allTagsFile --fields=+aiKmnsSz --language-force=C++ --C++-kinds=+cefgmnpsut-dlux -u $files
+ www.vim.org script 1213 (Java Development Environment) (Fuchuan Wang)
+ IComplete: http://www.vim.org/scripts/script.php?script_id=1265
+ and http://stud4.tuwien.ac.at/~e0125672/icomplete/
+ http://cedet.sourceforge.net/intellisense.shtml (for Emacs)
+ Ivan Villanueva has something for Java.
+ Emacs: http://www.xref-tech.com/xrefactory/more_c_completion.html
+ Completion in .NET framework SharpDevelop: http://www.icsharpcode.net
+- Pre-expand abbreviations, show which abbrevs would match?
+
+
+Insert mode completion/expansion:
+- GUI implementation of the popup menu.
+7 When searching in other files the name flash by, too fast to read. Only
+ display a name every second or so, like with ":vimgrep".
+7 When expanding file names with an environment variable, add the match with
+ the unexpanded var. So $HOME/tm expands to "/home/guy/tmp" and
+ "$HOME/tmp"
+8 When there is no word before the cursor but something like "sys." complete
+ with "sys.". Works well for C and similar languages.
+9 ^X^L completion doesn't repeat correctly. It uses the first match with
+ the last added line, instead of continuing where the last match ended.
+ (Webb)
+8 Add option to set different behavior for Insert mode completion:
+ - ignore/match case
+ - different characters than 'iskeyword'
+8 Add option 'isexpand', containing characters when doing expansion (so that
+ "." and "\" can be included, without changing 'iskeyword'). (Goldfarb)
+ Also: 'istagword': characters used for CTRL-].
+ When 'isexpand' or 'istagword' are empty, use 'iskeyword'.
+ Alternative: Use a pattern so that start and end of a keyword can be
+ defined, only allow dash in the middle, etc.
+8 Add a command to undo the completion, go back to the original text.
+7 Completion of an abbreviation: Can leave letters out, like what Instant
+ text does: www.textware.com
+8 Use the class information in the tags file to do context-sensitive
+ completion. After "foo." complete all member functions/variables of
+ "foo". Need to search backwards for the class definition of foo.
+ Should work for C++ and Java.
+ Even more context would be nice: "import java.^N" -> "io", "lang", etc.
+7 When expanding $HOME/dir with ^X^F keep the $HOME (with an option?).
+7 Add CTRL-X command in Insert mode like CTRL-X CTRL-N, that completes WORDS
+ instead of words.
+8 Add CTRL-X CTRL-R: complete words from register contents.
+8 Add completion of previously inserted texts (like what CTRL-A does).
+ Requires remembering a number of insertions.
+8 Add 'f' flag to 'complete': Expand file names.
+ Also apply 'complete' to whole line completion.
+- Add a flag to 'complete' to only scan local header files, not system
+ header files. (Andri Moell)
+- Make it possible to search include files in several places. Use the
+ 'path' option? Can this be done with the dictionary completion (use
+ wildcards in the file name)?
+- Make CTRL-X CTRL-K do a binary search in the dictionary (if it's sorted).
+- Speed up CTRL-X CTRL-K dictionary searching (don't use a regexp?).
+- Set a mark at the position where the match was found (file mark, could
+ be in another file).
+- Add CTRL-A command in CTRL-X mode: show all matches.
+- Make CTRL-X CTRL-L use the 'complete' option?
+- Add command in CTRL-X mode to add following words to the completed string
+ (e.g. to complete "Pointer->element" with CTRL-X CTRL-P CTRL-W CTRL-W)
+- CTRL-X CTRL-F: Use 'path' to find completions.
+- CTRL-X CTRL-F: Option to use forward slashes on MS-Windows?
+- CTRL-X CTRL-F: Don't replace "$VIM" with the actual value. (Kelly)
+- Allow listing all matches in some way (and picking one from the list).
+
+
+Command line editing:
+7 Add commands (keys) to delete from the cursor to the end of the command
+ line.
+8 Custom completion of user commands can't use the standard completion
+ functions. Add a hook to invoke a user function that returns the type of
+ completion to be done: "file", "tag", "custom", etc.
+- Add flags to 'whichwrap' for command line editing (cursor right at end of
+ lines wraps to start of line).
+- Make editing the command line work like Insert mode in a single-line view
+ on a buffer that contains the command line history. But this has many
+ disadvantages, only implement it when these can be solved. Elvis has run
+ into these, see remarks from Steve (~/Mail/oldmail/kirkendall/in.00012).
+ - Going back in history and editing a line there would change the history.
+ Would still need to keep a copy of the history elsewhere. Like the
+ cmdwin does now already.
+ - Use CTRL-O to execute one Normal mode command. How to switch to normal
+ mode for more commands? <Esc> should cancel the command line. CTRL-T?
+ - To allow "/" and "= need to recursively call getcmdline(), overwrite the
+ cmdline. But then we are editing a command-line again. How to avoid
+ that the user gets confused by the stack of command lines?
+ - Use edit() for normal cmdline editing? Would have to integrate
+ getcmdline() into edit(). Need to solve conflicts between Insert mode
+ and Command-line mode commands. Make it work like Korn shell and tcsh.
+ Problems:
+ - Insert: completion with 'wildchar'
+ - Insert: use cmdline abbreviations
+ - Insert: CTRL-D deletes indent instead of listing matches
+ - Normal: no CTRL-W commands
+ - Normal: no ":" commands?
+ - Normal: allow Visual mode only within one line.
+ - where to show insert/normal mode message? Change highlighting of
+ character in first column?
+ - Implementation ideas:
+ - Set "curwin" and "curbuf" to the command line window and buffer.
+ - curwin->w_topline is always equal to curwin->w_cursor.lnum.
+ - never set 'number', no folding, etc. No status line.
+ - sync undo after entering a command line?
+ - use NV_NOCL flag for commands that are not allowed in Command-line
+ Mode.
+
+
+Command line completion:
+8 Completing ":r ~br" should find matching user names.
+8 Change expand_interactively into a flag that is passed as an argument.
+8 With command line completion after '%' and '#', expand current/alternate
+ file name, so it can be edited. Also with modifiers, such as "%:h".
+8 When completing command names, either sort them on the long name, or list
+ them with the optional part inside [].
+8 Add an option to ignore case when doing interactive completion. So that
+ ":e file<Tab>" also lists "Filelist" (sorted after matching case matches).
+7 Completion of ":map x ": fill in the current mapping, so that it can be
+ edited. (Sven Guckes)
+- For 'wildmenu': Simplify "../bar" when possible.
+- When using <Up> in wildmenu mode for a submenu, should go back to the
+ current menu, not the first one. E.g., ":emenu File.Save<Up>".
+8 When using backtick expansion, the external command may write a greeting
+ message. Add an option or commands to remove lines that match a regexp?
+7 When listing matches of files, display the common path separately from the
+ file names, if this makes the listing shorter. (Webb)
+- Add command line completion for ":ilist" and friends, show matching
+ identifiers (Webb).
+8 Add command line completion for "old value" of a command. ":args <key>"
+ would result in the current list of arguments, which you can then edit.
+7 Add command line completion with CTRL-X, just like Insert mode completion.
+ Useful for ":s/word/xx/".
+- Add command to go back to the text as it was before completion started.
+ Also to be used for <Up> in the command line.
+- Add 'wildlongest' option: Key to use to find longest common match for
+ command line completion (default CTRL-L), like 'wildchar'. (Cregut)
+ Also: when there are several matches, show them line a CTRL-D.
+
+
+Command line history:
+9 Remember which command lines were actually typed and were not loaded from
+ viminfo. When writing viminfo append only these lines, so that lines from
+ other Vim's are not overwritten.
+- Add "KeyWasTyped" flag: It's reset before each command and set when a
+ character from the keyboard is consumed. Value is used to decide to put a
+ command line in history or not. Put line in history if it didn't
+ completely resulted from one mapping.
+- When using ":browse", also put the resulting edit command in the history,
+ so that it can be repeated. (Demirel)
+
+
+Insert mode:
+9 When 'autoindent' is set, hitting <CR> twice, while there is text after
+ the cursor, doesn't delete the autoindent in the resulting blank line.
+ (Rich Wales) This is Vi compatible, but it looks like a bug.
+8 When using CTRL-O in Insert mode, then executing an insert command
+ "a" or "i", should we return to Insert mode after <Esc>? (Eggink)
+ Perhaps it can be allowed a single time, to be able to do
+ "<C-O>10axyz<Esc>". Nesting this further is confusing.
+ ":map <F2> 5aabc<Esc>" works only once from Insert mode.
+8 When using CTRL-G CTRL-O do like CTRL-\ CTRL-O, but when returning with
+ the cursor in the same position and the text didn't change continue the
+ same change, so that "." repeats the whole insert.
+7 Use CTRL-G <count> to repeat what follows. Useful for inserting a
+ character multiple times or repeating CTRL-Y.
+- Make 'revins' work in Replace mode.
+7 Use 'matchpairs' for 'showmatch': When inserting a character check if it
+ appears in the rhs of 'matchpairs'.
+- In Insert mode (and command line editing?): Allow undo of the last typed
+ character. This is useful for CTRL-U, CTRL-W, delete and backspace, and
+ also for characters that wrap to the next line.
+ Also: be able to undo CTRL-R (insert register).
+ Possibly use 'backspace'="whole" for a mode where at least a <CR> that
+ inserts autoindent is undone by a single <BS>.
+- Use CTRL-G in Insert mode for an extra range of commands, like "g" in
+ Normal mode.
+- Make 'paste' work without resetting other options, but override their
+ value. Avoids problems when changing files and modelines or autocommands
+ are used.
+- When typing CTRL-V and a digit higher than 2, only expect two digits.
+- Insert binary numbers with CTRL-V b.
+- Make it possible to undo <BS>, <C-W> and <C-U>. Bash uses CTRL-Y.
+
+
+'cindent', 'smartindent':
+9 ") :" confuses continuation line: (Colin Bennett, 2007 Dec 14)
+ cout << "a"
+ << ") :"
+ << "y";
+9 "} else" causes following lines to be indented too much. (Rouben
+ Rostamian, 2008 Aug 30)
+8 Lisp indenting: "\\" confuses the indenter. (Dorai Sitaram, 2006 May 17)
+8 Why are continuation lines outside of a {} block not indented? E.g.:
+ long_type foo =
+ value;
+8 Java: Inside an anonymous class, after an "else" or "try" the indent is
+ too small. (Vincent Bergbauer)
+ Problem of using {} inside (), 'cindent' doesn't work then.
+8 In C++ it's possible to have {} inside (): (Kirshna)
+ func(
+ new String[] {
+ "asdf",
+ "asdf"
+ }
+ );
+8 In C++ a function isn't recognized inside a namespace:
+ (Chow Loong Jin)
+ namespace {
+ int
+ func(int arg) {
+ }
+ }
+6 Add 'cino' flag for this function argument layout: (Spencer Collyer)
+ func( arg1
+ , arg2
+ , arg3
+ );
+7 Add separate "(0" option into inside/outside a function (Zellner):
+ func(
+ int x) // indent like "(4"
+ {
+ if (a
+ && b) // indent like "(0"
+9 Using "{" in a comment: (Helmut Stiegler)
+ if (a)
+ {
+ if (b)
+ {
+ // {
+ }
+ } <-- this is indented incorrect
+ Problem is that find_start_brace() checks for the matching brace to be in
+ a comment, but not braces in between. Requires adding a comment check to
+ findmatchlimit().
+- Make smartindenting configurable. Add 'sioptions', e.g. '#' setting the
+ indent to 0 should be switched on/off.
+7 Support ANSI style function header, with each argument on its own line.
+- "[p" and "]p" should use 'cindent' code if it's on (only for the first
+ line).
+- Add option to 'cindent' to set indent for comments outside of {}?
+- Make a command to line up a comment after a code line with a previous
+ comment after a code line. Can 'cindent' do this automatically?
+7 Add 'j' flag to 'formatoptions': Remove comment leader when joining lines.
+- When 'cindent'ing a '}', showmatch is done before fixing the indent. It
+ looks better when the indent is fixed before the showmatch. (Webb)
+- Add option to make indenting work in comments too (for commented-out
+ code), unless the line starts with "*".
+- Don't use 'cindent' when doing formatting with "gq"?
+- When formatting a comment after some text, insert the '*' for the new line
+ (indent is correct if 'cindent' is set, but '*' doesn't get inserted).
+8 When 'comments' has both "s1:/*,mb:*,ex:*/" and "s1:(*,mb:*,ex:*)", the
+ 'x' flag always uses the first match. Need to continue looking for more
+ matches of "*" and remember all characters that could end the comment.
+- For smartindent: When typing 'else' line it up with matching 'if'.
+- 'smartindent': allow patterns in 'cinwords', for e.g. TeX files, where
+ lines start with "\item".
+- Support this style of comments (with an option): (Brown)
+ /* here is a comment that
+ is just autoindented, and
+ nothing else */
+- Add words to 'cinwords' to reduce the indent, e.g., "end" or "fi".
+7 Use Tabs for the indent of starting lines, pad with spaces for
+ continuation lines. Allows changing 'tabstop' without messing up the
+ indents.
+ 'keeptabs': when set don't change the tabs and spaces used for indent,
+ when the indent remains the same or increases.
+
+
+Java:
+8 Can have {} constructs inside parens. Include changes from Steve
+ Odendahl?
+8 Recognize "import java.util.Vector" and use $CLASSPATH to find files for
+ "[i" commands and friends.
+- For files found with 'include': handle "*" in included name, for Java.
+ (Jason)
+- How to make a "package java.util" cause all classes in the package to be
+ searched? Also for "import java.util.*". (Mark Brophy)
+
+
+'comments':
+8 When formatting C comments that are after code, the "*" isn't repeated
+ like it's done when there is no code. And there is no automatic wrapping.
+ Recognize comments that come after code. Should insert the comment leader
+ when it's "#" or "//".
+ Other way around: when a C command starts with "* 4" the "*" is repeated
+ while it should not. Use syntax HL comment recognition?
+7 When using "comments=fg:--", Vim inserts three spaces for a new line.
+ When hitting a TAB, these spaces could be removed.
+7 The 'n'esting flag doesn't do the indenting of the last (rightmost) item.
+6 Make strings in 'comments' option a RE, to be able to match more
+ complicated things. (Phillipps) Use a special flag to indicate that a
+ regexp is used.
+8 Make the 'comments' option with "/* * */" lines only repeat the "*" line
+ when there is a "/*" before it? Or include this in 'cindent'?
+
+
+Virtual edit:
+8 Make the horizontal scrollbar work to move the text further left.
+7 Allow specifying it separately for Tabs and beyond end-of-line?
+
+
+Text objects:
+8 Add text object for fold, so that it can be yanked when it's open.
+8 Add test script for text object commands "aw", "iW", etc.
+8 Add text object for part of a CamelHumpedWord and under_scored_word.
+ (Scott Graham) "ac" and "au"?
+8 Add a text object for any kind of quoting, also with multi-byte
+ characters. Option to specify what quotes are recognized (default: all)
+ use "aq" and "iq". Use 'quotepairs' to define pairs of quotes, like
+ 'matchpairs'?
+8 Add text object for any kind of parens, also multi-byte ones.
+7 Add text object for current search pattern: "a/" and "i/". Makes it
+ possible to turn text highlighted for 'hlsearch' into a Visual area.
+8 Add a way to make an ":omap" for a user-defined text object. Requires
+ changing the starting position in oap->start.
+8 Add "gp" and "gP" commands: insert text and make sure there is a single
+ space before it, unless at the start of the line, and after it, unless at
+ the end of the line or before a ".".
+7 Add objects with backwards extension? Use "I" and "A". Thus "2dAs"
+ deletes the current and previous sentence. (Jens Paulus)
+7 Add "g{" and "g}" to move to the first/last character of a paragraph
+ (instead of the line just before/after a paragraph as with "{" and "}").
+6 Ignore comment leaders for objects. Make "das" work in reply-email.
+5 Make it possible to use syntax group matches as a text object. For
+ example, define a "ccItem" group, then do "da<ccItem>" to delete one.
+ Or, maybe just define "dai", delete-an-item, to delete the syntax item the
+ cursor is on.
+
+
+Select mode:
+8 In blockwise mode, typed characters are inserted in front of the block,
+ backspace deletes a column before the block. (Steve Hall)
+7 Alt-leftmouse starts block mode selection in MS Word.
+ See http://www.vim.org/tips/tip.php?tip_id=743
+7 Add Cmdline-select mode. Like Select mode, but used on the command line.
+ - Change gui_send_mouse_event() to pass on mouse events when 'mouse'
+ contains 'C' or 'A'.
+ - Catch mouse events in ex_getln.c. Also shift-cursor, etc., like in
+ normal_cmd().
+ - remember start and end of selection in cmdline_info.
+ - Typing text replaces the selection.
+
+
+Visual mode:
+- When dragging the Visual selection with the mouse and 'scrolloff' is zero,
+ behave like 'scrolloff' is one, so that the text scrolls when the pointer
+ is in the top line.
+- Displaying size of Visual area: use 24-33 column display.
+ When selecting multiple lines, up to about a screenful, also count the
+ characters.
+8 When using "I" or "A" in Visual block mode, short lines do not get the new
+ text. Make it possible to add the text to short lines too, with padding
+ where needed.
+7 With a Visual block selected, "2x" deletes a block of double the width,
+ "3y" yanks a block of triple width, etc.
+7 When selecting linewise, using "itext" should insert "text" at the start
+ of each selected line.
+8 What is "R" supposed to do in Visual mode?
+8 Make Visual mode local to the buffer. Allow changing to another buffer.
+ When starting a new Visual selection, remove the Visual selection in any
+ other buffer. (Ron Aaron)
+8 Support dragging the Visual area to drop it somewhere else. (Ron Aaron,
+ Ben Godfrey)
+7 Support dragging the Visual area to drop it in another program, and
+ receive dropped text from another program. (Ben Godfrey)
+7 With blockwise Visual mode and "c", "C", "I", "A", etc., allow the use of
+ a <CR>. The entered lines are repeated over the Visual area.
+7 CTRL-V :s should substitute only in the block, not to whole lines. (David
+ Young is working on this)
+7 Filtering a block should only apply to the block, not to the whole lines.
+ When the number of lines is increased, add lines. When decreased, pad with
+ spaces or delete? Use ":`<,`>" on the command line.
+8 After filtering the Visual area, make "gv" select the filtered text?
+ Currently "gv" only selects a single line, not useful.
+7 Don't move the cursor when scrolling? Needed when the selection should
+ stay the same. Scroll to the cursor at any movement command. With an
+ option!
+7 In Visual block mode, need to be able to define a corner on a position
+ that doesn't have text? Also: when using the mouse, be able to select
+ part of a TAB. Even more: Add a mode where the cursor can be on a screen
+ position where there is no text. When typing, add spaces to fill the gap.
+ Other solution: Always use curswant, so that you can move the cursor to
+ the right column, and then use up/down movements to select the line,
+ without changing the column.
+6 ":left" and ":right" should work in Visual block mode.
+7 CTRL-I and CTRL-O should work in Visual mode, but only jump to marks in the
+ current buffer.
+7 CTRL-A and CTRL-X should increase/decrease all numbers in the Visual area.
+6 In non-Block mode, "I" should insert the same text in front of each line,
+ before the first non-blank, "gI" in column 1.
+6 In non-Block mode, "A" should append the same text after each line.
+6 When in blockwise visual selection (CTRL-V), allow cursor to be placed
+ right of the line. Could also allow cursor to be placed anywhere on a TAB
+ or other special character.
+6 Add commands to move selected text, without deselecting.
+
+
+More advanced repeating commands:
+- Add "." command for visual mode: redo last visual command (e.g. ":fmt").
+7 Repeating "d:{cmd}" with "." doesn't work. (Benji Fisher) Somehow remember
+ the command line so that it can be repeated?
+- Add "gn": repeat last movement command. Including count.
+- Add "." command after operator: repeat last command of same operator. E.g.
+ "c." will repeat last change, also when "x" used since then (Webb).
+ "y." will repeat last yank.
+ "c2." will repeat the last but one change?
+ Also: keep history of Normal mode commands, add command to list the history
+ and/or pick an older command.
+- History stack for . command? Use "g." command.
+
+
+Mappings and Abbreviations:
+8 When "0" is mapped (it is a movement command) this mapping should not be
+ used after typing another number, e.g. "20l". (Charles Campbell)
+ Is this possible without disabling the mapping of the following command?
+8 Should mapping <C-A> and <C-S-A> both work?
+7 ":abbr b byte", append "b " to an existing word still expands to "byte".
+ This is Vi compatible, but can we avoid it anyway?
+8 To make a mapping work with a prepended "x to select a register, store the
+ last _typed_ register name and access it with "&.
+8 Add ":amap", like ":amenu".
+7 Add a mapping that works always, for remapping the keyboard.
+8 Add ":cab!", abbreviations that only apply to Command-line mode and not to
+ entering search strings.
+8 Add a flag to ":abbrev" to eat the character that triggers the
+ abbreviation. Thus "abb ab xxx" and typing "ab<Space>" inserts "xxx" and
+ not the <Space>.
+8 Give a warning when using CTRL-C in the lhs of a mapping. It will never
+ (?) work.
+8 Add a way to save a current mapping and restore it later. Use a function
+ that returns the mapping command to restore it: mapcmd()? mapcheck() is
+ not fool proof. How to handle ambiguous mappings?
+7 Add <0x8f> (hex), <033> (octal) and <123> (decimal) to <> notation?
+7 When someone tries to unmap with a trailing space, and it fails, try
+ unmapping without the trailing space. Helps for ":unmap xx | unmap yy".
+6 Context-sensitive abbreviations: Specify syntax group(s) in which the
+ abbreviations are to be used.
+- Add mappings that take arguments. Could work like the ":s" command. For
+ example, for a mouse escape sequence:
+ :mapexp <Esc>{\([0-9]*\),\([0-9]*\); H\1j\2l
+- Add optional <Number> argument for mappings:
+ :map <Number>q ^W^W<Number>G
+ :map <Number>q<Number>t ^W^W<Number1-1>G<Number2>l
+ :map q<Char> :s/<Char>/\u\0/g
+ Or implicit:
+ :map q <Register>d<Number>$
+- Add command to repeat a whole mapping ("." only repeats the last change in
+ a mapping). Also: Repeat a whole insert command, including any mappings
+ that it included. Sort-of automatic recording?
+- Include an option (or flag to 'cpoptions') that makes errors in mappings
+ not flush the rest of the mapping (like nvi does).
+- Use context sensitiveness of completion to switch abbreviations and
+ mappings off for :unab and :unmap.
+6 When using mappings in Insert mode, insert characters for incomplete
+ mappings first, then remove them again when a mapping matches. Avoids
+ that characters that are the start of some mapping are not shown until you
+ hit another character.
+- Add mappings for replace mode: ":rmap". How do we then enter mappings for
+ non-replace Insert mode?
+- Add separate mappings for Visual-character/block/line mode?
+- Add 'mapstop' command, to stop recursive mappings.
+- List mappings that have a raw escape sequence both with the name of the key
+ for that escape sequence (if there is one) and the sequence itself.
+- List mappings: Once with special keys listed as <>, once with meta chars as
+ <M-a>, once with the byte values (octal?). Sort of "spell mapping" command?
+- When entering mappings: Add the possibility to enter meta keys like they
+ are displayed, within <>: <M-a>, <~@> or <|a>.
+- Allow multiple arguments to :unmap.
+- Command to show keys that are not used and available for mapping
+ ":freekeys".
+- Allow any character except white space in abbreviations lhs (Riehm).
+
+
+Incsearch:
+- Add a limit to the number of lines that are searched for 'incsearch'?
+- When no match is found and the user types more, the screen is redrawn
+ anyway. Could skip that. Esp. if the line wraps and the text is scrolled
+ up every time.
+- Temporarily open folds to show where the search ends up. Restore the
+ folds when going to another line.
+- When incsearch used and hitting return, no need to search again in many
+ cases, saves a lot of time in big files. (Slootman wants to work on this?)
+ When not using special characters, can continue search from the last match
+ (or not at all, when there was no match). See oldmail/webb/in.872.
+- With incsearch, use CTRL-N/CTRL-P to go to next/previous match, some other
+ key to copy matched word to search pattern (Alexander Schmid).
+
+
+Searching:
+8 Add "g/" and "gb" to search for a pattern in the Visually selected text?
+ "g?" is already used for rot13.
+ The vis.vim script has a ":S" command that does something like this.
+ Can use "g/" in Normal mode, uses the '< to '> area.
+ Use "&/" for searching the text in the Visual area?
+9 Add "v" offset: "/pat/v": search for pattern and start Visual mode on the
+ matching text.
+8 Add a mechanism for recursiveness: "\@(([^()]*\@g[^()]*)\)". \@g stands
+ for "go recursive here" and \@( \) marks the recursive part.
+ Perl does it this way:
+ $paren = qr/ \(( [^()] | (??{ $paren }) )* \) /x;
+ Here $paren is evaluated when it's encountered. This is like a regexp
+ inside a regexp. In the above terms it would be:
+ \@((\([^()]\|\@g\)*)\)
+8 Show the progress every second. Could use the code that checks for CTRL-C
+ to find out how much time has passed. Or use SIGALRM. Where to show the
+ number?
+8 When using an expression for ":s", set the match position in a v:
+ variable. So that you can do ":%s/^/\=v:lnum/" to put a line number
+ before each line.
+7 Support for approximate-regexps to find similar words (agrep
+ http://www.tgries.de/agrep/ tre: http://laurikari.net/tre/index.html).
+8 Add an item for a big character range, so that one can search for a
+ chinese character: \z[234-1234] or \z[XX-YY] or \z[0x23-0x234].
+7 Add an item stack to allow matching (). One side is "push X on
+ the stack if previous atom matched". Other side is "match with top of
+ stack, pop it when it matches". Use "\@pX" and "\@m"?
+ Example: \((\@p).\{-}\@m\)*
+7 Add an option to accept a match at the cursor position. Also for
+ search(). (Brett)
+7 Add a flag to "/pat/" to discard an error. Useful to continue a mapping
+ when a search fails. Could be "/pat/E" (e is already used for end offset).
+7 Add pattern item to use properties of Unicode characters. In Perl it's
+ "\p{L}" for a letter. See Regular Expression Pocket Reference.
+8 Would it be possible to allow ":23,45/pat/flags" to search for "pat" in
+ lines 23 to 45? Or does this conflict with Ex range syntax?
+8 Allow identical pairs in 'matchpairs'. Restrict the search to the current
+ line.
+7 Allow longer pairs in 'matchpairs'. Use ~/vim/macros/matchit.vim as an
+ example.
+8 Make it possible to define the character that "%" checks for in
+ #if/#endif. For nmake it's !if/!endif.
+- For "%" command: set hierarchy for which things include other things that
+ should be ignored (like "*/" or "#endif" inside /* */).
+ Also: use "%" to jump from start to end of syntax region and back.
+ Alternative: use matchit.vim
+8 "/:/e+1" gets stuck on a match at the end of the line. Do we care?
+8 A pattern like "\([^a]\+\)\+" takes an awful long time. Recognize that
+ the recursive "\+" is meaningless and optimize for it.
+ This one is also very slow on "/* some comment */": "^\/\*\(.*[^/]\)*$".
+7 Recognize "[a-z]", "[0-9]", etc. and replace them with the faster "\l" and
+ "\d".
+7 Add a way to specify characters in <C-M> or <Key> form. Could be
+ \%<C-M>.
+8 Add an argument after ":s/pat/str/" for a range of matches. For example,
+ ":s/pat/str/#3-4" to replace only the third and fourth "pat" in a line.
+8 When 'iskeyword' is changed the matches from 'hlsearch' may change. (Benji
+ Fisher) redraw if some options are set while 'hlsearch' is set?
+8 Add an option not to use 'hlsearch' highlighting for ":s" and ":g"
+ commands. (Kahn) It would work like ":noh" is used after that command.
+ Also: An extra flag to do this once, and a flag to keep the existing
+ search pattern.
+- Make 'hlsearch' a local/global option, so that it can be disabled in some
+ of the windows.
+- Add \%h{group-name}; to search for a specific highlight group.
+ Add \%s{syntax-group}; to search for a specific syntax group.
+- Support Perl regexp. Use PCRE (Perl Compatible RE) package. (Shade)
+ Or translate the pattern to a Vim one.
+ Don't switch on with an option for typed commands/mappings/functions, it's
+ too confusing. Use "\@@" in the pattern, to avoid incompatibilities.
+8 Add a way to access the last substitute text, what is used for ":s//~/".
+ Can't use the ~ register, it's already used for drag & drop.
+- Remember flags for backreferenced items, so that "*" can be used after it.
+ Check with "\(\S\)\1\{3}". (Hemmerling)
+8 Flags that apply to the whole pattern.
+ This works for all places where a regexp is used.
+ Add "\q" to not store this pattern as the last search pattern?
+- Add flags to search command (also for ":s"?):
+ i ignore case
+ I use case
+ p use Perl regexp syntax (or POSIX?)
+ v use Vi regexp syntax
+ f forget pattern, don't keep it for "n" command
+ F remember pattern, keep it for "n" command
+ Perl uses these too:
+ e evaluate the right side as an expression (Perl only)
+ m multiple line expression (we don't need it)
+ o compile only once (Perl only)
+ s single line expression (we don't need it)
+ x extended regexp (we don't need it)
+ When used after ":g" command, backslash needed to avoid confusion with the
+ following command.
+ Add 'searchflags' for default flags (replaces 'gdefault').
+- Add command to display the last used substitute pattern and last used
+ pattern. (Margo) Maybe make it accessible through a register (like "/
+ for search string)?
+7 Use T-search algorithm, to speed up searching for strings without special
+ characters. See C't article, August 1997.
+- Add 'fuzzycase' option, so that case doesn't matter, and '-' and '_' are
+ equivalent (for Unix filenames).
+- Add 'v' flag to search command: enter Visual mode, with the matching text
+ as Visual area. (variation on idea from Bertin)
+- Searching: "/this//that/" should find "that" after "this".
+- Add global search commands: Instead of wrapping at the end of the buffer,
+ they continue in another buffer. Use flag after search pattern:
+ a for the next file in the argument list
+ f for file in the buffer list
+ w for file edited in a window.
+ e.g. "/pat/f". Then "n" and "N" work through files too. "f" flag also for
+ ":s/pat/foo/f"??? Then when 'autowrite' and 'hidden' are both not set, ask
+ before saving files: "Save modified buffer "/path/file"? (Yes/Hide/No
+ Save-all/hide-All/Quit) ".
+- ":s/pat/foo/3": find 3rd match of "pat", like sed. (Thomas Koehler)
+7 When searching with 'n' give message when getting back where the search
+ first started. Remember start of search in '/ mark.
+7 Add option that scrolls screen to put cursor in middle of screen after
+ search always/when off-screen/never. And after a ":tag" command. Maybe
+ specify how many lines below the screen causes a redraw with the cursor in
+ the middle (default would be half a screen, zero means always).
+6 Support multiple search buffers, so macros can be made without side
+ effects.
+7 From xvim: Allow a newline in search patterns (also for :s, can delete
+ newline). Add BOW, EOW, NEWL, NLORANY, NLBUTANY, magic 'n' and 'r', etc.
+ [not in xvim:] Add option to switch on matches crossing ONE line boundary.
+7 Add ":iselect", a combination of ":ilist" and ":tselect". (Aaron) (Zellner)
+ Also ":dselect".
+
+
+Undo:
+9 After undo/redo, in the message show whether the buffer is modified or
+ not.
+8 Use timestamps for undo, so that a version a certain time ago can be found
+ and info before some time/date can be flushed. 'undopersist' gives maximum
+ time to keep undo: "3h", "1d", "2w", "1y", etc.
+8 Search for pattern in undo tree, showing when it happened and the text
+ state, so that you can jump to it.
+8 Undo tree: visually show the tree somehow (Damian Conway)
+ Show only the leaves, indicating how many changed from the branch and the
+ timestamp?
+ Put branch with most recent change on the left, older changes get more
+ indent?
+8 See ":e" as a change operation, find the changes and add them to the
+ undo info. Also be able to undo the "Reload file" choice for when a file
+ was changed outside of Vim.
+ Would require doing a diff between the buffer text and the file and
+ storing the differences.
+ Alternative: before reloading a buffer, store it somewhere. Keep a list
+ of about 10 last reloaded buffers.
+- Make it possible to undo all the commands from a mapping, including a
+ trailing unfinished command, e.g. for ":map K iX^[r".
+- When accidentally hitting "R" instead of Ctrl-R, further Ctrl-R is not
+ possible, even when typing <Esc> immediately. (Grahn) Also for "i", "a",
+ etc. Postpone saving for undo until something is really inserted?
+8 When Inserting a lot of text, it can only be undone as a whole. Make undo
+ sync points at every line or word. Could recognize the start of a new
+ word (white space and then non-white space) and backspacing.
+ Can already use CTRL-G u, but that requires remapping a lot of things.
+8 Make undo more memory-efficient: Compare text before and after change,
+ only remember the lines that really changed.
+7 Add undo for a range of lines. Can change these back to a previous
+ version without changing the rest of the file. Stop doing this when a
+ change includes only some of these lines and changes the line count. Need
+ to store these undo actions as a separate change that can be undone.
+- For u_save() include the column number. This can be used to set '[ and '].
+ And in the future the undo can be made more efficient (Webb).
+- In out-of-memory situations: Free allocated space in undo, and reduce the
+ number of undo levels (with confirmation).
+- Instead of [+], give the number of changes since the last write: [+123].
+ When undoing to before the last write, change this to a negative number:
+ [-99].
+- With undo with simple line delete/insert: optimize screen updating.
+- When executing macro's: Save each line for undo only once.
+- When doing a global substitute, causing almost all lines to be changed,
+ undo info becomes very big. Put undo info in swap file??
+
+
+Buffer list:
+7 Command to execute a command in another buffer: ":inbuf {bufname} {cmd}".
+ Also for other windows: ":inwin {winnr} {cmd}". How to make sure that
+ this works properly for all commands, and still be able to return to the
+ current buffer/window? E.g.: ":inbuf xxx only".
+8 Add File.{recent_files} menu entries: Recently edited files.
+ Ron Aaron has a plugin for this: mru.vim.
+8 Unix: Check all uses of fnamecmp() and fnamencmp() if they should check
+ inode too.
+7 Add another number for a buffer, which is visible for the user. When
+ creating a new buffer, use the lowest number not in use (or the highest
+ number in use plus one?).
+7 Offer some buffer selection from the command line? Like using ":ls" and
+ asking for a buffer number. (Zachmann)
+- When starting to edit a file that is already in the buffer list, use the
+ file name argument for the new short file name. (Webb)
+- Add an option to make ":bnext" and ":bprev" wrap around the end of the
+ buffer list. Also for ":next" and ":prev"?
+7 Add argument to ":ls" which is a pattern for buffers to list.
+ E.g. ":ls *.c". (Thompson)
+7 Add expansion of buffer names, so that "*.c" is expanded to all buffer
+ names. Needed for ":bdel *.c", ":bunload *.c", etc.
+8 Support for <afile> where a buffer name is expected.
+8 Some commands don't use line numbers, but buffer numbers. '$'
+ should then mean the number of the last buffer. E.g.: "4,$bdel".
+7 Add an option to mostly use slashes in file names. Separately for
+ internal use and for when executing an external program?
+8 Some file systems are case-sensitive, some are not. Besides
+ 'wildignorecase' there might be more parts inside
+ CASE_INSENSITIVE_FILENAME that are useful on Unix.
+
+
+Swap (.swp) files:
+8 If writing to the swap file fails, should try to open one in another
+ directory from 'dir'. Useful in case the file system is full and when
+ there are short file name problems.
+8 Also use the code to try using a short file name for the backup and swap
+ file for the Win32 and Dos 32 bit versions.
+8 When a file is edited by root, add $LOGNAME to know who did su.
+8 When the edited file is a symlink, try to put the swap file in the same
+ dir as the actual file. Adjust FullName(). Avoids editing the same file
+ twice (e.g. when using quickfix). Also try to make the name of the backup
+ file the same as the actual file?
+ Use the code for resolve()?
+7 When using 64 bit inode numbers, also store the top 32 bits. Add another
+ field for this, using part of bo_fname[], to keep it compatible.
+7 When editing a file on removable media, should put swap file somewhere
+ else. Use something like 'r' flag in 'viminfo'. 'diravoid'?
+ Also: Be able to specify minimum disk space, skip directory when not
+ enough room.
+7 Add a configure check for which directory should be used: /tmp, /var/tmp
+ or /var/preserve.
+- Add an option to create a swap file only when making the first change to
+ the buffer. (Liang) Or only when the buffer is not read-only.
+- Add option to set "umask" for backup files and swap files (Antwerpen).
+ 'backupumask' and 'swapumask'? Or 'umaskback' and 'umaskswap'?
+- When editing a readonly file, don't use a swap file but read parts from the
+ original file. Also do this when the file is huge (>'maxmem'). We do
+ need to load the file once to count the number of lines? Perhaps keep a
+ cached list of which line is where.
+
+
+Viminfo:
+7 Can probably remove the code that checks for a writable viminfo file,
+ because we now do the chown() for root, and others can't overwrite someone
+ else's viminfo file.
+8 When there is no .viminfo file and someone does "su", runs Vim, a
+ root-owned .viminfo file is created. Is there a good way to avoid this?
+ Perhaps check the owner of the directory. Only when root?
+8 Add argument to keep the list of buffers when Vim is started with a file
+ name. (Schild)
+8 Keep the last used directory of the file browser (File/Open menu).
+8 Remember the last used register for "@@".
+8 Remember the redo buffer, so that "." works after restarting.
+8 Remember a list of last accessed files. To be used in the
+ "File.Open Recent" menu. Default is to remember 10 files or so.
+ Also remember which files have been read and written. How to display
+ this?
+7 Also store the ". register (last inserted text).
+7 Make it possible to store buffer names in viminfo file relative to some
+ directory, to make them portable over a network. (Aaron)
+6 Store a snapshot of the currently opened windows. So that when quitting
+ Vim, and then starting again (without a file name argument), you see the
+ same files in the windows. Use ":mksession" code?
+- Make marks present in .viminfo usable as file marks: Display a list of
+ "last visited files" and select one to jump to.
+
+
+Modelines:
+8 Before trying to execute a modeline, check that it looks like one (valid
+ option names). If it's very wrong, silently ignore it.
+ Ignore a line that starts with "Subject: ".
+- Add an option to whitelist options that are allowed in a modeline. This
+ would allow careful users to use modelines, e.g., only allowing
+ 'shiftwidth'.
+- Add an option to let modelines only set local options, not global ones
+ such as 'encoding'.
+- When an option value is coming from a modeline, do not carry it over to
+ another edited file? Would need to remember the value from before the
+ modeline setting.
+- Allow setting a variable from a modeline? Only allow using fixed strings,
+ no function calls, to avoid a security problem.
+- Allow ":doauto BufRead x.cpp" in modelines, to execute autocommands for
+ .cpp files.
+- Support the "abbreviate" command in modelines (Kearns). Careful for
+ characters after <Esc>, that is a security leak.
+- Add option setting to ask user if he wants to have the modelines executed
+ or not. Same for .exrc in local dir.
+
+
+Sessions:
+8 DOS/Windows: ":mksession" generates a "cd" command where "aa\#bb" means
+ directory "#bb" in "aa", but it's used as "aa#bb". (Ronald Hoellwarth)
+7 When there is a "help.txt" window in a session file, restoring that
+ session will not get the "LOCAL ADDITIONS" back.
+8 With ":mksession" always store the 'sessionoptions' option, even when
+ "options" isn't in it. (St-Amant)
+8 When using ":mksession", also store a command to reset all options to
+ their default value, before setting the options that are not at their
+ default value.
+7 With ":mksession" also store the tag stack and jump history. (Michal
+ Malecki)
+7 Persistent variables: "p:var"; stored in viminfo file and sessions files.
+
+
+Options:
+7 ":with option=value | command": temporarily set an option value and
+ restore it after the command has executed.
+7 Setting an option always sets "w_set_curswant", while this is only
+ required for a few options. Only do it for those options to avoid the
+ side effect.
+8 Make "old" number options that really give a number of effects into string
+ options that are a comma separated list. The old number values should
+ also be supported.
+8 Add commands to save and restore an option, which also preserves the flag
+ that marks if the option was set. Useful to keep the effect of setting
+ 'compatible' after ":syntax on" has been used.
+7 There is 'titleold', why is there no 'iconold'? (Chazelas)
+7 Make 'scrolloff' a global-local option, so that it can be different in the
+ quickfix window, for example. (Gary Holloway)
+
+
+External commands:
+8 When filtering text, redirect stderr so that it can't mess up the screen
+ and Vim doesn't need to redraw it. Also for ":r !cmd".
+4 Set separate shell for ":sh", piping "range!filter", reading text "r !ls"
+ and writing text "w !wc". (Deutsche) Allow arguments for fast start (e.g.
+ -f).
+4 Allow direct execution, without using a shell.
+4 Run an external command in the background. But how about I/O in the GUI?
+ Careful: don't turn Vim into a shell!
+4 Add feature to disable using a shell or external commands.
+
+
+Multiple Windows:
+7 "vim -oO file ..." use both horizontal and vertical splits.
+8 Add CTRL-W T: go to the top window in the column of the current window.
+ And CTRL-W B: go to bottom window.
+7 Use CTRL-W <Tab>, like alt-tab, to switch between buffers. Repeat <Tab>
+ to select another buffer (only loaded ones?), <BS> to go back, <Enter> to
+ select buffer, <Esc> to go back to original buffer.
+7 Make it possible to edit a new buffer in the preview window. A script can
+ then fill it with something. ":popen"?
+7 Add a 'tool' window: behaves like a preview window but there can be
+ several. Don't count it in only_one_window(). (Alexei Alexandrov)
+6 Add an option to resize the shell when splitting and/or closing a window.
+ ":vsp" would make the shell wider by as many columns as needed for the new
+ window. Specify a maximum size (or use the screen size). ":close" would
+ shrink the shell by as many columns as come available. (Demirel)
+7 When starting Vim several times, instantiate a Vim server, that allows
+ communication between the different Vims. Feels like one Vim running with
+ multiple top-level windows. Esp. useful when Vim is started from an IDE
+ too. Requires some form of inter process communication.
+- Support a connection to an external viewer. Could call the viewer
+ automatically after some seconds of non-activity, or with a command.
+ Allow some way of reporting scrolling and cursor positioning in the viewer
+ to Vim, so that the link between the viewed and edited text can be made.
+
+
+Marks:
+8 Add ten marks for last changed files: ':0, ':1, etc. One mark per file.
+8 When cursor is first moved because of scrolling, set a mark at this
+ position. (Rimon Barr) Use '-.
+8 Add a command to jump to a mark and make the motion inclusive. g'm and g`m?
+8 The '" mark is set to the first line, even when doing ":next" a few times.
+ Only set the '" mark when the cursor was really moved in a file.
+8 Make `` and '', which would position the new cursor position in the middle
+ of the window, restore the old topline (or relative position) from when
+ the mark was set.
+7 Make a list of file marks in a separate window. For listing all buffers,
+ matching tags, errors, etc. Normal commands to move around. Add commands
+ to jump to the mark (in current window or new window). Start it with
+ ":browse marks"?
+6 Add a menu that lists the Marks like ":marks". (Amerige)
+7 For ":jumps", ":tags" and ":marks", for not loaded buffers, remember the
+ text at the mark. Highlight the column with the mark.
+7 Highlight each mark in some way (With "Mark" highlight group).
+ Or display marks in a separate column, like 'number' does.
+7 Use d"m to delete rectangular area from cursor to mark m (like Vile's \m
+ command).
+7 Try to keep marks in the same position when:
+ - replacing with a line break, like in ":s/pat/^M/", move marks after the
+ line break column to the next line. (Acevedo)
+ - inserting/deleting characters in a line.
+5 Include marks for start/end of the current word and section. Useful in
+ mappings.
+6 Add "unnamed mark" feature: Like marks for the ":g" command, but place and
+ unplace them with commands before doing something with the lines.
+ Highlight the marked lines somehow.
+
+
+Digraphs:
+7 Make "ga" show the digraph for a character, if it exists.
+ Also the keymap?
+- Make it possible to enter "r<C-E>" and "r<C-Y>" (get character from line
+ below/above).
+- Use digraph table to tell Vim about the collating sequence of special
+ characters?
+8 Add command to remove one or more (all) digraphs. (Brown)
+7 Support different sets of digraphs (depending on the character set?). At
+ least Latin1/Unicode, Latin-2, MS-DOS (esp. for Win32).
+
+
+Writing files:
+- In vim_rename(), should lock "from" file when deleting "to" file for
+ systems other than Amiga. Avoids problems with unexpected longname to
+ shortname conversion.
+8 write mch_isdevice() for Amiga, Mac, VMS, etc.
+8 When appending to a file, Vim should also make a backup and a 'patchmode'
+ file.
+8 'backupskip' doesn't write a backup file at all, a bit dangerous for some
+ applications. Add 'backupelsewhere' to write a backup file in another
+ directory? Or add a flag to 'backupdir'?
+6 Add an option to write a new, numbered, backup file each time. Like
+ 'patchmode', e.g., 'backupmode'.
+6 Make it possible to write 'patchmode' files to a different directory.
+ E.g., ":set patchmode=~/backups/*.orig". (Thomas)
+6 Add an option to prepend something to the backup file name. E.g., "#".
+ Or maybe allow a function to modify the backup file name?
+8 Only make a backup when overwriting a file for the first time. Avoids
+ losing the original when writing twice. (Slootman)
+7 On non-Unix machines, also overwrite the original file in some situations
+ (file system full, it's a link on an NFS partition).
+7 When editing a file, check that it has been change outside of Vim more
+ often, not only when writing over it. E.g., at the time the swap file is
+ flushed. Or every ten seconds or so (use the time of day, check it before
+ waiting for a character to be typed).
+8 When a file was changed since editing started, show this in the status
+ line of the window, like "[time]".
+ Make it easier to reload all outdated files that don't have changes.
+ Automatic and/or with a command.
+
+
+Substitute:
+8 Substitute with hex/unicode number "\%xff" and "\%uabcd". Just like
+ "\%uabcd" in search pattern.
+8 Make it easier to replace in all files in the argument list. E.g.:
+ ":argsub/oldword/newword/". Works like ":argdo %s/oldword/newword/g|w".
+- :s///p prints the line after a substitution.
+- With :s///c replace \&, ~, etc. when showing the replacement pattern.
+8 With :s///c allow scrolling horizontally when 'nowrap' is effective.
+ Also allow a count before the scrolling keys.
+- Add number option to ":s//2": replace second occurrence of string? Or:
+ :s///N substitutes N times.
+- Add answers to ":substitute" with 'c' flag, used in a ":global", e.g.:
+ ":g/pat1/s/pat2/pat3/cg": 'A' do all remaining replacements, 'Q' don't do
+ any replacements, 'u' undo last substitution.
+7 Substitute in a block of text. Use {line}.{column} notation in an Ex
+ range, e.g.: ":1.3,$.5s" means to substitute from line 1 column 3 to the
+ last line column 5.
+5 Add commands to bookmark lines, display bookmarks, remove bookmarks,
+ operate on lines with bookmarks, etc. Like ":global" but with the
+ possibility to keep the bookmarks and use them with several commands.
+ (Stanislav Sitar)
+
+
+Mouse support:
+8 Add 'o' flag to 'mouse'?
+7 Be able to set a 'mouseshape' for the popup menu.
+8 Add 'mouse' flag, which sets a behavior like Visual mode, but automatic
+ yanking at the button-up event. Or like Select mode, but typing gets you
+ out of Select mode, instead of replacing the text. (Bhaskar)
+- Implement mouse support for the Amiga console.
+- Using right mouse button to extend a blockwise selection should attach to
+ the nearest corner of the rectangle (four possible corners).
+- Precede mouse click by a number to simulate double clicks?!?
+- When mouse click after 'r' command, get character that was pointed to.
+
+
+Argument list:
+6 Add command to put all filenames from the tag files in the argument list.
+ When given an argument, only use the files where that argument matches
+ (like `grep -l ident`) and jump to the first match.
+6 Add command to form an args list from all the buffers?
+
+
+Registers:
+8 Don't display empty registers with ":display". (Etienne)
+8 Make the # register writable, so that it can be restored after jumping
+ around in windows.
+8 Add put command that overwrites existing text. Should also work for
+ blocks. Useful to move text around in a table. Works like using "R ^R r"
+ for every line.
+6 When yanking into the unnamed registers several times, somehow make the
+ previous contents also available (like it's done for deleting). What
+ register names to use? g"1, g"2, etc.?
+- When appending to a register, also report the total resulting number of
+ lines. Or just say "99 more lines yanked", add the "more".
+- When inserting a register in Insert mode with CTRL-R, don't insert comment
+ leader when line wraps?
+- The ":@r" commands should take a range and execute the register for each
+ line in the range.
+- Add "P" command to insert contents of unnamed register, move selected text
+ to position of previous deleted (to swap foo and bar in " + foo")
+8 Should be able to yank and delete into the "/ register.
+ How to take care of the flags (offset, magic)?
+
+
+Debug mode:
+7 Add something to enable debugging when a remote message is received.
+8 Add breakpoints for setting an option
+8 Add breakpoints for assigning to a variable.
+7 Add a watchpoint in the debug mode: An expression that breaks execution
+ when evaluating to non-zero. Add the "watchadd expr" command, stop when
+ the value of the expression changes. ":watchdel" deletes an item,
+ ":watchlist" lists the items. (Charles Campbell)
+7 Store the history from debug mode in viminfo.
+7 Make the debug mode history available with histget() et al.
+
+
+Various improvements:
+9 Python: be able to define a Python function that can be called directly
+ from Vim script. Requires converting the arguments and return value.
+8 ":sign unplace * file={filename}" should work. Also: ":sign unplace *
+ buffer={bufnr}". So one can remove all signs for one file/buffer.
+7 Add plugins for formatting? Should be able to make a choice depending on
+ the language of a file (English/Korean/Japanese/etc.).
+ Setting the 'langformat' option to "chinese" would load the
+ "format/chinese.vim" plugin.
+ The plugin would set 'formatexpr' and define the function being called.
+ Edward L. Fox explains how it should be done for most Asian languages.
+ (2005 Nov 24)
+ Alternative: patch for utf-8 line breaking. (Yongwei Wu, 2008 Feb 23)
+7 [t to move to previous xml/html tag (like "vatov"), ]t to move to next
+ ("vatv").
+7 [< to move to previous xml/html tag, e.g., previous <li>. ]< to move to
+ next <li>, ]< to next </li>, [< to previous </li>.
+8 Add ":rename" command: rename the file of the current buffer and rename
+ the buffer. Buffer may be modified.
+7 Instead of filtering errors with a shell script it should be possible to
+ do this with Vim script. A function that filters the raw text that comes
+ from the 'makeprg'?
+9 Add %F to 'errorformat': file name without spaces. Useful on Unix to
+ avoid matching something up to a time 11:22:33.
+- Add %b to 'errorformat': buffer number. (Yegappan Lakshmanan / Suresh
+ Govindachar)
+7 Add a command that goes back to the position from before jumping to the
+ first quickfix location. ":cbefore"?
+7 Allow a window not to have a statusline. Makes it possible to use a
+ window as a buffer-tab selection.
+8 Allow non-active windows to have a different statusline. (Yakov Lerner)
+6 Python interface: add vim.message() function. (Michal Vitecek, 2002 Nov 5)
+7 Support using ":vert" with User commands. Add expandable items <vert>.
+ Do the same for ":browse" and ":confirm"?
+ For ":silent" and ":debug" apply to the whole user command.
+ More general: need a way to access command modifiers in a user command.
+ Assign them to a v: variable?
+7 Add an invisible buffer which can be edited. For use in scripts that want
+ to manipulate text without changing the window layout.
+8 Add a command to revert to the saved version of file; undo or redo until
+ all changes are gone.
+6 "vim -q -" should read the list of errors from stdin. (Gautam Mudunuri)
+8 Add "--remote-fail": When contacting the server fails, exit Vim.
+ Add "--remote-self": When contacting the server fails, do it in this Vim.
+ Overrules the default of "--remote-send" to fail and "--remote" to do it
+ in this Vim.
+8 When Vim was started without a server, make it possible to start one, as
+ if the "--servername" argument was given. ":startserver <name>"?
+8 No address range can be used before the command modifiers. This makes
+ them difficult to use in a menu for Visual mode. Accept the range and
+ have it apply to the following command.
+8 Add the possibility to set 'fileformats' to force a format and strip other
+ CR characters. For example, for "dos" files remove CR characters at the
+ end of the line, so that a file with mixed line endings is cleaned up.
+ To just not display the CR characters: Add a flag to 'display'?
+7 Some compilers give error messages in which the file name does not have a
+ path. Be able to specify that 'path' is used for these files.
+7 Xterm sends <Esc>O3F for <M-End>. Similarly for other <M-Home>, <M-Left>,
+ etc. Combinations of Alt, Ctrl and Shift are also possible. Recognize
+ these to avoid inserting the raw byte sequence, handle like the key
+ without modifier (unless mapped).
+6 Add "gG": like what "gj" is to "j": go to the N'th window line.
+8 Add command like ":normal" that accepts <Key> notation like ":map".
+9 Support ACLs on more systems.
+7 Add ModeMsgVisual, ModeMsgInsert, etc. so that each mode message can be
+ highlighted differently.
+7 Add a message area for the user. Set some option to reserve space (above
+ the command line?). Use an ":echouser" command to display the message
+ (truncated to fit in the space).
+7 Add %s to 'keywordprg': replace with word under the cursor. (Zellner)
+8 Support printing on Unix. Can use "lpansi.c" as an example. (Bookout)
+8 Add put command that replaces the text under it. Esp. for blockwise
+ Visual mode.
+7 Enhance termresponse stuff: Add t_CV(?): pattern of term response, use
+ regexp: "\e\[[>?][0-9;]*c", but only check just after sending t_RV.
+7 Add "g|" command: move to N'th column from the left margin (after wrapping
+ and applying 'leftcol'). Works as "|" like what "g0" is to "0".
+7 Support setting 'equalprg' to a user function name.
+7 Highlight the characters after the end-of-line differently.
+7 When 'whichwrap' contains "l", "$dl" should join lines?
+8 Add an argument to configure to use $CFLAGS and not modify it? (Mooney)
+8 Enabling features is a mix of configure arguments and defines in
+ feature.h. How to make this consistent? Feature.h is required for
+ non-unix systems. Perhaps let configure define CONF_XXX, and use #ifdef
+ CONF_XXX in feature.h? Then what should min-features and max-features do?
+8 Add "g^E" and "g^Y", to scroll a screen-full line up and down.
+6 Add ":timer" command, to set a command to be executed at a certain
+ interval, or once after some time has elapsed. (Aaron)
+ Perhaps an autocommand event like CursorHold is better?
+8 Add ":confirm" handling in open_exfile(), for when file already exists.
+8 When quitting with changed files, make the dialog list the changed file
+ and allow "write all", "discard all", "write some". The last one would
+ then ask "write" or "discard" for each changed file. Patch in HierAssist
+ does something like this. (Shah)
+7 Use growarray for replace stack.
+7 Have a look at viH (Hellenic or Greek version of Vim). But a solution
+ outside of Vim might be satisfactory (Haritsis).
+3 Make "2d%" work like "d%d%" instead of "d2%"?
+7 "g CTRL-O" jumps back to last used buffer. Skip CTRL-O jumps in the same
+ buffer. Make jumplist remember the last ten accessed buffers?
+7 Make it possible to set the size of the jumplist (also to a smaller number
+ than the default). (Nikolai Weibull)
+- Add code to disable the CAPS key when going from Insert to Normal mode.
+- Set date/protection/etc. of the patchfile the same as the original file.
+- Use growarray for termcodes[] in term.c
+- Add <window-99>, like <cword> but use filename of 99'th window.
+7 Add a way to change an operator to always work characterwise-inclusive
+ (like "v" makes the operator characterwise-exclusive). "x" could be used.
+- Make a set of operations on list of names: expand wildcards, replace home
+ dir, append a string, delete a string, etc.
+- Remove using mktemp() and use tmpname() only? Ctags does this.
+- When replacing environment variables, and there is one that is not set,
+ turn it into an empty string? Only when expanding options? (Hiebert)
+- Option to set command to be executed instead of producing a beep (e.g. to
+ call "play newbeep.au").
+- Add option to show the current function name in the status line. More or
+ less what you find with "[[k", like how 'cindent' recognizes a function.
+ (Bhatt).
+- "[r" and "]r": like "p" and "P", but replace instead of insert (esp. for
+ blockwise registers).
+- Add 'timecheck' option, on by default. Makes it possible to switch off the
+ timestamp warning and question. (Dodt).
+- Add an option to set the time after which Vim should check the timestamps
+ of the files. Only check when an event occurs (e.g., character typed,
+ mouse moved). Useful for non-GUI versions where keyboard focus isn't
+ noticeable.
+- Make 'smartcase' work even though 'ic' isn't set (Webb).
+7 When formatting text, allow to break the line at a number of characters.
+ Use an option for this: 'breakchars'? Useful for formatting Fortran code.
+- Add flag to 'formatoptions' to be able to format book-style paragraphs
+ (first line of paragraph has larger indent, no empty lines between
+ paragraphs). Complements the '2' flag. Use '>' flag when larger indent
+ starts a new paragraph, use '<' flag when smaller indent starts a new
+ paragraph. Both start a new paragraph on any indent change.
+8 The 'a' flag in 'formatoptions' is too dangerous. In some way only do
+ auto-formatting in specific regions, e.g. defined by syntax highlighting.
+8 Allow using a trailing space to signal a paragraph that continues on the
+ next line (MIME text/plain; format=flowed, RFC 2646). Can be used for
+ continuous formatting. Could use 'autoformat' option, which specifies a
+ regexp which triggers auto-formatting (for one line).
+ ":set autoformat=\\s$".
+- Be able to redefine where a sentence stops. Use a regexp pattern?
+- Support multi-byte characters for sentences. Example from Ben Peterson.
+7 Add command "g)" to go to the end of a sentence, "g(" to go back to the
+ end of a sentence. (Servatius Brandt)
+- Be able to redefine where a paragraph starts. For "[[" where the '{' is
+ not in column 1.
+6 Add ":cdprev": go back to the previous directory. Need to remember a
+ stack of previous directories. We also need ":cdnext".
+7 Should ":cd" for MS-DOS go to $HOME, when it's defined?
+- Make "gq<CR>" work on the last line in the file. Maybe for every operator?
+- Add more redirecting of Ex commands:
+ :redir #> bufname
+ :redir #>> bufname (append)
+- Give error message when starting :redir: twice or using END when no
+ redirection was active.
+- Setting of options, specifically for a buffer or window, with
+ ":set window.option" or ":set buffer.option=val". Or use ":buffer.set".
+ Also: "buffer.map <F1> quit".
+6 Would it be possible to change the color of the cursor in the Win32
+ console? (Klaus Hast)
+- Add :delcr command:
+ *:delcr*
+ :[range]delcr[!] Check [range] lines (default: whole buffer) for lines
+ ending in <CR>. If all lines end in <CR>, or [!] is
+ used, remove the <CR> at the end of lines in [range].
+ A CTRL-Z at the end of the file is removed. If
+ [range] is omitted, or it is the whole file, and all
+ lines end in <CR> 'textmode' is set. {not in Vi}
+- Should integrate addstar() and file_pat_to_reg_pat().
+- When working over a serial line with 7 bit characters, remove meta
+ characters from 'isprint'.
+- Use fchdir() in init_homedir(), like in FullName().
+- In win_update(), when the GUI is active, always use the scrolling area.
+ Avoid that the last status line is deleted and needs to be redrawn.
+- That "cTx" fails when the cursor is just after 'x' is Vi compatible, but
+ may not be what you expect. Add a flag in 'cpoptions' for this? More
+ general: Add an option to allow "c" to work with a null motion.
+- Give better error messages by using errno (strerror()).
+- Give "Usage:" error message when command used with wrong arguments (like
+ Nvi).
+- Make 'restorescreen' option also work for xterm (and others), replaces the
+ SAVE_XTERM_SCREEN define.
+7 Support for ":winpos" In xterm: report the current window position.
+- Give warning message when using ":set t_xx=asdf" for a termcap code that
+ Vim doesn't know about. Add flag in 'shortmess'?
+6 Add ":che <file>", list all the include paths which lead to this file.
+- For a commandline that has several commands (:s, :d, etc.) summarize the
+ changes all together instead of for each command (e.g. for the rot13
+ macro).
+- Add command like "[I" that also shows the tree of included files.
+- ":set sm^L" results in ":set s", because short names of options are also
+ expanded. Is there a better way to do this?
+- Add ":@!" command, to ":@" like what ":source!" is to ":source".
+8 Add ":@:!": repeat last command with forceit set.
+- Add 't_normal': Used whenever t_me, t_se, t_ue or t_Zr is empty.
+- ":cab map test ^V| je", ":cunab map" doesn't work. This is vi compatible!
+- CTRL-W CTRL-E and CTRL-W CTRL-Y should move the current window up or down
+ if it is not the first or last window.
+- Include-file-search commands should look in the loaded buffer of a file (if
+ there is one) instead of the file itself.
+7 Change 'nrformats' to include the leader for each format. Example:
+ nrformats=hex:$,binary:b,octal:0
+ Add setting of 'nrformats' to syntax files.
+- 'path' can become very long, don't use NameBuff for expansion.
+- When unhiding a hidden buffer, put the same line at top of the window as
+ the one before hiding it. Or: keep the same relative cursor position (so
+ many percent down the windows).
+- Make it possible for the 'showbreak' to be displayed at the end of the
+ line. Use a comma to separate the part at the end and the start of the
+ line? Highlight the linebreak characters, add flag in 'highlight'.
+- Some string options should be expanded if they have wildcards, e.g.
+ 'dictionary' when it is "*.h".
+- Use a specific type for number and boolean options, making it possible to
+ change it for specific machines (e.g. when a long is 64 bit).
+- Add option for <Insert> in replace mode going to normal mode. (Nugent)
+- Add a next/previous possibility to "[^I" and friends.
+- Add possibility to change the HOME directory. Use the directory from the
+ passwd file? (Antwerpen)
+8 Add commands to push and pop all or individual options. ":setpush tw",
+ ":setpop tw", ":setpush all". Maybe pushing/popping all options is
+ sufficient. ":setflush" resets the option stack?
+ How to handle an aborted mapping? Remember position in tag stack when
+ mapping starts, restore it when an error aborts the mapping?
+- Change ":fixdel" into option 'fixdel', t_del will be adjusted each time
+ t_bs is set? (Webb)
+- "gc": goto character, move absolute character positions forward, also
+ counting newlines. "gC" goes backwards (Weigert).
+- When doing CTRL-^, redraw buffer with the same topline. (Demirel) Store
+ cursor row and window height to redraw cursor at same percentage of window
+ (Webb).
+- Besides remembering the last used line number of a file, also remember the
+ column. Use it with CTRL-^ et. al.
+- Check for non-digits when setting a number option (careful when entering
+ hex codes like 0xff).
+- Add option to make "." redo the "@r" command, instead of the last command
+ executed by it. Also to make "." redo the whole mapping. Basically: redo
+ the last TYPED command.
+- Support URL links for ^X^F in Insert mode, like for "gf".
+- Support %name% expansion for "gf" on Windows.
+- Make "gf" work on "file://c:/path/name". "file:/c:/" and "file:///c:/"
+ should also work?
+- Add 'urlpath', used like 'path' for when "gf" used on an URL?
+8 When using "gf" on an absolute file name, while editing a remote file
+ (starts with scp:// or http://) should prepend the method and machine
+ name.
+- When finding an URL or file name, and it doesn't exist, try removing a
+ trailing '.'.
+- Add ":path" command modifier. Should work for every command that takes a
+ file name argument, to search for the file name in 'path'. Use
+ find_file_in_path().
+- Highlight control characters on the screen: Shows the difference between
+ CTRL-X and "^" followed by "X" (Colon).
+- Integrate parsing of cmdline command and parsing for expansion.
+- Create a program that can translate a .swp file from any machine into a
+ form usable by Vim on the current machine.
+- Add ":noro" command: Reset 'ro' flag for all buffers, except ones that have
+ a readonly file. ":noro!" will reset all 'ro' flags.
+- Add a variant of CTRL-V that stops interpretation of more than one
+ character. For entering mappings on the command line where a key contains
+ several special characters, e.g. a trailing newline.
+- Add regex for 'paragraphs' and 'sections': 'parare' and 'sectre'. Combine
+ the two into a regex for searching. (Ned Konz)
+- Make '2' option in 'formatoptions' also work inside comments.
+- Add 's' flag to 'formatoptions': Do not break when inside a string. (Dodt)
+- When window size changed (with the mouse) and made too small, set it back
+ to the minimal size.
+- Add "]>" and "[<", shift comment at end of line (command; /* comment */).
+- Should not call cursorcmd() for each vgetc() in getcmdline().
+- ":split file1 file2" adds two more windows (Webb).
+- Don't give message "Incomplete last line" when editing binary file.
+- Add ":a", ":i" for preloading of named buffers.
+- When entering text, keep other windows on same buffer updated (when a line
+ entered)?
+- Check out how screen does output optimizing. Apparently this is possible
+ as an output filter.
+- In dosub() regexec is called twice for the same line. Try to avoid this.
+- Window updating from memline.c: insert/delete/replace line.
+- Optimize ml_append() for speed, esp. for reading a file.
+- V..c should keep indent when 'ai' is set, just like [count]cc.
+- Updatescript() can be done faster with a string instead of a char.
+- Screen updating is inefficient with CTRL-F and CTRL-B when there are long
+ lines.
+- Uppercase characters in Ex commands can be made lowercase?
+8 Add option to show characters in text not as "|A" but as decimal ("^129"),
+ hex ("\x81") or octal ("\201") or meta (M-x). Nvi has the 'octal' option
+ to switch from hex to octal. Vile can show unprintable characters in hex
+ or in octal.
+7 Tighter integration with xxd to edit binary files. Make it more
+ easy/obvious to use. Command line argument?
+- How does vi detect whether a filter has messed up the screen? Check source.
+ After ":w !command" a wait_return?
+- Improve screen updating code for doput() (use s_ins()).
+- With 'p' command on last line: scroll screen up (also for terminals without
+ insert line command).
+- Use insert/delete char when terminal supports it.
+- Optimize screen redraw for slow terminals.
+- Optimize "dw" for long row of spaces (say, 30000).
+- Add "-d null" for editing from a script file without displaying.
+- In Insert mode: Remember the characters that were removed with backspace
+ and re-insert them one at a time with <key1>, all together with <key2>.
+- Amiga: Add possibility to set a keymap. The code in amiga.c does not work
+ yet.
+- Implement 'redraw' option.
+- Add special code to 'sections' option to define something else but '{' or
+ '}' as the start of a section (e.g. one shiftwidth to the right).
+7 Allow using Vim in a pipe: "ls | vim -u xxx.vim - | yyy". Only needs
+ implementing ":w" to stdout in the buffer that was read from stdin.
+ Perhaps writing to stdout will work, since stderr is used for the terminal
+ I/O.
+8 Allow opening an unnamed buffer with ":e !cmd" and ":sp !cmd". Vile can
+ do it.
+- Add commands like ]] and [[ that do not include the line jumped to.
+- When :unab without matching "from" part and several matching "to" parts,
+ delete the entry that was used last, instead of the first in the list.
+- Add text justification option.
+- Set boolean options on/off with ":set paste=off", ":set paste=on".
+- After "inv"ing an option show the value: ":set invpaste" gives "paste is
+ off".
+- Check handling of CTRL-V and '\' for ":" commands that do not have TRLBAR.
+- When a file cannot be opened but does exist, give error message.
+- Amiga: When 'r' protection bit is not set, file can still be opened but
+ gives read errors. Check protection before opening.
+- When writing check for file exists but no permission, "Permission denied".
+- If file does not exist, check if directory exists.
+- MSDOS: although t_cv and t_ci are not set, do invert char under cursor.
+- Settings edit mode: make file with ":set opt=xx", edit it, parse it as ex
+ commands.
+- ":set -w all": list one option per line.
+- Amiga: test for 'w' flag when reading a file.
+- :table command (Webb)
+- Add new operator: clear, make area white (replace with spaces): "g ".
+- Add command to ":read" a file at a certain column (blockwise read?).
+- Add sort of replace mode where case is taken from the old text (Goldfarb).
+- Allow multiple arguments for ":read", read all the files.
+- Support for tabs in specific columns: ":set tabcol=8,20,34,56" (Demirel).
+- Add 'searchdir' option: Directories to search for file name being edited
+ (Demirel).
+- Modifier for the put command: Change to linewise, charwise, blockwise, etc.
+- Add commands for saving and restoring options ":set save" "set restore",
+ for use in macro's and the like.
+- Keep output from listings in a window, so you can have a look at it while
+ working in another window. Put cmdline in a separate window?
+- Add possibility to put output of Ex commands in a buffer or file, e.g. for
+ ":set all". ":r :set all"?
+- When the 'equalalways' option is set, creating a new window should not
+ result in windows to become bigger. Deleting a window should not result in
+ a window to become smaller (Webb).
+- When resizing the whole Vim window, the windows inside should be resized
+ proportionally (Webb).
+- Include options directly in option table, no indirect pointers. Use
+ mkopttab to make option table?
+- When doing ":w dir", where "dir" is a directory name, write the current
+ file into that directory, with the current file name (without the path)?
+- Support for 'dictionary's that are sorted, makes access a lot faster
+ (Haritsis).
+- Add "^Vrx" on the command line, replace with contents of register x. Used
+ instead of CTRL-R to make repeating possible. (Marinichev)
+- Add "^Vb" on the command line, replace with word before or under the
+ cursor?
+- Option to make a .swp file only when a change is made (Templeton).
+- Support mapping for replace mode and "r" command (Vi doesn't do this)?
+5 Add 'ignorefilecase' option: Ignore case when expanding file names.
+ ":e ma<Tab>" would also find "Makefile" on Unix.
+8 Sorting of filenames for completion is wrong on systems that ignore
+ case of filenames. Add 'ignorefncase' option. When set, case in
+ filenames is ignored for sorting them. Patch by Mike Williams:
+ ~/vim/patches/ignorefncase. Also change what matches? Or use another
+ option name.
+8 Should be able to compile Vim in another directory, with $(srcdir) set to
+ where the sources are. Add $(srcdir) in the Makefile in a lot of places.
+ (Netherton)
+6 Make it configurable when "J" inserts a space or not. Should not add a
+ space after "(", for example.
+5 When inserting spaces after the end-of-line for 'virtualedit', use tabs
+ when the user wants this (e.g., add a "tab" field to 'virtualedit').
+ (Servatius Brandt)
+
+
+From Elvis:
+- Use "instman.sh" to install manpages?
+- Add ":alias" command.
+- Search patterns:
+ \@ match word under cursor.
+ but do:
+ \@w match the word under the cursor?
+ \@W match the WORD under the cursor?
+8 ":window" command:
+ :win + next window (up)
+ :win ++ idem, wrapping
+ :win - previous window (down)
+ :win -- idem, wrapping
+ :win nr to window number "nr"
+ :win name to window editing buffer "name"
+7 ":cc" compiles a single file (default: current one). 'ccprg' option is
+ program to use with ":cc". Use ":compile" instead of ":cc"?
+
+
+From xvi:
+- CTRL-_ : swap 8th bit of character.
+- Add egrep-like regex type, like xvi (Ned Konz) or Perl (Emmanuel Mogenet)
+
+
+From vile:
+- When horizontal scrolling, use '>' for lines continuing right of a window.
+- Support putting .swp files in /tmp: Command in rc.local to move .swp files
+ from /tmp to some directory before deleting files.
+
+
+Far future and "big" extensions:
+- Instead of using a Makefile and autoconf, use a simple shell script to
+ find the C compiler and do everything with C code. Translate something
+ like an Aap recipe and configure.in to C. Avoids depending on Python,
+ thus will work everywhere. With batch file to find the C compiler it
+ would also work on MS-Windows.
+- Make it easy to setup Vim for groups of users: novice vi users, novice
+ Vim users, C programmers, xterm users, GUI users,...
+- Change layout of blocks in swap file: Text at the start, with '\n' in
+ between lines (just load the file without changes, except for Mac).
+ Indexes for lines are from the end of the block backwards. It's the
+ current layout mirrored.
+- Make it possible to edit a register, in a window, like a buffer.
+- Add stuff to syntax highlighting to change the text (upper-case keywords,
+ set indent, define other highlighting, etc.).
+- Mode to keep C-code formatted all the time (sort of on-line indent).
+- Several top-level windows in one Vim session. Be able to use a different
+ font in each top-level window.
+- Allow editing above start and below end of buffer (flag in 'virtualedit').
+- Smart cut/paste: recognize words and adjust spaces before/after them.
+- Add open mode, use it when terminal has no cursor positioning.
+- Special "drawing mode": a line is drawn where the cursor is moved to.
+ Backspace deletes along the line (from jvim).
+- Implement ":Bset", set option in all buffers. Also ":Wset", set in all
+ windows, ":Aset, set in all arguments and ":Tset", set in all files
+ mentioned in the tags file.
+ Add buffer/arg range, like in ":2,5B%s/..." (do we really need this???)
+ Add search string: "B/*.c/%s/.."? Or ":F/*.c/%s/.."?
+- Support for underlining (underscore-BS-char), bold (char-BS-char) and other
+ standout modes switched on/off with , 'overstrike' option (Reiter).
+- Add vertical mode (Paul Jury, Demirel): "5vdw" deletes a word in five
+ lines, "3vitextESC" will insert "text" in three lines, etc..
+4 Recognize l, #, p as 'flags' to EX commands:
+ :g/RE/#l shall print lines with line numbers and in list format.
+ :g/RE/dp shall print lines that are deleted.
+ POSIX: Commands where flags shall apply to all lines written: list,
+ number, open, print, substitute, visual, &, z. For other commands, flags
+ shall apply to the current line after the command completes. Examples:
+ :7,10j #l Join the lines 7-10 and print the result in list
+- Allow two or more users to edit the same file at the same time. Changes
+ are reflected in each Vim immediately. Could work with local files but
+ also over the internet. See http://www.codingmonkeys.de/subethaedit/.
+
+When using "do" or ":diffget" in a buffer with changes in every line an extra
+empty line would appear.
+
+vim:tw=78:sw=4:sts=4:ts=8:ft=help:norl:
+vim: set fo+=n :