Skip to content

Previously unable to move word left/right on a single line, and move to punctuation instead of space.#22

Open
justnat3 wants to merge 1 commit intooligo:mainfrom
justnat3:unable-to-move-word
Open

Previously unable to move word left/right on a single line, and move to punctuation instead of space.#22
justnat3 wants to merge 1 commit intooligo:mainfrom
justnat3:unable-to-move-word

Conversation

@justnat3
Copy link
Copy Markdown

Moving by word gets hung up in (left or right arrow) gets hung up in the check for ModShortcut. (copy/paste/etc). In this case we should just check if the modifier comes along with an arrow key.

This also add checking for Unicode Punctuation instead of just spaces when moving a word.

Note, I'm not sure that this is the correct solution to this problem. I was hoping for some insights on how this might be done better.

However, this was the "fastest" way to get the behavior I wanted. Let me know what I can do here as to not break previous behavior (unless we want that).

!darwin:
Moving by word gets hung up in (left or right arrow) gets hung up in the
check for ModShorcut. (copy/paste/etc). In this case we should just check
if the modifer comes along with an arrow key.

This also add checking for _Unicode Punctuation_ instead of just spaces
when moving a word.

Cheers,
-Nate
Comment thread editor/editor.go
moveByWord := k.Modifiers.Contain(key.ModShortcutAlt)
leftOrRightArrow := k.Name == key.NameLeftArrow || k.Name == key.NameRightArrow

if k.Modifiers.Contain(key.ModShortcut) && !leftOrRightArrow {
Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What about checking ModShortcut modifiers in each of the copy/cut/paste commands? We can then merge the two switch clauses.

Comment thread editor/text.go
e.MoveCaret(direction, 0)
caret = e.closestToRune(e.caret.start)
for r := next(); !unicode.IsSpace(r) && !atEnd(); r = next() {
for r := next(); !unicode.IsSpace(r) && !unicode.IsPunct(r) && !atEnd(); r = next() {
Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Another similar word related operation is word deletion. So you might have to look at the code in the delete method. And for a more general solution, code editors use configurable word seperators, here's what I have done in gvcode.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants