[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: [cantor] src/backends/sage: Port the syntax highlighting for Sage backend to
From: Filipe Saraiva <null () kde ! org>
Date: 2018-09-07 14:16:58
Message-ID: E1fyHZC-0005Cf-9A () code ! kde ! org
[Download RAW message or body]
Git commit 3798dfc44d824b8437bbfd91d047978a833f24ec by Filipe Saraiva.
Committed on 07/09/2018 at 14:12.
Pushed by filipesaraiva into branch 'master'.
Port the syntax highlighting for Sage backend to
KSyntaxHighlighting - currently using just Python
syntax highlighting
Add syntax highlithing to functions and variables
Closes T9564
M +3 -1 src/backends/sage/CMakeLists.txt
M +3 -49 src/backends/sage/sagehighlighter.cpp
M +25 -33 src/backends/sage/sagekeywords.cpp
M +4 -2 src/backends/sage/sagekeywords.h
https://commits.kde.org/cantor/3798dfc44d824b8437bbfd91d047978a833f24ec
diff --git a/src/backends/sage/CMakeLists.txt b/src/backends/sage/CMakeLists.txt
index e5c89cc8..1f1f4eb9 100644
--- a/src/backends/sage/CMakeLists.txt
+++ b/src/backends/sage/CMakeLists.txt
@@ -15,7 +15,9 @@ ki18n_wrap_ui(SageBackend_SRCS settings.ui)
add_backend(sagebackend ${SageBackend_SRCS})
-target_link_libraries( cantor_sagebackend KF5::Pty)
+target_link_libraries( cantor_sagebackend
+ KF5::Pty
+ KF5::SyntaxHighlighting)
if(BUILD_TESTING)
add_executable( testsage testsage.cpp)
diff --git a/src/backends/sage/sagehighlighter.cpp \
b/src/backends/sage/sagehighlighter.cpp index fb85991d..a0525b3e 100644
--- a/src/backends/sage/sagehighlighter.cpp
+++ b/src/backends/sage/sagehighlighter.cpp
@@ -21,59 +21,13 @@
#include "sagehighlighter.h"
#include "sagekeywords.h"
-#include <QTextEdit>
-
SageHighlighter::SageHighlighter(QObject* parent) : \
Cantor::DefaultHighlighter(parent) {
addRule(QRegExp(QLatin1String("[A-Za-z0-9_]+(?=\\()")), functionFormat());
- QStringList keywords;
- //Preprocessor
- keywords = SageKeywords::instance()->keywords();
- //specialvars
- keywords << QLatin1String("None") << QLatin1String("self") << \
QLatin1String("True") << QLatin1String("true") << QLatin1String("False") << \
QLatin1String("false")
- << QLatin1String("NotImplemented") << QLatin1String("Ellipsis");
- addKeywords(keywords);
-
- QStringList builtinFunctions;
- builtinFunctions << QLatin1String("__future__") << QLatin1String("__import__") \
<< QLatin1String("__name__") << QLatin1String("abs")
- << QLatin1String("all") << QLatin1String("any") << \
QLatin1String("apply") << QLatin1String("basestring") << \
QLatin1String("bool")
- << QLatin1String("buffer") << QLatin1String("callable") \
<< QLatin1String("chr") << QLatin1String("classmethod")
- << QLatin1String("cmp") << QLatin1String("coerce") << \
QLatin1String("compile") << QLatin1String("complex") << \
QLatin1String("delattr")
- << QLatin1String("dict") << QLatin1String("dir") << \
QLatin1String("divmod") << QLatin1String("enumerate") << \
QLatin1String("eval")
- << QLatin1String("execfile") << QLatin1String("file") << \
QLatin1String("filter") << QLatin1String("float") << \
QLatin1String("frozenset")
- << QLatin1String("getattr") << QLatin1String("globals") \
<< QLatin1String("hasattr") << QLatin1String("hash") << \
QLatin1String("hex")
- << QLatin1String("id") << QLatin1String("input") << \
QLatin1String("int") << QLatin1String("intern") << \
QLatin1String("isinstance")
- << QLatin1String("issubclass") << QLatin1String("iter") \
<< QLatin1String("len") << QLatin1String("list") << \
QLatin1String("locals")
- << QLatin1String("long") << QLatin1String("map") << \
QLatin1String("max") << QLatin1String("min") << QLatin1String("object") << \
QLatin1String("oct")
- << QLatin1String("open") << QLatin1String("ord") << \
QLatin1String("pow") << QLatin1String("property") << \
QLatin1String("range")
- << QLatin1String("raw_input") << QLatin1String("reduce") \
<< QLatin1String("reload") << QLatin1String("repr") << \
QLatin1String("reversed")
- << QLatin1String("round") << QLatin1String("set") << \
QLatin1String("setattr") << QLatin1String("slice") << QLatin1String("sorted") << \
QLatin1String("staticmethod")
- << QLatin1String("str") << QLatin1String("sum") << \
QLatin1String("super") << QLatin1String("tuple") << QLatin1String("type") << \
QLatin1String("unichr")
- << QLatin1String("unicode") << QLatin1String("vars") << \
QLatin1String("xrange") << QLatin1String("zip");
- addRules(builtinFunctions, functionFormat());
-
- addRule(QRegExp(QLatin1String("\\S*[a-zA-Z\\-\\_]+\\S*\\.(?!\\d)")), \
objectFormat());
-
- QStringList exceptionPatterns;
- exceptionPatterns<< QLatin1String("ArithmeticError") << \
QLatin1String("AssertionError") << QLatin1String("AttributeError")
- << QLatin1String("BaseException") << \
QLatin1String("DeprecationWarning") << \
QLatin1String("EnvironmentError")
- << QLatin1String("EOFError") << QLatin1String("Exception") << \
QLatin1String("FloatingPointError")
- << QLatin1String("FutureWarning") << \
QLatin1String("GeneratorExit") << QLatin1String("IOError")
- << QLatin1String("ImportError") << \
QLatin1String("ImportWarning") << QLatin1String("IndexError")
- << QLatin1String("KeyError") << \
QLatin1String("KeyboardInterrupt") << QLatin1String("LookupError")
- << QLatin1String("MemoryError") << QLatin1String("NameError") \
<< QLatin1String("NotImplementedError")
- << QLatin1String("OSError") << QLatin1String("OverflowError") \
<< QLatin1String("PendingDeprecationWarning")
- << QLatin1String("ReferenceError") << \
QLatin1String("RuntimeError") << QLatin1String("RuntimeWarning")
- << QLatin1String("StandardError") << \
QLatin1String("StopIteration") << QLatin1String("SyntaxError")
- << QLatin1String("SyntaxWarning") << \
QLatin1String("SystemError") << QLatin1String("SystemExit")
- << QLatin1String("TypeError") << \
QLatin1String("UnboundLocalError") << QLatin1String("UserWarning")
- << QLatin1String("UnicodeError") << \
QLatin1String("UnicodeWarning") << \
QLatin1String("UnicodeEncodeError")
- << QLatin1String("UnicodeDecodeError") << \
QLatin1String("UnicodeTranslateError") << QLatin1String("ValueError")
- << QLatin1String("Warning") << QLatin1String("WindowsError") << \
QLatin1String("ZeroDivisionError");
- addRules(exceptionPatterns, objectFormat());
+ addKeywords(SageKeywords::instance()->keywords());
+ addFunctions(SageKeywords::instance()->functions());
+ addVariables(SageKeywords::instance()->variables());
- addRule(QRegExp(QLatin1String("\"[^\"]*\"")), stringFormat());
- addRule(QRegExp(QLatin1String("'[^']*'")), stringFormat());
addRule(QRegExp(QLatin1String("#[^\n]*")), commentFormat());
}
diff --git a/src/backends/sage/sagekeywords.cpp b/src/backends/sage/sagekeywords.cpp
index 11e89dc5..685c3e4d 100644
--- a/src/backends/sage/sagekeywords.cpp
+++ b/src/backends/sage/sagekeywords.cpp
@@ -19,6 +19,9 @@
*/
#include "sagekeywords.h"
+#include <repository.h>
+#include <KF5/KSyntaxHighlighting/Definition>
+
#include <QDebug>
SageKeywords* SageKeywords::instance()
@@ -35,42 +38,31 @@ SageKeywords* SageKeywords::instance()
void SageKeywords::loadKeywords()
{
- //Begin m_keywords initialization
- m_keywords << QLatin1String("and");
- m_keywords << QLatin1String("as");
- m_keywords << QLatin1String("assert");
- m_keywords << QLatin1String("break");
- m_keywords << QLatin1String("class");
- m_keywords << QLatin1String("continue");
- m_keywords << QLatin1String("def");
- m_keywords << QLatin1String("del");
- m_keywords << QLatin1String("elif");
- m_keywords << QLatin1String("else");
- m_keywords << QLatin1String("except");
- m_keywords << QLatin1String("exec");
- m_keywords << QLatin1String("finally");
- m_keywords << QLatin1String("for");
- m_keywords << QLatin1String("from");
- m_keywords << QLatin1String("global");
- m_keywords << QLatin1String("if");
- m_keywords << QLatin1String("import");
- m_keywords << QLatin1String("in");
- m_keywords << QLatin1String("is");
- m_keywords << QLatin1String("lambda");
- m_keywords << QLatin1String("not");
- m_keywords << QLatin1String("or");
- m_keywords << QLatin1String("pass");
- m_keywords << QLatin1String("print");
- m_keywords << QLatin1String("raise");
- m_keywords << QLatin1String("return");
- m_keywords << QLatin1String("try");
- m_keywords << QLatin1String("while");
- m_keywords << QLatin1String("with");
- m_keywords << QLatin1String("yield");
- //Finish m_keywords initialization
+ KSyntaxHighlighting::Repository m_repository;
+ KSyntaxHighlighting::Definition definition = \
m_repository.definitionForName(QLatin1String("Python")); +
+ m_keywords << definition.keywordList(QLatin1String("import"));
+ m_keywords << definition.keywordList(QLatin1String("defs"));
+ m_keywords << definition.keywordList(QLatin1String("operators"));
+ m_keywords << definition.keywordList(QLatin1String("flow"));
+
+ m_functions << definition.keywordList(QLatin1String("builtinfuncs"));
+ m_functions << definition.keywordList(QLatin1String("overloaders"));
+
+ m_variables << definition.keywordList(QLatin1String("specialvars"));
}
const QStringList& SageKeywords::keywords() const
{
return m_keywords;
}
+
+const QStringList& SageKeywords::functions() const
+{
+ return m_functions;
+}
+
+const QStringList& SageKeywords::variables() const
+{
+ return m_variables;
+}
diff --git a/src/backends/sage/sagekeywords.h b/src/backends/sage/sagekeywords.h
index 95587470..229114ca 100644
--- a/src/backends/sage/sagekeywords.h
+++ b/src/backends/sage/sagekeywords.h
@@ -40,13 +40,15 @@ public:
static SageKeywords* instance();
const QStringList& keywords() const;
- //const QStringList& functions() const;
- //const QStringList& variables() const;
+ const QStringList& functions() const;
+ const QStringList& variables() const;
private:
void loadKeywords();
QStringList m_keywords;
+ QStringList m_functions;
+ QStringList m_variables;
};
#endif /* _SAGEKEYWORDS_H */
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic