*todo.txt* For Vim version 8.0. Last change: 2017 Apr 23 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: https://github.com/vim/vim/issues Only use this for bug reports, not for questions! Those belong on the maillist. 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 ----------------------- Remove the Farsi code? +channel: - job_stop() should not always close the channel, e.g. for "int". (Martin Gammelsæter, 2017 Apr 11, #1632) Only assume killed on "kill". Check job->jv_status not to be JOB_ENDED. - Try out background make plugin: https://github.com/AndrewVos/vim-make-background - Problem with stderr on Windows? (Vincent Rischmann, 2016 Aug 31, #1026) - Add 'cwd' argument to start_job(): directory to change to in the child. check for valid directory before forking. Part of patch for environment, Yasuhiro Matsumoto, #1160 - When out_cb executes :sleep, the close_cb may be invoked. (Daniel Hahler, 2016 Dec 11, #1320) - Implement |job-term| ? - Channel test fails with Motif. Sometimes kills the X11 server. - When a message in the queue but there is no callback, drop it after a while? Add timestamp to queued messages and callbacks with ID, remove after a minute. Option to set the droptime. - Add an option to drop text of very long lines? Default to 1 Mbyte. - Add remark about undo sync, is there a way to force it? - When starting a job, have an option to open the server socket, so we know the port, and pass it to the command with --socket-fd {nr}. (Olaf Dabrunz, Feb 9) How to do this on MS-Windows? - For connection to server, a "keep open" flag would be useful. Retry connecting in the main loop with zero timeout. - job_start(): run job in a newly opened terminal. With xterm could use -S{pty}. Although user could use "xterm -e 'cmd arg'". Regexp problems: - Since 7.4.704 the old regex engine fails to match [[:print:]] in 0xf6. (Manuel Ortega, 2016 Apr 24) Test fails on Mac. Avoid using isalpha(), isalnum(), etc? Depends on LC_CTYPE - The old engine does not find a match for "/\%#=1\(\)\{80}", the new engine matches everywhere. - Using win_linetabsize() can still be slow. Cache the result, store col and vcol. Reset them when moving to another line. - Very slow with a long line and Ruby highlighting. (John Whitley, 2014 Dec 4) - Bug with pattern: '\vblock (\d+)\.\n.*\d+%(\1)@ and \?. (Brett Stahlman, 2013 Dec 21) Remark from Marcin Szamotulski; Remark from Brett 2014 Jan 6 and 7. - NFA regexp doesn't handle \%\)\@<=.*\%(<\/\(\w\+\)>\)\@=" matching text inside HTML tags. This problem is probably the same: "\%(^\1.*$\n\)\@<=\(\d\+\).*$". (guotuofeng, 2015 Jun 22) - Strange matching with "\(Hello\n\)\@<=A". (Anas Syed, 2015 Feb 12) - Problem with \v(A)@<=b+\1c. (Issue 334) - Diff highlighting can be very slow. (Issue 309) - Using %> for a virtual column has a check based on 'tabsize'. Better would be to cache the result of win_linetabsize(col), storing both col and vcol, and use them to decide whether win_linetabsize() needs to be called. Reset col and vcol when moving to another line. - this doesn't work: "syntax match ErrorMsg /.\%9l\%>20c\&\%<28c/". Leaving out the \& works. Seems any column check after \& fails. - The pattern "\1" with the old engine gives E65, with the new engine it matches the empty string. (Dominique Pelle, 2015 Oct 2, Nov 24) had_endbrace[] is set but not initialized or used. - Difference between two engines: ".*\zs\/\@>\/" on text "///" (Chris Paul, 2016 Nov 13) New engine not greedy enough? Running test_gui and test_gui_init with Motif sometimes kills the window manager. Problem with Motif? Memory leak in test97? The string is actually freed. Weird. Patch for shellescape(). (Christian Brabandt, 2017 Apr 20, #1590) Patch for flickering redraw. (Hirohito Higashi, 2017 Apr 23, #1637) New value "uselast" for 'switchbuf'. (Lemonboy, 2017 Apr 23, #1652) Add a toolbar in the terminal. Can be global, above all windows, or specific for one window. Use tb_set(winid, [{'text': 'stop', 'cb': callback, 'hi': 'Green'}]) tb_highlight(winid, 'ToolBar') tb_get(winid) json_encode(): should convert to utf-8. (Nikolai Pavlov, 2016 Jan 23) What if there is an invalid character? Json string with trailing \u should be an error. (Lcd) When session file has name in argument list but the buffer was deleted, the buffer is not deleted when using the session file. (#1393) Should add the buffer in hidden state. When an item in the quickfix list has a file name that does not exist, behave like the item was not a match for :cnext. Wrong diff highlighting with three files. (2016 Oct 20, #1186) Also get E749 on exit. Another example in #1309 Patch to change all use of &sw to shiftwidth(). (Tyru, 2017 Feb 19) Wait until maintainers integrate it. When deleting a mark or register, leave a tombstone, so that it's also deleted when writing viminfo (and the delete was the most recent action). #1339 Suggestion to improve pt-br spell checking. (Marcelo D Montu, 2016 Dec 15, #1330) Error in test_startup_utf8 on Solaris. (Danek Duvall, 2016 Aug 17) Completion for :!cmd shows each match twice. #1435 GTK: When adding a timer from 'balloonexpr' it won't fire, because g_main_context_iteration() doesn't return. Need to trigger an event when the timer expires. Screen update bug related to matchparen. (Chris Heath, 2017 Mar 4, #1532) Rule to use "^" for statusline does not work if a space is defined with highlighting for both stl and stlnc. Patch by Ken Hamada (itchyny, 2016 Dec 11) 8 "stl" and "stlnc" in 'fillchars' don't work for multi-byte characters. Patch by Christian Wellenbrock, 2013 Jul 5. Using CTRL-G_U in InsertCharPre causes trouble for redo. (Israel Chauca Fuentes, 2017 Feb 12, #1470) Check for errors E704 and E705 only does VAR_FUNC, should also do VAR_PARTIAL. (Nikolai Pavlov, 2017 Mar 13, #1557) Make a function to check for function-like type? Screen updated delayed when using CTRL-O u in Insert mode. (Barlik, #1191) Perhaps because status message? Implement optional arguments for functions. func Foo(start, count = 1 all = 1) call Foo(12) call Foo(12, all = 0) call Foo(12, 15, 0) writefile() does not abort as soon as an error is found. (Nikolai Pavlov, 2017 Feb 14, #1476) Patch to support on-the-spot and over-the-spot input method. (Ken Takata, 2017 Feb 14). Add a command to take a range of lines, filter them and put the output somewhere else. :{range}copy {dest} !cmd Patch to fix that empty first tab is not in session. (Hirohito Higashi, 2016 Nov 25, #1282) Patch for restoring wide characters in the console buffer. (Ken Takata, 2016 Jun 7) Patch to fix escaping of job arguments. (Yasuhiro Matsumoto, 2016 Oct 5) Update Oct 14: https://gist.github.com/mattn/d47e7d3bfe5ade4be86062b565a4bfca Characters deleted on completion. (Adrià Farrés, 2017 Apr 20, #1645) Remarks from Christian Brabandt (Apr 21) The TermResponse event is not triggered when a plugin has set 'eventignore' to "all". Netrw does this. (Gary Johnson, 2017 Jan 24) Postpone the event until 'eventignore' is reset. Patch to make urxvt mouse work better, recognize Esc[*M termcap code. (Maurice Bos, 2017 Feb 17, #1486) Expanding /**/ is slow. Idea by Luc Hermitte, 2017 Apr 14. Once .exe with updated installer is available: Add remark to download page about /S and /D options (Ken Takata, 2016 Apr 13) Or point to nightly builds: https://github.com/vim/vim-win32-installer/releases Problem passing non-UTF-8 strings to Python 3. (Björn Linse, 2016 Sep 11, #1053) With patch, does it work? Using --remote to open a file in which a # appears does not work on MS-Windows. Perhaps in \# the \ is seen as a path separator. (Axel Bender, 2017 Feb 9) Can we expand wildcards first and send the path literally to the receiving Vim? Or make an exception for #, it's not useful remotely. ":sbr" docs state it respect 'switchbuf', but "vsplit" does not cause a vertical split. (Haldean Brown, 2017 Mar 1) Use ADDR_OTHER instead of ADDR_LINES for many more commands. Add tests for using number larger than number of lines in buffer. Might be useful to have isreadonly(), like we have islocked(). Avoids exceptions, e.g. when using the b: namespace as a dict. Patch to make v:shell_error writable. (Christian Brabandt, 2016 Sep 27) Useful to restore it. Is there another solution? "ci[" does not look for next [ like ci" does look for next ". (J.F. 2017 Jan 7) Patch for wrong cursor position on wrapped line, involving breakindent. (Ozaki Kiichi, 2016 Nov 25) Does this also fix #1408 ? Patch for 'cursorlinenr' option. (Ozaki Kiichi, 2016 Nov 30) When 'completeopt' has "noselect" does not insert a newline. (Lifepillar, 2017 Apr 23, #1653) Window resizing with 'winfixheight': With a vertical split the height changes anyway. (Tommy allen, 2017 Feb 21, #1502) When adding an item to a new quickfix list make ":cnext" jump to that item. Make a difference being at the first item and not having used :cnext at all. (Afanasiy Fet, 2017 Jan 3) Invalid behavior with NULL list. (Nikolai Pavlov, #768) E.g. deepcopy(test_null_list()) Patch to make it possible to extend a list with itself. (Nikolai Pavlov, 2016 Sep 23) Patch to add Zstandard compressed file support. (Nick Terrell, 2016 Oct 24) Patch to add trim() function. (Bukn, 2016 Nov 25, #1280) Patch to add MODIFIED_BY to MSVC build file. (Chen Lei, 2016 Nov 24, #1275) Patch to change argument of :marks. (LemonBoy, 2017 Jan 29, #1426) On Windows buffer completion sees backslash as escape char instead of path separator. (Toffanim, 2016 Nov 24, #1274) min() and max() spawn lots of error messages if sorted list/dictionary contains invalid data (Nikolay Pavlov, 2016 Sep 4, #1039) Should :vmap in matchit.vim be :xmap? (Tony Mechelynck) Problem with whitespace in errorformat. (Gerd Wachsmuth, 2016 May 15, #807) Undo problem: "g-" doesn't go back, gets stuck. (Björn Linse, 2016 Jul 18) Add "unicode true" to NSIS installer. Doesn't work with Windows 95, which we no longer support. sort() is not stable when using numeric/float sort (Nikolay Pavlov, 2016 Sep 4#1038) Patch to add "cmdline" completion to getcompletion(). (Shougo, Oct 1, #1140) Feature request: Complete members of a dictionary. (Luc Hermitte, 2017 Jan 4, #1350) Undo message is not always properly displayed. Patch by Ken Takata, 2013 oct 3. Doesn't work properly according to Yukihiro Nakadaira. Also see #1635. Patch for systemlist(), add empty item. (thinca, Sep 30, #1135) Add an argument to choose binary or non-binary (like readfile()), when omitted use the current behavior. Include the test. Patch to add tagfunc(). Cleaned up by Christian Brabandt, 2013 Jun 22. New update 2017 Apr 10, #1628 Unnamed register only contains the last deleted text when appending deleted text to a register. (Wolfgang Jeltsch, reproduced by Ben Fritz, 2017 Apr 10) When 'keywordprg' starts with ":" the argument is still escaped as a shell command argument. (Romain Lafourcade, 2016 Oct 16, #1175) Patch to support CamelCase for spell checking: See a lower-to-upper case change as a word boundary. (btucker-MPCData, 2016 Nov 6, #1235) Idea from Sven: record sequence of keys. Useful to show others what they are doing (look over the shoulder), and also to see what happened. Probably list of keystrokes, with some annotations for mode changes. Could store in logfile to be able to analyse it with an external command. E.g. to see when's the last time a plugin command was used. execute() cannot be used with command completeion. (Daniel Hahler, 2016 Oct 1, #1141) cmap using execute() has side effects. (Killthemule, 2016 Aug 17, #983) Patch to order results from taglist(). (Duncan McDougall, 2016 Oct 25) patch for 'spellcamelcase' option: spellcheck each CamelCased word. (Ben Tucker, 2016 Dec 2) When using ":diffput" through a mapping, undo in the target buffer isn't synced. (Ryan Carney, 2016 Sep 14) Syntax highlighting for messages with RFC3339 timestamp (#946) Did maintainer reply? Patch to avoid problem with special characters in file name. (Shougo, 2016 Sept 19, #1099) Not finished? ml_get errors when reloading file. (Chris Desjardins, 2016 Apr 19) Also with latest version. Cannot delete a file with square brackets with delete(). (#696) Patch to add ":syn foldlevel" to use fold level further down the line. (Brad King, 2016 Oct 19, update 2017 Jan 30) Completion for input() does not expand environment variables. (chdiza, 2016 Jul 25, #948) Patch to fix wrong encoding of error message on Cygwin/MSYS terminal. (Ken Takata, 2016 Oct 4) 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). 'hlsearch' interferes with a Conceal match. (Rom Grk, 2016 Aug 9) Patch to add context information to quickfix/location list. (Yegappan Lakshmanan, 2016 Aug 25, #1012) MS-Windows: use WS_HIDE instead of SW_SHOWMINNOACTIVE in os_win32.c? Otherwise task flickers in taskbar. Bogus characters inserted when triggering indent while changing test. (Vitor Antunes, 2016 Nov 22, #1269) Should make ":@r" handle line continuation. (Cesar Romani, 2016 Jun 26) Also for ":@.". Repeating 'opfunc' in a function only works once. (Tarmean, 2016 Jul 15, #925) Have a way to get the call stack, in a function and from an exception. #1125 Patch to add 'pythonhome' and 'pythonthreehome' options. (Kazuki Sakamoto, 2016 Nov 21, #1266) Second problem in #966: ins_compl_add_tv() uses get_dict_string() multiple times, overwrites the one buffer. (Nikolay Pavlov, 2016 Aug 5) This does not work: :set cscopequickfix=a- (Linewi, 2015 Jul 12, #914) Possibly wrong value for seq_cur. (Florent Fayolle, 2016 May 15, #806) Patch to add separate highlighting for quickfix current line. (anishsane, 2016 Sep 16, #1080) Filetype plugin for awk. (Doug Kearns, 2016 Sep 5) Patch to improve map documentation. Issue #799. Patch for syntax folding optimization. (Shougo, 2016 Sep 6, #1045) Patch for drag&drop reordering of GUI tab pages reordering. (Ken Takata, 2013 Nov 22, second one, also by Masamichi Abe) Now on Git: https://gist.github.com/nocd5/165286495c782b815b94 Update 2016 Aug 10. We can use '. to go to the last change in the current buffer, but how about the last change in any buffer? Can we use ', (, is next to .)? Ramel Eshed: system() is much slower than job_start(), why? (Aug 26) When generating the Unicode tables with runtime/tools/unicode.vim the emoji_width table has only one entry. It's possible to add ",," to 'wildignore', an empty entry. Causes problems. Reject the value? #710. Patch to fix increment/decrement not working properly when 'virtualedit' is set. (Hirohito Higashi, 2016 Aug 1, #923) Patch to support strikethrough next to bold and italic. (Christian Brabandt, 2013 Jul 30) Update from Ken Takata, 2013 Oct 12. Update mentioned by Christian, 2016 Apr 25. Update from Ken Takata, 2016 Jul 17. When doing "vi buf.md" a BufNew autocommand for *.md is not triggered. Because of using the initial buffer? (Dun Peal, 2016 May 12) Patch to add the :bvimgrep command. (Christian Brabandt, 2014 Nov 12) Updated 2016 Jun 10, #858 Update 2017 Mar 28: use Add redrawtabline command. (Naruhiko Nishino, 2016 Jun 11) Neovim patch for utfc_ptr2char_len() https://github.com/neovim/neovim/pull/4574 No test, needs some work to include. Patch to improve indenting for C++ constructor with initializer list. (Hirohito Higashi, 2016 Mar 31) Add stronger encryption. Could use libsodium (NaCl). https://github.com/jedisct1/libsodium/ Possibly include the needed code so that it can be build everywhere. Add a way to restart a timer. It's similar to timer_stop() and timer_start(), but the reference remains valid. Patch to add setbufline(). (email from Yasuhiro Matsumoto, patch by Ozaki Kiichi, 2016 Feb 28) Update Mar 8: https://gist.github.com/mattn/23c1f50999084992ca98 Update Mar 13: https://gist.github.com/mattn/23c1f50999084992ca98 Need to try out instructions in INSSTALLpc.txt about how to install all interfaces and how to build Vim with them. Appveyor build with self-installing executable, includes getting most interfaces: https://github.com/k-takata/vim/tree/chrisbra-appveyor-build result: https://ci.appveyor.com/project/k-takata/vim/history Duplication of completion suggestions for ":!hom". Issue 539. Patch by Christian, 2016 Jan 29 > Problem that a previous silent ":throw" causes a following try/catch not to work. (ZyX, 2013 Sep 28) With examples: (Malcolm Rowe, 2015 Dec 24) Problem using ":try" inside ":execute". (ZyX, 2013 Sep 15) Patch to make tests pass with EBCDIC. (Owen Leibman, 2016 Apr 10) Add ":read :command", to insert the output of an Ex command? Can already do it with ":$put =execute('command')". When repeating the 'confirm' dialog one needs to press Enter. (ds26gte, 2016 Apr 17) #762 exists(":tearoff") does not tell you if the command is implemented. (Tony Mechelynck) Perhaps use exists("::tearoff") to check? Use vim.vim syntax highlighting for help file examples, but without ":" in 'iskeyword' for syntax. Patch to make "%:h:h" return "." instead of the full path. (Coot, 2016 Jan 24, #592) Remove SPACE_IN_FILENAME ? What could possibly go wrong? When command names are very long :command output is difficult to read. Use a maximum for the column width? (#871) Patcy by varmanishant, 2016 Jun 18, #876 Patch to change GUI behavior: instead of changing the window size change the lines/columns when menu/toolbar/etc. is added/removed. (Ychin, 2016 Mar 20, #703) Installation of .desktop files does not work everywhere. It's now fixed, but the target directory probably isn't right. Add configure check? Should use /usr/local/share/applications or /usr/share/applications. Or use $XDG_DATA_DIRS. Also need to run update-desktop-database (Kuriyama Kazunobu, 2015 Nov 4) Test object i{ and it do not behave the same. #1379 Do not include the linebreak at the start? Patch to have text objects defined by arbitrary single characters. (Daniel Thau, 2013 Nov 20, 2014 Jan 29, 2014 Jan 31) Added tests (James McCoy, 2016 Aug 3). Still needs more work. Feature request: add the "al" text object, to manipulate a screen line. Especially useful when using 'linebreak' Access to uninitialized memory in match_backref() regexp_nda.c:4882 (Dominique Pelle, 2015 Nov 6) ":cd C:\Windows\System32\drivers\etc*" does not work, even though the directory exists. (Sergio Gallelli, 2013 Dec 29) In debug mode one can inspect variables, but not the function parameters (starting with a:). (Luc Hermitte, 2017 Jan 4, #1352) 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) Patch by Christian Brabandt, 2016 Jun 10, #859 If ":bd" also closes a Tab page then the " mark is not set. (Harm te Hennepe, 2016 Apr 25, #780) Patch to avoid redrawing tabline when the popup menu is visible. (Christian Brabandt, 2016 Jan 28) Patch to add {skip} argument to search(). (Christian Brabandt, 2016 Feb 24) Update 2016 Jun 10, #861 Patch to be able to use hex numbers with :digraph. (Lcd, 2015 Sep 6) Update Sep 7. Update by Christian Brabandt, 2015 Sep 8, 2016 Feb 1. Patch to show search statistics. (Christian Brabandt, 2016 Jul 22) When the CursorMovedI event triggers, and CTRL-X was typed, a script cannot restore the mode properly. (Andrew Stewart, 2016 Apr 20) Do not trigger the event? Using ":windo" to set options in all windows has the side effect that it changes the window layout and the current window. Make a variant that saves and restores. Use in the matchparen plugin. Perhaps we can use ":windo {cmd}"? Patch to add to :windo, :bufdo, etc. (Christian Brabandt, 2015 Jan 6, 2nd message) Alternative: ":keeppos" command modifier: ":keeppos windo {cmd}". Patch to fix that executable() may fail on very long filename in MS-Windows. (Ken Takata, 2016 Feb 1) Patch to fix display of listchars on the cursorline. (Nayuri Aohime, 2013) Update suggested by Yasuhiro Matsumoto, 2014 Nov 25: https://gist.github.com/presuku/d3d6b230b9b6dcfc0477 Patch to make the behavior of "w" more straightforward, but not Vi compatible. With a 'cpo' flag. (Christian Brabandt, 2016 Feb 8) Patch to add optionproperties(). (Anton Lindqvist, 2016 Mar 27, update Apr 13) Patch to add TagNotFound autocommand. (Anton Lindqvist, 2016 Feb 3) Patch to add Error autocommand. (Anton Lindqvist, 2016 Feb 17) Only remembers one error. Illegal memory access, requires ASAN to see. (Dominique Pelle, 2015 Jul 28) Gvim: when both Tab and CTRL-I are mapped, use CTRL-I not for Tab. Unexpected delay when using CTRL-O u. It's not timeoutlen. (Gary Johnson, 2015 Aug 28) Instead of separately uploading patches to the ftp site, we can get them from github with a URL like this: https://github.com/vim/vim/compare/v7.4.920%5E...v7.4.920.diff Diff for version.c contains more context, can't skip a patch. When t_Co is changed from termresponse, the OptionSet autocmmand event isn't triggered. Use the code from the end of set_num_option() in set_color_count(). Python: ":py raw_input('prompt')" doesn't work. (Manu Hack) Comparing nested structures with "==" uses a different comparator than when comparing individual items. Also, "'' == 0" evaluates to true, which isn't nice. Add "===" to have a strict comparison (type and value match). Add "==*" (?) to have a value match, but no automatic conversion, and v:true equals 1 and 1.0, v:false equals 0 and 0.0.? Using uninitialized memory. (Dominique Pelle, 2015 Nov 4) MS-Windows: When editing a file with a leading space, writing it uses the wrong name. (Aram, 2014 Nov 7) Vim 7.4. Can't recognize the $ProgramFiles(x86) environment variable. Recognize it specifically? First try with the parens, then without. Patch to add :mapgroup, put mappings in a group like augroup. (Yasuhiro Matsumoto, 2016 Feb 19) Value returned by virtcol() changes depending on how lines wrap. This is inconsistent with the documentation. Value of virtcol() for '[ and '] depend on multi-byte character. (Luchr, #277) Can we cache the syntax attributes, so that updates for 'relativenumber' and 'cursorline'/'cursorcolumn' are a lot faster? C highlighting: modern C allows: /* comment */ #ifdef and also line continuation after #include. I can't recommend it though. Build with Python on Mac does not always use the right library. (Kazunobu Kuriyama, 2015 Mar 28) Patch to add arguments to argc() and argv(). (Yegappan Lakshmanan, 2016 Jan 24) Also need a way to get the global arg list? Update later on Jan 24 Update Mar 5. Update Apr 7. Update Jun 5. To support Thai (and other languages) word boundaries, include the ICU library: http://userguide.icu-project.org/boundaryanalysis When complete() first argument is before where insert started and 'backspace' is Vi compatible, the completion fails. (Hirohito Higashi, 2015 Feb 19) Patch to use two highlight groups for relative numbers. (Shaun Brady, 2016 Jan 30) MS-Windows: Crash opening very long file name starting with "\\". (Christian Brock, 2012 Jun 29) Using an external diff is inefficient. Not all systems have a good diff program available (esp. MS-Windows). Would be nice to have in internal diff implementation. Can then also use this for displaying changes within a line. Olaf Dabrunz is working on this. The OptionSet autocommand event is not always triggered. (Rick Howe, 2015 Sep 24): :diffthis, :diffoff. ":set all&" still does not handle all side effects. Centralize handling side effects for when set by the user, on init and when reset to default. ":tag" does not jump to the right entry of a :tselect. (James Speros, 2015 Oct 9) The argument for "-S" is not taken literally, the ":so" command expands wildcards. Add a ":nowild" command modifier? (ZyX, 2015 March 4) Proposal to make options.txt easier to read. (Arnaud Decara, 2015 Aug 5) Update Aug 14. When using --remote-tab on MS-Windows 'encoding' hasn't been initialized yet, the file name ends up encoded wrong. (Raul Coronado, 2015 Dec 21) Patch for problem with restoring screen on Windows. (Nobuhiro Takasaki, 2015 Sep 10) Example in editing.txt uses $HOME with the expectation that it ends in a slash. For me it does, but perhaps not for everybody. Add a function that inserts a slash when needed? pathconcat(dir, path) (Thilo Six, 2015 Aug 12) ml_updatechunk() is slow when retrying for another encoding. (John Little, 2014 Sep 11) Patch to fix checking global option value when not using it. (Arnaud Decara, 2015 Jul 23) When 'showbreak' is set repeating a Visual operation counts the size of the 'showbreak' text as part of the operation. (Axel Bender, 2015 Jul 20) Patch for multi-byte characters in langmap and applying a mapping on them. (Christian Brabandt, 2015 Jun 12, update July 25) Is this the right solution? Need to cleanup langmap behavior: - in vgetorpeek() apply langmap to the typeahead buffer and put the result in a copy-buffer, only when langmap is appropriate for the current mode. Then check for mapping and let gotchars() work on the copy-buffer. - Remove LANGMAP_ADJUST() in other parts of the code. Make sure the mode is covered by the above change. So that replaying the register doesn't use keymap/langmap and still does the same thing. Remarks on issue 543 (Roland Puntaier). Also see #737: langmap not applied to replaying recording. Patch to add grepfile(). (Scott Prager, 2015 May 26) Work in progress. Would be useful to have a treemap() or deepmap() function. Like map() but when an item is a list or dict would recurse into it. Patch for global-local options consistency. (Arnaud Decara, 2015 Jul 22) Is this right? Patch to make getregtype() return the right size for non-linux systems. (Yasuhiro Matsumoto, 2014 Jul 8) Breaks test_eval. Inefficient, can we only compute y_width when needed? Patch to use different terminal mode settings for system(). (Hayaki Saito) Does this work for everybody? Patch for man.vim. (SungHyun Nam, 2015 May 20) Doesn't work completely (Dominique Orban) Patch to add a "literal" argument to bufnr(). (Olaf Dabrunz, 2015 Aug 4) Cannot execute the shell when it's in a directory with a space. Issue #459. When a session file is created and there are "nofile" buffers, these are not filled. Need to trigger BufReadCmd autocommands. Also handle deleting the initial empty buffer better. (ZyX, 2015 March 8) Extended file attributes lost on write (backupcopy=no). Issue 306. Patch to add :lockjumps. (Carlo Baldassi, 2015 May 25) OK to not block marks? Mixup of highlighting when there is a match and SpellBad. (ZyX, 2015 Jan 1) Patch on Issue 72: 'autochdir' causes problems for :vimgrep. When two SIGWINCH arrive very quickly, the second one may be lost. (Josh Triplett, 2015 Sep 17) Make comments in the test Makefile silent. (Kartik Agaram, 2014 Sep 24) Result of systemlist() does not show whether text ended in line break. (Bjorn Linse, 2014 Nov 27) When in 'comments' "n:x" follows after three-part comment directly it repeats any one-character from the previous line. (Kartik Agaram, 2014 Sep 19) Syntax highlighting slow (hangs) in SASS file. (Niek Bosch, 2013 Aug 21) Adding "~" to 'cdpath' doesn't work for completion? (Davido, 2013 Aug 19) Should be easy to highlight all matches with 'incsearch'. Idea by Itchyny, 2015 Feb 6. Wrong scrolling when using incsearch. Patch by Christian Brabandt, 2014 Dec 4. Is this a good solution? Patch: Let rare word highlighting overrule good word highlighting. (Jakson A. Aquino, 2010 Jul 30, again 2011 Jul 2) Patch to add digits argument to round(). (Yasuhiro Matsumoto, 2015 Apr 26) Can assign to s:type when a function s:type has been defined. Also the other way around: define a function while a variable with that name was already defined. (Yasuhiro Matsumoto, 2014 Nov 3) Patch for ordered dict. (Ozaki Kiichi, 2015 May 7) Patch to make closed folds line up. (Charles Campbell, 2014 Sep 12) Remark from Roland Eggner: does it cause crashes? (2014 Dec 12) Updated patch by Roland Eggner, Dec 16 Updated patch from Charles, 2016 Jul 2 Patch to open folds for 'incsearch'. (Christian Brabandt, 2015 Jan 6) Patch for building a 32bit Vim with 64bit MingW compiler. (Michael Soyka, 2014 Oct 15) Delete old code in os_msdos.c, mch_FullName(). Patch: On MS-Windows shellescape() may have to triple double quotes. (Ingo Karkat, 2015 Jan 16) Patch for variable tabstops. On github (Christian Brabandt, 2014 May 15) Update 2016 Jun 10, # 857 Redo only remembers the last change. Could use "{count}g." to redo an older change. How does the user know which change? At least have a way to list them: ":repeats". Patch for glob(), adding slash to normal files. (Ingo Karkat, 2014 Dec 22) When entering and leaving the preview window autocommands are triggered, but these may not work well. Perhaps set a flag to indicate that the preview window is involved? (John Otter, 2015 Oct 27) Using "." to repeat an Ex command puts that command in history. Probably should not happen. If the command is the result of a mapping it's not put in history either. (Jacob Niehus, 2014 Nov 2) Patch from Jacob, Nov 2. "hi link" does not respect groups with GUI settings only. (Mark Lodato, 2014 Jun 8) Bug: Autocompleting ":tag/pat" replaces "/pat" with a match but does not insert a space. (Micha Mos, 2014 Nov 7) Patch to add argument to :cquit. (Thinca, 2014 Oct 12) No error for missing endwhile. (ZyX, 2014 Mar 20) Patch to make extend() fail early when it might fail at some point. (Olaf Dabrunz, 2015 May 2) Makes extend() slower, do we still want it? Perhaps only the checks that can be done without looping over the dict or arguments. Problem with transparent and matchgroup. Issue #475 Patch to add :arglocal and :arglists. (Marcin Szamotulski, 2014 Aug 6) Spell files use a latin single quote. Unicode also has another single quote: 0x2019. (Ron Aaron, 2014 Apr 4) New OpenOffice spell files support this with ICONV. But they are not compatible with Vim spell files. The old files can no longer be downloaded. 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! Patch to make FocusGained and FocusLost work in modern terminals. (Hayaki Saito, 2013 Apr 24) Update 2016 Aug 12. Also see issue #609. We could add the enable/disable sequences to t_ti/t_te or t_ks/t_ke. Idea: For a window in the middle (has window above and below it), use right-mouse-drag on the status line to move a window up/down without changing its height? It's like dragging the status bar above it at the same time. Can we make ":unlet $VAR" use unsetenv() to delete the env var? What for systems that don't have unsetenv()? (Issue #1116) Patch to add a :domodeline command. (Christian Brabandt, 2014 Oct 21) This does not give an error: (Andre Sihera, 2014 Mar 21) vim -u NONE 1 2 3 -c 'bufdo if 1 | echo 1' This neither: (ZyX) vim -u NONE 1 2 3 -c 'bufdo while 1 | echo 1' 'viewdir' default on MS-Windows is not a good choice, it's a system directory. Change 'viewdir' to "$HOME/vimfiles/view" and use 'viewdiralt' to also read from? Problem with upwards search on Windows (works OK on Linux). (Brett Stahlman, 2014 Jun 8) Include a plugin manager with Vim? Neobundle seems to be the best currently. Also Vundle: https://github.com/gmarik/vundle Long message about this from ZyX, 2014 Mar 23. And following replies. Also see http://vim-wiki.mawercer.de/wiki/topic/vim%20plugin%20managment.html User view: - Support multiple sources, basically any http:// URL. Or a central place that will work for everybody (github? redirects from vim.org?). Be able to look into the files before deciding to install. - Be able to try out a plugin and remove it again with (almost) no traces. - Each plugin needs a "manifest" file that has the version, dependencies (including Vim version and features), conflicts, list of files, etc. Updater uses that to decide what/how to update. Dependencies can use a URL for specific versions, or short name for scripts on vim.org. - Once a plugin is installed it remembers where it came from, updater checks there. Can manually update when really needed. - Must be possible to install for one user. Also system wide? - Can edit plugin config with Vim. Can temporarily disable a plugin. - Run the update manually, find latest version and install. - Be able to download without special tools, must work for 95% of users. Implementation: - Avoid the 'runtimepath' getting long. Need some other way to keep each plugin separate. - When installing or updating, first figure out what needs to be done. This may involve recursively fetching manifest files for dependencies. Then show the user what's going to change and ask for OK. - Scripts on Vim.org must be able to consist of several files. Is zip format sufficient? Upload the manifest? Or refer to a site that has the manifest? - Best is to fetch individual files or use a Vimball. Reduces dependency on tools that might be missing and allows inspection of the files before installing. Out of scope: - Overview of plugins, ratings, comments, etc. That's another world. - Development work on plugins (although diff with distributed version would be useful). Setting the spell file in a session only reads the local additions, not the normal spell file. (Enno Nagel, 2014 Mar 29) When typing the first character of a command, e.g. "f", then using a menu, the menu item doesn't work. Clear typeahead when using a menu? Editing an ascii file as ucs-2 or ucs-4 causes display errors. (ZyX, 2014 Mar 30) ":Next 1 some-arg" does not complain about trailing argument. Also for various other commands. (ZyX, 2014 Mar 30) Patch to skip sort if no line matches the expression. (Christian Brabandt, 2014 Jun 25) VMS: Select() doesn't work properly, typing ESC may hang Vim. Use sys$qiow instead. (Samuel Ferencik, 2013 Sep 28) Patch for XDG base directory support. (Jean François Bignolles, 2014 Mar 4) Remark on the docs. Should not be a compile time feature. But then what? Completion of ":e" is ":earlier", should be ":edit". Complete to the matching command instead of doing this alphabetically. (Mikel Jorgensen) Patch to define macros for hardcoded values. (Elias Diem, 2013 Dec 14) Several syntax file match "^\s*" which may get underlined if that's in the highlight group. Add a "\zs" after it? The undo file name can get too long. (Issue 346) For the path use a hash instead of dir%dir%dir%name hash%name. Patch to add ":undorecover", get as much text out of the undo file as possible. (Christian Brabandt, 2014 Mar 12, update Aug 22) Include Haiku port? (Adrien Destugues, Siarzhuk Zharski, 2013 Oct 24) It can replace the BeOS code, which is likely not used anymore. Updated spec ftplugin. (Matěj Cepl, 2013 Oct 16) Patch to right-align signs. (James Kolb (email james), 2013 Sep 23) Patch to handle integer overflow. (Aaron Burrow, 2013 Dec 12) Patch to add "ntab" item in 'listchars' to repeat first character. (Nathaniel Braun, pragm, 2013 Oct 13) A better solution 2014 Mar 5. /[b-a] gives error E16, should probably be E769. 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"). Patch by Thomas Tuegel, also for GTK, 2013 Nov 24 :help gives example for z?, but it does not work. m? and t? do work. Patch to add funcref to Lua. (Luis Carvalho, 2013 Sep 4) With tests: Sep 5. Discussion about canonicalization of Hebrew. (Ron Aaron, 2011 April 10) Checking runtime scripts: Thilo Six, 2012 Jun 6. When evaluating expression in backticks, autoload doesn't work. (Andy Wokula, 2013 Dec 14) Using ifoobar can slow down Vim. Patch by Christian Brabandt, 2013 Dec 13. Patch from Christian Brabandt to preserve upper case marks when wiping out a buffer. (2013 Dec 9) GTK: problem with 'L' in 'guioptions' changing the window width. (Aaron Cornelius, 2012 Feb 6) Patch to add option that tells whether small deletes go into the numbered registers. (Aryeh Leib Taurog, 2013 Nov 18) Javascript file where indent gets stuck on: GalaxyMaster, 2012 May 3. The BufUnload event is triggered when re-using the empty buffer. (Pokey Rule, 2013 Jul 22) Patch by Marcin Szamotulski, 2013 Jul 22. 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. Patch to allow more types in remote_expr(). (Lech Lorens, 2014 Jan 5) Doesn't work for string in list. Other way to pass all types of variables reliably? 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. Patch to add {lhs} to :mapclear: clear all maps starting with {lhs}. (Christian Brabandt, 2013 Dec 9) Exception caused by argument of return is not caught by try/catch. (David Barnett, 2013 Nov 19) 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 "Q" and "A" responses to interactive :substitute. They are carried over when using :global. (Christian Brabandt, 2013 Jun 19) Bug with 'cursorline' in diff mode. Line being scrolled into view gets highlighted as the cursor line. (Alessandro Ivaldi, 2013 Jun 4) Two highlighting bugs. (ZyX, 2013 Aug 18) Patch to support 'u' in interactive substitute. (Christian Brabandt, 2012 Sep 28) With tests: Oct 9. Patch from Christian Brabandt to make the "buffer" argument for ":sign place" optional. (2013 Jul 12) Dialog is too big on Linux too. (David Fishburn, 2013 Sep 2) Improve the installer for MS-Windows. There are a few alternatives: - Add silent install option. (Shane Lee, #751) - Installer from Cream (Steve Hall). - Modern UI 2.0 for the Nsis installer. (Guopeng Wen) https://github.com/gpwen/vim-installer-mui2 - make it possible to do a silent install, see http://nsis.sourceforge.net/Docs/Chapter4.html#4.12 Version from Guopeng Wen does this. - MSI installer: https://github.com/petrkle/vim-msi/ - The one on Issue 279. Problem: they all work slightly different (e.g. don't install vimrun.exe). How to test that it works well for all Vim users? Patch to make fold updates much faster. (Christian Brabandt, 2012 Dec) - 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", "file:///tmp;") does not work. 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. 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 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 remove flicker from popup menu. (Yasuhiro Matsumoto, 2013 Aug 15) 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) 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, like with vim.bindeval(). 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 to add new regexp classes :ident:, :keyword:, :fname:. (ichizok, 2016 Jan 12, #1373) Patch with suggestions for starting.txt. (Tony Mechelynck, 2012 Oct 24) But use Gnome instead of GTK? 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) Session file creation: 'autochdir' causes trouble. Keep it off until after loading all files. 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) 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) 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 Patch to have the fold and sign column and at the last line of the buffer. (Marco Hinz, 2014 Sep 25) Alternate suggestion: let all columns continue, also the number column. 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 to add digraph() function. (Christian Brabandt, 2013 Aug 22, update Aug 24) Patch for input method status. (Hirohito Higashi, 2012 Apr 18) Update Vim app icon (for Gnome). (Jakub Steiner, 2013 Dec 6) 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. ":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. Should use has("browsefilter") in ftplugins. Requires patch 7.3.593. Update for vim2html.pl. (Tyru, 2013 Feb 22) 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) 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) The :syntax cchar value can only be a single character. It would be useful to support combining characters. (Charles Campbell) '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) Need to escape $HOME on Windows for fnameescape()? (ZyX, 2011 Jul 21, discussion 2013 Jul 4) Can't simply use a backslash, \$HOME has a different meaning already. Would be possible to use $$HOME where $HOME is to be used. "2" in 'formatoptions' not working in comments. (Christian Corneliussen, 2011 Oct 26) Bug in repeating Visual "u". (Lawrence Kesteloot, 2010 Dec 20) With "unamedplus" in 'clipboard' pasting in Visual mode causes error for empty register. (Michael Seiwald, 2011 Jun 28) I can't reproduce it. 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). 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) BT regexp engine: After trying a \@> match and failing, submatches are not cleared. See test64. 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, Update 2013 Aug 12) 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) 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 a script contains "redir => s:foo" but doesn't end redirection, a following "redir" command gives an error for not being able to access s:foo. (ZyX, 2011 Mar 27) When setqflist() uses a filename that triggers a BufReadCmd autocommand Vim doesn't jump to the correct line with :cfirst. (ZyX, 2011 Sep 18) Behavior of i" and a" text objects isn't logical. (Ben Fritz, 2013 Nov 19) 7 Make "ga" show the digraph for a character, if it exists. Patch from Christian Brabandt, 2011 Aug 19. maparg() does not show the