From c4a41403bc1ec02bc90af4e5079134db8b62fc38 Mon Sep 17 00:00:00 2001 From: Roy Qu Date: Sat, 10 Dec 2022 21:23:49 +0800 Subject: [PATCH] refactor highlighters --- RedPandaIDE/HighlighterManager.h | 38 --- RedPandaIDE/RedPandaIDE.pro | 4 +- RedPandaIDE/colorscheme.cpp | 2 +- RedPandaIDE/colorscheme.h | 2 +- RedPandaIDE/cpprefacter.cpp | 36 +-- RedPandaIDE/editor.cpp | 227 +++++++++--------- RedPandaIDE/editor.h | 2 +- RedPandaIDE/parser/cppparser.cpp | 16 +- ...lighterManager.cpp => syntaxermanager.cpp} | 76 +++--- RedPandaIDE/syntaxermanager.h | 38 +++ RedPandaIDE/todoparser.cpp | 22 +- RedPandaIDE/todoparser.h | 4 +- RedPandaIDE/widgets/cpudialog.cpp | 6 +- RedPandaIDE/widgets/filepropertiesdialog.cpp | 2 +- libs/qsynedit/qsynedit.pro | 26 +- libs/qsynedit/qsynedit/Constants.h | 2 +- libs/qsynedit/qsynedit/MiscProcs.cpp | 22 +- libs/qsynedit/qsynedit/MiscProcs.h | 4 +- libs/qsynedit/qsynedit/SynEdit.cpp | 226 ++++++++--------- libs/qsynedit/qsynedit/SynEdit.h | 17 +- libs/qsynedit/qsynedit/TextBuffer.h | 2 +- libs/qsynedit/qsynedit/TextPainter.cpp | 52 ++-- libs/qsynedit/qsynedit/TextPainter.h | 2 +- .../qsynedit/exporter/synexporter.cpp | 42 ++-- libs/qsynedit/qsynedit/exporter/synexporter.h | 6 +- .../qsynedit/exporter/synhtmlexporter.cpp | 6 +- .../{highlighter => syntaxer}/asm.cpp | 0 .../qsynedit/{highlighter => syntaxer}/asm.h | 0 .../{highlighter => syntaxer}/composition.cpp | 0 .../{highlighter => syntaxer}/composition.h | 0 .../{highlighter => syntaxer}/cpp.cpp | 0 .../qsynedit/{highlighter => syntaxer}/cpp.h | 4 +- .../customhighlighterv1.cpp | 0 .../customhighlighterv1.h | 0 .../{highlighter => syntaxer}/glsl.cpp | 0 .../qsynedit/{highlighter => syntaxer}/glsl.h | 4 +- .../{highlighter => syntaxer}/makefile.cpp | 0 .../{highlighter => syntaxer}/makefile.h | 4 +- .../{highlighter => syntaxer}/syntaxer.cpp | 0 .../{highlighter => syntaxer}/syntaxer.h | 0 40 files changed, 436 insertions(+), 458 deletions(-) delete mode 100644 RedPandaIDE/HighlighterManager.h rename RedPandaIDE/{HighlighterManager.cpp => syntaxermanager.cpp} (52%) create mode 100644 RedPandaIDE/syntaxermanager.h rename libs/qsynedit/qsynedit/{highlighter => syntaxer}/asm.cpp (100%) rename libs/qsynedit/qsynedit/{highlighter => syntaxer}/asm.h (100%) rename libs/qsynedit/qsynedit/{highlighter => syntaxer}/composition.cpp (100%) rename libs/qsynedit/qsynedit/{highlighter => syntaxer}/composition.h (100%) rename libs/qsynedit/qsynedit/{highlighter => syntaxer}/cpp.cpp (100%) rename libs/qsynedit/qsynedit/{highlighter => syntaxer}/cpp.h (98%) rename libs/qsynedit/qsynedit/{highlighter => syntaxer}/customhighlighterv1.cpp (100%) rename libs/qsynedit/qsynedit/{highlighter => syntaxer}/customhighlighterv1.h (100%) rename libs/qsynedit/qsynedit/{highlighter => syntaxer}/glsl.cpp (100%) rename libs/qsynedit/qsynedit/{highlighter => syntaxer}/glsl.h (98%) rename libs/qsynedit/qsynedit/{highlighter => syntaxer}/makefile.cpp (100%) rename libs/qsynedit/qsynedit/{highlighter => syntaxer}/makefile.h (98%) rename libs/qsynedit/qsynedit/{highlighter => syntaxer}/syntaxer.cpp (100%) rename libs/qsynedit/qsynedit/{highlighter => syntaxer}/syntaxer.h (100%) diff --git a/RedPandaIDE/HighlighterManager.h b/RedPandaIDE/HighlighterManager.h deleted file mode 100644 index 6982085d..00000000 --- a/RedPandaIDE/HighlighterManager.h +++ /dev/null @@ -1,38 +0,0 @@ -/* - * Copyright (C) 2020-2022 Roy Qu (royqh1979@gmail.com) - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -#ifndef HIGHLIGHTERMANAGER_H -#define HIGHLIGHTERMANAGER_H -#include "qsynedit/highlighter/base.h" - -class HighlighterManager -{ -public: - HighlighterManager(); - - QSynedit::PHighlighter getHighlighter(QSynedit::ProgrammingLanguage language); - QSynedit::PHighlighter getHighlighter(const QString& filename); - QSynedit::PHighlighter copyHighlighter(QSynedit::PHighlighter highlighter); - QSynedit::PHighlighter getCppHighlighter(); - QSynedit::PHighlighter getAsmHighlighter(); - QSynedit::PHighlighter getGLSLHighlighter(); - QSynedit::PHighlighter getMakefileHighlighter(); - void applyColorScheme(QSynedit::PHighlighter highlighter, const QString& schemeName); -}; - -extern HighlighterManager highlighterManager; - -#endif // HIGHLIGHTERMANAGER_H diff --git a/RedPandaIDE/RedPandaIDE.pro b/RedPandaIDE/RedPandaIDE.pro index 0568db9c..5aa68d81 100644 --- a/RedPandaIDE/RedPandaIDE.pro +++ b/RedPandaIDE/RedPandaIDE.pro @@ -75,7 +75,6 @@ LIBS += advapi32.lib user32.lib } SOURCES += \ - HighlighterManager.cpp \ autolinkmanager.cpp \ caretlist.cpp \ codeformatter.cpp \ @@ -129,6 +128,7 @@ SOURCES += \ settingsdialog/toolsgitwidget.cpp \ shortcutmanager.cpp \ symbolusagemanager.cpp \ + syntaxermanager.cpp \ thememanager.cpp \ todoparser.cpp \ toolsmanager.cpp \ @@ -209,7 +209,6 @@ SOURCES += \ widgets/signalmessagedialog.cpp HEADERS += \ - HighlighterManager.h \ SimpleIni.h \ autolinkmanager.h \ caretlist.h \ @@ -264,6 +263,7 @@ HEADERS += \ settingsdialog/toolsgitwidget.h \ shortcutmanager.h \ symbolusagemanager.h \ + syntaxermanager.h \ thememanager.h \ todoparser.h \ toolsmanager.h \ diff --git a/RedPandaIDE/colorscheme.cpp b/RedPandaIDE/colorscheme.cpp index fec118f7..eca025ff 100644 --- a/RedPandaIDE/colorscheme.cpp +++ b/RedPandaIDE/colorscheme.cpp @@ -428,7 +428,7 @@ void ColorManager::loadSchemesInDir(const QString &dirName, bool isBundled, bool void ColorManager::initItemDefines() { - //Highlighter colors + //Token highlight colors addDefine(SYNS_AttrAssembler, QObject::tr("Assembler"), QObject::tr("Syntax"), diff --git a/RedPandaIDE/colorscheme.h b/RedPandaIDE/colorscheme.h index 1d50b85e..7f5305eb 100644 --- a/RedPandaIDE/colorscheme.h +++ b/RedPandaIDE/colorscheme.h @@ -18,7 +18,7 @@ #define COLORSCHEME_H #include -#include "qsynedit/highlighter/base.h" +#include "qsynedit/syntaxer/syntaxer.h" #include "parser/statementmodel.h" #define EXT_COLOR_SCHEME ".scheme" diff --git a/RedPandaIDE/cpprefacter.cpp b/RedPandaIDE/cpprefacter.cpp index a4f20dfc..4ea3aa0a 100644 --- a/RedPandaIDE/cpprefacter.cpp +++ b/RedPandaIDE/cpprefacter.cpp @@ -22,7 +22,7 @@ #include #include #include -#include "HighlighterManager.h" +#include "syntaxermanager.h" #include "project.h" CppRefacter::CppRefacter(QObject *parent) : QObject(parent) @@ -207,7 +207,7 @@ PSearchResultTreeItem CppRefacter::findOccurenceInFile( QByteArray encoding; editor.document()->loadFromFile(filename,ENCODING_AUTO_DETECT,encoding); } - editor.setHighlighter(HighlighterManager().getCppHighlighter()); + editor.setSyntaxer(syntaxerManager.getCppSyntaxer()); int posY = 0; while (posY < editor.document()->count()) { QString line = editor.document()->getString(posY); @@ -217,16 +217,16 @@ PSearchResultTreeItem CppRefacter::findOccurenceInFile( } if (posY == 0) { - editor.highlighter()->resetState(); + editor.syntaxer()->resetState(); } else { - editor.highlighter()->setState( + editor.syntaxer()->setState( editor.document()->ranges(posY-1)); } - editor.highlighter()->setLine(line,posY); - while (!editor.highlighter()->eol()) { - int start = editor.highlighter()->getTokenPos() + 1; - QString token = editor.highlighter()->getToken(); - QSynedit::PTokenAttribute attr = editor.highlighter()->getTokenAttribute(); + editor.syntaxer()->setLine(line,posY); + while (!editor.syntaxer()->eol()) { + int start = editor.syntaxer()->getTokenPos() + 1; + QString token = editor.syntaxer()->getToken(); + QSynedit::PTokenAttribute attr = editor.syntaxer()->getTokenAttribute(); if (attr && attr->tokenType()==QSynedit::TokenType::Identifier) { if (token == statement->command) { //same name symbol , test if the same statement; @@ -253,7 +253,7 @@ PSearchResultTreeItem CppRefacter::findOccurenceInFile( } } } - editor.highlighter()->next(); + editor.syntaxer()->next(); } posY++; } @@ -272,22 +272,22 @@ void CppRefacter::renameSymbolInFile(const QString &filename, const PStatement & editor.document()->loadFromFile(filename,ENCODING_AUTO_DETECT,encoding); } QStringList newContents; - editor.setHighlighter(HighlighterManager().getCppHighlighter()); + editor.setSyntaxer(syntaxerManager.getCppSyntaxer()); int posY = 0; while (posY < editor.document()->count()) { QString line = editor.document()->getString(posY); if (posY == 0) { - editor.highlighter()->resetState(); + editor.syntaxer()->resetState(); } else { - editor.highlighter()->setState( + editor.syntaxer()->setState( editor.document()->ranges(posY-1)); } - editor.highlighter()->setLine(line,posY); + editor.syntaxer()->setLine(line,posY); QString newLine; - while (!editor.highlighter()->eol()) { - int start = editor.highlighter()->getTokenPos() + 1; - QString token = editor.highlighter()->getToken(); + while (!editor.syntaxer()->eol()) { + int start = editor.syntaxer()->getTokenPos() + 1; + QString token = editor.syntaxer()->getToken(); if (token == statement->command) { //same name symbol , test if the same statement; QSynedit::BufferCoord p; @@ -305,7 +305,7 @@ void CppRefacter::renameSymbolInFile(const QString &filename, const PStatement & } } newLine += token; - editor.highlighter()->next(); + editor.syntaxer()->next(); } newContents.append(newLine); posY++; diff --git a/RedPandaIDE/editor.cpp b/RedPandaIDE/editor.cpp index 63ebdd4a..cfc274d2 100644 --- a/RedPandaIDE/editor.cpp +++ b/RedPandaIDE/editor.cpp @@ -29,8 +29,8 @@ #include #include #include -#include "qsynedit/highlighter/cpp.h" -#include "HighlighterManager.h" +#include "qsynedit/syntaxer/cpp.h" +#include "syntaxermanager.h" #include "qsynedit/exporter/synrtfexporter.h" #include "qsynedit/exporter/synhtmlexporter.h" #include "qsynedit/Constants.h" @@ -105,17 +105,17 @@ Editor::Editor(QWidget *parent, const QString& filename, mFilename = QString("untitled%1").arg(getNewFileNumber()); } QFileInfo fileInfo(mFilename); - QSynedit::PHighlighter highlighter; + QSynedit::PSyntaxer syntaxer; if (!isNew) { loadFile(); - highlighter = highlighterManager.getHighlighter(mFilename); + syntaxer = syntaxerManager.getSyntaxer(mFilename); } else { mFileEncoding = ENCODING_ASCII; - highlighter=highlighterManager.getCppHighlighter(); + syntaxer=syntaxerManager.getCppSyntaxer(); } - if (highlighter) { - setHighlighter(highlighter); + if (syntaxer) { + setSyntaxer(syntaxer); setUseCodeFolding(true); } else { setUseCodeFolding(false); @@ -225,7 +225,7 @@ void Editor::loadFile(QString filename) { default: mUseCppSyntax = pSettings->editor().defaultFileCpp(); } - if (highlighter()) { + if (syntaxer()) { reparse(true); if (pSettings->editor().syntaxCheckWhenLineChanged()) { checkSyntaxInBack(); @@ -382,15 +382,15 @@ bool Editor::saveAs(const QString &name, bool fromProject){ mUseCppSyntax = pSettings->editor().defaultFileCpp(); } - //update (reassign highlighter) - QSynedit::PHighlighter newHighlighter = HighlighterManager().getHighlighter(mFilename); - if (newHighlighter) { + //update (reassign syntaxer) + QSynedit::PSyntaxer newSyntaxer = syntaxerManager.getSyntaxer(mFilename); + if (newSyntaxer) { setUseCodeFolding(true); } else { setUseCodeFolding(false); } - setHighlighter(newHighlighter); - if (!newHighlighter || newHighlighter->language() != QSynedit::ProgrammingLanguage::Cpp) { + setSyntaxer(newSyntaxer); + if (!newSyntaxer || newSyntaxer->language() != QSynedit::ProgrammingLanguage::Cpp) { mSyntaxIssues.clear(); } applyColorScheme(pSettings->editor().colorScheme()); @@ -483,11 +483,11 @@ void Editor::undoSymbolCompletion(int pos) QString token; bool tokenFinished; - if (!highlighter()) + if (!syntaxer()) return; if (!pSettings->editor().removeSymbolPairs()) return; - if (!getHighlighterAttriAtRowCol(caretXY(), token, tokenFinished, attr)) + if (!getTokenAttriAtRowCol(caretXY(), token, tokenFinished, attr)) return; if ((attr->tokenType() == QSynedit::TokenType::Comment) && (!tokenFinished)) return ; @@ -635,9 +635,9 @@ void Editor::keyPressEvent(QKeyEvent *event) insertString.append(" */"); } insertCodeSnippet(linesToText(insertString)); - } else if (highlighter() + } else if (syntaxer() && caretY()>=2 - && highlighter()->isLastLineCommentNotFinished( + && syntaxer()->isLastLineCommentNotFinished( document()->ranges(caretY()-2).state)) { s=trimLeft(lineText()); if (s.startsWith("* ")) { @@ -917,7 +917,7 @@ void Editor::onGetEditingAreas(int Line, QSynedit::EditingAreaList &areaList) // int spaceBefore = mLineBeforeTabStop.length()-TrimLeft(mLineBeforeTabStop).length(); p->beginX = mTabStopBegin; p->endX = mTabStopEnd; - p->color = highlighter()->stringAttribute()->foreground(); + p->color = syntaxer()->stringAttribute()->foreground(); areaList.append(p); } PSyntaxIssueList lst = getSyntaxIssuesAtLine(Line); @@ -966,7 +966,7 @@ void Editor::onPreparePaintHighlightToken(int line, int aChar, const QString &to if (token.isEmpty()) return; - if (mParser && highlighter()) { + if (mParser && syntaxer()) { QString lineText = document()->getString(line-1); if (mParser->isIncludeLine(lineText)) { if (cursor() == Qt::PointingHandCursor) { @@ -1018,7 +1018,7 @@ void Editor::onPreparePaintHighlightToken(int line, int aChar, const QString &to style.setFlag(QSynedit::FontStyle::fsUnderline,item->underlined()); style.setFlag(QSynedit::FontStyle::fsStrikeOut,item->strikeout()); } else { - foreground = highlighter()->identifierAttribute()->foreground(); + foreground = syntaxer()->identifierAttribute()->foreground(); } if (cursor() == Qt::PointingHandCursor) { QSynedit::BufferCoord p; @@ -1032,14 +1032,14 @@ void Editor::onPreparePaintHighlightToken(int line, int aChar, const QString &to } //selection - if (highlighter() && attr) { + if (syntaxer() && attr) { if (attr->tokenType() == QSynedit::TokenType::Keyword) { if (CppTypeKeywords.contains(token) || ( - highlighter()->language()==QSynedit::ProgrammingLanguage::Cpp + syntaxer()->language()==QSynedit::ProgrammingLanguage::Cpp && - ((QSynedit::CppHighlighter*)highlighter().get())->customTypeKeywords().contains(token) + ((QSynedit::CppSyntaxer*)syntaxer().get())->customTypeKeywords().contains(token) ) ) { @@ -1481,12 +1481,12 @@ void Editor::copyAsHTML() exporter.setExportAsText(false); exporter.setUseBackground(pSettings->editor().copyHTMLUseBackground()); exporter.setFont(font()); - QSynedit::PHighlighter hl = highlighter(); + QSynedit::PSyntaxer hl = syntaxer(); if (!pSettings->editor().copyHTMLUseEditorColor()) { - hl = highlighterManager.copyHighlighter(highlighter()); - highlighterManager.applyColorScheme(hl,pSettings->editor().copyHTMLColorScheme()); + hl = syntaxerManager.copy(syntaxer()); + syntaxerManager.applyColorScheme(hl,pSettings->editor().copyHTMLColorScheme()); } - exporter.setHighlighter(hl); + exporter.setSyntaxer(hl); exporter.setOnFormatToken(std::bind(&Editor::onExportedFormatToken, this, std::placeholders::_1, @@ -1541,7 +1541,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,start,attr)) + if (!getTokenAttriAtRowColEx(p,token,start,attr)) return; } else { start = startChar; @@ -1699,7 +1699,7 @@ void Editor::onStatusChanged(QSynedit::StatusChanges changes) clearUserCodeInTabStops(); } } - } else if (!selAvail() && highlighter() && pSettings->editor().highlightMathingBraces()){ + } else if (!selAvail() && syntaxer() && pSettings->editor().highlightMathingBraces()){ invalidateLine(mHighlightCharPos1.line); invalidateLine(mHighlightCharPos2.line); mHighlightCharPos1 = QSynedit::BufferCoord{0,0}; @@ -1720,7 +1720,7 @@ void Editor::onStatusChanged(QSynedit::StatusChanges changes) } QSynedit::PTokenAttribute attr; QString token; - if (getHighlighterAttriAtRowCol(coord,token,attr) + if (getTokenAttriAtRowCol(coord,token,attr) && attr->tokenType() == QSynedit::TokenType::Operator) { QSynedit::BufferCoord complementCharPos = getMatchingBracketEx(coord); if (!foldHidesLine(coord.line) @@ -1938,38 +1938,38 @@ QStringList Editor::getExpressionAtPosition( const QSynedit::BufferCoord &pos) { QStringList result; - if (!highlighter()) + if (!syntaxer()) return result; int line = pos.line-1; int ch = pos.ch-1; int symbolMatchingLevel = 0; LastSymbolType lastSymbolType=LastSymbolType::None; - QSynedit::PHighlighter highlighter; + QSynedit::PSyntaxer syntaxer; if (isNew()) - highlighter = highlighterManager.getCppHighlighter(); + syntaxer = syntaxerManager.getCppSyntaxer(); else - highlighter = highlighterManager.getHighlighter(mFilename); - if (!highlighter) + syntaxer = syntaxerManager.getSyntaxer(mFilename); + if (!syntaxer) return result; while (true) { if (line>=document()->count() || line<0) break; QStringList tokens; if (line==0) { - highlighter->resetState(); + syntaxer->resetState(); } else { - highlighter->setState(document()->ranges(line-1)); + syntaxer->setState(document()->ranges(line-1)); } QString sLine = document()->getString(line); - highlighter->setLine(sLine,line-1); - while (!highlighter->eol()) { - int start = highlighter->getTokenPos(); - QString token = highlighter->getToken(); + syntaxer->setLine(sLine,line-1); + while (!syntaxer->eol()) { + int start = syntaxer->getTokenPos(); + QString token = syntaxer->getToken(); int endPos = start + token.length()-1; if (start>ch) { break; } - QSynedit::PTokenAttribute attr = highlighter->getTokenAttribute(); + QSynedit::PTokenAttribute attr = syntaxer->getTokenAttribute(); if ( (line == pos.line-1) && (start<=ch) && (ch<=endPos)) { if (attr->tokenType() == QSynedit::TokenType::Comment @@ -1981,7 +1981,7 @@ QStringList Editor::getExpressionAtPosition( && attr->tokenType() != QSynedit::TokenType::Space){ tokens.append(token); } - highlighter->next(); + syntaxer->next(); } for (int i=tokens.count()-1;i>=0;i--) { QString token = tokens[i]; @@ -2199,12 +2199,12 @@ bool Editor::handleSymbolCompletion(QChar key) return false; //todo: better methods to detect current caret type - if (highlighter()) { + if (syntaxer()) { if (caretX() <= 1) { if (caretY()>1) { - if (highlighter()->isLastLineCommentNotFinished(document()->ranges(caretY() - 2).state)) + if (syntaxer()->isLastLineCommentNotFinished(document()->ranges(caretY() - 2).state)) return false; - if (highlighter()->isLastLineStringNotFinished(document()->ranges(caretY() - 2).state) + if (syntaxer()->isLastLineStringNotFinished(document()->ranges(caretY() - 2).state) && (key!='\"') && (key!='\'')) return false; } @@ -2214,7 +2214,7 @@ bool Editor::handleSymbolCompletion(QChar key) QSynedit::PTokenAttribute attr; QString token; bool tokenFinished; - if (getHighlighterAttriAtRowCol(HighlightPos, token, tokenFinished, attr)) { + if (getTokenAttriAtRowCol(HighlightPos, token, tokenFinished, attr)) { if ((attr->tokenType() == QSynedit::TokenType::Comment) && (!tokenFinished)) return false; if ((attr->tokenType() == QSynedit::TokenType::String) && (!tokenFinished) @@ -2228,11 +2228,6 @@ bool Editor::handleSymbolCompletion(QChar key) } } - // Check if that line is highlighted as string or character or comment - // if (Attr = fText.Highlighter.StringAttribute) or (Attr = fText.Highlighter.CommentAttribute) or SameStr(Attr.Name, - // 'Character') then - // Exit; - QuoteStatus status; switch(key.unicode()) { case '(': @@ -2349,7 +2344,7 @@ bool Editor::handleParentheseSkip() if (document()->count()==0) return false; - if (highlighter() && highlighter()->supportBraceLevel()) { + if (syntaxer() && syntaxer()->supportBraceLevel()) { QSynedit::SyntaxerState lastLineState = document()->ranges(document()->count()-1); if (lastLineState.parenthesisLevel==0) { setCaretXY( QSynedit::BufferCoord{caretX() + 1, caretY()}); // skip over @@ -2400,7 +2395,7 @@ bool Editor::handleBracketSkip() if (document()->count()==0) return false; - if (highlighter() && highlighter()->supportBraceLevel()) { + if (syntaxer() && syntaxer()->supportBraceLevel()) { QSynedit::SyntaxerState lastLineState = document()->ranges(document()->count()-1); if (lastLineState.bracketLevel==0) { setCaretXY( QSynedit::BufferCoord{caretX() + 1, caretY()}); // skip over @@ -2487,7 +2482,7 @@ bool Editor::handleBraceSkip() if (document()->count()==0) return false; - if (highlighter() && highlighter()->supportBraceLevel()) { + if (syntaxer() && syntaxer()->supportBraceLevel()) { QSynedit::SyntaxerState lastLineState = document()->ranges(document()->count()-1); if (lastLineState.braceLevel==0) { bool oldInsertMode = insertMode(); @@ -2531,7 +2526,7 @@ bool Editor::handleSingleQuoteCompletion() endUpdate(); return true; } - if (ch == 0 || highlighter()->isWordBreakChar(ch) || highlighter()->isSpaceChar(ch)) { + if (ch == 0 || syntaxer()->isWordBreakChar(ch) || syntaxer()->isSpaceChar(ch)) { // insert '' beginUpdate(); beginUndoBlock(); @@ -2571,7 +2566,7 @@ bool Editor::handleDoubleQuoteCompletion() endUpdate(); return true; } - if ((ch == 0) || highlighter()->isWordBreakChar(ch) || highlighter()->isSpaceChar(ch)) { + if ((ch == 0) || syntaxer()->isWordBreakChar(ch) || syntaxer()->isSpaceChar(ch)) { // insert "" beginUpdate(); beginUndoBlock(); @@ -2662,7 +2657,7 @@ void Editor::initParser() { if (pSettings->codeCompletion().shareParser()) { if (pSettings->codeCompletion().enabled() - && (highlighter() && highlighter()->language() == QSynedit::ProgrammingLanguage::Cpp) + && (syntaxer() && syntaxer()->language() == QSynedit::ProgrammingLanguage::Cpp) ) { mParser = sharedParser(mUseCppSyntax?ParserLanguage::CPlusPlus:ParserLanguage::C); } @@ -2682,15 +2677,15 @@ void Editor::initParser() resetCppParser(mParser); mParser->setEnabled( pSettings->codeCompletion().enabled() && - (highlighter() && highlighter()->language() == QSynedit::ProgrammingLanguage::Cpp)); + (syntaxer() && syntaxer()->language() == QSynedit::ProgrammingLanguage::Cpp)); } Editor::QuoteStatus Editor::getQuoteStatus() { QuoteStatus Result = QuoteStatus::NotQuote; - if (!highlighter()) + if (!syntaxer()) return Result; - if ((caretY()>1) && highlighter()->isLastLineStringNotFinished(document()->ranges(caretY() - 2).state)) + if ((caretY()>1) && syntaxer()->isLastLineStringNotFinished(document()->ranges(caretY() - 2).state)) Result = QuoteStatus::DoubleQuote; QString Line = document()->getString(caretY()-1); @@ -2812,10 +2807,10 @@ void Editor::reparse(bool resetParser) return; if (!pSettings->codeCompletion().enabled()) return; - if (!highlighter()) + if (!syntaxer()) return; - if (highlighter()->language() != QSynedit::ProgrammingLanguage::Cpp - && highlighter()->language() != QSynedit::ProgrammingLanguage::GLSL) + if (syntaxer()->language() != QSynedit::ProgrammingLanguage::Cpp + && syntaxer()->language() != QSynedit::ProgrammingLanguage::GLSL) return; if (!mParser) return; @@ -2845,7 +2840,7 @@ void Editor::reparseTodo() { if (!mParentPageControl) return; - if (!highlighter()) + if (!syntaxer()) return; if (pSettings->editor().parseTodos()) pMainWindow->todoParser()->parseFile(mFilename, inProject()); @@ -2996,12 +2991,12 @@ void Editor::exportAsRTF(const QString &rtfFilename) exporter.setExportAsText(true); exporter.setUseBackground(pSettings->editor().copyRTFUseBackground()); exporter.setFont(font()); - QSynedit::PHighlighter hl = highlighter(); + QSynedit::PSyntaxer hl = syntaxer(); if (!pSettings->editor().copyRTFUseEditorColor()) { - hl = highlighterManager.copyHighlighter(highlighter()); - highlighterManager.applyColorScheme(hl,pSettings->editor().copyRTFColorScheme()); + hl = syntaxerManager.copy(syntaxer()); + syntaxerManager.applyColorScheme(hl,pSettings->editor().copyRTFColorScheme()); } - exporter.setHighlighter(hl); + exporter.setSyntaxer(hl); exporter.setOnFormatToken(std::bind(&Editor::onExportedFormatToken, this, std::placeholders::_1, @@ -3021,12 +3016,12 @@ void Editor::exportAsHTML(const QString &htmlFilename) exporter.setExportAsText(false); exporter.setUseBackground(pSettings->editor().copyHTMLUseBackground()); exporter.setFont(font()); - QSynedit::PHighlighter hl = highlighter(); + QSynedit::PSyntaxer hl = syntaxer(); if (!pSettings->editor().copyHTMLUseEditorColor()) { - hl = highlighterManager.copyHighlighter(highlighter()); - highlighterManager.applyColorScheme(hl,pSettings->editor().copyHTMLColorScheme()); + hl = syntaxerManager.copy(syntaxer()); + syntaxerManager.applyColorScheme(hl,pSettings->editor().copyHTMLColorScheme()); } - exporter.setHighlighter(hl); + exporter.setSyntaxer(hl); exporter.setOnFormatToken(std::bind(&Editor::onExportedFormatToken, this, std::placeholders::_1, @@ -3049,7 +3044,7 @@ void Editor::showCompletion(const QString& preWord,bool autoComplete, CodeComple if (!mParser || !mParser->enabled()) return; - if (!highlighter()) + if (!syntaxer()) return; if (mCompletionPopup->isVisible()) // already in search, don't do it again @@ -3061,7 +3056,7 @@ void Editor::showCompletion(const QString& preWord,bool autoComplete, CodeComple QSynedit::PTokenAttribute attr; bool tokenFinished; QSynedit::BufferCoord pBeginPos, pEndPos; - if (getHighlighterAttriAtRowCol( + if (getTokenAttriAtRowCol( QSynedit::BufferCoord{caretX() - 1, caretY()}, s, tokenFinished, attr)) { if (attr->tokenType() == QSynedit::TokenType::Preprocessor) {//Preprocessor @@ -3121,9 +3116,9 @@ void Editor::showCompletion(const QString& preWord,bool autoComplete, CodeComple ); QSet keywords; - if (highlighter()) { - if (highlighter()->language() != QSynedit::ProgrammingLanguage::Cpp ) { - keywords = highlighter()->keywords(); + if (syntaxer()) { + if (syntaxer()->language() != QSynedit::ProgrammingLanguage::Cpp ) { + keywords = syntaxer()->keywords(); } else { if (mUseCppSyntax) { foreach (const QString& keyword, CppKeywords.keys()) { @@ -3341,14 +3336,6 @@ void Editor::completionInsert(bool appendFunc) && (statement->args != "(void)")) { setCaretX(caretX() - funcAddOn.length()+1); - //todo: function hint - // immediately activate function hint -// if devEditor.ShowFunctionTip and Assigned(fText.Highlighter) then begin -// fText.SetFocus; -// fFunctionTip.Parser := fParser; -// fFunctionTip.FileName := fFileName; -// fFunctionTip.Show; -// end; } else { setCaretX(caretX()); } @@ -3542,7 +3529,7 @@ bool Editor::onCompletionInputMethod(QInputMethodEvent *event) Editor::TipType Editor::getTipType(QPoint point, QSynedit::BufferCoord& pos) { // Only allow in the text area... - if (pointToCharLine(point, pos) && highlighter()) { + if (pointToCharLine(point, pos) && syntaxer()) { if (!pMainWindow->debugger()->executing() && getSyntaxIssueAtPosition(pos)) { return TipType::Error; @@ -3552,7 +3539,7 @@ Editor::TipType Editor::getTipType(QPoint point, QSynedit::BufferCoord& pos) QString s; // Only allow hand tips in highlighted areas - if (getHighlighterAttriAtRowCol(pos,s,attr)) { + if (getTokenAttriAtRowCol(pos,s,attr)) { // Only allow Identifiers, Preprocessor directives, and selection if (attr) { if (selAvail()) { @@ -3561,7 +3548,7 @@ Editor::TipType Editor::getTipType(QPoint point, QSynedit::BufferCoord& pos) return TipType::Selection; } else if (mParser && mParser->isIncludeLine(document()->getString(pos.line-1))) { return TipType::Preprocessor; - }else if (attr == highlighter()->identifierAttribute()) + }else if (attr == syntaxer()->identifierAttribute()) return TipType::Identifier; } } @@ -3710,7 +3697,7 @@ void Editor::updateFunctionTip(bool showTip) pMainWindow->functionTip()->hide(); return; } - if (!highlighter()) + if (!syntaxer()) return; if (!mParser || !mParser->enabled()) @@ -3745,22 +3732,22 @@ void Editor::updateFunctionTip(bool showTip) QStringList tokens; QList positions; if (currentLine==0) - highlighter()->resetState(); + syntaxer()->resetState(); else - highlighter()->setState( + syntaxer()->setState( document()->ranges(currentLine-1)); - highlighter()->setLine(line,currentLine); - while(!highlighter()->eol()) { - int start = highlighter()->getTokenPos(); - QString token = highlighter()->getToken(); - QSynedit::PTokenAttribute attr = highlighter()->getTokenAttribute(); + syntaxer()->setLine(line,currentLine); + while(!syntaxer()->eol()) { + int start = syntaxer()->getTokenPos(); + QString token = syntaxer()->getToken(); + QSynedit::PTokenAttribute attr = syntaxer()->getTokenAttribute(); if (start>=currentChar) break; if (attr->tokenType() != QSynedit::TokenType::Comment && attr->tokenType() != QSynedit::TokenType::Space) { if (foundFunctionStart) { - if (attr!=highlighter()->identifierAttribute()) + if (attr!=syntaxer()->identifierAttribute()) return; // not a function functionNamePos.line = currentLine+1; functionNamePos.ch = start+1; @@ -3773,7 +3760,7 @@ void Editor::updateFunctionTip(bool showTip) && start+token.length()>=caretPos.ch) { return; // in comment, do nothing } - highlighter()->next(); + syntaxer()->next(); } if (!foundFunctionStart) { for (int i=tokens.length()-1;i>=0;i--) { @@ -3962,9 +3949,9 @@ void Editor::popUserCodeInTabStops() } } -void Editor::onExportedFormatToken(QSynedit::PHighlighter syntaxHighlighter, int Line, int column, const QString &token, QSynedit::PTokenAttribute& attr) +void Editor::onExportedFormatToken(QSynedit::PSyntaxer syntaxer, int Line, int column, const QString &token, QSynedit::PTokenAttribute& attr) { - if (!syntaxHighlighter) + if (!syntaxer) return; if (token.isEmpty()) return; @@ -3972,7 +3959,7 @@ void Editor::onExportedFormatToken(QSynedit::PHighlighter syntaxHighlighter, int if (mCompletionPopup->isVisible() || mHeaderCompletionPopup->isVisible()) return; - if (mParser && (attr == syntaxHighlighter->identifierAttribute())) { + if (mParser && (attr == syntaxer->identifierAttribute())) { QSynedit::BufferCoord p{column,Line}; QSynedit::BufferCoord pBeginPos,pEndPos; QString s= getWordAtPosition(this,p, pBeginPos,pEndPos, WordPurpose::wpInformation); @@ -3990,41 +3977,41 @@ void Editor::onExportedFormatToken(QSynedit::PHighlighter syntaxHighlighter, int kind = StatementKind::skVariable; } } - QSynedit::CppHighlighter* cppHighlighter = dynamic_cast(syntaxHighlighter.get()); + QSynedit::CppSyntaxer* cppSyntaxer = dynamic_cast(syntaxer.get()); switch(kind) { case StatementKind::skFunction: case StatementKind::skConstructor: case StatementKind::skDestructor: - attr = cppHighlighter->functionAttribute(); + attr = cppSyntaxer->functionAttribute(); break; case StatementKind::skClass: case StatementKind::skTypedef: case StatementKind::skAlias: - attr = cppHighlighter->classAttribute(); + attr = cppSyntaxer->classAttribute(); break; case StatementKind::skEnumClassType: case StatementKind::skEnumType: break; case StatementKind::skLocalVariable: case StatementKind::skParameter: - attr = cppHighlighter->localVarAttribute(); + attr = cppSyntaxer->localVarAttribute(); break; case StatementKind::skVariable: - attr = cppHighlighter->variableAttribute(); + attr = cppSyntaxer->variableAttribute(); break; case StatementKind::skGlobalVariable: - attr = cppHighlighter->globalVarAttribute(); + attr = cppSyntaxer->globalVarAttribute(); break; case StatementKind::skEnum: case StatementKind::skPreprocessor: - attr = cppHighlighter->preprocessorAttribute(); + attr = cppSyntaxer->preprocessorAttribute(); break; case StatementKind::skKeyword: - attr = cppHighlighter->keywordAttribute(); + attr = cppSyntaxer->keywordAttribute(); break; case StatementKind::skNamespace: case StatementKind::skNamespaceAlias: - attr = cppHighlighter->stringAttribute(); + attr = cppSyntaxer->stringAttribute(); break; default: break; @@ -4580,9 +4567,9 @@ void Editor::checkSyntaxInBack() return; if (readOnly()) return; - if (!highlighter()) + if (!syntaxer()) return; - if (highlighter()->language()!=QSynedit::ProgrammingLanguage::Cpp) + if (syntaxer()->language()!=QSynedit::ProgrammingLanguage::Cpp) return; pMainWindow->checkSyntaxInBack(this); } @@ -4737,7 +4724,7 @@ void Editor::applySettings() options.setFlag(QSynedit::eoHalfPageScroll,pSettings->editor().halfPageScroll()); options.setFlag(QSynedit::eoShowRainbowColor, pSettings->editor().rainbowParenthesis() - && highlighter() && highlighter()->supportBraceLevel()); + && syntaxer() && syntaxer()->supportBraceLevel()); setOptions(options); setTabWidth(pSettings->editor().tabWidth()); @@ -4792,15 +4779,15 @@ void Editor::applySettings() } if (pSettings->editor().enableCustomCTypeKeywords()) { - if (highlighter() && highlighter()->language() == QSynedit::ProgrammingLanguage::Cpp) { + if (syntaxer() && syntaxer()->language() == QSynedit::ProgrammingLanguage::Cpp) { QSet set; foreach(const QString& s, pSettings->editor().customCTypeKeywords()) set.insert(s); - ((QSynedit::CppHighlighter*)(highlighter().get()))->setCustomTypeKeywords(set); + ((QSynedit::CppSyntaxer*)(syntaxer().get()))->setCustomTypeKeywords(set); } } else { - if (highlighter() && highlighter()->language() == QSynedit::ProgrammingLanguage::Cpp) { - ((QSynedit::CppHighlighter*)(highlighter().get()))->setCustomTypeKeywords(QSet()); + if (syntaxer() && syntaxer()->language() == QSynedit::ProgrammingLanguage::Cpp) { + ((QSynedit::CppSyntaxer*)(syntaxer().get()))->setCustomTypeKeywords(QSet()); } } @@ -4828,9 +4815,9 @@ void Editor::applyColorScheme(const QString& schemeName) QSynedit::EditorOptions options = getOptions(); options.setFlag(QSynedit::EditorOption::eoShowRainbowColor, pSettings->editor().rainbowParenthesis() - && highlighter() && highlighter()->supportBraceLevel()); + && syntaxer() && syntaxer()->supportBraceLevel()); setOptions(options); - highlighterManager.applyColorScheme(highlighter(),schemeName); + syntaxerManager.applyColorScheme(syntaxer(),schemeName); if (pSettings->editor().rainbowParenthesis()) { QSynedit::PTokenAttribute attr0 =createRainbowAttribute(SYNS_AttrSymbol, schemeName,COLOR_SCHEME_BRACE_1); diff --git a/RedPandaIDE/editor.h b/RedPandaIDE/editor.h index e95f4e67..8b815371 100644 --- a/RedPandaIDE/editor.h +++ b/RedPandaIDE/editor.h @@ -290,7 +290,7 @@ private: void updateFunctionTip(bool showTip); void clearUserCodeInTabStops(); void popUserCodeInTabStops(); - void onExportedFormatToken(QSynedit::PHighlighter syntaxHighlighter, int Line, int column, const QString& token, + void onExportedFormatToken(QSynedit::PSyntaxer syntaxer, int Line, int column, const QString& token, QSynedit::PTokenAttribute &attr); void onScrollBarValueChanged(); static PCppParser sharedParser(ParserLanguage language); diff --git a/RedPandaIDE/parser/cppparser.cpp b/RedPandaIDE/parser/cppparser.cpp index 3d1d16c2..1729f4ef 100644 --- a/RedPandaIDE/parser/cppparser.cpp +++ b/RedPandaIDE/parser/cppparser.cpp @@ -17,7 +17,7 @@ #include "cppparser.h" #include "parserutils.h" #include "../utils.h" -#include "qsynedit/highlighter/cpp.h" +#include "qsynedit/syntaxer/cpp.h" #include #include @@ -4772,19 +4772,19 @@ PStatement CppParser::doParseEvalTypeInfo( QString s = type; // qDebug()<<"eval type info"<tokenType() == QSynedit::TokenType::Identifier) { + else if (syntaxer.getTokenAttribute()->tokenType() == QSynedit::TokenType::Identifier) { baseType += token; } else if (token == "[") { pointerLevel++; @@ -4809,7 +4809,7 @@ PStatement CppParser::doParseEvalTypeInfo( } templateParams += token; } - highlighter.next(); + syntaxer.next(); } while ((position >= 0) && (s[position] == '*' || s[position] == ' ' diff --git a/RedPandaIDE/HighlighterManager.cpp b/RedPandaIDE/syntaxermanager.cpp similarity index 52% rename from RedPandaIDE/HighlighterManager.cpp rename to RedPandaIDE/syntaxermanager.cpp index cdcca91e..842b1bc0 100644 --- a/RedPandaIDE/HighlighterManager.cpp +++ b/RedPandaIDE/syntaxermanager.cpp @@ -14,42 +14,42 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -#include "HighlighterManager.h" +#include "syntaxermanager.h" #include #include #include "qsynedit/Constants.h" -#include "qsynedit/highlighter/cpp.h" -#include "qsynedit/highlighter/asm.h" -#include "qsynedit/highlighter/glsl.h" -#include "qsynedit/highlighter/makefilehighlighter.h" +#include "qsynedit/syntaxer/cpp.h" +#include "qsynedit/syntaxer/asm.h" +#include "qsynedit/syntaxer/glsl.h" +#include "qsynedit/syntaxer/makefile.h" #include "qsynedit/Constants.h" #include "colorscheme.h" -HighlighterManager highlighterManager; +SyntaxerManager syntaxerManager; -HighlighterManager::HighlighterManager() +SyntaxerManager::SyntaxerManager() { } -QSynedit::PHighlighter HighlighterManager::getHighlighter(QSynedit::ProgrammingLanguage language) +QSynedit::PSyntaxer SyntaxerManager::getSyntaxer(QSynedit::ProgrammingLanguage language) { switch(language) { case QSynedit::ProgrammingLanguage::Cpp: - return getCppHighlighter(); + return getCppSyntaxer(); case QSynedit::ProgrammingLanguage::Asssembly: - return getAsmHighlighter(); + return getAsmSyntaxer(); case QSynedit::ProgrammingLanguage::Makefile: - return getMakefileHighlighter(); + return getMakefileSyntaxer(); case QSynedit::ProgrammingLanguage::GLSL: - return getGLSLHighlighter(); + return getGLSLSyntaxer(); default: - return QSynedit::PHighlighter(); + return QSynedit::PSyntaxer(); } } -QSynedit::PHighlighter HighlighterManager::getHighlighter(const QString &filename) +QSynedit::PSyntaxer SyntaxerManager::getSyntaxer(const QString &filename) { QFileInfo info(filename); QString suffix = info.suffix(); @@ -59,59 +59,55 @@ QSynedit::PHighlighter HighlighterManager::getHighlighter(const QString &filenam || suffix == "hxx" || suffix == "hh" || suffix == "C" || suffix == "CPP" || suffix =="H" || suffix == "c++" || suffix == "h++") { - return getCppHighlighter(); + return getCppSyntaxer(); } else if (suffix == "vs" || suffix == "fs" || suffix == "frag") { - return getGLSLHighlighter(); + return getGLSLSyntaxer(); } else if (suffix == "s" || suffix == "asm") { - return getAsmHighlighter(); + return getAsmSyntaxer(); } else if (basename.compare("makefile", Qt::CaseInsensitive)==0) { - return getMakefileHighlighter(); + return getMakefileSyntaxer(); } else if (suffix.isEmpty()) { - return getCppHighlighter(); + return getCppSyntaxer(); } - return QSynedit::PHighlighter(); + return QSynedit::PSyntaxer(); } -QSynedit::PHighlighter HighlighterManager::copyHighlighter(QSynedit::PHighlighter highlighter) +QSynedit::PSyntaxer SyntaxerManager::copy(QSynedit::PSyntaxer syntaxer) { - if (!highlighter) - return QSynedit::PHighlighter(); - return getHighlighter(highlighter->language()); + if (!syntaxer) + return QSynedit::PSyntaxer(); + return getSyntaxer(syntaxer->language()); } -QSynedit::PHighlighter HighlighterManager::getCppHighlighter() +QSynedit::PSyntaxer SyntaxerManager::getCppSyntaxer() { - std::shared_ptr highlighter = std::make_shared(); - return highlighter; + return std::make_shared(); } -QSynedit::PHighlighter HighlighterManager::getAsmHighlighter() +QSynedit::PSyntaxer SyntaxerManager::getAsmSyntaxer() { - std::shared_ptr highlighter=std::make_shared(); - return highlighter; + return std::make_shared(); } -QSynedit::PHighlighter HighlighterManager::getGLSLHighlighter() +QSynedit::PSyntaxer SyntaxerManager::getGLSLSyntaxer() { - std::shared_ptr highlighter=std::make_shared(); - return highlighter; + return std::make_shared(); } -QSynedit::PHighlighter HighlighterManager::getMakefileHighlighter() +QSynedit::PSyntaxer SyntaxerManager::getMakefileSyntaxer() { - std::shared_ptr highlighter=std::make_shared(); - return highlighter; + return std::make_shared(); } -void HighlighterManager::applyColorScheme(QSynedit::PHighlighter highlighter, const QString &schemeName) +void SyntaxerManager::applyColorScheme(QSynedit::PSyntaxer syntaxer, const QString &schemeName) { - if (!highlighter) + if (!syntaxer) return; - for (QString name: highlighter->attributes().keys()) { + for (QString name: syntaxer->attributes().keys()) { PColorSchemeItem item = pColorManager->getItem(schemeName,name); if (item) { - QSynedit::PTokenAttribute attr = highlighter->attributes()[name]; + QSynedit::PTokenAttribute attr = syntaxer->attributes()[name]; attr->setBackground(item->background()); attr->setForeground(item->foreground()); QSynedit::FontStyles styles = QSynedit::FontStyle::fsNone; diff --git a/RedPandaIDE/syntaxermanager.h b/RedPandaIDE/syntaxermanager.h new file mode 100644 index 00000000..8284e15d --- /dev/null +++ b/RedPandaIDE/syntaxermanager.h @@ -0,0 +1,38 @@ +/* + * Copyright (C) 2020-2022 Roy Qu (royqh1979@gmail.com) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#ifndef SYNTAXERMANAGER_H +#define SYNTAXERMANAGER_H +#include "qsynedit/syntaxer/syntaxer.h" + +class SyntaxerManager +{ +public: + SyntaxerManager(); + + QSynedit::PSyntaxer getSyntaxer(QSynedit::ProgrammingLanguage language); + QSynedit::PSyntaxer getSyntaxer(const QString& filename); + QSynedit::PSyntaxer copy(QSynedit::PSyntaxer syntaxer); + QSynedit::PSyntaxer getCppSyntaxer(); + QSynedit::PSyntaxer getAsmSyntaxer(); + QSynedit::PSyntaxer getGLSLSyntaxer(); + QSynedit::PSyntaxer getMakefileSyntaxer(); + void applyColorScheme(QSynedit::PSyntaxer syntaxer, const QString& schemeName); +}; + +extern SyntaxerManager syntaxerManager; + +#endif // SYNTAXERMANAGER_H diff --git a/RedPandaIDE/todoparser.cpp b/RedPandaIDE/todoparser.cpp index 9e6c61d3..93b6c929 100644 --- a/RedPandaIDE/todoparser.cpp +++ b/RedPandaIDE/todoparser.cpp @@ -106,15 +106,15 @@ TodoThread::TodoThread(const QStringList &files, QObject *parent): QThread(paren void TodoThread::parseFile() { - QSynedit::PHighlighter highlighter = highlighterManager.getCppHighlighter(); + QSynedit::PSyntaxer syntaxer = syntaxerManager.getCppSyntaxer(); emit parseStarted(); - doParseFile(mFilename,highlighter); + doParseFile(mFilename,syntaxer); emit parseFinished(); } void TodoThread::parseFiles() { - QSynedit::PHighlighter highlighter = highlighterManager.getCppHighlighter(); + QSynedit::PSyntaxer highlighter = syntaxerManager.getCppSyntaxer(); emit parseStarted(); foreach(const QString& filename,mFiles) { doParseFile(filename,highlighter); @@ -122,33 +122,33 @@ void TodoThread::parseFiles() emit parseFinished(); } -void TodoThread::doParseFile(const QString &filename, QSynedit::PHighlighter highlighter) +void TodoThread::doParseFile(const QString &filename, QSynedit::PSyntaxer syntaxer) { emit parsingFile(filename); QStringList lines; if (!pMainWindow->editorList()->getContentFromOpenedEditor(filename,lines)) { lines = readFileToLines(filename); } - highlighter->resetState(); + syntaxer->resetState(); for (int i =0;isetLine(lines[i],i); - while (!highlighter->eol()) { + syntaxer->setLine(lines[i],i); + while (!syntaxer->eol()) { QSynedit::PTokenAttribute attr; - attr = highlighter->getTokenAttribute(); + attr = syntaxer->getTokenAttribute(); if (attr && attr->tokenType() == QSynedit::TokenType::Comment) { - QString token = highlighter->getToken(); + QString token = syntaxer->getToken(); int pos = token.indexOf(todoReg); if (pos>=0) { emit todoFound( filename, i+1, - pos+highlighter->getTokenPos(), + pos+syntaxer->getTokenPos(), lines[i].trimmed() ); break; } } - highlighter->next(); + syntaxer->next(); } } diff --git a/RedPandaIDE/todoparser.h b/RedPandaIDE/todoparser.h index aab09e4f..69861376 100644 --- a/RedPandaIDE/todoparser.h +++ b/RedPandaIDE/todoparser.h @@ -21,7 +21,7 @@ #include #include #include -#include "HighlighterManager.h" +#include "syntaxermanager.h" #include "qsynedit/Constants.h" struct TodoItem { @@ -76,7 +76,7 @@ signals: private: void parseFile(); void parseFiles(); - void doParseFile(const QString& filename, QSynedit::PHighlighter highlighter); + void doParseFile(const QString& filename, QSynedit::PSyntaxer syntaxer); private: QString mFilename; QStringList mFiles; diff --git a/RedPandaIDE/widgets/cpudialog.cpp b/RedPandaIDE/widgets/cpudialog.cpp index 525fec08..b27ddc41 100644 --- a/RedPandaIDE/widgets/cpudialog.cpp +++ b/RedPandaIDE/widgets/cpudialog.cpp @@ -17,7 +17,7 @@ #include #include "cpudialog.h" #include "ui_cpudialog.h" -#include "../HighlighterManager.h" +#include "../syntaxermanager.h" #include "../mainwindow.h" #include "../debugger.h" #include "../settings.h" @@ -32,7 +32,7 @@ CPUDialog::CPUDialog(QWidget *parent) : setWindowFlags(windowFlags() | Qt::WindowMinimizeButtonHint | Qt::WindowMaximizeButtonHint); setWindowFlag(Qt::WindowContextHelpButtonHint,false); ui->setupUi(this); - ui->txtCode->setHighlighter(highlighterManager.getAsmHighlighter()); + ui->txtCode->setSyntaxer(syntaxerManager.getAsmSyntaxer()); ui->txtCode->setReadOnly(true); ui->txtCode->gutter().setShowLineNumbers(false); ui->txtCode->setCaretUseTextColor(true); @@ -42,7 +42,7 @@ CPUDialog::CPUDialog(QWidget *parent) : ui->txtCode->setGutterWidth(0); ui->txtCode->setUseCodeFolding(false); ui->txtCode->setRightEdge(0); - highlighterManager.applyColorScheme(ui->txtCode->highlighter(), + syntaxerManager.applyColorScheme(ui->txtCode->syntaxer(), pSettings->editor().colorScheme()); PColorSchemeItem item = pColorManager->getItem(pSettings->editor().colorScheme(),COLOR_SCHEME_ACTIVE_LINE); if (item) { diff --git a/RedPandaIDE/widgets/filepropertiesdialog.cpp b/RedPandaIDE/widgets/filepropertiesdialog.cpp index fd627978..d803a61a 100644 --- a/RedPandaIDE/widgets/filepropertiesdialog.cpp +++ b/RedPandaIDE/widgets/filepropertiesdialog.cpp @@ -57,7 +57,7 @@ void FilePropertiesDialog::calcFile(Editor *editor, j++; QString token; QSynedit::PTokenAttribute attr; - if (editor->getHighlighterAttriAtRowCol(QSynedit::BufferCoord{j+1,i+1}, + if (editor->getTokenAttriAtRowCol(QSynedit::BufferCoord{j+1,i+1}, token,attr)) { // if it is preprocessor... if (attr->name() == SYNS_AttrPreprocessor) { diff --git a/libs/qsynedit/qsynedit.pro b/libs/qsynedit/qsynedit.pro index 03ee6929..a8dabd9d 100644 --- a/libs/qsynedit/qsynedit.pro +++ b/libs/qsynedit/qsynedit.pro @@ -30,17 +30,16 @@ SOURCES += qsynedit/CodeFolding.cpp \ qsynedit/exporter/synexporter.cpp \ qsynedit/exporter/synhtmlexporter.cpp \ qsynedit/exporter/synrtfexporter.cpp \ - qsynedit/highlighter/asm.cpp \ - qsynedit/highlighter/base.cpp \ - qsynedit/highlighter/composition.cpp \ - qsynedit/highlighter/cpp.cpp \ - qsynedit/highlighter/customhighlighterv1.cpp \ - qsynedit/highlighter/glsl.cpp \ + qsynedit/syntaxer/asm.cpp \ + qsynedit/syntaxer/cpp.cpp \ + qsynedit/syntaxer/customhighlighterv1.cpp \ + qsynedit/syntaxer/glsl.cpp \ qsynedit/Search.cpp \ qsynedit/SearchBase.cpp \ qsynedit/SearchRegex.cpp \ qsynedit/Types.cpp \ - qsynedit/highlighter/makefilehighlighter.cpp + qsynedit/syntaxer/makefile.cpp \ + qsynedit/syntaxer/syntaxer.cpp HEADERS += qsynedit/Search.h \ qsynedit/SearchBase.h \ @@ -57,12 +56,11 @@ HEADERS += qsynedit/Search.h \ qsynedit/exporter/synexporter.h \ qsynedit/exporter/synhtmlexporter.h \ qsynedit/exporter/synrtfexporter.h \ - qsynedit/highlighter/asm.h \ - qsynedit/highlighter/base.h \ - qsynedit/highlighter/composition.h \ - qsynedit/highlighter/cpp.h \ - qsynedit/highlighter/customhighlighterv1.h \ - qsynedit/highlighter/glsl.h \ - qsynedit/highlighter/makefilehighlighter.h + qsynedit/syntaxer/asm.h \ + qsynedit/syntaxer/cpp.h \ + qsynedit/syntaxer/customhighlighterv1.h \ + qsynedit/syntaxer/glsl.h \ + qsynedit/syntaxer/makefile.h \ + qsynedit/syntaxer/syntaxer.h INCLUDEPATH += ../redpanda_qt_utils diff --git a/libs/qsynedit/qsynedit/Constants.h b/libs/qsynedit/qsynedit/Constants.h index 057e40f5..aa26d42e 100644 --- a/libs/qsynedit/qsynedit/Constants.h +++ b/libs/qsynedit/qsynedit/Constants.h @@ -30,7 +30,7 @@ extern const QChar SoftBreakGlyph; #define MAX_SCROLL 65535 -// names for highlighter attributes +// names for token attributes #define SYNS_AttrAssembler "Assembler" #define SYNS_AttrCharacter "Character" #define SYNS_AttrClass "Class" diff --git a/libs/qsynedit/qsynedit/MiscProcs.cpp b/libs/qsynedit/qsynedit/MiscProcs.cpp index abb810cc..03f4633d 100644 --- a/libs/qsynedit/qsynedit/MiscProcs.cpp +++ b/libs/qsynedit/qsynedit/MiscProcs.cpp @@ -42,24 +42,24 @@ int getEOL(const QString &Line, int start) return Line.size(); } -static bool internalEnumHighlighterAttris(PSyntaxer syntaxer, +static bool internalEnumTokenAttributes(PSyntaxer syntaxer, bool skipDuplicates, - TokenAttributeProc highlighterAttriProc, + TokenAttributeProc tokenAttriProc, std::initializer_list& params, - SyntaxerList& highlighterList) { + SyntaxerList& syntaxerList) { bool Result = true; - if (highlighterList.indexOf(syntaxer)>0) { + if (syntaxerList.indexOf(syntaxer)>0) { if (skipDuplicates) return Result; } else { - highlighterList.append(syntaxer); + syntaxerList.append(syntaxer); } if (syntaxer) { for (PTokenAttribute pAttr: syntaxer->attributes()){ QString UniqueAttriName = syntaxer->languageName() - + QString("%1").arg(highlighterList.indexOf(syntaxer)) + '.' + + QString("%1").arg(syntaxerList.indexOf(syntaxer)) + '.' + pAttr->name(); - Result = highlighterAttriProc(syntaxer, pAttr, + Result = tokenAttriProc(syntaxer, pAttr, UniqueAttriName, params); if (!Result) break; @@ -69,16 +69,16 @@ static bool internalEnumHighlighterAttris(PSyntaxer syntaxer, } bool enumTokenAttributes(PSyntaxer syntaxer, bool skipDuplicates, - TokenAttributeProc highlighterAttriProc, + TokenAttributeProc tokenAttriProc, std::initializer_list params) { - if (!syntaxer || !highlighterAttriProc) { + if (!syntaxer || !tokenAttriProc) { return false; } SyntaxerList syntaxerList; - return internalEnumHighlighterAttris(syntaxer, skipDuplicates, - highlighterAttriProc, params, syntaxerList); + return internalEnumTokenAttributes(syntaxer, skipDuplicates, + tokenAttriProc, params, syntaxerList); } int mulDiv(int a, int b, int c) diff --git a/libs/qsynedit/qsynedit/MiscProcs.h b/libs/qsynedit/qsynedit/MiscProcs.h index 026ccfe3..09eedbee 100644 --- a/libs/qsynedit/qsynedit/MiscProcs.h +++ b/libs/qsynedit/qsynedit/MiscProcs.h @@ -21,7 +21,7 @@ #include #include #include -#include "highlighter/syntaxer.h" +#include "syntaxer/syntaxer.h" #include #include #include @@ -50,7 +50,7 @@ using TokenAttributeProc = std::function params)>; -// Enums all child highlighters and their attributes of a TSynMultiSyn through a +// Enums all child syntaxers and their attributes of a TSynMultiSyn through a // callback function. // This function also handles nested TSynMultiSyns including their MarkerAttri. bool enumTokenAttributes(PSyntaxer syntaxer, diff --git a/libs/qsynedit/qsynedit/SynEdit.cpp b/libs/qsynedit/qsynedit/SynEdit.cpp index 581c43ae..d21c3aa1 100644 --- a/libs/qsynedit/qsynedit/SynEdit.cpp +++ b/libs/qsynedit/qsynedit/SynEdit.cpp @@ -15,7 +15,7 @@ * along with this program. If not, see . */ #include "SynEdit.h" -#include "highlighter/cpp.h" +#include "syntaxer/cpp.h" #include #include #include @@ -24,7 +24,7 @@ #include #include #include -#include "highlighter/syntaxer.h" +#include "syntaxer/syntaxer.h" #include "Constants.h" #include "TextPainter.h" #include @@ -349,48 +349,48 @@ bool SynEdit::canRedo() const int SynEdit::maxScrollWidth() const { int maxLen = mDocument->lengthOfLongestLine(); - if (highlighter()) - maxLen = maxLen+stringColumns(highlighter()->foldString(),maxLen); + if (syntaxer()) + maxLen = maxLen+stringColumns(syntaxer()->foldString(),maxLen); if (mOptions.testFlag(eoScrollPastEol)) return std::max(maxLen ,1); else return std::max(maxLen-mCharsInWindow+1, 1); } -bool SynEdit::getHighlighterAttriAtRowCol(const BufferCoord &pos, QString &token, PTokenAttribute &attri) +bool SynEdit::getTokenAttriAtRowCol(const BufferCoord &pos, QString &token, PTokenAttribute &attri) { int tmpStart; - return getHighlighterAttriAtRowColEx(pos, token, tmpStart, attri); + return getTokenAttriAtRowColEx(pos, token, tmpStart, attri); } -bool SynEdit::getHighlighterAttriAtRowCol(const BufferCoord &pos, QString &token, bool &tokenFinished, PTokenAttribute &attri) +bool SynEdit::getTokenAttriAtRowCol(const BufferCoord &pos, QString &token, bool &tokenFinished, PTokenAttribute &attri) { int posX, posY, endPos, start; QString line; posY = pos.line - 1; - if (mHighlighter && (posY >= 0) && (posY < mDocument->count())) { + if (mSyntaxer && (posY >= 0) && (posY < mDocument->count())) { line = mDocument->getString(posY); if (posY == 0) { - mHighlighter->resetState(); + mSyntaxer->resetState(); } else { - mHighlighter->setState(mDocument->ranges(posY-1)); + mSyntaxer->setState(mDocument->ranges(posY-1)); } - mHighlighter->setLine(line, posY); + mSyntaxer->setLine(line, posY); posX = pos.ch; if ((posX > 0) && (posX <= line.length())) { - while (!mHighlighter->eol()) { - start = mHighlighter->getTokenPos() + 1; - token = mHighlighter->getToken(); + while (!mSyntaxer->eol()) { + start = mSyntaxer->getTokenPos() + 1; + token = mSyntaxer->getToken(); endPos = start + token.length()-1; if ((posX >= start) && (posX <= endPos)) { - attri = mHighlighter->getTokenAttribute(); + attri = mSyntaxer->getTokenAttribute(); if (posX == endPos) - tokenFinished = mHighlighter->getTokenFinished(); + tokenFinished = mSyntaxer->getTokenFinished(); else tokenFinished = false; return true; } - mHighlighter->next(); + mSyntaxer->next(); } } } @@ -400,30 +400,30 @@ bool SynEdit::getHighlighterAttriAtRowCol(const BufferCoord &pos, QString &token return false; } -bool SynEdit::getHighlighterAttriAtRowColEx(const BufferCoord &pos, QString &token, int &start, PTokenAttribute &attri) +bool SynEdit::getTokenAttriAtRowColEx(const BufferCoord &pos, QString &token, int &start, PTokenAttribute &attri) { int posX, posY, endPos; QString line; posY = pos.line - 1; - if (mHighlighter && (posY >= 0) && (posY < mDocument->count())) { + if (mSyntaxer && (posY >= 0) && (posY < mDocument->count())) { line = mDocument->getString(posY); if (posY == 0) { - mHighlighter->resetState(); + mSyntaxer->resetState(); } else { - mHighlighter->setState(mDocument->ranges(posY-1)); + mSyntaxer->setState(mDocument->ranges(posY-1)); } - mHighlighter->setLine(line, posY); + mSyntaxer->setLine(line, posY); posX = pos.ch; if ((posX > 0) && (posX <= line.length())) { - while (!mHighlighter->eol()) { - start = mHighlighter->getTokenPos() + 1; - token = mHighlighter->getToken(); + while (!mSyntaxer->eol()) { + start = mSyntaxer->getTokenPos() + 1; + token = mSyntaxer->getToken(); endPos = start + token.length()-1; if ((posX >= start) && (posX <= endPos)) { - attri = mHighlighter->getTokenAttribute(); + attri = mSyntaxer->getTokenAttribute(); return true; } - mHighlighter->next(); + mSyntaxer->next(); } } } @@ -516,7 +516,7 @@ BufferCoord SynEdit::getMatchingBracketEx(BufferCoord APoint) p.line = PosY; if ((Test == BracketInc) || (Test == BracketDec)) { isCommentOrStringOrChar = false; - if (getHighlighterAttriAtRowCol(p, vDummy, attr)) + if (getTokenAttriAtRowCol(p, vDummy, attr)) isCommentOrStringOrChar = (attr->tokenType() == TokenType::String) || (attr->tokenType() == TokenType::Comment) || @@ -550,7 +550,7 @@ BufferCoord SynEdit::getMatchingBracketEx(BufferCoord APoint) p.line = PosY; if ((Test == BracketInc) || (Test == BracketDec)) { isCommentOrStringOrChar = false; - if (getHighlighterAttriAtRowCol(p, vDummy, attr)) + if (getTokenAttriAtRowCol(p, vDummy, attr)) isCommentOrStringOrChar = (attr->tokenType() == TokenType::String) || (attr->tokenType() == TokenType::Comment) || @@ -1292,7 +1292,7 @@ BufferCoord SynEdit::getPreviousLeftBrace(int x, int y) p.ch = PosX; p.line = PosY; if (Test=='{' || Test == '}') { - if (getHighlighterAttriAtRowCol(p, vDummy, attr)) { + if (getTokenAttriAtRowCol(p, vDummy, attr)) { isCommentOrStringOrChar = (attr->tokenType() == TokenType::String) || (attr->tokenType() == TokenType::Comment) || @@ -1538,7 +1538,7 @@ int SynEdit::findCommentStartLine(int searchStartLine) SyntaxerState range; while (commentStartLine>=1) { range = mDocument->ranges(commentStartLine-1); - if (!mHighlighter->isLastLineCommentNotFinished(range.state)){ + if (!mSyntaxer->isLastLineCommentNotFinished(range.state)){ commentStartLine++; break; } @@ -1554,7 +1554,7 @@ int SynEdit::findCommentStartLine(int searchStartLine) int SynEdit::calcIndentSpaces(int line, const QString& lineText, bool addIndent) { - if (!mHighlighter) + if (!mSyntaxer) return 0; line = std::min(line, mDocument->count()+1); if (line<=1) @@ -1574,20 +1574,20 @@ int SynEdit::calcIndentSpaces(int line, const QString& lineText, bool addIndent) //calculate the indents of last statement; indentSpaces = leftSpaces(startLineText); SyntaxerState rangePreceeding = mDocument->ranges(startLine-1); - mHighlighter->setState(rangePreceeding); + mSyntaxer->setState(rangePreceeding); if (addIndent) { // QString trimmedS = s.trimmed(); QString trimmedLineText = lineText.trimmed(); - mHighlighter->setLine(trimmedLineText,line-1); + mSyntaxer->setLine(trimmedLineText,line-1); int statePrePre; if (startLine>1) { statePrePre = mDocument->ranges(startLine-2).state; } else { statePrePre = 0; } - SyntaxerState rangeAfterFirstToken = mHighlighter->getState(); - QString firstToken = mHighlighter->getToken(); - PTokenAttribute attr = mHighlighter->getTokenAttribute(); + SyntaxerState rangeAfterFirstToken = mSyntaxer->getState(); + QString firstToken = mSyntaxer->getToken(); + PTokenAttribute attr = mSyntaxer->getTokenAttribute(); if (attr->tokenType() == TokenType::Keyword && lineText.endsWith(':') && ( @@ -1596,11 +1596,11 @@ int SynEdit::calcIndentSpaces(int line, const QString& lineText, bool addIndent) || firstToken == "default" )) { // public: private: protecte: case: should indents like it's parent statement - mHighlighter->setState(rangePreceeding); - mHighlighter->setLine("}",line-1); - rangeAfterFirstToken = mHighlighter->getState(); - firstToken = mHighlighter->getToken(); - attr = mHighlighter->getTokenAttribute(); + mSyntaxer->setState(rangePreceeding); + mSyntaxer->setLine("}",line-1); + rangeAfterFirstToken = mSyntaxer->getState(); + firstToken = mSyntaxer->getToken(); + attr = mSyntaxer->getTokenAttribute(); } bool indentAdded = false; int additionIndent = 0; @@ -1619,14 +1619,14 @@ int SynEdit::calcIndentSpaces(int line, const QString& lineText, bool addIndent) matchingIndents = rangeAfterFirstToken.matchingIndents; indentAdded = true; l = startLine; - } else if (mHighlighter->language() == ProgrammingLanguage::Cpp + } else if (mSyntaxer->language() == ProgrammingLanguage::Cpp && trimmedLineText.startsWith('#') - && attr == ((CppSyntaxer *)mHighlighter.get())->preprocessorAttribute()) { + && attr == ((CppSyntaxer *)mSyntaxer.get())->preprocessorAttribute()) { indentAdded = true; indentSpaces=0; l=0; - } else if (mHighlighter->language() == ProgrammingLanguage::Cpp - && mHighlighter->isLastLineCommentNotFinished(rangePreceeding.state) + } else if (mSyntaxer->language() == ProgrammingLanguage::Cpp + && mSyntaxer->isLastLineCommentNotFinished(rangePreceeding.state) ) { // last line is a not finished comment, if (trimmedLineText.startsWith("*")) { @@ -1652,10 +1652,10 @@ int SynEdit::calcIndentSpaces(int line, const QString& lineText, bool addIndent) indentAdded = true; l = startLine; } - } else if ( mHighlighter->isLastLineCommentNotFinished(statePrePre) + } else if ( mSyntaxer->isLastLineCommentNotFinished(statePrePre) && rangePreceeding.matchingIndents.isEmpty() && rangePreceeding.firstIndentThisLine>=rangePreceeding.indents.length() - && !mHighlighter->isLastLineCommentNotFinished(rangePreceeding.state)) { + && !mSyntaxer->isLastLineCommentNotFinished(rangePreceeding.state)) { // the preceeding line is the end of comment // we should use the indents of the start line of the comment int commentStartLine = findCommentStartLine(startLine-2); @@ -1723,7 +1723,7 @@ int SynEdit::calcIndentSpaces(int line, const QString& lineText, bool addIndent) PTokenAttribute attr; coord.line = startLine; coord.ch = document()->getString(startLine-1).length(); - if (getHighlighterAttriAtRowCol(coord,token,attr) + if (getTokenAttriAtRowCol(coord,token,attr) && attr->tokenType() == QSynedit::TokenType::Operator && token == ":") { indentSpaces += tabWidth(); @@ -1982,7 +1982,7 @@ QString SynEdit::getDisplayStringAtLine(int line) const QString s = mDocument->getString(line-1); PCodeFoldingRange foldRange = foldStartAtLine(line); if ((foldRange) && foldRange->collapsed) { - return s+highlighter()->foldString(); + return s+syntaxer()->foldString(); } return s; } @@ -2395,7 +2395,7 @@ void SynEdit::insertLine(bool moveCaret) if (mCaretX>lineText().length()+1) { PCodeFoldingRange foldRange = foldStartAtLine(mCaretY); if ((foldRange) && foldRange->collapsed) { - QString s = Temp+highlighter()->foldString(); + QString s = Temp+syntaxer()->foldString(); if (mCaretX > s.length()) { if (!mUndoing) { addCaretToUndo(); @@ -2426,19 +2426,19 @@ void SynEdit::insertLine(bool moveCaret) bool notInComment=true; properSetLine(mCaretY-1,leftLineText); //update range stated for line mCaretY - if (mHighlighter) { + if (mSyntaxer) { if (mCaretY==1) { - mHighlighter->resetState(); + mSyntaxer->resetState(); } else { - mHighlighter->setState(mDocument->ranges(mCaretY-2)); + mSyntaxer->setState(mDocument->ranges(mCaretY-2)); } - mHighlighter->setLine(leftLineText, mCaretY-1); - mHighlighter->nextToEol(); - mDocument->setRange(mCaretY-1,mHighlighter->getState()); - notInComment = !mHighlighter->isLastLineCommentNotFinished( - mHighlighter->getState().state) - && !mHighlighter->isLastLineStringNotFinished( - mHighlighter->getState().state); + mSyntaxer->setLine(leftLineText, mCaretY-1); + mSyntaxer->nextToEol(); + mDocument->setRange(mCaretY-1,mSyntaxer->getState()); + notInComment = !mSyntaxer->isLastLineCommentNotFinished( + mSyntaxer->getState().state) + && !mSyntaxer->isLastLineStringNotFinished( + mSyntaxer->getState().state); } int indentSpaces = 0; if (mOptions.testFlag(eoAutoIndent)) { @@ -2905,8 +2905,8 @@ void SynEdit::doAddChar(QChar AChar) // auto if (mActiveSelectionMode==SelectionMode::Normal && mOptions.testFlag(eoAutoIndent) - && mHighlighter - && mHighlighter->language() == ProgrammingLanguage::Cpp + && mSyntaxer + && mSyntaxer->language() == ProgrammingLanguage::Cpp && (oldCaretY<=mDocument->count()) ) { //unindent if ':' at end of the line @@ -3295,8 +3295,8 @@ void SynEdit::recalcCharExtent() FontStyle styles[] = {FontStyle::fsBold, FontStyle::fsItalic, FontStyle::fsStrikeOut, FontStyle::fsUnderline}; bool hasStyles[] = {false,false,false,false}; int size = 4; - if (mHighlighter && mHighlighter->attributes().count()>0) { - for (const PTokenAttribute& attribute: mHighlighter->attributes()) { + if (mSyntaxer && mSyntaxer->attributes().count()>0) { + for (const PTokenAttribute& attribute: mSyntaxer->attributes()) { for (int i=0;istyles().testFlag(styles[i])) hasStyles[i] = true; @@ -3414,14 +3414,14 @@ int SynEdit::scanFrom(int Index, int canStopIndex) return Result; if (Result == 0) { - mHighlighter->resetState(); + mSyntaxer->resetState(); } else { - mHighlighter->setState(mDocument->ranges(Result-1)); + mSyntaxer->setState(mDocument->ranges(Result-1)); } do { - mHighlighter->setLine(mDocument->getString(Result), Result); - mHighlighter->nextToEol(); - iRange = mHighlighter->getState(); + mSyntaxer->setLine(mDocument->getString(Result), Result); + mSyntaxer->nextToEol(); + iRange = mSyntaxer->getState(); if (Result > canStopIndex){ if (mDocument->ranges(Result).state == iRange.state && mDocument->ranges(Result).blockLevel == iRange.blockLevel @@ -3448,7 +3448,7 @@ int SynEdit::scanFrom(int Index, int canStopIndex) void SynEdit::rescanRange(int line) { - if (!mHighlighter) + if (!mSyntaxer) return; line--; line = std::max(0,line); @@ -3456,24 +3456,24 @@ void SynEdit::rescanRange(int line) return; if (line == 0) { - mHighlighter->resetState(); + mSyntaxer->resetState(); } else { - mHighlighter->setState(mDocument->ranges(line-1)); + mSyntaxer->setState(mDocument->ranges(line-1)); } - mHighlighter->setLine(mDocument->getString(line), line); - mHighlighter->nextToEol(); - SyntaxerState iRange = mHighlighter->getState(); + mSyntaxer->setLine(mDocument->getString(line), line); + mSyntaxer->nextToEol(); + SyntaxerState iRange = mSyntaxer->getState(); mDocument->setRange(line,iRange); } void SynEdit::rescanRanges() { - if (mHighlighter && !mDocument->empty()) { - mHighlighter->resetState(); + if (mSyntaxer && !mDocument->empty()) { + mSyntaxer->resetState(); for (int i =0;icount();i++) { - mHighlighter->setLine(mDocument->getString(i), i); - mHighlighter->nextToEol(); - mDocument->setRange(i, mHighlighter->getState()); + mSyntaxer->setLine(mDocument->getString(i), i); + mSyntaxer->nextToEol(); + mDocument->setRange(i, mSyntaxer->getState()); } } if (mUseCodeFolding) @@ -3611,9 +3611,9 @@ void SynEdit::scanForFoldRanges(PCodeFoldingRanges topFoldRanges) } //this func should only be used in findSubFoldRange -int SynEdit::lineHasChar(int Line, int startChar, QChar character, const QString& highlighterAttrName) { +int SynEdit::lineHasChar(int Line, int startChar, QChar character, const QString& tokenAttrName) { QString CurLine = mDocument->getString(Line); - if (!mHighlighter){ + if (!mSyntaxer){ for (int i=startChar; isetLine(CurLine,Line); */ QString token; - while (!mHighlighter->eol()) { - token = mHighlighter->getToken(); - PTokenAttribute attr = mHighlighter->getTokenAttribute(); - if (token == character && attr->name()==highlighterAttrName) - return mHighlighter->getTokenPos(); - mHighlighter->next(); + while (!mSyntaxer->eol()) { + token = mSyntaxer->getToken(); + PTokenAttribute attr = mSyntaxer->getTokenAttribute(); + if (token == character && attr->name()==tokenAttrName) + return mSyntaxer->getTokenPos(); + mSyntaxer->next(); } } return -1; @@ -3645,7 +3645,7 @@ void SynEdit::findSubFoldRange(PCodeFoldingRanges topFoldRanges, PCodeFoldingRan PCodeFoldingRange collapsedFold; int line = 0; QString curLine; - if (!mHighlighter) + if (!mSyntaxer) return; while (line < mDocument->count()) { // index is valid for LinesToScan and fLines @@ -4597,7 +4597,7 @@ QString SynEdit::selText() const PCodeFoldingRange foldRange = foldStartAtLine(blockEnd().line); QString s = mDocument->getString(Last); if ((foldRange) && foldRange->collapsed && ColTo>s.length()) { - s=s+highlighter()->foldString(); + s=s+syntaxer()->foldString(); if (ColTo>s.length()) { Last = foldRange->toLine-1; ColTo = mDocument->getString(Last).length()+1; @@ -4676,7 +4676,7 @@ QStringList SynEdit::getContent(BufferCoord startPos, BufferCoord endPos, Select PCodeFoldingRange foldRange = foldStartAtLine(endPos.line); QString s = mDocument->getString(Last); if ((foldRange) && foldRange->collapsed && ColTo>s.length()) { - s=s+highlighter()->foldString(); + s=s+syntaxer()->foldString(); if (ColTo>s.length()) { Last = foldRange->toLine-1; ColTo = mDocument->getString(Last).length()+1; @@ -4751,7 +4751,7 @@ QString SynEdit::displayLineText() QString s= mDocument->getString(mCaretY - 1); PCodeFoldingRange foldRange = foldStartAtLine(mCaretY); if ((foldRange) && foldRange->collapsed) { - return s+highlighter()->foldString(); + return s+syntaxer()->foldString(); } return s; } @@ -4772,17 +4772,17 @@ void SynEdit::setLineText(const QString s) mDocument->putString(mCaretY-1,s); } -PSyntaxer SynEdit::highlighter() const +PSyntaxer SynEdit::syntaxer() const { - return mHighlighter; + return mSyntaxer; } -void SynEdit::setHighlighter(const PSyntaxer &highlighter) +void SynEdit::setSyntaxer(const PSyntaxer &syntaxer) { - PSyntaxer oldHighlighter= mHighlighter; - mHighlighter = highlighter; - if (oldHighlighter && mHighlighter && - oldHighlighter->language() == highlighter->language()) { + PSyntaxer oldSyntaxer = mSyntaxer; + mSyntaxer = syntaxer; + if (oldSyntaxer && mSyntaxer && + oldSyntaxer ->language() == syntaxer->language()) { } else { recalcCharExtent(); mDocument->beginUpdate(); @@ -5335,7 +5335,7 @@ void SynEdit::doDeleteText(BufferCoord startPos, BufferCoord endPos, SelectionMo PCodeFoldingRange foldRange = foldStartAtLine(endPos.line); QString s = mDocument->getString(endPos.line-1); if ((foldRange) && foldRange->collapsed && endPos.ch>s.length()) { - QString newS=s+highlighter()->foldString(); + QString newS=s+syntaxer()->foldString(); if ((startPos.ch<=s.length() || startPos.linenewS.length() ) { //selection has whole block @@ -5479,7 +5479,7 @@ int SynEdit::doInsertTextByNormalMode(const BufferCoord& pos, const QStringList& int caretY=pos.line; // step1: insert the first line of Value into current line if (text.length()>1) { - if (!mUndoing && mHighlighter && mHighlighter->language()==ProgrammingLanguage::Cpp && mOptions.testFlag(eoAutoIndent)) { + if (!mUndoing && mSyntaxer && mSyntaxer->language()==ProgrammingLanguage::Cpp && mOptions.testFlag(eoAutoIndent)) { QString s = trimLeft(text[0]); if (sLeftSide.isEmpty()) { sLeftSide = GetLeftSpacing(calcIndentSpaces(caretY,s,true),true); @@ -5509,7 +5509,7 @@ int SynEdit::doInsertTextByNormalMode(const BufferCoord& pos, const QStringList& if (i==text.length()-1) { str = sRightSide; } else { - if (!mUndoing && mHighlighter && mHighlighter->language()==ProgrammingLanguage::Cpp && mOptions.testFlag(eoAutoIndent) && notInComment) { + if (!mUndoing && mSyntaxer && mSyntaxer->language()==ProgrammingLanguage::Cpp && mOptions.testFlag(eoAutoIndent) && notInComment) { str = GetLeftSpacing(calcIndentSpaces(caretY,"",true),true); } else { str = ""; @@ -5519,7 +5519,7 @@ int SynEdit::doInsertTextByNormalMode(const BufferCoord& pos, const QStringList& str = text[i]; if (i==text.length()-1) str += sRightSide; - if (!mUndoing && mHighlighter && mHighlighter->language()==ProgrammingLanguage::Cpp && mOptions.testFlag(eoAutoIndent) && notInComment) { + if (!mUndoing && mSyntaxer && mSyntaxer->language()==ProgrammingLanguage::Cpp && mOptions.testFlag(eoAutoIndent) && notInComment) { int indentSpaces = calcIndentSpaces(caretY,str,true); str = GetLeftSpacing(indentSpaces,true)+trimLeft(str); } @@ -5983,8 +5983,8 @@ void SynEdit::onBeginFirstPaintLock() bool SynEdit::isIdentChar(const QChar &ch) { - if (mHighlighter) { - return mHighlighter->isIdentChar(ch); + if (mSyntaxer) { + return mSyntaxer->isIdentChar(ch); } else { if (ch == '_') { return true; @@ -6639,7 +6639,7 @@ void SynEdit::onLinesDeleted(int index, int count) { if (mUseCodeFolding) foldOnListDeleted(index + 1, count); - if (mHighlighter && mDocument->count() > 0) + if (mSyntaxer && mDocument->count() > 0) scanFrom(index, index+1); invalidateLines(index + 1, INT_MAX); invalidateGutterLines(index + 1, INT_MAX); @@ -6649,7 +6649,7 @@ void SynEdit::onLinesInserted(int index, int count) { if (mUseCodeFolding) foldOnListInserted(index + 1, count); - if (mHighlighter && mDocument->count() > 0) { + if (mSyntaxer && mDocument->count() > 0) { // int vLastScan = index; // do { scanFrom(index, index+count); @@ -6663,7 +6663,7 @@ void SynEdit::onLinesInserted(int index, int count) void SynEdit::onLinesPutted(int index, int count) { int vEndLine = index + 1; - if (mHighlighter) { + if (mSyntaxer) { vEndLine = std::max(vEndLine, scanFrom(index, index+count) + 1); } invalidateLines(index + 1, vEndLine); @@ -6721,8 +6721,8 @@ void SynEdit::setBlockEnd(BufferCoord Value) Value.ch = 1; } else { int maxLen = mDocument->lengthOfLongestLine(); - if (highlighter()) - maxLen = maxLen+stringColumns(highlighter()->foldString(),maxLen); + if (syntaxer()) + maxLen = maxLen+stringColumns(syntaxer()->foldString(),maxLen); Value.ch = minMax(Value.ch, 1, maxLen+1); } if (Value.ch != mBlockEnd.ch || Value.line != mBlockEnd.line) { @@ -6820,8 +6820,8 @@ void SynEdit::setBlockBegin(BufferCoord value) value.ch = 1; } else { int maxLen = mDocument->lengthOfLongestLine(); - if (highlighter()) - maxLen = maxLen+stringColumns(highlighter()->foldString(),maxLen); + if (syntaxer()) + maxLen = maxLen+stringColumns(syntaxer()->foldString(),maxLen); value.ch = minMax(value.ch, 1, maxLen+1); } if (selAvail()) { diff --git a/libs/qsynedit/qsynedit/SynEdit.h b/libs/qsynedit/qsynedit/SynEdit.h index 53b90b95..bffe6576 100644 --- a/libs/qsynedit/qsynedit/SynEdit.h +++ b/libs/qsynedit/qsynedit/SynEdit.h @@ -131,9 +131,6 @@ using SynPaintTransientProc = std::function; using MouseCursorProc = std::function; using PaintProc = std::function; -//using SynPreparePaintHighlightTokenProc = std::function; using SearchMathedProc = std::function; using SearchConfirmAroundProc = std::function; @@ -247,11 +244,11 @@ public: int maxScrollWidth() const; int maxScrollHeight() const; - bool getHighlighterAttriAtRowCol(const BufferCoord& pos, QString& token, + bool getTokenAttriAtRowCol(const BufferCoord& pos, QString& token, PTokenAttribute& attri); - bool getHighlighterAttriAtRowCol(const BufferCoord& pos, QString& token, + bool getTokenAttriAtRowCol(const BufferCoord& pos, QString& token, bool& tokenFinished, PTokenAttribute& attri); - bool getHighlighterAttriAtRowColEx(const BufferCoord& pos, QString& token, + bool getTokenAttriAtRowColEx(const BufferCoord& pos, QString& token, int &start, PTokenAttribute& attri); void beginUndoBlock(); @@ -341,8 +338,8 @@ public: bool modified() const; void setModified(bool Value); - PSyntaxer highlighter() const; - void setHighlighter(const PSyntaxer &highlighter); + PSyntaxer syntaxer() const; + void setSyntaxer(const PSyntaxer &syntaxer); bool useCodeFolding() const; void setUseCodeFolding(bool value); @@ -514,7 +511,7 @@ private: void rescanFolds(); // rescan for folds void rescanForFoldRanges(); void scanForFoldRanges(PCodeFoldingRanges topFoldRanges); - int lineHasChar(int Line, int startChar, QChar character, const QString& highlighterAttrName); + int lineHasChar(int Line, int startChar, QChar character, const QString& tokenAttrName); void findSubFoldRange(PCodeFoldingRanges topFoldRanges,PCodeFoldingRanges& parentFoldRanges, PCodeFoldingRange Parent); PCodeFoldingRange collapsedFoldStartAtLine(int Line); void initializeCaret(); @@ -667,7 +664,7 @@ private: ScrollStyle mScrollBars; int mTextHeight; int mTopLine; - PSyntaxer mHighlighter; + PSyntaxer mSyntaxer; QColor mSelectedForeground; QColor mSelectedBackground; QColor mForegroundColor; diff --git a/libs/qsynedit/qsynedit/TextBuffer.h b/libs/qsynedit/qsynedit/TextBuffer.h index d6d7d02c..4931f55c 100644 --- a/libs/qsynedit/qsynedit/TextBuffer.h +++ b/libs/qsynedit/qsynedit/TextBuffer.h @@ -18,7 +18,7 @@ #define SYNEDITSTRINGLIST_H #include -#include "highlighter/syntaxer.h" +#include "syntaxer/syntaxer.h" #include #include #include diff --git a/libs/qsynedit/qsynedit/TextPainter.cpp b/libs/qsynedit/qsynedit/TextPainter.cpp index 23edfdb2..d72246ee 100644 --- a/libs/qsynedit/qsynedit/TextPainter.cpp +++ b/libs/qsynedit/qsynedit/TextPainter.cpp @@ -619,7 +619,7 @@ void SynEditTextPainter::addHighlightToken(const QString &Token, int columnsBefo foreground = edit->mForegroundColor; } - edit->onPreparePaintHighlightToken(cLine,edit->mHighlighter->getTokenPos()+1, + edit->onPreparePaintHighlightToken(cLine,edit->mSyntaxer->getTokenPos()+1, Token,p_Attri,style,foreground,background); // Do we have to paint the old chars first, or can we just append? @@ -702,17 +702,17 @@ void SynEditTextPainter::paintFoldAttributes() X = TabSteps * edit->mCharWidth + edit->textOffset() - 2; TabSteps+=edit->tabWidth(); indentLevel++ ; - if (edit->mHighlighter) { + if (edit->mSyntaxer) { if (edit->mCodeFolding.indentGuides) { - PTokenAttribute attr = edit->mHighlighter->symbolAttribute(); + PTokenAttribute attr = edit->mSyntaxer->symbolAttribute(); getBraceColorAttr(indentLevel,attr); paintColor = attr->foreground(); } if (edit->mCodeFolding.fillIndents) { - PTokenAttribute attr = edit->mHighlighter->symbolAttribute(); + PTokenAttribute attr = edit->mSyntaxer->symbolAttribute(); getBraceColorAttr(indentLevel,attr); gradientStart=attr->foreground(); - attr = edit->mHighlighter->symbolAttribute(); + attr = edit->mSyntaxer->symbolAttribute(); getBraceColorAttr(indentLevel+1,attr); gradientStart=attr->foreground(); } @@ -792,7 +792,7 @@ void SynEditTextPainter::paintLines() int cRow; // row index for the loop int vLine; QString sLine; // the current line - QString sToken; // highlighter token info + QString sToken; // token info int nTokenColumnsBefore, nTokenColumnLen; PTokenAttribute attr; int vFirstChar; @@ -894,7 +894,7 @@ void SynEditTextPainter::paintLines() bLineSelected = (!bComplexLine) && (nLineSelStart > 0); rcToken = rcLine; - if (!edit->mHighlighter || !edit->mHighlighter->enabled()) { + if (!edit->mSyntaxer || !edit->mSyntaxer->enabled()) { sToken = sLine; if (bCurrentLine) { nTokenColumnLen = edit->stringColumns(sLine,0); @@ -938,12 +938,12 @@ void SynEditTextPainter::paintLines() // necessary because we probably did not scan to the end of the last // line - the internal highlighter range might be wrong. if (vLine == 1) { - edit->mHighlighter->resetState(); + edit->mSyntaxer->resetState(); } else { - edit->mHighlighter->setState( + edit->mSyntaxer->setState( edit->mDocument->ranges(vLine-2)); } - edit->mHighlighter->setLine(sLine, vLine - 1); + edit->mSyntaxer->setLine(sLine, vLine - 1); // Try to concatenate as many tokens as possible to minimize the count // of ExtTextOut calls necessary. This depends on the selection state // or the line having special colors. For spaces the foreground color @@ -951,14 +951,14 @@ void SynEditTextPainter::paintLines() TokenAccu.Columns = 0; nTokenColumnsBefore = 0; // Test first whether anything of this token is visible. - while (!edit->mHighlighter->eol()) { - sToken = edit->mHighlighter->getToken(); + while (!edit->mSyntaxer->eol()) { + sToken = edit->mSyntaxer->getToken(); // Work-around buggy highlighters which return empty tokens. if (sToken.isEmpty()) { - edit->mHighlighter->next(); - if (edit->mHighlighter->eol()) + edit->mSyntaxer->next(); + if (edit->mSyntaxer->eol()) break; - sToken = edit->mHighlighter->getToken(); + sToken = edit->mSyntaxer->getToken(); // Maybe should also test whether GetTokenPos changed... if (sToken.isEmpty()) { qDebug()<mHighlighter->getTokenAttribute(); + attr = edit->mSyntaxer->getTokenAttribute(); if (sToken == "[" || sToken == "(" || sToken == "{" ) { - SyntaxerState rangeState = edit->mHighlighter->getState(); + SyntaxerState rangeState = edit->mSyntaxer->getState(); getBraceColorAttr(rangeState.bracketLevel +rangeState.braceLevel +rangeState.parenthesisLevel @@ -988,15 +988,15 @@ void SynEditTextPainter::paintLines() || sToken == ")" || sToken == "}" ){ - SyntaxerState rangeState = edit->mHighlighter->getState(); + SyntaxerState rangeState = edit->mSyntaxer->getState(); getBraceColorAttr(rangeState.bracketLevel +rangeState.braceLevel +rangeState.parenthesisLevel+1, attr); } if (bCurrentLine && edit->mInputPreeditString.length()>0) { - int startPos = edit->mHighlighter->getTokenPos()+1; - int endPos = edit->mHighlighter->getTokenPos() + sToken.length(); + int startPos = edit->mSyntaxer->getTokenPos()+1; + int endPos = edit->mSyntaxer->getTokenPos() + sToken.length(); //qDebug()<mCaretX<<":"<mCaretX+edit->mInputPreeditString.length(); if (!(endPos < edit->mCaretX || startPos >= edit->mCaretX+edit->mInputPreeditString.length())) { @@ -1012,11 +1012,11 @@ void SynEditTextPainter::paintLines() } nTokenColumnsBefore+=nTokenColumnLen; // Let the highlighter scan the next token. - edit->mHighlighter->next(); + edit->mSyntaxer->next(); } // Don't assume HL.GetTokenPos is valid after HL.GetEOL == True. //nTokenColumnsBefore += edit->stringColumns(sToken,nTokenColumnsBefore); - if (edit->mHighlighter->eol() && (nTokenColumnsBefore < vLastChar)) { + if (edit->mSyntaxer->eol() && (nTokenColumnsBefore < vLastChar)) { int lineColumns = edit->mDocument->lineColumns(vLine-1); // Draw text that couldn't be parsed by the highlighter, if any. if (nTokenColumnsBefore < lineColumns) { @@ -1034,17 +1034,17 @@ void SynEditTextPainter::paintLines() (!bSpecialLine) && (edit->mDocument->lineColumns(vLine-1) < vLastChar)) { addHighlightToken(LineBreakGlyph, edit->mDocument->lineColumns(vLine-1) - (vFirstChar - FirstCol), - edit->charColumns(LineBreakGlyph),vLine, edit->mHighlighter->whitespaceAttribute()); + edit->charColumns(LineBreakGlyph),vLine, edit->mSyntaxer->whitespaceAttribute()); } } // Paint folding foldRange = edit->foldStartAtLine(vLine); if ((foldRange) && foldRange->collapsed) { - sFold = edit->highlighter()->foldString(); + sFold = edit->syntaxer()->foldString(); nFold = edit->stringColumns(sFold,edit->mDocument->lineColumns(vLine-1)); - attr = edit->mHighlighter->symbolAttribute(); - getBraceColorAttr(edit->mHighlighter->getState().braceLevel,attr); + attr = edit->mSyntaxer->symbolAttribute(); + getBraceColorAttr(edit->mSyntaxer->getState().braceLevel,attr); addHighlightToken(sFold,edit->mDocument->lineColumns(vLine-1) - (vFirstChar - FirstCol) , nFold, vLine, attr); } diff --git a/libs/qsynedit/qsynedit/TextPainter.h b/libs/qsynedit/qsynedit/TextPainter.h index cc31ca79..1cf3e226 100644 --- a/libs/qsynedit/qsynedit/TextPainter.h +++ b/libs/qsynedit/qsynedit/TextPainter.h @@ -21,7 +21,7 @@ #include #include #include "Types.h" -#include "highlighter/syntaxer.h" +#include "syntaxer/syntaxer.h" #include "MiscClasses.h" namespace QSynedit { diff --git a/libs/qsynedit/qsynedit/exporter/synexporter.cpp b/libs/qsynedit/qsynedit/exporter/synexporter.cpp index 28096dd4..e9b18b1b 100644 --- a/libs/qsynedit/qsynedit/exporter/synexporter.cpp +++ b/libs/qsynedit/qsynedit/exporter/synexporter.cpp @@ -61,7 +61,7 @@ void SynExporter::ExportAll(PDocument ALines) void SynExporter::ExportRange(PDocument ALines, BufferCoord Start, BufferCoord Stop) { // abort if not all necessary conditions are met - if (!ALines || !mHighlighter || (ALines->count() == 0)) + if (!ALines || !mSyntaxer || (ALines->count() == 0)) return; Stop.line = std::max(1, std::min(Stop.line, ALines->count())); Stop.ch = std::max(1, std::min(Stop.ch, ALines->getString(Stop.line - 1).length() + 1)); @@ -77,9 +77,9 @@ void SynExporter::ExportRange(PDocument ALines, BufferCoord Start, BufferCoord S mFirstAttribute = true; if (Start.line == 1) - mHighlighter->resetState(); + mSyntaxer->resetState(); else - mHighlighter->setState(ALines->ranges(Start.line-2)); + mSyntaxer->setState(ALines->ranges(Start.line-2)); for (int i = Start.line; i<=Stop.line; i++) { QString Line = ALines->getString(i-1); // order is important, since Start.Y might be equal to Stop.Y @@ -88,17 +88,17 @@ void SynExporter::ExportRange(PDocument ALines, BufferCoord Start, BufferCoord S // if ( (i = Start.Line) && (Start.Char > 1)) // Line.remove(0, Start.Char - 1); // export the line - mHighlighter->setLine(Line, i); - while (!mHighlighter->eol()) { - PTokenAttribute attri = mHighlighter->getTokenAttribute(); - int startPos = mHighlighter->getTokenPos(); - QString token = mHighlighter->getToken(); + mSyntaxer->setLine(Line, i); + while (!mSyntaxer->eol()) { + PTokenAttribute attri = mSyntaxer->getTokenAttribute(); + int startPos = mSyntaxer->getTokenPos(); + QString token = mSyntaxer->getToken(); if (i==Start.line && (startPos+token.length() < Start.ch)) { - mHighlighter->next(); + mSyntaxer->next(); continue; } if (i==Stop.line && (startPos >= Stop.ch-1)) { - mHighlighter->next(); + mSyntaxer->next(); continue; } if (i==Stop.line && (startPos+token.length() > Stop.ch)) { @@ -110,10 +110,10 @@ void SynExporter::ExportRange(PDocument ALines, BufferCoord Start, BufferCoord S QString Token = ReplaceReservedChars(token); if (mOnFormatToken) - mOnFormatToken(mHighlighter, i, mHighlighter->getTokenPos()+1, mHighlighter->getToken(),attri); + mOnFormatToken(mSyntaxer, i, mSyntaxer->getTokenPos()+1, mSyntaxer->getToken(),attri); SetTokenAttribute(attri); FormatToken(Token); - mHighlighter->next(); + mSyntaxer->next(); } if (i!=Stop.line) FormatNewLine(); @@ -166,18 +166,18 @@ void SynExporter::setFont(const QFont &font) mFont = font; } -PSyntaxer SynExporter::highlighter() const +PSyntaxer SynExporter::syntaxer() const { - return mHighlighter; + return mSyntaxer; } -void SynExporter::setHighlighter(PSyntaxer Value) +void SynExporter::setSyntaxer(PSyntaxer value) { - if (mHighlighter != Value) { - mHighlighter = Value; + if (mSyntaxer != value) { + mSyntaxer = value; clear(); - if ((mHighlighter) && (mHighlighter->whitespaceAttribute()) && mUseBackground) - mBackgroundColor = mHighlighter->whitespaceAttribute()->background(); + if ((mSyntaxer) && (mSyntaxer->whitespaceAttribute()) && mUseBackground) + mBackgroundColor = mSyntaxer->whitespaceAttribute()->background(); } } @@ -206,8 +206,8 @@ void SynExporter::setUseBackground(bool Value) if (mUseBackground != Value) { mUseBackground = Value; clear(); - if ((mHighlighter) && (mHighlighter->whitespaceAttribute()) && mUseBackground) - mBackgroundColor = mHighlighter->whitespaceAttribute()->background(); + if ((mSyntaxer) && (mSyntaxer->whitespaceAttribute()) && mUseBackground) + mBackgroundColor = mSyntaxer->whitespaceAttribute()->background(); } } diff --git a/libs/qsynedit/qsynedit/exporter/synexporter.h b/libs/qsynedit/qsynedit/exporter/synexporter.h index c8ebb30d..39a73413 100644 --- a/libs/qsynedit/qsynedit/exporter/synexporter.h +++ b/libs/qsynedit/qsynedit/exporter/synexporter.h @@ -69,8 +69,8 @@ public: QFont font() const; void setFont(const QFont &font); - PSyntaxer highlighter() const; - void setHighlighter(PSyntaxer Value); + PSyntaxer syntaxer() const; + void setSyntaxer(PSyntaxer value); QString title() const; void setTitle(const QString &Value); @@ -112,7 +112,7 @@ protected: QString mDefaultFilter; bool mExportAsText; QFont mFont; - PSyntaxer mHighlighter; + PSyntaxer mSyntaxer; QColor mLastBG; QColor mLastFG; FontStyles mLastStyle; diff --git a/libs/qsynedit/qsynedit/exporter/synhtmlexporter.cpp b/libs/qsynedit/qsynedit/exporter/synhtmlexporter.cpp index 7a528888..91a353db 100644 --- a/libs/qsynedit/qsynedit/exporter/synhtmlexporter.cpp +++ b/libs/qsynedit/qsynedit/exporter/synhtmlexporter.cpp @@ -124,7 +124,7 @@ void SynHTMLExporter::FormatAttributeDone(bool , bool , FontStyles ) void SynHTMLExporter::FormatAttributeInit(bool , bool , FontStyles ) { - QString StyleName = GetStyleName(mHighlighter, mLastAttri); + QString StyleName = GetStyleName(mSyntaxer, mLastAttri); AddData(QString("").arg(StyleName)); } @@ -135,7 +135,7 @@ void SynHTMLExporter::FormatAfterLastAttribute() void SynHTMLExporter::FormatBeforeFirstAttribute(bool, bool, FontStyles) { - QString StyleName = GetStyleName(mHighlighter, mLastAttri); + QString StyleName = GetStyleName(mSyntaxer, mLastAttri); AddData(QString("").arg(StyleName)); } @@ -164,7 +164,7 @@ QString SynHTMLExporter::GetHeader() { using namespace std::placeholders; QString Styles; - enumTokenAttributes(mHighlighter, true, + enumTokenAttributes(mSyntaxer, true, std::bind(&SynHTMLExporter::AttriToCSSCallback, this, _1, _2, _3, _4), {&Styles}); diff --git a/libs/qsynedit/qsynedit/highlighter/asm.cpp b/libs/qsynedit/qsynedit/syntaxer/asm.cpp similarity index 100% rename from libs/qsynedit/qsynedit/highlighter/asm.cpp rename to libs/qsynedit/qsynedit/syntaxer/asm.cpp diff --git a/libs/qsynedit/qsynedit/highlighter/asm.h b/libs/qsynedit/qsynedit/syntaxer/asm.h similarity index 100% rename from libs/qsynedit/qsynedit/highlighter/asm.h rename to libs/qsynedit/qsynedit/syntaxer/asm.h diff --git a/libs/qsynedit/qsynedit/highlighter/composition.cpp b/libs/qsynedit/qsynedit/syntaxer/composition.cpp similarity index 100% rename from libs/qsynedit/qsynedit/highlighter/composition.cpp rename to libs/qsynedit/qsynedit/syntaxer/composition.cpp diff --git a/libs/qsynedit/qsynedit/highlighter/composition.h b/libs/qsynedit/qsynedit/syntaxer/composition.h similarity index 100% rename from libs/qsynedit/qsynedit/highlighter/composition.h rename to libs/qsynedit/qsynedit/syntaxer/composition.h diff --git a/libs/qsynedit/qsynedit/highlighter/cpp.cpp b/libs/qsynedit/qsynedit/syntaxer/cpp.cpp similarity index 100% rename from libs/qsynedit/qsynedit/highlighter/cpp.cpp rename to libs/qsynedit/qsynedit/syntaxer/cpp.cpp diff --git a/libs/qsynedit/qsynedit/highlighter/cpp.h b/libs/qsynedit/qsynedit/syntaxer/cpp.h similarity index 98% rename from libs/qsynedit/qsynedit/highlighter/cpp.h rename to libs/qsynedit/qsynedit/syntaxer/cpp.h index d35b3071..2b989473 100644 --- a/libs/qsynedit/qsynedit/highlighter/cpp.h +++ b/libs/qsynedit/qsynedit/syntaxer/cpp.h @@ -14,8 +14,8 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -#ifndef SYNEDITCPPHIGHLIGHTER_H -#define SYNEDITCPPHIGHLIGHTER_H +#ifndef QSYNEDIT_CPP_SYNTAXER_H +#define QSYNEDIT_CPP_SYNTAXER_H #include "syntaxer.h" #include diff --git a/libs/qsynedit/qsynedit/highlighter/customhighlighterv1.cpp b/libs/qsynedit/qsynedit/syntaxer/customhighlighterv1.cpp similarity index 100% rename from libs/qsynedit/qsynedit/highlighter/customhighlighterv1.cpp rename to libs/qsynedit/qsynedit/syntaxer/customhighlighterv1.cpp diff --git a/libs/qsynedit/qsynedit/highlighter/customhighlighterv1.h b/libs/qsynedit/qsynedit/syntaxer/customhighlighterv1.h similarity index 100% rename from libs/qsynedit/qsynedit/highlighter/customhighlighterv1.h rename to libs/qsynedit/qsynedit/syntaxer/customhighlighterv1.h diff --git a/libs/qsynedit/qsynedit/highlighter/glsl.cpp b/libs/qsynedit/qsynedit/syntaxer/glsl.cpp similarity index 100% rename from libs/qsynedit/qsynedit/highlighter/glsl.cpp rename to libs/qsynedit/qsynedit/syntaxer/glsl.cpp diff --git a/libs/qsynedit/qsynedit/highlighter/glsl.h b/libs/qsynedit/qsynedit/syntaxer/glsl.h similarity index 98% rename from libs/qsynedit/qsynedit/highlighter/glsl.h rename to libs/qsynedit/qsynedit/syntaxer/glsl.h index 22c55e46..13e4a317 100644 --- a/libs/qsynedit/qsynedit/highlighter/glsl.h +++ b/libs/qsynedit/qsynedit/syntaxer/glsl.h @@ -14,8 +14,8 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -#ifndef SYNEDITGLSLHIGHLIGHTER_H -#define SYNEDITGLSLHIGHLIGHTER_H +#ifndef QSYNEDIT_GLSL_SYNTAXER_H +#define QSYNEDIT_GLSL_SYNTAXER_H #include "syntaxer.h" #include diff --git a/libs/qsynedit/qsynedit/highlighter/makefile.cpp b/libs/qsynedit/qsynedit/syntaxer/makefile.cpp similarity index 100% rename from libs/qsynedit/qsynedit/highlighter/makefile.cpp rename to libs/qsynedit/qsynedit/syntaxer/makefile.cpp diff --git a/libs/qsynedit/qsynedit/highlighter/makefile.h b/libs/qsynedit/qsynedit/syntaxer/makefile.h similarity index 98% rename from libs/qsynedit/qsynedit/highlighter/makefile.h rename to libs/qsynedit/qsynedit/syntaxer/makefile.h index ecb69dd3..2749fd7e 100644 --- a/libs/qsynedit/qsynedit/highlighter/makefile.h +++ b/libs/qsynedit/qsynedit/syntaxer/makefile.h @@ -14,8 +14,8 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -#ifndef MAKEFILE_H -#define MAKEFILE_H +#ifndef QSYNEDIT_MAKEFILE_SYNTAXER_H +#define QSYNEDIT_MAKEFILE_SYNTAXER_H #include "syntaxer.h" diff --git a/libs/qsynedit/qsynedit/highlighter/syntaxer.cpp b/libs/qsynedit/qsynedit/syntaxer/syntaxer.cpp similarity index 100% rename from libs/qsynedit/qsynedit/highlighter/syntaxer.cpp rename to libs/qsynedit/qsynedit/syntaxer/syntaxer.cpp diff --git a/libs/qsynedit/qsynedit/highlighter/syntaxer.h b/libs/qsynedit/qsynedit/syntaxer/syntaxer.h similarity index 100% rename from libs/qsynedit/qsynedit/highlighter/syntaxer.h rename to libs/qsynedit/qsynedit/syntaxer/syntaxer.h