Commit Graph
10430 Commits
Author SHA1 Message Date
1grzyb1 a0129d5e44 VIM-1347 Customer bookmark icon with mnemonic support
Render bookmark icons for local marks in Signature extension.
GutterIconRenderer in platform is private so we've had to duplicate this logic
2026-08-25 11:36:19 +02:00
1grzyb1 6ff778148c VIM-1347 Implement signature marks plugin
With this plugin local marks are also shown on toolbar
2026-08-25 11:36:19 +02: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
IdeaVim Bot 4c3f1948cb Preparation to 2.46.2 release 2026-08-24 10:24:02 +00:00
1grzyb1 7517930f48 VIM-4312 correct linewise delete promotion when range end has trailing non-whitespace 2026-08-24 11:03:19 +02:00
1grzyb1 925500ef92 VIM-4312 Option to disbale vim in python console
We've added support for vim in python console but not all users want it so I've added option to disable/enable this feature
2026-08-24 09:35:24 +02: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
Alex PlateandClaude Opus 5 eb4de42396 Update changelog: add VIM-4283 and VIM-4282 to 2.45.0
Both fixes shipped in 2.45.0 but were never logged.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-21 13:31:46 +03:00
Alex PlateandClaude Opus 5 3d0398c127 Set the YouTrack Area field with a Claude workflow
Moves the Area field agent from the JetBrains/vim-claude-robot repository
into this one, where the YouTrack tooling and the Claude proxy setup
already exist.

The previous agent passed a single prompt to `claude -p` with the ticket
summary, the ticket description, and the list of Area values. It had no
tools, so it could not read the ticket comments, see how an Area value is
used on other tickets, or look at the source. The new workflow runs an
agent that reads the ticket, searches comparable tickets when the right
value is not obvious, and greps the code when the ticket names a command
or an option.

A script selects the ticket, so a run with nothing to triage ends before
the agent starts.

Add to the YouTrack tools:
- searchTickets, which reports the Area values of the tickets it finds
- getAreaValues and setArea, which reject unknown value names before
  writing and verify the field afterwards
