X-Git-Url: https://git.lizzy.rs/?a=blobdiff_plain;f=cmd%2Fmicro%2Fmessenger.go;h=b55557af290832cbea0a799e47f2d8fd8ada3ce2;hb=71af765b4e4f368c4bbbcb3947f3497e17271b62;hp=646d8123850bc531d24ef30b40efaabee88f55e9;hpb=a814677b51504a118647b26307d565aefb74a385;p=micro.git diff --git a/cmd/micro/messenger.go b/cmd/micro/messenger.go index 646d8123..b55557af 100644 --- a/cmd/micro/messenger.go +++ b/cmd/micro/messenger.go @@ -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 len(suggestions) != 0 { + 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) @@ -611,6 +638,7 @@ func (m *Messenger) SaveHistory() { } 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() } } }