Commit Graph
100 Commits
Author SHA1 Message Date
claude[bot]andClaude Opus 5 872867fc02 Update changelog: repeat with auto-import fix
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-08 05:27:42 +00:00
claude[bot]andClaude Opus 5 4552326cc5 Update changelog: textobj-line and shortcuts-outside-editor PRs
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-05 05:23:57 +00:00
claude[bot]andClaude Opus 5 0985572cb1 Update changelog: fix for NPE when unloading the plugin
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-04 05:25:02 +00:00
claude[bot]andClaude Opus 5 91dc92ed08 Update changelog: % expansion in ex commands, blockwise yank and CTRL-R CTRL-F fixes
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-02 05:22:47 +00:00
claude[bot]andClaude Opus 5 05bcee8053 Fix: AssertionError when yanking with a blockwise-forced motion (y<C-V>)
`y<C-V>{motion}` (`:help o_CTRL-V`) makes `getMotionRange` return a
rectangular block, i.e. a multi-range `TextRange` with one range per row
of the block. `YankGroupBase.yankMotion` assumed a single range and
tripped `assert(motionRange.size() == 1)`; with assertions disabled it
silently yanked only the first row of the block, characterwise.

Handle a blockwise-forced motion the way the delete path already does:
store the whole multi-range as a blockwise yank and skip the
characterwise-to-linewise promotion, which does not apply to a block.

Found by the YankDeletePropertyTest property test.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-01 10:47:20 +02:00
claude[bot]andClaude Opus 5 05d766b93f Fix: IndexOutOfBoundsException inserting the filename under the caret at the end of the document
`c_CTRL-R_CTRL-F` uses the *exclusive* end offset of the current incsearch
match as the document offset to look for a filename at. When the match ends
at the very end of the document, that offset equals the text length, and
`findFilenameAtOrFollowingCursor` indexed the text with it directly.

Guard against an offset that isn't a valid index into the text, and return
null, which reports E446 "No file name under cursor". This is the same guard
that `findWordAtOrFollowingCursor` already has, and it matches Vim, which
finds no identifier or filename when the position is past the end of the line.

Found by the property based tests.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-01 10:47:02 +02:00
claude[bot]andClaude Opus 5 45e57fba76 Update changelog: CurSearch highlight, gv selection range
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-01 05:22:19 +00:00
claude[bot] 15df478303 Update changelog: alternate file name register 2026-08-27 07:52:33 +00:00
claude[bot]andClaude Opus 5 ae3441863a Update changelog: signature marks plugin PR reference
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-26 05:30:48 +00:00
claude[bot]andClaude Opus 5 bdc0f987bf Update changelog: 2.46.2 release, nested block delete fix
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-25 05:29:14 +00:00
claude[bot]andClaude Opus 5 55f0ad9c5c Update changelog: word text object crash at the start of the file
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-21 15:33:46 +03:00
claude[bot]andClaude Opus 5 7b2c5e23a4 Remove shadowed offset parameter in InsertWordUnderCaretAction
`insertText` declared a local `offset` that shadowed its own `offset`
parameter, leaving the parameter unused and the body reaching for
`commandLine.caret.offset` instead. The two are the same value (that is what
the base class passes), so this is not a behaviour change — but the shadowing
hides the parameter and makes the function harder to read.

Name the local after what it holds, and use the parameter.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-21 15:33:46 +03:00
claude[bot]andClaude Opus 5 950d60fc63 Fix IndexOutOfBoundsException expanding a word object at the start of the file
`findPreviousWordOne` always steps back one character before it starts
skipping, to avoid getting stuck on the start of a word. When the caller
passes `allowMoveFromWordStart = false`, the character at the new position is
read to decide whether to skip at all — but if the search started at offset 0,
that position is -1 and the read throws.

The only caller that passes `allowMoveFromWordStart = false` is
`findWordObject` when expanding a right-to-left visual selection, so `viw`,
`vaw`, `viW` and `vaW` crashed whenever the selection reached the very start of
the file, e.g. `v h iw` with the caret on the second character.

