Release v0.6.47: allow multi-word auto-correction replacements

This commit is contained in:
agrynco committed 2026-11-05 22:51:57 +02:00
1 parent 5de5b791bf
commit e33387c2d5
13 files changed
+48 -29

No files matched your search

+1 -1
View File
@@ -257,7 +257,7 @@ std::optional<AutoSuggestion> AutoCorrector::suggest(const std::wstring &typed,
{
auto replacement = settings.autoReplacements.find(small);
if (replacement != settings.autoReplacements.end() &&
replacement->second.find_first_not_of(alphabet) == small.npos)
replacement->second.find_first_not_of(alphabet + L" ") == small.npos)
return sameLayout(replacement->second);
}
auto personal = [&](const std::wstring &language, const std::wstring &candidate)
+4 -2
View File
@@ -118,9 +118,11 @@ void validateSettings(const Settings &s)
L"абвгдеёжзийклмнопрстуфхцчшщъыьэюя"})
valid |= !from.empty() && !to.empty() && from.size() <= 32 && to.size() <= 32 &&
from == lower(from) && to == lower(to) && from != to &&
from.find_first_not_of(alphabet) == from.npos && to.find_first_not_of(alphabet) == to.npos;
from.find_first_not_of(alphabet) == from.npos &&
to.find_first_not_of(std::wstring(alphabet) + L" ") == to.npos &&
to.front() != L' ' && to.back() != L' ' && to.find(L" ") == to.npos;
if (!valid)
throw std::runtime_error("Replacement pairs must be different lowercase words of 1-32 letters in the same language");
throw std::runtime_error("Use a lowercase typo of 1-32 letters and a different correction of 1-32 characters in the same language. Single spaces between correction words are allowed.");
}
for (const auto &[language, words] : s.autoWords)
{
+1 -1
View File
@@ -1285,7 +1285,7 @@ void showAutoOptions(HWND parent, SettingsView *v)
label(w, L"Enter punctuation without spaces or separators. These characters are kept.", 18, 530, 525);
checkbox(w, L"Use custom &replacements (take priority over dictionaries)", 414, 18, 562, 524);
check(w, 414, v->draft.autoReplace);
label(w, L"One pair per line: typo=correction (same language, letters only)", 18, 592, 525);
label(w, L"One pair per line: typo=correction (same language; correction may contain spaces)", 18, 592, 525);
edit(w, 416, 18, 618, 524, 70, ES_MULTILINE | WS_VSCROLL | ES_AUTOVSCROLL | ES_WANTRETURN);
std::wstring pairs;
for (const auto &[from, to] : v->draft.autoReplacements) pairs += from + L"=" + to + L"\r\n";
+1 -1
View File
@@ -2,7 +2,7 @@
#include "platform.h"
namespace ks
{
inline constexpr wchar_t AppVersion[] = L"0.6.46";
inline constexpr wchar_t AppVersion[] = L"0.6.47";
inline constexpr UINT UpdateMessage = WM_APP + 7;
inline constexpr UINT UpdateCheckIntervalMs = 6 * 60 * 60 * 1000;
inline constexpr UINT UpdateNotificationRetryMs = 5 * 60 * 1000;