Release v0.6.12: improve continuous correction and resize log viewer

This commit is contained in:
2026-10-30 00:15:09 +02:00
parent c326db7dc5
commit 77f27ea087
17 changed files with 220 additions and 99 deletions
+10 -3
View File
@@ -172,7 +172,12 @@ std::optional<AutoSuggestion> AutoCorrector::suggest(const std::wstring &typed,
if (d.rank(word) || personal(language, word))
return {};
std::optional<AutoSuggestion> candidate;
int matches = 0;
std::optional<std::wstring> matchedText;
auto priority = [&](int layout)
{
auto language = layoutLanguage(layouts[layout]);
return std::find(settings.autoLanguages.begin(), settings.autoLanguages.end(), language) - settings.autoLanguages.begin();
};
for (int i = 0; i < (int)layouts.size(); ++i)
{
if (i == source || !layouts[i].convertible ||
@@ -187,9 +192,11 @@ std::optional<AutoSuggestion> AutoCorrector::suggest(const std::wstring &typed,
int rank = personal(dictionary->first, converted) ? 1 : dictionary->second.rank(converted);
if (!rank)
continue;
if (++matches > 1)
if (matchedText && *matchedText != converted)
return {};
if (settings.autoMaxRank == 0 || rank <= settings.autoMaxRank)
matchedText = converted;
if ((settings.autoMaxRank == 0 || rank <= settings.autoMaxRank) &&
(!candidate || priority(i) < priority(candidate->target)))
candidate = AutoSuggestion{source, i, prefix + converted + suffix};
}
return candidate;