Commit Graph
2222 Commits
Author SHA1 Message Date
Matt Ellis 2dd76658c1 Extract tracking current history from command line 2026-05-19 12:51:26 +03:00
Matt Ellis c81850982f Do not save empty command line as history 2026-05-19 12:51:26 +03:00
Matt Ellis 288e885dd9 Encapsulate HistoryBlock and make internal 2026-05-19 12:51:26 +03:00
Matt Ellis d5e917c5c6 Add histdel() history function 2026-05-19 12:51:26 +03:00
Matt Ellis 86aa74550a Add histnr() history function 2026-05-19 12:51:26 +03:00
Matt Ellis 97da421eec Add histget() history function 2026-05-19 12:51:26 +03:00
Matt Ellis 03a44d9855 Add histadd() history function 2026-05-19 12:51:26 +03:00
AndDe-gourav 872ded4bb5 change isChange to true 2026-05-18 11:49:13 +03:00
Matt Ellis ceabada9b1 Add digraph_setlist() function 2026-05-18 11:42:47 +03:00
Matt Ellis bd87ba8d77 Add digraph_set() function 2026-05-18 11:42:47 +03:00
Matt Ellis 9acc676c5c Add digraph_getlist() function 2026-05-18 11:42:47 +03:00
Matt Ellis 7fda1f1772 Add digraph_get() function 2026-05-18 11:42:47 +03:00
Matt Ellis 75fe116e3e Add mapset() mapping function 2026-05-15 17:25:58 +03:00
Matt Ellis 6039227534 Add hasmapto() mapping function 2026-05-15 17:25:58 +03:00
Matt Ellis 80d924e718 Update doc comments
Also makes an interface function into a protected base class function
2026-05-15 17:25:58 +03:00
Matt Ellis bce624cb73 Add maplist() mapping function 2026-05-15 17:25:58 +03:00
Matt Ellis a9f6a4d608 Move showKeyMapping to map command implementation 2026-05-15 17:25:58 +03:00
Matt Ellis d8b6d0a104 Push function to get all mappings to vim-engine 2026-05-15 17:25:58 +03:00
Matt Ellis f06dd610f4 Introduce getMappingInfo helper function 2026-05-15 17:25:58 +03:00
Matt Ellis 489c2c1fc9 Remove unnecessary MappingInfoLayer 2026-05-15 17:25:58 +03:00
Matt Ellis da9274fcf3 Remove unnecessary KeyMappingLayer abstraction
While it does give us a read-only abstraction over KeyMapping, it means we have two methods that do the same thing - getKeyMapping and getKeyMappingLayer without a clear indication of what the difference is. Furthermore, external usages only use getKeyMapping, and the layer isn't used at all.
2026-05-15 17:25:58 +03:00
Matt Ellis 782a163dde Simplify use of keys helper function 2026-05-15 17:25:58 +03:00
Matt Ellis c608161b0d Add mapcheck() mapping function 2026-05-15 17:25:58 +03:00
Matt Ellis 3f9f6adbaa Fix bug fetching maps by prefix
If there were no matching prefixes, it would return all nodes. And if the prefix was an actual match, it would return it twice
2026-05-15 17:25:58 +03:00
Matt Ellis d358c80453 Remove some non-Vim mapping modes 2026-05-15 17:25:58 +03:00
Matt Ellis 64d26a348f Remove unnecessary JvmField annotations 2026-05-15 17:25:58 +03:00
Matt Ellis 00f1021f25 Add maparg() mapping function 2026-05-15 17:25:58 +03:00
grzybek db55089f95 Fix(VIM-4231): pasting from clipboard in visual selection 2026-05-15 09:06:32 +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
Matt Ellis 69344812c6 Introduce function to check for mappings 2026-05-15 08:31:53 +00:00
grzybek fafbb78a0f Fix(VIM-4184): mirror PRIMARY on Wayland via xclip/wl-copy
JBR's WLClipboard takes Wayland-side primary ownership and Mutter's
Wayland→X11 bridge is racy under rapid visual selection, so external
readers (xclip, middle-click-paste) see stale content. Route PRIMARY
writes through xclip (preferred) or wl-copy (fallback) on Wayland,
deferred past IntelliJ's CaretModelImpl.updateSystemSelection
post-yank clobber. AWT path unchanged on X11/macOS/Windows.
2026-05-14 08:15:49 +00:00
1grzyb1 ba4b51e33e VIM-4229 Remove trailing spaces in edit command 2026-05-14 08:12:11 +00:00
1grzyb1 196cbdb6c6 VIM-4223 proper hide command abbreviation
with `hi[de]` users that had hi in their ideavimrc expected it to change highlight, but it was closing editor instead
2026-05-14 06:55:05 +00:00
1grzyb1 0cfe720fca VIM-4223 proper hide command abbreviation
with `hi[de]` users that had hi in their ideavimrc expected it to change highlight, but it was closing editor instead
2026-05-14 06:55:05 +00:00
1grzyb1 5d6622b77e Use only jbr cache repository 2026-05-13 09:48:47 +00:00
1grzyb1 2b4a4eeff4 Add jbr cache repo per module 2026-05-13 08:45:11 +00:00
1grzyb1 4225b32f55 Update java to version 25 2026-05-12 11:34:21 +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
Alex Plate c17bb06f8a Remove trailing whitespace in Graphemes.kt 2026-05-08 11:41:57 +03:00
1grzyb1 5bb18a2cb7 feat(VIM-519): cycle through recent edits with g; and g,
Implements g; and g, to walk through the per-buffer change list, mirroring Neovim's b_changelist semantics. The list is fed by the backend's RecentPlacesListener over an RPC topic (the same pattern as the existing jump service), so it works in both monolith and split mode.
2026-05-06 08:37:14 +02:00
1grzyb1 7d6315af2d feat(VIM-258): tab command completion
Add command completion on tab press in ex panel. Now we support both file name completions and command completions
2026-05-05 10:24:14 +02:00
1grzyb1 e8c12a5526 fix(VIM-4224): respect e flag in search patterns 2026-05-04 12:33:56 +02:00
1grzyb1 4fc912eee7 feat(VIM-3975): support vim mode() function 2026-05-04 12:18:02 +02:00
1grzyb1 093244c07d FIX(VIM-4221) Don't make angry sounds on search
When incsearch was true, we made the error sound on ech keypress if regex was invalid
2026-04-29 09:15:43 +02:00
Alex Plate 705ce474f1 Fix(VIM-2974): Delete VimEnterHandler.kt
Step 4/N of removing the octopus handler. Deletes the file that held
all octopus infrastructure (both abstract base and the concrete
handlers). Its XML registrations were removed in step 3, so the classes
had been unreachable code.

