Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
Marco Bubke
flatpak-qt-creator
Commits
b8b3274f
Commit
b8b3274f
authored
Dec 27, 2008
by
hjk
Committed by
Roberto Raggi
Dec 29, 2008
Browse files
small refactoring, make ex command interface public
parent
15c89ea2
Changes
2
Hide whitespace changes
Inline
Side-by-side
src/plugins/fakevim/handler.cpp
View file @
b8b3274f
...
...
@@ -34,8 +34,10 @@
#include "handler.h"
#include <QtCore/QDebug>
#include <QtCore/QFile>
#include <QtCore/QObject>
#include <QtCore/QRegExp>
#include <QtCore/QTextStream>
#include <QtCore/QStack>
#include <QtGui/QKeyEvent>
...
...
@@ -133,6 +135,7 @@ public:
void
moveToNextWord
(
bool
simple
);
void
moveToWordBoundary
(
bool
simple
,
bool
forward
);
void
handleFfTt
(
int
key
);
void
handleCommand
(
const
QString
&
cmd
);
FakeVimHandler
*
q
;
Mode
m_mode
;
...
...
@@ -184,6 +187,8 @@ FakeVimHandler::Private::Private(FakeVimHandler *parent)
m_lastSearchForward
=
true
;
m_register
=
'"'
;
m_gflag
=
false
;
m_textedit
=
0
;
m_plaintextedit
=
0
;
}
bool
FakeVimHandler
::
Private
::
eventFilter
(
QObject
*
ob
,
QEvent
*
ev
)
...
...
@@ -555,17 +560,7 @@ void FakeVimHandler::Private::handleExMode(int key, const QString &text)
else
m_commandBuffer
.
chop
(
1
);
}
else
if
(
key
==
Key_Return
&&
m_commandCode
==
':'
)
{
static
QRegExp
reGoto
(
"^(
\\
d+)$"
);
if
(
reGoto
.
indexIn
(
m_commandBuffer
)
!=
-
1
)
{
int
n
=
reGoto
.
cap
(
1
).
toInt
();
m_tc
.
setPosition
(
m_tc
.
block
().
document
()
->
findBlockByNumber
(
n
-
1
).
position
());
}
else
if
(
m_commandBuffer
==
"q!"
||
m_commandBuffer
==
"q"
)
{
if
(
m_textedit
)
q
->
quitRequested
(
m_textedit
);
else
q
->
quitRequested
(
m_plaintextedit
);
}
handleCommand
(
m_commandBuffer
);
m_commandBuffer
.
clear
();
m_mode
=
CommandMode
;
}
else
if
(
key
==
Key_Return
&&
isSearchCommand
())
{
...
...
@@ -591,6 +586,30 @@ void FakeVimHandler::Private::handleExMode(int key, const QString &text)
updateCommandBuffer
();
}
void
FakeVimHandler
::
Private
::
handleCommand
(
const
QString
&
cmd
)
{
static
QRegExp
reGoto
(
"^(
\\
d+)$"
);
if
(
reGoto
.
indexIn
(
cmd
)
!=
-
1
)
{
int
n
=
reGoto
.
cap
(
1
).
toInt
();
m_tc
.
setPosition
(
m_tc
.
block
().
document
()
->
findBlockByNumber
(
n
-
1
).
position
());
}
else
if
(
cmd
==
"q!"
||
cmd
==
"q"
)
{
if
(
m_textedit
)
q
->
quitRequested
(
m_textedit
);
else
q
->
quitRequested
(
m_plaintextedit
);
}
else
if
(
cmd
.
startsWith
(
"r "
))
{
QString
fileName
=
cmd
.
mid
(
2
);
QFile
file
(
fileName
);
file
.
open
(
QIODevice
::
ReadOnly
);
QTextStream
ts
(
&
file
);
if
(
m_textedit
)
m_textedit
->
setText
(
ts
.
readAll
());
else
if
(
m_plaintextedit
)
m_plaintextedit
->
setPlainText
(
ts
.
readAll
());
}
}
void
FakeVimHandler
::
Private
::
search
(
const
QString
&
needle
,
bool
forward
)
{
//qDebug() << "NEEDLE " << needle << "BACKWARDS" << backwards;
...
...
@@ -792,3 +811,30 @@ bool FakeVimHandler::eventFilter(QObject *ob, QEvent *ev)
return
d
->
eventFilter
(
ob
,
ev
);
}
void
FakeVimHandler
::
addWidget
(
QWidget
*
widget
)
{
widget
->
installEventFilter
(
this
);
QFont
font
=
widget
->
font
();
font
.
setFamily
(
"Monospace"
);
widget
->
setFont
(
font
);
if
(
QTextEdit
*
ed
=
qobject_cast
<
QTextEdit
*>
(
widget
))
{
ed
->
setCursorWidth
(
QFontMetrics
(
ed
->
font
()).
width
(
QChar
(
'x'
)));
ed
->
setLineWrapMode
(
QTextEdit
::
NoWrap
);
}
else
if
(
QPlainTextEdit
*
ed
=
qobject_cast
<
QPlainTextEdit
*>
(
widget
))
{
ed
->
setCursorWidth
(
QFontMetrics
(
ed
->
font
()).
width
(
QChar
(
'x'
)));
ed
->
setLineWrapMode
(
QPlainTextEdit
::
NoWrap
);
}
}
void
FakeVimHandler
::
removeWidget
(
QWidget
*
widget
)
{
widget
->
removeEventFilter
(
this
);
}
void
FakeVimHandler
::
handleCommand
(
QWidget
*
widget
,
const
QString
&
cmd
)
{
d
->
m_textedit
=
qobject_cast
<
QTextEdit
*>
(
widget
);
d
->
m_plaintextedit
=
qobject_cast
<
QPlainTextEdit
*>
(
widget
);
d
->
handleCommand
(
cmd
);
}
src/plugins/fakevim/handler.h
View file @
b8b3274f
...
...
@@ -52,8 +52,16 @@ public:
FakeVimHandler
(
QObject
*
parent
=
0
);
~
FakeVimHandler
();
// The same handler can be installed on several widgets
void
addWidget
(
QWidget
*
widget
);
void
removeWidget
(
QWidget
*
widget
);
// This executes an "ex" style command taking context
// information from \p widget;
void
handleCommand
(
QWidget
*
widget
,
const
QString
&
cmd
);
signals:
void
commandBufferChanged
(
const
QString
&
);
void
commandBufferChanged
(
const
QString
&
msg
);
void
quitRequested
(
QObject
*
);
private:
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Attach a 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