diff --git a/.github/actions/spelling/expect.txt b/.github/actions/spelling/expect.txt
index ddb469517..51bcf83f5 100644
--- a/.github/actions/spelling/expect.txt
+++ b/.github/actions/spelling/expect.txt
@@ -35,3 +35,26 @@ mscorlib
pythonw
dotnet
winget
+jjw24
+wolframalpha
+gmail
+duckduckgo
+facebook
+findicon
+baidu
+pls
+websearch
+qianlifeng
+userdata
+srchadmin
+EWX
+dlgtext
+CMD
+appref-ms
+appref
+TSource
+runas
+dpi
+popup
+ptr
+pluginindicator
\ No newline at end of file
diff --git a/.github/actions/spelling/patterns.txt b/.github/actions/spelling/patterns.txt
index 73095a638..c0a008153 100644
--- a/.github/actions/spelling/patterns.txt
+++ b/.github/actions/spelling/patterns.txt
@@ -108,3 +108,9 @@
# Localization keys
#x:Key="[^"]+"
#{DynamicResource [^"]+}
+
+# html tag
+<\w+[^>]*>
+
+#http/https
+(?:\b(?:https?|ftp|file)://)[-A-Za-z0-9+&@#/%?=~_|!:,.;]+[-A-Za-z0-9+&@#/%=~_|]
diff --git a/.github/workflows/spelling.yml b/.github/workflows/spelling.yml
index 125eee53a..7a7a48bcd 100644
--- a/.github/workflows/spelling.yml
+++ b/.github/workflows/spelling.yml
@@ -82,10 +82,10 @@ jobs:
post_comment: 0
use_magic_file: 1
experimental_apply_changes_via_bot: 1
- use_sarif: true # to show in pr page
+ use_sarif: 0 # to show in pr page
extra_dictionary_limit: 10
check_commit_messages: commits title description
- only_check_changed_files: false
+ only_check_changed_files: 1
check_extra_dictionaries: ''
quit_without_error: true
extra_dictionaries:
@@ -96,6 +96,8 @@ jobs:
cspell:csharp/csharp.txt
cspell:dotnet/dotnet.txt
cspell:python/src/python/python-lib.txt
+ cspell:aws/aws.txt
+ cspell:companies/src/companies.txt
warnings:
binary-file,deprecated-feature,large-file,limited-references,noisy-file,non-alpha-in-dictionary,unexpected-line-ending,whitespace-in-dictionary,minified-file,unsupported-configuration,unrecognized-spelling,no-newline-at-eof
diff --git a/Plugins/Flow.Launcher.Plugin.PluginIndicator/Languages/en.xaml b/Plugins/Flow.Launcher.Plugin.PluginIndicator/Languages/en.xaml
index a6176a35f..3df1f468d 100644
--- a/Plugins/Flow.Launcher.Plugin.PluginIndicator/Languages/en.xaml
+++ b/Plugins/Flow.Launcher.Plugin.PluginIndicator/Languages/en.xaml
@@ -2,7 +2,9 @@
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:system="clr-namespace:System;assembly=mscorlib">
+ Activate {0} plugin action keyword
+
Plugin Indicator
Provides plugins action words suggestions
-
-
\ No newline at end of file
+
+
diff --git a/Plugins/Flow.Launcher.Plugin.PluginIndicator/Main.cs b/Plugins/Flow.Launcher.Plugin.PluginIndicator/Main.cs
index b5377eb17..aea0d77a1 100644
--- a/Plugins/Flow.Launcher.Plugin.PluginIndicator/Main.cs
+++ b/Plugins/Flow.Launcher.Plugin.PluginIndicator/Main.cs
@@ -10,28 +10,28 @@ namespace Flow.Launcher.Plugin.PluginIndicator
public List Query(Query query)
{
- // if query contains more than one word, eg. github tips
- // user has decided to type something else rather than wanting to see the available action keywords
- if (query.SearchTerms.Length > 1)
- return new List();
-
- var results = from keyword in PluginManager.NonGlobalPlugins.Keys
- where keyword.StartsWith(query.Search)
- let metadata = PluginManager.NonGlobalPlugins[keyword].Metadata
- where !metadata.Disabled
- select new Result
- {
- Title = keyword,
- SubTitle = $"Activate {metadata.Name} plugin",
- Score = 100,
- IcoPath = metadata.IcoPath,
- AutoCompleteText = $"{keyword}{Plugin.Query.TermSeparator}",
- Action = c =>
- {
- context.API.ChangeQuery($"{keyword}{Plugin.Query.TermSeparator}");
- return false;
- }
- };
+ var results =
+ from keyword in PluginManager.NonGlobalPlugins.Keys
+ let plugin = PluginManager.NonGlobalPlugins[keyword].Metadata
+ let keywordSearchResult = context.API.FuzzySearch(query.Search, keyword)
+ let searchResult = keywordSearchResult.IsSearchPrecisionScoreMet() ? keywordSearchResult : context.API.FuzzySearch(query.Search, plugin.Name)
+ let score = searchResult.Score
+ where (searchResult.IsSearchPrecisionScoreMet()
+ || string.IsNullOrEmpty(query.Search)) // To list all available action keywords
+ && !plugin.Disabled
+ select new Result
+ {
+ Title = keyword,
+ SubTitle = string.Format(context.API.GetTranslation("flowlauncher_plugin_pluginindicator_result_subtitle"), plugin.Name),
+ Score = score,
+ IcoPath = plugin.IcoPath,
+ AutoCompleteText = $"{keyword}{Plugin.Query.TermSeparator}",
+ Action = c =>
+ {
+ context.API.ChangeQuery($"{keyword}{Plugin.Query.TermSeparator}");
+ return false;
+ }
+ };
return results.ToList();
}
diff --git a/Plugins/Flow.Launcher.Plugin.PluginIndicator/plugin.json b/Plugins/Flow.Launcher.Plugin.PluginIndicator/plugin.json
index fb527e3a8..084779ef9 100644
--- a/Plugins/Flow.Launcher.Plugin.PluginIndicator/plugin.json
+++ b/Plugins/Flow.Launcher.Plugin.PluginIndicator/plugin.json
@@ -2,9 +2,9 @@
"ID": "6A122269676E40EB86EB543B945932B9",
"ActionKeyword": "*",
"Name": "Plugin Indicator",
- "Description": "Provide plugin actionword suggestion",
+ "Description": "Provides plugin action keyword suggestions",
"Author": "qianlifeng",
- "Version": "2.0.0",
+ "Version": "2.0.1",
"Language": "csharp",
"Website": "https://github.com/Flow-Launcher/Flow.Launcher",
"ExecuteFileName": "Flow.Launcher.Plugin.PluginIndicator.dll",
diff --git a/Plugins/Flow.Launcher.Plugin.Program/Languages/en.xaml b/Plugins/Flow.Launcher.Plugin.Program/Languages/en.xaml
index a7b8bcb9c..39807db2c 100644
--- a/Plugins/Flow.Launcher.Plugin.Program/Languages/en.xaml
+++ b/Plugins/Flow.Launcher.Plugin.Program/Languages/en.xaml
@@ -55,7 +55,7 @@
File suffixes can't be empty
Protocols can't be empty
- File Suffixes
+ File Suffixes
URL Protocols
Steam Games
Epic Games
diff --git a/Plugins/Flow.Launcher.Plugin.Program/ProgramSuffixes.xaml b/Plugins/Flow.Launcher.Plugin.Program/ProgramSuffixes.xaml
index e4467a8b6..71bc12a86 100644
--- a/Plugins/Flow.Launcher.Plugin.Program/ProgramSuffixes.xaml
+++ b/Plugins/Flow.Launcher.Plugin.Program/ProgramSuffixes.xaml
@@ -162,7 +162,7 @@
Margin="0,0,0,8"
FontSize="16"
FontWeight="SemiBold"
- Text="{DynamicResource flowlauncher_plugin_program_suffixes_excutable_types}" />
+ Text="{DynamicResource flowlauncher_plugin_program_suffixes_executable_types}" />
();
+ var apps = new List();
// WinRT
var appListEntries = package.GetAppListEntries();
foreach (var app in appListEntries)
@@ -46,7 +46,7 @@ namespace Flow.Launcher.Plugin.Program.Programs
try
{
var tmp = new Application(app, this);
- applist.Add(tmp);
+ apps.Add(tmp);
}
catch (Exception e)
{
@@ -55,7 +55,7 @@ namespace Flow.Launcher.Plugin.Program.Programs
+ $"{FullName} from location {Location}", e);
}
}
- Apps = applist.ToArray();
+ Apps = apps.ToArray();
try
{
@@ -147,7 +147,7 @@ namespace Flow.Launcher.Plugin.Program.Programs
}
ProgramLogger.LogException($"|UWP|GetPackageVersionFromManifest|{Location}" +
- "|Trying to get the package version of the UWP program, but an unknown UWP appmanifest version in package "
+ "|Trying to get the package version of the UWP program, but an unknown UWP app-manifest version in package "
+ $"{FullName} from location {Location}", new FormatException());
return PackageVersion.Unknown;
}
@@ -392,14 +392,14 @@ namespace Flow.Launcher.Plugin.Program.Programs
{
title = $"{Name}: {Description}";
var nameMatch = StringMatcher.FuzzySearch(query, Name);
- var desciptionMatch = StringMatcher.FuzzySearch(query, Description);
- if (desciptionMatch.Score > nameMatch.Score)
+ var descriptionMatch = StringMatcher.FuzzySearch(query, Description);
+ if (descriptionMatch.Score > nameMatch.Score)
{
- for (int i = 0; i < desciptionMatch.MatchData.Count; i++)
+ for (int i = 0; i < descriptionMatch.MatchData.Count; i++)
{
- desciptionMatch.MatchData[i] += Name.Length + 2; // 2 is ": "
+ descriptionMatch.MatchData[i] += Name.Length + 2; // 2 is ": "
}
- matchResult = desciptionMatch;
+ matchResult = descriptionMatch;
}
else matchResult = nameMatch;
}
@@ -633,7 +633,7 @@ namespace Flow.Launcher.Plugin.Program.Programs
// }
// else
// {
- // ProgramLogger.LogException($"|UWP|ImageFromPath|{(string.IsNullOrEmpty(path) ? "Not Avaliable" : path)}" +
+ // ProgramLogger.LogException($"|UWP|ImageFromPath|{(string.IsNullOrEmpty(path) ? "Not Available" : path)}" +
// $"|Unable to get logo for {UserModelId} from {path} and" +
// $" located in {Location}", new FileNotFoundException());
// return new BitmapImage(new Uri(Constant.MissingImgIcon));
@@ -658,8 +658,8 @@ namespace Flow.Launcher.Plugin.Program.Programs
// var brush = new SolidColorBrush(color);
// var pen = new Pen(brush, 1);
// var backgroundArea = new Rect(0, 0, width, width);
- // var rectabgle = new RectangleGeometry(backgroundArea);
- // var rectDrawing = new GeometryDrawing(brush, pen, rectabgle);
+ // var rectangle = new RectangleGeometry(backgroundArea);
+ // var rectDrawing = new GeometryDrawing(brush, pen, rectangle);
// group.Children.Add(rectDrawing);
// var imageArea = new Rect(x, y, image.Width, image.Height);
diff --git a/Plugins/Flow.Launcher.Plugin.Program/Programs/Win32.cs b/Plugins/Flow.Launcher.Plugin.Program/Programs/Win32.cs
index e9aeb03a8..4cbdf25f2 100644
--- a/Plugins/Flow.Launcher.Plugin.Program/Programs/Win32.cs
+++ b/Plugins/Flow.Launcher.Plugin.Program/Programs/Win32.cs
@@ -545,12 +545,12 @@ namespace Flow.Launcher.Plugin.Program.Programs
.Distinct();
}
- private static string GetProgramPathFromRegistrySubKeys(RegistryKey root, string subkey)
+ private static string GetProgramPathFromRegistrySubKeys(RegistryKey root, string subKey)
{
var path = string.Empty;
try
{
- using (var key = root.OpenSubKey(subkey))
+ using (var key = root.OpenSubKey(subKey))
{
if (key == null)
return string.Empty;
diff --git a/Plugins/Flow.Launcher.Plugin.Shell/Main.cs b/Plugins/Flow.Launcher.Plugin.Shell/Main.cs
index 7ce597b96..f64f5d376 100644
--- a/Plugins/Flow.Launcher.Plugin.Shell/Main.cs
+++ b/Plugins/Flow.Launcher.Plugin.Shell/Main.cs
@@ -33,7 +33,7 @@ namespace Flow.Launcher.Plugin.Shell
string cmd = query.Search;
if (string.IsNullOrEmpty(cmd))
{
- return ResultsFromlHistory();
+ return ResultsFromHistory();
}
else
{
@@ -55,8 +55,8 @@ namespace Flow.Launcher.Plugin.Shell
else if (Directory.Exists(Path.GetDirectoryName(excmd) ?? string.Empty))
{
basedir = Path.GetDirectoryName(excmd);
- var dirn = Path.GetDirectoryName(cmd);
- dir = (dirn.EndsWith("/") || dirn.EndsWith(@"\")) ? dirn : cmd.Substring(0, dirn.Length + 1);
+ var dirName = Path.GetDirectoryName(cmd);
+ dir = (dirName.EndsWith("/") || dirName.EndsWith(@"\")) ? dirName : cmd.Substring(0, dirName.Length + 1);
}
if (basedir != null)
@@ -158,7 +158,7 @@ namespace Flow.Launcher.Plugin.Shell
return result;
}
- private List ResultsFromlHistory()
+ private List ResultsFromHistory()
{
IEnumerable history = _settings.CommandHistory.OrderByDescending(o => o.Value)
.Select(m => new Result
@@ -204,7 +204,7 @@ namespace Flow.Launcher.Plugin.Shell
info.Arguments = $"{(_settings.LeaveShellOpen ? "/k" : "/c")} {command}";
//// Use info.Arguments instead of info.ArgumentList to enable users better control over the arguments they are writing.
- //// Previous code using ArgumentList, commands needed to be seperated correctly:
+ //// Previous code using ArgumentList, commands needed to be separated correctly:
//// Incorrect:
// info.ArgumentList.Add(_settings.LeaveShellOpen ? "/k" : "/c");
// info.ArgumentList.Add(command); //<== info.ArgumentList.Add("mkdir \"c:\\test new\"");
@@ -377,9 +377,9 @@ namespace Flow.Launcher.Plugin.Shell
public List LoadContextMenus(Result selectedResult)
{
- var resultlist = new List
+ var results = new List
{
- new Result
+ new()
{
Title = context.API.GetTranslation("flowlauncher_plugin_cmd_run_as_different_user"),
AsyncAction = async c =>
@@ -390,7 +390,7 @@ namespace Flow.Launcher.Plugin.Shell
IcoPath = "Images/user.png",
Glyph = new GlyphInfo(FontFamily: "/Resources/#Segoe Fluent Icons", Glyph: "\xe7ee")
},
- new Result
+ new()
{
Title = context.API.GetTranslation("flowlauncher_plugin_cmd_run_as_administrator"),
Action = c =>
@@ -401,7 +401,7 @@ namespace Flow.Launcher.Plugin.Shell
IcoPath = "Images/admin.png",
Glyph = new GlyphInfo(FontFamily: "/Resources/#Segoe Fluent Icons", Glyph: "\xe7ef")
},
- new Result
+ new()
{
Title = context.API.GetTranslation("flowlauncher_plugin_cmd_copy"),
Action = c =>
@@ -414,7 +414,7 @@ namespace Flow.Launcher.Plugin.Shell
}
};
- return resultlist;
+ return results;
}
}
}
diff --git a/Plugins/Flow.Launcher.Plugin.Sys/Main.cs b/Plugins/Flow.Launcher.Plugin.Sys/Main.cs
index 9e4a4ed1c..43f293f74 100644
--- a/Plugins/Flow.Launcher.Plugin.Sys/Main.cs
+++ b/Plugins/Flow.Launcher.Plugin.Sys/Main.cs
@@ -95,11 +95,11 @@ namespace Flow.Launcher.Plugin.Sys
IcoPath = "Images\\shutdown.png",
Action = c =>
{
- var reuslt = MessageBox.Show(
+ var result = MessageBox.Show(
context.API.GetTranslation("flowlauncher_plugin_sys_dlgtext_shutdown_computer"),
context.API.GetTranslation("flowlauncher_plugin_sys_shutdown_computer"),
MessageBoxButton.YesNo, MessageBoxImage.Warning);
- if (reuslt == MessageBoxResult.Yes)
+ if (result == MessageBoxResult.Yes)
{
Process.Start("shutdown", "/s /t 0");
}
diff --git a/Plugins/Flow.Launcher.Plugin.Url/Languages/en.xaml b/Plugins/Flow.Launcher.Plugin.Url/Languages/en.xaml
index eff1ac263..461ccd197 100644
--- a/Plugins/Flow.Launcher.Plugin.Url/Languages/en.xaml
+++ b/Plugins/Flow.Launcher.Plugin.Url/Languages/en.xaml
@@ -7,7 +7,7 @@
New Tab
Open url:{0}
- Can't open url:{0}
+ Can't open url:{0}
URL
Open the typed URL from Flow Launcher
diff --git a/Plugins/Flow.Launcher.Plugin.Url/Main.cs b/Plugins/Flow.Launcher.Plugin.Url/Main.cs
index c507f0b1c..4831bac1d 100644
--- a/Plugins/Flow.Launcher.Plugin.Url/Main.cs
+++ b/Plugins/Flow.Launcher.Plugin.Url/Main.cs
@@ -74,7 +74,7 @@ namespace Flow.Launcher.Plugin.Url
}
catch(Exception)
{
- context.API.ShowMsg(string.Format(context.API.GetTranslation("flowlauncher_plugin_url_canot_open_url"), raw));
+ context.API.ShowMsg(string.Format(context.API.GetTranslation("flowlauncher_plugin_url_cannot_open_url"), raw));
return false;
}
}
diff --git a/Plugins/Flow.Launcher.Plugin.WebSearch/SearchSourceSetting.xaml.cs b/Plugins/Flow.Launcher.Plugin.WebSearch/SearchSourceSetting.xaml.cs
index c19396da0..60863ee82 100644
--- a/Plugins/Flow.Launcher.Plugin.WebSearch/SearchSourceSetting.xaml.cs
+++ b/Plugins/Flow.Launcher.Plugin.WebSearch/SearchSourceSetting.xaml.cs
@@ -21,16 +21,16 @@ namespace Flow.Launcher.Plugin.WebSearch
{
_oldSearchSource = old;
_viewModel = new SearchSourceViewModel {SearchSource = old.DeepCopy()};
- Initilize(sources, context, Action.Edit);
+ Initialize(sources, context, Action.Edit);
}
public SearchSourceSettingWindow(IList sources, PluginInitContext context)
{
_viewModel = new SearchSourceViewModel {SearchSource = new SearchSource()};
- Initilize(sources, context, Action.Add);
+ Initialize(sources, context, Action.Add);
}
- private async void Initilize(IList sources, PluginInitContext context, Action action)
+ private async void Initialize(IList sources, PluginInitContext context, Action action)
{
InitializeComponent();
DataContext = _viewModel;
diff --git a/Plugins/Flow.Launcher.Plugin.WindowsSettings/Helper/ResultHelper.cs b/Plugins/Flow.Launcher.Plugin.WindowsSettings/Helper/ResultHelper.cs
index 38d06b2cb..0bfb00b34 100644
--- a/Plugins/Flow.Launcher.Plugin.WindowsSettings/Helper/ResultHelper.cs
+++ b/Plugins/Flow.Launcher.Plugin.WindowsSettings/Helper/ResultHelper.cs
@@ -18,7 +18,7 @@ namespace Flow.Launcher.Plugin.WindowsSettings.Helper
public static void Init(IPublicAPI api) => _api = api;
- private static List GetDefaultReuslts(in IEnumerable list,
+ private static List GetDefaultResults(in IEnumerable list,
string windowsSettingIconPath,
string controlPanelIconPath)
{
@@ -45,7 +45,7 @@ namespace Flow.Launcher.Plugin.WindowsSettings.Helper
{
if (string.IsNullOrWhiteSpace(query.Search))
{
- return GetDefaultReuslts(list, windowsSettingIconPath, controlPanelIconPath);
+ return GetDefaultResults(list, windowsSettingIconPath, controlPanelIconPath);
}
var resultList = new List();
@@ -110,7 +110,7 @@ namespace Flow.Launcher.Plugin.WindowsSettings.Helper
return resultList;
}
- private const int TaskLinkScorePanelty = 50;
+ private const int TaskLinkScorePenalty = 50;
private static Result NewSettingResult(int score, string type, string windowsSettingIconPath, string controlPanelIconPath, WindowsSetting entry) => new()
{
@@ -120,7 +120,7 @@ namespace Flow.Launcher.Plugin.WindowsSettings.Helper
SubTitle = GetSubtitle(entry.Area, type),
Title = entry.Name,
ContextData = entry,
- Score = score - (type == "TaskLink" ? TaskLinkScorePanelty : 0),
+ Score = score - (type == "TaskLink" ? TaskLinkScorePenalty : 0),
};
private static string GetSubtitle(string section, string entryType)