diff --git a/NEWS.md b/NEWS.md index 8832b40b..fbf2457d 100644 --- a/NEWS.md +++ b/NEWS.md @@ -6,6 +6,8 @@ Red Panda C++ Version 2.5 - enhancement: project's custom compile include/lib/bin directory is under folder of the app, save them using the path relative to the app - enhancement: slightly reduce memory usage - enhancement: Options -> editor -> custom C/C++ type keywords page + - change: Default value of option "Editors share one code analyzer" is ON if available physical memory <= 32G + - change: Default value of option "Auto clear symbols in hidden editors" is ON if number of CPU cores > 8 and "Editors share one code analyzer" is on Red Panda C++ Version 2.4 diff --git a/RedPandaIDE/editor.cpp b/RedPandaIDE/editor.cpp index 1386597e..5f1692da 100644 --- a/RedPandaIDE/editor.cpp +++ b/RedPandaIDE/editor.cpp @@ -479,18 +479,17 @@ void Editor::setPageControl(QTabWidget *newPageControl) void Editor::undoSymbolCompletion(int pos) { - QSynedit::PHighlighterAttribute Attr; - QString Token; + QSynedit::PHighlighterAttribute attr; + QString token; bool tokenFinished; - QSynedit::TokenType tokenType; if (!highlighter()) return; if (!pSettings->editor().removeSymbolPairs()) return; - if (!getHighlighterAttriAtRowCol(caretXY(), Token, tokenFinished, tokenType, Attr)) + if (!getHighlighterAttriAtRowCol(caretXY(), token, tokenFinished, attr)) return; - if ((tokenType == QSynedit::TokenType::Comment) && (!tokenFinished)) + if ((attr->tokenType() == QSynedit::TokenType::Comment) && (!tokenFinished)) return ; //convert caret x to string index; pos--; @@ -499,19 +498,19 @@ void Editor::undoSymbolCompletion(int pos) return; QChar DeletedChar = lineText().at(pos); QChar NextChar = lineText().at(pos+1); - if ((tokenType == QSynedit::TokenType::Character) && (DeletedChar != '\'')) + if ((attr->tokenType() == QSynedit::TokenType::Character) && (DeletedChar != '\'')) return; - if (tokenType == QSynedit::TokenType::StringEscapeSequence) - return; - if (tokenType == QSynedit::TokenType::String) { +// if (attr->tokenType() == QSynedit::TokenType::StringEscapeSequence) +// return; + if (attr->tokenType() == QSynedit::TokenType::String) { if ((DeletedChar!='"') && (DeletedChar!='(')) return; - if ((DeletedChar=='"') && (Token!="\"\"")) + if ((DeletedChar=='"') && (token!="\"\"")) return; - if ((DeletedChar=='(') && (!Token.startsWith("R\""))) + if ((DeletedChar=='(') && (!token.startsWith("R\""))) return; } - if ((DeletedChar == '\'') && (tokenType == QSynedit::TokenType::Number)) + if ((DeletedChar == '\'') && (attr->tokenType() == QSynedit::TokenType::Number)) return; if ((DeletedChar == '<') && !(mParser && mParser->isIncludeLine(lineText()))) @@ -1393,11 +1392,10 @@ void Editor::showEvent(QShowEvent */*event*/) void Editor::hideEvent(QHideEvent */*event*/) { if (pSettings->codeCompletion().clearWhenEditorHidden() - && !pSettings->codeCompletion().shareParser() && !inProject() && mParser && !pMainWindow->isMinimized()) { - //recreate a parser, to totally clean memories the parse uses; - initParser(); + //recreate a parser, to totally clean memories the parser uses; + resetCppParser(mParser); } if (mParser) { disconnect(mParser.get(), @@ -1520,8 +1518,7 @@ void Editor::addSyntaxIssues(int line, int startChar, int endChar, CompileIssueT PSyntaxIssue pError; QSynedit::BufferCoord p; QString token; - QSynedit::TokenType tokenType; - int tokenKind,start; + int start; QSynedit::PHighlighterAttribute attr; PSyntaxIssueList lst; if ((line<1) || (line>document()->count())) @@ -1533,7 +1530,7 @@ void Editor::addSyntaxIssues(int line, int startChar, int endChar, CompileIssueT start = 1; token = document()->getString(line-1); } else if (endChar < 1) { - if (!getHighlighterAttriAtRowColEx(p,token,tokenType,tokenKind,start,attr)) + if (!getHighlighterAttriAtRowColEx(p,token,start,attr)) return; } else { start = startChar; @@ -2201,19 +2198,18 @@ bool Editor::handleSymbolCompletion(QChar key) } else { QSynedit::BufferCoord HighlightPos = QSynedit::BufferCoord{caretX()-1, caretY()}; // Check if that line is highlighted as comment - QSynedit::PHighlighterAttribute Attr; - QString Token; + QSynedit::PHighlighterAttribute attr; + QString token; bool tokenFinished; - QSynedit::TokenType tokenType; - if (getHighlighterAttriAtRowCol(HighlightPos, Token, tokenFinished, tokenType,Attr)) { - if ((tokenType == QSynedit::TokenType::Comment) && (!tokenFinished)) + if (getHighlighterAttriAtRowCol(HighlightPos, token, tokenFinished, attr)) { + if ((attr->tokenType() == QSynedit::TokenType::Comment) && (!tokenFinished)) return false; - if ((tokenType == QSynedit::TokenType::String) && (!tokenFinished) + if ((attr->tokenType() == QSynedit::TokenType::String) && (!tokenFinished) && (key!='\'') && (key!='\"') && (key!='(') && (key!=')')) return false; if (( key=='<' || key =='>') && (mParser && !mParser->isIncludeLine(lineText()))) return false; - if ((key == '\'') && (Attr->name() == "SYNS_AttrNumber")) + if ((key == '\'') && (attr->name() == "SYNS_AttrNumber")) return false; } } @@ -2650,7 +2646,6 @@ bool Editor::handleCodeCompletion(QChar key) void Editor::initParser() { -// mParser=nullptr; if (pSettings->codeCompletion().shareParser()) { if (pSettings->codeCompletion().enabled() && (highlighter() && highlighter()->getClass() == QSynedit::HighlighterClass::CppHighlighter) @@ -3051,26 +3046,25 @@ void Editor::showCompletion(const QString& preWord,bool autoComplete, CodeComple QString s; QSynedit::PHighlighterAttribute attr; bool tokenFinished; - QSynedit::TokenType tokenType; QSynedit::BufferCoord pBeginPos, pEndPos; if (getHighlighterAttriAtRowCol( QSynedit::BufferCoord{caretX() - 1, - caretY()}, s, tokenFinished,tokenType, attr)) { - if (tokenType == QSynedit::TokenType::PreprocessDirective) {//Preprocessor + caretY()}, s, tokenFinished, attr)) { + if (attr->tokenType() == QSynedit::TokenType::Preprocessor) {//Preprocessor word = getWordAtPosition(this,caretXY(),pBeginPos,pEndPos, WordPurpose::wpDirective); if (!word.startsWith('#')) { word = ""; } - } else if (tokenType == QSynedit::TokenType::Comment) { //Comment, javadoc tag + } else if (attr->tokenType() == QSynedit::TokenType::Comment) { //Comment, javadoc tag word = getWordAtPosition(this,caretXY(),pBeginPos,pEndPos, WordPurpose::wpJavadoc); if (!word.startsWith('@')) { return; } } else if ( - (tokenType != QSynedit::TokenType::Symbol) && - (tokenType != QSynedit::TokenType::Space) && - (tokenType != QSynedit::TokenType::Keyword) && - (tokenType != QSynedit::TokenType::Identifier) + (attr->tokenType() != QSynedit::TokenType::Operator) && + (attr->tokenType() != QSynedit::TokenType::Space) && + (attr->tokenType() != QSynedit::TokenType::Keyword) && + (attr->tokenType() != QSynedit::TokenType::Identifier) ) { return; } @@ -4800,7 +4794,8 @@ void Editor::applySettings() static QSynedit::PHighlighterAttribute createRainbowAttribute(const QString& attrName, const QString& schemeName, const QString& schemeItemName) { PColorSchemeItem item = pColorManager->getItem(schemeName,schemeItemName); if (item) { - QSynedit::PHighlighterAttribute attr = std::make_shared(attrName); + QSynedit::PHighlighterAttribute attr = std::make_shared(attrName, + QSynedit::TokenType::Default); attr->setForeground(item->foreground()); attr->setBackground(item->background()); return attr; diff --git a/RedPandaIDE/editorlist.cpp b/RedPandaIDE/editorlist.cpp index 166d2b7c..84e1da44 100644 --- a/RedPandaIDE/editorlist.cpp +++ b/RedPandaIDE/editorlist.cpp @@ -198,15 +198,12 @@ bool EditorList::closeEditor(Editor* editor, bool transferFocus, bool force) { if (editor) { editor->activate(); pMainWindow->updateClassBrowserForEditor(editor); - } else { - pMainWindow->updateClassBrowserForEditor(nullptr); - } - } else { - editor = getEditor(); - if (!editor) { - pMainWindow->updateClassBrowserForEditor(nullptr); } } + editor = getEditor(); + if (!editor) { + pMainWindow->updateClassBrowserForEditor(nullptr); + } emit editorClosed(); endUpdate(); return true; diff --git a/RedPandaIDE/settings.cpp b/RedPandaIDE/settings.cpp index cf783590..8066cc7a 100644 --- a/RedPandaIDE/settings.cpp +++ b/RedPandaIDE/settings.cpp @@ -27,6 +27,9 @@ #include #include #include +#ifdef Q_OS_LINUX +#include +#endif const char ValueToChar[28] = {'0', '1', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', @@ -3774,19 +3777,23 @@ void Settings::CodeCompletion::setShowCodeIns(bool newShowCodeIns) bool Settings::CodeCompletion::clearWhenEditorHidden() { + if (!mShareParser) { #ifdef Q_OS_WIN - MEMORYSTATUSEX statex; - statex.dwLength = sizeof (statex); + MEMORYSTATUSEX statex; + statex.dwLength = sizeof (statex); + GlobalMemoryStatusEx (&statex); - GlobalMemoryStatusEx (&statex); - if (statex.ullTotalPhys < (long long int)2*1024*1024*1024) { - mClearWhenEditorHidden = true; - } - - if (statex.ullAvailPhys < (long long int)2*1024*1024*1024) { - return true; - } + if (statex.ullAvailPhys < (long long int)2*1024*1024*1024) { + return true; + } +#elif defined(Q_OS_LINUX) + struct sysinfo si; + sysinfo(&si); + if (si.freeram < (long long int)2*1024*1024*1024) { + return true; + } #endif + } return mClearWhenEditorHidden; } @@ -3817,21 +3824,6 @@ void Settings::CodeCompletion::setHideSymbolsStartsWithTwoUnderLine(bool newHide bool Settings::CodeCompletion::shareParser() { - -#ifdef Q_OS_WIN - MEMORYSTATUSEX statex; - statex.dwLength = sizeof (statex); - - GlobalMemoryStatusEx (&statex); - - if (statex.ullTotalPhys < (long long int)1024*1024*1024) { - mShareParser = true; - } - - if (statex.ullAvailPhys < (long long int)1*1024*1024*1024) { - return true; - } -#endif return mShareParser; } @@ -4001,8 +3993,8 @@ void Settings::CodeCompletion::doLoad() mHideSymbolsStartsWithTwoUnderLine = boolValue("hide_symbols_start_with_two_underline", true); mHideSymbolsStartsWithUnderLine = boolValue("hide_symbols_start_with_underline", false); - bool doClear = true; - bool shouldShare=true; + bool shouldShare= true; + bool doClear = false; #ifdef Q_OS_WIN MEMORYSTATUSEX statex; @@ -4010,14 +4002,25 @@ void Settings::CodeCompletion::doLoad() statex.dwLength = sizeof (statex); GlobalMemoryStatusEx (&statex); - if (statex.ullAvailPhys > (long long int)16*1024*1024*1024) { - doClear = false; + + if (statex.ullAvailPhys > (long long int)24*1024*1024*1024) { + shouldShare = false; } - if (statex.ullAvailPhys > (long long int)10*1024*1024*1024) { + + if (shouldShare) { + SYSTEM_INFO info; + GetSystemInfo(&info); + if (info.dwNumberOfProcessors>8 && info.dwProcessorType) { + doClear = true; + } + } +#elif defined(Q_OS_LINUX) + struct sysinfo si; + sysinfo(&si); + if (si.freeram > (long long int)24*1024*1024*1024) { shouldShare = false; } #endif - mClearWhenEditorHidden = boolValue("clear_when_editor_hidden",doClear); mShareParser = boolValue("share_parser",shouldShare); } diff --git a/RedPandaIDE/todoparser.cpp b/RedPandaIDE/todoparser.cpp index 6e397d09..0ba5dce7 100644 --- a/RedPandaIDE/todoparser.cpp +++ b/RedPandaIDE/todoparser.cpp @@ -129,15 +129,13 @@ void TodoThread::doParseFile(const QString &filename, QSynedit::PHighlighter hig if (!pMainWindow->editorList()->getContentFromOpenedEditor(filename,lines)) { lines = readFileToLines(filename); } - QSynedit::PHighlighterAttribute commentAttr = highlighter->getAttribute(SYNS_AttrComment); - highlighter->resetState(); for (int i =0;isetLine(lines[i],i); while (!highlighter->eol()) { QSynedit::PHighlighterAttribute attr; attr = highlighter->getTokenAttribute(); - if (attr == commentAttr) { + if (attr && attr->tokenType() == QSynedit::TokenType::Comment) { QString token = highlighter->getToken(); int pos = token.indexOf(todoReg); if (pos>=0) { diff --git a/libs/qsynedit/qsynedit/SynEdit.cpp b/libs/qsynedit/qsynedit/SynEdit.cpp index 0a4b0185..eb4e548f 100644 --- a/libs/qsynedit/qsynedit/SynEdit.cpp +++ b/libs/qsynedit/qsynedit/SynEdit.cpp @@ -359,12 +359,11 @@ int SynEdit::maxScrollWidth() const bool SynEdit::getHighlighterAttriAtRowCol(const BufferCoord &pos, QString &token, PHighlighterAttribute &attri) { - TokenType tmpType; - int tmpKind, tmpStart; - return getHighlighterAttriAtRowColEx(pos, token, tmpType, tmpKind,tmpStart, attri); + int tmpStart; + return getHighlighterAttriAtRowColEx(pos, token, tmpStart, attri); } -bool SynEdit::getHighlighterAttriAtRowCol(const BufferCoord &pos, QString &token, bool &tokenFinished, TokenType &tokenType, PHighlighterAttribute &attri) +bool SynEdit::getHighlighterAttriAtRowCol(const BufferCoord &pos, QString &token, bool &tokenFinished, PHighlighterAttribute &attri) { int posX, posY, endPos, start; QString line; @@ -389,7 +388,6 @@ bool SynEdit::getHighlighterAttriAtRowCol(const BufferCoord &pos, QString &token tokenFinished = mHighlighter->getTokenFinished(); else tokenFinished = false; - tokenType = mHighlighter->getTokenType(); return true; } mHighlighter->next(); @@ -402,7 +400,7 @@ bool SynEdit::getHighlighterAttriAtRowCol(const BufferCoord &pos, QString &token return false; } -bool SynEdit::getHighlighterAttriAtRowColEx(const BufferCoord &pos, QString &token, TokenType &tokenType, TokenKind &tokenKind, int &start, PHighlighterAttribute &attri) +bool SynEdit::getHighlighterAttriAtRowColEx(const BufferCoord &pos, QString &token, int &start, PHighlighterAttribute &attri) { int posX, posY, endPos; QString line; @@ -423,8 +421,6 @@ bool SynEdit::getHighlighterAttriAtRowColEx(const BufferCoord &pos, QString &tok endPos = start + token.length()-1; if ((posX >= start) && (posX <= endPos)) { attri = mHighlighter->getTokenAttribute(); - tokenKind = mHighlighter->getTokenKind(); - tokenType = mHighlighter->getTokenType(); return true; } mHighlighter->next(); @@ -433,8 +429,6 @@ bool SynEdit::getHighlighterAttriAtRowColEx(const BufferCoord &pos, QString &tok } token = ""; attri = PHighlighterAttribute(); - tokenKind = 0; - tokenType = TokenType::Default; return false; } diff --git a/libs/qsynedit/qsynedit/SynEdit.h b/libs/qsynedit/qsynedit/SynEdit.h index 026d583e..1e6de3b6 100644 --- a/libs/qsynedit/qsynedit/SynEdit.h +++ b/libs/qsynedit/qsynedit/SynEdit.h @@ -250,11 +250,9 @@ public: bool getHighlighterAttriAtRowCol(const BufferCoord& pos, QString& token, PHighlighterAttribute& attri); bool getHighlighterAttriAtRowCol(const BufferCoord& pos, QString& token, - bool& tokenFinished, TokenType& tokenType, - PHighlighterAttribute& attri); + bool& tokenFinished, PHighlighterAttribute& attri); bool getHighlighterAttriAtRowColEx(const BufferCoord& pos, QString& token, - TokenType& tokenType, TokenKind &tokenKind, int &start, - PHighlighterAttribute& attri); + int &start, PHighlighterAttribute& attri); void beginUndoBlock(); void endUndoBlock(); diff --git a/libs/qsynedit/qsynedit/highlighter/asm.cpp b/libs/qsynedit/qsynedit/highlighter/asm.cpp index f3a7df44..43e01ce9 100644 --- a/libs/qsynedit/qsynedit/highlighter/asm.cpp +++ b/libs/qsynedit/qsynedit/highlighter/asm.cpp @@ -57,21 +57,21 @@ const QSet ASMHighlighter::Keywords { ASMHighlighter::ASMHighlighter() { - mCommentAttribute = std::make_shared(SYNS_AttrComment); + mCommentAttribute = std::make_shared(SYNS_AttrComment, TokenType::Comment); mCommentAttribute->setStyles(FontStyle::fsItalic); addAttribute(mCommentAttribute); - mIdentifierAttribute = std::make_shared(SYNS_AttrIdentifier); + mIdentifierAttribute = std::make_shared(SYNS_AttrIdentifier, TokenType::Identifier); addAttribute(mIdentifierAttribute); - mKeywordAttribute = std::make_shared(SYNS_AttrReservedWord); + mKeywordAttribute = std::make_shared(SYNS_AttrReservedWord, TokenType::Keyword); mKeywordAttribute->setStyles(FontStyle::fsBold); addAttribute(mKeywordAttribute); - mNumberAttribute = std::make_shared(SYNS_AttrNumber); + mNumberAttribute = std::make_shared(SYNS_AttrNumber, TokenType::Number); addAttribute(mNumberAttribute); - mWhitespaceAttribute = std::make_shared(SYNS_AttrSpace); + mWhitespaceAttribute = std::make_shared(SYNS_AttrSpace, TokenType::Space); addAttribute(mWhitespaceAttribute); - mStringAttribute = std::make_shared(SYNS_AttrString); + mStringAttribute = std::make_shared(SYNS_AttrString, TokenType::String); addAttribute(mStringAttribute); - mSymbolAttribute = std::make_shared(SYNS_AttrSymbol); + mSymbolAttribute = std::make_shared(SYNS_AttrSymbol, TokenType::Operator); addAttribute(mSymbolAttribute); } @@ -257,38 +257,12 @@ PHighlighterAttribute ASMHighlighter::getTokenAttribute() const return mSymbolAttribute; case TokenId::Unknown: return mIdentifierAttribute; + default: + break; } return PHighlighterAttribute(); } -TokenKind ASMHighlighter::getTokenKind() -{ - return mTokenID; -} - -TokenType ASMHighlighter::getTokenType() -{ - switch(mTokenID) { - case TokenId::Comment: - return TokenType::Comment; - case TokenId::Identifier: - return TokenType::Identifier; - case TokenId::Key: - return TokenType::Keyword; - case TokenId::Number: - return TokenType::Number; - case TokenId::Space: - return TokenType::Space; - case TokenId::String: - return TokenType::String; - case TokenId::Symbol: - return TokenType::Symbol; - case TokenId::Unknown: - return TokenType::Default; - } - return TokenType::Default; -} - int ASMHighlighter::getTokenPos() { return mTokenPos; diff --git a/libs/qsynedit/qsynedit/highlighter/asm.h b/libs/qsynedit/qsynedit/highlighter/asm.h index 1a9b063b..f43adce8 100644 --- a/libs/qsynedit/qsynedit/highlighter/asm.h +++ b/libs/qsynedit/qsynedit/highlighter/asm.h @@ -23,7 +23,7 @@ namespace QSynedit { class ASMHighlighter : public Highlighter { - enum TokenId { + enum class TokenId { Comment, Identifier, Key, @@ -47,7 +47,7 @@ private: int mStringLen; QChar mToIdent; int mTokenPos; - TokenKind mTokenID; + TokenId mTokenID; PHighlighterAttribute mNumberAttribute; private: @@ -75,8 +75,6 @@ public: HighlighterLanguage language() override; QString getToken() const override; PHighlighterAttribute getTokenAttribute() const override; - TokenKind getTokenKind() override; - TokenType getTokenType() override; int getTokenPos() override; void next() override; void setLine(const QString &newLine, int lineNumber) override; diff --git a/libs/qsynedit/qsynedit/highlighter/base.cpp b/libs/qsynedit/qsynedit/highlighter/base.cpp index 40feaf35..81943d9b 100644 --- a/libs/qsynedit/qsynedit/highlighter/base.cpp +++ b/libs/qsynedit/qsynedit/highlighter/base.cpp @@ -65,11 +65,6 @@ PHighlighterAttribute Highlighter::symbolAttribute() const return mSymbolAttribute; } -TokenType Highlighter::getTokenType() -{ - return TokenType::Default; -} - bool Highlighter::isKeyword(const QString &) { return false; @@ -162,13 +157,9 @@ int Highlighter::attributesCount() const return mAttributes.size(); } -PHighlighterAttribute Highlighter::getAttribute(const QString &name) const +PHighlighterAttribute Highlighter::getAttribute(const QString& name) const { - auto search = mAttributes.find(name); - if (search!=mAttributes.end()) { - return search.value(); - } - return PHighlighterAttribute(); + return mAttributes.value(name,PHighlighterAttribute()); } bool Highlighter::enabled() const @@ -215,23 +206,22 @@ void HighlighterAttribute::setBackground(const QColor &background) mBackground = background; } +TokenType HighlighterAttribute::tokenType() const +{ + return mTokenType; +} + QString HighlighterAttribute::name() const { return mName; } -void HighlighterAttribute::setName(const QString &name) -{ - if (mName!=name) { - mName = name; - } -} - -HighlighterAttribute::HighlighterAttribute(const QString &name): +HighlighterAttribute::HighlighterAttribute(const QString &name, TokenType tokenType): mForeground(QColor()), mBackground(QColor()), mName(name), - mStyles(FontStyle::fsNone) + mStyles(FontStyle::fsNone), + mTokenType(tokenType) { } diff --git a/libs/qsynedit/qsynedit/highlighter/base.h b/libs/qsynedit/qsynedit/highlighter/base.h index 821bdc02..cac28fac 100644 --- a/libs/qsynedit/qsynedit/highlighter/base.h +++ b/libs/qsynedit/qsynedit/highlighter/base.h @@ -52,13 +52,27 @@ struct HighlighterState { HighlighterState(); }; -typedef int TokenKind; - enum class TokenType { - Default, Space, Comment, - PreprocessDirective, String, StringEscapeSequence, - Identifier, Symbol, - Character, Keyword, Number}; + Default, + Comment, // any comment + Space, + + String, // a string constant: "this is a string" + Character, // a character constant: 'c', '\n' + Number, // a number constant: 234, 0xff + + Identifier, // any variable name + + Keyword, // any keyword + + Operator, // "sizeof", "+", "*", etc. + + Preprocessor, //generic Preprocessor + + Error, + + Embeded //language embeded in others + }; enum class HighlighterClass { Composition, @@ -76,10 +90,9 @@ enum class HighlighterLanguage { class HighlighterAttribute { public: - explicit HighlighterAttribute(const QString& name); + explicit HighlighterAttribute(const QString& name, TokenType mTokenType); QString name() const; - void setName(const QString &name); FontStyles styles() const; void setStyles(const FontStyles &styles); @@ -90,11 +103,14 @@ public: QColor background() const; void setBackground(const QColor &background); + TokenType tokenType() const; + private: QColor mForeground; QColor mBackground; QString mName; FontStyles mStyles; + TokenType mTokenType; }; typedef std::shared_ptr PHighlighterAttribute; @@ -133,8 +149,6 @@ public: virtual HighlighterState getState() const = 0; virtual QString getToken() const=0; virtual PHighlighterAttribute getTokenAttribute() const=0; - virtual TokenType getTokenType(); - virtual TokenKind getTokenKind() = 0; virtual int getTokenPos() = 0; virtual bool isKeyword(const QString& word); virtual void next() = 0; diff --git a/libs/qsynedit/qsynedit/highlighter/composition.cpp b/libs/qsynedit/qsynedit/highlighter/composition.cpp index 6436eef1..6aef3029 100644 --- a/libs/qsynedit/qsynedit/highlighter/composition.cpp +++ b/libs/qsynedit/qsynedit/highlighter/composition.cpp @@ -38,7 +38,8 @@ HighlighterSchema::HighlighterSchema(QObject *parent): QObject(parent), mCaseSensitive(true) { - mMarkerAttribute = std::make_shared(SYNS_AttrMarker); + mMarkerAttribute = std::make_shared(SYNS_AttrMarker, + QSynedit::TokenType::Default); mMarkerAttribute->setForeground(Qt::yellow); mMarkerAttribute->setStyles(FontStyle::fsBold); } diff --git a/libs/qsynedit/qsynedit/highlighter/cpp.cpp b/libs/qsynedit/qsynedit/highlighter/cpp.cpp index a343d9b2..240c75f5 100644 --- a/libs/qsynedit/qsynedit/highlighter/cpp.cpp +++ b/libs/qsynedit/qsynedit/highlighter/cpp.cpp @@ -143,47 +143,57 @@ const QSet CppHighlighter::Keywords { }; CppHighlighter::CppHighlighter(): Highlighter() { - mAsmAttribute = std::make_shared(SYNS_AttrAssembler); + mAsmAttribute = std::make_shared(SYNS_AttrAssembler, + TokenType::Embeded); addAttribute(mAsmAttribute); - mCharAttribute = std::make_shared(SYNS_AttrCharacter); + mCharAttribute = std::make_shared(SYNS_AttrCharacter, + TokenType::Character); addAttribute(mCharAttribute); - mCommentAttribute = std::make_shared(SYNS_AttrComment); - addAttribute(mCommentAttribute); - mClassAttribute = std::make_shared(SYNS_AttrClass); - addAttribute(mClassAttribute); - mFloatAttribute = std::make_shared(SYNS_AttrFloat); - addAttribute(mFloatAttribute); - mFunctionAttribute = std::make_shared(SYNS_AttrFunction); - addAttribute(mFunctionAttribute); - mGlobalVarAttribute = std::make_shared(SYNS_AttrGlobalVariable); - addAttribute(mGlobalVarAttribute); - mHexAttribute = std::make_shared(SYNS_AttrHexadecimal); - addAttribute(mHexAttribute); - mIdentifierAttribute = std::make_shared(SYNS_AttrIdentifier); - addAttribute(mIdentifierAttribute); - mInvalidAttribute = std::make_shared(SYNS_AttrIllegalChar); - addAttribute(mInvalidAttribute); - mLocalVarAttribute = std::make_shared(SYNS_AttrLocalVariable); - addAttribute(mLocalVarAttribute); - mNumberAttribute = std::make_shared(SYNS_AttrNumber); - addAttribute(mNumberAttribute); - mOctAttribute = std::make_shared(SYNS_AttrOctal); - addAttribute(mOctAttribute); - mPreprocessorAttribute = std::make_shared(SYNS_AttrPreprocessor); - addAttribute(mPreprocessorAttribute); - mKeywordAttribute = std::make_shared(SYNS_AttrReservedWord); - addAttribute(mKeywordAttribute); - mWhitespaceAttribute = std::make_shared(SYNS_AttrSpace); - addAttribute(mWhitespaceAttribute); - mStringAttribute = std::make_shared(SYNS_AttrString); - addAttribute(mStringAttribute); - mStringEscapeSequenceAttribute = std::make_shared(SYNS_AttrStringEscapeSequences); - addAttribute(mStringEscapeSequenceAttribute); - mSymbolAttribute = std::make_shared(SYNS_AttrSymbol); - addAttribute(mSymbolAttribute); - mVariableAttribute = std::make_shared(SYNS_AttrVariable); - addAttribute(mVariableAttribute); + mClassAttribute = std::make_shared(SYNS_AttrClass, + TokenType::Identifier); + addAttribute(mClassAttribute); + mFloatAttribute = std::make_shared(SYNS_AttrFloat, + TokenType::Number); + addAttribute(mFloatAttribute); + mFunctionAttribute = std::make_shared(SYNS_AttrFunction, + TokenType::Identifier); + addAttribute(mFunctionAttribute); + mGlobalVarAttribute = std::make_shared(SYNS_AttrGlobalVariable, + TokenType::Identifier); + addAttribute(mGlobalVarAttribute); + mHexAttribute = std::make_shared(SYNS_AttrHexadecimal, + TokenType::Number); + addAttribute(mHexAttribute); + mIdentifierAttribute = std::make_shared(SYNS_AttrIdentifier, + TokenType::Identifier); + addAttribute(mIdentifierAttribute); + mInvalidAttribute = std::make_shared(SYNS_AttrIllegalChar, + TokenType::Error); + addAttribute(mInvalidAttribute); + mLocalVarAttribute = std::make_shared(SYNS_AttrLocalVariable, + TokenType::Identifier); + addAttribute(mLocalVarAttribute); + mNumberAttribute = std::make_shared(SYNS_AttrNumber, + TokenType::Number); + addAttribute(mNumberAttribute); + mOctAttribute = std::make_shared(SYNS_AttrOctal, + TokenType::Number); + addAttribute(mOctAttribute); + mPreprocessorAttribute = std::make_shared(SYNS_AttrPreprocessor, + TokenType::Preprocessor); + addAttribute(mPreprocessorAttribute); + + mKeywordAttribute = std::make_shared(SYNS_AttrReservedWord, + TokenType::Keyword); + addAttribute(mKeywordAttribute); + + mStringEscapeSequenceAttribute = std::make_shared(SYNS_AttrStringEscapeSequences, + TokenType::String); + addAttribute(mStringEscapeSequenceAttribute); + mVariableAttribute = std::make_shared(SYNS_AttrVariable, + TokenType::Identifier); + addAttribute(mVariableAttribute); resetState(); } @@ -257,12 +267,7 @@ PHighlighterAttribute CppHighlighter::localVarAttribute() const return mLocalVarAttribute; } -CppHighlighter::ExtTokenId CppHighlighter::getExtTokenId() -{ - return mExtTokenId; -} - -TokenKind CppHighlighter::getTokenId() +CppHighlighter::TokenId CppHighlighter::getTokenId() { if ((mRange.state == RangeState::rsAsm || mRange.state == RangeState::rsAsmBlock) && !mAsmStart && !(mTokenId == TokenId::Comment || mTokenId == TokenId::Space @@ -280,16 +285,13 @@ void CppHighlighter::andSymbolProc() switch (mLine[mRun+1].unicode()) { case '=': mRun+=2; - mExtTokenId = ExtTokenId::AndAssign; return; case '&': mRun+=2; - mExtTokenId = ExtTokenId::LogAnd; return; } } mRun+=1; - mExtTokenId = ExtTokenId::And; } void CppHighlighter::ansiCppProc() @@ -372,7 +374,6 @@ void CppHighlighter::braceCloseProc() { mRun += 1; mTokenId = TokenId::Symbol; - mExtTokenId = ExtTokenId::BraceClose; if (mRange.state == RangeState::rsAsmBlock) { mRange.state = rsUnknown; } @@ -392,7 +393,6 @@ void CppHighlighter::braceOpenProc() { mRun += 1; mTokenId = TokenId::Symbol; - mExtTokenId = ExtTokenId::BraceOpen; if (mRange.state == RangeState::rsAsm) { mRange.state = RangeState::rsAsmBlock; mAsmStart = true; @@ -420,10 +420,8 @@ void CppHighlighter::colonProc() mTokenId = TokenId::Symbol; if (mRun+1': if (mRun+2': if (mRun+2='0' && mLine[mRun+1]<='9') { numberProc(); } else { mRun+=1; - mExtTokenId = ExtTokenId::Point; } } void CppHighlighter::questionProc() { mTokenId = TokenId::Symbol; - mExtTokenId = ExtTokenId::Question; mRun+=1; } @@ -944,7 +912,6 @@ void CppHighlighter::roundCloseProc() { mRun += 1; mTokenId = TokenId::Symbol; - mExtTokenId = ExtTokenId::RoundClose; mRange.parenthesisLevel--; if (mRange.parenthesisLevel<0) mRange.parenthesisLevel=0; @@ -955,7 +922,6 @@ void CppHighlighter::roundOpenProc() { mRun += 1; mTokenId = TokenId::Symbol; - mExtTokenId = ExtTokenId::RoundOpen; mRange.parenthesisLevel++; pushIndents(sitParenthesis); } @@ -964,7 +930,6 @@ void CppHighlighter::semiColonProc() { mRun += 1; mTokenId = TokenId::Symbol; - mExtTokenId = ExtTokenId::SemiColon; if (mRange.state == RangeState::rsAsm) mRange.state = RangeState::rsUnknown; while (mRange.getLastIndent() == sitStatement) { @@ -999,20 +964,17 @@ void CppHighlighter::slashProc() case '=': mRun+=2; mTokenId = TokenId::Symbol; - mExtTokenId = ExtTokenId::DivideAssign; return; } } mRun += 1; mTokenId = TokenId::Symbol; - mExtTokenId = ExtTokenId::Divide; } void CppHighlighter::backSlashProc() { if (mRun+1==mLineSize-1) { mTokenId = TokenId::Symbol; - mExtTokenId = ExtTokenId::BackSlash; } else { mTokenId = TokenId::Unknown; } @@ -1032,7 +994,6 @@ void CppHighlighter::squareCloseProc() { mRun+=1; mTokenId = TokenId::Symbol; - mExtTokenId = ExtTokenId::SquareClose; mRange.bracketLevel--; if (mRange.bracketLevel<0) mRange.bracketLevel=0; @@ -1043,7 +1004,6 @@ void CppHighlighter::squareOpenProc() { mRun+=1; mTokenId = TokenId::Symbol; - mExtTokenId = ExtTokenId::SquareOpen; mRange.bracketLevel++; pushIndents(sitBracket); } @@ -1053,10 +1013,8 @@ void CppHighlighter::starProc() mTokenId = TokenId::Symbol; if (mRun+1 Keywords; - ExtTokenId getExtTokenId(); - TokenKind getTokenId(); + TokenId getTokenId(); private: void andSymbolProc(); void ansiCppProc(); @@ -160,8 +145,7 @@ private: int mStringLen; int mToIdent; int mTokenPos; - int mTokenId; - ExtTokenId mExtTokenId; + TokenId mTokenId; int mLineNumber; int mLeftBraces; int mRightBraces; @@ -191,12 +175,10 @@ public: bool eol() const override; QString getToken() const override; PHighlighterAttribute getTokenAttribute() const override; - TokenKind getTokenKind() override; int getTokenPos() override; void next() override; void setLine(const QString &newLine, int lineNumber) override; bool isKeyword(const QString &word) override; - TokenType getTokenType() override; void setState(const HighlighterState& rangeState) override; void resetState() override; HighlighterClass getClass() const override; diff --git a/libs/qsynedit/qsynedit/highlighter/customhighlighterv1.h b/libs/qsynedit/qsynedit/highlighter/customhighlighterv1.h index c2928082..290fb5f4 100644 --- a/libs/qsynedit/qsynedit/highlighter/customhighlighterv1.h +++ b/libs/qsynedit/qsynedit/highlighter/customhighlighterv1.h @@ -7,13 +7,39 @@ class CustomHighlighterV1:public Highlighter { public: CustomHighlighterV1(); + protected: bool mIgnoreCase; - QSet mKeywords; QSet mTypeKeywords; QSet mCallableKeywords; + QSet mKeywords1; + QSet mKeywords2; + QSet mKeywords3; + QSet mKeywords4; + QSet mKeywords5; + QSet mKeywords6; + QSet mOperators; QString mLanguageName; QSet mSuffixes; + + + HighlighterState mRange; +// SynRangeState mSpaceRange; + QString mLine; + int mLineSize; + int mRun; + int mStringLen; + int mTokenPos; + int mTokenId; + int mLineNumber; + int mLeftBraces; + int mRightBraces; + + QSet mCustomTypeKeywords; + + PHighlighterAttribute mInvalidAttribute; + PHighlighterAttribute mTypeKeywordAttribute; + PHighlighterAttribute mCallableAttribute; }; } diff --git a/libs/qsynedit/qsynedit/highlighter/glsl.cpp b/libs/qsynedit/qsynedit/highlighter/glsl.cpp index 6c8130bb..dd37874c 100644 --- a/libs/qsynedit/qsynedit/highlighter/glsl.cpp +++ b/libs/qsynedit/qsynedit/highlighter/glsl.cpp @@ -83,45 +83,56 @@ const QSet GLSLHighlighter::Keywords { GLSLHighlighter::GLSLHighlighter(): Highlighter() { - mAsmAttribute = std::make_shared(SYNS_AttrAssembler); + mAsmAttribute = std::make_shared(SYNS_AttrAssembler, + TokenType::Embeded); addAttribute(mAsmAttribute); - mCharAttribute = std::make_shared(SYNS_AttrCharacter); + mCharAttribute = std::make_shared(SYNS_AttrCharacter, + TokenType::Character); addAttribute(mCharAttribute); - mCommentAttribute = std::make_shared(SYNS_AttrComment); - addAttribute(mCommentAttribute); - mClassAttribute = std::make_shared(SYNS_AttrClass); + + mClassAttribute = std::make_shared(SYNS_AttrClass, + TokenType::Identifier); addAttribute(mClassAttribute); - mFloatAttribute = std::make_shared(SYNS_AttrFloat); + mFloatAttribute = std::make_shared(SYNS_AttrFloat, + TokenType::Number); addAttribute(mFloatAttribute); - mFunctionAttribute = std::make_shared(SYNS_AttrFunction); + mFunctionAttribute = std::make_shared(SYNS_AttrFunction, + TokenType::Identifier); addAttribute(mFunctionAttribute); - mGlobalVarAttribute = std::make_shared(SYNS_AttrGlobalVariable); + mGlobalVarAttribute = std::make_shared(SYNS_AttrGlobalVariable, + TokenType::Identifier); addAttribute(mGlobalVarAttribute); - mHexAttribute = std::make_shared(SYNS_AttrHexadecimal); + mHexAttribute = std::make_shared(SYNS_AttrHexadecimal, + TokenType::Number); addAttribute(mHexAttribute); - mIdentifierAttribute = std::make_shared(SYNS_AttrIdentifier); + mIdentifierAttribute = std::make_shared(SYNS_AttrIdentifier, + TokenType::Identifier); addAttribute(mIdentifierAttribute); - mInvalidAttribute = std::make_shared(SYNS_AttrIllegalChar); + mInvalidAttribute = std::make_shared(SYNS_AttrIllegalChar, + TokenType::Error); addAttribute(mInvalidAttribute); - mLocalVarAttribute = std::make_shared(SYNS_AttrLocalVariable); + mLocalVarAttribute = std::make_shared(SYNS_AttrLocalVariable, + TokenType::Identifier); addAttribute(mLocalVarAttribute); - mNumberAttribute = std::make_shared(SYNS_AttrNumber); + mNumberAttribute = std::make_shared(SYNS_AttrNumber, + TokenType::Number); addAttribute(mNumberAttribute); - mOctAttribute = std::make_shared(SYNS_AttrOctal); + mOctAttribute = std::make_shared(SYNS_AttrOctal, + TokenType::Number); addAttribute(mOctAttribute); - mPreprocessorAttribute = std::make_shared(SYNS_AttrPreprocessor); + mPreprocessorAttribute = std::make_shared(SYNS_AttrPreprocessor, + TokenType::Preprocessor); addAttribute(mPreprocessorAttribute); - mKeywordAttribute = std::make_shared(SYNS_AttrReservedWord); + + mKeywordAttribute = std::make_shared(SYNS_AttrReservedWord, + TokenType::Keyword); addAttribute(mKeywordAttribute); - mWhitespaceAttribute = std::make_shared(SYNS_AttrSpace); - addAttribute(mWhitespaceAttribute); - mStringAttribute = std::make_shared(SYNS_AttrString); - addAttribute(mStringAttribute); - mStringEscapeSequenceAttribute = std::make_shared(SYNS_AttrStringEscapeSequences); + + mStringEscapeSequenceAttribute = std::make_shared(SYNS_AttrStringEscapeSequences, + TokenType::String); addAttribute(mStringEscapeSequenceAttribute); - mSymbolAttribute = std::make_shared(SYNS_AttrSymbol); - addAttribute(mSymbolAttribute); - mVariableAttribute = std::make_shared(SYNS_AttrVariable); + mVariableAttribute = std::make_shared(SYNS_AttrVariable, + TokenType::Identifier); addAttribute(mVariableAttribute); resetState(); @@ -197,12 +208,7 @@ PHighlighterAttribute GLSLHighlighter::localVarAttribute() const return mLocalVarAttribute; } -GLSLHighlighter::ExtTokenId GLSLHighlighter::getExtTokenId() -{ - return mExtTokenId; -} - -TokenKind GLSLHighlighter::getTokenId() +GLSLHighlighter::TokenId GLSLHighlighter::getTokenId() { if ((mRange.state == RangeState::rsAsm || mRange.state == RangeState::rsAsmBlock) && !mAsmStart && !(mTokenId == TokenId::Comment || mTokenId == TokenId::Space @@ -219,15 +225,12 @@ void GLSLHighlighter::andSymbolProc() switch (mLine[mRun+1].unicode()) { case '=': mRun+=2; - mExtTokenId = ExtTokenId::AndAssign; break; case '&': mRun+=2; - mExtTokenId = ExtTokenId::LogAnd; break; default: mRun+=1; - mExtTokenId = ExtTokenId::And; } } @@ -311,7 +314,6 @@ void GLSLHighlighter::braceCloseProc() { mRun += 1; mTokenId = TokenId::Symbol; - mExtTokenId = ExtTokenId::BraceClose; if (mRange.state == RangeState::rsAsmBlock) { mRange.state = rsUnknown; } @@ -331,7 +333,6 @@ void GLSLHighlighter::braceOpenProc() { mRun += 1; mTokenId = TokenId::Symbol; - mExtTokenId = ExtTokenId::BraceOpen; if (mRange.state == RangeState::rsAsm) { mRange.state = RangeState::rsAsmBlock; mAsmStart = true; @@ -359,10 +360,8 @@ void GLSLHighlighter::colonProc() mTokenId = TokenId::Symbol; if (mLine[mRun+1]==':') { mRun+=2; - mExtTokenId = ExtTokenId::ScopeResolution; } else { mRun+=1; - mExtTokenId = ExtTokenId::Colon; } } @@ -370,7 +369,6 @@ void GLSLHighlighter::commaProc() { mRun+=1; mTokenId = TokenId::Symbol; - mExtTokenId = ExtTokenId::Comma; } void GLSLHighlighter::directiveProc() @@ -453,10 +451,8 @@ void GLSLHighlighter::equalProc() mTokenId = TokenId::Symbol; if (mLine[mRun+1] == '=') { mRun += 2; - mExtTokenId = ExtTokenId::LogEqual; } else { mRun += 1; - mExtTokenId = ExtTokenId::Assign; } } @@ -466,20 +462,16 @@ void GLSLHighlighter::greaterProc() switch (mLine[mRun + 1].unicode()) { case '=': mRun += 2; - mExtTokenId = ExtTokenId::GreaterThanEqual; break; case '>': if (mLine[mRun+2] == '=') { mRun+=3; - mExtTokenId = ExtTokenId::ShiftRightAssign; } else { mRun += 2; - mExtTokenId = ExtTokenId::ShiftRight; } break; default: mRun+=1; - mExtTokenId = ExtTokenId::GreaterThan; } } @@ -507,20 +499,16 @@ void GLSLHighlighter::lowerProc() switch(mLine[mRun+1].unicode()) { case '=': mRun+=2; - mExtTokenId = ExtTokenId::LessThanEqual; break; case '<': if (mLine[mRun+2] == '=') { mRun+=3; - mExtTokenId = ExtTokenId::ShiftLeftAssign; } else { mRun+=2; - mExtTokenId = ExtTokenId::ShiftLeft; } break; default: mRun+=1; - mExtTokenId = ExtTokenId::LessThan; } } @@ -530,24 +518,19 @@ void GLSLHighlighter::minusProc() switch(mLine[mRun+1].unicode()) { case '=': mRun += 2; - mExtTokenId = ExtTokenId::SubtractAssign; break; case '-': mRun += 2; - mExtTokenId = ExtTokenId::Decrement; break; case '>': if (mLine[mRun+2]=='*') { mRun += 3; - mExtTokenId = ExtTokenId::PointerToMemberOfPointer; } else { mRun += 2; - mExtTokenId = ExtTokenId::Arrow; } break; default: mRun += 1; - mExtTokenId = ExtTokenId::Subtract; } } @@ -557,11 +540,9 @@ void GLSLHighlighter::modSymbolProc() switch(mLine[mRun + 1].unicode()) { case '=': mRun += 2; - mExtTokenId = ExtTokenId::ModAssign; break; default: mRun += 1; - mExtTokenId = ExtTokenId::Mod; } } @@ -571,11 +552,9 @@ void GLSLHighlighter::notSymbolProc() switch(mLine[mRun + 1].unicode()) { case '=': mRun+=2; - mExtTokenId = ExtTokenId::NotEqual; break; default: mRun+=1; - mExtTokenId = ExtTokenId::LogComplement; } } @@ -768,15 +747,12 @@ void GLSLHighlighter::orSymbolProc() switch ( mLine[mRun+1].unicode()) { case '=': mRun+=2; - mExtTokenId = ExtTokenId::IncOrAssign; break; case '|': mRun+=2; - mExtTokenId = ExtTokenId::LogOr; break; default: mRun+=1; - mExtTokenId = ExtTokenId::IncOr; } } @@ -786,15 +762,12 @@ void GLSLHighlighter::plusProc() switch(mLine[mRun+1].unicode()){ case '=': mRun+=2; - mExtTokenId = ExtTokenId::AddAssign; break; case '+': mRun+=2; - mExtTokenId = ExtTokenId::Increment; break; default: mRun+=1; - mExtTokenId = ExtTokenId::Add; } } @@ -803,22 +776,18 @@ void GLSLHighlighter::pointProc() mTokenId = TokenId::Symbol; if (mLine[mRun+1] == '*' ) { mRun+=2; - mExtTokenId = ExtTokenId::PointerToMemberOfObject; } else if (mLine[mRun+1] == '.' && mLine[mRun+2] == '.') { mRun+=3; - mExtTokenId = ExtTokenId::Ellipse; } else if (mLine[mRun+1]>='0' && mLine[mRun+1]<='9') { numberProc(); } else { mRun+=1; - mExtTokenId = ExtTokenId::Point; } } void GLSLHighlighter::questionProc() { mTokenId = TokenId::Symbol; - mExtTokenId = ExtTokenId::Question; mRun+=1; } @@ -852,7 +821,6 @@ void GLSLHighlighter::roundCloseProc() { mRun += 1; mTokenId = TokenId::Symbol; - mExtTokenId = ExtTokenId::RoundClose; mRange.parenthesisLevel--; if (mRange.parenthesisLevel<0) mRange.parenthesisLevel=0; @@ -863,7 +831,6 @@ void GLSLHighlighter::roundOpenProc() { mRun += 1; mTokenId = TokenId::Symbol; - mExtTokenId = ExtTokenId::RoundOpen; mRange.parenthesisLevel++; pushIndents(sitParenthesis); } @@ -872,7 +839,6 @@ void GLSLHighlighter::semiColonProc() { mRun += 1; mTokenId = TokenId::Symbol; - mExtTokenId = ExtTokenId::SemiColon; if (mRange.state == RangeState::rsAsm) mRange.state = RangeState::rsUnknown; while (mRange.getLastIndent() == sitStatement) { @@ -906,12 +872,10 @@ void GLSLHighlighter::slashProc() case '=': mRun+=2; mTokenId = TokenId::Symbol; - mExtTokenId = ExtTokenId::DivideAssign; break; default: mRun += 1; mTokenId = TokenId::Symbol; - mExtTokenId = ExtTokenId::Divide; } } @@ -928,7 +892,6 @@ void GLSLHighlighter::squareCloseProc() { mRun+=1; mTokenId = TokenId::Symbol; - mExtTokenId = ExtTokenId::SquareClose; mRange.bracketLevel--; if (mRange.bracketLevel<0) mRange.bracketLevel=0; @@ -939,7 +902,6 @@ void GLSLHighlighter::squareOpenProc() { mRun+=1; mTokenId = TokenId::Symbol; - mExtTokenId = ExtTokenId::SquareOpen; mRange.bracketLevel++; pushIndents(sitBracket); } @@ -949,10 +911,8 @@ void GLSLHighlighter::starProc() mTokenId = TokenId::Symbol; if (mLine[mRun+1] == '=') { mRun += 2; - mExtTokenId = ExtTokenId::MultiplyAssign; } else { mRun += 1; - mExtTokenId = ExtTokenId::Star; } } @@ -1157,7 +1117,6 @@ void GLSLHighlighter::tildeProc() { mRun+=1; mTokenId = TokenId::Symbol; - mExtTokenId = ExtTokenId::BitComplement; } void GLSLHighlighter::unknownProc() @@ -1171,10 +1130,8 @@ void GLSLHighlighter::xorSymbolProc() mTokenId = TokenId::Symbol; if (mLine[mRun+1]=='=') { mRun+=2; - mExtTokenId = ExtTokenId::XorAssign; } else { mRun+=1; - mExtTokenId = ExtTokenId::Xor; } } @@ -1392,11 +1349,6 @@ PHighlighterAttribute GLSLHighlighter::getTokenAttribute() const } } -TokenKind GLSLHighlighter::getTokenKind() -{ - return mTokenId; -} - int GLSLHighlighter::getTokenPos() { return mTokenPos; @@ -1478,58 +1430,6 @@ bool GLSLHighlighter::isKeyword(const QString &word) return Keywords.contains(word); } -TokenType GLSLHighlighter::getTokenType() -{ - switch(mTokenId) { - case TokenId::Comment: - return TokenType::Comment; - case TokenId::Directive: - return TokenType::PreprocessDirective; - case TokenId::Identifier: - return TokenType::Identifier; - case TokenId::Key: - return TokenType::Keyword; - case TokenId::Space: - switch (mRange.state) { - case RangeState::rsAnsiC: - case RangeState::rsAnsiCAsm: - case RangeState::rsAnsiCAsmBlock: - case RangeState::rsAsm: - case RangeState::rsAsmBlock: - case RangeState::rsDirectiveComment: - case RangeState::rsCppComment: - return TokenType::Comment; - case RangeState::rsDirective: - case RangeState::rsMultiLineDirective: - return TokenType::PreprocessDirective; - case RangeState::rsString: - case RangeState::rsMultiLineString: - case RangeState::rsStringEscapeSeq: - case RangeState::rsMultiLineStringEscapeSeq: - case RangeState::rsRawString: - return TokenType::String; - case RangeState::rsChar : - return TokenType::Character; - default: - return TokenType::Space; - } - case TokenId::String: - return TokenType::String; - case TokenId::StringEscapeSeq: - return TokenType::StringEscapeSequence; - case TokenId::RawString: - return TokenType::String; - case TokenId::Char: - return TokenType::Character; - case TokenId::Symbol: - return TokenType::Symbol; - case TokenId::Number: - return TokenType::Number; - default: - return TokenType::Default; - } -} - void GLSLHighlighter::setState(const HighlighterState& rangeState) { mRange = rangeState; diff --git a/libs/qsynedit/qsynedit/highlighter/glsl.h b/libs/qsynedit/qsynedit/highlighter/glsl.h index fd03ddfa..89af6b08 100644 --- a/libs/qsynedit/qsynedit/highlighter/glsl.h +++ b/libs/qsynedit/qsynedit/highlighter/glsl.h @@ -23,8 +23,8 @@ namespace QSynedit { class GLSLHighlighter: public Highlighter { - enum TokenId { - Asm = 1, + enum class TokenId { + Asm, Comment, Directive, Identifier, @@ -44,20 +44,6 @@ class GLSLHighlighter: public Highlighter RawString }; - enum class ExtTokenId { - Add, AddAssign, And, AndAssign, Arrow, Assign, - BitComplement, BraceClose, BraceOpen, Colon, Comma, - Decrement, Divide, DivideAssign, Ellipse, GreaterThan, - GreaterThanEqual, IncOr, IncOrAssign, Increment, LessThan, - LessThanEqual, LogAnd, LogComplement, LogEqual, LogOr, - Mod, ModAssign, MultiplyAssign, NotEqual, Point, PointerToMemberOfObject, - PointerToMemberOfPointer,Question, - RoundClose, RoundOpen, ScopeResolution, SemiColon, ShiftLeft, - ShiftLeftAssign, ShiftRight, ShiftRightAssign, SquareClose, - SquareOpen, Star, Subtract, SubtractAssign, Xor, - XorAssign - }; - enum RangeState { rsUnknown, rsAnsiC, rsAnsiCAsm, rsAnsiCAsmBlock, rsAsm, rsAsmBlock, rsDirective, rsDirectiveComment, rsString, @@ -100,8 +86,7 @@ public: static const QSet Keywords; - ExtTokenId getExtTokenId(); - TokenKind getTokenId(); + TokenId getTokenId(); private: void andSymbolProc(); void ansiCppProc(); @@ -158,8 +143,7 @@ private: int mStringLen; int mToIdent; int mTokenPos; - int mTokenId; - ExtTokenId mExtTokenId; + TokenId mTokenId; int mLineNumber; int mLeftBraces; int mRightBraces; @@ -187,12 +171,10 @@ public: bool eol() const override; QString getToken() const override; PHighlighterAttribute getTokenAttribute() const override; - TokenKind getTokenKind() override; int getTokenPos() override; void next() override; void setLine(const QString &newLine, int lineNumber) override; bool isKeyword(const QString &word) override; - TokenType getTokenType() override; void setState(const HighlighterState& rangeState) override; void resetState() override; HighlighterClass getClass() const override;