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
a5e7cfe7
Commit
a5e7cfe7
authored
Apr 27, 2010
by
hjk
Browse files
fakevim: start working on some syntax highlighting infrastructure
parent
a3aa8798
Changes
5
Hide whitespace changes
Inline
Side-by-side
src/plugins/fakevim/fakevim.pro
View file @
a5e7cfe7
...
...
@@ -15,9 +15,11 @@ include(../../shared/indenter/indenter.pri)
QT
+=
gui
SOURCES
+=
fakevimactions
.
cpp
\
fakevimhandler
.
cpp
\
fakevimsyntax
.
cpp
\
fakevimplugin
.
cpp
HEADERS
+=
fakevimactions
.
h
\
fakevimhandler
.
h
\
fakevimsyntax
.
h
\
fakevimplugin
.
h
FORMS
+=
fakevimoptions
.
ui
OTHER_FILES
+=
FakeVim
.
pluginspec
src/plugins/fakevim/fakevimhandler.cpp
View file @
a5e7cfe7
...
...
@@ -27,8 +27,6 @@
**
**************************************************************************/
#include
"fakevimhandler.h"
//
// ATTENTION:
//
...
...
@@ -59,6 +57,9 @@
// if the last movement command was exclusive (MoveExclusive).
// The value of m_tc.anchor() is not used.
#include
"fakevimhandler.h"
#include
"fakevimsyntax.h"
#include
<utils/qtcassert.h>
#include
<QtCore/QDebug>
...
...
@@ -686,9 +687,11 @@ FakeVimHandler::Private::Mappings FakeVimHandler::Private::m_mappings;
FakeVimHandler
::
Private
::
Private
(
FakeVimHandler
*
parent
,
QWidget
*
widget
)
{
//static PythonHighlighterRules pythonRules;
q
=
parent
;
m_textedit
=
qobject_cast
<
QTextEdit
*>
(
widget
);
m_plaintextedit
=
qobject_cast
<
QPlainTextEdit
*>
(
widget
);
//new Highlighter(EDITOR(document()), &pythonRules);
init
();
}
...
...
src/plugins/fakevim/fakevimhandler.h
View file @
a5e7cfe7
...
...
@@ -101,4 +101,4 @@ private:
}
// namespace Internal
}
// namespace FakeVim
#endif // FAKEVIM_H
#endif // FAKEVIM_H
ANDLER_H
src/plugins/fakevim/fakevimsyntax.cpp
0 → 100644
View file @
a5e7cfe7
/**************************************************************************
**
** This file is part of Qt Creator
**
** Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
**
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** Commercial Usage
**
** Licensees holding valid Qt Commercial licenses may use this file in
** accordance with the Qt Commercial License Agreement provided with the
** Software or, alternatively, in accordance with the terms contained in
** a written agreement between you and Nokia.
**
** GNU Lesser General Public License Usage
**
** Alternatively, this file may be used under the terms of the GNU Lesser
** General Public License version 2.1 as published by the Free Software
** Foundation and appearing in the file LICENSE.LGPL included in the
** packaging of this file. Please review the following information to
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
** If you are unsure which license is appropriate for your use, please
** contact the sales department at http://qt.nokia.com/contact.
**
**************************************************************************/
#include
"fakevimsyntax.h"
#include
<utils/qtcassert.h>
typedef
QLatin1String
_
;
namespace
FakeVim
{
namespace
Internal
{
///////////////////////////////////////////////////////////////////////
//
// HighlighterRules
//
///////////////////////////////////////////////////////////////////////
HighlighterRules
::
HighlighterRules
()
{}
void
HighlighterRules
::
addKeyWord
(
const
QString
&
keyword
,
const
QByteArray
&
group
)
{
m_keywordGroups
.
insert
(
keyword
,
group
);
}
///////////////////////////////////////////////////////////////////////
//
// PythonHighlighter
//
///////////////////////////////////////////////////////////////////////
PythonHighlighterRules
::
PythonHighlighterRules
()
{
const
QByteArray
stmt
=
"statement"
;
addKeyWord
(
_
(
"assert"
),
stmt
);
addKeyWord
(
_
(
"break"
),
stmt
);
addKeyWord
(
_
(
"continue"
),
stmt
);
addKeyWord
(
_
(
"del"
),
stmt
);
addKeyWord
(
_
(
"except"
),
stmt
);
addKeyWord
(
_
(
"exec"
),
stmt
);
addKeyWord
(
_
(
"finally"
),
stmt
);
addKeyWord
(
_
(
"global"
),
stmt
);
addKeyWord
(
_
(
"lambda"
),
stmt
);
addKeyWord
(
_
(
"pass"
),
stmt
);
addKeyWord
(
_
(
"print"
),
stmt
);
addKeyWord
(
_
(
"raise"
),
stmt
);
addKeyWord
(
_
(
"return"
),
stmt
);
addKeyWord
(
_
(
"try"
),
stmt
);
addKeyWord
(
_
(
"with"
),
stmt
);
addKeyWord
(
_
(
"yield"
),
stmt
);
const
QByteArray
func
=
"function"
;
const
QByteArray
options
=
"nextgroup=pythonFunction skipwhite"
;
addKeyWord
(
_
(
"def"
),
stmt
);
addKeyWord
(
_
(
"class"
),
stmt
);
}
///////////////////////////////////////////////////////////////////////
//
// Highlighter
//
///////////////////////////////////////////////////////////////////////
Highlighter
::
Highlighter
(
QTextDocument
*
doc
,
HighlighterRules
*
rules
)
:
QSyntaxHighlighter
(
doc
),
m_rules
(
rules
)
{}
void
Highlighter
::
highlightBlock
(
const
QString
&
text
)
{
QTextCharFormat
myClassFormat
;
myClassFormat
.
setFontWeight
(
QFont
::
Bold
);
myClassFormat
.
setForeground
(
Qt
::
darkMagenta
);
KeywordGroupMap
::
ConstIterator
it
,
et
=
m_rules
->
m_keywordGroups
.
end
();
for
(
it
=
m_rules
->
m_keywordGroups
.
begin
();
it
!=
et
;
++
it
)
{
const
QString
&
keyword
=
it
.
key
();
//qDebug() << "EXAMINING " << keyword;
int
index
=
text
.
indexOf
(
keyword
);
while
(
index
>=
0
)
{
setFormat
(
index
,
keyword
.
size
(),
myClassFormat
);
index
=
text
.
indexOf
(
keyword
,
index
+
keyword
.
size
());
}
}
}
}
// namespace Internal
}
// namespace FakeVim
src/plugins/fakevim/fakevimsyntax.h
0 → 100644
View file @
a5e7cfe7
/**************************************************************************
**
** This file is part of Qt Creator
**
** Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
**
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** Commercial Usage
**
** Licensees holding valid Qt Commercial licenses may use this file in
** accordance with the Qt Commercial License Agreement provided with the
** Software or, alternatively, in accordance with the terms contained in
** a written agreement between you and Nokia.
**
** GNU Lesser General Public License Usage
**
** Alternatively, this file may be used under the terms of the GNU Lesser
** General Public License version 2.1 as published by the Free Software
** Foundation and appearing in the file LICENSE.LGPL included in the
** packaging of this file. Please review the following information to
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
** If you are unsure which license is appropriate for your use, please
** contact the sales department at http://qt.nokia.com/contact.
**
**************************************************************************/
#ifndef FAKEVIM_SYNTAX_H
#define FAKEVIM_SYNTAX_H
#include
"fakevimactions.h"
#include
<QtCore/QHash>
#include
<QtGui/QSyntaxHighlighter>
namespace
FakeVim
{
namespace
Internal
{
class
HighlighterRules
{
public:
HighlighterRules
();
virtual
~
HighlighterRules
()
{}
void
addKeyWord
(
const
QString
&
keyword
,
const
QByteArray
&
group
);
friend
class
Highlighter
;
private:
// Maps keyword -> groupname
typedef
QHash
<
QString
,
QByteArray
>
KeywordGroupMap
;
KeywordGroupMap
m_keywordGroups
;
};
class
PythonHighlighterRules
:
public
HighlighterRules
{
public:
PythonHighlighterRules
();
};
class
Highlighter
:
public
QSyntaxHighlighter
{
public:
Highlighter
(
QTextDocument
*
doc
,
HighlighterRules
*
rules
);
private:
void
highlightBlock
(
const
QString
&
text
);
typedef
HighlighterRules
::
KeywordGroupMap
KeywordGroupMap
;
HighlighterRules
*
m_rules
;
};
}
// namespace Internal
}
// namespace FakeVim
#endif // FAKEVIM_SYNTAX_H
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