]> git.lizzy.rs Git - micro.git/blobdiff - cmd/micro/autocomplete.go
Fix: mouse clicking with softwrap
[micro.git] / cmd / micro / autocomplete.go
index 941f0fc596335d71226fb46080da89975ca42249..47aeca7344821599c1eeec04dceec401aa3bcb44 100644 (file)
@@ -18,12 +18,14 @@ var pluginCompletions []func(string) []string
 func FileComplete(input string) (string, []string) {
        var sep string = string(os.PathSeparator)
        dirs := strings.Split(input, sep)
+
        var files []os.FileInfo
        var err error
        if len(dirs) > 1 {
                home, _ := homedir.Dir()
 
-               directories := strings.Join(dirs[:len(dirs)-1], sep)
+               directories := strings.Join(dirs[:len(dirs)-1], sep) + sep
+
                if strings.HasPrefix(directories, "~") {
                        directories = strings.Replace(directories, "~", home, 1)
                }
@@ -31,6 +33,7 @@ func FileComplete(input string) (string, []string) {
        } else {
                files, err = ioutil.ReadDir(".")
        }
+
        var suggestions []string
        if err != nil {
                return "", suggestions
@@ -81,9 +84,9 @@ func CommandComplete(input string) (string, []string) {
 func HelpComplete(input string) (string, []string) {
        var suggestions []string
 
-       for _, topic := range helpFiles {
+       for _, file := range ListRuntimeFiles(RTHelp) {
+               topic := file.Name()
                if strings.HasPrefix(topic, input) {
-
                        suggestions = append(suggestions, topic)
                }
        }
@@ -146,3 +149,29 @@ func PluginComplete(complete Completion, input string) (chosen string, suggestio
        }
        return
 }
+
+func PluginCmdComplete(input string) (chosen string, suggestions []string) {
+       for _, cmd := range []string{"install", "remove", "search", "update", "list"} {
+               if strings.HasPrefix(cmd, input) {
+                       suggestions = append(suggestions, cmd)
+               }
+       }
+
+       if len(suggestions) == 1 {
+               chosen = suggestions[0]
+       }
+       return chosen, suggestions
+}
+
+func PluginNameComplete(input string) (chosen string, suggestions []string) {
+       for _, pp := range GetAllPluginPackages() {
+               if strings.HasPrefix(pp.Name, input) {
+                       suggestions = append(suggestions, pp.Name)
+               }
+       }
+
+       if len(suggestions) == 1 {
+               chosen = suggestions[0]
+       }
+       return chosen, suggestions
+}