Fix duplicated results in CMD

This commit is contained in:
Yeechan Lu 2014-03-27 17:25:06 +08:00
parent 59d9840d7b
commit c0d52ef905

View File

@ -14,6 +14,7 @@ namespace Wox.Plugin.System.CMD
protected override List<Result> QueryInternal(Query query) protected override List<Result> QueryInternal(Query query)
{ {
List<Result> results = new List<Result>(); List<Result> results = new List<Result>();
List<Result> pushedResults = new List<Result>();
if (query.RawQuery == ">") if (query.RawQuery == ">")
{ {
IEnumerable<Result> history = CMDStorage.Instance.CMDHistory.OrderByDescending(o => o.Value) IEnumerable<Result> history = CMDStorage.Instance.CMDHistory.OrderByDescending(o => o.Value)
@ -58,6 +59,7 @@ namespace Wox.Plugin.System.CMD
catch (Exception) { } catch (Exception) { }
context.PushResults(query, new List<Result>() { result }); context.PushResults(query, new List<Result>() { result });
pushedResults.Add(result);
IEnumerable<Result> history = CMDStorage.Instance.CMDHistory.Where(o => o.Key.Contains(cmd)) IEnumerable<Result> history = CMDStorage.Instance.CMDHistory.Where(o => o.Key.Contains(cmd))
.OrderByDescending(o => o.Value) .OrderByDescending(o => o.Value)
@ -93,6 +95,7 @@ namespace Wox.Plugin.System.CMD
}).Where(o => o != null).Take(4); }).Where(o => o != null).Take(4);
context.PushResults(query, history.ToList()); context.PushResults(query, history.ToList());
pushedResults.AddRange(history);
try try
{ {
@ -113,7 +116,7 @@ namespace Wox.Plugin.System.CMD
if (basedir != null) if (basedir != null)
{ {
List<string> autocomplete = Directory.GetFileSystemEntries(basedir).Select(o => dir + Path.GetFileName(o)).Where(o => o.StartsWith(cmd, StringComparison.OrdinalIgnoreCase) && !results.Any(p => o.Equals(p.Title, StringComparison.OrdinalIgnoreCase))).ToList(); List<string> autocomplete = Directory.GetFileSystemEntries(basedir).Select(o => dir + Path.GetFileName(o)).Where(o => o.StartsWith(cmd, StringComparison.OrdinalIgnoreCase) && !results.Any(p => o.Equals(p.Title, StringComparison.OrdinalIgnoreCase)) && !pushedResults.Any(p => o.Equals(p.Title, StringComparison.OrdinalIgnoreCase))).ToList();
autocomplete.Sort(); autocomplete.Sort();
results.AddRange(autocomplete.ConvertAll(m => new Result() results.AddRange(autocomplete.ConvertAll(m => new Result()
{ {