acejump / AceJump

🅰️ single character search, select, and jump
https://plugins.jetbrains.com/plugin/7086-acejump
GNU General Public License v3.0
1.21k stars 91 forks source link

Support for split screen #370

Closed helmus closed 3 years ago

helmus commented 3 years ago

This would be extraordinary useful as it in fact eliminates the need to switch between tabs. Super super useful. Willing to put down a bounty of up to 200$ if anyone feels like committing to it.

helmus commented 3 years ago

@chylex any chance you would be interested in picking this up ?

chylex commented 3 years ago

Sounds interesting, I would find use for this as well. I'll give it a few hours and see how easy it would be to add multi-editor sessions, since at the moment the assumption is 1 editor = 1 session.

breandan commented 3 years ago

I started working on this feature some time ago (#144), but decided to make it into a desktop application and forked a new project. It's not what you want exactly, but should be possible to select any text visible on the screen. I agree that mutieditor/multiwindow support would be nice to support within AceJump. If you were able to hook into the IDE text rendering pipeline, you could tag menus and other text in the IDE, then click on things using the AWT Robot, but that's probably more trouble than it's worth.

chylex commented 3 years ago

A while back I opened IDEA-264270 which is about clicking IDE buttons using AceJump-style shortcuts, if a plugin could do that (+ tagging menus etc.) it'd be brilliant.

breandan commented 3 years ago

As you mentioned, platform support for these kinds of features is currently poor, but better interoperability with screen readers is an important accessibility feature for blind and visually impaired users. I believe it is possible, but would require intercepting the IDE rendering pipeline somehow to extract the visible clickable UI elements. If you can get this to work, I will double @helmus' bounty.

chylex commented 3 years ago

Progress - tagging is very broken but rendering and jumping across splitters works:

obrazek

chylex commented 3 years ago

Looking good

https://user-images.githubusercontent.com/3685160/117386477-48fab380-aee7-11eb-8be4-f6dad576e6b0.mp4

helmus commented 3 years ago

👏 👏 👏

breandan commented 3 years ago

Nice! What happens when you search for text outside the screen boundaries? Do you plan to disable auto-scrolling in split-screen sessions or do you think it makes sense to scroll multiple editors to the nearest available match? It might be a good idea to disable uppercase/shift selection when switching between editors, but allow it when jumping within the same editor. Cycling with Enter/Shift enter also becomes tricky, not sure how you're planning to handle that.

helmus commented 3 years ago

Absolutly no editor scrolling please. Visual area ONLY, this is very important for usability and performance.

breandan commented 3 years ago

Ideally, AceJump's scrolling behavior should respect the Search whole file settings option, but perhaps we can make an exception when multiple editors are open if that behavior becomes too complicated to implement or does not make sense from a usability standpoint.

chylex commented 3 years ago

Nice! What happens when you search for text outside the screen boundaries? Cycling with Enter/Shift enter also becomes tricky

At the moment I implemented it in my experimental fork, which has both of these options completely removed, I'm starting to port it to upstream master so I'll see how it works out.

It might be a good idea to disable uppercase/shift selection when switching between editors

Definitely, it technically works because each editor remembers its caret position, but it's confusing.

breandan commented 3 years ago

I have confirmed that split-screen navigation works as described and is available immediately in 3.8.0. Thanks to @chylex for this great contribution!

helmus commented 3 years ago

Hot stuff ! 🔥 @chylex please claim the bounty 💰

chylex commented 3 years ago

I set an "in progress" status on the bounty, it says I'll be able to claim it once the issue is closed. Can't remember if you have to do that or if it takes a while to update automatically.

chylex commented 3 years ago

Claimed, thanks.