From c767b3dc0ca73b5d7f6e6380b8b05a93a2a28ae2 Mon Sep 17 00:00:00 2001 From: Zachary Yedidia Date: Tue, 19 Apr 2016 18:58:52 -0400 Subject: [PATCH] Add OpenBuffer() function to View Fixes #43 --- cmd/micro/micro.go | 6 +++--- cmd/micro/view.go | 23 +++++++++++++++++++++++ 2 files changed, 26 insertions(+), 3 deletions(-) diff --git a/cmd/micro/micro.go b/cmd/micro/micro.go index 56831112..ecc9d288 100644 --- a/cmd/micro/micro.go +++ b/cmd/micro/micro.go @@ -211,7 +211,7 @@ func main() { case tcell.KeyCtrlQ: // Make sure not to quit if there are unsaved changes if helpOpen { - view.buf = buf + view.OpenBuffer(buf) helpOpen = false } else { if view.CanClose("Quit anyway? (yes, no, save) ") { @@ -234,9 +234,9 @@ func main() { helpBuffer := NewBuffer(helpTxt, "") helpBuffer.name = "Help" helpOpen = true - view.buf = helpBuffer + view.OpenBuffer(helpBuffer) } else { - view.buf = buf + view.OpenBuffer(buf) helpOpen = false } } diff --git a/cmd/micro/view.go b/cmd/micro/view.go index 69a65a75..f390efd8 100644 --- a/cmd/micro/view.go +++ b/cmd/micro/view.go @@ -276,6 +276,29 @@ func (v *View) SelectAll() { v.cursor.y = 0 } +// OpenBuffer opens a new buffer in this view. +// This resets the topline, event handler and cursor. +func (v *View) OpenBuffer(buf *Buffer) { + v.buf = buf + v.topline = 0 + // Put the cursor at the first spot + v.cursor = Cursor{ + x: 0, + y: 0, + v: v, + } + v.cursor.ResetSelection() + + v.eh = NewEventHandler(v) + + v.matches = Match(v) + + // Set mouseReleased to true because we assume the mouse is not being pressed when + // the editor is opened + v.mouseReleased = true + v.lastClickTime = time.Time{} +} + // OpenFile opens a new file in the current view // It makes sure that the current buffer can be closed first (unsaved changes) func (v *View) OpenFile() {