1
0
mirror of https://github.com/chylex/IntelliJ-IdeaVim.git synced 2026-05-26 07:52:14 +02:00
Commit Graph

2151 Commits

Author SHA1 Message Date
Xinhe Wang
cfbb77f1db Fix(VIM-3981): make :set noNERDTree work
Please note that the ex-commands will still not be unregistered
2025-08-26 14:04:15 +01:00
Xinhe Wang
c6fc1046ee Extract helper functions in NerdTree.Util to the global scope
This is necessary because I would like to use `registerMappings` in
the constructor of `NerdDispatcher` where we have no access to
private methods of `NerdTree`.

Also, `callAction` is moved into `nerdtree.Mappings.Action` and
duplicated `addCommand` is removed.
2025-08-26 14:04:15 +01:00
Xinhe Wang
007d636310 Clear NERDTree's KeyStroke buffer after <ESC> is pressed
The user may have pressed `g` accidentally and wish to perform an
operation which is not prefix by `g`.

This gives the user a way to clear the keys entered previously and
matches Vim's behavior.
2025-08-26 14:04:15 +01:00
Xinhe Wang
8d2d3a21a3 Move update from NerdDispatcher to its abstract class
To make it reusable in the incoming extended NERDTree.

Note that this commit itself does not change any behavior.
2025-08-26 14:04:15 +01:00
Xinhe Wang
175bae51a1 Initiate SpeedSearch right after / is pressed in NERDTree
What we can benefit from this approach:

- User perspective

  The SpeedSearch input will pop up immediately to indicate that
  `/` has been pressed, and search text can then be entered to
  filter the tree nodes.

- Codebase perspective

  The `waitForSearch` property can be removed from the Dispatcher
  objects, and we can get rid of `ToolWindowManagerListener` and
  the concurrency issue in it. This keeps code simple and readable.

  In my previous attempt to preserve the `waitForSearch` prop, the
  Dispatcher object had to be passed to each action impl as an
  argument.
2025-08-26 14:04:15 +01:00
Matt Ellis
1a7b54d0a9 Avoid importing unnecessary helper function 2025-08-22 15:26:26 +03:00
Matt Ellis
4cc3bd2b9f Use return value of Escape action
If none of the IDE Escape handlers do anything, we get Vim's lovely beep
2025-08-22 15:26:26 +03:00
Matt Ellis
ef66a15faf Reuse existing colour when changing caret
Maintains the colour set by Next Edit Suggestions when changing mode

Fixes VIM-4010. Fixes VIM-3455
2025-08-22 15:26:26 +03:00
Matt Ellis
d8a79cb12f Use Vim actions to insert Tab
Previously, we would drop out of VimShortcutKeyAction when hitting Tab in Insert mode. This allowed Emmet to work because ExpandLiveTemplateByTabAction (one of the many actions registered for Tab) would have a chance to handle it.

Now we let Tab actions try to handle the key before Vim does, so we can let Vim handle Tab. In Insert mode, Vim now inserts the tab (or equivalent spaces) by invoking the "EditorTab" action, which is the same as the TabAction handler in the list of actions. Because Vim does this, we can now easily repeat inserting Tab without workarounds, remap `<Tab>` and `<S-Tab>` and Vim will update scroll locations after inserting the text.

Fixes VIM-2331. Fixes JetBrains/ideavim#938. Fixes JetBrains/ideavim#280
2025-08-22 15:26:26 +03:00
Matt Ellis
74a04dd235 Do not expand Live Templates in Normal mode 2025-08-22 15:26:26 +03:00
Matt Ellis
2aaf9badd5 Order IDE actions for Tab before Vim actions
Fixes VIM-4010
2025-08-22 15:26:26 +03:00
Matt Ellis
0950585e13 Fix initialising non-default colorcolumn option
Fixes VIM-3984
2025-08-22 15:25:55 +03:00
Xinhe Wang
629a0f7aab Indicate error when an unrecognized key sequence is entered in NERDTree 2025-08-22 14:16:31 +03:00
Matt Ellis
cb74ff6af2 Fix normalising visual column
Would previously normalise against the entire buffer line length rather than just the current visual line length. For short lines, this would not include inlays, and would therefore position the caret wrong when moving up/down at end of line. For long, wrapped lines, this just plain wouldn't work.

Fixes VIM-3997
2025-08-22 14:15:44 +03:00
Matt Ellis
c9ebc1c4ae Fix calculation of visual column with inlays
Was assuming caret was always on a text character visual column, but could be on an inlay.

Fixes VIM-4007
2025-08-22 14:15:44 +03:00
Alex Plate
aa539e76eb Rename RWLockLabel to VimLockLabel and other annotations
Also, clarify their usage
2025-08-22 11:22:38 +03:00
Alex Plate
2136836877 Merge all configuration files into a single plugin.xml
The way we split plugin.xml was outdated. Also, it started to show errors in highlighting, even there were no errors.
It's better to keep everything in a single file
2025-08-20 09:18:16 +03:00
Alex Plate
63e482408d Fix compilation issues 2025-08-08 18:28:52 +03:00
Alex Plate
9c9cd1b2a0 Bring back the function to set the mode, but in experimental status now 2025-08-08 14:28:01 +03:00
Alex Plate
87f5a6fab3 Remove stub classes
This solution was initially questionable. For a long time it produced nothing but more work on implementing the stubs.
2025-08-08 12:44:30 +03:00
Alex Plate
9d92ae9449 Remove the suspend from functions under the read or write actions
The suspending operations must not be performed under the read or write actions as this will lead to performance issues or freezes.

