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.
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.
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.
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).
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>
Vim lists call() as part of List functions. We document it the same way so we can cross-reference, but it's not really a List function, so it's implemented with varFunctions
Fixes repeatedly calling repaint while trying to paint the caret. This is due to a combination of the modelToView translation returning a location instead of a bounding box (the width can be zero) and a check that one rectangle contains another returning false when one rectangle has a width of zero.
Also fixes the caret not redrawing properly while flashing when first shown. This is due to the width and height not being properly initialised.
Replace old ExtensionHandler/TextObjectActionHandler pattern with the
new api.textObjects {} DSL. The indentation-based text object algorithm
is preserved but now uses VimApi extension function.
- Use api.textObjects { register() } for ai, aI, ii text objects
- Replace TextRange with TextObjectRange.LineWise
- Remove IndentObject and IndentObjectHandler classes
- Reduce code from ~280 to ~188 lines
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>