Xinhe Wang and Alex Plãte
f25b9fd9bf
Fix uppercase keys in NERDTree
2025-10-02 17:12:23 +03:00
Xinhe Wang and Alex Plãte
4e59af278b
Avoid generating hints for another unfocused window
2025-09-10 11:36:04 +03:00
Xinhe Wang and Alex Plãte
04273d005e
Skip the tree nodes when generating hints to improve performance
2025-09-09 12:53:26 +03:00
Xinhe Wang and Alex Plãte
463a9e7ceb
Generate hints for visible components whose parent is not visible
2025-09-09 12:53:26 +03:00
Xinhe Wang and Alex Plãte
aab1999782
Do not preserve previous hints if impossible
2025-09-09 12:53:26 +03:00
Xinhe Wang and Alex Plãte
733470f7b4
Allow repeated characters in hints
2025-09-09 12:53:26 +03:00
Xinhe Wang and Alex Plãte
0d38ac8d6f
Allow focusing components with hints
2025-09-05 16:26:03 +03:00
Xinhe Wang and Alex Plãte
fd1f762bc2
Adjust the hint color to make it clearer
2025-09-05 16:26:03 +03:00
Xinhe Wang and Alex Plãte
cfdc3b7dc3
Display only hints prefixed by the currently entered letters
2025-09-05 16:26:03 +03:00
Xinhe Wang and Alex Plãte
eaaab34434
Bring clicked component highlighting back
...
The highlight will remain active for a fixed period of time.
2025-09-05 16:26:03 +03:00
Xinhe Wang and Alex Plãte
80f52d70c8
Encapsulate ShortcutDispatcher for use in NERDTree
2025-09-05 16:26:03 +03:00
Xinhe Wang and Alex Plãte
ff13845b57
Use custom key listener instead of ListPopup to select hints
...
As a result, the user no longer needs to press ENTER to action.
Note that component highlighting is temporarily removed.
2025-09-05 16:26:03 +03:00
Xinhe Wang and Alex Plãte
b349bb74db
Encapsulate hints generation
2025-09-05 16:26:03 +03:00
Xinhe Wang and Alex Plãte
90cc7de761
Preserve previous hints if possible
2025-09-05 16:26:03 +03:00
Xinhe Wang and Alex Plãte
d674d33735
Basic hint generation (permutation)
2025-09-05 16:26:03 +03:00
Xinhe Wang and Alex Plãte
c4713ed89d
Highlight the current selected component
2025-09-05 16:26:03 +03:00
Xinhe Wang and Alex Plãte
337fc91261
Traverse the accessible tree instead to support Skia components
2025-09-05 16:26:03 +03:00
Xinhe Wang and Alex Plãte
bd8dc5a74f
Show a popup instead of a dialog to select the component
2025-09-05 16:26:03 +03:00
Xinhe Wang and Alex Plãte
9ae2bfea8d
Select elements to click
2025-09-05 16:26:03 +03:00
Xinhe Wang and Alex Plãte
19ef7588f7
Create class Hint
2025-09-05 16:26:03 +03:00
Xinhe Wang and Alex Plãte
248111bd1c
Change ToggleOptionAction to DumbAwareToggleAction
2025-09-05 16:26:03 +03:00
Xinhe Wang and Alex Plãte
76b0f13804
Use accessibleContext for checking clickable elements
2025-09-05 16:26:03 +03:00
Xinhe Wang and Alex Plãte
7ac9ce78ca
Toggle hints with ToggleOptionAction
...
However, this does not work in Dumb Mode
2025-09-05 16:26:03 +03:00
Xinhe Wang and Alex Plãte
b304905b35
Simplify KeyStrokeTrie.getData by delegating to getTrieNode
2025-09-05 13:14:34 +03:00
Xinhe Wang and Alex Plãte
3d19696f3b
Fix casting error in KeyStrokeTrie.getEntries
...
Return an empty sequence if the prefix node is not found in `KeyStrokeTrie`.
Passing a non-existent prefix previously would result in a casting error.
2025-09-05 13:14:34 +03:00
Xinhe Wang and Xinhe Wang
7f107fcc21
Remove unused NerdTree ProjectViewListener from plugin configuration
...
The ProjectViewListener was already removed in 175bae51
2025-09-02 15:06:01 +01:00
Xinhe Wang and Alex Plãte
511da14b83
Support disabling extended NERDTree without restarting
2025-08-29 17:53:46 +03:00
Xinhe Wang and Alex Plãte
636fe0a76f
Make extended NERDTree a separate VimExtension
2025-08-29 17:53:46 +03:00
Xinhe Wang and Alex Plãte
2b5342a935
Add support for ActivateNode in NERDTree Everywhere
2025-08-29 17:53:46 +03:00
Xinhe Wang and Alex Plãte
758aaf276a
Extend NERDTree support to Tree components other than Project
2025-08-29 17:53:46 +03:00
Xinhe Wang and Xinhe Wang
b593d079c4
Correct the behavior of NERDTree-P to jump to the root node
...
It cannot be guaranteed that the tree has a single visible root.
2025-08-26 14:04:15 +01:00
Xinhe Wang and 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 and 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 and 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 and 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 and 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
Xinhe Wang and Alex Plãte
629a0f7aab
Indicate error when an unrecognized key sequence is entered in NERDTree
2025-08-22 14:16:31 +03:00
Xinhe Wang and Alex Plãte
64033078b2
Use vimLogger instead in NerdTree
2025-07-29 10:43:43 +03:00
Xinhe Wang and Alex Plãte
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 and Alex Plãte
2e55cc1af8
Fix(VIM-3437): correct the behavior of NERDTree-X
2025-07-29 10:43:43 +03:00
Xinhe Wang and Alex Plãte
33f04869bf
Fix(VIM-3985): correct the behavior of NERDTree-x
2025-07-29 10:43:43 +03:00
Xinhe Wang and Alex Plãte
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 and Alex Plãte
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 and Alex Plãte
b3fd205148
Extract dispatcher logic from NerdTree into AbstractDispatcher
2025-07-29 10:43:43 +03:00
Xinhe Wang and Alex Plãte
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 and Alex Plãte
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
Xinhe Wang and Alex Plãte
353603b546
Fix(VIM-3266): Set FileSaveCloseAction to OTHER_SELF_SYNCHRONIZED
2025-07-07 10:55:53 +03:00
Xinhe Wang and Alex Plãte
2f7f0dcacb
Fix(VIM-3044): correct the behavior of I in (linewise) Visual mode
...
For visual selections spanning multiple lines, keep caret position
if it's on the first line. Otherwise move the caret to the start of
the first selected line.
2025-07-07 10:55:30 +03:00
Xinhe Wang and Alex Plãte
af9023af4b
Rename insertBeforeCursor and insertAfterCursor helpers
...
The terminology used in IntelliJ is "caret".
2025-07-07 10:55:30 +03:00
Xinhe Wang and Alex Plãte
c393c902b2
Fix(VIM-2375): do not save file with ZQ
...
ZQ is defined to `Quit without checking for changes (same as ":q!").`
2025-07-04 14:26:56 +03:00
Xinhe Wang and Alex Plãte
c355cb7ed7
Make VimChangeGroup::changeCaseMotion not accept non-Motion argument
...
Error is logged if `ChangeCaseMotion` actions receive non-`Motion` args
2025-07-03 17:25:38 +03:00
Xinhe Wang and Alex Plãte
0803a1c195
Fix(VIM-2413): correct the range of line-wise case change commands
...
The start of the range is the leftmost non-whitespace character
OR the current position, whichever is closer to the left.
2025-07-03 17:25:38 +03:00
Xinhe Wang and Alex Plãte
5208412b46
Refine Argument.Motion::isLineWiseMotion and VimMotionGroupBase::getMotionRange
...
This does not change any actual behavior.
2025-07-03 17:25:38 +03:00
Xinhe Wang and Alex Plãte
2377408028
Fix(VIM-2142): support gU and gu in VISUAL mode
...
Note that this implementation assumes that the 'gU' / 'gu' command in
visual mode is equivalent to 'U' / 'u'. While 'v_gU' and 'v_gu' are not
explicitly documented in Vim help, we treat these commands as identical
based on observed behavior, without examining Vim's source code.
2025-07-02 18:56:29 +03:00