forked from qt-creator/qt-creator
FakeVim: Uppercase register appends to lowercase
Change-Id: Ida1e796637ad37cbb3c2f403151d01af1f3b2ade Reviewed-by: hjk <hjk121@nokiamail.com>
This commit is contained in:
@@ -2615,6 +2615,43 @@ void FakeVimPlugin::test_vim_ex_yank()
|
|||||||
"aaabcb" X "cabcbc def" N
|
"aaabcb" X "cabcbc def" N
|
||||||
"ghi jkl" N
|
"ghi jkl" N
|
||||||
);
|
);
|
||||||
|
|
||||||
|
// uppercase register appends to lowercase
|
||||||
|
data.setText(
|
||||||
|
"abc" N
|
||||||
|
"def" N
|
||||||
|
"ghi" N
|
||||||
|
);
|
||||||
|
KEYS("\"zdd" "\"zp",
|
||||||
|
"def" N
|
||||||
|
X "abc" N
|
||||||
|
"ghi" N
|
||||||
|
);
|
||||||
|
KEYS("k\"Zyy" "jj\"zp",
|
||||||
|
"def" N
|
||||||
|
"abc" N
|
||||||
|
"ghi" N
|
||||||
|
X "abc" N
|
||||||
|
"def" N
|
||||||
|
);
|
||||||
|
KEYS("k\"Zdd" "j\"Zp",
|
||||||
|
"def" N
|
||||||
|
"abc" N
|
||||||
|
"abc" N
|
||||||
|
"def" N
|
||||||
|
X "abc" N
|
||||||
|
"def" N
|
||||||
|
"ghi" N
|
||||||
|
);
|
||||||
|
KEYS("\"zdk" "gg\"zp",
|
||||||
|
"def" N
|
||||||
|
X "def" N
|
||||||
|
"abc" N
|
||||||
|
"abc" N
|
||||||
|
"abc" N
|
||||||
|
"def" N
|
||||||
|
"ghi" N
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
void FakeVimPlugin::test_vim_ex_delete()
|
void FakeVimPlugin::test_vim_ex_delete()
|
||||||
|
|||||||
@@ -2107,7 +2107,7 @@ public:
|
|||||||
QString registerContents(int reg) const;
|
QString registerContents(int reg) const;
|
||||||
void setRegister(int reg, const QString &contents, RangeMode mode);
|
void setRegister(int reg, const QString &contents, RangeMode mode);
|
||||||
RangeMode registerRangeMode(int reg) const;
|
RangeMode registerRangeMode(int reg) const;
|
||||||
void getRegisterType(int reg, bool *isClipboard, bool *isSelection) const;
|
void getRegisterType(int *reg, bool *isClipboard, bool *isSelection, bool *append = 0) const;
|
||||||
|
|
||||||
void recordJump(int position = -1);
|
void recordJump(int position = -1);
|
||||||
void jump(int distance);
|
void jump(int distance);
|
||||||
@@ -8247,7 +8247,7 @@ RangeMode FakeVimHandler::Private::registerRangeMode(int reg) const
|
|||||||
{
|
{
|
||||||
bool isClipboard;
|
bool isClipboard;
|
||||||
bool isSelection;
|
bool isSelection;
|
||||||
getRegisterType(reg, &isClipboard, &isSelection);
|
getRegisterType(®, &isClipboard, &isSelection);
|
||||||
|
|
||||||
if (isClipboard || isSelection) {
|
if (isClipboard || isSelection) {
|
||||||
QClipboard *clipboard = QApplication::clipboard();
|
QClipboard *clipboard = QApplication::clipboard();
|
||||||
@@ -8275,7 +8275,8 @@ void FakeVimHandler::Private::setRegister(int reg, const QString &contents, Rang
|
|||||||
{
|
{
|
||||||
bool copyToClipboard;
|
bool copyToClipboard;
|
||||||
bool copyToSelection;
|
bool copyToSelection;
|
||||||
getRegisterType(reg, ©ToClipboard, ©ToSelection);
|
bool append;
|
||||||
|
getRegisterType(®, ©ToClipboard, ©ToSelection, &append);
|
||||||
|
|
||||||
QString contents2 = contents;
|
QString contents2 = contents;
|
||||||
if ((mode == RangeLineMode || mode == RangeLineModeExclusive)
|
if ((mode == RangeLineMode || mode == RangeLineModeExclusive)
|
||||||
@@ -8290,6 +8291,9 @@ void FakeVimHandler::Private::setRegister(int reg, const QString &contents, Rang
|
|||||||
if (copyToSelection)
|
if (copyToSelection)
|
||||||
setClipboardData(contents2, mode, QClipboard::Selection);
|
setClipboardData(contents2, mode, QClipboard::Selection);
|
||||||
} else {
|
} else {
|
||||||
|
if (append)
|
||||||
|
g.registers[reg].contents.append(contents2);
|
||||||
|
else
|
||||||
g.registers[reg].contents = contents2;
|
g.registers[reg].contents = contents2;
|
||||||
g.registers[reg].rangemode = mode;
|
g.registers[reg].rangemode = mode;
|
||||||
}
|
}
|
||||||
@@ -8299,7 +8303,7 @@ QString FakeVimHandler::Private::registerContents(int reg) const
|
|||||||
{
|
{
|
||||||
bool copyFromClipboard;
|
bool copyFromClipboard;
|
||||||
bool copyFromSelection;
|
bool copyFromSelection;
|
||||||
getRegisterType(reg, ©FromClipboard, ©FromSelection);
|
getRegisterType(®, ©FromClipboard, ©FromSelection);
|
||||||
|
|
||||||
if (copyFromClipboard || copyFromSelection) {
|
if (copyFromClipboard || copyFromSelection) {
|
||||||
QClipboard *clipboard = QApplication::clipboard();
|
QClipboard *clipboard = QApplication::clipboard();
|
||||||
@@ -8312,18 +8316,25 @@ QString FakeVimHandler::Private::registerContents(int reg) const
|
|||||||
return g.registers[reg].contents;
|
return g.registers[reg].contents;
|
||||||
}
|
}
|
||||||
|
|
||||||
void FakeVimHandler::Private::getRegisterType(int reg, bool *isClipboard, bool *isSelection) const
|
void FakeVimHandler::Private::getRegisterType(int *reg, bool *isClipboard, bool *isSelection, bool *append) const
|
||||||
{
|
{
|
||||||
bool clipboard = false;
|
bool clipboard = false;
|
||||||
bool selection = false;
|
bool selection = false;
|
||||||
|
|
||||||
if (reg == QLatin1Char('"')) {
|
// If register is uppercase, append content to lower case register on yank/delete.
|
||||||
|
const QChar c(*reg);
|
||||||
|
if (append != 0)
|
||||||
|
*append = c.isUpper();
|
||||||
|
if (c.isUpper())
|
||||||
|
*reg = c.toLower().unicode();
|
||||||
|
|
||||||
|
if (c == QLatin1Char('"')) {
|
||||||
QStringList list = config(ConfigClipboard).toString().split(QLatin1Char(','));
|
QStringList list = config(ConfigClipboard).toString().split(QLatin1Char(','));
|
||||||
clipboard = list.contains(_("unnamedplus"));
|
clipboard = list.contains(_("unnamedplus"));
|
||||||
selection = list.contains(_("unnamed"));
|
selection = list.contains(_("unnamed"));
|
||||||
} else if (reg == QLatin1Char('+')) {
|
} else if (c == QLatin1Char('+')) {
|
||||||
clipboard = true;
|
clipboard = true;
|
||||||
} else if (reg == QLatin1Char('*')) {
|
} else if (c == QLatin1Char('*')) {
|
||||||
selection = true;
|
selection = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user