UNPKG

tea-test-dao

Version:
1,170 lines (906 loc) 316 kB
*todo.txt* For Vim version 9.1. Last change: 2023 Dec 14 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 older 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. The #1234 numbers refer to an issue or pull request on github. To see it in a browser use: https://github.com/vim/vim/issues/1234 (replace 1234 with the issue/pull number) *known-bugs* -------------------- Known bugs and current work ----------------------- FILETYPE_FILE is defined to the same value in multiple places. Only use the one in feature.h. Others too. Mapping with modifier is not recognized after a partial mapping. Probably because the typeahead was simplified when looking for a matching mapping. Need to somehow undo the simplification. #12002 Windows scroll when using the autocmd window. #12085 in restore_snapshot_rec() restore more values from the snapshot, instead of calling frame_new_height() and frame_new_width(), especially w_topline and w_skipcol. Check places that source "path/*.vim" to not match other extensions, e.g. .vim9, on MS-Windows (short file name match, gets expanded to long file name). E.g. for startup files, plugins, packs, etc. When a help item can't be found, then open 'helpfile'. Search for the tag in that file and gtive E149 only when not found. Helps for a tiny Vim installed without all the help files. SpellCap highlight not updated - PR #12428 Virtual text problems: - If 'list' is on, 'below' virtual text which includes 1 or 2 characters are gone (Issue #12028) - Virtual text aligned "above": Wrong indentation when using tabs (Issue #12232) - Virtual text to the right of the line that isn't visible doesn't cause the 'extends' character to show in 'list' mode. #12478 - Virtual text to the right of the line that fits exactly on screen causes that line and all lines below it not to be displayed (Issue #12213) - Window screen gets wrong when a virtual text is placed on 'above' or 'below' on an empty line (Issue #11959) - truncated Virtual text below an empty line causes display error #12493 When 'virtualedit' is "all" and 'cursorcolumn' is set, the wrong column may be highlighted. (van-de-bugger, 2018 Jan 23, #2576) Improve profiling by caching matching functions: PR #12192 With 'smoothscroll' set and "lastline" in 'display', moving the cursor to a wrapping line that makes the display scroll up may scroll much more than needed, thus jump-scrolling. (part of issue 12411) Add filecopy() ? #12346 Implement foreach() PR #12166 Errors when running tests with valgrind: - test_codestyle.vim: e.g.: command line..script /home/mool/vim/vim90/src/testdir/runtest.vim[569]..function RunTheTest[52]..Test_test_files line 6: keycode_check.vim: space before tab: Expected 0 but got 7 command line..script /home/mool/vim/vim90/src/testdir/runtest.vim[569]..function RunTheTest[52]..Test_test_files line 10: setup.vim: trailing white space: Expected 0 but got 23 - test_gui.vim: Found errors in Test_gui_mouse_event(): When every block in if/elseif ends in "throw" or "return" code following after "endif" should give an "unreachable code" error. Upcoming larger works: - Make spell checking work with recent .dic/.aff files, e.g. French. #4916 Make Vim understand the format somehow? Search for "spell" below. Make sure suggestions are speedy, also with composed words (German). - Make syntax highlighting faster and better. Add a generic mechanism to test a syntax plugin: An input file for the filetype and a screendump of expected result. With a way to specify the setup (global variables) and another dump file from that. Discuss alternatives for using other grammars (treesitter, TextMate). - Possibly conversion to Vim syntax rules. - Other mechanism than group and cluster to nest syntax items, to be used for grammars. - Possibly keeping the parsed syntax tree and incremental updates. - tree-sitter doesn't handle incorrect syntax (while typing) properly. - NeoVim uses treesitter, what can we learn from that? - Vscode is asked to switch to treesitter: https://github.com/microsoft/vscode/issues/50140 - Vscode uses TextMate. #9087 - Other people don't like it. https://github.com/icedman/vim-textmate - sublime grammar? Hugo mentions it's a moving target #9087 - Make clear how it relates to LSP. - example plugin: https://github.com/uga-rosa/dps-vsctm.vim Further Vim9 improvements: - Classes and Interfaces. See |vim9-classes| - Cannot use class type of itself in the method (Issue #12369) - Getting member of variable with "any" type should be handled at runtime. Remove temporary solution from #12096 / patch 9.0.1375. - "obj.Method()" does not always work in a compiled function, assumes "obj" is a dictionary. #12196 Issue #12024 might be the same problem. Issue #11822: any.Func() can be a dict or an object call, need to handle this at runtime. Also see #12198 for an example. Possibly issue #11981 can be fixed at the same time (has two examples). - Make ":defcompile ClassName" compile all functions and methods in the class. - Forward declaration of a class? E.g. for Clone() function. Email lifepillar 2023 Mar 26 - object empty(), len() - can class define a method to be used for them? - When "Meta" is a class, is "const MetaAlias = Meta" allowed? It should either work or given an error. Possibly give an error now and implement it later (using a typedef). #12006 - how about lock/unlock? - For chaining, allow using the class name as type for function return value. - Implement "specifies" interface - Implement generics - Add "assignable" (class or child)? - More efficient way for interface member index than iterating over list? - a variant of type() that returns a different type for each class? list<number> and list<string> should also differ. - implement :enum - Promise class, could be used to wait on a popup close callback? - class local to a function - Use Vim9 for more runtime files. - Inline call to map() and filter(), better type checking. - When evaluating constants for script variables, some functions could work: has(featureName), len(someString) - Implement as part of an expression: ++expr, --expr, expr++, expr--. - The use of the literal value "null" and the type specific "null_xxx" values is confusing (#13458, #11770). Information missing in terminfo: - Codes used for focus gained and lost termcodes are hard-coded in set_termname(), not named. - t_fe enable focus-event tracking - t_fd disable focus-event tracking - Accept "hyper" and "meta" modifiers (16 and 32) from Kitty like Meta? 8 is actually "super". - t_RV request terminal version string; xterm: "\033[>c" change in terminfo for "RV" uses the wrong escape sequence 7 - 14 Jan only - Codes for <PasteStart> t_PS and <PasteEnd> t_PE; with bracketed paste: t_BE and t_BD. Modifiers for various keys - flag to indicate "xterm compatible modifiers" ? Underline and similar: - t_AU - Set underline color: like "AF" and "AB" entries. - t_Ce undercurl and underline end - t_Cs undercurl (curly underline) mode - t_Us double underline mode - t_ds dotted underline mode - t_Ds dashed underline mode - t_Te strikethrough end - t_Ts strikethrough mode Cursor codes: |termcap-cursor-shape| - t_RC request terminal cursor blinking - t_RS request terminal cursor style - t_VS cursor normally visible (no blink) - t_SI start insert mode (bar cursor shape) - t_SR start replace mode (underline cursor shape) - t_EI end insert or replace mode (block cursor shape) - t_SC set cursor color start - t_EC set cursor color end - t_SH set cursor shape State requests: - t_RF request terminal foreground color - t_RB request terminal background color Less important (not needed for regular editing): - t_IS set icon text start - t_IE set icon text end - t_ST save window title to stack - t_RT restore window title from stack - t_Si save icon text to stack - t_Ri restore icon text from stack - t_WP set window position (Y, X) in pixels - t_GP get window position (Y, X) in pixels - t_WS set window size (height, width in cells) Vim internal, but there should be a terminfo entry for these: - t_8f set foreground color (R, G, B) in printf() format - t_8b set background color (R, G, B) in printf() format - t_8u set underline color (R, G, B) in printf() format Probably Vim internal, not in terminfo: - t_TE end of "raw" mode - t_TI put terminal into "raw" mode - t_RK request terminal keyboard protocol state; sent after |t_TI| Already working, not properly documented: - t_u7 request cursor position Popup windows: - Add a function to redraw a specific popup window. Esp. to be used when editing the command line, when screen updating doesn't happen. (Shougo) #10210 Example that shows the need on the issue. Probably need to update all popup windows (they may overlap) If the display is scrolled need to redraw everything later. - Add a flag to make a popup window focusable? CTRL-W P cycle over any preview window or focusable popup, end up back in current window. ? - switch between current window and all popup windows Esc in popup window goes back to previous current window - Add a termcap entry for changing the cursor when it goes under the popup and back. like t_SI and t_EI (t_SU and t_EU, where "U" means under?) - With terminal in popup, allow for popup_hide() to temporarily hide it.? - Make it possible to scroll horizontally when 'wrap' is off. Does this require an ascii scrollbar, like with the vertical one? - Fire some autocommand event after a new popup window was created and positioned? PopupNew? Could be used to set some options or move it out of the way. (#5737) However, it may also cause trouble, changing the popup of another plugin. - Width is not computed correctly when minwidth and maxwidth are &columns and padding and a scrollbar are used. (#6676) - Should popup_getoptions() also return the mask? #7774 - Add a way to use popup_menu() synchronously: instead of invoking the callback, return the choice. (Ben Jackson, #6534) - When using a popup for the info of a completion menu, and there is not enough space, let the popup overlap with the menu. (#4544) - Implement flip option. - Make redrawing more efficient and avoid flicker: - put popup menu also in popup_mask? - Match does not have right BG color if line length equals popup width. (#5658) - Figure out the size and position better if wrapping inserts indent 'incsearch' with :s: - :s/foo using CTRL-G moves to another line, should not happen, or use the correct line (it uses the last but one line) (Lifepillar, Aug 18, #3345) - Also support range: :/foo/,/bar/delete - Also support for user command, e.g. Cfilter - :%s/foo should take the first match below the cursor line, unless there isn't one? Then :%s?foo should take the first match above the cursor line. Prompt buffer: - Add a command line history, using up/down keys. issue #5010 - delay next prompt until plugin gives OK? - add prompt_addtext({buf}, {expr}) none add text to a prompt buffer Terminal debugger: - Add a mechanism for configuration. Instead of several global variables use a dictionary. Use callbacks for some things, e.g. opening a debug window in a certain position. - Make prompt-buffer variant work better. - Add option to not open the program window. It's not used when attaching to an already running program. (M. Kelly) - Use the optional token on requests, match the result with it. #10300 - When only gdb window exists, on "quit" edit another buffer. - Termdebug does not work when Vim was built with mzscheme: gdb hangs just after "run". Everything else works, including communication channel. Not initializing mzscheme avoid the problem, thus it's not some #ifdef. - Add support for lldb? issue #3565 - Could we do something similar for debugging Vim scripts? At least see the script while stepping through it. Simple version would use an extra window. More complete solution would actually run Vim in a Terminal and control it with another Vim instance. Terminal emulator window: - Can escape a terminal popup with win_gotoid(), should be an error - No support for underline color, t_8u. - When in terminal-Normal mode when the job finishes, the cursor jumps to the end but the window is not updated. This only happens when typing "a". :term bash -c "for V in {0..5}; do echo $V; sleep 1; done" - GUI: cursor color is not updated when going to Terminal-Job mode. #12328 - GUI: cursor color is not updated when switching between tabs with a key. #12329 - GUI: cursor color is not updated when switching between tabs with a mouse click. #12330 - When started with ":terminal ++close" and the shell exits but there is a background process, the window remains open, because the channel still exists (and output still shows). Perhaps close the window when an explicit ++close was used? (#5931) - Using "CTRL-W :confirm quite" and selecting "yes" should work like ":quit!". (Harm te Hennepe, #6129) - When the job in the terminal doesn't use mouse events, let the scroll wheel scroll the scrollback, like a terminal does at the shell prompt. #2490 A bit like using CTRL-W N first. Jump back like with "a" when any key is typed. And use modeless selection. #2962 - Use CTRL-W CTRL-K to enter a digraph? #5371 - When Vim runs in the terminal and changes the title, the statusline needs to be redrawn. - GUI: When using ":set go+=!" a system() call causes the hit-enter prompt. (#3327) - Allow for specifying the directory, with ++cwd={dir}. - When pasting should call vterm_keyboard_start_paste(), e.g. when using K_MIDDLEMOUSE, calling insert_reg(). - Users expect parsing the :term argument like a shell does, also support single quotes. E.g. with: :term grep 'alice says "hello"' (#1999) - Win32: Redirecting input does not work, half of Test_terminal_redir_file() is disabled. - Win32: Redirecting output works but includes escape sequences. - Win32: Make terminal used for :!cmd in the GUI work better. Allow for redirection. - When the job only outputs lines, we could handle resizing the terminal better: store lines separated by line breaks, instead of screen lines, then when the window is resized redraw those lines. - Redrawing is slow with Motif. (Ramel Eshed) - For the GUI fill termios with default values, perhaps like pangoterm: http://bazaar.launchpad.net/~leonerd/pangoterm/trunk/view/head:/main.c#L134 - When 'encoding' is not utf-8, or the job is using another encoding, setup conversions. Patch adds showcmd() function #11708 Cursor is after the end of the line: #12137. Crash when a variable is removed while listing variables (Issue #11435) Autoconf: must use autoconf 2.69, later version generates lots of warnings - try using autoconf 2.71 and fix all "obsolete" warnings #11322 Problem with Visual highlight when 'linebreak' and 'showbreak' are set. #11272 'cindent': compound literal indented wrong. Check for " = " before "{"? #12491 GUI Scroll test fails on FreeBSD when using Motif. See FIXME in Test_scrollbars in src/test_gui.vim Selected index returned by complete_info() does not match the index in the list of items. #12230 Support dark mode for MS-Windows: #12282 Remote command escapes single quote with backslash, should be doubling the single quote in vim_strsave_escaped_ext() #12202. PR to add custom and customlist completion types. #12228 Can deref_func_name() and deref_function_name() be merged? Using :global with a pattern containing \zs doesn't use the line where \zs matches but the start of the pattern. #3695 If there is a useful application for this, it can be made to work by changing the call to ml_setmarked(): ml_setmarked(lnum + regmatch.startpos[0].lnum); After patch 8.2.4915 w_botline is computed much more often. Can this be reduced? When 'delcombine' is set a put after "x" includes the base character and all combining characters. (Ron Aaron, 2023 Apr 10) Add BufDeletePost. #11041 Add winid arg to col() and charcol() #11466 (request #11461) 'switchbuf' set to "newtab" does not work for ":cfirst" when in the quickfix window. #12436 When :argument has a non-number argument, use it like :buffer to find the argument by name. #12272 Fold unexpectedly closed when inserting fold marker with CTRL-V (Issue #12320) Can we make 'noendofline' and 'endoffile' visible? Should show by default, since it's an unusual situation. - Show 'noendofline' when it would be used for writing ('fileformat' "dos") with an upside down exclamation mark? NonText highlighting. - Show 'endoffile' when it would be used for writing ('fileformat' "dos") with "CTRL-Z", NonText highlighting. - Add 'fillchars' items to change this, default behavior like: noeol:¡ eof:CTRL-Z Test property disappears when using CR twice in a row. OK when some text was entered. (#11151) Add 'keywordprg' to various ftplugin files: https://github.com/vim/vim/pull/5566 PR #11579 to add visualtext(), return Visually selected text. PR #12032: Support Python 3 stable ABI. PR #11860: Add more info to 'colorcolumn': display a character and highlight for each separate entry. Disadvantage: option value gets very complicated with multiple entries, e.g. every 8 columns. Stray characters in the shell #11719, caused by requesting a response for: - XT key sequences - Whether modifyOtherKeys is active - Whether kitty keyboard protocol is active Can we not request XT key sequences, or reduce them drastically? Issue #10512: Dynamic loading broken with Perl 5.36 Damien has a patch (2022 Dec 4) Request #11965: Allow several "%=" items in 'statusline', makes it possible to have text in the center. Add some kind of ":whathappend" command and functions to make visible what the last few typed keys and executed commands are. To be used when the user wonders what went wrong. Could also be used for statistics #12046. - typed keys - Normal mode command - like what is recorded in a register and displayed by 'showcmd'. - register used - #12063 - executed command lines - with more verbosity: what scripts/functions/autocommands were executed NFA regexp does not handle composing characters well: #10286 [ɔ̃] matches both ɔ and ɔ̃ \(ɔ\|ɔ̃\) matches ɔ and not ɔ̃ Is there a way to make 'autowriteall' make a clean exit when the xterm is closed? (Dennis Nazic says files are preserved, okt 28). Perhaps handle TERM like HUP? Better terminal emulator support: > Somehow request the terminfo entry from the terminal itself. The $TERM value then is only relevant for whether this feature is supported or not. Replaces the xterm mechanism to request each entry separately. #6609 Multiplexers (screen, tmux) can request it to the underlying terminal, and pass it on with modifications. How to get all the text quickly (also over ssh)? Can we use a side channel? > When xterm supports sending an Escape sequence for the Esc key, should have a way to request this state. That could be an XTGETTCAP entry, e.g. "k!". Add "esc_sends_sequence" flag. If we know this state, then do not pretend going out of Insert mode in vgetorpeek(), where kitty_protocol_state is checked. > If a response ends up in a shell command, one way to avoid this is by sending t_RV last and delay starting a shell command until the response has been seen. > Can we use the req_more_codes_from_term() mechanism with more terminals? Should we repeat it after executing a shell command? Can also add this to the 'keyprotocol' option: "mok2+tcap" > In the table of terminal names pointing to the list of termcap entries, add an optional additional one. So that "xterm-kitty" can first load "xterm" and then add "kitty" entries. Using "A" and "o" in manually created fold (in empty buffer) does not behave consistently (James McCoy, #10698) In a timer callback, when using ":echo" and then input() the message is overwritten. Could use ":echowin" and call redraw_cmd() in get_user_input(). #11299 Syntax include problem: #11277. Related to Patch 8.2.2761 To avoid flicker: add an option that when a screen clear is requested, instead of clearing it draws everything and uses "clear to end of line" for every line. Resetting 't_ut' already causes this? Instead of prefixing "INTERNAL" to internal messages, add a message in iemsg() and siemsg() and translate it. Messages only given to them don't need translation. When scheme can't be found by configure there is no clear "not found" message: configure:5769: checking MzScheme install prefix configure:5781: result: Can "CSI nr X" be used instead of outputting spaces? Is it faster? #8002 Typed keys invisible after calling interrupt() from a timer. #10631 With a window height of 6 and 'scrolloff' set to 3, using "j" does not scroll evenly. (#10545) Need to handle this in scroll_cursor_bot(). Idea: when typing ":e /some/dir/" and "dir" does not exist, highlight in red. ":set shellpipe&" and ":set shellredir&" should use the logic from initialization to figure out the default value from 'shell'. Add a test for this. Add a diff() function to use the built-in diff support in a script. #12321 Is the returned value in the right form now? Support translations for plugins: #11637 PR: #12447 - Need a tool like xgettext for Vim script, generates a .pot file. Need the equivalent of _() and N_(), perhaps TR() and TRN(). - Instructions for how to create .po files and translate. - Script or Makefile to generate .mo files. - Instructions and perhaps a script to install the .mo files in the right place. - Add variant of gettext() that takes a package name. 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. IDEA: when drawing the text, store the text byte index in ScreenLinesIdx[]. When converting screen column to text position use this. The line number can be obtained from win->w_lines[]. Version of getchar() that does not move the cursor - #10603 Use a separate argument for the new flag. test_arglist func Test_all_not_allowed_from_cmdwin() hangs on MS-Windows. Can we add highlighting to ":echowindow"? Information for a specific terminal (e.g. gnome, tmux, konsole, alacritty) is spread out. Make a section with copy/paste examples of script and pointers to more information. 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) Also see #8487 for an example. Request to use "." for the cursor column in search pattern \%<.c and \%<.v. (#8179) ":filter set termcap" only filters terminal codes, not keys. (#9297) Add an option to restrict 'incsearch' to not scroll the view. (Tavis Ormandy) Remove SPACE_IN_FILENAME ? It is only used for completion. When 'term' starts with "foot" then default t_TI and t_TE to the values used for the builtin xterm termcap. Adding "10" to 'spellsuggest' causes spell suggestions to become very slow. (#4087) Did patch 8.2.2379 help? Also, z= in German on a long word can take a very long time, but CTRL-C to interrupt does not work. Where to add ui_breakcheck()? New English spell files also have very slow suggestions. When 'spelloptions' is "camel" then zG doesn't work on some words. (Gary Johnson, 17 Oct 2022) SpellCap doesn't show below a closed fold. #12420 'cdpath' problems: - Adding "~" to 'cdpath' doesn't work for completion? (Davido, 2013 Aug 19) - Problem with 'cdpath' on MS-Windows when a directory is equal to $HOME. (2006 Jul 26, Gary Johnson) - Completion of ":cd" doesn't use 'cdpath'. #374. Make "g>" and "g<" in Visual mode move the text right or left. Also for a block selection. #8558 When using dictionary insert completion with 'ignorecase', the leading capital in a word should be preserved. Add optional argument to virtcol() that specifies "start", "cursor" or "end" to tell which value from getvvcol() should be used. (#7964) Value returned by virtcol() changes depending on how lines wrap. This is inconsistent with the documentation. When 'wildignore' has an entry ending in "/*" this means nothing matching the path before it will be added. When encountering a directory check this and if there is a match do not scan the directory (possibly speeds up :find a lot). #12482 globpath() does not use 'wildignorecase' at all? (related to #8350) mksession uses :buffer instead of :edit in one place but not another. #10629 Add 'termguiattr' option, use "gui=" attributes in the terminal? Would work with 'termguicolors'. #1740 Patch for blockwise paste reporting changes: #6660. Asked for a PR. Missing filetype test for bashrc, PKGBUILD, etc. Add an option to not fetch terminal codes in xterm, to avoid flicker when t_Co changes. Add ??= operator, "a ??= b" works like "a = a ?? b". #10343 When ":redir" is used while already active, the previous one is ended. But when redirecting to a local variable (function or script) storing the value won't work. At least give an error. Is there a way to make it work? #10616 Completion for ":runtime" should show valid values, not what's in the current directory. (#11447) Add a "description" property to mappings. #12205 Add an option to start_timer() to return from the input loop with K_IGNORE. This is useful e.g. when a popup was created that disables mappings, we need to return from vgetc() to make this happen. #7011 Expanding <mods> should put the tab number from cmdmod.tab before "tab". Any way to convert "$" back by using a special value? (#6901) Can we detect true color support? https://gist.github.com/XVilka/8346728 Try setting a color then request the current color, like using t_u7. Add a v:register_used variable, which has the name of the register used for the last command, e.g. put. #12003 Make the jumplist behave like a tag stack. (#7738) Should there be a more time bound navigation, like with undo? For testing, make a copy of ml_line_ptr instead of pointing it into the data block, so that valgrind can do out of bounds check. Set ML_LINE_DIRTY flag or add ML_LINE_ALLOCED. Changing a capturing group to non-capturing changes the result: #7607 :echo matchstr('aaa bbb', '\(.\{-1,}\>\)\|.*') aaa :echo matchstr('aaa bbb', '\%(.\{-1,}\>\)\|.*') aaa bbb Should also work without any group: :echo matchstr('aaa bbb', '.\{-1,}\>\|.*') aaa bbb (should be aaa) Should add a match/str/list/pos method that also returns the test and position of submatches. #8355 Check out PR #543 (Roland Puntaier). Patch for multibyte 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. Also see #737: langmap not applied to replaying recording. Perhaps also related: #5147 Matchparen doesn't remove highlight after undo. (#7054) Is OK when syntax HL is active. Currently Del can be used to delete the last character of a typed count. Can it also be used to delete an incomplete Normal mode command? (#7096) After an operator: should work. After "a" or "i" for text objects: should work. Using "au!" after "filetype on" is a bit slow. Can the matching of autocommands be made faster? (#7056) Using a search pattern containing "\%V" and 'hlsearch' set keeps old matches when the Visual area changes. #11694. Do a redraw when starting a Visual selection? Append in Visual block mode inserts the wrong character. Test_visual_block_mode() already has the proper check, which is commented out. (#8288) Add the <=> (spaceship) operator and "cond ?< expr ?= expr ?> expr" replace this: let left = GetLeftFunc() let right = GetRightFunc() let res = left < right ? lower : left == right ? equal : upper by: let res = GetLeftFunc() <=> GetRightFunc() ?< lower ?= equal ?> upper Patch to make :q work with local arglist. (Christian Brabandt, #6286) Why does Test_invalid_sid() not work in the GUI? ":pedit" ignores the local working directory when 'pvp' is set (#7267) Lua: updating wrong buffer when using newly created, unloaded buffer. (#6539) File marks merging has duplicates since 7.4.1925. (Ingo Karkat, #5733) A syntax plugin cannot use autocommands, it could be sourced from setting 'syntax' in a modeline. Add a function that indicates whether "secure" and/or "sandbox" are set. Problem with auto-formatting - inserting space and putting cursor before added character. (#6154) Auto-formatting comments joins a following non-comment line when the comment ends in a space. (Adam Levy, 18 Oct 2022) When 'lazyredraw' is set sometimes the title is not updated. (Jason Franklin, 2020 Feb 3) Looks like a race condition. With bash ":make" does not set v:shell_error. Possible solution: set 'shellpipe' to "2>&1| tee %s; exit ${PIPESTATUS[0]}" #5994 Using mode() when "/pat" is used in Visual mode returns "v" instead of "c", which is not useful. Return "c/v" instead. And "c/o" when using "d/pat". #6127 Add a cterm attribute for "dimmed" or "faint" text. (#8269) When 'fileignorecase' is set ":e testfile.c" works to edit TestFile.c, but ":find testfile.c" does not ignore case. Might be related to #6088. Error for reverse range when using :vimgrep in file "[id-01] file.txt". (#6919) When changing the crypt key the buffer should be considered modified. Like when changing 'fileformat'. Save the old key in save_file_ff(). (Ninu-Ciprian Marginean) Strange sequence of BufWipeout and BufNew events while doing omni-complete. (Paul Jolly, #5656) Get BufDelete without preceding BufNew. (Paul Jolly, #5694) Later more requests for what to track. Should we add new events that don't allow any buffer manipulation? Really only for dealing with appearing and disappearing buffers, load and unload. BufWinenter event not fired when saving unnamed buffer. (Paul Jolly, #5655) Another spurious BufDelete. (Dani Dickstein, #5701) Wrong error when using local arglist. (Harm te Hennepe, #6133) Test loose_clipboard() by selecting text before suspending. :unmap <c-n> gives error but does remove the mapping. (Antony Scriven, 2019 Dec 19) Patch to add an option to enable/disable VTP. (Nobuhiro Takasaki, #5344) Should have three values: empty, "off", "on". Name it 'winterm'? Patch to fix session file when using multiple tab pages. (Jason Franklin, 2019 May 20) Also put :argadd commands at the start for all buffers, so that their order remains equal? Then %argdel to clean it up. Do try this with 'hidden' set. Also #5326: netrw buffers are not restored. When 'backupdir' has a path ending in double slash (meaning: use full path of the file) combined with 'patchmode' the file name is wrong. (#5791) Completion mixes results from the current buffer with tags and other files. Happens when typing CTRL-N while still searching for results. E.g., type "b_" in terminal.c and then CTRL-N twice. Should do current file first and not split it up when more results are found. (Also #1890) Help for ":argadd fname" says that if "fname" is already in the argument list that entry is used. But instead it's always added. (#6210) Add flag AL_FIND_ADD, if there is one argument find it in the list. Statusline highlighting error, off by one. (#5599) ":find" with 'path' set to "data*" does not find files, while completion does find them. (Max Kukartsev, #6218) Enable 'termbidi' if $VTE_VERSION >= 5703 ? Python 3.8 doesn't work. (Antonios Hadjigeorgalis, #5509) "--cleanFOO" does not result in an error. (#5537) Output from assert_equalfile() doesn't give a hint about what's different. Assuming the files are text, print the line with the difference. Result of synID() sometimes wrong in help files. (#5252) When a help file is opened that doesn't have "ft=help" in the modeline then the FileType is first set to "text" before it is set to "help". (#8099) Problem showing a line if the number column width changes when using "o". (Mateusz Morusiewicz, #4245) When using :packadd for a replacement language plugin, it is loaded after the default one. #4698 When using :packadd files under "later" are not used, which is inconsistent with packages under "start". (xtal8, #1994) Patch to add new motion ]( and ]{. (Yasuhiro Matsumoto, #5320) Better: use the "z" prefix. or ]t) and [t(. Visual highlight not removed when 'display' is "lastline" and line doesn't fit. (Kevin Lawler, #4457) Current position in the changelist should be local to the buffer. (#2173) Does not build with MinGW out of the box: - _stat64 is not defined, need to use "struct stat" in vim.h - WINVER conflict, should use 0x0600 by default? - INT_MAX not defined: need to include <limits.h> in vim.h Display messed up with matchparen, wrapping and scrolling. (#5638) Screen update bug related to matchparen. (Chris Heath, 2017 Mar 4, #1532) When getting a focus event halfway a mapping this aborts the mapping. E.g. when "qq" is mapped and after the first "q" the mouse is moved outside of the gvim window (with focus follows mouse), then the K_FOCUSLOST key is put in the input buffer. (#5302) Check_external_diff() is used too often. (Daniel Hahler, #4800) 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. Add a WindowScrolled event. Trigger around the same time as CursorMoved. Can be used to update highlighting. #3127 #5181 Incorrect formatting with autoindent. (Sebastian Gniazdowski, #4909) Patch to add the :bvimgrep command. (Christian Brabandt, 2014 Nov 12) Updated 2016 Jun 10, #858 Update 2017 Mar 28: use <buffer>. Better use ":bufgrep" ? Improve fallback for menu translations, to avoid having to create lots of files that source the actual file. E.g. menu_da_de -> menu_da Include part of #3242? Patch for different behavior of text objects with quotes: #11976 Is this actually better? 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, #958). Still needs more work. Would be nice to set tab-local values for 'diffexpr' and 'diffopt'. Use t:diffexpr_option t:diffopt_option? (#4782) Also make 'scrollopt' tab-local, remove "hor" only for the current tab page. Internal diff doesn't handle binary file like external diff does. (Mike Williams, 2018 Oct 30) '[ mark in wrong column after put. (#4776) Problem with :tlmenu: Detach item added with all modes? Issue #3563. Add an argument to expandcmd() to expand like ":next" does. When both "a" and "l" is in 'formatoptions' then auto-formatting also happens in a long line. #5189 The quoting of the [command] argument of :terminal is not clearly documented. Give a few examples. (#4288) Opening a file with --remote-tab-silent that matches 'wildignore' does not work, results in "E479: No match". (#4610) 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'. Patch for this (Tristan Konolige, #1011, only added the option, no implem.) Bug: script written with "-W scriptout" contains Key codes, while the script read with "-s scriptin" expects escape codes. Probably "scriptout" needs to be adjusted. (Daniel Steinberg, 2019 Feb 24, #4041) Window size changes after closing a tab. (#4741) Problem with colors in terminal window. (Jason Franklin, 2019 May 12) Color schemes: NOTE: modernizing the default colorschemes _AND_ introducing new ones is now a project in its own right: https://github.com/vim/colorschemes. Feel free to reach out if you want to lend a hand. - Lifepillar: Updated/cleaned up color schemes: https://github.com/lifepillar/vim8-colorschemes. - Include a few color schemes, based on popularity: - http://www.vim.org/scripts/script_search_results.php?keywords=&script_type=color+scheme&order_by=rating&direction=descending&search=search http://vimawesome.com/?q=tag:color-scheme - Use names that indicate their appearance (Christian Brabandt, 2017 Aug 3) - monokai - Xia Crusoe (2017 Aug 4) - seoul256 - Christian Brabandt (2017 Aug 3) - gruvbox - Christian Brabandt (2017 Aug 3) (simplified version from Lifepillar, 2018 Jan 22, #2573) - janah - Marco Hinz (2017 Aug 4) - apprentice - Romain Lafourcade (2017 Aug 6) remarks about help file #1964 - Suggested by Hiroki Kokubun: - [Iceberg](https://github.com/cocopon/iceberg.vim) (my one) - [hybrid](https://github.com/w0ng/vim-hybrid) - Include solarized color scheme?, it does not support termguicolors. - Sanitized version of pablo (Lifepillar, 2017 Nov 21) Bug: "vipgw" does not put cursor back where it belongs. (Jason Franklin, 2019 Mar 5) Some composing characters actually add a cell width to the character they are on top off, making the whole thing two characters wide. (#4526) Should we include some part of pull request #4505, not increment changedtick in some cases? E.g. for ":write" when the changed flag was already off, the buffer didn't change at all. When using a timer callback vgetc_busy is reset, allowing for using input(). But in a channel callback this does not happen. We need to do something similar to check_due_timer(). Also see #3809. C syntax: {} inside () causes following {} to be highlighted as error. (Michalis Giannakidis, 2006 Jun 1) Check: __attribute__((format(printf, on semsg() and siemsg(). Where was this added? Add test for urxvt mouse codes. Also test that mouse coordinates can be negative. (see #4326) 'cmdheight' has a tab-local value, but it cannot be obtained with `:echo gettabwinvar(2, 1, '&cmdheight')` returns the value for the _current_ tab page. (Ingo Karkat, #4324) :call settabwinvar(1, 1, '&cmdheight', 2) also doesn't work well. When opening a file, allow for specifying the initial column position: vim +12:5 file.txt line 12 column 5 :edit +12:5 file.txt Should probably use the column as the character index. This modeline throws unexpected errors: (#4165) vim: syn=nosyntax Make balloon_show() work outside of 'balloonexpr'? Users expect it to work: #2948. (related to #1512?) Also see #2352, want better control over balloon, perhaps set the position. Should also be possible to add highlighting, like in the status line? balloonexpr() on MS-Windows GUI doesn't handle accented chars? (nivaemail, 2018 Sep 14) More warnings from static analysis: https://lgtm.com/projects/g/vim/vim/alerts/?mode=list Not existing directory in CDPATH leads to two shell calls. (#4525) Use dict_iterate_start() / dict_iterate_next() instead of relying on the internals of the dict structure. nvo-mode mapping works on Windows, not on Linux. (#3678) 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". Add to history, like search history and command line history. When 'confirm' is set a "silent q" doesn't show the prompt. It should in this case. (Nate Peterson, 2019 Jan 31, #3892) For "silent! q" it should not prompt and just fail. Add <aevent>, which expands to the currently triggered autocommand event name. (Daniel Hahler, #4232) Or add it to v:event (easier to use but slightly more expensive). Some xterm responses are not properly handled: (Markus Gömmel, 2019 Apr 1) DCS 0 $ r Pt ST should be ignored. DCS 0 + r/Pt/ ST already ignored? Using CTRL-L to add a character to the search string that contains \v, punctuation is repeated. (Smylers, 2018 Nov 17, #3621) Using single wide base character with double wide composing character gives drawing errors. Fill up the base character? (Dominique, #4328) When 'sidescrolloff' is set, using "zl" to go to the end of the line, suddenly scrolls back. Should allow for this scrolling, like 'scrolloff' does when using CTRL-E. (Yee Cheng Chin, #3721) Add function to make use of internal diff, working on two lists and returning unified diff (list of lines). When splitting a window with few text lines, the relative cursor position is kept, which means part of the text isn't displayed. Better show all the text when possible. (Dylan Lloyd, #3973) Make ":interactive !cmd" stop termcap mode, also when used in an autocommand. (#3692) Add something like 'fillchars' local to window, but allow for specifying a highlight name. Esp. for the statusline. And "extends" and "precedes" are also useful without 'list' set. Also in 'fillchars' or another option? Sourceforge Vim pages still have content, make them empty, keep redirect. Check for PHP errors. (Wayne Davison, 2018 Oct 26) Problem with Visual yank when 'linebreak' and 'showbreak' are set. Patch with tests, but it's not clear how it is supposed to work. (tommm, 2018 Nov 17) Asked about this, Dec 22. Christian will have a look. Update for xim-input-style help (Tony Mechelynck, 2019 Jan 10). Feedback from someone who uses this? Only output t_Cs when t_Ce is also set. do not use Cs and Ce termcap entries. (Daniel Hahler, 2018 Sep 25) Add t_cS and t_cR for cursor color select and reset. Use Cs and Cr terminfo values. Further xdiff changes: - More options, e.g. different kind of whitespace diff. - when editing text, update the surrounding diff blocks. - omit diff.exe from distribution - Can we make this show differences within a line? - add option to use external diff above a certain size. Difference between two regexp engines: #3373 When the last line wraps, selecting with the mouse below that line only includes the first screen line. (2018 Aug 23, #3368) Refactored HTML indent file. (Michael Lee, #1821) Asked to write a test. Merge checking for 'cursorline' and 'concealcursor', see neovim #9492. Add a windowID argument to placing a sign, so that it only shows up in one window for the buffer. Compiler warning (geeknik, 2017 Oct 26): - undefined left shift in eval_string(), before hex2nr() (#2250) Use unsigned for "nr". Add Native language protocol server (LSP) support. (Yegappan Lakshmanan, 2018 Oct 28) 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 be able to disable default digraphs (incomplete) (Eric Pruitt, 2018 Nov 22). Patch to list user digraphs. (Christian Brabandt, 2012 Apr 14) Setting 'columns' in a BufEnter autocommand causes a second tab width to behave strangely, as if there is a gap and a vertical window separator. (Michael Soyka, 2018 Sep 23, #3477) Add an option similar to 'lazyredraw' to skip redrawing while executing a script or function. Using a menu item while the "more" prompt is displayed doesn't work well. E.g. after using help->version. Have a key that ends the "more" prompt and does nothing otherwise? MS-Windows: write may fail if another program is reading the file. If 'readonly' is not set but the file appears to be readonly later, try again (wait a little while). CreateFile() returns ERROR_SHARING_VIOLATION (Linwei, 2018 May 5) 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. Column number is wrong when using 'linebreak' and 'wrap'. (Keith Smiley, 2018 Jan 15, #2555) Add Makefiles to the runtime/spell directory tree, since nobody uses Aap. Will have to explain the manual steps (downloading the .aff and .dic files, applying the diff, etc. User dictionary ~/.vim/spell/lang.utf-8.add not used for spell checking until a word is re-added to it. (Matej Cepl, 2018 Feb 6) Fold at end of the buffer behaves inconsistently. (James McCoy, 2017 Oct 9) Implement option_save() and option_restore(): option_restore({list}) *option_restore()* Restore options previously saved by option_save(). When buffer-local options have been saved, this function must be called when the same buffer is the current buffer. When window-local options have been saved, this function must be called when the same window is the current window. When in the wrong buffer and/or window an error is given and the local options won't be restored. option_save({list}) *option_save()* Saves the options named in {list}. The returned value can be passed to option_restore(). Example: > let s:saved_options = option_save([ \ 'ignorecase', \ 'iskeyword', \ ]) au <buffer> BufLeave * \ call option_restore(s:saved_options) < The advantage over using `:let` is that global and local values are handled and the script ID is restored, so that `:verbose set` will show where the option was originally set, not where it was restored. Alternatively: save and restore ALL options. Implementation needs to use copy-on-write. Return an ID from option_save(), when option_restore(ID) is called give an error if another option_save() was called in the meantime, they must be balanced. "gvim --remote" from a directory with non-word characters changes the current directory (Paulo Marcel Coelho Arabic, 2017 Oct 30, #2266) Also see #1689. No profile information for function that executes ":quit". (Daniel Hahler, 2017 Dec 26, #2501) A function on a dictionary is not profiled. (ZyX, 2010 Dec 25) Add script number to profile? (#3330 breaks tests). A function defined locally and lambda's are not easily recognized. Mention where they were defined somewhere. ml_get errors with buggy script. (Dominique, 2017 Apr 30) Error in emsg with buggy script. (Dominique, 2017 Apr 30) Join truncates xml comment. (Dmitrii Tcyganok, 2017 Dec 24, #2494) Requires 'formatoptions' to include "j". (Gary Johnson, 2017 Dec 24) Patch to support hunspell. (Matej Cepl, Jan 2018, #2500) Based on older patch in #846) Doesn't work on Windows yet. Not ready to included, hard coded paths. When a timer is running and typing CTRL-R on the command line, it is not redrawn properly. (xtal8, 2017 Oct 23, #2241) In an optional package the "after" directory is not scanned? (Renato Fabbri, 2018 Feb 22) Patch for Neovim concerning restoring when closing help window. (glacambre neovim #7431) Patch for improving detecting Ruby on Mac in configure. (Ilya Mikhaltsou, 2017 Nov 21) When t_Co is changed from termresponse, the OptionSet autocommand event isn't triggered. Use the code from the end of set_num_option() in set_color_count(). Add another autocommand like TermResponse that is fired for the other terminal responses, such as bg and fg. Use "bg", "fg", "blink", etc. for the name. When using command line window, CmdlineLeave is triggered without CmdlineEnter. (xtal8, 2017 Oct 30, #2263) Add some way to get the nested state. Although CmdwinEnter is obviously always nested. matchit hasn't been maintained for a long time. #955. Problem with 'delcombine'. (agguser, 2017 Nov 10, #2313) 'delcombine' does not work for the command line. (Tony Mechelynck, 2009 Jul 20) MS-Windows: buffer completion doesn't work when using backslash (or slash) for a path separator. (xtal8, #2201) Would be nice for Insert mode completion to highlight the text that was added (and may change when picking another completion). Test more runtime files. Window not closed when deleting buffer. (Harm te Hennepe, 2017 Aug 27, #2029) Add options_default() / options_restore() to set several options to Vim defaults for a plugin. Comments from Zyx, 2017 May 10. Perhaps use a vimcontext / endvimcontext command block. After using :noautocmd CursorMoved may still trigger. (Andy Stewart, 2017 Sep 13, #2084). Set old position after the command. When bracketed paste is used, pasting at the ":append" prompt does not get the line breaks. (Ken Takata, 2017 Aug 22) Cannot copy modeless selection when cursor is inside it. (lkintact, #2300) Test_writefile_fails_conversion failure on Solaris because if different iconv behavior. Skip when "uname" returns "SunOS"? (Pavel Heimlich, #1872) 'tagrelative' is broken in specific situation. (xaizek, 2017 Oct 19, #2221) The ++ options for the :edit command are also useful on the Vim command line. Overlong utf-8 sequence is