mirror of
https://git.lyx.org/repos/lyx.git
synced 2024-11-25 02:49:46 +00:00
LaTeX highlighter: make at a letter in the user preamble
Syntax highlighting now provides the appropriate cue that the user preamble is inside \makeatletter…\makeatother.
This commit is contained in:
parent
7eea0b6fa8
commit
10f6eb2e7e
@ -453,7 +453,8 @@ PreambleModule::PreambleModule() : current_id_(0)
|
|||||||
{
|
{
|
||||||
// This is not a memory leak. The object will be destroyed
|
// This is not a memory leak. The object will be destroyed
|
||||||
// with this.
|
// with this.
|
||||||
(void) new LaTeXHighlighter(preambleTE->document());
|
// @ is letter in the LyX user preamble
|
||||||
|
(void) new LaTeXHighlighter(preambleTE->document(), true);
|
||||||
preambleTE->setFont(guiApp->typewriterSystemFont());
|
preambleTE->setFont(guiApp->typewriterSystemFont());
|
||||||
preambleTE->setWordWrapMode(QTextOption::NoWrap);
|
preambleTE->setWordWrapMode(QTextOption::NoWrap);
|
||||||
setFocusProxy(preambleTE);
|
setFocusProxy(preambleTE);
|
||||||
|
@ -20,8 +20,9 @@ namespace lyx {
|
|||||||
namespace frontend {
|
namespace frontend {
|
||||||
|
|
||||||
|
|
||||||
LaTeXHighlighter::LaTeXHighlighter(QTextDocument * parent)
|
LaTeXHighlighter::LaTeXHighlighter(QTextDocument * parent,
|
||||||
: QSyntaxHighlighter(parent)
|
bool const at_letter)
|
||||||
|
: QSyntaxHighlighter(parent), at_letter_(at_letter)
|
||||||
{
|
{
|
||||||
auto blend = [](QColor color1, QColor color2) {
|
auto blend = [](QColor color1, QColor color2) {
|
||||||
int r = 0.5 * (color1.red() + color2.red());
|
int r = 0.5 * (color1.red() + color2.red());
|
||||||
@ -91,7 +92,11 @@ void LaTeXHighlighter::highlightBlock(QString const & text)
|
|||||||
startIndex = exprStartDispMath.indexIn(text, startIndex + length);
|
startIndex = exprStartDispMath.indexIn(text, startIndex + length);
|
||||||
}
|
}
|
||||||
// \whatever
|
// \whatever
|
||||||
static const QRegExp exprKeyword("\\\\[A-Za-z]+");
|
static const QRegExp exprKeywordAtOther("\\\\[A-Za-z]+");
|
||||||
|
// \wh@tever
|
||||||
|
static const QRegExp exprKeywordAtLetter("\\\\[A-Za-z@]+");
|
||||||
|
QRegExp const & exprKeyword = at_letter_ ? exprKeywordAtLetter
|
||||||
|
: exprKeywordAtOther;
|
||||||
index = exprKeyword.indexIn(text);
|
index = exprKeyword.indexIn(text);
|
||||||
while (index >= 0) {
|
while (index >= 0) {
|
||||||
int length = exprKeyword.matchedLength();
|
int length = exprKeyword.matchedLength();
|
||||||
|
@ -25,7 +25,8 @@ namespace frontend {
|
|||||||
class LaTeXHighlighter : public QSyntaxHighlighter
|
class LaTeXHighlighter : public QSyntaxHighlighter
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
LaTeXHighlighter(QTextDocument * parent);
|
explicit LaTeXHighlighter(QTextDocument * parent,
|
||||||
|
bool const at_letter = false);
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
void highlightBlock(QString const & text);
|
void highlightBlock(QString const & text);
|
||||||
@ -35,6 +36,8 @@ private:
|
|||||||
QTextCharFormat keywordFormat;
|
QTextCharFormat keywordFormat;
|
||||||
QTextCharFormat mathFormat;
|
QTextCharFormat mathFormat;
|
||||||
QTextCharFormat warningFormat;
|
QTextCharFormat warningFormat;
|
||||||
|
// is at a letter (as in the preamble)
|
||||||
|
bool const at_letter_;
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace frontend
|
} // namespace frontend
|
||||||
|
Loading…
Reference in New Issue
Block a user