aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorhjk <qtc-committer@nokia.com>2012-05-03 10:43:04 +0200
committerhjk <qthjk@ovi.com>2012-05-03 11:41:24 +0200
commit8b37921bc567163c827b695c6641b57db0a77ccf (patch)
treef6974fc7881525946a13b48c8c41e3b702194991
parent4ea0cde8bff3eda02a0435d232f60ed53b8d9818 (diff)
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>
-rw-r--r--src/plugins/fakevim/fakevimactions.cpp25
-rw-r--r--src/plugins/fakevim/fakevimactions.h1
-rw-r--r--src/plugins/fakevim/fakevimhandler.cpp7
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);
}