| Commit message (Collapse) | Author | Age |
| | |
|
| |
|
|
| |
Now it shows something like `5 lines yanked into "~my.extreg`
|
| | |
|
| | |
|
| |
|
|
| |
Alias semantis are identical to using the full extreg name.
|
| |
|
|
| |
don't exist
|
| |
|
|
| |
Add tests for aliases.
|
| | |
|
| | |
|
| |
|
|
| |
Added a big test suite for extregs
|
| | |
|
| |
|
|
| |
This is the lower level operation used by delete and change.
|
| | |
|
| |
|
|
|
|
|
| |
- support for let syntax: let @~extreg_name = ...
- support for expressions: let x = @~extreg_name
- support for cmdline <C-r>
- support for ex commands: <cmd>put ~extreg_name
|
| | |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Implements "extended registers"
Extended registers provide access to a separate namespace of registers
backed by custom lua callback functions.
A new special register ("~) is introduced, which prompts the user for
the name of an extregistr to yank or paste from.
This enables file-backed or cloud-synced or other arbitrary register
behavior.
One can now use:
`"~file_extreg<cr>yy`
to yank into the "file_extreg" register.
AI-assisted: Qwen3-Coder
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Work towards enabling ["flow" layout](https://github.com/neovim/neovim/blob/9244da12e400ec0291450a5e9400d995e7a29b83/src/gen/gen_help_html.lua#L86-L88)
in all `:help` files.
Problem:
The final boss of vimdoc pseudo-structure: Vim's quasi-headings on
function signatures and excmd docs is visually distinctive but too
inconsistent for a nice parse rule.
Solution:
- Define the quasi-heading format as an "h4" variant, specified at
`:help help-tag-heading`.
- For simplicity and predictability, it is defined as any line that
ends with a help tag(s) preceded by 2 or more spaces (or 1 tab).
- Update existing docs.
- This one-time update has a lot of changes, but is very unlikely to
conflict with ported Vim-patches because (1) Vim rarely adds new
*excmds* that we want, and (2) *function* docs are auto-generated.
ref https://github.com/neovim/tree-sitter-vimdoc/issues/110
|
| |
|
|
|
|
|
|
| |
Problem:
By default, 'termpastefilter' removes TAB chars when pasting to a :terminal.
Very annoying, and does not improve "security".
Solution:
Drop "HT" from the 'termpastefilter' default.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
vim-patch:9.2.1181: patch 9.2.1181: MS-Windows: compile warnings with clang 23
vim-patch:9.2.1188: patch 9.2.1188: prop_type_get() does not return the "override" item
vim-patch:ce7c78578 AGENTS.md does not explain how to write garbage collection tests
vim-patch:9.2.1192: patch 9.2.1192: Compile warning when FEAT_DIFF is disabled
vim-patch:9.2.1193: patch 9.2.1193: Vim9: dict type with type variable not checked in generic function
vim-patch:3f1281d50 CI: enable Linux coverage for string-valued action input
vim-patch:9.2.1202: patch 9.2.1202: Vim9: crash on error in a long "implements" list
vim-patch:9.2.1181: patch 9.2.1181: MS-Windows: compile warnings with clang 23
vim-patch:9.2.1084: Cannot check a script without executing it
vim-patch:9.2.1140: Vim9: :def in legacy script can create a script variable
vim-patch:9.2.1184: the dry run feature not well received
|
| |
|
|
|
|
|
|
|
|
|
|
| |
Problem:
A number in 'iskeyword', 'isfname' or 'isident' that overflows (e.g. via
a modeline) hits abort() or an assert in getdigits_int().
Solution:
Parse the numbers non-strictly so an out-of-range value gives E474.
Fixes #42409
AI-assisted
|
| |
|
|
|
|
|
|
|
|
| |
Work towards enabling "flow" layout in most `:help` files.
Since [tables are supported in help](https://github.com/neovim/tree-sitter-vimdoc#tables),
it's now possible to render most help files as ["flow" layout](https://github.com/neovim/neovim/blob/9244da12e400ec0291450a5e9400d995e7a29b83/src/gen/gen_help_html.lua#L86-L88)
instead of the legacy fixed-width layout. Besides [improved HTML rendering](https://github.com/neovim/neovim/pull/42381#discussion_r4285705739),
flow layout will allow `:help` presentation-mode to un-hardwrap text
blocks.
|
| |
|
|
|
|
|
|
|
|
| |
Work towards enabling "flow" layout in most `:help` files.
Since [tables are supported in help](https://github.com/neovim/tree-sitter-vimdoc#tables),
it's now possible to render most help files as ["flow" layout](https://github.com/neovim/neovim/blob/9244da12e400ec0291450a5e9400d995e7a29b83/src/gen/gen_help_html.lua#L86-L88)
instead of the legacy fixed-width layout. Besides [improved HTML rendering](https://github.com/neovim/neovim/pull/42381#discussion_r4285705739),
flow layout will allow `:help` presentation-mode to un-hardwrap text
blocks.
|
| |
|
|
|
|
|
|
|
|
|
|
| |
Problem: The list returned by 'quickfixtextfunc' is never
unreferenced, so it is not freed until garbage collection.
Solution: Unreference the list after filling the quickfix buffer
(Volodymyr Chernetskyi).
closes: vim/vim#21437
https://github.com/vim/vim/commit/84d86c65d3bc612320c3d38c2fc987c5cdd81ae9
Co-authored-by: Volodymyr Chernetskyi <19735328+chernetskyi@users.noreply.github.com>
|
| |\
| |
| | |
vim-patch:9.2.{1196,1199}
|
| | |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Problem: Case-folded regexp matches can end inside a UTF-8 character
when the input is longer than the literal pattern.
Solution: Return the input byte length after a successful comparison
even when it exceeds the pattern byte length, and test literal
replacements and backreferences (Volodymyr Chernetskyi).
related: vim/vim#14756
related: vim/vim#21212
closes: vim/vim#21439
https://github.com/vim/vim/commit/c9a9517ce8498256b50576e8291709083b607d70
Co-authored-by: Volodymyr Chernetskyi <19735328+chernetskyi@users.noreply.github.com>
|
| | |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
case-folded widths
Problem: NFA literal matches miss characters with different case-folded
widths, including when retrying after a failed suffix match.
Solution: Advance past the actual input character in both paths and test
string and buffer searches (Volodymyr Chernetskyi).
related: vim/vim#14294
closes: vim/vim#21438
https://github.com/vim/vim/commit/b3affdd29ea4b1017f5c870824a9e4576731fa95
Co-authored-by: Volodymyr Chernetskyi <19735328+chernetskyi@users.noreply.github.com>
|
| |/
|
|
|
|
|
|
|
|
| |
Work towards enabling "flow" layout in most `:help` files.
Since [tables are supported in
help](https://github.com/neovim/tree-sitter-vimdoc#tables), it's now possible to
render most help files as ["flow" layout](https://github.com/neovim/neovim/blob/9244da12e400ec0291450a5e9400d995e7a29b83/src/gen/gen_help_html.lua#L86-L88)
instead of the legacy fixed-width layout. Besides [improved HTML rendering](https://github.com/neovim/neovim/pull/42381#discussion_r4285705739),
flow layout will allow `:help` presentation-mode to un-hardwrap text blocks.
https://github.com/neovim/neovim/issues/31825
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Problem:
When starting Nvim with both `--clean` and `--noplugin` (in either
order), `--noplugin` is silently ignored and built-in runtime plugins
are loaded anyway. `command_line_scan()` sets `p_lpl = false` for
`--noplugin`, and `--clean` sets `params.use_vimrc = "NONE"` and
`params.clean = true`, which later overwrites `p_lpl` back to `true` via
`p_lpl = vimrc_none ? params.clean : p_lpl`.
Solution:
Only reset `p_lpl = false` when `vimrc_none && !params.clean`,
preserving `p_lpl = false` if `--noplugin` was passed.
AI-assisted
|
| |
|
| |
highlights.scm: `#match` is slow, prefer `#lua-match`.
|
| |
|
|
|
|
|
|
|
| |
Problem: Cannot complete the command after ++once or ++nested for
:autocmd.
Solution: Skip over these flags in set_context_in_autocmd() (glepnir).
closes: vim/vim#21429
https://github.com/vim/vim/commit/cf57ec0db8a9bc9926c7ede86a8586f057545723
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Problem: nvim_set_option_value() dry runs skip checks in did_set_*
callbacks. This logic also prepares values needed to apply the option,
such as tab widths or a compiled regexp. Moving the checks into
validation callbacks needs a way to save that work for did_set_*.
Solution: Store prepared values in optset_T so did_set_* can consume
them after the option is stored. Dry runs perform the same validation,
then free the prepared values without changing live state.
This extends dry-run validation for:
- 'cedit': reject invalid command-line window keys.
- 'completeitemalign': require each completion column exactly once.
- 'cursorlineopt': reject empty values and conflicting line modes.
- 'encoding': accept only UTF-8 and its aliases.
- 'fileencoding': reject lists and local changes with 'nomodifiable'.
- 'messagesopt': require mandatory fields and enforce numeric limits.
- 'spellcapcheck': return regexp errors, including under :silent!.
- 'spellsuggest': reject conflicting suggestion modes.
- 'varsofttabstop' and 'vartabstop': reject invalid tab widths.
- 'wildmode': reject more than four completion stages.
'makeencoding' also uses the shared encoding preparation.
Separating value preparation exposed a bug in 'vartabstop' and
'varsofttabstop': failed assignments could discard local tab widths, and
global assignments could overwrite them. Fix this by preparing new
widths separately and applying them only after a valid local assignment.
AI-assisted
|
| |
|
|
|
| |
Generate PDF using `chrome`.
TODO: we probably don't need the `typst` codepath.
|
| |
|
|
|
|
| |
Render tables in both `:help` and generated HTML.
Use NBSP (nonbreaking space) char in empty table cells.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Problem:
- `<` before a listitem (`< - foo`) is not concealed.
- Codeblock HTML has extra blank lines.
- Codeblock in a listitem ends the listitem, so HTML docs drop the rest
of the item and its nesting. Example from `:h nvim_open_win()`:
```
• border: … the double-box style can be specified as: >
[ "╔", "═" ,"╗", "║", "╝", "═", "╚", "║" ].
<
If fewer than eight chars are given, they will be repeated.
• bufpos: …
tree-sitter-vimdoc v4.1.0:
(block
(line_li (prefix) (line) (codeblock (code (line)))))
(block
(line) ; "If fewer…"
(line_li (prefix) (line) (line))) ; "bufpos"
tree-sitter-vimdoc v4.2.0:
(block
(line_li (prefix) (line) (codeblock (code (line)))
(line)) ; "If fewer…"
(line_li (prefix) (line) (line))) ; "bufpos"
```
Solution:
- Bump tree-sitter-vimdoc to v4.2.0. https://github.com/neovim/tree-sitter-vimdoc/pull/174
- gen_help_html: get listitem indent from its first line
- gen_help_html: don't double codeblock newlines.
- highlight query: conceal `<` in `line_li`.
- docs: fix doc sources where a blank line was missing after listitems
followed by non-listitem text.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
vim-patch:9.2.1191: crash with "//e" when only a substitute pattern exists
Problem: Crash when using "//e" or "//" while there is a substitute
pattern but no previous search pattern (after v9.2.0374).
Solution: Use the previous pattern selected for an empty pattern
(Jonas Ornfelt).
related: vim/vim#19998
closes: vim/vim#21533
AI-assisted
https://github.com/vim/vim/commit/c58607c9a0579de0da909fc46f68144a01378af1
|
| | |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
#42352
Problem:
- nvim_buf_call() aborts (assert) when called from an expression evaluated
for a window in another tabpage ('foldexpr', 'statusline'), because
`curwin` is not in `curtab`.
- After it returns, `curwin` is wrong if it switched windows.
- `vim._with{win=…, keepcwd=true}` does not undo `:lcd` if `win` is in
another tabpage.
Solution:
- Allow `curwin` outside `curtab`, and restore if it was outside
`curtab` at `ctx_switch()`.
- Find the target window in any tabpage when restoring its dirs.
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
Problem:
`nvim_set_option_value('fo', {'c','r','o'}, {operation='remove'})` does
nothing on "jcqrol": the items are joined into one `:set-=` value, which
only matches a contiguous substring. Removing map keys, e.g. {'eol','space'}
from 'listchars', never matches. `vim.opt:remove{…}` inherits this.
(Regression from f34ee3da80e8; 429338e74bf4 fixed the case where the
flags are adjacent and in order.)
Solution:
Remove each item separately.
|
| |
|
|
|
|
|
|
|
| |
Problem:
If a job exits with cursor at last row, the `[Process exited]` message
covers the text of that row.
Solution:
Start a new line before showing the message, like the old
`\r\n[Process exited]` did.
|
| |
|
|
|
|
|
|
|
|
|
| |
Problem: Fuzzy completion sort order is unstable for equal scores.
Solution: Remember the list position when a match is first scored and
use it to break ties (glepnir).
closes: vim/vim#21443
https://github.com/vim/vim/commit/8c735cae9e589d1e587127386d6bf6869caed93b
Co-authored-by: glepnir <glephunter@gmail.com>
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Problem: has_autocmd() expands file names for events without
registered autocommands.
Solution: Return early when no autocommand patterns exist for the event
(Yasuhiro Matsumoto).
With my configuration on MS-Windows startup goes from 259 ms to 246 ms
(median of 9 runs).
closes: vim/vim#21449
https://github.com/vim/vim/commit/97a721d6c599829b242649d13844c4baa0f16b8a
Co-authored-by: Yasuhiro Matsumoto <mattn.jp@gmail.com>
|
| |
|
|
|
|
|
|
|
|
|
|
| |
Problem:
After clearing cursors, "]C" "[C" do nothing, although the previous
cursor positions ("gQ") may still be useful as marks.
Solution:
If multicursor is not active, "]C" "[C" iterate the
"nvim.multicursor.last" extmarks. They also work as an operator motion
("d]C"), since there is no cascade.
AI-assisted
|
| |
|
|
|
|
|
|
|
| |
Problem: :detach! changes the channel's detach property without emitting
ChanInfo, so plugins watching channel updates cannot react to changes.
Solution: Schedule ChanInfo after setting detach=true. Add a test
covering emit on :detach!.
AI-assisted
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Problem:
With DEC mode 2031 enabled, the terminal sends "CSI 997 ; Ps n" when
background changes. The spec[1] defines the notification as
"CSI ? 997 ; Ps n", same as the reply to "CSI ? 996 n" (which libvterm
already sends correctly). Strict parsers (e.g. opentui) ignore it, so
apps running in :terminal never follow theme changes. Nvim itself
doesn't notice because its TUI accepts 997 DSRs without the marker.
Solution:
Send "CSI ? 997 ; Ps n".
[1] https://contour-terminal.org/vt-extensions/color-palette-update-notifications/
AI-assisted
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Problem:
`g@<C-v>j` and `y<C-v>j` set '] one char short of the block corner, so
'operatorfunc' cannot get the block. With 'virtualedit' "block", "y"
also yanks a short last line one column narrow.
Solution:
- Decide `inclusive` from the motion's own type, before get_op_vcol()
makes it blockwise (like Vim).
- Never exclude the end of a block from '] (`g@<C-v>l`): a block
includes its corner.
Co-authored-by: IcyJerry <263879414+Icyjerry@users.noreply.github.com>
Co-authored-by: Nagato Yuzuru <nagato@yuzuru.me>
|
| |
|
|
|
|
|
| |
Problem:
Redundant code led to bugs like 2323746bfe4af534979249b051e7ada11c63b389
Solution:
Append the payload in atom_from_frame().
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
vim-patch:8.2.2338: patch 8.2.2338: Vim9: no error if using job_info() result wrongly
vim-patch:9.0.1572: patch 9.0.1572: error messages are not translated
vim-patch:86fcada95 translation(ru): adjust tutor/README.ru.utf-8.txt (#13789)
vim-patch:9.1.0500: patch 9.1.0500: cannot switch buffer in a popup
vim-patch:c5e24ee24 runtime(doc): add a note for netrw bug reports
vim-patch:2e359b98f runtime(tutor): fix typo in Chapter 2
vim-patch:5ccf7f140 runtime(tutor): regenerated some translated tutor1 files
vim-patch:0b5926f77 translation(it): include Italian version of tutor chapter 2
vim-patch:cdbbdb9ec runtime(tutor): fix another typo in tutor2
vim-patch:b183f5028 runtime(tutor): Reformat tutor1
vim-patch:802183082 runtime(tutor): updated Russian translation for tutor chapter 1
vim-patch:5f2a95955 runtime(doc): symlinking netrw.txt causes problems during install on Windows
vim-patch:8322923b4 translation(ru): include Russian translation for chapter two of the tutorial
vim-patch:721be7fd0 runtime(doc): add back help tag "pi_netrw.txt"
vim-patch:951d025af runtime(tutor): Add Galician language versions of tutor1 and tutor2
vim-patch:ba19b6589 runtime(doc): fix typo in description of :redrawtabpanel
vim-patch:30dcd0e1f runtime(tutor): apply fixes to runtime/tutor/tutor2
vim-patch:9.1.1494: patch 9.1.1494: runtime(tutor): no French translation for Chapter 2
vim-patch:477c893c0 runtime(tutor): remove duplicate tutor1.zh
vim-patch:b87f133b0 runtime(tutor): Add a section on text objects and special registers to Chapter 2
vim-patch:0ef50d9d8 runtime(tutor): Update German translation for the tutor
vim-patch:9cd512c7f runtime(tutor): Improve Spanish translation of chapter 1
vim-patch:58fafb654 runtime(tutor): Add Spanish translation for chapter 2
vim-patch:48940d94f runtime(tutor): Improve style for chapter 2
vim-patch:bbf616a9d runtime(tutor): Improve Spanish translations
vim-patch:e74e40dc4 runtime(tutor): Improve Spanish translation for chapter 2 after 757b42a
vim-patch:a4ee22529 translation(sv): Add Swedish translation of tutor2
vim-patch:0eb8e4de4 translation(sv): Update tutor1.sv to version 1.7
vim-patch:89296da39 translation(it): Add Italian translation of tutors README
vim-patch:5979d7dd7 PR template duplicates the commit message and needs edits to fill in
vim-patch:9.2.1170: patch 9.2.1170: GTK2 compile error when image feature is enabled
vim-patch:9.2.1172: patch 9.2.1172: Vim9: crash when lambda assigns to item of outer argument
vim-patch:2248250b4 CI: Bump msys2/setup-msys2
vim-patch:9.1.0807: tests: having 'nolist' in modelines isn't always desired
|
| |
|
|
|
|
|
|
| |
Problem:
nvim_parse_cmd("'btab", {}) and typing ":'btab" crash, parse_cmdline()
continues with a NULL eap->cmd after an invalid :tab address.
Solution:
Fail if parse_command_modifiers() set an error.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
Problem:
With 'ruler' in the cmdline ('laststatus=0') and ext_messages (ui2), a
'rulerformat' "%m" does not update the "[+]" indicator after ":write",
until a cursor-move.
Analysis:
`redraw_buf_status_later()` only marks windows with a statusline or
winbar. The symptom is hidden by the legacy message grid because the
write message overwrites the cmdline, which redraws the ruler.
Solution:
Also mark the cmdline 'ruler', like `status_redraw_buf()`.
|
| |
|
|
|
|
|
|
|
|
| |
Problem:
A Visual-mode mapping that reads input (`getchar()`) does not include
that input when cascading to other cursors (they only see ESC). OTOH,
Normal-mode mappings do replay the input.
Solution:
Append the payload to the Visual session's Lua-mapping subatom, and to the
session-ending command (`:<C-u>…` mapping).
|