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

5765 Commits

Author SHA1 Message Date
1grzyb1
6ecfb3e92e VIM-4120 Add missing VimHintsExtension class 2026-02-11 08:51:10 +01:00
Filipp Vakhitov
14e6759121 Allow plugin writers to provide their own VimCommandLineService 2026-02-11 09:34:34 +02:00
1grzyb1
ce6115ee90 VIM-3948 Fix set command tests after removing vimhints option 2026-02-10 12:02:34 +01:00
1grzyb1
f1355c3305 VIM-3948 Enable vimhints through 'Plug'
As vimhints are not part of neovim, it makes more sense to keep it as a plugin, not as an option
2026-02-10 12:02:34 +01:00
1grzyb1
3ffd680650 VIM-3948 don't traverse not visible components
We don't want to apply labels for components that are inside not visible components. For example, setting has `SettingsEditor` with multiple `SettingWrapper` for each selected tab but only one is visible at one time. So we don't want to apply labels on not visible tabs
2026-02-10 09:06:06 +01:00
1grzyb1
1588a9e15b VIM-3948 Traverse vertical panes in ConfigurableEditor
Vertical planes in settings windows has a lot of elements that we may want to click using hints so we traverse inside them
2026-02-10 08:08:14 +01:00
1grzyb1
72f0ef1602 VIM-3948 Traverse inside horizontal panes
Trees are skipped as they contain a lot of elements and would generate too many hints.
A similar situation is with vertical scroll panes (e.g. editors). but not horizontal.
 This is a heuristic that I observed that horizontal scroll doesn't have many elements and doesn't have any keyboard navigation.
2026-02-10 08:08:14 +01:00
1grzyb1
6fc6e1bfc7 VIM-3948 Handle status bar items as individual components
We are skipping Tree and scroll panes inside status bar as they would be a performance problem.
Exception is when we are inside the status bar where we want to apply hints on individual components.
2026-02-10 08:08:14 +01:00
1grzyb1
4256d17282 VIM-3948 Don't apply hints on each commit
To achieve that for each scroll pane we apply single hint and navigation inside is handled by keys designed for that panel
2026-02-09 11:58:05 +01:00
1grzyb1
c1ce2d57fd VIM-3948 make hint test skipped in headless env 2026-02-09 11:37:13 +01:00
1grzyb1
e4806ef6d6 VIM-3948 position label based only on visible part of Tree
When Tree was expanded and we positioned label on center it could not be rendered as center of tree was outside of view. To fix that we calculate label position based only on visible part of Tree.
2026-02-09 11:37:13 +01:00
1grzyb1
feed3a0d82 VIM-3948 Simplify hint generation code 2026-02-09 11:37:13 +01:00
1grzyb1
6ab9deceb3 VIM-3948 Add tests for Hint generation 2026-02-09 11:37:13 +01:00
1grzyb1
402afae110 VIM-3948 Add support for ContentTabLabel in hint generation 2026-02-09 08:46:35 +01:00
1grzyb1
30953c8ac4 VIM-3948 Don't crop hint labels
Make sure that labels are not cropped and are inside ide window
2026-02-09 08:25:22 +01:00
1grzyb1
cf50dddcc1 VIM-3948 Skip scroll panes to avoid duplicated labels on editors 2026-02-09 08:25:22 +01:00
1grzyb1
55ec7c2aee VIM-3948 Add support for JScrollPane and center-aligned hint labels in HintGenerator
For Editor windows it makes more sense to show labels centered
2026-02-09 08:25:22 +01:00
1grzyb1
57df4d6f16 VIM-3948 Fix applying Labels on VimModeWidget
By default, IntelliJ disables actions while a modal dialog is open.
We override isEnabledInModalContext flag so hints can target components inside popups and dialogs (e.g., IdeaVim settings).
2026-02-06 13:59:33 +01:00
1grzyb1
2566e2a222 VIM-4218 Add RoundedHintLabel for improved hint rendering 2026-02-06 14:38:06 +02:00
1grzyb1
6aa1a68c9d VIM-3948 Fix nullability issue in hint generation 2026-02-06 13:54:22 +02:00
1grzyb1
4b3271d4f9 VIM-3948 document vim hints 2026-02-06 13:51:54 +02:00
1grzyb1
0f2ce4bcc5 VIM-4125 Update shortcut for Toggle Hints action to ctrl + BACK_SLASH 2026-02-05 13:42:22 +02:00
1grzyb1
f4c84607cb VIM-3948 Improve visibility checks for hint generation 2026-02-03 11:15:34 +02:00
1grzyb1
3f43cf6aa4 VIM-4120 Fix isAtEnd offset logic 2026-02-03 11:09:38 +02:00
1grzyb1
fa6d4a39a9 VIM-4120 Remove ExOutputModel and transition to a unified OutputPanel 2026-02-03 11:09:38 +02:00
1grzyb1
d9a66e9b86 VIM-4120 Remove test-specific mode handling 2026-02-03 11:09:38 +02:00
1grzyb1
322d961085 VIM-1595 Add support for the :read! {cmd} command 2026-02-03 11:06:40 +02:00
1grzyb1
0a7ad9e8f1 VIM-1595 Add support for the :read command 2026-02-03 11:06:40 +02:00
1grzyb1
0c3a2eaada VIM-4084 Ensure insert mode respects file's writable state 2026-01-30 11:23:32 +02:00
1grzyb1
5a51b69174 Fix flaky TemplateTest by adjusting escape sequence timing
Fix flaky inline rename test
2026-01-30 11:19:45 +02:00
1grzyb1
ca298b1172 VIM-566 Skip fold-level application during initialization 2026-01-28 19:16:13 +02:00
1grzyb1
2e51a214b7 Make generated JSON formatting consistent with IntelliJ 2026-01-27 16:27:49 +01:00
1grzyb1
9236b4cc72 VIM-566 Implement zf create fold action 2026-01-27 13:02:26 +02:00
1grzyb1
9257ba1741 VIM-566 Update tests to include foldlevel in option outputs 2026-01-27 11:25:01 +02:00
1grzyb1
0c21dcb132 VIM-566 add set foldelevel command support 2026-01-27 11:25:01 +02:00
1grzyb1
729cb7b2ad VIM-566 Add documentation to fold-related methods 2026-01-23 16:54:51 +02:00
1grzyb1
327de9772d VIM-566 Improve fold depth calculation readability 2026-01-23 16:54:51 +02:00
1grzyb1
98ebaabf10 VIM-566 improve performance by batch apply fold level 2026-01-23 16:54:51 +02:00
1grzyb1
c0d3624f3c VIM-566 Add zr folding support 2026-01-23 16:54:51 +02:00
Grzybek
0264e1cd75 VIM-566 Add zA toggle folding support 2026-01-21 16:48:36 +02:00
Alex Plate
86bf54d84c Migrate argtextobj extension to new textObjects API
Replace VimExtensionFacade.putExtensionHandlerMapping with the new
api.textObjects { register(...) } pattern. This simplifies the
extension by removing the ArgumentHandler class and its inner
ArgumentTextObjectHandler.

