Commit Graph
2264 Commits
Author SHA1 Message Date
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
1grzyb1 bc57cab3df VIM-986 Properly inserting selected text from lookup
We need a custom handler for inserting text from lookup, so we will strip the already typed prefix
2026-07-14 08:48:33 +02:00
1grzyb1 ba89349d28 VIM-986 File path completion with c-x c-f 2026-07-14 08:48:33 +02:00
1grzyb1 d2212900b6 VIM-1000 Match whole line using C-L 2026-07-14 08:48:33 +02:00
1grzyb1 b101203eec VIM-1000 Add x completion mode 2026-07-14 08:48:33 +02:00
1grzyb1 d16fd24519 VIM-750 Clean up getEffectiveMotionType 2026-07-10 13:12:51 +02:00
1grzyb1 cc326efed0 VIM-750 C-V force blockwise motion 2026-07-10 13:12:51 +02:00
1grzyb1 a67b9c5fba VIM-750 V line wise forced motion 2026-07-10 13:12:51 +02:00
1grzyb1 0c696f680d VIM-750 v forced motion
Force motin type toggle with v
2026-07-10 13:12:51 +02:00
1grzyb1 9c2d547889 VIM-3100 Autoload name preservation
To enable textobj-user we had to allow parsing function names with # inside. previousle we stripped out everything before #. so for example foo#bar#baz resulted in just baz
2026-07-09 12:46:15 +02:00
1grzyb1 7287822ada VIM-3100 Allow defining custom function handlers at runtime
This is required to add handlers in textobj-user extenstion
2026-07-09 12:46:15 +02:00
Ameer Taweel 5c6c67872c Allow Setting Custom .ideavimrc Path
Allow the user to specify a custom path in the
IDEA_VIM_CUSTOM_VIMRC environment variable.
2026-07-09 09:02:19 +02:00
dependabot[bot] c432ffd8d5 Bump org.junit.vintage:junit-vintage-engine from 6.1.0 to 6.1.1
Bumps [org.junit.vintage:junit-vintage-engine](https://github.com/junit-team/junit-framework) from 6.1.0 to 6.1.1.
- [Release notes](https://github.com/junit-team/junit-framework/releases)
- [Commits](https://github.com/junit-team/junit-framework/compare/r6.1.0...r6.1.1)

---
updated-dependencies:
- dependency-name: org.junit.vintage:junit-vintage-engine
  dependency-version: 6.1.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-07-08 15:39:55 +00:00
1grzyb1 3b86b8ac08 VIM-4270 Ignore % after initial range
When command was executed against visual selection and there was additionally % passed visual selection was ignored and command was executed against whole file.
In vim % is ignored. this commit fixes this bug and match vim behaviour
2026-07-07 09:27:41 +02:00
1grzyb1 470d5b16e0 VIM-2694 Add c_CTRL-T action during incsearch 2026-07-06 10:23:18 +02:00
1grzyb1 98337870f0 VIM-2694 Add c_CTRL-G action during incsearch 2026-07-06 10:23:18 +02:00
1grzyb1 c391b22011 VIM-2037 Implement mouse option
Cursor is moved on mouse click based on those options
2026-06-30 12:20:36 +02:00
1grzyb1 63b76e649f VIM-4256 handle empty guicursor
When guicursor is set to empty we fallback to default ij caret shape
2026-06-29 12:59:12 +02:00
1grzyb1 522244b078 VIM-1346 Implement undo all line command
"U" undoes all changes and most recently edited line. Implemented in simmilar way as nvim does by tracking snapshot of last edited line and then just restoring that snapshot.
2026-06-29 11:43:48 +02:00
1grzyb1 0e8649a201 VIM-3004 support NERDTreeQuitOnOpen option
when this variable is set to 1 after o it will close project tree
2026-06-29 09:45:20 +02:00
Matt Ellis 537fa7abca Restore plugin compatibility for Argument.Type 2026-06-26 08:46:30 +02:00
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 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 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 42fc282678 normalizeOffset to prevent caret going out 2026-06-24 09:46:40 +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
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 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 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
1grzyb1 d9773e1293 Keep VimSearchHelper plugin backward compatibility 2026-06-18 11:38:41 +02:00
1grzyb1 a042964c4e VIM-3049 Use existing C-Y handler
needed to make InsertCharacterAboveCursorAction SingleExecution as otherwise exception was thrown that accept on lookup cannot be called inside run for each
2026-06-17 12:51:51 +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 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