diff --git a/src/plugins/fakevim/fakevimactions.cpp b/src/plugins/fakevim/fakevimactions.cpp index de1f06f9133..a6dc84b9b27 100644 --- a/src/plugins/fakevim/fakevimactions.cpp +++ b/src/plugins/fakevim/fakevimactions.cpp @@ -94,6 +94,7 @@ FakeVimSettings::FakeVimSettings() setup(&showCmd, true, "ShowCmd", "sc", Tr::tr("Show partial command")); setup(&relativeNumber, false, "RelativeNumber", "rnu", Tr::tr("Show line numbers relative to cursor")); setup(&blinkingCursor, false, "BlinkingCursor", "bc", Tr::tr("Blinking cursor")); + setup(&systemEncoding, false, "SystemEncoding", {}, Tr::tr("Use system encoding for :source")); setup(&scrollOff, 0, "ScrollOff", "so", Tr::tr("Scroll offset:")); setup(&backspace, "indent,eol,start", "Backspace", "bs", Tr::tr("Backspace:")); @@ -149,7 +150,8 @@ FakeVimSettings::FakeVimSettings() showCmd, startOfLine, passKeys, - blinkingCursor + blinkingCursor, + HostOsInfo::isWindowsHost() ? LayoutItem(systemEncoding) : empty }, Column { incSearch, diff --git a/src/plugins/fakevim/fakevimactions.h b/src/plugins/fakevim/fakevimactions.h index eea53f50c1a..94ba02a7f3a 100644 --- a/src/plugins/fakevim/fakevimactions.h +++ b/src/plugins/fakevim/fakevimactions.h @@ -151,6 +151,7 @@ public: FvBoolAspect emulateSurround; FvBoolAspect blinkingCursor; + FvBoolAspect systemEncoding; private: void setup(FvBaseAspect *aspect, const QVariant &value, diff --git a/src/plugins/fakevim/fakevimhandler.cpp b/src/plugins/fakevim/fakevimhandler.cpp index bb3586b6329..8a9adac4415 100644 --- a/src/plugins/fakevim/fakevimhandler.cpp +++ b/src/plugins/fakevim/fakevimhandler.cpp @@ -6625,7 +6625,8 @@ bool FakeVimHandler::Private::handleExSourceCommand(const ExCommand &cmd) } else if (!line.isEmpty() && !inFunction) { //qDebug() << "EXECUTING: " << line; ExCommand cmd; - QString commandLine = QString::fromLocal8Bit(line); + QString commandLine = s.systemEncoding() ? QString::fromLocal8Bit(line) + : QString::fromUtf8(line); while (parseExCommand(&commandLine, &cmd)) { if (!handleExCommandHelper(cmd)) break;