commit 1dc8278fefa5477fb745468fac3fabdd322cb415
Author: Guillaume Munch <[email protected]>
Date: Fri Jul 15 17:45:47 2016 +0100
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.
(cherry picked from commit 10f6eb2e7eeffc757b7f54059524441e90008240)
---
src/frontends/qt4/GuiDocument.cpp | 3 ++-
src/frontends/qt4/LaTeXHighlighter.cpp | 10 +++++++---
src/frontends/qt4/LaTeXHighlighter.h | 4 +++-
status.22x | 5 ++++-
4 files changed, 16 insertions(+), 6 deletions(-)
diff --git a/src/frontends/qt4/GuiDocument.cpp
b/src/frontends/qt4/GuiDocument.cpp
index e6d93fa..aad6201 100644
--- a/src/frontends/qt4/GuiDocument.cpp
+++ b/src/frontends/qt4/GuiDocument.cpp
@@ -452,7 +452,8 @@ PreambleModule::PreambleModule() : current_id_(0)
{
// This is not a memory leak. The object will be destroyed
// 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->setWordWrapMode(QTextOption::NoWrap);
setFocusProxy(preambleTE);
diff --git a/src/frontends/qt4/LaTeXHighlighter.cpp
b/src/frontends/qt4/LaTeXHighlighter.cpp
index 81e6f57..c655b36 100644
--- a/src/frontends/qt4/LaTeXHighlighter.cpp
+++ b/src/frontends/qt4/LaTeXHighlighter.cpp
@@ -31,8 +31,8 @@ QColor blend(QColor color1, QColor color2) {
}
-LaTeXHighlighter::LaTeXHighlighter(QTextDocument * parent)
- : QSyntaxHighlighter(parent)
+LaTeXHighlighter::LaTeXHighlighter(QTextDocument * parent, bool at_letter)
+ : QSyntaxHighlighter(parent), at_letter_(at_letter)
{
QPalette palette = QPalette();
QColor text_color = palette.color(QPalette::Active, QPalette::Text);
@@ -96,7 +96,11 @@ void LaTeXHighlighter::highlightBlock(QString const & text)
startIndex = exprStartDispMath.indexIn(text, startIndex +
length);
}
// \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);
while (index >= 0) {
int length = exprKeyword.matchedLength();
diff --git a/src/frontends/qt4/LaTeXHighlighter.h
b/src/frontends/qt4/LaTeXHighlighter.h
index 51da367..c780b9f 100644
--- a/src/frontends/qt4/LaTeXHighlighter.h
+++ b/src/frontends/qt4/LaTeXHighlighter.h
@@ -25,7 +25,7 @@ namespace frontend {
class LaTeXHighlighter : public QSyntaxHighlighter
{
public:
- LaTeXHighlighter(QTextDocument * parent);
+ explicit LaTeXHighlighter(QTextDocument * parent, bool at_letter =
false);
protected:
void highlightBlock(QString const & text);
@@ -35,6 +35,8 @@ private:
QTextCharFormat keywordFormat;
QTextCharFormat mathFormat;
QTextCharFormat warningFormat;
+ // is at a letter? (as in the preamble)
+ bool const at_letter_;
};
} // namespace frontend
diff --git a/status.22x b/status.22x
index 6a05597..f4bc1bc 100644
--- a/status.22x
+++ b/status.22x
@@ -21,9 +21,12 @@ What's new
* USER INTERFACE
-* When changing zoom level, show current value in status bar (bug
+- When changing zoom level, show current value in status bar (bug
10212).
+- Names containing @ are now recognised by the syntax highlighter in the
+ preamble.
+
* DOCUMENTATION AND LOCALIZATION