From 1fe1c3eabb08d6bf93009cd6291911bb385a490f Mon Sep 17 00:00:00 2001 From: boombuler Date: Wed, 28 Sep 2016 18:31:05 +0200 Subject: [PATCH] improved plugin search --- cmd/micro/command.go | 6 +++--- cmd/micro/pluginmanager.go | 13 +++++++++++-- 2 files changed, 14 insertions(+), 5 deletions(-) diff --git a/cmd/micro/command.go b/cmd/micro/command.go index b978e132..22ebafc9 100644 --- a/cmd/micro/command.go +++ b/cmd/micro/command.go @@ -119,13 +119,13 @@ func PluginCmd(args []string) { case "update": UpdatePlugins(args[1:]) case "search": - searchText := strings.Join(args[1:], " ") - plugins := SearchPlugin(searchText) + plugins := SearchPlugin(args[1:]) messenger.Message(len(plugins), " plugins found") for _, p := range plugins { - messenger.AddLog("\n") + messenger.AddLog("----------------") messenger.AddLog(p.String()) } + messenger.AddLog("----------------") if len(plugins) > 0 { if CurView().Type != vtLog { ToggleLog([]string{}) diff --git a/cmd/micro/pluginmanager.go b/cmd/micro/pluginmanager.go index 32e8aba9..bb330682 100644 --- a/cmd/micro/pluginmanager.go +++ b/cmd/micro/pluginmanager.go @@ -81,6 +81,7 @@ func (pp *PluginPackage) String() string { buf.WriteRune('\n') } if pp.Description != "" { + buf.WriteRune('\n') buf.WriteString(pp.Description) } return buf.String() @@ -270,10 +271,18 @@ func (pp PluginPackage) IsInstallable() bool { // SearchPlugin retrieves a list of all PluginPackages which match the given search text and // could be or are already installed -func SearchPlugin(text string) (plugins PluginPackages) { +func SearchPlugin(texts []string) (plugins PluginPackages) { plugins = make(PluginPackages, 0) + +pluginLoop: for _, pp := range GetAllPluginPackages() { - if pp.Match(text) && pp.IsInstallable() { + for _, text := range texts { + if !pp.Match(text) { + continue pluginLoop + } + } + + if pp.IsInstallable() { plugins = append(plugins, pp) } }