Return 0 as soon as we step past the start of the text. Every path through the
rest of the function already returns 0 in that case, so this only affects the
out of bounds read.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-21 15:33:46 +03:00
claude[bot]andClaude Opus 5 8c115d092f Report UTF-8 bytes from g8, as Vim does
`g8` is documented as printing "the hex values of the bytes used in the
character under the cursor, assuming it is in UTF-8 encoding". IdeaVim
printed the hex value of a single UTF-16 code unit instead, so anything
outside ASCII was wrong: `é` reported "e9" rather than "c3 a9", and a
character outside the BMP reported half of its surrogate pair ("d83d")
rather than its four UTF-8 bytes.

Encode the full code point at the caret to UTF-8 and format each byte as
two lowercase hex digits, space separated. ASCII output is unchanged.

Vim also appends the bytes of trailing composing characters, separated
by `+`. That is still not implemented, and is noted in the KDoc.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-21 14:38:19 +03:00
claude[bot]andClaude Opus 5 8a4ef315dc Fix g8 crashing when there is no character under the caret
`g8` read `editor.text()[caret.offset]` unguarded. On an empty file, or
with the caret on an empty last line, the offset is the end of the text
and the read threw IndexOutOfBoundsException.

Vim's cursor never sits on the line break - at the end of a line it sits
on the line's terminating NUL - so there is no character under it and
Vim reports "NUL". Do the same, which covers both the crashing offsets
and an empty line in the middle of the file (which previously reported
the hex value of the line feed, "a").

Adds FileGetHexActionTest, which had no coverage at all.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-21 14:38:19 +03:00
claude[bot]andClaude Opus 5 105409dfe2 Update changelog: gx no longer adds to the jump list
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-21 14:16:16 +03:00
claude[bot]andClaude Opus 5 9f78d612f5 Fix(VIM-1341): gx should not add to the jump list
`gx` opens the URL under the caret with an external program and never moves
the caret - the existing `test gx opens the URL without moving the caret`
asserts exactly that. Saving a jump location was therefore pointless and
actively harmful:

- `addJump(reset = true)` pushed the *unchanged* caret position onto the jump
  list and reset the jump spot, so a `<C-O>` right after `gx` landed on the
  caret's own line instead of returning to the previous jump.
- `saveJumpLocation` also overwrites the `'` mark, breaking `''`.
- The action is a `ForEachCaret` handler, so both happened once per caret.

Vim does not list `gx` under `:help jump-motions`, and netrw's `gx`
implementation leaves the jump list alone.

