diff --git a/autotests/src/variable_test.cpp b/autotests/src/variable_test.cpp --- a/autotests/src/variable_test.cpp +++ b/autotests/src/variable_test.cpp @@ -294,6 +294,10 @@ editor->expandText(QStringLiteral("%{JS:3 + %{JS:2 + 1}}"), view, out); QCOMPARE(out, QStringLiteral("6")); + // PercentEncoded: since 5.67 + editor->expandText(QStringLiteral("%{PercentEncoded:{a&b+c=d} \"}"), view, out); + QCOMPARE(out, QStringLiteral("%7Ba%26b%2Bc%3Dd%7D%20%22")); + // UUID editor->expandText(QStringLiteral("%{UUID}"), view, out); QCOMPARE(out.count(QLatin1Char('-')), 4); diff --git a/src/utils/katevariableexpansionmanager.cpp b/src/utils/katevariableexpansionmanager.cpp --- a/src/utils/katevariableexpansionmanager.cpp +++ b/src/utils/katevariableexpansionmanager.cpp @@ -171,6 +171,11 @@ }, true)); + mng.addVariable(Variable( + QStringLiteral("PercentEncoded:"), i18n("Encode text to make it URL compatible."), [](const QStringView &str, KTextEditor::View *) { + return QString::fromUtf8(QUrl::toPercentEncoding(str.mid(15).toString())); + }, true)); + mng.addVariable(Variable( QStringLiteral("UUID"), i18n("Generate a new UUID."), [](const QStringView &, KTextEditor::View *) { return QUuid::createUuid().toString(QUuid::WithoutBraces); }, false)); }