| Commit message (Collapse) | Author | Age |
|
|
|
|
|
|
|
|
| |
Problem: Message kind logic for emitting an error message is convoluted
and still results in emitting an unfinished message earlier than
wanted.
Solution: Ensure emsg_multiline() always sets the kind wanted by the caller
and doesn't isn't unset to logic for emitting the source message.
Caller is responsible for making sure multiple message chunks are
not emitted as multiple events by setting `msg_ext_skip_flush`...
|
|
|
|
|
|
| |
Problem: Reconfiguring a float window applies the global 'winborder'.
Solution:
- Ignore 'winborder' when reconfiguring a float window.
- Still apply 'winborder' when converting a split to a float window.
|
|
|
|
|
|
|
| |
Problem: Paired mark whose end is in front of its start should not have
its decor removed (as fixed by 72f630f9), but may still need to
have its range redrawn.
Solution: Still call `buf_decor_remove()` but ensure it is not called with
an inverse range when `extmark_del()` is called on an end mark.
|
|
|
|
|
|
|
|
|
| |
Problem:
There is currently no global option to define the default border style for floating windows. This leads to repetitive code when developers need consistent styling across multiple floating windows.
Solution:
Introduce a global option winborder to specify the default border style for floating windows. When a floating window is created without explicitly specifying a border style, the value of the winborder option will be used. This simplifies configuration and ensures consistency in floating window appearance.
Co-authored-by: Gregory Anders <greg@gpanders.com>
|
|
|
|
|
|
|
| |
Problem: Marks that go beyond the end of the buffer, and paired marks
whose end is in front of its start mark are added to and
removed from the decor. This results in incorrect tracking
of the signcolumn.
Solution: Ensure such marks are not added to and removed from the decor.
|
|
|
|
|
|
|
| |
Problem: Virtual 'statuscolumn' lines are evaluated with a misleading v:(rel)num.
Namely set to the line above for `virt_lines_above = true` lines, or even
the last drawn line for a partial redraw.
Solution: Set `v:lnum` for the first evaluated row of a line, first above
virtual line of a row and first non-virtual line of a row.
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Co-authored-by: Au. <acehinnnqru@gmail.com>
Co-authored-by: Daniel Rainer <daniel.rainer@localhost>
Co-authored-by: Evgeni Chasnovski <evgeni.chasnovski@gmail.com>
Co-authored-by: Lewis Russell <lewis6991@gmail.com>
Co-authored-by: Luuk van Baal <luukvbaal@gmail.com>
Co-authored-by: Pierre Barbin <pierre@heitzsystem.com>
Co-authored-by: Riley Bruins <ribru17@hotmail.com>
Co-authored-by: Yinzuo Jiang <jiangyinzuo@foxmail.com>
Co-authored-by: phanium <91544758+phanen@users.noreply.github.com>
Co-authored-by: zeertzjq <zeertzjq@outlook.com>
|
|
|
|
| |
Assuming that completeopt=popup does what its documentation claims, it
is more appropriate that completeopt=preview as a default.
|
|
|
|
|
|
| |
Problem: No block events emitted with ext_cmdline for :if, :while, :try etc.
Solution: Emit cmdline block events; store the indent level of the
previous cmdline and whether a block event was emitted.
|
|
|
|
|
|
|
|
|
|
| |
Problem: Various list commands end in a newline to go to a new line on
the message grid for the prompt message, which is unwanted
with ext_messages.
Solution: Don't emit a trailing newline with ext_messages for
inputlist(), :tselect and z=.
Co-authored-by: Tomasz N <przepompownia@users.noreply.github.com>
|
| |
|
|
|
|
|
|
|
|
| |
Problem:
"use_float" in the if-condition causes a new buffer to be generated on every execution.
Solution:
- Remove the incorrect use_float check from the condition.
- Use buf_clear to properly clear the existing buffer.
|
|\ |
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Problem: Cannot use "g<" mapping with ext_messages. Mapping displays
the scrollback buffer since the last command, but the
scrollback buffer is not populated with ext_messages.
Solution: With ext_messages; store messages in the history that otherwise
wouldn't be. Mark them as temporary messages to be deleted when
the scrollback buffer would be cleared. To this end, make the
message history a doubly-linked list such that messages can be
removed from an arbitrary position.
Outlook: Default ext_messages UI might not show the hit-enter prompt
so we want "g<" to work as a recommended way to show messages
for the last command (prompted by an indicator).
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Problem:
1. The original info text is truncated in pum_set_preview_text.
2. There is an extra newline character at the end of the info text.
3. Incorrect usage of plines_win leads to errors in calculating the window height.
Solution:
1. Improved string handling in pum_preview_set_text to safely process line content without modifying the original text. Now, the preview info is correctly preserved while splitting lines.
2. Do not append a trailing newline to the preview buffer when one is present at the end.
3. Set w_widher_inner in advance; otherwise, plines_win cannot correctly calculate the wrapped line height.
|
| |
| |
| |
| | |
Code that checks whether a `w_lines` entry has become invalid due to
a change in a folded line should now also check for concealed lines.
|
| | |
|
| |
| |
| |
| |
| |
| |
| | |
Problem: Skipping over a concealed line for which `win_line()`
_should_ be called because it has `virt_lines_above = false`
lines associated with it.
Solution: Don't include such a line in `wl_lastlnum` from the line
above.
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Problem: wrong indentation of lastline when expanding multiple lines
Solution: Check OPENLINE_FORCE_INDENT flag in open_line() (glepnir)
closes: vim/vim#16786
https://github.com/vim/vim/commit/34a7d82aaed9836174f4ea84af047db3fdf6c8b3
Co-authored-by: glepnir <glephunter@gmail.com>
|
|/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Problem: wildmenu highlighting in popup can be improved
Solution: Check if the completion items contain submatches of the
entered text (Girish Palya).
This update enables highlighting in the popup menu even when the matched
fragment or pattern appears within an item (string) rather than only at the
beginning. This is especially useful for custom completion, where menu items
may not always start with the typed pattern.
For specific use cases, refer to the two examples in
https://github.com/vim/vim/pull/16759
A sliding window approach is used with direct string comparison. Performance
is not a concern, as highlighting is applied only to displayed lines, even if
the menu list is arbitrarily long.
closes: vim/vim#16785
https://github.com/vim/vim/commit/4ec46f32102e5569b247840e05a99221747a9381
Co-authored-by: Girish Palya <girishji@gmail.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Problem: Vim's diff block merging algorithm when doing a multi-file diff
is buggy when two different diff hunks overlap a single
existing diff block (after v9.1.0743)
Solution: fix a couple bugs in this logic:
1. Fix regression from v9.1.0743 where it's not correctly expanding the
2nd overlap correctly, where it always expands without taking into
account that this was always taken care of when the first overlap
happened. Instead, we should only grow the 2nd overlap if it overhangs
outside the existing diff block, and if we encounter a new overlapping
diff block (due to overlap chaining).
2. When we expand a diff block to match the hunk size on the orig side
(when handling the first overlap), we expand the same amount of lines
in the new side. This is not sound if there exists a second overlap
hunk that we haven't processed yet, and that hunk has different
number of lines in orig/new. Fix this by doing the corresponding
counter adjustment when handling 2nd/3rd/etc overlap by calculating
the difference in lines between orig and new side.
(Yee Cheng Chin)
closes: vim/vim#16768
https://github.com/vim/vim/commit/bc08ceb75572dcac57ef5019f3d0df6e8290c0f9
Co-authored-by: Yee Cheng Chin <ychin.git@gmail.com>
|
| |
|
|
|
|
|
| |
The translation step prolongs the build time too much to be enabled by
default. Enable it by passing cmake flag `ENABLE_TRANSLATIONS=ON`.
|
|
|
| |
Off-by-one error in storing last line number for a logical line.
|
|
|
|
|
|
|
|
|
|
|
| |
Problem:
popup floating window is closed and recreated for each item selection,
this is a bit wasteful.
Solution:
- Hide the preview win (instead of closing it) when the menu is still displayed:
1. When selected_item is -1.
2. When switching from an item with an "info" field to one without.
- When pum is undisplayed it is still closed.
|
|
|
|
|
|
|
| |
(#32642)
Problem: f58e7d5f passed `&botline` to `plines_win_full()`, (probably)
assuming it would be set to the first line of the fold.
Solution: Reinstate call to `hasFolding()` to do so.
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Problem:
Indenting text is a common task in plugins/scripts for
presentation/formatting, yet vim has no way of doing it (especially
"dedent", and especially non-buffer text).
Solution:
Introduce `vim.text.indent()`. It sets the *exact* indentation because
that's a more difficult (and thus more useful) task than merely
"increasing the current indent" (which is somewhat easy with a `gsub()`
one-liner).
|
| |
|
|
|
|
| |
Implement an extmark property that conceals lines vertically.
|
|
|
|
|
|
|
|
|
|
|
|
| |
line (#32625)
Problem: When expanding omni completion items with newlines (e.g.
`then\n\t\nend`), the end statement gets wrong indentation.
Solution: Add OPENLINE_FORCE_INDENT flag to make open_line() use
second_line_indent directly (glepnir)
closes: vim/vim#16614
https://github.com/vim/vim/commit/5090a1fecb86c44be83d55e139ed79b7785fa090
|
|
|
|
|
|
|
|
|
| |
Problem: setting title and/or footer without explicitly setting border
shows "title/footer/ requires border to be set" error.
At the same time, explicitly setting `border = "none"` (which is
default) shows expected no-border-no-title-no-footer window without
error.
Solution: allow setting title/footer without explicitly setting border.
|
|
|
|
| |
- Fix wrong cursor position with 'listchars' "precedes".
- Always show the '<' truncation character.
|
|
|
|
| |
Having more chars after a double-width char makes it easier to spot the
bug where truncating it causes the pending chars to be lost.
|
|
|
|
|
|
|
|
| |
Problem: No kind for `:registers/autocmd/augroup` messages. `:registers`
chunks are emitted as separate `msg_show` events.
Solution: Add the `list_cmd` kind to the message. Introduce a new
`msg_ext_skip_flush` variable to set to true around a
group of to be paired message chunks.
|
|
|
|
|
|
|
|
|
|
|
| |
Problem: Messages preceding a `cmdline_show->prompt` event can not be
distinguished as such when receiving the event. (But since
`msg_show` handlers should be scheduled, one can already check
whether a prompt is active when displaying the message.)
Solution: Rather than add a new kind again, use the `confirm` kind.
Could be seen as slightly misleading where it is more of
a choice rather than a confirmation, but that already applies
to `confirm()` as well...
|
|
|
|
| |
Add a new field `virt_lines_overflow` that enables horizontal scrolling
for virtual lines when set to "scroll".
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
PuTTY sets TERM=xterm, but sends ESC[1~ and ESC[4~ for Home/End keys,
which does not match what the 'xterm' terminfo has for khome/kend, so
libtermkeys instead reports them as the original DEC VT220 names.
The VT220 came with a DEC LK201 keyboard which had the following keys in
the area above arrow keys (where PCs now have Ins/Del/Home/End/etc):
┌────────┬────────┬────────┐
│ Find │ Insert │ Re- │
│ │ Here │ move │
├────────┼────────┼────────┤
│ Select │ Prev │ Next │
│ │ Screen │ Screen │
└────────┴────────┴────────┘
These would send ESC[x~ sequences in the expected order:
┌────────┬────────┬────────┐
│ ESC[1~ │ ESC[2~ │ ESC[3~ │
├────────┼────────┼────────┤
│ ESC[4~ │ ESC[5~ │ ESC[6~ │
└────────┴────────┴────────┘
Modern terminals continue to use the same sequences for Ins/Del as well
as PageUp/PageDn. But the VT220 keyboard apparently had no Home/End, and
PuTTY apparently chose to re-purpose the Find/Select key sequences for
Home/End (even though it claims to emulate Xterm and this doesn't match
what actual Xterm does).
So when Home/End are used in Neovim through PuTTY with TERM=xterm (the
default setting), libtermkey finds no match for the received sequences
in the terminfo database and defaults to reporting them as <Find> and
<Select> respectively.
PuTTY is not unique here -- tmux *also* sends ESC[1~ and ESC[4~ after
its internal translation -- but the difference is that 'tmux' terminfo
correctly maps them to Home/End so Neovim recognizes them as such, while
PuTTY defaults to using 'xterm' which uses a different mapping.
This initial patch only allows Neovim to recognize <Find> and <Select>
key codes as themselves, so that the user could manually map them e.g.
using ":imap <Find> <Home>".
Alternatives:
- Using TERM=putty(-256color) would of course be the most correct
solution, but in practice it leads to other minor issues, e.g. the
need to have different PuTTY config profiles for older or non-Linux
systems that lack that terminfo, or tmux's insistence on rendering
italics as reverse.
- Using Neovim through tmux avoids the problem (as tmux recognizes
ESC[1~ on input), but is something that needs to be manually run
every time.
The keycodes.h constants are slightly misnamed because K_SELECT was
already taken for a different purpose.
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
|
| |
Problem: set winbar on a floating window which only have one row will
cause crash.
Solution: when new floating window only have one room don't copy winbar
from target window"
Fix #19464
|
|
|
|
|
|
|
| |
Problem: Number and statuscolumn highlighting for virtual lines does
not take always take on numhl highlights.
Solution: Apply the appropriate numhl highlight to the number/statuscolumn
of virtual lines, fetching the numhl highlight of the line above
for `virt_line_above == false` lines.
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
Match both | separators and link to the Delimiter highlight group.
fixes vim/vim#16584
closes: vim/vim#16590
https://github.com/vim/vim/commit/f30eb4a17084eea741a9eb09ba47dd501412283d
Co-authored-by: Doug Kearns <dougkearns@gmail.com>
|
|
|
|
|
|
|
| |
Problem:
cmdline abort state may be reset when intermediate states are received.
Solution:
Reset after `self:_wait()`.
|
|
|
| |
Also remove a hack in the multigrid "with winbar" test.
|
|
|
|
|
|
|
|
|
|
|
| |
Problem: completion doesn't work with multi lines
(Łukasz Jan Niemier)
Solution: handle linebreaks in completion code as expected
(glepnir)
fixes: vim/vim#2505
closes: vim/vim#15373
https://github.com/vim/vim/commit/76bdb82527a13b5b2baa8f7d7ce14b4d5dc05b82
|
|
|
|
| |
Before #31525 the prompts had a trailing space.
Also add a test for #7857.
|
|
|
|
|
|
|
|
|
|
|
|
| |
Problem: no sanitize check when running linematch
Solution: add sanitize check before applying the linematch algorithm,
similar to diff_find_change() (Jonathon)
closes: vim/vim#16446
https://github.com/vim/vim/commit/ca307efe486670b76563a4a287bc94dace57fb74
Co-authored-by: Jonathon <jonathonwhite@protonmail.com>
|
|
|
|
|
|
|
|
|
|
| |
Problem:
When an evaluation {-item calls `nvim_eval_statusline()`, that nested
call may overwrite the same memory used for `stl_items`.
Solution:
Make `curitem` static and use it to compute an offset to avoid
overwriting `stl_items` in nested calls to `build_stl_str_hl()`. Move
miscellaneous statusline tests into `describe()` block.
|