Also, the current implementation of launching coroutine under the write action is simply incorrect. The coroutine will escape the write action into another thread.
2025-08-08 12:44:30 +03:00
Alex Plate
492bd62166 Rename VimScope to VimApi and move it into a different package
`VimApi` would be a better entry point name. Also, the API term is clearer than the scope.
2025-08-08 12:44:30 +03:00
Matt Ellis
e6ed15c772 Fix command line missing due to empty colour
Fixes VIM-3993
2025-08-08 11:57:12 +03:00
Mia Vucinic
3cb5308193 fix failing tests 2025-08-01 16:16:29 +03:00
Mia Vucinic
093769ee7c add file lock to ensure exclusive access 2025-08-01 16:16:29 +03:00
Mia Vucinic
807dff45a9 add a new ReplaceWithRegister plugin implementation 2025-08-01 16:16:27 +03:00
Mia Vucinic
621969faec implement a new way for registering extensions 2025-08-01 16:16:26 +03:00
Alex Plãte
38fba69c33 Merge pull request #1246 from JetBrains/thin-api-first-draft
API for writing plugins
2025-08-01 15:43:46 +03:00
Xinhe Wang
64033078b2 Use vimLogger instead in NerdTree 2025-07-29 10:43:43 +03:00
Xinhe Wang
ddff706ac8 Avoid NERDTree getting stuck by an invalid key sequence
This is not a complete fix, but a temporary measure to prevent it
from stopping responding.
2025-07-29 10:43:43 +03:00
Xinhe Wang
2e55cc1af8 Fix(VIM-3437): correct the behavior of NERDTree-X 2025-07-29 10:43:43 +03:00
Xinhe Wang
33f04869bf Fix(VIM-3985): correct the behavior of NERDTree-x 2025-07-29 10:43:43 +03:00
Xinhe Wang
aeaceca76e Extract navigation-related NERDTree actions to make them reusable
Code is simplified in this commit but the actual behavior remains unchanged
2025-07-29 10:43:43 +03:00
Xinhe Wang
e587161169 Refactor NerdAction
Removing `project` parameter from NerdAction.Code.action makes it
possible to extend NERDTree support to all tree components other
than the Project tool window.
2025-07-29 10:43:43 +03:00
Xinhe Wang
b3fd205148 Extract dispatcher logic from NerdTree into AbstractDispatcher 2025-07-29 10:43:43 +03:00
Xinhe Wang
4558c3f5c8 Encapsulate KeyStrokeTrie in extension.nerdtree.Mappings
This avoids external manipulation of the KeyStroke set, resulting
in data inconsistency.
2025-07-29 10:43:43 +03:00
Xinhe Wang
962abda86b Convert NerdDispatcher to a light service
Since there's no need to expose the dispatcher, we can safely
convert it to a light service as suggested by DevKit.

See https://plugins.jetbrains.com/docs/intellij/plugin-services.html#light-services
2025-07-29 10:43:43 +03:00
Mia Vucinic
72accdd186 remove exception throwing from getFocusedEditor function 2025-07-28 10:26:51 +02:00
Mia Vucinic
3c32c8bbe7 rename VimHighlightingServiceImpl to IjVimHighlightingService and VimPluginServiceImpl to IjVimPluginService 2025-07-28 07:32:29 +02:00
Mia Vucinic
265e2e14e7 move thin api services from the extension package to the thinapi package 2025-07-28 07:32:29 +02:00
Mia Vucinic
55b44aab53 implement add caret and remove caret functions 2025-07-28 07:32:18 +02:00
Alex Plate
e13deb48cc Fix: Respect isIdeaVimDisabledHere flag in OctopusHandler 2025-07-25 13:13:29 +03:00
Matt Ellis
8ab7122e65 Fix issues with new islands theme
Stops the new frame background showing in the output panel, and returns the coloured background for the mode status bar widget.
2025-07-25 09:54:53 +03:00
Mia Vucinic
9d09f824df fix executeNormalWithoutMapping function 2025-07-24 08:16:23 +02:00
Mia Vucinic
359769733c return VimListenerManager.kt to previous state 2025-07-22 13:33:12 +02:00
Mia Vucinic
8bf60bcb68 add lines to VimExtension and VimExtensionRegistrar.kt 2025-07-22 13:30:53 +02:00
Mia Vucinic
96734867e5 revert VimExtension to previous state 2025-07-22 12:52:11 +02:00
Mia Vucinic
cc9a39fa6d revert VimExtensionRegistrar to previous state 2025-07-22 12:50:49 +02:00
Mia Vucinic
4d680465fb delete vim plugin base 2025-07-22 12:48:14 +02:00
Mia Vucinic
f5cf751a0a move files to appropriate packages 2025-07-22 12:31:53 +02:00