Document VIM-2883 ('inccommand' substitute preview) and VIM-3049
(<C-Y>/<C-E> completion popup keys) under [To Be Released].
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
needed to make InsertCharacterAboveCursorAction SingleExecution as otherwise exception was thrown that accept on lookup cannot be called inside run for each
The `injector.globalOptions().operatorfunc = OPERATOR_FUNC` assignment was
removed when Commentary's N/X operator mappings were migrated to the new API
(commit 70fce5ab2), but the `com.maddyhome.idea.vim.api.globalOptions` import
was left behind. It is now unused.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Registering the targets extension adds a 'targets' toggle option, which
shifts the output of ':set all' / ':set! all' (and the setglobal/setlocal
variants). Update the six 'show all option values' expectations to
include notargets, reflowing the multi-column layouts accordingly.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Removes the currently-failing tests that depend on features outside the
targets extension: forced motion (dvi-/dVi-/d<C-V>i-, which vim-engine
does not support in operator-pending mode), multiline linewise brace
delete (din{), multiline quote (cin`), and blockwise/linewise
block-insert interplay (VjIb / <C-V>jIb). The remaining 160 tests pass.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Makes TargetSource.seek a default (nearestForward ?: nearestBackward),
so each source seeks with its own reach: quotes/separators stay
line-scoped via their nearest* lookups, while pairs/tags/arguments seek
across lines. Fixes ci) seeking down to a pair on a later line. Also
corrects the cin; multiline test fixture (needs two separators).
Driven by VimTargetsSeekTest (7).
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
SeparatorSource now searches the whole buffer (previousSeparator /
nextSeparator) instead of a single line, matching targets.vim where
separator text objects can cover several lines. Fixes di- across lines
and cin; cross-line seeking. Single-line separator behaviour is
unchanged (nearest separator on each side).
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Reworks growing: TargetSource now exposes innermost + surrounding (with
a default enclosing/outward built from them), replacing per-source
growing. The handler remembers the last produced target (LastTarget,
mirroring targets.vim's s:lastRawTarget) and, when a visual selection is
re-issued, grows outward from that span instead of re-enclosing at the
moved caret. Same modifier steps out one level; a count steps further.
Driven by VimTargetsGrowTest (4).
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Adds the argument source for the a trigger (ia/aa/Ia/Aa with n/l and
counts), a faithful port of targets.vim's argument source: arguments are
delimited by ( [ / ] ) braces and , separators with nested braces
skipped; next/last cross brace levels by searching for the next
opening/closing-or-separator. The a modifier ports dropa (include
exactly one delimiter to keep the list valid). Driven by
VimTargetsArgumentTest (20).
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
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).