helix icon indicating copy to clipboard operation
helix copied to clipboard

add `]F` and friends for consistency

Open emilyyyylime opened this issue 2 years ago • 5 comments

I love the bracket menus ] and [ for goto_next_* and goto_prev_*, but I find it annoying that only diagnostics get special treatment with ]D and [D for going to the first and last diagnostic.

I've been looking around the code to see how to approach this and I may have sort of already started implementing it, so this is more of a "is anyone else working on this already?" because it feels quite obvious to me but I haven't found any open issue or PR.

Also what is a good place to ask the more experienced contributors here questions about what is the best way to implement something? The Matrix room seems to be a bit more focused on using Helix and more broadly where it's going

emilyyyylime avatar Nov 01 '22 18:11 emilyyyylime

I'm not sure the first/last variants are necessary: they can be emulated for the most part by gg]f and ge[f (except for when there are no functions/classes/diagnostics/etc).

It would be interesting to have a way to create keybinds that act as a transactions so that if any of the included motions "fail" (in this case: can't find a function/class/diagnostic/etc), the overall motion is discarded. That would enable emulating this behavior exactly without the need to introduce new commands and keybinds. Though I think this idea should await better scripting/configuration support

the-mikedavis avatar Nov 02 '22 00:11 the-mikedavis

Also what is a good place to ask the more experienced contributors here questions about what is the best way to implement something? The Matrix room seems to be a bit more focused on using Helix and more broadly where it's going

The Matrix room can be good for development discussions - it just tends to be more usage-focused at times. @archseer has considered splitting the main room into a development room and a help/usage room - so far it hasn't been so busy that this is necessary but that can be revisited

the-mikedavis avatar Nov 02 '22 01:11 the-mikedavis

@the-mikedavis

I'm not sure the first/last variants are necessary: they can be emulated for the most part by gg]f and ge[f (except for when there are no functions/classes/diagnostics/etc).

A lot of the keybinds are "unnecessary" but I know I've been personally missing ]F and it's not like it makes much sense to assign any other action to this key combo — and as mentioned before we already have this with diagnostics, so I think this makes sense even if just for consistencies sake, wouldn't you agree?

emilyyyylime avatar Nov 02 '22 12:11 emilyyyylime

The space Add newline below is the real anomaly?

David-Else avatar Nov 02 '22 20:11 David-Else

@David-Else

The space Add newline below is the real anomaly?

Yeah, that also stands out, but it's also useful so I don't mind it. I personally also mapped ]] and [[ to :bn and :bp respectively,

emilyyyylime avatar Nov 03 '22 10:11 emilyyyylime

I could see ]F/[F as useful and maybe ]T/[T but I doubt that jumping to the first/last comment, parameter or class would be practically useful. And even for ]F/[F/]T/[T, for the frequency they would probably be used I think gg]f/ge[f/gg]t/ge[t would be sufficient even if it doesn't behave exactly the same.

I see textobjects and diagnostics as different ideas so I'm not sure I agree with the consistency argument. Even supposing that, I don't think consistency alone is a strong enough reason to justify adding new commands/bindings - they should also be useful on their own and given that this can already be accomplished for the most-part with existing keybinds, I don't think that adding these is necessary. That's my take; I'm not sure how others feel about this.

the-mikedavis avatar Nov 05 '22 18:11 the-mikedavis

Alright, I guess I'll just leave it as a customisation in my config then. If you think this feature doesn't fit in with Helix I won't die on this hill.

emilyyyylime avatar Nov 06 '22 01:11 emilyyyylime