Key changes:
- Add LineInfoProvider interface to decouple ArgBoundsFinder from Document
- Create findArgumentRange extension function on VimApi
- Use api.textObjects { } for registering ia/aa text objects
- Remove unused imports and old handler code

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-16 18:28:45 +02:00
Alex Plate
f49d36fa02 Add comprehensive tests for argtextobj extension
Add tests covering: change outer argument, single argument handling,
whitespace handling, cursor positioning, nested function calls,
quoted strings, multiline arguments, and various bracket types.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-16 15:54:00 +02:00
Alex Plate
eed102d035 Convert VimArgTextObjExtension to kotlin 2026-01-16 15:48:33 +02:00
Alex Plate
38f428dec3 Rename .java to .kt 2026-01-16 15:48:32 +02:00
Claude
381dc2684b Remove unused SkipNeovimReason.CMD
This enum value had no documentation, a vague name, and was not used
anywhere in the codebase.
2026-01-13 06:43:22 +02:00
Alex Plate
26154061f7 Add clear output when Neovim testing is enabled
Print "NEOVIM TESTING ENABLED" message when running tests with -Dnvim
flag so AI can verify Neovim testing is actually active.

Also fix skill documentation to use correct -Dnvim flag.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-12 14:04:43 +02:00
Alex Plate
fa2b54bc2d Deprecate SkipNeovimReason.UNCLEAR
Similar to DIFFERENT, UNCLEAR is too vague and should be replaced
with a more specific reason after investigation.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-12 14:00:59 +02:00
Alex Plate
3c967d1f03 Fix Neovim test annotations in SearchGroupTest
- Change `test negative lookbehind regression` to use IDEAVIM_API_USED
  (test uses internal search() helper that calls VimPlugin API directly)
- Remove outdated TestWithoutNeovim annotations from 5 tests that now
  pass with Neovim: smartcase/ignorecase search tests

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-12 13:55:04 +02:00
Alex Plate
47215cfda1 Deprecate SkipNeovimReason.DIFFERENT in favor of more specific reasons
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-12 13:55:04 +02:00
Alex Plate
20f86bc0b4 Add explanations for disabled tests in MultipleCaretsTest
Document why each disabled test is disabled:
- testCopyVisualText: CopyTextCommand processes carets sequentially,
  causing document shifts that corrupt subsequent caret operations
- testPutVisualLines: Multi-caret :put with visual selection only
  processes one caret (also fixed invokeAndWait wrapper)
- testMoveText* tests: MoveTextCommand explicitly throws exception
  for multiple carets

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-12 13:55:04 +02:00