Also drop the `FLAG_SAVE_JUMP` flag: it is only honoured by
`MotionActionHandler`, so on a `VimActionHandler` it was inert and misleading.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-21 14:16:16 +03:00
claude[bot]andClaude Opus 5 df02273b94 Update changelog: windowjumps and wildmenu options
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-20 05:26:48 +00:00
claude[bot]andClaude Opus 5 3ffad30aa0 Prepare What's New for the upcoming release
The tbr page was still a byte-for-byte copy of the 2.45.0 release notes,
so its content is replaced with the features and fixes currently under
To Be Released: the YankRing extension, modeless selection, the
current-search-match highlight, :stopinsert, command-line sethandler and
the macOS key repeat setting, plus the polish & fixes list.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-18 08:59:45 +02:00
claude[bot]andClaude Opus 5 e8d698fd7b Update changelog: reformat-on-paste, NL in commands, :normal in autocmd
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-18 05:27:03 +00:00
claude[bot]andClaude Opus 5 7662fdf3d0 Update changelog: backspace in Replace mode
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-15 05:22:29 +00:00
claude[bot]andClaude Opus 5 96a98e1d35 Update changelog: :stopinsert command
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-14 05:47:25 +00:00
claude[bot]andClaude Opus 5 76f125d6a4 Update changelog: linewise paste overwriting the * register during reindent
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-13 05:49:30 +00:00
claude[bot]andClaude Opus 5 163f695a5d Update changelog: register type recovery for stripped PRIMARY
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-12 05:48:19 +00:00
claude[bot]andClaude Opus 5 403ef65417 Update changelog: linewise yank in the * register on Linux
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-11 05:40:53 +00:00
claude[bot]andClaude Opus 5 28080122cd Update changelog: current search match highlight, macOS key repeat setting
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-08 05:35:13 +00:00
claude[bot]andClaude Opus 5 d041d28069 Update changelog: modeless selection for the 'mouse' option
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-07 05:47:57 +00:00
claude[bot]andClaude Opus 5 9687d86a22 Update changelog: YankRing extension, motion and regex fixes
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-06 06:19:26 +00:00
claude[bot]andClaude Opus 5 34b03d14c5 Update changelog: What's New in split mode
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-05 06:12:44 +00:00
claude[bot]andClaude Opus 5 5d32aba7c4 Update changelog: sethandler command-line mode, Python console fix
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-04 06:17:50 +00:00
claude[bot]andClaude Opus 5 5f4503fdd1 Update changelog: hlsearch highlights after restart, split mode load fix
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-07-31 06:21:16 +00:00
claude[bot]andClaude Opus 5 b808297b38 Update changelog: dat linewise delete, native undo after S/C
Document VIM-4287 and VIM-4301 under 2.45.0 (both commits are contained
in the 2.45.0 tag) and list PRs #1946 and #1949 under Merged PRs.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-07-29 06:19:23 +00:00
claude[bot]andClaude Opus 5 e5e948cd20 Prepare What's New for the upcoming release
Document the VIM-330 spelling dictionary commands in the changelog and
bring whatsnew-tbr.html up to date with the changelog entries that were
not yet represented on the page.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-07-27 12:32:08 +02:00
claude[bot]andClaude Opus 5 d5172999a2 Update changelog: square bracket regex patterns, <C-O> caret fix
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-07-25 06:13:42 +00:00
claude[bot]andClaude Opus 4.8 ef8929d9c6 Update changelog: Vim in Python console, incsearch caret and vimscript error fixes
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-24 06:15:15 +00:00
claude[bot]andClaude Opus 4.8 829b8e1a10 Fix :last not switching to the last open file
SelectLastFileCommand passed 999 to selectFile(), but both implementations
only treat 99 as the "select last file" sentinel. As a result `:last` returned
an error and never switched buffers for any realistic number of open files —
a regression introduced when the original Java handler (which correctly passed
99) was rewritten in Kotlin.

Use the shared VimFile.LAST_FILE_SENTINEL constant so the command and the
implementations agree by construction, and add a behavior test that opens
several files and asserts `:last` selects the last one. The test fails against
the old 999 value and passes with the fix.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-22 11:17:29 +02:00
claude[bot]andClaude Opus 4.8 0c29b00250 Introduce VimFile.LAST_FILE_SENTINEL for selectFile "last file" marker
The `selectFile(count)` API uses the magic number 99 as a sentinel meaning
"select the last open file". This value was duplicated as a bare literal in
both implementations (IjFileGroup and FileRemoteApiImpl), with nothing tying
it to the callers that must produce it. Name it once on the VimFile companion
and reference it from both implementations so the value can no longer drift.

No behavior change.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-22 11:17:29 +02:00
claude[bot]andClaude Opus 4.8 7c608b0eb5 Add tests for yy count clamping in YankLineActionTest
There was no count-prefixed `yy` test in the normal-mode suite, leaving the
`count - 1` / `min(..., fileSize)` line-range logic in YankGroupBase.yankLine
uncovered. Add two tests:

- `2yy` yanks the expected multiple lines.
- `5yy` near end-of-file clamps to the last line instead of running past the
  end of the buffer.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-22 11:15:49 +02:00
claude[bot]andClaude Opus 4.8 44addaca7d Remove unreachable dead-code guard in YankGroupBase.yankLine
`end` is computed as `min(moveCaretToRelativeLineEnd(...) + 1, fileSize)`.
`moveCaretToRelativeLineEnd` (the only implementation, in VimMotionGroupBase)
always returns a normalized, non-negative offset, so after the `+ 1` and
`min(..., fileSize)` the result is always >= 0. The `if (end == -1) continue`
check can therefore never fire and is dead code.

