💾 Archived View for gmi.noulin.net › vim › todo.gmi captured on 2022-06-12 at 07:52:08. Gemini links have been rewritten to link to archived content
View Raw
More Information
➡️ Next capture (2022-07-17)
-=-=-=-=-=-=-
- todo.txt* For Vim version 8.2. Last change: 2022 May 22
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 -----------------------
Prepare for Vim 9.0 release:
- Use Vim9 for more runtime files.
- Check Vim9 code coverage, add more tests if needed.
vim9instr.c
vim9script.c
vim9type.c
- Adjust intro message to say "help version9".
Update the user manual:
- Update usr_41.txt for Vim9 script
- Fill usr_50.txt as an "advanced section" of usr_41.txt
Add links from usr_41 to usr_50.
- Make usr_51.txt use Vim9 script. Still need usr_52.txt?
Further Vim9 improvements, possibly after launch:
- Check performance with callgrind and kcachegrind.
getline()/substitute()/setline() in #5632
- Better implementation for partial and tests for that.
- when using "const" mark the variable type as const with TTFLAG_CONST, so
that an error is given at compile time when trying to change it. E.g. for a
const list and trying to call add().
- Compile options that are an expression, e.g. "expr:" in 'spellsuggest',
'foldexpr', 'foldtext', 'printexpr', 'diffexpr', 'patchexpr', 'charconvert',
'balloonexpr', 'includeexpr', 'indentexpr', 'formatexpr'.
Give an error if compilation fails. (#7625)
Alternatively: Detect a compiled function call and skip the expression
evaluation.
Use the location where the option was set for deciding whether it's to be
evaluated in Vim9 script context.
- implement :type
- implement :enum
- implement :class and :interface: See |vim9-classes|
- For range: make table of first ASCII character with flag to quickly check if
it can be a Vim9 command. E.g. "+" can, but "." can't.
- Inline call to map() and filter(), better type checking.
- Make accessing varargs faster: arg[expr]
EVAL expr
LOADVARARG (varargs idx)
- When evaluating constants for script variables, some functions could work:
has(featureName), len(someString)
- Implement as part of an expression: ++expr, --expr, expr++, expr--.
Update list of features to vote on:
- multiple cursors
- built-in LSP support
- start first line halfway
Popup windows:
- Preview popup not properly updated when it overlaps with completion menu.
(Yegappan Lakshmanan, 2021 May 22
- 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)
- In some cases prop_remove() does not work correctly. (#8261)
- 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)
- Any other commands to disable in a popup window?
Use ERROR_IF_POPUP_WINDOW for these.
- Figure out the size and position better if wrapping inserts indent
Text properties:
- property is overruled by cursorline. (#8225).
Add better control over priority? Make list of all highlighting, specify
where property fits in.
Or Should we let the textprop highlight overrule other (e.g. diff) highlight
if the priority is above a certain value? (#7392)
Combining text property with 'cursorline' does not always work (Billie
Cleek, #5533)
- "C" works OK. "dd" fails to delete text property in a buffer with a single
line.
- Add text property that shifts text to make room for annotation (e.g.
variable type). Like the opposite of conceal. Requires fixing the cursor
positioning and mouse clicks as with conceal mode.
- See remarks at top of src/textprop.c
'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:
- 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"
- 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.
Add autocmd functions. PR #10291
a couple of outstanding comments, wait for Yegappan to respond
Can deref_func_name() and deref_function_name() be merged?
Add mode bits to maparg() dict? PR #10356
After patch 8.2.4915 w_botline is computed much more often. Can this be
reduced?
NFA regexp does not handle composing characters well: #10286
[ɔ̃] matches both ɔ and ɔ̃
\(ɔ\|ɔ̃\) matches ɔ and not ɔ̃
Improvement in terminal configuration mess: 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 underlaying terminal, and
pass it on with modifications.
Test_communicate_ipv6(): is flaky on many systems
Fails in line 64 of Ch_communicate, no exception is thrown.
Rename getdigraphlist -> digraph_getlist() etc.
Can "CSI nr X" be used instead of outputting spaces? Is it faster? #8002
Valgrind reports memory leaks in test_options.
Valgrind reports overlapping memcpy in
test_conceal.3
test_edit.1
test_functions.4
test_ins_complete.3
test_method
test_normal
test_popupwin.35 et al.
test_search_stat
Memory leak in test_debugger
Memory leak in test_paste, using XtOpenDisplay several times
OLD:
TODO: be able to run all parts of test_alot with valgrind separately
Memory leak in test_alot with pyeval() (allocating partial)
Memory leak in test_alot with expand()
Memory leaks in test_channel? (or is it because of fork())
PR to support %e and %k in 'errorformat'. #9624
PR to add left and right bitwise shift. #8457
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.
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[].
MS-Windows: did path modifier :p:8 stop working? #8600
Add support for "underdouble", "underdot" and "underdash". #9553
test_arglist func Test_all_not_allowed_from_cmdwin() hangs on MS-Windows.
Mapping with partial match not executed properly in GTK. (Ingo Karkat, #7082)
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.
Patch to implement the vimtutor with a plugin: #6414
Was originally written by Felipe Morales.
Request to use "." for the cursor column in search pattern \%<.c and \%<.v.
(#8179)
":filter set termcap" only filters terminal codes, not keys. (#9297)
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.
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.
Making breakat support multibyte characters (Yasuhiro Matsumoto, #6598)
Scroll doesn't work correctly, why?
globpath() does not use 'wildignorecase' at all? (related to #8350)
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.
Patch to make fillchars global-local. (#5206)
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
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.
Make the jumplist behave like a tag stack. (#7738) Should there be a more
time bound navigation, like with undo?
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
Syntax highlight for a region does not work with a "nextgroup" if the start
match is empty. #8449
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.
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)
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)
Problem with auto-formatting - inserting space and putting cursor before added
character. (#6154)
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 ?
Sound: support on Mac? Or does libcanberra work there?
Python 3.8 doesn't work. (Antonios Hadjigeorgalis, #5509)
The :syntax cchar value can only be a single character. It would be useful to
support combining characters. (Charles Campbell) Also #4687
"--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 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)
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)
Add a string to the 'display' option ("smoothscroll" ?) to make CTRL-E and
CTRL-Y scroll one screen line, also if this means the first line doesn't start
with the first character (like what happens with a last line that doesn't
fit). Display "<<<" at the start of the first visible line (like "@@@" is
displayed in the last line). (Arseny Nasokin, #5154)
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.
Session file contains absolute paths when "curdir" is removed form
'sessionoptions', making it impossible to have a session with a relative path.
(#4450)
Session file only contains local option values for buffers that are in a
window, not other buffers. (#7532)
Script generated by :mksession does not work well if there are windows with
modified buffers
change "silent only" into "silent only!"
change "edit fname" of first buffer to "hide edit fname"
skip "badd fname" if "fname" is already in the buffer list
remove remark about unloading buffers from documentation
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 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)
Setting the spell file in a session only reads the local additions, not the
normal spell file. (Enno Nagel, 2014 Mar 29)
Directory wrong in session file, caused by ":lcd" in BufEnter autocommand.
(Felix Kater, 2009 Mar 3)
Something wrong with session that has "cd" commands and "badd", in such a way
that Vim doesn't find the edited file in the buffer list, causing the
ATTENTION message? (Tony Mechelynck, 2008 Dec 1)
Also: swap files are in ~/tmp/ One has relative file name ".mozilla/...".
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.
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)
Another request: #3811.
More warnings from static analysis:
https://lgtm.com/projects/g/vim/vim/alerts/?mode=list
Still a E315 error when using terminal. (Masato Nishihata, #3959)
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)
Missing tests for:
- add_termcap_entry()
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.
Pasting foo} causes Vim to behave weird. (John Little, 2018 Jun 17)
Related to bracketed paste. I cannot reproduce it.
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)
Invalid memory access with old regexp engine. (Dominique Pelle, 2018 Sep 3,
#3405) Introduced by 8.0.1517, which was fixing another memory access error.
(Sep 8)
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)
matchaddpos() gets slow with many matches. Proposal by Rick Howe, 2018 Jul
19.
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, redirect from empty page.
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.
home_replace() uses $HOME instead of "homedir". (Cesar Martins, 2018 Aug 9)
When the status line uses term_gettitle(), it does not get updated when the
terminal title changes. (Josh Triplett, 2018 Sep 9, #3418)
How would we know that the status line needs to be updated?
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
Patch to add ch_listen() (Yasuhiro Matsumoto, 2018 Nov 26, #3639)
What is the practical use for this? Need an example.
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.
Win32 key codes are messy. Mike Williams tried to fix that, but now old
mappings no longer work. Create a new terminal for the better solution?
Compiler warning (geeknik, 2017 Oct 26):
- undefined left shift in get_string_tv() (#2250)
Add Native language protocol server (LSP) support. (Yegappan Lakshmanan, 2018
Oct 28)
Add more testing of the GTK GUI.
- gtk_test_widget_click() can be used to simulate a click in a widget.
Tests failing for "make testgui" with GTK:
- Test_setbufvar_options()
- Test_exit_callback_interval()
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)
Patch to add digraph() function. (Christian Brabandt, 2013 Aug 22, update Aug
24)
Try out background make plugin:
https://github.com/AndrewVos/vim-make-background
or asyncmake:
https://github.com/yegappan/asyncmake
Cursor in wrong position when line wraps. (#2540)
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)
Make {skip} argument of searchpair() consistent with other places where we
pass an expression to evaluate. Allow passing zero for "never skip".
Add an option similar to 'lazyredraw' to skip redrawing while executing a
script or function.
When 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.
Should add a test for every command line argument. Check coverage for what is
missing: --nofork, -A , -b, -h, etc.
":au * * command" should not be allowed, only use * for event when listing or
deleting autocmds, not when adding them.
Column number is wrong when using 'linebreak' and 'wrap'. (Keith Smiley, 2018
Jan 15, #2555)
":bufdo e" disabled syntax HL in windows other than the current. (BPJ)
Check argument of systemlist(). (Pavlov)
No maintainer for Vietnamese translations.
No maintainer for Simplified Chinese translations.
Python indenting: alternative way to indent arguments:
http://orchistro.tistory.com/236
Should be supported with a flag.
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)
Using 'wildignore' also applies to literally entered file name. Also with
:drop (remote commands).
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.
When 'virtualedit' is "all" and 'cursorcolumn' is set, the wrong column may be
highlighted. (van-de-bugger, 2018 Jan 23, #2576)
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.
Win32 GUI: when running a fast timer, the cursor no longer blinks.
Was reported: cursor blinks in terminal on widows with a timer. (xtal8, #2142)
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 displayed wrong. (Harm te Hennepe, 2017 Sep 14,
#2089) Patch with possible solution by Björn Linse.
The change list index is local to a buffer, but it doesn't make sense using it
for another buffer. (lacygoill) Copy w_changelistidx to wininfo_S and back.
X11: Putting more than about 262040 characters of text on the clipboard and
pasting it in another Vim doesn't work. (Dominique Pelle, 2008 Aug 21-23)
clip_x11_request_selection_cb() is called with zero value and length.
Also: Get an error message from free() in the process that owns the selection.
Seems to happen when the selection is requested the second time, but before
clip_x11_convert_selection_cb() is invoked, thus in X library code.
Kazunobu Kuriyama is working on a proper fix. (2017 Jul 25)
Problem with three-piece comment. (Michael Lee, 2017 May 11, #1696)
Creating a partial with an autoload function is confused about the "self"
attribute of the function. For an unknown function assume "self" and make
that optional? (Bjorn Linse, 2017 Aug 5)
Cindent: returning a structure has more indent for the second item.
(Sam Pagenkopf, 2017 Sep 14, #2090)
Patch from Christian Brabandt to preserve upper case marks when wiping out a
buffer. (2013 Dec 9)
Also fixes #2166?
Profile of a dict function is lost when the dict is deleted. Would it be
possible to collect this? (Daniel Hahler, #2350)
When checking if a bufref is valid, also check the buffer number, to catch the
case of :bwipe followed by :new.
Patch to skip writing a temp file for diffing if the buffer is equal to the
existing file. (Akria Sheng, 2017 Jul 22)
Could also skip writing lines that are the same.
MS-Windows: Opening same file in a second gvim hangs. (Sven Bruggemann, 2017
Jul 4)
Setting 'clipboard' to "unnamed" makes a global command very slow (Daniel
Drucker, 2017 May 8).
This was supposed to be fixed, did it break again somehow?
Christian cannot reproduce it.
Using composing char in mapping does not work properly. maparg() shows the
wrong thing. (Nikolai Pavlov, 2017 Jul 8, #1827)
Or is this not an actual problem?
Better TeX indent file. (Christian Brabandt, 2017 May 3)
Use gvimext.dll from the nightly build? (Issue #249)
'synmaxcol' works with bytes instead of screen cells. (Llandon, 2017 May 31,
#1736)
Problem with using :cd when remotely editing a file. (Gerd Wachsmuth, 2017 May
8, #1690)
Memory leak in test97? The string is actually freed. Weird.
assert_fails() can only check for the first error. Make it possible to have
it catch multiple errors and check all of them.
Add a toolbar in the terminal. Can be global, above all windows, or specific
for one window.
Make maparg() also return the raw rhs, so that it doesn't depend on 'cpo'.
(Brett Stahlman, 2017 May 23)
Even better: add a way to disable a mapping temporarily and re-enable it
later. This is for a sub-mode that is active for a short while (one buffer).
Still need maplist() to find the mappings. What can we use to identify a
mapping? Something unique would be better than the LHS.
Perhaps simpler: actually delete the mappings. Use maplist() to list matching
mappings (with a lhs prefix, like maparg()), mapdelete() to delete,
maprestore() to restore (using the output of maplist()).
Add an argument to :mkvimrc (or add another command) to skip mappings from
plugins (source is a Vim script). No need to put these in a .vimrc, they will
be defined when the plugin is loaded.
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)
import can't be used in define option when include matches too.
(Romain Lafourcade, 2017 Jun 18, #1519)
Wrong diff highlighting with three files. (2016 Oct 20, #1186)
Also get E749 on exit.
Another example in #1309
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)
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.
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)
Using CTRL-G_U in InsertCharPre causes trouble for redo. (Israel Chauca
Fuentes, 2017 Feb 12, #1470)
Add a "keytrans()" function, which turns the internal byte representation of a
key into a form that can be used for :map. E.g.
let xx = "\<C-Home>"
echo keytrans(xx)
<C-Home>
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?
Implement named arguments for functions with optional arguments:
func Foo(start, count = 1, all = 1)
call Foo(12, all = 0)
Add a command to take a range of lines, filter them and put the output
somewhere else. :{range}copy {dest} !cmd
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.
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
":sbr" docs state it respects '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.
E.g. all the location list commands use a count.
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)
Patch for 'cursorlinenr' option. (Ozaki Kiichi, 2016 Nov 30)
Window resizing with 'winfixheight': With a vertical split the height changes
anyway. (Tommy allen, 2017 Feb 21, #1502)
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)
On Windows buffer completion sees backslash as escape char instead of path
separator. (Toffanim, 2016 Nov 24, #1274)
Should :vmap in matchit.vim be :xmap? (Tony Mechelynck)
Problem with whitespace in errorformat. (Gerd Wachsmuth, 2016 May 15, #807)
Add "unicode true" to NSIS installer. Doesn't work with Windows 95, which we
no longer support.
Support sort(l, 'F'), convert strings to float. (#7857)
sort() is not stable when using numeric/float sort (Nikolay Pavlov, 2016 Sep
4#1038)
sort() does not use 'smartcase' for the skip pattern, even though 'ignorecase'
is used. (Filipe Brandenburger, #7322)
+channel:
- Add a in_cb, invoked when the write buffer has become empty. (Matteo Landi)
- Add ch_readlines(): for a channel in NL mode, reads as many lines as are
available. Should be more efficient than looping over ch_read() with
ch_status() to check for more.
- If buffer contents is changed in a callback, set w_redr_status so that it
gets redrawn in redraw_after_callback(). #6120
- Add a separate timeout for opening a socket. Currently it's fixed at 50
msec, which is too small for a remote connection. (tverniquet, #2130)
- Writing raw mode to a buffer should still handle NL characters as line
breaks. (Dmitry Zotikov, 2017 Aug 16)
- When out_cb executes :sleep, the close_cb may be invoked. (Daniel Hahler,
2016 Dec 11, #1320)
- Implement |job-term| ?
- Calling a function when receiving a "call" on a channel, using feedkeys()
does not work. It does work from a timer. (Qiming Zhao, #3852)
- 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 (not a terminal window).
With xterm could use -S{pty}.
Although user could use "xterm -e 'cmd arg'".
Regexp problems:
- NFA engine can be slow for some patterns. Dominique found out that most
time is spent in addstate_here() copying the threads. Instead of copying,
let each thread point to the next one (by offset, the list is reallocated).
(Dominique Pelle, 2019 Feb 18)
- Old engine: using 'incsearch' /\Zabc does not highlight the "c" if it has a
composing character. New engine is OK. (Tony Mechelynck, 2019 May 5)
- When search pattern has the base character both with and without combining
character, search fails. E.g. "รรีบ" in "การรีบรักใคร". (agguser, #2312)
- [:space:] only matches ASCII spaces. Add [:white:] for all space-like
characters, esp. including 0xa0. Use character class zero.
- 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)@<!\.