diff --git a/src/dialogs/katedialogs.cpp b/src/dialogs/katedialogs.cpp --- a/src/dialogs/katedialogs.cpp +++ b/src/dialogs/katedialogs.cpp @@ -902,6 +902,22 @@ layout->addWidget(tabWidget); setLayout(layout); + + // support variable expansion in backup prefix/suffix + KTextEditor::Editor::instance()->addVariableExpansion( + { uiadv->edtBackupPrefix, uiadv->edtBackupSuffix }, + { + QStringLiteral("Date:Locale"), + QStringLiteral("Date:ISO"), + QStringLiteral("Date:"), + QStringLiteral("Time:Locale"), + QStringLiteral("Time:ISO"), + QStringLiteral("Time:"), + QStringLiteral("ENV:"), + QStringLiteral("JS:"), + QStringLiteral("UUID") + } + ); } KateSaveConfigTab::~KateSaveConfigTab() diff --git a/src/document/katedocument.cpp b/src/document/katedocument.cpp --- a/src/document/katedocument.cpp +++ b/src/document/katedocument.cpp @@ -50,6 +50,7 @@ #include "printing/kateprinter.h" #include "kateabstractinputmode.h" #include "katetemplatehandler.h" +#include "katevariableexpansionmanager.h" #if EDITORCONFIG_FOUND #include "editorconfig.h" @@ -2588,18 +2589,25 @@ /** * else: try to backup */ - if (config()->backupPrefix().contains(QDir::separator())) { + const auto backupPrefix = KTextEditor::EditorPrivate::self()->variableExpansionManager()->expandText(config()->backupPrefix(), nullptr); + const auto backupSuffix = KTextEditor::EditorPrivate::self()->variableExpansionManager()->expandText(config()->backupSuffix(), nullptr); + if (backupPrefix.isEmpty() && backupSuffix.isEmpty()) { + // no sane backup possible + return true; + } + + if (backupPrefix.contains(QDir::separator())) { /** * replace complete path, as prefix is a path! */ - u.setPath(config()->backupPrefix() + u.fileName() + config()->backupSuffix()); + u.setPath(backupPrefix + u.fileName() + backupSuffix); } else { /** * replace filename in url */ const QString fileName = u.fileName(); u = u.adjusted(QUrl::RemoveFilename); - u.setPath(u.path() + config()->backupPrefix() + fileName + config()->backupSuffix()); + u.setPath(u.path() + backupPrefix + fileName + backupSuffix); } qCDebug(LOG_KTE) << "backup src file name: " << url();