Skip to content

Re-land external editing capabilities with the qualified Neovim engine - #212

Merged
trissim merged 1 commit into
mainfrom
work/vim-neovim--P928--textual-reland
Oct 30, 2026
Merged

trissim merged 1 commit into
mainfrom
work/vim-neovim--P928--textual-reland

Conversation

@trissim

@trissim trissim commented Oct 30, 2026

Copy link
Copy Markdown

Summary

1 restoration commit, 15 files, +291/−936. Re-land #208 over current Textual main (#209 included), now that the matching Toad engine at 16964a0de has exercised all seven real-Neovim qualification groups. This restores one editing engine, not a second handwritten Vim implementation.

Why the revert can now end

8c70f7f reverted #208 while Toad's paired engine could not start. Toad #1320 repaired native MessagePack handles, completion publication and RPC-only resize dispatch. Claude's retained-child run now exercises insert, motions, visual selection, undo/redo/paste, remapped keys, hidden documents and reattach/delayed paint. The one visual comparison discrepancy was the harness dropping the selected newline cell; Neovim and TextArea paint that cell identically.

That evidence belongs to 16964a0de plus the original #208 candidate. It does not claim a new run of this head after #209.

Ownership restored

  • EditingMode owns generic text-entry capabilities; the external engine owns Vim grammar. The 26 handwritten editor command declarations and competing mode transitions disappear again.
  • DocumentBase.replace_lines and RangedEditResult own line mutation and its original range. TextArea.project_engine_edit projects that result; set_document adopts the retained document. The retired widget is not a second document owner.
  • paint_selection projects acknowledged engine selection, separate from input requests. The existing native binding declarations and remapped arrow boundary remain available to #1320.
  • Wrapped document height derives from the existing offsets, rather than summing them on every read.

Current-main work retained

This reverses only 8c70f7f on top of 4ecfb67. #209's hint caption geometry, focus retirement, footer changes and key_mode_label overrides remain. Comparing the restored DOM/TextArea against 7ba616b shows precisely the additional #209 label properties. Textual #211/#210 remain separate owned changes, not copied into this PR.

The unfinished P3 wrap optimization is excluded. It is preserved at remote checkpoint work/vim-neovim--P928--textual, commit 4ef5a1a, and in the retained original patch.

Evidence / remaining acceptance

  • Targeted NRA AST parsing: all 15 changed Python files before and after parsed; no omissions.
  • git diff --cached --check: passed.
  • Full-tree deleted-name search over src/tests/tools for VimInsert, LineMotion, EditorCommand, LinewiseClipboard, apply_engine_text and apply_engine_lines: no remaining callers.
  • Author tests, collection, checkers, provider input, installation and UI acceptance: UNRUN as ordered. Root owns the paired run and installation.
  • Merge this restoration first; #1320 then restores branch = "main" and regenerates its Textual lock with uv. No permanent candidate revision, vendor copy or second dependency source remains.

Neovim finally starts
remove the handwritten substitute
keep #209, because fixing the engine is not permission to time-travel the footer

Copilot AI balanced review requested due to automatic review settings October 30, 2026 00:32

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot was unable to review this pull request because the user who requested the review has insufficient remaining quota.

An organization owner can choose the repository organization as the billing source for reviews requested by members with a paid Copilot license. Learn about Copilot code review billing.

@trissim
trissim merged commit bea0d37 into main Oct 30, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants