mirror of
https://github.com/Hopiu/micro.git
synced 2026-03-19 15:30:30 +00:00
Improve word movement behavior
This commit is contained in:
parent
957e97dfb0
commit
80755dcf31
2 changed files with 9 additions and 4 deletions
|
|
@ -218,10 +218,10 @@ func (c *Cursor) SelectTo(loc int) {
|
|||
// WordRight moves the cursor one word to the right
|
||||
func (c *Cursor) WordRight() {
|
||||
c.Right()
|
||||
for !IsWordChar(string(c.RuneUnder(c.x))) {
|
||||
for IsWhitespace(c.RuneUnder(c.x)) {
|
||||
c.Right()
|
||||
}
|
||||
for IsWordChar(string(c.RuneUnder(c.x))) {
|
||||
for !IsWhitespace(c.RuneUnder(c.x)) {
|
||||
c.Right()
|
||||
}
|
||||
}
|
||||
|
|
@ -229,10 +229,10 @@ func (c *Cursor) WordRight() {
|
|||
// WordLeft moves the cursor one word to the left
|
||||
func (c *Cursor) WordLeft() {
|
||||
c.Left()
|
||||
for !IsWordChar(string(c.RuneUnder(c.x))) {
|
||||
for IsWhitespace(c.RuneUnder(c.x)) {
|
||||
c.Left()
|
||||
}
|
||||
for IsWordChar(string(c.RuneUnder(c.x))) {
|
||||
for !IsWhitespace(c.RuneUnder(c.x)) {
|
||||
c.Left()
|
||||
}
|
||||
c.Right()
|
||||
|
|
|
|||
|
|
@ -62,6 +62,11 @@ func IsWordChar(str string) bool {
|
|||
return (c >= '0' && c <= '9') || (c >= 'A' && c <= 'Z') || (c >= 'a' && c <= 'z') || (c == '_')
|
||||
}
|
||||
|
||||
// IsWhitespace returns true if the given rune is a space, tab, or newline
|
||||
func IsWhitespace(c rune) bool {
|
||||
return c == ' ' || c == '\t' || c == '\n'
|
||||
}
|
||||
|
||||
// Contains returns whether or not a string array contains a given string
|
||||
func Contains(list []string, a string) bool {
|
||||
for _, b := range list {
|
||||
|
|
|
|||
Loading…
Reference in a new issue