- Delete VimEnterHandler.kt entirely: OctopusHandler, VimKeyHandler,
  VimEnterHandler, VimEscHandler, VimEscForRiderHandler,
  VimEscLoggerHandler, VimEnterLoggerHandler, CaretShapeEnterEditorHandler,
  StartNewLineDetector, StartNewLineBeforeCurrentDetector,
  isOctopusEnabled(KeyStroke, Editor), enableOctopus, commandContinuation.
- ChangeGroup.processEnter(editor, caret, context): delete. It existed
  only to continue execution into the next octopus EditorActionHandler
  via commandContinuation when inside the octopus chain. With octopus
  gone, InsertEnterAction and SelectEnterAction call the editor-level
  processEnter(editor, context) which dispatches through the IJ action
  system as usual.
- VimChangeGroup: drop the per-caret processEnter declaration.
- InsertEnterActionTest: drop the @BeforeEach that set up three octopus
  handler variants via ExtensionTestUtil.maskExtensions (existed to test
  around IDEA-300030). Convert @RepeatedTest(3) to @Test - there are no
  longer three configurations to exercise.
2026-04-24 17:41:48 +03:00
Alex Plate 852ea2feb0 Fix(VIM-2974): Delete isOctopusEnabled() and octopus-support files
Step 2/N of removing the octopus handler. Removes the flag and three
support files whose entire purpose was supporting the octopus migration.

