Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
Tobias Hunger
qt-creator
Commits
495c3f52
Commit
495c3f52
authored
Aug 11, 2010
by
hjk
Browse files
fakevim: improve selection interaction with main text editor
parent
16b5f78c
Changes
5
Hide whitespace changes
Inline
Side-by-side
src/plugins/fakevim/fakevimactions.cpp
View file @
495c3f52
...
...
@@ -132,6 +132,13 @@ FakeVimSettings *theFakeVimSettings()
item
->
setValue
(
false
);
instance
->
insertItem
(
ConfigReadVimRc
,
item
);
item
=
new
SavedAction
(
instance
);
item
->
setValue
(
true
);
item
->
setDefaultValue
(
true
);
item
->
setSettingsKey
(
group
,
_
(
"ExportSelection"
));
item
->
setCheckable
(
true
);
instance
->
insertItem
(
ConfigExportSelection
,
item
);
item
=
new
SavedAction
(
instance
);
item
->
setValue
(
true
);
item
->
setDefaultValue
(
true
);
...
...
src/plugins/fakevim/fakevimactions.h
View file @
495c3f52
...
...
@@ -43,6 +43,8 @@ enum FakeVimSettingsCode
{
ConfigUseFakeVim
,
ConfigReadVimRc
,
ConfigExportSelection
,
ConfigStartOfLine
,
ConfigHlSearch
,
ConfigTabStop
,
...
...
src/plugins/fakevim/fakevimhandler.cpp
View file @
495c3f52
...
...
@@ -733,6 +733,7 @@ public:
void
selectQuotedStringTextObject
(
bool
inner
,
int
type
);
Q_SLOT
void
importSelection
();
void
exportSelection
();
void
insertInInsertMode
(
const
QString
&
text
);
public:
...
...
@@ -1050,20 +1051,20 @@ EventResult FakeVimHandler::Private::handleEvent(QKeyEvent *ev)
// key = shift(key);
//}
QTC_ASSERT
(
m_mode
==
InsertMode
||
m_mode
==
ReplaceMode
||
!
m_tc
.
atBlockEnd
()
||
m_tc
.
block
().
length
()
<=
1
,
qDebug
()
<<
"Cursor at EOL before key handler"
);
//
QTC_ASSERT(m_mode == InsertMode || m_mode == ReplaceMode
//
|| !m_tc.atBlockEnd() || m_tc.block().length() <= 1,
//
qDebug() << "Cursor at EOL before key handler");
EventResult
result
=
handleKey
(
Input
(
key
,
mods
,
ev
->
text
()));
//
t
he command might have destroyed the editor
//
T
he command might have destroyed the editor
.
if
(
m_textedit
||
m_plaintextedit
)
{
// We fake vi-style end-of-line behaviour
m_fakeEnd
=
atEndOfLine
()
&&
m_mode
==
CommandMode
&&
!
isVisualBlockMode
();
QTC_ASSERT
(
m_mode
==
InsertMode
||
m_mode
==
ReplaceMode
||
!
m_tc
.
atBlockEnd
()
||
m_tc
.
block
().
length
()
<=
1
,
qDebug
()
<<
"Cursor at EOL after key handler"
);
//
QTC_ASSERT(m_mode == InsertMode || m_mode == ReplaceMode
//
|| !m_tc.atBlockEnd() || m_tc.block().length() <= 1,
//
qDebug() << "Cursor at EOL after key handler");
if
(
m_fakeEnd
)
moveLeft
();
...
...
@@ -1075,6 +1076,8 @@ EventResult FakeVimHandler::Private::handleEvent(QKeyEvent *ev)
if
(
hasConfig
(
ConfigShowMarks
))
updateSelection
();
exportSelection
();
return
result
;
}
...
...
@@ -1100,6 +1103,41 @@ void FakeVimHandler::Private::setupWidget()
updateCursor
();
}
void
FakeVimHandler
::
Private
::
exportSelection
()
{
if
(
!
hasConfig
(
ConfigExportSelection
))
return
;
// FIXME: That's hacky and does not work for block selections
// and the clipboard is not filled if the selections are updated
// using the keyboard.
QTextCursor
tc
=
EDITOR
(
textCursor
());
int
pos
=
position
();
int
anc
=
anchor
();
if
(
m_visualMode
==
VisualBlockMode
)
{
//tc.setPosition(anc, MoveAnchor);
//tc.setPosition(pos, KeepAnchor);
//EDITOR(setTextCursor(tc));
}
else
if
(
m_visualMode
==
VisualLineMode
)
{
int
posLine
=
lineForPosition
(
pos
);
int
ancLine
=
lineForPosition
(
anc
);
if
(
anc
<
pos
)
{
pos
=
lastPositionInLine
(
posLine
);
anc
=
firstPositionInLine
(
ancLine
);
}
else
{
pos
=
firstPositionInLine
(
posLine
);
anc
=
lastPositionInLine
(
ancLine
);
}
tc
.
setPosition
(
anc
,
MoveAnchor
);
tc
.
setPosition
(
pos
,
KeepAnchor
);
EDITOR
(
setTextCursor
(
tc
));
}
else
if
(
m_visualMode
==
VisualCharMode
)
{
tc
.
setPosition
(
anc
,
MoveAnchor
);
tc
.
setPosition
(
pos
,
KeepAnchor
);
EDITOR
(
setTextCursor
(
tc
));
}
}
void
FakeVimHandler
::
Private
::
importSelection
()
{
QTextCursor
tc
=
EDITOR
(
textCursor
());
...
...
@@ -1130,6 +1168,7 @@ void FakeVimHandler::Private::importSelection()
tc
.
clearSelection
();
EDITOR
(
setTextCursor
(
tc
));
updateSelection
();
exportSelection
();
}
void
FakeVimHandler
::
Private
::
updateEditor
()
...
...
src/plugins/fakevim/fakevimoptions.ui
View file @
495c3f52
...
...
@@ -73,6 +73,16 @@
</property>
</widget>
</item>
<item
row=
"3"
column=
"2"
>
<widget
class=
"QCheckBox"
name=
"checkBoxExportSelection"
>
<property
name=
"text"
>
<string>
Export selected text automatically
</string>
</property>
<property
name=
"toolTip"
>
<string>
This might slow down editing
</string>
</property>
</widget>
</item>
<item
row=
"3"
column=
"0"
colspan=
"2"
>
<widget
class=
"QCheckBox"
name=
"checkBoxSmartTab"
>
<property
name=
"text"
>
...
...
src/plugins/fakevim/fakevimplugin.cpp
View file @
495c3f52
...
...
@@ -169,6 +169,8 @@ QWidget *FakeVimOptionPage::createPage(QWidget *parent)
m_ui
.
spinBoxShiftWidth
);
m_group
.
insert
(
theFakeVimSetting
(
ConfigShowMarks
),
m_ui
.
checkBoxShowMarks
);
m_group
.
insert
(
theFakeVimSetting
(
ConfigExportSelection
),
m_ui
.
checkBoxExportSelection
);
m_group
.
insert
(
theFakeVimSetting
(
ConfigSmartTab
),
m_ui
.
checkBoxSmartTab
);
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment