diff --git a/src/plugins/fakevim/fakevimhandler.cpp b/src/plugins/fakevim/fakevimhandler.cpp index 1a48d92d16c5d797acf43224a6697e3e874ae363..d0a5fc9b6c22deb9b6af1c8ee40197f9574bb03c 100644 --- a/src/plugins/fakevim/fakevimhandler.cpp +++ b/src/plugins/fakevim/fakevimhandler.cpp @@ -412,6 +412,7 @@ public: bool isVisualCharMode() const { return m_visualMode == VisualCharMode; } bool isVisualLineMode() const { return m_visualMode == VisualLineMode; } bool isVisualBlockMode() const { return m_visualMode == VisualBlockMode; } + void updateEditor(); public: QTextEdit *m_textedit; @@ -698,6 +699,7 @@ EventResult FakeVimHandler::Private::handleEvent(QKeyEvent *ev) void FakeVimHandler::Private::installEventFilter() { EDITOR(installEventFilter(q)); + updateEditor(); } void FakeVimHandler::Private::setupWidget() @@ -712,6 +714,8 @@ void FakeVimHandler::Private::setupWidget() m_wasReadOnly = EDITOR(isReadOnly()); //EDITOR(setReadOnly(true)); + updateEditor(); + QTextCursor tc = EDITOR(textCursor()); if (tc.hasSelection()) { int pos = tc.position(); @@ -730,6 +734,12 @@ void FakeVimHandler::Private::setupWidget() updateMiniBuffer(); } +void FakeVimHandler::Private::updateEditor() +{ + const int charWidth = QFontMetrics(EDITOR(font())).width(QChar(' ')); + EDITOR(setTabStopWidth(charWidth * config(ConfigTabStop).toInt())); +} + void FakeVimHandler::Private::restoreWidget() { //showBlackMessage(QString()); @@ -2047,8 +2057,8 @@ EventResult FakeVimHandler::Private::handleInsertMode(int key, int, m_lastInsertion.clear(); } else if (key == Key_Tab && hasConfig(ConfigExpandTab)) { m_justAutoIndented = 0; - int ts = config(ConfigTabStop).toInt(); - int col = cursorColumnInDocument(); + const int ts = config(ConfigTabStop).toInt(); + const int col = cursorColumnInDocument(); QString str = QString(ts - col % ts, ' '); m_lastInsertion.append(str); m_tc.insertText(str); @@ -2535,6 +2545,7 @@ void FakeVimHandler::Private::handleExCommand(const QString &cmd0) passUnknownSetCommand(arg); } updateMiniBuffer(); + updateEditor(); } else if (reHistory.indexIn(cmd) != -1) { // :history QString arg = reSet.cap(3); if (arg.isEmpty()) {