mirror of
https://github.com/Flow-Launcher/Flow.Launcher.git
synced 2026-03-11 08:54:32 +00:00
Split name matching and desciption matching due to fuzzy change
This commit is contained in:
parent
8fb2dad65c
commit
f32cbaf331
2 changed files with 71 additions and 33 deletions
|
|
@ -206,12 +206,12 @@ namespace Flow.Launcher.Plugin.Program.Programs
|
||||||
}
|
}
|
||||||
catch (Exception e)
|
catch (Exception e)
|
||||||
{
|
{
|
||||||
ProgramLogger.LogException("UWP" ,"CurrentUserPackages", $"id","An unexpected error occured and "
|
ProgramLogger.LogException("UWP", "CurrentUserPackages", $"id", "An unexpected error occured and "
|
||||||
+ $"unable to verify if package is valid", e);
|
+ $"unable to verify if package is valid", e);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
return valid;
|
return valid;
|
||||||
});
|
});
|
||||||
return ps;
|
return ps;
|
||||||
|
|
@ -263,24 +263,42 @@ namespace Flow.Launcher.Plugin.Program.Programs
|
||||||
public string LogoPath { get; set; }
|
public string LogoPath { get; set; }
|
||||||
public UWP Package { get; set; }
|
public UWP Package { get; set; }
|
||||||
|
|
||||||
public Application(){}
|
public Application() { }
|
||||||
|
|
||||||
|
|
||||||
public Result Result(string query, IPublicAPI api)
|
public Result Result(string query, IPublicAPI api)
|
||||||
{
|
{
|
||||||
var title = (Name, Description) switch
|
string title;
|
||||||
|
MatchResult matchResult;
|
||||||
|
|
||||||
|
// We suppose Name won't be null
|
||||||
|
if (Description == null || Name.StartsWith(Description))
|
||||||
{
|
{
|
||||||
(var n, null) => n,
|
title = Name;
|
||||||
(var n, var d) when d.StartsWith(n) => d,
|
matchResult = StringMatcher.FuzzySearch(query, title);
|
||||||
(var n, var d) when n.StartsWith(d) => n,
|
}
|
||||||
(var n, var d) when !string.IsNullOrEmpty(d) => $"{n}: {d}",
|
else if (Description.StartsWith(Name))
|
||||||
_ => Name
|
{
|
||||||
};
|
title = Description;
|
||||||
|
matchResult = StringMatcher.FuzzySearch(query, Description);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
title = $"{Name}: {Description}";
|
||||||
|
var nameMatch = StringMatcher.FuzzySearch(query, Name);
|
||||||
|
var desciptionMatch = StringMatcher.FuzzySearch(query, Description);
|
||||||
|
if (desciptionMatch.Score > nameMatch.Score)
|
||||||
|
{
|
||||||
|
for (int i = 0; i < desciptionMatch.MatchData.Count; i++)
|
||||||
|
{
|
||||||
|
desciptionMatch.MatchData[i] += Name.Length + 2; // 2 is ": "
|
||||||
|
}
|
||||||
|
matchResult = desciptionMatch;
|
||||||
|
}
|
||||||
|
else matchResult = nameMatch;
|
||||||
|
}
|
||||||
|
|
||||||
var matchResult = StringMatcher.FuzzySearch(query, title);
|
if (!matchResult.Success) return null;
|
||||||
|
|
||||||
if (!matchResult.Success)
|
|
||||||
return null;
|
|
||||||
|
|
||||||
var result = new Result
|
var result = new Result
|
||||||
{
|
{
|
||||||
|
|
@ -311,7 +329,7 @@ namespace Flow.Launcher.Plugin.Program.Programs
|
||||||
|
|
||||||
Action = _ =>
|
Action = _ =>
|
||||||
{
|
{
|
||||||
Main.StartProcess(Process.Start,
|
Main.StartProcess(Process.Start,
|
||||||
new ProcessStartInfo(
|
new ProcessStartInfo(
|
||||||
!string.IsNullOrEmpty(Main._settings.CustomizedExplorer)
|
!string.IsNullOrEmpty(Main._settings.CustomizedExplorer)
|
||||||
? Main._settings.CustomizedExplorer
|
? Main._settings.CustomizedExplorer
|
||||||
|
|
@ -403,14 +421,14 @@ namespace Flow.Launcher.Plugin.Program.Programs
|
||||||
public string FormattedPriReferenceValue(string packageName, string rawPriReferenceValue)
|
public string FormattedPriReferenceValue(string packageName, string rawPriReferenceValue)
|
||||||
{
|
{
|
||||||
const string prefix = "ms-resource:";
|
const string prefix = "ms-resource:";
|
||||||
|
|
||||||
if (string.IsNullOrWhiteSpace(rawPriReferenceValue) || !rawPriReferenceValue.StartsWith(prefix))
|
if (string.IsNullOrWhiteSpace(rawPriReferenceValue) || !rawPriReferenceValue.StartsWith(prefix))
|
||||||
return rawPriReferenceValue;
|
return rawPriReferenceValue;
|
||||||
|
|
||||||
string key = rawPriReferenceValue.Substring(prefix.Length);
|
string key = rawPriReferenceValue.Substring(prefix.Length);
|
||||||
if (key.StartsWith("//"))
|
if (key.StartsWith("//"))
|
||||||
return $"{prefix}{key}";
|
return $"{prefix}{key}";
|
||||||
|
|
||||||
if (!key.StartsWith("/"))
|
if (!key.StartsWith("/"))
|
||||||
{
|
{
|
||||||
key = $"/{key}";
|
key = $"/{key}";
|
||||||
|
|
|
||||||
|
|
@ -12,6 +12,7 @@ using Shell;
|
||||||
using Flow.Launcher.Infrastructure;
|
using Flow.Launcher.Infrastructure;
|
||||||
using Flow.Launcher.Plugin.Program.Logger;
|
using Flow.Launcher.Plugin.Program.Logger;
|
||||||
using Flow.Launcher.Plugin.SharedCommands;
|
using Flow.Launcher.Plugin.SharedCommands;
|
||||||
|
using Flow.Launcher.Plugin.SharedModels;
|
||||||
|
|
||||||
namespace Flow.Launcher.Plugin.Program.Programs
|
namespace Flow.Launcher.Plugin.Program.Programs
|
||||||
{
|
{
|
||||||
|
|
@ -36,19 +37,38 @@ namespace Flow.Launcher.Plugin.Program.Programs
|
||||||
|
|
||||||
public Result Result(string query, IPublicAPI api)
|
public Result Result(string query, IPublicAPI api)
|
||||||
{
|
{
|
||||||
var title = (Name, Description) switch
|
string title;
|
||||||
|
MatchResult matchResult;
|
||||||
|
|
||||||
|
// We suppose Name won't be null
|
||||||
|
if (Description == null || Name.StartsWith(Description))
|
||||||
{
|
{
|
||||||
(var n, null) => n,
|
title = Name;
|
||||||
(var n, var d) when d.StartsWith(n) => d,
|
matchResult = StringMatcher.FuzzySearch(query, title);
|
||||||
(var n, var d) when n.StartsWith(d) => n,
|
}
|
||||||
(var n, var d) when !string.IsNullOrEmpty(d) => $"{n}: {d}",
|
else if (Description.StartsWith(Name))
|
||||||
_ => Name
|
{
|
||||||
};
|
title = Description;
|
||||||
|
matchResult = StringMatcher.FuzzySearch(query, Description);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
title = $"{Name}: {Description}";
|
||||||
|
var nameMatch = StringMatcher.FuzzySearch(query, Name);
|
||||||
|
var desciptionMatch = StringMatcher.FuzzySearch(query, Description);
|
||||||
|
if (desciptionMatch.Score > nameMatch.Score)
|
||||||
|
{
|
||||||
|
for (int i = 0; i < desciptionMatch.MatchData.Count; i++)
|
||||||
|
{
|
||||||
|
desciptionMatch.MatchData[i] += Name.Length + 2; // 2 is ": "
|
||||||
|
}
|
||||||
|
matchResult = desciptionMatch;
|
||||||
|
}
|
||||||
|
else matchResult = nameMatch;
|
||||||
|
}
|
||||||
|
|
||||||
var matchResult = StringMatcher.FuzzySearch(query, title);
|
if (!matchResult.Success) return null;
|
||||||
|
|
||||||
if (!matchResult.Success)
|
|
||||||
return null;
|
|
||||||
|
|
||||||
var result = new Result
|
var result = new Result
|
||||||
{
|
{
|
||||||
|
|
@ -58,7 +78,7 @@ namespace Flow.Launcher.Plugin.Program.Programs
|
||||||
Score = matchResult.Score,
|
Score = matchResult.Score,
|
||||||
TitleHighlightData = matchResult.MatchData,
|
TitleHighlightData = matchResult.MatchData,
|
||||||
ContextData = this,
|
ContextData = this,
|
||||||
Action = e =>
|
Action = _ =>
|
||||||
{
|
{
|
||||||
var info = new ProcessStartInfo
|
var info = new ProcessStartInfo
|
||||||
{
|
{
|
||||||
|
|
@ -268,10 +288,10 @@ namespace Flow.Launcher.Plugin.Program.Programs
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
var paths = Directory.EnumerateFiles(directory, "*", new EnumerationOptions
|
var paths = Directory.EnumerateFiles(directory, "*", new EnumerationOptions
|
||||||
{
|
{
|
||||||
IgnoreInaccessible = true,
|
IgnoreInaccessible = true,
|
||||||
RecurseSubdirectories = true
|
RecurseSubdirectories = true
|
||||||
})
|
})
|
||||||
.Where(x => suffixes.Contains(Extension(x)));
|
.Where(x => suffixes.Contains(Extension(x)));
|
||||||
|
|
||||||
return paths;
|
return paths;
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue