diff options
author | hjk <qtc-committer@nokia.com> | 2012-05-03 10:43:04 +0200 |
---|---|---|
committer | hjk <qthjk@ovi.com> | 2012-05-03 11:41:24 +0200 |
commit | 8b37921bc567163c827b695c6641b57db0a77ccf (patch) | |
tree | f6974fc7881525946a13b48c8c41e3b702194991 /src/plugins | |
parent | 4ea0cde8bff3eda02a0435d232f60ed53b8d9818 (diff) | |
download | qt-creator-8b37921bc567163c827b695c6641b57db0a77ccf.tar.gz |
fakevim: don't allow non-positive numbers for tabstop and shiftwidth
Task-number: QTCREATORBUG-7375
Change-Id: I947dd903a5e7d09e367afbc771582793e6c008f1
Reviewed-by: Eike Ziller <eike.ziller@nokia.com>
Reviewed-by: Robert Löhning <robert.loehning@nokia.com>
Diffstat (limited to 'src/plugins')
-rw-r--r-- | src/plugins/fakevim/fakevimactions.cpp | 25 | ||||
-rw-r--r-- | src/plugins/fakevim/fakevimactions.h | 1 | ||||
-rw-r--r-- | src/plugins/fakevim/fakevimhandler.cpp | 7 |
3 files changed, 23 insertions, 10 deletions
diff --git a/src/plugins/fakevim/fakevimactions.cpp b/src/plugins/fakevim/fakevimactions.cpp index 00bcaf4f48..1dd99fbee2 100644 --- a/src/plugins/fakevim/fakevimactions.cpp +++ b/src/plugins/fakevim/fakevimactions.cpp @@ -31,6 +31,7 @@ **************************************************************************/ #include "fakevimactions.h" +#include "fakevimhandler.h" // Please do not add any direct dependencies to other Qt Creator code here. // Instead emit signals and let the FakeVimPlugin channel the information to @@ -41,15 +42,8 @@ #include <utils/qtcassert.h> #include <QDebug> -#include <QFile> #include <QObject> -#include <QPointer> -#include <QProcess> -#include <QRegExp> -#include <QTextStream> -#include <QtAlgorithms> #include <QCoreApplication> -#include <QStack> using namespace Utils; @@ -107,6 +101,23 @@ SavedAction *FakeVimSettings::item(const QString &name) return m_items.value(m_nameToCode.value(name, -1), 0); } +QString FakeVimSettings::trySetValue(const QString &name, const QString &value) +{ + int code = m_nameToCode.value(name, -1); + if (code == -1) + return FakeVimHandler::tr("Unknown option: %1").arg(name); + if (code == ConfigTabStop || code == ConfigShiftWidth) { + if (value.toInt() <= 0) + return FakeVimHandler::tr("Argument must be positive: %1=%2") + .arg(name).arg(value); + } + SavedAction *act = item(code); + if (!act) + return FakeVimHandler::tr("Unknown option: %1").arg(name); + act->setValue(value); + return QString(); +} + FakeVimSettings *theFakeVimSettings() { static FakeVimSettings *instance = 0; diff --git a/src/plugins/fakevim/fakevimactions.h b/src/plugins/fakevim/fakevimactions.h index c05f601f93..084a4f2862 100644 --- a/src/plugins/fakevim/fakevimactions.h +++ b/src/plugins/fakevim/fakevimactions.h @@ -85,6 +85,7 @@ public: Utils::SavedAction *item(int code); Utils::SavedAction *item(const QString &name); + QString trySetValue(const QString &name, const QString &value); void readSettings(QSettings *settings); void writeSettings(QSettings *settings); diff --git a/src/plugins/fakevim/fakevimhandler.cpp b/src/plugins/fakevim/fakevimhandler.cpp index 68ceafac3f..2b7a3f7a04 100644 --- a/src/plugins/fakevim/fakevimhandler.cpp +++ b/src/plugins/fakevim/fakevimhandler.cpp @@ -3586,9 +3586,10 @@ bool FakeVimHandler::Private::handleExSetCommand(const ExCommand &cmd) } else if (cmd.args.contains('=')) { // Non-boolean config to set. int p = cmd.args.indexOf('='); - act = theFakeVimSettings()->item(cmd.args.left(p)); - if (act) - act->setValue(cmd.args.mid(p + 1)); + QString error = theFakeVimSettings() + ->trySetValue(cmd.args.left(p), cmd.args.mid(p + 1)); + if (!error.isEmpty()) + showRedMessage(error); } else { showRedMessage(FakeVimHandler::tr("Unknown option: ") + cmd.args); } |