]> git.lizzy.rs Git - micro.git/blobdiff - cmd/micro/messenger.go
Code optimisation (#1117)
[micro.git] / cmd / micro / messenger.go
index 808152a8675f0b5f6acc18c0785882b9212cdcfc..b55557af290832cbea0a799e47f2d8fd8ada3ce2 100644 (file)
@@ -223,6 +223,7 @@ func (m *Messenger) LetterPrompt(prompt string, responses ...rune) (rune, bool)
        }
 }
 
+// Completion represents a type of completion
 type Completion int
 
 const (
@@ -260,6 +261,11 @@ func (m *Messenger) Prompt(prompt, placeholder, historyType string, completionTy
                event := <-events
 
                switch e := event.(type) {
+               case *tcell.EventResize:
+                       for _, t := range tabs {
+                               t.Resize()
+                       }
+                       RedrawAll()
                case *tcell.EventKey:
                        switch e.Key() {
                        case tcell.KeyCtrlQ, tcell.KeyCtrlC, tcell.KeyEscape:
@@ -322,7 +328,7 @@ func (m *Messenger) Prompt(prompt, placeholder, historyType string, completionTy
                                        chosen = chosen + CommonSubstring(suggestions...)
                                }
 
-                               if chosen != "" {
+                               if len(suggestions) != 0 && chosen != "" {
                                        m.response = shellwords.Join(append(args[:len(args)-1], chosen)...)
                                        m.cursorx = Count(m.response)
                                }
@@ -332,7 +338,7 @@ func (m *Messenger) Prompt(prompt, placeholder, historyType string, completionTy
                m.HandleEvent(event, m.history[historyType])
 
                m.Clear()
-               for _, v := range tabs[curTab].views {
+               for _, v := range tabs[curTab].Views {
                        v.Display()
                }
                DisplayTabs()
@@ -348,6 +354,7 @@ func (m *Messenger) Prompt(prompt, placeholder, historyType string, completionTy
        return response, canceled
 }
 
+// UpHistory fetches the previous item in the history
 func (m *Messenger) UpHistory(history []string) {
        if m.historyNum > 0 {
                m.historyNum--
@@ -355,6 +362,8 @@ func (m *Messenger) UpHistory(history []string) {
                m.cursorx = Count(m.response)
        }
 }
+
+// DownHistory fetches the next item in the history
 func (m *Messenger) DownHistory(history []string) {
        if m.historyNum < len(history)-1 {
                m.historyNum++
@@ -362,33 +371,47 @@ func (m *Messenger) DownHistory(history []string) {
                m.cursorx = Count(m.response)
        }
 }
+
+// CursorLeft moves the cursor one character left
 func (m *Messenger) CursorLeft() {
        if m.cursorx > 0 {
                m.cursorx--
        }
 }
+
+// CursorRight moves the cursor one character right
 func (m *Messenger) CursorRight() {
        if m.cursorx < Count(m.response) {
                m.cursorx++
        }
 }
+
+// Start moves the cursor to the start of the line
 func (m *Messenger) Start() {
        m.cursorx = 0
 }
+
+// End moves the cursor to the end of the line
 func (m *Messenger) End() {
        m.cursorx = Count(m.response)
 }
+
+// Backspace deletes one character
 func (m *Messenger) Backspace() {
        if m.cursorx > 0 {
                m.response = string([]rune(m.response)[:m.cursorx-1]) + string([]rune(m.response)[m.cursorx:])
                m.cursorx--
        }
 }
+
+// Paste pastes the clipboard
 func (m *Messenger) Paste() {
        clip, _ := clipboard.ReadAll("clipboard")
        m.response = Insert(m.response, m.cursorx, clip)
        m.cursorx += Count(clip)
 }
+
+// WordLeft moves the cursor one word to the left
 func (m *Messenger) WordLeft() {
        response := []rune(m.response)
        m.CursorLeft()
@@ -410,6 +433,8 @@ func (m *Messenger) WordLeft() {
        }
        m.CursorRight()
 }
+
+// WordRight moves the cursor one word to the right
 func (m *Messenger) WordRight() {
        response := []rune(m.response)
        if m.cursorx >= len(response) {
@@ -433,6 +458,8 @@ func (m *Messenger) WordRight() {
                }
        }
 }
+
+// DeleteWordLeft deletes one word to the left
 func (m *Messenger) DeleteWordLeft() {
        m.WordLeft()
        m.response = string([]rune(m.response)[:m.cursorx])
@@ -577,11 +604,11 @@ func (m *Messenger) Display() {
 func (m *Messenger) LoadHistory() {
        if GetGlobalOption("savehistory").(bool) {
                file, err := os.Open(configDir + "/buffers/history")
+               defer file.Close()
                var decodedMap map[string][]string
                if err == nil {
                        decoder := gob.NewDecoder(file)
                        err = decoder.Decode(&decodedMap)
-                       file.Close()
 
                        if err != nil {
                                m.Error("Error loading history:", err)
@@ -606,11 +633,12 @@ func (m *Messenger) SaveHistory() {
                // Don't save history past 100
                for k, v := range m.history {
                        if len(v) > 100 {
-                               m.history[k] = v[0:100]
+                               m.history[k] = v[len(m.history[k])-100:]
                        }
                }
 
                file, err := os.Create(configDir + "/buffers/history")
+               defer file.Close()
                if err == nil {
                        encoder := gob.NewEncoder(file)
 
@@ -619,7 +647,6 @@ func (m *Messenger) SaveHistory() {
                                m.Error("Error saving history:", err)
                                return
                        }
-                       file.Close()
                }
        }
 }