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
ccfe1717
Commit
ccfe1717
authored
Dec 19, 2008
by
hjk
Browse files
implement 'H' fakevim movement
parent
9a0aef53
Changes
1
Hide whitespace changes
Inline
Side-by-side
src/plugins/fakevim/handler.cpp
View file @
ccfe1717
...
...
@@ -95,6 +95,7 @@ public:
int
leftDist
()
const
{
return
m_tc
.
position
()
-
m_tc
.
block
().
position
();
}
int
rightDist
()
const
{
return
m_tc
.
block
().
length
()
-
leftDist
()
-
1
;
}
bool
atEol
()
const
{
return
m_tc
.
atBlockEnd
()
&&
m_tc
.
block
().
length
()
>
1
;
}
void
moveToFirstNonBlankOnLine
();
FakeVimHandler
*
q
;
Mode
m_mode
;
...
...
@@ -285,6 +286,12 @@ void FakeVimHandler::Private::handleCommandMode(int key, const QString &text)
++
n
;
m_tc
.
movePosition
(
Left
,
KeepAnchor
,
n
);
finishMovement
();
}
else
if
(
key
==
'H'
)
{
int
firstPos
=
m_editor
->
cursorForPosition
(
QPoint
(
0
,
0
)).
position
();
m_tc
.
setPosition
(
firstPos
,
KeepAnchor
);
m_tc
.
movePosition
(
Down
,
KeepAnchor
,
qMax
(
count
()
-
1
,
0
));
moveToFirstNonBlankOnLine
();
finishMovement
();
}
else
if
(
key
==
'i'
)
{
m_mode
=
InsertMode
;
}
else
if
(
key
==
'j'
||
key
==
Key_Down
)
{
...
...
@@ -436,6 +443,18 @@ void FakeVimHandler::Private::search(const QString &needle, bool backwards)
m_tc
.
movePosition
(
backwards
?
Right
:
Left
,
MoveAnchor
,
1
);
}
void
FakeVimHandler
::
Private
::
moveToFirstNonBlankOnLine
()
{
QTextBlock
block
=
m_tc
.
block
();
QTextDocument
*
doc
=
m_tc
.
document
();
int
firstPos
=
m_tc
.
position
();
for
(
int
i
=
firstPos
,
n
=
firstPos
+
block
.
length
();
i
<
n
;
++
i
)
{
if
(
!
doc
->
characterAt
(
i
).
isSpace
())
{
m_tc
.
setPosition
(
i
,
KeepAnchor
);
return
;
}
}
}
///////////////////////////////////////////////////////////////////////
//
...
...
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