The equivalent line-range computation in VimChangeGroupBase.deleteLine
correctly has no such guard, confirming this was a stale leftover. This is a
behavior-preserving cleanup. Also drops an accidental double blank line in
yankMotion.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-22 11:15:49 +02:00
claude[bot]andClaude Opus 4.8 9b7fce67b6 Prepare What's New for the upcoming release
Update the changelog and the What's New page for the next release.

Changelog (CHANGES.md), added to [To Be Released]:
- Feature: VIM-1850 'keymap' option, 'iminsert', <C-^>, :loadkeymap and the
  :lmap/:lnoremap/:lunmap/:lmapclear language-mapping commands
- Fix: VIM-4281 output panel and command line now refresh colors on theme change
- Merged PRs: 1929, 1928, 1925

What's New (whatsnew-tbr.html), incremental update of the existing page:
- New section for the 'keymap' language-mappings feature
- Mini cards for gx and :w with a file argument
- Fixes list entries for theme refresh, :s///g on tab-indented lines, method
  navigation crash, and caret after delete-to-end from <C-O>

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-21 12:18:09 +02:00
claude[bot]andClaude Opus 4.8 3c530b70c3 Update changelog: Fix caret after delete-to-EOL from Insert-Normal mode
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-21 06:17:59 +00:00
claude[bot]andClaude Opus 4.8 608aa4e29d Update changelog: Add :w with file argument, fix method navigation crash
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-17 06:11:41 +00:00
claude[bot]andClaude Opus 4.8 f59b52562c Update changelog: Add gx command, fix substitute on tab-indented lines
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-16 06:08:58 +00:00
claude[bot]andClaude Opus 4.8 991752a0c6 Add concrete textobj-user config example to What's New
Replace the placeholder comments in the textobj-user section with a full
datetime spec so the config format is clear.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-14 09:23:26 +02:00
claude[bot]andClaude Opus 4.8 40936339d6 Prepare What's New for the upcoming release
Update the changelog and refresh whatsnew-tbr.html for the upcoming release.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-14 09:23:26 +02:00
claude[bot]andClaude Opus 4.8 719b8c91b5 Maintenance: Add missing space around assignment in CallFunctionHandler
`val func= arguments[0]` was missing a space before `=`. This is the only
such occurrence in the entire vim-engine and IntelliJ main source, so it is
a clear unintended slip in the recently-added `call()` function rather than
a deliberate style choice. Align it with Kotlin conventions and the rest of
the codebase.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-14 09:18:56 +02:00
claude[bot]andClaude Opus 4.8 21fa9b8210 Maintenance: import CtrlXCompletionMode in InsertLineCompletionAction
Replace inline fully-qualified references to
com.maddyhome.idea.vim.state.mode.CtrlXCompletionMode with a proper
import, matching the sibling completion actions
(InsertFilePathCompletionAction, InsertXCompletionAction) in the same
package. Behavior is unchanged; this only improves readability and
import consistency.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-14 09:12:49 +02:00
claude[bot]andClaude Opus 4.8 3799897b58 Update changelog: Add v/V/CTRL-V forced motion operators
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-11 06:08:55 +00:00
claude[bot]andClaude Opus 4.8 839eb7c62b Update changelog: Add textobj-user extension, custom .ideavimrc path
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-10 06:35:15 +00:00
claude[bot]andClaude Opus 4.8 7da4452dd1 Update changelog: Add c_CTRL-G and c_CTRL-T during incsearch
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-07 06:40:53 +00:00
claude[bot]andClaude Opus 4.8 23750f3996 Update changelog: Fix Visual mode leak with idearefactormode=keep
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-02 06:34:11 +00:00
claude[bot]andClaude Opus 4.8 836f6912fb Prepare What's New for the upcoming release
Add missing changelog entries for the mouse option and indentwise rename,
and rebuild the What's New page from the current [To Be Released] section.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-30 13:07:33 +02:00
claude[bot]andClaude Opus 4.8 eae523c6e4 Update changelog: Add U undo-line command, NERDTreeQuitOnOpen, empty guicursor fix
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-30 06:43:48 +00:00
claude[bot]andClaude Opus 4.8 29df388109 Update changelog: Add indentwise extension, autocmd normal-mode fix
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-27 06:28:36 +00:00
claude[bot]andClaude Opus 4.8 a6fefecc62 Update changelog: Fix undo in macro replay
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-26 06:40:27 +00:00
claude[bot]andClaude Opus 4.8 607139cf3c Prepare What's New for the upcoming release
Update the changelog and the What's New page for the upcoming release.

