From 76a9697a804c04e45e61f3cc6bb034705d1476fa Mon Sep 17 00:00:00 2001 From: Zachary Yedidia Date: Sun, 24 Jul 2016 16:38:37 -0400 Subject: [PATCH] Use file completion for command mode --- cmd/micro/actions.go | 2 +- cmd/micro/messenger.go | 12 +++++++++--- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/cmd/micro/actions.go b/cmd/micro/actions.go index 48808cf9..a8b8a7b8 100644 --- a/cmd/micro/actions.go +++ b/cmd/micro/actions.go @@ -674,7 +674,7 @@ func (v *View) ShellMode() bool { // CommandMode lets the user enter a command func (v *View) CommandMode() bool { - input, canceled := messenger.Prompt("> ", "Command", NoCompletion) + input, canceled := messenger.Prompt("> ", "Command", FileCompletion) if !canceled { HandleCommand(input) } diff --git a/cmd/micro/messenger.go b/cmd/micro/messenger.go index 1542c1c8..7715ccfd 100644 --- a/cmd/micro/messenger.go +++ b/cmd/micro/messenger.go @@ -164,7 +164,9 @@ func (m *Messenger) Prompt(prompt, historyType string, completionType Completion m.history[historyType][len(m.history[historyType])-1] = response case tcell.KeyTab: if completionType == FileCompletion { - dirs := strings.Split(m.response, "/") + args := strings.Split(m.response, " ") + currentArg := args[len(args)-1] + dirs := strings.Split(currentArg, "/") var files []os.FileInfo var err error if len(dirs) > 1 { @@ -187,10 +189,14 @@ func (m *Messenger) Prompt(prompt, historyType string, completionType Completion } if len(suggestions) == 1 { if len(dirs) > 1 { - m.response = strings.Join(dirs[:len(dirs)-1], "/") + "/" + suggestions[0] + currentArg = strings.Join(dirs[:len(dirs)-1], "/") + "/" + suggestions[0] } else { - m.response = suggestions[0] + currentArg = suggestions[0] } + if len(args) > 1 { + currentArg = " " + currentArg + } + m.response = strings.Join(args[:len(args)-1], " ") + currentArg m.cursorx = Count(m.response) } }