Text-editors typically make Ctrl+Left jump to the previous start-of-word and Ctrl+Right jump to the next end-of-word (or sometimes start-of-next-word). To implement this, we can use split_word_bound_indices to find word boundaries, however, it returns all word boundaries (start and end).
At first attempt to improve on this, one can skip indices where the next (or previous) char is whitespace. This is an improvement, but not perfect since e.g. in a::b every position is considered a word boundary while the user would expect to skip over :: as a whole (and possibly on until the next word's start/end).
This may not be a problem you wish to solve, in which case, fair enough. But, any idea how it might be done?
BTW if you wish to test this in action, see KAS. The layout example has a passable editor (for small documents). The word-navigation code in question is around here (disregard the TODO comment if you see this before the next commit lands).
Text-editors typically make Ctrl+Left jump to the previous start-of-word and Ctrl+Right jump to the next end-of-word (or sometimes start-of-next-word). To implement this, we can use
split_word_bound_indices
to find word boundaries, however, it returns all word boundaries (start and end).At first attempt to improve on this, one can skip indices where the next (or previous) char is whitespace. This is an improvement, but not perfect since e.g. in
a::b
every position is considered a word boundary while the user would expect to skip over::
as a whole (and possibly on until the next word's start/end).This may not be a problem you wish to solve, in which case, fair enough. But, any idea how it might be done?
BTW if you wish to test this in action, see KAS. The
layout
example has a passable editor (for small documents). The word-navigation code in question is around here (disregard the TODO comment if you see this before the next commit lands).