ice9js / ace-jump-sublime

Jump between characters in Sublime Text 3 without using a mouse at ease
MIT License
202 stars 30 forks source link

Added double character labels support #68

Open kurtontheway opened 7 years ago

kurtontheway commented 7 years ago

Added double character labels support. and an option ("double_char_label") to toggle this feature. The number of double-char labels is 2704 (26*2**2) by default, which is much more than the one of single-char labels. It is sufficient to cover full view of text in most cases, so that it is more intuitive to label the character under focus of your eyes at the first time instead of pressing "Enter" key several times to reach the character you want to go for.

screenshots attached to compare:

"double_char_label": true double_char_label

"double_char_label": false (default) single_char_label

ice9js commented 7 years ago

Thanks for taking the time to work on this. I see you started work on yet another feature which is great, but it would be nice if you could split it into separate branches/PRs.

As for the double char labels support, I'm not entirely convinced this is the way to go. Screens tend to get bigger but more importantly, not everyone uses the same set of character for the labels. I'm thinking it's not uncommon for people to only use the keys from the home row and so they would need more combinations.

A more universal approach would be to use ceil( labels / characters ) to count how many characters we'll need to show for each label so we can show all of them and then display appropriate combinations.
I'm also not entirely sure why the characters on the labels are what they are. I get the duplicated ones but the rest doesn't seem very logical to me. Wouldn't it be better to just start with combinations from the labels alphabet in order they appear in there ?

Another issue I found is mainly present when jumping to characters. With two identical characters next to each other, their labels will overlap. I'm not really sure what we should do in this case right now so I wouldn't let it prevent us from moving forward though it's definitely something I'd like to address later.

About the second feature - I think we could expand on existing jump_behing_last_characters flag to work for last characters in a word as well as the last characters in a line. That should result in less visual clutter and simple code as well. I don't want to overdo it with all the different settings and modes, but if you can justify your current approach - I'll accept it.

ice9js commented 7 years ago

P.S. You might also want to update user.email in your git config so it matches the one on your GitHub account and rebase the branch, so the commits are linked to your account.