CHANGES.md ([To Be Released]):
- Features: 'langmap'/'langremap' support (VIM-2283)
- Fixes: <C-O> caret at end of line (VIM-315)
- Merged PRs: #1861 (langmap), #1809 (VIM-315)

whatsnew-tbr.html: incrementally added the new langmap feature section
and the new fixes to "polish & fixes", preserving the existing content.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-25 11:05:25 +02:00
claude[bot]andClaude Opus 4.8 4d322c78bd Fix start index handling in count() vimscript function
count(list, expr, ic, start) handled the start index incorrectly:
- Negative start indices (which Vim counts from the end of the list)
  were ignored, falling back to counting the whole list.
- An out-of-range start index silently counted the whole list instead
  of raising an error.

Vim resolves the start index via list_find(), which supports negative
indices and reports E684 (list index out of range) when the index is
invalid. Match that behavior: normalize negative indices and throw E684
for out-of-range values. The start argument is only applied when
explicitly provided, so count(list, expr) on an empty list still
returns 0 rather than erroring.

Adds regression tests for zero, negative, and out-of-range start indices.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-24 11:09:38 +02:00
claude[bot]andClaude Opus 4.8 7eb5f83fef Fix negative index handling in get() vimscript function
Vim's get(list, idx [, default]) supports negative indices, which count
from the end of the list (e.g. -1 is the last item). IdeaVim used
List.getOrElse(idx) directly, which treats any negative index as
out-of-bounds and returns the default value instead.

Normalize negative indices before lookup, matching the pattern already
used in remove(). Adds regression tests for negative and out-of-range
negative indices.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-24 11:09:38 +02:00
claude[bot]andClaude Opus 4.8 f1e424ff25 Update changelog: caret normalization and duplicate escape insertion fixes
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-24 06:36:42 +00:00
claude[bot]andClaude Opus 4.8 872f257c9b Update changelog: macro key duplication and shell command VFS refresh
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-23 06:41:15 +00:00
claude[bot]andClaude Opus 4.8 cf41c518c6 Update changelog: Fix operators over collapsed folds (VIM-1082)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-20 06:47:00 +00:00
claude[bot]andClaude Opus 4.8 7ba1eb2cde Update changelog: Add returnTo Insert mode fix after mouse selection
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-19 07:02:13 +00:00
claude[bot]andClaude Opus 4.8 3efcd63247 Update changelog: Add inccommand option and completion keys
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>
2026-06-18 06:51:35 +00:00
claude[bot]andClaude Opus 4.8 d0a60cbc70 Update changelog: Add targets.vim extension
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-17 06:59:12 +00: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
claude[bot]andClaude Opus 4.8 bbbeb37eca Update changelog: NewScratchFile action fix, Tab key handling
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-16 07:05:06 +00:00
claude[bot]andClaude Opus 4.8 57454c0eb3 Update changelog: Add search match count display
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-13 06:49:09 +00:00
claude[bot]andClaude Opus 4.8 e1be37b078 Update changelog: Add output panel improvements, g<, cmdheight, messagesopt
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-12 06:49:51 +00:00
claude[bot]andClaude Opus 4.8 0a05563bf3 Update changelog: Add control chars editor, abolish/maps/cursor fixes
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-12 06:22:34 +00:00
claude[bot]andClaude Sonnet 4.6 6c6ac9518e Update changelog: Add abbreviations, CamelCaseMotion, window resize, YouCompleteMe
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-10 06:49:35 +00:00
claude[bot]andClaude Sonnet 4.6 cc49079b48 Update changelog: Fix macro editor tracking (VIM-4238)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-28 06:40:43 +00:00
claude[bot]andClaude Sonnet 4.6 1d6f16794e Clean up dead code and unnecessary verbosity in MultiVisitor
- Remove dead if/else in visitRange: both branches returned the same
  Multi.RangeMulti value, making the condition a no-op