- VimApplication interface: drop isOctopusEnabled() method.
- IjVimApplication: drop the override.
- VimEnterHandler.enableOctopus: now a const false, decoupled from the
  deleted interface method. Octopus handler classes (still in this file)
  continue to compile but early-return and pass through to nextHandler.
- Delete KeymapChecker.kt: checked that the keymap had Esc bound to
  ACTION_EDITOR_ESCAPE because octopus owned EditorEscape. No longer
  meaningful with VimShortcutKeyAction handling Esc directly.
- Delete CopilotKeymapCorrector.kt (VIM-3206): removed Copilot's Esc
  shortcut because octopus intercepted EditorEscape. Rider / CLion Nova /
  JBClient have run with octopus disabled for 14+ months without needing
  this workaround.
- Delete EditorHandlersChainLogger.kt: debug logger for the
  editorActionHandler chain, useful only during the octopus era.
- NotificationService / VimNotifications: drop notifyKeymapIssues (only
  caller was KeymapChecker).
- VimListenerManager: drop correctorRequester / keyCheckRequests kicks
  from turnOn / turnOff (flows lived inside the deleted files).
- IdeaVIM.ideavim-frontend.xml: remove postStartupActivity entries for
  the three deleted classes and their keymap listener registrations.

Octopus handler classes in VimEnterHandler.kt and their XML registrations
are still present but now fully unreachable at runtime. They are removed
in subsequent steps.
2026-04-24 17:41:47 +03:00
Alex Plate 3dc0ebd2d1 Fix(VIM-2974): Collapse callers of isOctopusEnabled
Step 1/N of removing the octopus handler. With isOctopusEnabled()
hardcoded to false, the octopus branches in callers are unreachable.
This commit removes them, keeping only the non-octopus path.

- VimShortcutKeyAction: remove the early-return that skipped Enter/Esc
  when octopus was active.
- KeyGroup / VimKeyGroupBase: always register Enter/Esc in
  requiredShortcutKeys (the filter existed only to hand them to octopus).
- InsertEnterAction / SelectEnterAction: drop the forEachNativeCaret
  branch that worked around IDEA-300030 inside the octopus chain; the
  non-octopus processEnter(editor, context) call handles all carets.
- VimTestCase: dispatch Enter/Esc like any other key via
  VimShortcutKeyAction.
- InsertEnterActionTest: remove per-repetition extension masking that
  set up different octopus handler variants.

Octopus handler classes and their XML registrations are still present
but now unused; they are removed in subsequent steps.
2026-04-24 17:41:47 +03:00
1grzyb1 02b4b4969a FIX(VIM-4184): clipboad=unnamed paste bugs on wayland
Use in-memory register when PRIMARY is unavailable due to wayland focus loss and bypass the live PRIMARY read during cisual paste to avoid automatic selection tracking overwriiting the yanked text
2026-04-24 16:03:49 +02:00
Alex PlateandClaude Opus 4.7 45ce2143fe Fix(VIM-4115): NPE in CommandKeyConsumer after plugin disable/enable
Plugin deactivate called fullReset() on the ex panel but left editor
mode and KeyHandlerState.commandLineCommandBuilder untouched. Since
KeyHandler is a singleton, the stale CMD_LINE builder survived a
plugin disable/enable cycle and matched LeaveCommandLineAction on the
next Esc, NPEing when the (already-deactivated) panel was unwrapped.

Call close() before fullReset() so mode, the key handler state, and
the panel are cleared together. Also replace the `!!` at the crash
site with a null-safe branch that logs VIM-4115 and clears the stale
builder, so any other producer of the same desync surfaces via a
Diogen report instead of a crash.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-24 16:07:48 +03:00
1grzyb1 4dec9a95a4 VIM-186 Support nested comments 2026-04-23 13:57:28 +02:00