Fix differences between selection with keys and with mouse

Fixes #89
This commit is contained in:
Zachary Yedidia 2016-04-30 16:50:43 -04:00
parent 9ad2820e5e
commit 539d4b1167
3 changed files with 12 additions and 2 deletions

View file

@ -293,14 +293,20 @@ func DefaultBindings() map[string]string {
// CursorUp moves the cursor up
func (v *View) CursorUp() bool {
v.cursor.ResetSelection()
if v.cursor.HasSelection() {
v.cursor.SetLoc(v.cursor.curSelection[0])
v.cursor.ResetSelection()
}
v.cursor.Up()
return true
}
// CursorDown moves the cursor down
func (v *View) CursorDown() bool {
v.cursor.ResetSelection()
if v.cursor.HasSelection() {
v.cursor.SetLoc(v.cursor.curSelection[1])
v.cursor.ResetSelection()
}
v.cursor.Down()
return true
}

View file

@ -170,6 +170,7 @@ func (c *Cursor) SelectWord() {
c.curSelection[1] = ToCharPos(forward, c.y, c.v.buf) + 1
c.origSelection[1] = c.curSelection[1]
c.SetLoc(c.curSelection[1])
}
// AddWordToSelection adds the word the cursor is currently on to the selection
@ -202,6 +203,8 @@ func (c *Cursor) AddWordToSelection() {
c.curSelection[1] = ToCharPos(forward, c.y, c.v.buf) + 1
c.curSelection[0] = c.origSelection[0]
}
c.SetLoc(c.curSelection[1])
}
// SelectTo selects from the current cursor location to the given location

View file

@ -307,6 +307,7 @@ func (v *View) HandleEvent(event tcell.Event) {
v.lastClickTime = time.Now()
loc := v.cursor.Loc()
v.cursor.origSelection[0] = loc
v.cursor.curSelection[0] = loc
v.cursor.curSelection[1] = loc
}