Commit Graph
6167 Commits
Author SHA1 Message Date
1grzyb1 75096a3b89 VIM-4255 Don't record repleced mapped keystrotes
When user had mapping for key `onUnfinishedMappingSequenceTimeout` executed this key mapping again which resulted in duplicated key in macro. To prevent that we took simillar approach as nvim to not record mapped keystrokes
2026-06-22 10:55:42 +02:00
1grzyb1 78ebb9122c VIM-1082 motions over fold regions
motions on closed fold regions didn't take into account this fold region so dd only deleted first line without collapsed content
2026-06-19 13:19:30 +02:00
1grzyb1 d9773e1293 Keep VimSearchHelper plugin backward compatibility 2026-06-18 11:38:41 +02:00
1grzyb1 d199488302 Control initial mode in visual tests
If other test change mode then in visual tests we would use this other return to mode instead of normal and it resutled in flakyness of those tests. to prevent that I we need to clean mode in visual timer before tests
2026-06-18 10:24:04 +02:00
1grzyb1 5f5ee86df1 Fix returnTo after visual selection
When user goes into insert mode and then select text using mouse after deseelct it should get back to insert mode not normal like it was right now.
2026-06-18 10:24:04 +02:00
1grzyb1 b8a0b40b27 VIM-3049 accpet completion with ctrl+Y 2026-06-17 12:51:51 +02:00
1grzyb1 e43cb52c05 VIM-3049 close completion with ctrl+E 2026-06-17 12:51:51 +02:00
1grzyb1 ee02f8dbd5 VIM-2883 adjust option tests 2026-06-17 10:58:53 +02:00
1grzyb1 a6a721a737 VIM-2883 support split option to show modified line
Enhanced VirtualBufferGroup with refresh method and opening without stealing focus so we can dynamiclly show lines that will be replaced
2026-06-17 10:58:53 +02:00
1grzyb1 fe5fae0457 VIM-2883 Highlight replacement text 2026-06-17 10:58:53 +02:00
1grzyb1 c70cc7764d VIM-2883 Implement incremental search
when inccomand option is not empty editor will incrementally update text during substitute
2026-06-17 10:58:53 +02:00
claude[bot]andClaude Opus 4.8 8c8d35afbf Remove unused globalOptions import in CommentaryExtension
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>
2026-06-16 11:52:53 +02:00
1grzyb1andClaude Opus 4.8 8541f4ee05 VIM-1960 targets.vim: update option-list tests for the new targets option
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>
2026-06-16 11:32:00 +02:00
1grzyb1andClaude Opus 4.8 2138f7a19f VIM-1960 targets.vim: drop tests for unsupported scenarios
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>
2026-06-16 11:32:00 +02:00
1grzyb1andClaude Opus 4.8 a0e206fe07 VIM-1960 targets.vim: unify seeking, pair seek spans lines
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>
2026-06-16 11:32:00 +02:00
1grzyb1andClaude Opus 4.8 894ab584e4 VIM-1960 targets.vim: separators span multiple lines
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>
2026-06-16 11:32:00 +02:00
1grzyb1andClaude Opus 4.8 5ce6127f43 VIM-1960 targets.vim: multi-level visual-mode growing
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>
2026-06-16 11:32:00 +02:00
1grzyb1andClaude Opus 4.8 04e490bf61 VIM-1960 targets.vim: argument text objects
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>
2026-06-16 11:32:00 +02:00
1grzyb1andClaude Opus 4.8 6e144579c0 VIM-1960 targets.vim: any-block/any-quote count crosses bracket kinds
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>
2026-06-16 11:32:00 +02:00
1grzyb1andClaude Opus 4.8 053c6689c7 VIM-1960 targets.vim: tag text objects
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>
2026-06-16 11:32:00 +02:00
1grzyb1andClaude Opus 4.8 a40e44d0eb VIM-1960 targets.vim: separator text objects
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>
2026-06-16 11:32:00 +02:00
1grzyb1andClaude Opus 4.8 688a9389a3 VIM-1960 targets.vim: quote text objects
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>
2026-06-16 11:32:00 +02:00
1grzyb1andClaude Opus 4.8 79502800e3 VIM-1960 Add targets.vim extension: pair text objects
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>
2026-06-16 11:32:00 +02:00
1grzyb1 4eb74257fb VIM-1662 handle NewScratchFile action
NewScrtachFile action handler requires it to be run from specific places. So we need to override place to ACTION_SEARCH
2026-06-15 10:57:31 +02:00
1grzyb1 78e8652387 VIM-741 Remove tab from vim only keys
Allow users to pass tab directly to IDE
2026-06-15 10:18:08 +02:00
1grzyb1 ac1f36a20d Assert that painer is present in ouput panel
Without that tests sometimes failes as it was not created
2026-06-15 10:18:08 +02:00
1grzyb1 3df802eae5 VIM-2544 Adjust mockito test by new param 2026-06-12 11:00:08 +00:00
1grzyb1 8a9553d4d7 VIM-2544 Adjust option tests for new option 2026-06-12 11:00:08 +00:00
1grzyb1 b4f7aa4202 VIM-2544 Adjust line width by status pane 2026-06-12 11:00:08 +00:00
1grzyb1 76acd08388 VIM-2544 Implement max search count option 2026-06-12 11:00:08 +00:00
1grzyb1 9d8d146078 VIM-2544 Update search after moving caret
When we were updating match count in search highlit carret was still in old position which resulted in incorrect calculations
2026-06-12 11:00:08 +00:00
1grzyb1 90bea363a7 VIM-2544 show search count in output panel
Added new status label on output panel in which we display current search count
2026-06-12 11:00:08 +00:00
Matt Ellis cdc943620b Add extra border around output and ex panels 2026-06-12 06:24:51 +00:00
Matt Ellis 154be17456 Match Vim behaviour with long output
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).
2026-06-12 06:24:51 +00:00
Matt Ellis 6f67fdbe11 CTRL-C closes message area 2026-06-12 06:24:51 +00:00
Matt Ellis f0c22272ff Implement g< action to show last output 2026-06-12 06:24:51 +00:00
Matt Ellis 7c78f1a51e Show hit-enter prompt for external commands 2026-06-12 06:24:51 +00:00
Matt Ellis 93040783a7 Accept : to start a new command during output 2026-06-12 06:24:51 +00:00
Matt Ellis f21ebe046a Support modeless selection and copy to clipboard
In both output panel and ex entry panel
2026-06-12 06:24:51 +00:00
Matt Ellis cf2ea108ca Extract common glass pane handling 2026-06-12 06:24:51 +00:00
Matt Ellis c11eff4b16 Update the cursor while showing the output panel 2026-06-12 06:24:51 +00:00
Matt Ellis e76c3bb792 Handle empty and blank text
Address VIM-4240
2026-06-12 06:24:51 +00:00
Matt Ellis 90b8e005ae Support 'cmdheight' option for "single-line" output 2026-06-12 06:24:51 +00:00
Matt Ellis ed3c84c610 Force text pane size to ensure lines are wrapped
Otherwise, on first use with 'nomore', wrapped lines are not calculated when we need to scroll to the end
2026-06-12 06:24:51 +00:00
Matt Ellis 4698576a63 Implement per-character line break 2026-06-12 06:24:51 +00:00
Matt Ellis cbea98b0b8 Count wrapped lines 2026-06-12 06:24:51 +00:00
Matt Ellis fbe9f0884d Update prompt when scrolling with mouse 2026-06-12 06:24:51 +00:00
Matt Ellis 742f25bd1c Animate scrolling in output panel 2026-06-12 06:24:51 +00:00
Matt Ellis d6d5fdefd4 Skip IDE shortcut handling when panel is active
Important or the IDE will try to dispatch shortcuts such as `<BS>` while the panel is active
2026-06-12 06:24:51 +00:00
Matt Ellis 856ad4ff86 Update more prompt to match Vim text and behaviour 2026-06-12 06:24:51 +00:00