Commit Graph
10449 Commits
Author SHA1 Message Date
1grzyb1 acc614d390 Fix undo in macro replay
When undo was in macro it couldn't be replayed as it was already in single command executiion. So other commands modified editor and when undo was trying execute those commands didn't yet commit and in UndoManager in Ij there is
```
    if (document.getTextLength() != fromLength) throw new UnexpectedUndoException("Unexpected document state");

```

So we have to execute each command separately during macro execution
2026-06-25 11:21:33 +02: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
1grzyb1 9d1ebe75ea Remove --whats-new to not confuse it as new command 2026-06-25 09:34:39 +02:00
dependabot[bot] a3d1e233d0 Bump gradle-wrapper from 9.5.0 to 9.6.0
Bumps [gradle-wrapper](https://github.com/gradle/gradle) from 9.5.0 to 9.6.0.
- [Release notes](https://github.com/gradle/gradle/releases)
- [Commits](https://github.com/gradle/gradle/compare/v9.5.0...v9.6.0)

---
updated-dependencies:
- dependency-name: gradle-wrapper
  dependency-version: 9.6.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-06-24 15:41:53 +00:00
IdeaVim Bot f39e5f62eb Add wtrebella to contributors list 2026-06-24 10:02:03 +00:00
Whitaker Trebella 272f1a4670 docs: edited CONTRIBUTING.md for more clarity about the configurations and gradle commands 2026-06-24 11:28:01 +02:00
Whitaker Trebella bb18ae1a0a docs: shrank config images a bit 2026-06-24 11:28:01 +02:00
Whitaker Trebella 2b975886cb docs: updated contributing doc's configs images to match latest setup 2026-06-24 11:28:01 +02:00
Whitaker Trebella 3c79bd5bb9 docs: updated CONTRIBUTING.md to list more about the project's configurations and gradle commands 2026-06-24 11:28:01 +02:00
1grzyb1 058b28afa3 Create preview of generated whats new page 2026-06-24 11:23:17 +02:00
1grzyb1 e8df8dacde Release pipeline for updating what's new
It's two-step process
1. manual run of prepare what's new that will generate html page with blogpost about what's new
2. promote current whatsnew-tbr.html to new version in release pipeline
2026-06-24 11:23:17 +02:00
1grzyb1 004b6ea368 Show blogpost with changes on new release
When user installs new version of the IdeaVim we will show dialog that will open blogpost with changes in ideaVim
2026-06-24 11:23:17 +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
AndDe-gourav 413faec0c5 correct tests for x and D after C-o 2026-06-24 09:46:40 +02:00
AndDe-gourav 56e3d22f5d added tests for x and D after C-o 2026-06-24 09:46:40 +02:00
AndDe-gourav c2e4a452f0 add working also for x and D after C-o from insert 2026-06-24 09:46:40 +02:00
AndDe-gourav e337fa1d08 removed the unnecessary restore 2026-06-24 09:46:40 +02:00
AndDe-gourav cb7ee02f8e update code to only work when C-o is fired from the end 2026-06-24 09:46:40 +02:00
AndDe-gourav 4e34bc1119 add logic to move caret past to match vim behavior 2026-06-24 09:46:40 +02:00
AndDe-gourav 9d8f46366c added a test for fix vim 315 2026-06-24 09:46:40 +02:00
AndDe-gourav 42fc282678 normalizeOffset to prevent caret going out 2026-06-24 09:46:40 +02:00
Matt Ellis fea7c44339 Update documentation for 'langmap' related options 2026-06-24 08:40:52 +02:00
Matt Ellis 885bd1e97b Implement 'langmap' support
Fixes VIM-2283
Relates to VIM-2348
2026-06-24 08:40:52 +02:00
Matt Ellis 65cc010dc5 Add semantic source for each keystroke
Provides more details about when a keystroke should be mapped. This semantic information will be required to properly support langmap
2026-06-24 08:40:52 +02:00
Matt Ellis 5c431bc997 Remove DIGRAPH argument type
Since we now have argument types for register and mark, CHARACTER is now assumed to be a character or digraph
2026-06-24 08:40:52 +02:00
Matt Ellis ab423aeab4 Introduce mark and register semantic argument types
Mark and register should be mapped by langmap, from the user's input language to an ASCII mark/register name (not yet implemented)
2026-06-24 08:40:52 +02:00
Matt Ellis e45a8f76dc Remove fallback argument type handling
The digraph consumer is before the char argument consumer, so digraph keys will be processed first. If a key isn't a digraph key, it is ignored and the char argument consumer will process it; the digraph consumer doesn't need to set a fallback argument type and repost the key.
2026-06-24 08:40:52 +02:00
Matt Ellis f9249c4371 Add 'langremap' option, not yet applied
Also supports 'langnoremap' for backwards compatibility with Vim
2026-06-24 08:40:52 +02:00
Matt Ellis 65ebf53d34 Add 'langmap' option, not yet applied 2026-06-24 08:40:52 +02:00
Matt Ellis 732e3cf795 Extract escaped whitespace string tokenizer
Note that the behaviour is slightly different. This allows for a trailing backslash to be handled as an option value.
2026-06-24 08:40:52 +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
1grzyb1 907b437943 VIM-4253 ensure single processing escape
processing escape might be entered from multiple places at once but we don't wont to repeat it.
For example, it might be called from standard esc processing and Rider Escape lookup which results in duplicated text insertion
2026-06-23 10:11:15 +02:00
1grzyb1 5399e15528 VIM-4245 adjust caret to tamplate range
when refactor mode is set to keep we put cursor one char after the template instaed on last char in template
2026-06-23 08:49:42 +02:00
1grzyb1 0ba3bffd30 VIM-4245 Normalize caret after ij action
ij actions might leave caret on `\n` which is not allowed in normal mode and resulted in strange behavior like l moving cursor left
2026-06-23 08:49:42 +02: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
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
Matt Ellis 863c131be5 Use transferTo method instead of own copy method 2026-06-22 09:51:19 +02:00
Matt Ellis b0f721ffc2 Refresh VFS after executing shell command
Fixes VIM-4240
2026-06-22 09:51:19 +02: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
1grzyb1 22e626ad4b VIM-1082 Check for end line motion fold 2026-06-19 13:19:30 +02:00
1grzyb1 c6f787ede1 VIM-1082 properly detect line end when 2026-06-19 13:19:30 +02:00
1grzyb1 d63510c7b8 VIM-1082 folds at begining of line 2026-06-19 13:19:30 +02:00
1grzyb1 aff1d4db63 VIM-1082 delete fold only when motion covers start of region
We shouldn't mimic exactly vim here as it always remove whole line with fold region but in ij fold might be in middle of line or just end of it so we don't want to delete fold content whne we do dl in middle of line
2026-06-19 13:19:30 +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
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
IdeaVim Bot ec3301f2b9 Preparation to 2.39.0 release 2026-06-18 11:18:28 +00: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