*todo.txt* For Vim version 7.3. Last change: 2013 May 17 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|. Issues can also be entered online: http://code.google.com/p/vim/issues/list Updates will be forwarded to the vim_dev maillist. Issues entered there will not be repeated below, unless there is extra information. *known-bugs* -------------------- Known bugs and current work ----------------------- --- Python interface Python SystemExit exception is not handled properly. Patch to catch the exception and give an error. (Yasuhiro Matsumoto) Does not work, tests fail. Patch to print the result of a :python command. (Maxim Philippov , 2012 Aug 16) Update Aug 17. Patch no longer applies. ":python os.chdir('/tmp')" makes short buffer names invalid. (Xavier de Gaye) Check directory and call shorten_fnames()? Better: make os.chdir() invoke the interal :cd implementation, that takes care of all side effects. Mac: OS/X 10.4 with Python 2.5 installed: configure finds an extra argument that breaks the build. (Brian Victor, 2008 Sep 1) Patch to access screen under Python. (Marko Mahni, 2010 Jul 18) Python: ":py raw_input('prompt')" doesn't work. (Manu Hack) Win32: 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? Python: Be able to define a Python function that can be called directly from Vim script. Requires converting the arguments and return value. --- runtime files Syntax file for protocol buffers. (Feng Xiao, 2013 May 9) Has an ugly copyright notice. No conflict with Vim license? Patch for JavaScript syntax. (Kevin Locke, 2013 May 9) Claudio didn't respond yet. --- Fast regexp engine Including NFA regexp code. Latest version probably is: https://code.google.com/p/vim-soc2008-regexp/source/browse/trunk/vim72-re/src/regexp_nfa.c Patch updated by Ken Takata. (May 13) To be able to run tests: - set defaultre=old / nfa / auto - In pattern use "\%#= to set the engine: 0 = automatic, 1 = old 2 = nfa Get example files for many languages. Compare syntax highlighting with old and new regexp, find regexp constructs where NFA does not work correctly. Idea for comparing output: use format.vim (ZyX, 2013 May 12) MakeSynChk from Charles Campbell. (May 14) Performance tests: - ~/vim/test/veryslow.js (file from Daniel Fetchinson) - ~/vim/test/slowsearch - ~/vim/test/rgb.vim - ~/vim/text/FeiqCfg.xml (file from Netjune) - ~/vim/text/edl.svg (also XML) - search for a.*e*exn in the vim executable. Go to last line to use 'hlsearch'. --- bug fixes Patch to avoid wrong error message for 1.0[0]. (Yasuhiro Matsumoto, 2013 May 1) Patch for if_lua. (Luis Carvalho, 2012 Aug 26, update Aug 29, another Aug 30, then Sep 1, reminder Oct 14) Patch to check if 'foldexpr' sets did_emsg. (Christian Brabandt, 2013 Mar 20) Patch for 'backupcopy' default behavior for symlinks on Windows. (David Pope, 2012 Mar 21, update Mar 31) With fix for memory leak: Ken Takata, 2012 Aug 24 Another update Sep 24. Also patch from Joerg Bornemann, 2013 Apr 30. 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 by Christian Brabandt, 2012 Nov 16. Do allow real tags above the !_TAG entries. Undo older patch. Issue 90. Matches might be highlighted correctly. Inefficient patch by Christian Brabandt, 2013 Feb 26. Patch to use bold/italic fonts when 'guifontewide' is set. (Ken Takata, 2013 Mar 31) Problem with winfixheight and resizing. (Yukihiro Nakadaira, 2011 Sep 17) Patch Sep 18. Patch for IME problems. Remove hacking code for old IM. (Yukihiro Nakadaira, 2012 Jul 20) Patch to fix finding toolbar bitmaps. Issue 129. Combining characters are not used when executing a register with :@w. (William Fugh, 2013 Apr 5, more info from Ben Fritz) Patch by Christian Brabandt, 2013 Apr 6. Second one. MS-Windows ACL support doesn't work well. Patch from Ken Takata, 2012 Aug 29. Update Aug 31. Another patch for MingW, 2012 Dec 29. Bug in completion menu. (Olivier Teuliere, 2013 Feb 15) Patch by Christian Brabandt, Feb 16. 'cursorline' is drawn incorrectly in diff mode. Patch by Christian Brabandt, 2012 Apr 2. --- slightly incompatible changes Patch to load ~/.vim/vimrc when ~/.vimrc isn't found. (Lech Lorens, 2013 Apr 13) It's probably a good idea to make a negative value for 'sts' use the value of 'sw'. Patch by So8res, Oct 3 2012 When a buffer-local mapping is used, but a global mapping starts with the same characters, Vim currently waits for the next typed character to find out if the global mapping matches. It is probably better to let the local mapping win and not wait. (discussion with Andy Wokula, 2013 Jan 30) Patch by Michael Henry, 2013 Jan 30, update Feb 15. ---- Fixes to be included before 7.4 above, less important stuff below ---- Several syntax file match "^\s*" which may get underlined if that's in the highlight group. Add a "\zs" after it? Go through more coverity reports. Discussion about canonicalization of Hebrew. (Ron Aaron, 2011 April 10) Checking runtime scripts: Thilo Six, 2012 Jun 6. GTK: problem with 'L' in 'guioptions' changing the window width. (Aaron Cornelius, 2012 Feb 6) Javascript file where indent gets stuck on: GalaxyMaster, 2012 May 3. The CompleteDone autocommand needs some info passed to it: - The word that was selected (empty if abandoned complete) - Type of completion: tag, omnifunc, user func. Using ":call foo#d.f()" doesn't autoload the "foo.vim" file. That is, calling a dictionary function on an autoloaded dict. Works OK for echo, just not for ":call" and ":call call()". (Ted, 2011 Mar 17) Patch by Christian Brabandt, 2013 Mar 23. Not 100% sure this is the right solution. Win32: When a directory name contains an exclamation mark, completion doesn't complete the contents of the directory. No escaping for the "!"? (Jan Stocker, 2012 Jan 5) Problem caused by patch 7.3.638: window->open does not update window correctly. Issue 91. Patch to fix that 'cedit' is recognized after :normal. (Christian Brabandt, 2013 Mar 19, later message) Patch to view coverage of the tests. (Nazri Ramliy, 2013 Feb 15) Patch to invert characters differently in GTK. (Yukihiro Nakadaira, 2013 May 5) Patch to add the bufferlist() function. (Yegappan Lakshmanan, 2013 May 5) Patch to allow setting w:quickfix_title via setqflist() and setloclist() functions. (Christian Brabandt, 2013 May 8, update May 11) Patch to support 'u' in interactive substitute. (Christian Brabandt, 2012 Sep 28) With tests: Oct 9. Patch to add getlocstack() / setlocstack(). (Christian Brabandt, 2013 May 14) Second one. Patch to make fold updates much faster. (Christian Brabandt, 2012 Dec) Patch for IME handling, adds 'imactivatefunc' and 'imstatusfunc' option. (Yukihiro Nakadaira, 2012 Aug 16) Patch to improve IME handling. (Yasuhiro Matsumoto, 2012 Jul 18) Issue 54: document behavior of -complete, also expands arg. - Add regex for 'paragraphs' and 'sections': 'parare' and 'sectre'. Combine the two into a regex for searching. (Ned Konz) Patch by Christian Brabandt, 2013 Apr 20, unfinished. Bug: findfile("any", "http://;") returns http://any. (Andrew Pimlott, 2013 May 7) Not sure if that can be fixed, but when using "file://" it should be possible to check if the file exists. v:register is not directly reset to " after a delete command that specifies a register. It is reset after the next command. (Steve Vermeulen, 2013 Mar 16) 'ff' is wrong for one-line file without EOL. (Issue 77) Patch to set antialiasing style on Windows. (Ondrej Balaz, 2013 Mar 14) Needs a different check for CLEARTYPE_QUALITY. Issue 72: 'autochdir' causes problems for :vimgrep. In the ATTENTION message about an existing swap file, mention the name of the process that is running. It might actually be some other program, e.g. after a reboot. MS-Windows: Crash opening very long file name starting with "\\". (Christian Brock, 2012 Jun 29) patch to add "combine" flag to syntax commands. (so8res, 2012 Dec 6) Syntax update problem in one buffer opened in two windows, bottom window is not correctly updated. (Paul Harris, 2012 Feb 27) Patch to add assignments in cscope. (Uli Meis, Estabrooks, 2012 Sep 1) Alternate patch by Gary Johnson, Sep 4. Patch to add getsid(). (Tyru, 2011 Oct 2) Do we want this? Update Oct 4. Or use expand('')? Patch to make confirm() display colors. (Christian Brabandt, 2012 Nov 9) Patch to add functions for signs. (Christian Brabandt, 2013 Jan 27) Patch to use directX to draw text on Windows. Adds the 'renderoptions' option. (Taro Muraoka, 2013 Jan 25, update 2013 Apr 3, May 14) Problem with refresh:always in completion. (Tyler Wade, 2013 Mar 17) b:undo_ftplugin cannot call a script-local function. (Boris Danilov, 2013 Jan 7) Patch for :tabcloseleft, after closing a tab go to left tab. (William Bowers, 2012 Aug 4) Patch to improve equivalence classes in regexp patterns. (Christian Brabandt, 2013 Jan 16, update Jan 17) Patch with suggestions for starting.txt. (Tony Mechelynck, 2012 Oct 24) But use Gnome instead of GTK? Patch to make FocusGained and FocusLost work in modern terminals. (Hayaki Saito, 2013 Apr 24) Should be possible to enable/disable matchparen per window or buffer. Add a check for b:no_match_paren in Highlight_matching_Pair() (Marcin Szamotulski, 2012 Nov 8) Crash in autocmd that unloads buffers in a BufUnload event. (Andrew Pimlott, 2012 Aug 11) Disallow :new when BufUnload is being handled? MS-Windows resizing problems: - Windows window on screen positioning: Patch by Yukihiro Nakadaira, 2012 Jun 20. Uses getWindowRect() instead of GetWindowPlacement() - Win32: When the taskbar is at the top of the screen creating the tabbar causes the window to move unnecessarily. (William E. Skeith III, 2012 Jan 12) Patch: 2012 Jan 13 Needs more work (2012 Feb 2) 'iminsert' global value set when using ":setlocal iminsert"? (Wu, 2012 Jun 23) Patch to append regexp to tag commands to make it possible to select one out of many matches. (Cody Cutler, 2013 Mar 28) Help for 'b:undo_indent'. (Thilo Six, 2012 May 28) Also question if examples are correct. It should be possible to make globpath() return a list instead of a string, like with glob(). (Greg Novack, 2012 Nov 2) The input map for CTRL-O in mswin.vim causes problems after CTRL-X CTRL-O. Suggestion for another map. (Philip Mat, 2012 Jun 18) But use "gi" instead of "a". Or use CTRL-\ CTRL-O. Patch to support user name completion on MS-Windows. (Yasuhiro Matsumoto, 2012 Aug 16) Have an option for spell checking to not mark any Chinese, Japanese or other double-width characters as error. Or perhaps all characters above 256. (Bill Sun) Helps a lot for mixed Asian and latin text. When there are no command line arguments ":next" and ":argu" give E163, which is confusing. Should say "the argument list is empty". URXVT: - will get stuck if byte sequence does not contain the expected semicolon. - Use urxvt mouse support also in xterm. Explanations: http://www.midnight-commander.org/ticket/2662 MS-Windows: test 17 fails. Analysis by Michael Soyka, 2012 Nov 5. Patch to add tests for if_xcmdsrv.c., Jul 8, need some more work. (Brian Burns) New tests Jul 13. Update Jul 17. Discussion Jul 18. When running Vim in silent ex mode, an existing swapfile causes Vim to wait for a user action without a prompt. (Maarten Billemont, 2012 Feb 3) Do give the prompt? Quit with an error? Patch to list user digraphs. (Christian Brabandt, 2012 Apr 14) Patch for input method status. (Hirohito Higashi, 2012 Apr 18) Patch to use .png icons for the toolbar on MS-Windows. (Martin Gieseking, 2013 Apr 18) Patch for has('unnamedplus') docs. (Tony Mechelynck, 2011 Sep 27) And one for gui_x11.txt. - 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 More recent version: https://retracile.net/wiki/VimBreakIndent Posted to vim-dev by Taylor Hedberg, 2011 Nov 25 ":cd" doesn't work when current directory path contains "**". finddir() has the same problem. (Yukihiro Nakadaira, 2012 Jan 10) Requires a rewrite of the file_file_in_path code. Problem with l: dictionary being locked in a function. (ZyX, 2011 Jul 21) Should use has("browsefilter") in ftplugins. Requires patch 7.3.593. Update for vim2html.pl. (Tyru, 2013 Feb 22) Issue 48: foldopen error can't be caught by try/catch Patch to sort functions starting with '<' after others. Omit dict functions, they can't be called. (Yasuhiro Matsumoto, 2011 Oct 11) Patch to pass list to or(), and() and xor(). (Yasuhiro Matsumoto, 2012 Feb 8) Patch to improve "it" and "at" text object matching. (Christian Brabandt, 2011 Nov 20) Patch to improve GUI find/replace dialog. (Christian Brabandt, 2012 May 26) Update Jun 2. `] moves to character after insert, instead of the last inserted character. (Yukihiro Nakadaira, 2011 Dec 9) Plugin for Modeleasy. (Massimiliano Tripoli, 2011 Nov 29) BufWinLeave triggers too late when quitting last window in a tab page. (Lech Lorens, 2012 Feb 21) Patch for 'transparency' option. (Sergiu Dotenco, 2011 Sep 17) Only for MS-Windows. No documentation. Do we want this? Patch to support cursor shape in Cygwin console. (Ben bgold, 2011 Dec 27) Patch to support UTF-8 for Hangul. (Shawn Y.H. Kim, 2011 May 1) Needs more work. Pinged 2012 Jan 4. Issue 64: when 'incsearch' is on can't paste LF on command line. On MS-Windows a temp dir with a & init causes system() to fail. (Ben Fritz, 2012 Jun 19) 'cursorline' is displayed too short when there are concealed characters and 'list' is set. (Dennis Preiser) Patch 7.3.116 was the wrong solution. Christian Brabandt has another incomplete patch. (2011 Jul 13) With concealed text mouse click doesn't put the cursor in the right position. (Herb Sitz) Fix by Christian Brabandt, 2011 Jun 16. Doesn't work properly, need to make the change in where RET_WIN_BUF_CHARTABSIZE() is called. 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) 'cursorline' works on a text line only. Add 'cursorscreenline' for highlighting the screen line. (Christian Brabandt, 2012 Mar 31) Win32: Patch to use task dialogs when available. (Sergiu Dotenco, 2011 Sep 17) New feature, requires testing. Made some remarks. Win32: Patch for alpha-blended icons and toolbar height. (Sergiu Dotenco, 2011 Sep 17) Asked for feedback from others. Win32: Cannot cd into a directory that starts with a space. (Andy Wokula, 2012 Jan 19) Win32: default for 'backupcopy' is wrong for a symbolic link. (mklink one two). (Benjamin Fritz, 2012 Mar 15) Need to escape $HOME on Windows? (ZyX, 2011 Jul 21) "2" in 'formatopions' not working in comments. (Christian Corneliussen, 2011 Oct 26) Bug in repeating Visual "u". (Lawrence Kesteloot, 2010 Dec 20) Using "p" in Visual mode while specifying the small delete register "- overwrites the register before it is put. (Marcin Szamotulski, 2012 Nov 23) With "unamedplus" in 'clipboard' pasting in Visual mode causes error for empty register. (Michael Seiwald, 2011 Jun 28) I can't reproduce it. In GTK Gvim, setting 'lines' and 'columns' to 99999 causes a crash (Tony Mechelynck, 2011 Apr 25). Can reproduce the crash sometimes: gvim -N -u NONE --cmd 'set lines=99999 columns=99999' (gvim:25968): Gdk-WARNING **: Native Windows wider or taller than 65535 pixels are not supported The program 'gvim' received an X Window System error. This probably reflects a bug in the program. The error was 'RenderBadPicture (invalid Picture parameter)'. (Details: serial 313 error_code 161 request_code 149 minor_code 8) (Note to programmers: normally, X errors are reported asynchronously; that is, you will receive the error a while after causing it. To debug your program, run it with the --sync command line option to change this behavior. You can then get a meaningful backtrace from your debugger if you break on the gdk_x_error() function.) Check that number of pixels doesn't go above 65535? Windows keys not set properly on Windows 7? (cncyber, 2010 Aug 26) When using a Vim server, a # in the path causes an error message. (Jeff Lanzarotta, 2011 Feb 17) Setting $HOME on MS-Windows is not very well documented. Suggestion by Ben Fritz (2011 Oct 27). Bug: E685 error for func_unref(). (ZyX, 2010 Aug 5) Bug: Windows 7 64 bit system freezes when 'clipboard' set to "unnamed" and doing ":g/test/d". Putting every delete on the clipboard? (Robert Chan, 2011 Jun 17) When there is a ">" in a line that "gq" wraps to the start of the next line, then the following line will pick it up as a leader. Should get the leader from the first line, not a wrapped line. (Matt Ackeret, 2012 Feb 27) 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) Changes to manpage plugin. (Elias Toivanen, 2011 Jul 25) Patch to make "z=" work when 'spell' is off. Does this have nasty side effects? (Christian Brabandt, 2012 Aug 5) Would also need to do this for spellbadword() and spellsuggest(). 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. string() can't parse back "inf" and "nan". Fix documentation or fix code? (ZyX, 2010 Aug 23) Make 'formatprg' global-local. (Sung Pae) When doing "redir => s:foo" in a script and then "redir END" somewhere else (e.g. in a function) it can't find s:foo. When setqflist() uses a filename that triggers a BufReadCmd autocommand Vim doesn't jump to the correct line with :cfirst. (ZyX, 2011 Sep 18) 7 Make "ga" show the digraph for a character, if it exists. Patch from Christian Brabandt, 2011 Aug 19. maparg() does not show the