PairSource.outerOf now searches all configured bracket kinds for the
innermost enclosing pair, so a count on the b (any block) trigger can
cross kinds, e.g. d2ib from inside () nested in {} reaches the {}.
Driven by VimTargetsAnyBlockQuoteTest (7).
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Adds the tag source for the t trigger (it/at/It/At with n/l). Uses a
self-contained stack-based tag matcher (IdeaVim's findBlockTagRange is
caret-bound and its offset-based internals are private); the span stores
the outer angle brackets and toRange re-derives the inner content. Tag
names match case-insensitively, like Vim. Driven by VimTargetsTagTest
(15).
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Adds the separator source for , . ; : + - = ~ _ * # / | \ & $ (the
text between two consecutive separators on a line). Introduces an
overridable TargetSource.toRange so unbalanced delimiters can define
their own modifier behaviour: a separator's a/A include only the leading
separator, leaving a proper list after delete. Also handles the empty
match case (ci, on ,,). Driven by VimTargetsSeparatorTest (20) and
VimTargetsEmptyMatchTest (3).
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Adds the quote source for triggers ' " ` and the q (any-quote) alias.
Quotes are paired in order from the start of each line, giving the smart
skip of false gaps between strings. Reuses the shared DelimiterSpan +
Modifier model; lifts the counted next/last stepping into a shared
TargetSource.step helper. Driven by VimTargetsQuoteTest (29) and
VimTargetsQuoteSeekTest (6).
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
First cycle of porting wellle/targets.vim. Registers the "targets"
extension and implements the pair source: triggers ( ) { } [ ] < > with
the B and b (any-block) aliases, the i/a/I/A modifiers, the n/l
next/last qualifiers, counts, current-line seeking, and visual-mode
growing. Driven by VimTargetsPairTest (41 tests).
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Keys for scrolling down should do nothing when scrolling is enabled for long output. Also adds some notes about 'nomore' behaviour and 'messagesopt' missing "hit-enter" (which can't be tested due to the async timeout).
Also fixes incorrect behaviour passing 'q' to editor when at hit-enter prompt, and processing Enter twice, scrolling two lines instead of one (this isn't possible to test, sadly, it depends on Swing key event handling)
We "redraw" the status line at various times (explicit `<C-L>` redraw, scrolling, etc.). Previously, this would clear the status bar, but now that some messages and output use a persistent single line output panel, we make sure to close the output panel too
Fixes VIM-4230