- setTagByName, so a tag no longer needs a hardcoded id

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-21 12:56:56 +03:00
IdeaVim Bot cafb6b53f1 Preparation to 2.46.1 release 2026-08-21 08:22:56 +00:00
1grzyb1 08343eff68 VIM-4310 Don't show full parser error message 2026-08-21 09:30:56 +02:00
1grzyb1 f45822bce1 VIM-4309 cycle pastes from unnamed register
when user set clipboad to unnamed/unnamedplus yanbkring tried to cycle pases using clipboard register instead of unnamed.
2026-08-21 09:12:53 +02:00
1grzyb1 b7219ff413 VIM-1266 file name from percent register
Implement % register that returns current file name
2026-08-21 08:49:52 +02:00
1grzyb1 c2967fa78b VIM-1180 Pass eof to external command
Without that commands like `!sort` would never finish as they waited for user input. This is same way as neovim does. We also don;t support interactive commands
2026-08-20 10:08:27 +02: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
1grzyb1 c947c2d55f VIM-2168 inherit jumplist in every new window, keep focused list on collapse
A new window inherits the list of the window it was created from whichever buffer ends up in it, and copyJumps refreshes the recency order so that a closed window's list cannot win the one-list-per-project pick.
2026-08-19 13:30:24 +02:00
1grzyb1 66e967235d VIM-2168 document window jumps option 2026-08-19 13:30:24 +02:00
1grzyb1 7b9b921cbd VIM-2168 split mode tests for window jumps 2026-08-19 13:30:24 +02:00
1grzyb1 16e5a06979 VIM-2168 restore jumps saved from disk 2026-08-19 13:30:24 +02:00
1grzyb1 0f8eea1920 VIM-2168 restore jumps when switching windowjumps option 2026-08-19 13:30:24 +02:00
1grzyb1 38c6dabedd VIM-2168 copy jumplist when splitting window 2026-08-19 13:30:24 +02:00
1grzyb1 1ac974e3d1 VIM-2168 store jumps per jumpsListId instead of project
Now depending on windowjumps option we store jumplist based on window or whole project. this enables stroing diffrent jump history for each split window
2026-08-19 13:30:24 +02:00
1grzyb1 781cff8d16 VIM-2168 add windowjumps property
it will manage if jumps should be shared between windows or not
2026-08-19 13:30:24 +02:00
1grzyb1 99ded931c9 VIM-2168 test cases for jump history per project 2026-08-19 13:30:24 +02:00
1grzyb1 a9d5bae98e VIM-934 support for wildmenu option
We had wildmenu as default behaviour but no it is possible to disable it also
2026-08-19 13:27:33 +02:00
IdeaVim Bot 7df50e4f0b Preparation to 2.46.0 release 2026-08-18 07:31:12 +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
1grzyb1 e66a3915a9 Put caret at end of line when pasting without reformat 2026-08-17 11:28:27 +02:00
1grzyb1 5415080cf0 Restore mode from normal command after autocmd 2026-08-17 11:28:27 +02:00
1grzyb1 e53149ab16 VIM-2536 NL characters in commands
normal lost the newline and everything after it when the argument came from an :execute string (:exe "normal! iX\<CR>Y" typed only X), because \<CR> was parsed into a line feed instead of a carriage return and a line feed ends the ex command line; fixed by making \<CR> produce 0x0D, recognising <NL> as the <C-J> key, and having :execute hand line feeds to the parser as carriage returns for commands like :normal that take the rest of the line.
2026-08-17 10:12:14 +02:00
1grzyb1 9ab5026633 VIM-2370 respect none reformat option when pasting 2026-08-17 09:16:01 +02: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
1grzyb1 1e3fa122f2 VIM-2074 Fix backspace in replace mode
We didn't take into account appended and overwrote charachters in replace mode. Due to that we didn't correctly restored charachtes when backspacing
2026-08-14 12:56:20 +02: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
1grzyb1 dd4d9b5a8a publish whatsnew pages on gh pages 2026-08-13 10:16:34 +02:00
1grzyb1 4e86a2d10b VIM-4307 Don't use table everywhere in settings tables
With VimEverywhere enabled, TableEverywhere left its navigation shortcuts registered on a table while focus moved into that table's own cell editor, so shifted keys such as `G` and `$` were consumed as selectLastRow/selectLastColumn instead of being typed (e.g. the Name field of the Environment Variables dialog) - the dispatcher now stands down whenever a cell editor is active, and leaving a table always unregisters the shortcuts and restores `autoStartsEdit`
2026-08-13 09:53:45 +02:00
1grzyb1 37ae9735e9 VIM-1565 implement stopinsert command
stopinsert leaves insert mode. usefull in addition to autocmd
2026-08-13 08:42:19 +02: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
dependabot[bot] 017254780d Bump org.junit.jupiter:junit-jupiter from 6.1.2 to 6.1.3
Bumps [org.junit.jupiter:junit-jupiter](https://github.com/junit-team/junit-framework) from 6.1.2 to 6.1.3.
- [Release notes](https://github.com/junit-team/junit-framework/releases)
- [Commits](https://github.com/junit-team/junit-framework/compare/r6.1.2...r6.1.3)

---
updated-dependencies:
- dependency-name: org.junit.jupiter:junit-jupiter
  dependency-version: 6.1.3
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-08-12 15:41:24 +00:00
dependabot[bot] 702d9bb519 Bump com.dorongold.task-tree from 4.0.1 to 4.0.2
Bumps com.dorongold.task-tree from 4.0.1 to 4.0.2.

---
updated-dependencies:
- dependency-name: com.dorongold.task-tree
  dependency-version: 4.0.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-08-12 15:41:06 +00:00
dependabot[bot] c66b380c4d Bump org.junit:junit-bom from 6.1.2 to 6.1.3
Bumps [org.junit:junit-bom](https://github.com/junit-team/junit-framework) from 6.1.2 to 6.1.3.
- [Release notes](https://github.com/junit-team/junit-framework/releases)
- [Commits](https://github.com/junit-team/junit-framework/compare/r6.1.2...r6.1.3)

---
updated-dependencies:
- dependency-name: org.junit:junit-bom
  dependency-version: 6.1.3
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-08-12 15:41:04 +00:00
dependabot[bot] 240e1367e5 Bump com.google.devtools.ksp:symbol-processing-api from 2.3.10 to 2.3.11
Bumps [com.google.devtools.ksp:symbol-processing-api](https://github.com/google/ksp) from 2.3.10 to 2.3.11.
- [Release notes](https://github.com/google/ksp/releases)
- [Commits](https://github.com/google/ksp/compare/2.3.10...2.3.11)

---
updated-dependencies:
- dependency-name: com.google.devtools.ksp:symbol-processing-api
  dependency-version: 2.3.11
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-08-12 15:40:12 +00:00
grzybek 71f7e2d3ea VIM-4272 Don't update systemSelection during indent
when we selected text during indentation after paste it selected part of text which in combination with unnamed resulted in duplicated/broken paste
2026-08-12 10:01:52 +02:00