- Simplify `?: run { 0 }` to `?: 0` in limited lookbehind visitors;
  a run block with a single constant expression adds no value

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-26 15:58:50 +03:00
claude[bot]andClaude Sonnet 4.6 5786cb7bf7 Fix incomplete KDoc comment on PatternVisitor.hasUpperCase
The comment "Determines whether the visited tree contains" was missing
what the tree contains; it now reads "contains uppercase characters".

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-26 15:58:50 +03:00
claude[bot]andClaude Sonnet 4.6 cba0f9c003 Update changelog: Add abolish plugin (VIM-1362)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-21 06:43:59 +00:00
claude[bot]andClaude Sonnet 4.6 53ea1e19a8 Update changelog: q:/q? history windows, history VimScript functions
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-20 06:44:26 +00:00
claude[bot]andClaude Sonnet 4.6 6178f423d4 Fix code style issues in mapping/digraph function handlers
- Remove double space in DigraphGetFunctionHandler
- Add missing space before != in MapFunctionHandlerBase
- Add missing space before colon in MapCheckFunctionHandler class declaration
- Move else keyword to same line as closing brace in MapSetFunctionHandler
- Remove unnecessary blank line after function opening brace in MapSetFunctionHandler

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-20 07:24:19 +03:00
claude[bot]andClaude Sonnet 4.6 43566979aa Update changelog: digraph functions, C-U fix, Wayland flickering fix
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-19 06:43:04 +00:00
claude[bot]andClaude Sonnet 4.6 2998d4890f Update changelog: VIM-380 text objects, mapping functions, bug fixes
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-16 06:22:30 +00:00
claude[bot]andClaude Sonnet 4.6 255689cd69 Maintenance: Remove dead catch block in GlobalCommand, fix typo in SortCommandTest
GlobalCommand.globalExe had a try/catch/finally where the catch block only
re-threw the exception, which is unnecessary - finally executes regardless of
whether a catch is present. Remove the dead catch block.

Also fix a typo in SortCommandTest: "insensive" -> "insensitive".

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-15 11:46:33 +03:00
claude[bot]andClaude Sonnet 4.6 bd3635119e Update changelog: Wayland clipboard fix, :edit whitespace, :hi abbreviation
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-15 06:28:22 +00:00
claude[bot]andClaude Sonnet 4.6 eba3fae466 Update changelog: VIM-4217 mode widget settings persistence fix
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-14 07:13:37 +00:00
claude[bot]andClaude Sonnet 4.6 4f95756351 refactor(PlaybackRegisterAction): replace arrayOf workaround with idiomatic Kotlin
The `arrayOf(false)` pattern was a Java-style workaround for capturing a
mutable variable, unnecessary here since there are no lambdas involved.
Replace with a `var`, use `when` as an expression with a direct `return`,
and swap the manual while-loop counter for a `for` range.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-08 12:10:30 +03:00
claude[bot]andClaude Sonnet 4.6 7f23a06447 Update changelog: g; g, changelist navigation, tab command completion, VIM-4226 fix
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-07 06:16:26 +00:00
claude[bot]andClaude Sonnet 4.6 2e5c5d815c Update changelog: mode() function, NERDTree fix, e flag fix
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-05 06:09:10 +00:00
claude[bot]andClaude Sonnet 4.6 bc5ac2bcf4 Update changelog: VIM-4221 incsearch error sound fix
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-30 06:15:32 +00:00
claude[bot]andClaude Sonnet 4.6 a08c253e6c Update changelog: VIM-4202 C/C++ comment space fix, VIM-4219 null check
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-29 06:14:58 +00:00
claude[bot]andClaude Sonnet 4.6 4be7a68ebd Update changelog: VIM-4209 Esc in Rider popup, VIM-4211 commit window fix
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-28 06:16:05 +00:00
claude[bot]andClaude Sonnet 4.6 ebf637a367 Update changelog: S-Tab fix, commentary mode fix in split mode
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-24 13:51:07 +03:00
claude[bot]andClaude Sonnet 4.6 edce848ebd Update changelog: autocmd support, decompiled Kotlin Vim fix, block-visual undo carets
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-21 10:39:08 +03:00
claude[bot]andClaude Sonnet 4.6 8cda987b6e Update changelog: ReplaceWithRegister mapping fix, command fixes
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-21 10:38:51 +03:00
claude[bot]andClaude Sonnet 4.6 f9b4059224 Update changelog: fix settings persistence in remote dev mode
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-17 17:00:32 +03:00
claude[bot]andClaude Sonnet 4.6 ef42ce6aa5 Update changelog: Python Console fixes, NERDTree split mode performance
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-17 16:59:58 +03:00
claude[bot]andClaude Sonnet 4.6 270dc391b5 Fix IndexOutOfBoundsException in CmdCommand when no name is provided with -nargs
Accessing alias[0] without an isEmpty() guard crashed with
IndexOutOfBoundsException when the user typed a :command with only
-nargs specified but no command name (e.g. ":command -nargs=0").

