Commit Graph
2222 Commits
Author SHA1 Message Date
1grzyb1 79e2e10993 Trace is mouse dragging in global state
During mouse dragging there could be a case where during drag the editor was closed which resulted in an invalid state in ListenerSuppressor with not removed caretListenerSuppressor. More roboust approach is to track mouseDragging as state.
2026-07-20 10:12:58 +02:00
AndDe-gourav a1c10464ac fixing the restoreCursorAfterInsertNormal
# Conflicts:
#	vim-engine/src/main/kotlin/com/maddyhome/idea/vim/state/VimStateMachine.kt
2026-07-20 08:21:12 +02:00
AndDe-gourav d4c9e929ca fixing the restoreCursorAfterInsertNormal 2026-07-20 08:21:12 +02:00
1grzyb1 5d51c71a68 VIM-989 Implement write command with file argument
Now when argument is passed to `:w {arg}` content will be saved to newly created file
2026-07-16 08:30:23 +02:00
dependabot[bot] 28d6927894 Bump org.junit.vintage:junit-vintage-engine from 6.1.1 to 6.1.2
Bumps [org.junit.vintage:junit-vintage-engine](https://github.com/junit-team/junit-framework) from 6.1.1 to 6.1.2.
- [Release notes](https://github.com/junit-team/junit-framework/releases)
- [Commits](https://github.com/junit-team/junit-framework/compare/r6.1.1...r6.1.2)

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

Signed-off-by: dependabot[bot] <support@github.com>
2026-07-15 15:40:45 +00:00
1grzyb1 6b1cd5ef9b VIM-1341 support netrw_browsex_viewer variable
use netrw_browsex_viewer to customize program to open url
2026-07-15 11:35:12 +02:00
1grzyb1 9ed0cb6509 VIM-1341 Open url with gx command
Implement gx command to open url using OS native process like real vim does which allows to open both brower urls or any other applications
2026-07-15 11:35:12 +02:00
1grzyb1 f9cb194a1c VIM-4273 recalculate next search offset after substitution 2026-07-15 09:42:21 +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
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