| Commit message (Collapse) | Author | Age |
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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).
|
| |
|
|
|
|
|
|
|
|
|
| |
Problem:
- `v:cascading` is false during the Insert-mode live-preview.
- `vim.on_key()` sees the internal keys of the Visual-selection preview
and "zq" steps.
Solution:
- Set `v:cascading` during the Insert-mode preview.
- Don't send internal keys to `on_key` callbacks.
- Use `v:cascading` as the source of truth for `mc_replaying()`.
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
Problem: Fixed-size windows are resized when sharing free space to a
group of windows.
Solution: When resizing a group of windows, skip windows with a fixed
size if possible (Aryan).
fixes: vim/vim#21478
closes: vim/vim#21479
https://github.com/vim/vim/commit/354c4c0d04c3524b74f8ce6175efebda6cfa4c67
Co-authored-by: Aryan <ether9095cable@gmail.com>
|
| |
|
|
|
|
|
|
| |
Problem:
After `/\%Vfoo<CR>`, `zqn` places no cursors. `mc_zq_target()` clears
`'< '>` before `gn` (to detect a failed match), so `\%V` never matches.
Solution:
Keep the user's `'< '>` during `gn`; detect failure by its beep.
|
| |
|
|
|
| |
Problem: No way to check if cascade is in action.
Solution: Add `v:cascading` variable.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Problem:
With multicursors, an Insert-mode edit by a Lua/`<Cmd>` mapping or API
(nvim_put(), …) is live-previewed at the other cursors, but dropped at
ESC: the cascade replays _redo_, which does not contain such edits.
Solution:
When `<Cmd>`/Lua/RPC changes the buffer during Insert-mode, sync the
previews and restart the capture (like a non-captured cursor-move). The
edit stays as text.
- The mapping runs only at the primary. Its text is mirrored as-is
(similar to insert-completion). Re-running it per cursor would require
a "partial-remap" span replay, and breaks single-session plugins
(vim.snippet).
- Not during completion; redo already captures the pre-inserted
candidate on accept.
- Text typed before the edit is kept as mirrored, not replayed, so
per-cursor effects ('textwidth' wrapping, …) don't apply to it.
Known issues:
- "o"/"O"/"cc" with 'autoindent' followed by the mapping: the per-cursor
insert-entry replay is still pending, so the edit is lost.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Problem: Vim writes test file "4913".
Solution: Write probe file as (hidden) swap file, so file
watchers can apply standard ignore patterns (Keith Smiley).
This logic creates and deletes an arbitrary numbered filename. I found
that some file system watchers that otherwise respect VCS ignore
patterns can pick this file up and potentially rerun because of that.
This changes the arbitrary filename to use the swp extension so it's
more likely to already be ignored by the VCS.
related: vim/vim#5145
related: neovim/neovim#3460
closes: vim/vim#21468
https://github.com/vim/vim/commit/7eb646597d6b6be42f5941cf194938afa3af5208
Co-authored-by: Keith Smiley <keithbsmiley@gmail.com>
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
vim-patch:9.2.1175: setreg() block width wrong for unprintable chars
When yanking, the width of a <c-v>{motion}y register
is determined by the virtual colums of the text. However
in setreg() in 'b' mode use an idosyncratic width measurement
where C0 control chars (ASCII 0x00 - 0x19) and invalid UTF-8 bytes
have width 1 instead of their display width (2 or 4 cells).
Consider the following test case:
let strings = ['"reference', '"Übel', "\"aa\x07bb", "\"qq\x82", "\"x\nbabbel"]
for string in strings
call append('$', string)
exec "normal G0\<c-v>$\"ay"
let one = getregtype('a')
if string != strings[-1]
call setreg("b", string, 'b')
let two = getregtype('b')
else
let two = "na"
endif
call setreg("c", [string], 'b')
let three = getregtype('c')
call append('$', '"yank: '.one.", string: ".two.", list: ".three)
endfor
AFter this fix, all the three ways of measuring the width gives
equal values (or two, in the case of not being able to use setreg()
with a plain string in the first case)
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
Problem:
On Windows, a server started by :restart attaches to the TUI's console.
Closing the host-terminal kills the server, even after :detach or
:detach!: the swap to a hidden console only happens when a stdio UI
disconnects, but after :restart the TUI is on a socket.
Solution:
Track whether the console is inherited from the parent. When the last UI
disconnects and the server keeps running, swap an inherited console for
a hidden one.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Problem:
`nvim --embed --listen addr` always treats stdin as an RPC channel. If
stdin is /dev/null (e.g. backgrounded over ssh), the channel closes
before a UI can attach, so Nvim exits (detach=false behavior). If stdin
is a tty, keystrokes are read as RPC.
Solution:
With `--embed --listen`, open the stdio RPC channel only if stdin is
a pipe or socket. Else wait for a UI at the `--listen` address.
$ nvim --embed --listen ./nvim.sock
Nvim server (pid: 71984) waiting for UI, listening on: "./nvim.sock"
Note:
- No change when stdin is a pipe. So the test harness, TUI, and :restart
all behave exactly as before.
- The #29634 use-case of configuring a UI that attaches *after* startup
(a second UI, or reattach) still requires #25377 (reliable UIEnter).
Not affected by this change.
|
|