After -nargs processing strips the flag, the remaining argument is
empty, so alias becomes "" and alias[0] throws. Adding alias.isEmpty()
guard treats the missing name as an invalid command name (E183).

Adds a regression test to ensure this case no longer crashes.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-17 16:58:35 +03:00
claude[bot]andClaude Sonnet 4.6 7a31c774d0 Fix CommandBuilder.isEmpty, clone, equals, and hashCode ignoring isRegisterPending
The `isRegisterPending` field was not considered in several methods of
`CommandBuilder`, causing subtle bugs:

- `isEmpty` returned `true` while waiting for a register character
  (after typing `"`), which caused `EditorResetConsumer` to treat the
  partially-built command as if no command was in progress. This could
  trigger an incorrect error indicator (beep) when pressing `<Esc>` to
  cancel register selection in Normal mode, instead of silently resetting.

- `clone()` did not copy `isRegisterPending`, meaning a cloned builder
  would lose pending register state. This is a latent bug affecting the
  unused `AsyncKeyProcessBuilder`.

- `equals()` and `hashCode()` did not include `isRegisterPending`, so
  two builders differing only in pending-register state were considered
  equal, which is incorrect.

Add a regression test that verifies `isEmpty` returns `false` while a
register selection is pending, and `true` after cancelling with Escape.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-17 16:56:50 +03:00
claude[bot]andClaude Sonnet 4.6 75a05a8f12 Update changelog: Add VIM-268 file name completion in ex commands
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-15 09:58:43 +02:00
claude[bot] c946ecde86 Fix NPE when using \/, \?, or \& range without previous search pattern
When using \/, \?, or \& in an Ex command range (e.g., :\/ d) without a
previous search or substitute pattern, the code stored null in the
patterns list and then threw NullPointerException via the !! assertion
in calculateLine1.

Instead, throw the appropriate Vim error eagerly when building the
SearchAddress: E35 for \/ and \? (no previous search), E33 for \& (no
previous substitute). The patterns list is now non-nullable, eliminating
the !! assertion.

Add regression tests that would have caught this NPE.
2026-04-07 12:51:40 +02:00
claude[bot]andClaude Sonnet 4.6 00e1d8173e Remove duplicate test and fix typo in HistoryCommandTest
- Remove `test history cmd lists empty command history` which was an
  exact duplicate of `test history cmd lists current cmd in history`
- Fix typo "saerch" -> "search" in test name

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-07 12:50:20 +02:00
claude[bot]andClaude Sonnet 4.6 3653e7f193 Update changelog: Fix pumvisible, Rider/CLion ESC, extension init
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-07 09:23:15 +02:00
claude[bot] fd3222dd76 Replace java.lang.Long.toHexString with Kotlin's Int.toString(16) in VimFileBase 2026-04-07 09:12:01 +02:00
claude[bot] 11ca10d10a Replace java.lang.Integer.min with kotlin.math.min in GoToLineCommand 2026-04-07 09:12:01 +02:00