parent
dd4c8a461d
commit
455025d23a
@ -0,0 +1,458 @@
|
|||||||
|
/***************************************************************************
|
||||||
|
* Copyright (C) 2006-2012 by Thomas Schweitzer *
|
||||||
|
* thomas-schweitzer(at)arcor.de *
|
||||||
|
* *
|
||||||
|
* This program is free software; you can redistribute it and/or modify *
|
||||||
|
* it under the terms of the GNU General Public License version 2.0 as *
|
||||||
|
* published by the Free Software Foundation. *
|
||||||
|
* *
|
||||||
|
* 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 in the file LICENSE.GPL; if not, write to the *
|
||||||
|
* Free Software Foundation, Inc., *
|
||||||
|
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
|
||||||
|
***************************************************************************/
|
||||||
|
|
||||||
|
#include "UiGuiHighlighter.h"
|
||||||
|
|
||||||
|
#include "SettingsPaths.h"
|
||||||
|
|
||||||
|
#include <tqaction.h>
|
||||||
|
#include <tqsettings.h>
|
||||||
|
|
||||||
|
#include <tqextscintilla.h>
|
||||||
|
#include <tqextscintillalexer.h>
|
||||||
|
#include <tqextscintillalexerbash.h>
|
||||||
|
#include <tqextscintillalexerbatch.h>
|
||||||
|
#include <tqextscintillalexercpp.h>
|
||||||
|
#include <tqextscintillalexercsharp.h>
|
||||||
|
#include <tqextscintillalexercss.h>
|
||||||
|
#include <tqextscintillalexerdiff.h>
|
||||||
|
#include <tqextscintillalexerhtml.h>
|
||||||
|
#include <tqextscintillalexeridl.h>
|
||||||
|
#include <tqextscintillalexerjava.h>
|
||||||
|
#include <tqextscintillalexerjavascript.h>
|
||||||
|
#include <tqextscintillalexerlua.h>
|
||||||
|
#include <tqextscintillalexermakefile.h>
|
||||||
|
#include <tqextscintillalexerperl.h>
|
||||||
|
#include <tqextscintillalexerpov.h>
|
||||||
|
#include <tqextscintillalexerproperties.h>
|
||||||
|
#include <tqextscintillalexerpython.h>
|
||||||
|
#include <tqextscintillalexerruby.h>
|
||||||
|
#include <tqextscintillalexersql.h>
|
||||||
|
#include <tqextscintillalexertex.h>
|
||||||
|
|
||||||
|
/*
|
||||||
|
\class UiGuiHighlighter
|
||||||
|
\ingroup grp_EditorComponent
|
||||||
|
\brief UiGuiHighlighter used for selecting the syntax highlighter/lexer for the TQextScintilla component.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
\brief The constructor initializes some regular expressions and keywords to identify cpp tokens
|
||||||
|
*/
|
||||||
|
UiGuiHighlighter::UiGuiHighlighter(TQextScintilla *parent) :
|
||||||
|
TQObject((TQObject*)parent)
|
||||||
|
{
|
||||||
|
m_qsciEditorParent = parent;
|
||||||
|
|
||||||
|
// Create the highlighter m_settings object from the uiguisyntaxhighlightconfigrc file.
|
||||||
|
m_settings = new TQSettings(TQSettings::Ini);
|
||||||
|
// The next lines make user the settings are always stored in
|
||||||
|
// $HOME/.universalindentgui/uiguisyntaxhighlightconfigrc
|
||||||
|
m_settings->insertSearchPath(TQSettings::Unix, SettingsPaths::getSettingsPath());
|
||||||
|
m_settings->setPath("UniversalIndentGUI", "UniversalIndentGUI", TQSettings::User);
|
||||||
|
|
||||||
|
m_highlightingIsOn = true;
|
||||||
|
|
||||||
|
m_fileExtensions["Bash"] = TQStringList() << "sh";
|
||||||
|
m_fileExtensions["Batch"] = TQStringList() << "bat";
|
||||||
|
m_fileExtensions["C++"] = TQStringList() << "c" << "h" << "cpp" << "hpp" << "cxx"<< "hxx";
|
||||||
|
m_fileExtensions["C#"] = TQStringList() << "cs";
|
||||||
|
m_fileExtensions["CSS"] = TQStringList() << "css";
|
||||||
|
m_fileExtensions["Diff"] = TQStringList() << "diff";
|
||||||
|
m_fileExtensions["HTML"] = TQStringList() << "html" << "htm";
|
||||||
|
m_fileExtensions["IDL"] = TQStringList() << "idl";
|
||||||
|
m_fileExtensions["Java"] = TQStringList() << "java";
|
||||||
|
m_fileExtensions["JavaScript"] = TQStringList() << "js";
|
||||||
|
m_fileExtensions["LUA"] = TQStringList() << "lua";
|
||||||
|
m_fileExtensions["Makefile"] = TQStringList() << "makefile";
|
||||||
|
m_fileExtensions["Perl"] = TQStringList() << "perl" << "pl" << "pm";
|
||||||
|
m_fileExtensions["PHP"] = TQStringList() << "php";
|
||||||
|
m_fileExtensions["POV"] = TQStringList() << "pov";
|
||||||
|
m_fileExtensions["Ini"] = TQStringList() << "ini";
|
||||||
|
m_fileExtensions["Python"] = TQStringList() << "py";
|
||||||
|
m_fileExtensions["Ruby"] = TQStringList() << "rub" << "rb";
|
||||||
|
m_fileExtensions["SQL"] = TQStringList() << "sql";
|
||||||
|
m_fileExtensions["TeX"] = TQStringList() << "tex";
|
||||||
|
m_fileExtensions["XML"] = TQStringList() << "xml";
|
||||||
|
|
||||||
|
m_lexer = NULL;
|
||||||
|
|
||||||
|
// Set default highlighter to C++ highlighter.
|
||||||
|
setLexer("cpp");
|
||||||
|
}
|
||||||
|
|
||||||
|
UiGuiHighlighter::~UiGuiHighlighter()
|
||||||
|
{
|
||||||
|
delete m_settings;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
\brief Returns the available highlighters as TQStringList.
|
||||||
|
*/
|
||||||
|
TQStringList UiGuiHighlighter::getAvailableHighlighters()
|
||||||
|
{
|
||||||
|
return m_fileExtensions.keys();
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
\brief This slot handles signals coming from selecting another syntax highlighter.
|
||||||
|
*/
|
||||||
|
void UiGuiHighlighter::setHighlighterByAction(TQAction *highlighterAction)
|
||||||
|
{
|
||||||
|
TQString highlighterName = highlighterAction->text();
|
||||||
|
setLexer(m_fileExtensions[highlighterName].first());
|
||||||
|
// TODO: This is really no nice way. How do it better?
|
||||||
|
// Need to do this "text update" to update the syntax highlighting. Otherwise highlighting is
|
||||||
|
// wrong.
|
||||||
|
// TODO not available in TQScintilla 1.71
|
||||||
|
//--- int scrollPos = m_qsciEditorParent->verticalScrollBar()->value();
|
||||||
|
m_qsciEditorParent->setText(m_qsciEditorParent->text());
|
||||||
|
//--- m_qsciEditorParent->verticalScrollBar()->setValue(scrollPos);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
\brief Turns the syntax parser on.
|
||||||
|
*/
|
||||||
|
void UiGuiHighlighter::turnHighlightOn()
|
||||||
|
{
|
||||||
|
m_highlightingIsOn = true;
|
||||||
|
m_qsciEditorParent->setLexer(m_lexer);
|
||||||
|
readCurrentSettings();
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
\brief Turns the syntax parser off.
|
||||||
|
*/
|
||||||
|
void UiGuiHighlighter::turnHighlightOff()
|
||||||
|
{
|
||||||
|
m_highlightingIsOn = false;
|
||||||
|
m_qsciEditorParent->setLexer();
|
||||||
|
m_qsciEditorParent->setFont(TQFont("Monospace", 10, TQFont::Normal));
|
||||||
|
m_qsciEditorParent->setMarginsFont(TQFont("Monospace", 10, TQFont::Normal));
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
\brief Read the settings for the current lexer from the settings file.
|
||||||
|
*/
|
||||||
|
bool UiGuiHighlighter::readCurrentSettings()
|
||||||
|
{
|
||||||
|
// settings are read from the uiguisyntaxhighlightconfigrc file, group <lexer name>
|
||||||
|
m_settings->resetGroup();
|
||||||
|
m_settings->beginGroup(TQString("uiguisyntaxhighlightconfig/") + m_lexer->language());
|
||||||
|
|
||||||
|
bool ok, flag, rc = true;
|
||||||
|
int num;
|
||||||
|
|
||||||
|
// Reset lists containing fonts and colors for each style
|
||||||
|
m_fontForStyles.clear();
|
||||||
|
m_colorForStyles.clear();
|
||||||
|
|
||||||
|
// Read the styles.
|
||||||
|
for (int i = 0; i < 128; ++i)
|
||||||
|
{
|
||||||
|
// Ignore invalid styles.
|
||||||
|
if (m_lexer->description(i).isEmpty())
|
||||||
|
{
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
TQString key = TQString();
|
||||||
|
key.sprintf("style%02d/", i);
|
||||||
|
key.replace("+", "p");
|
||||||
|
|
||||||
|
// Read the foreground color.
|
||||||
|
num = m_settings->readNumEntry(key + "color", 0, &ok);
|
||||||
|
if (ok)
|
||||||
|
{
|
||||||
|
setColor(TQColor((num >> 16) & 0xff, (num >> 8) & 0xff, num & 0xff), i);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
rc = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Read the end-of-line fill.
|
||||||
|
flag = m_settings->readBoolEntry(key + "eolfill", false, &ok);
|
||||||
|
if (ok)
|
||||||
|
{
|
||||||
|
m_lexer->setEolFill(flag, i);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
rc = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Read the font
|
||||||
|
TQStringList fdesc;
|
||||||
|
fdesc = m_settings->readListEntry(key + "font", &ok);
|
||||||
|
if (ok && fdesc.count() == 5)
|
||||||
|
{
|
||||||
|
TQFont f;
|
||||||
|
f.setFamily(fdesc[0]);
|
||||||
|
f.setPointSize(fdesc[1].toInt());
|
||||||
|
f.setBold(fdesc[2].toInt());
|
||||||
|
f.setItalic(fdesc[3].toInt());
|
||||||
|
f.setUnderline(fdesc[4].toInt());
|
||||||
|
setFont(f, i);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
rc = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Read the background color.
|
||||||
|
num = m_settings->readNumEntry(key + "paper", 0, &ok);
|
||||||
|
if (ok)
|
||||||
|
{
|
||||||
|
m_lexer->setPaper(TQColor((num >> 16) & 0xff, (num >> 8) & 0xff, num & 0xff), i);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
rc = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Read the properties.
|
||||||
|
m_lexer->refreshProperties();
|
||||||
|
|
||||||
|
return rc;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
\brief Write the settings for the current lexer to the settings file.
|
||||||
|
*/
|
||||||
|
void UiGuiHighlighter::writeCurrentSettings()
|
||||||
|
{
|
||||||
|
// settings are stored in the uiguisyntaxhighlightconfigrc file, group <lexer name>
|
||||||
|
m_settings->resetGroup();
|
||||||
|
m_settings->beginGroup(TQString("uiguisyntaxhighlightconfig/") + m_lexer->language());
|
||||||
|
|
||||||
|
// Write the styles.
|
||||||
|
for (int i = 0; i < 128; ++i)
|
||||||
|
{
|
||||||
|
// Ignore invalid styles.
|
||||||
|
if (m_lexer->description(i).isEmpty())
|
||||||
|
{
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
int num;
|
||||||
|
TQColor c;
|
||||||
|
|
||||||
|
TQString key = TQString();
|
||||||
|
key.sprintf("style%02d/", i);
|
||||||
|
key.replace("+", "p");
|
||||||
|
|
||||||
|
// Write style name
|
||||||
|
m_settings->writeEntry(key + "", m_lexer->description(i));
|
||||||
|
|
||||||
|
// Write the foreground color.
|
||||||
|
if (m_colorForStyles.contains(i))
|
||||||
|
{
|
||||||
|
c = m_colorForStyles[i];
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
c = m_lexer->color(i);
|
||||||
|
}
|
||||||
|
num = (c.red() << 16) | (c.green() << 8) | c.blue();
|
||||||
|
|
||||||
|
m_settings->writeEntry(key + "color", num);
|
||||||
|
|
||||||
|
// Write the end-of-line fill.
|
||||||
|
m_settings->writeEntry(key + "eolfill", m_lexer->eolFill(i));
|
||||||
|
|
||||||
|
// Write the font
|
||||||
|
TQStringList fdesc;
|
||||||
|
TQString fmt("%1");
|
||||||
|
TQFont f;
|
||||||
|
if (m_fontForStyles.contains(i))
|
||||||
|
{
|
||||||
|
f = m_fontForStyles[i];
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
f = m_lexer->font(i);
|
||||||
|
}
|
||||||
|
|
||||||
|
fdesc += f.family();
|
||||||
|
fdesc += fmt.arg(f.pointSize());
|
||||||
|
// The casts are for Borland.
|
||||||
|
fdesc += fmt.arg((int)f.bold());
|
||||||
|
fdesc += fmt.arg((int)f.italic());
|
||||||
|
fdesc += fmt.arg((int)f.underline());
|
||||||
|
|
||||||
|
m_settings->writeEntry(key + "font", fdesc);
|
||||||
|
|
||||||
|
// Write the background color.
|
||||||
|
c = m_lexer->paper(i);
|
||||||
|
num = (c.red() << 16) | (c.green() << 8) | c.blue();
|
||||||
|
|
||||||
|
m_settings->writeEntry(key + "paper", num);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
\brief Sets the \a color for the given \a style.
|
||||||
|
*/
|
||||||
|
void UiGuiHighlighter::setColor(const TQColor &color, int style)
|
||||||
|
{
|
||||||
|
m_colorForStyles[style] = color;
|
||||||
|
m_lexer->setColor(color, style);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
\brief Sets the \a font for the given \a style.
|
||||||
|
*/
|
||||||
|
void UiGuiHighlighter::setFont(const TQFont &font, int style)
|
||||||
|
{
|
||||||
|
m_fontForStyles[style] = font;
|
||||||
|
m_lexer->setFont(font, style);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
\brief Sets the proper highlighter/lexer for the given file \a extension. Returns the index of the used lexer in the list.
|
||||||
|
*/
|
||||||
|
int UiGuiHighlighter::setLexer(TQString extension)
|
||||||
|
{
|
||||||
|
int indexOfHighlighter = 0;
|
||||||
|
extension = extension.lower();
|
||||||
|
|
||||||
|
if (m_lexer)
|
||||||
|
{
|
||||||
|
writeCurrentSettings();
|
||||||
|
delete m_lexer;
|
||||||
|
m_lexer = nullptr;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (extension == "cpp" || extension == "hpp" || extension == "c" || extension == "h" ||
|
||||||
|
extension == "cxx" || extension == "hxx")
|
||||||
|
{
|
||||||
|
m_lexer = new TQextScintillaLexerCPP();
|
||||||
|
}
|
||||||
|
else if (extension == "sh")
|
||||||
|
{
|
||||||
|
m_lexer = new TQextScintillaLexerBash();
|
||||||
|
}
|
||||||
|
else if (extension == "bat")
|
||||||
|
{
|
||||||
|
m_lexer = new TQextScintillaLexerBatch();
|
||||||
|
}
|
||||||
|
else if (extension == "cs")
|
||||||
|
{
|
||||||
|
m_lexer = new TQextScintillaLexerCSharp();
|
||||||
|
}
|
||||||
|
else if (extension == "css")
|
||||||
|
{
|
||||||
|
m_lexer = new TQextScintillaLexerCSS();
|
||||||
|
}
|
||||||
|
else if (extension == "diff")
|
||||||
|
{
|
||||||
|
m_lexer = new TQextScintillaLexerDiff();
|
||||||
|
}
|
||||||
|
else if (extension == "html" || extension == "htm")
|
||||||
|
{
|
||||||
|
m_lexer = new TQextScintillaLexerHTML();
|
||||||
|
}
|
||||||
|
else if (extension == "idl")
|
||||||
|
{
|
||||||
|
m_lexer = new TQextScintillaLexerIDL();
|
||||||
|
}
|
||||||
|
else if (extension == "java")
|
||||||
|
{
|
||||||
|
m_lexer = new TQextScintillaLexerJava();
|
||||||
|
}
|
||||||
|
else if (extension == "js")
|
||||||
|
{
|
||||||
|
m_lexer = new TQextScintillaLexerJavaScript();
|
||||||
|
}
|
||||||
|
else if (extension == "lua")
|
||||||
|
{
|
||||||
|
m_lexer = new TQextScintillaLexerLua();
|
||||||
|
}
|
||||||
|
else if (extension == "makefile")
|
||||||
|
{
|
||||||
|
m_lexer = new TQextScintillaLexerMakefile();
|
||||||
|
}
|
||||||
|
else if (extension == "perl" || extension == "pl" || extension == "pm")
|
||||||
|
{
|
||||||
|
m_lexer = new TQextScintillaLexerPerl();
|
||||||
|
}
|
||||||
|
else if (extension == "php")
|
||||||
|
{
|
||||||
|
m_lexer = new TQextScintillaLexerHTML();
|
||||||
|
}
|
||||||
|
else if (extension == "pov")
|
||||||
|
{
|
||||||
|
m_lexer = new TQextScintillaLexerPOV();
|
||||||
|
}
|
||||||
|
else if (extension == "ini")
|
||||||
|
{
|
||||||
|
m_lexer = new TQextScintillaLexerProperties();
|
||||||
|
}
|
||||||
|
else if (extension == "py")
|
||||||
|
{
|
||||||
|
m_lexer = new TQextScintillaLexerPython();
|
||||||
|
}
|
||||||
|
else if (extension == "rub" || extension == "rb")
|
||||||
|
{
|
||||||
|
m_lexer = new TQextScintillaLexerRuby();
|
||||||
|
}
|
||||||
|
else if (extension == "sql")
|
||||||
|
{
|
||||||
|
m_lexer = new TQextScintillaLexerSQL();
|
||||||
|
}
|
||||||
|
else if (extension == "tex")
|
||||||
|
{
|
||||||
|
m_lexer = new TQextScintillaLexerTeX();
|
||||||
|
}
|
||||||
|
else if (extension == "xml")
|
||||||
|
{
|
||||||
|
m_lexer = new TQextScintillaLexerHTML();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
m_lexer = new TQextScintillaLexerCPP();
|
||||||
|
extension = "cpp";
|
||||||
|
}
|
||||||
|
|
||||||
|
// Find the index of the selected m_lexer.
|
||||||
|
indexOfHighlighter = 0;
|
||||||
|
for (const TQString &hlExtList : m_fileExtensions.keys())
|
||||||
|
{
|
||||||
|
if (m_fileExtensions[hlExtList].contains(extension))
|
||||||
|
{
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
indexOfHighlighter++;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Set the m_lexer for the TQScintilla widget.
|
||||||
|
if (m_highlightingIsOn)
|
||||||
|
{
|
||||||
|
m_qsciEditorParent->setLexer(m_lexer);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Read the m_settings for the m_lexer properties from file.
|
||||||
|
readCurrentSettings();
|
||||||
|
|
||||||
|
return indexOfHighlighter;
|
||||||
|
}
|
||||||
|
|
||||||
|
#include "UiGuiHighlighter.moc"
|
@ -1,595 +0,0 @@
|
|||||||
/***************************************************************************
|
|
||||||
* Copyright (C) 2006-2012 by Thomas Schweitzer *
|
|
||||||
* thomas-schweitzer(at)arcor.de *
|
|
||||||
* *
|
|
||||||
* This program is free software; you can redistribute it and/or modify *
|
|
||||||
* it under the terms of the GNU General Public License version 2.0 as *
|
|
||||||
* published by the Free Software Foundation. *
|
|
||||||
* *
|
|
||||||
* 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 in the file LICENSE.GPL; if not, write to the *
|
|
||||||
* Free Software Foundation, Inc., *
|
|
||||||
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
|
|
||||||
***************************************************************************/
|
|
||||||
|
|
||||||
#include "UiGuiHighlighter.h"
|
|
||||||
|
|
||||||
#include "SettingsPaths.h"
|
|
||||||
|
|
||||||
#include <tntqsettings.h>
|
|
||||||
#include <tqmenu.h>
|
|
||||||
#include <tntqscrollbar.h>
|
|
||||||
#include <tqcoreapplication.h>
|
|
||||||
|
|
||||||
#include <Qsci/qsciscintilla.h>
|
|
||||||
#include <Qsci/qscilexer.h>
|
|
||||||
#include <Qsci/qscilexerbash.h>
|
|
||||||
#include <Qsci/qscilexerbatch.h>
|
|
||||||
#include <Qsci/qscilexercmake.h>
|
|
||||||
#include <Qsci/qscilexercpp.h>
|
|
||||||
#include <Qsci/qscilexercsharp.h>
|
|
||||||
#include <Qsci/qscilexercss.h>
|
|
||||||
#include <Qsci/qscilexerd.h>
|
|
||||||
#include <Qsci/qscilexerdiff.h>
|
|
||||||
#if (TQSCINTILLA_VERSION >= 0x020300)
|
|
||||||
#include <Qsci/qscilexerfortran.h>
|
|
||||||
#include <Qsci/qscilexerfortran77.h>
|
|
||||||
#endif
|
|
||||||
#include <Qsci/qscilexerhtml.h>
|
|
||||||
#include <Qsci/qscilexeridl.h>
|
|
||||||
#include <Qsci/qscilexerjava.h>
|
|
||||||
#include <Qsci/qscilexerjavascript.h>
|
|
||||||
#include <Qsci/qscilexerlua.h>
|
|
||||||
#include <Qsci/qscilexermakefile.h>
|
|
||||||
#if (TQSCINTILLA_VERSION >= 0x020300)
|
|
||||||
#include <Qsci/qscilexerpascal.h>
|
|
||||||
#endif
|
|
||||||
#include <Qsci/qscilexerperl.h>
|
|
||||||
#if (TQSCINTILLA_VERSION >= 0x020300)
|
|
||||||
#include <Qsci/qscilexerpostscript.h>
|
|
||||||
#endif
|
|
||||||
#include <Qsci/qscilexerpov.h>
|
|
||||||
#include <Qsci/qscilexerproperties.h>
|
|
||||||
#include <Qsci/qscilexerpython.h>
|
|
||||||
#include <Qsci/qscilexerruby.h>
|
|
||||||
#if (TQSCINTILLA_VERSION >= 0x020400)
|
|
||||||
#include <Qsci/qscilexerspice.h>
|
|
||||||
#endif
|
|
||||||
#include <Qsci/qscilexersql.h>
|
|
||||||
#if (TQSCINTILLA_VERSION >= 0x020300)
|
|
||||||
#include <Qsci/qscilexertcl.h>
|
|
||||||
#endif
|
|
||||||
#include <Qsci/qscilexertex.h>
|
|
||||||
#if (TQSCINTILLA_VERSION >= 0x020400)
|
|
||||||
#include <Qsci/qscilexerverilog.h>
|
|
||||||
#endif
|
|
||||||
#include <Qsci/qscilexervhdl.h>
|
|
||||||
#if (TQSCINTILLA_VERSION >= 0x020300)
|
|
||||||
#include <Qsci/qscilexerxml.h>
|
|
||||||
#include <Qsci/qscilexeryaml.h>
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// \defgroup grp_EditorComponent All concerning editor widget.
|
|
||||||
|
|
||||||
/*
|
|
||||||
\class UiGuiHighlighter
|
|
||||||
\ingroup grp_EditorComponent
|
|
||||||
\brief UiGuiHighlighter used for selecting the syntax highlighter/lexer for the TQextScintilla component.
|
|
||||||
*/
|
|
||||||
|
|
||||||
/*
|
|
||||||
\brief The constructor initializes some regular expressions and keywords to identify cpp tokens
|
|
||||||
*/
|
|
||||||
UiGuiHighlighter::UiGuiHighlighter(TQextScintilla *parent) :
|
|
||||||
TQObject(parent)
|
|
||||||
{
|
|
||||||
_qsciEditorParent = parent;
|
|
||||||
|
|
||||||
// Create the highlighter _settings object from the UiGuiSyntaxHighlightConfig.ini file.
|
|
||||||
_settings = new TQSettings(
|
|
||||||
SettingsPaths::getSettingsPath() + "/UiGuiSyntaxHighlightConfig.ini", TQSettings::IniFormat,
|
|
||||||
this);
|
|
||||||
|
|
||||||
_highlightingIsOn = true;
|
|
||||||
|
|
||||||
_mapHighlighternameToExtension["Bash"] = TQStringList() << "sh";
|
|
||||||
_mapHighlighternameToExtension["Batch"] = TQStringList() << "bat";
|
|
||||||
_mapHighlighternameToExtension["CMake"] = TQStringList() << "cmake";
|
|
||||||
_mapHighlighternameToExtension["C++"] = TQStringList() << "c" << "h" << "cpp" << "hpp" <<
|
|
||||||
"cxx" << "hxx";
|
|
||||||
_mapHighlighternameToExtension["C#"] = TQStringList() << "cs";
|
|
||||||
_mapHighlighternameToExtension["CSS"] = TQStringList() << "css";
|
|
||||||
_mapHighlighternameToExtension["D"] = TQStringList() << "d";
|
|
||||||
_mapHighlighternameToExtension["Diff"] = TQStringList() << "diff";
|
|
||||||
#if (TQSCINTILLA_VERSION >= 0x020300)
|
|
||||||
_mapHighlighternameToExtension["Fortran"] = TQStringList() << "f" << "for" << "f90";
|
|
||||||
_mapHighlighternameToExtension["Fortran77"] = TQStringList() << "f77";
|
|
||||||
#endif
|
|
||||||
_mapHighlighternameToExtension["HTML"] = TQStringList() << "html" << "htm";
|
|
||||||
_mapHighlighternameToExtension["IDL"] = TQStringList() << "idl";
|
|
||||||
_mapHighlighternameToExtension["Java"] = TQStringList() << "java";
|
|
||||||
_mapHighlighternameToExtension["JavaScript"] = TQStringList() << "js";
|
|
||||||
_mapHighlighternameToExtension["LUA"] = TQStringList() << "lua";
|
|
||||||
_mapHighlighternameToExtension["Makefile"] = TQStringList() << "makefile";
|
|
||||||
#if (TQSCINTILLA_VERSION >= 0x020300)
|
|
||||||
_mapHighlighternameToExtension["Pascal"] = TQStringList() << "pas";
|
|
||||||
#endif
|
|
||||||
_mapHighlighternameToExtension["Perl"] = TQStringList() << "perl" << "pl" << "pm";
|
|
||||||
_mapHighlighternameToExtension["PHP"] = TQStringList() << "php";
|
|
||||||
#if (TQSCINTILLA_VERSION >= 0x020300)
|
|
||||||
_mapHighlighternameToExtension["PostScript"] = TQStringList() << "ps" << "eps" << "pdf" << "ai" <<
|
|
||||||
"fh";
|
|
||||||
#endif
|
|
||||||
_mapHighlighternameToExtension["POV"] = TQStringList() << "pov";
|
|
||||||
_mapHighlighternameToExtension["Ini"] = TQStringList() << "ini";
|
|
||||||
_mapHighlighternameToExtension["Python"] = TQStringList() << "py";
|
|
||||||
_mapHighlighternameToExtension["Ruby"] = TQStringList() << "rub" << "rb";
|
|
||||||
#if (TQSCINTILLA_VERSION >= 0x020400)
|
|
||||||
_mapHighlighternameToExtension["Spice"] = TQStringList() << "cir";
|
|
||||||
#endif
|
|
||||||
_mapHighlighternameToExtension["SQL"] = TQStringList() << "sql";
|
|
||||||
#if (TQSCINTILLA_VERSION >= 0x020300)
|
|
||||||
_mapHighlighternameToExtension["TCL"] = TQStringList() << "tcl";
|
|
||||||
#endif
|
|
||||||
_mapHighlighternameToExtension["TeX"] = TQStringList() << "tex";
|
|
||||||
#if (TQSCINTILLA_VERSION >= 0x020400)
|
|
||||||
_mapHighlighternameToExtension["Verilog"] = TQStringList() << "v" << "vh";
|
|
||||||
#endif
|
|
||||||
_mapHighlighternameToExtension["VHDL"] = TQStringList() << "vhdl";
|
|
||||||
_mapHighlighternameToExtension["XML"] = TQStringList() << "xml";
|
|
||||||
#if (TQSCINTILLA_VERSION >= 0x020300)
|
|
||||||
_mapHighlighternameToExtension["YAML"] = TQStringList() << "yaml";
|
|
||||||
#endif
|
|
||||||
|
|
||||||
_lexer = NULL;
|
|
||||||
|
|
||||||
// This code is only for testing.
|
|
||||||
/*
|
|
||||||
foreach(TQStringList extensionList, _mapHighlighternameToExtension.values() ) {
|
|
||||||
setLexerForExtension( extensionList.at(0) );
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
|
|
||||||
// Set default highlighter to C++ highlighter.
|
|
||||||
setLexerForExtension("cpp");
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
\brief Returns the available highlighters as TQStringList.
|
|
||||||
*/
|
|
||||||
TQStringList UiGuiHighlighter::getAvailableHighlighters()
|
|
||||||
{
|
|
||||||
return _mapHighlighternameToExtension.keys();
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
\brief This slot handles signals coming from selecting another syntax highlighter.
|
|
||||||
*/
|
|
||||||
void UiGuiHighlighter::setHighlighterByAction(TQAction *highlighterAction)
|
|
||||||
{
|
|
||||||
TQString highlighterName = highlighterAction->text();
|
|
||||||
setLexerForExtension(_mapHighlighternameToExtension[highlighterName].first());
|
|
||||||
//TODO: This is really no nice way. How do it better?
|
|
||||||
// Need to do this "text update" to update the syntax highlighting. Otherwise highlighting is
|
|
||||||
// wrong.
|
|
||||||
int scrollPos = _qsciEditorParent->verticalScrollBar()->value();
|
|
||||||
_qsciEditorParent->setText(_qsciEditorParent->text());
|
|
||||||
_qsciEditorParent->verticalScrollBar()->setValue(scrollPos);
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
\brief Turns the syntax parser on.
|
|
||||||
*/
|
|
||||||
void UiGuiHighlighter::turnHighlightOn()
|
|
||||||
{
|
|
||||||
_highlightingIsOn = true;
|
|
||||||
_qsciEditorParent->setLexer(_lexer);
|
|
||||||
readCurrentSettings("");
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
\brief Turns the syntax parser off.
|
|
||||||
*/
|
|
||||||
void UiGuiHighlighter::turnHighlightOff()
|
|
||||||
{
|
|
||||||
_highlightingIsOn = false;
|
|
||||||
_qsciEditorParent->setLexer();
|
|
||||||
_qsciEditorParent->setFont(TQFont("Monospace", 10, TQFont::Normal));
|
|
||||||
_qsciEditorParent->setMarginsFont(TQFont("Monospace", 10, TQFont::Normal));
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
\brief Read the settings for the current lexer from the settings file.
|
|
||||||
*/
|
|
||||||
|
|
||||||
//TODO: Refactor this function so that the coding style and variable names suit better.
|
|
||||||
bool UiGuiHighlighter::readCurrentSettings(const char *prefix)
|
|
||||||
{
|
|
||||||
bool ok, flag, rc = true;
|
|
||||||
int num;
|
|
||||||
TQString key;
|
|
||||||
|
|
||||||
// Reset lists containing fonts and colors for each style
|
|
||||||
_fontForStyles.clear();
|
|
||||||
_colorForStyles.clear();
|
|
||||||
|
|
||||||
// Read the styles.
|
|
||||||
for (int i = 0; i < 128; ++i)
|
|
||||||
{
|
|
||||||
// Ignore invalid styles.
|
|
||||||
if (_lexer->description(i).isEmpty())
|
|
||||||
{
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
key.sprintf("%s/%s/style%d/", prefix, _lexer->language(), i);
|
|
||||||
key.replace("+", "p");
|
|
||||||
|
|
||||||
// Read the foreground color.
|
|
||||||
ok = _settings->contains(key + "color");
|
|
||||||
num = _settings->value(key + "color", 0).toInt();
|
|
||||||
|
|
||||||
if (ok)
|
|
||||||
{
|
|
||||||
setColor(TQColor((num >> 16) & 0xff, (num >> 8) & 0xff, num & 0xff), i);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
rc = false;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Read the end-of-line fill.
|
|
||||||
ok = _settings->contains(key + "eolfill");
|
|
||||||
flag = _settings->value(key + "eolfill", false).toBool();
|
|
||||||
|
|
||||||
if (ok)
|
|
||||||
{
|
|
||||||
_lexer->setEolFill(flag, i);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
rc = false;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Read the font
|
|
||||||
TQStringList fdesc;
|
|
||||||
|
|
||||||
ok = _settings->contains(key + "font");
|
|
||||||
fdesc = _settings->value(key + "font").toStringList();
|
|
||||||
|
|
||||||
if (ok && fdesc.count() == 5)
|
|
||||||
{
|
|
||||||
TQFont f;
|
|
||||||
|
|
||||||
if (fdesc[0].contains("courier", TQt::CaseInsensitive))
|
|
||||||
{
|
|
||||||
f.setFamily("Monospace");
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
f.setFamily(fdesc[0]);
|
|
||||||
}
|
|
||||||
f.setPointSize(fdesc[1].toInt());
|
|
||||||
f.setBold(fdesc[2].toInt());
|
|
||||||
f.setItalic(fdesc[3].toInt());
|
|
||||||
f.setUnderline(fdesc[4].toInt());
|
|
||||||
|
|
||||||
setFont(f, i);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
rc = false;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Read the background color.
|
|
||||||
ok = _settings->contains(key + "paper");
|
|
||||||
num = _settings->value(key + "paper", 0).toInt();
|
|
||||||
|
|
||||||
if (ok)
|
|
||||||
{
|
|
||||||
_lexer->setPaper(TQColor((num >> 16) & 0xff, (num >> 8) & 0xff, num & 0xff), i);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
rc = false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Read the properties.
|
|
||||||
key.sprintf("%s/%s/properties/", prefix, _lexer->language());
|
|
||||||
|
|
||||||
_lexer->refreshProperties();
|
|
||||||
|
|
||||||
return rc;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
\brief Write the settings for the current lexer to the settings file.
|
|
||||||
*/
|
|
||||||
void UiGuiHighlighter::writeCurrentSettings(const char *prefix)
|
|
||||||
{
|
|
||||||
TQString key;
|
|
||||||
|
|
||||||
// Write the styles.
|
|
||||||
for (int i = 0; i < 128; ++i)
|
|
||||||
{
|
|
||||||
// Ignore invalid styles.
|
|
||||||
if (_lexer->description(i).isEmpty())
|
|
||||||
{
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
int num;
|
|
||||||
TQColor c;
|
|
||||||
|
|
||||||
key.sprintf("%s/%s/style%d/", prefix, _lexer->language(), i);
|
|
||||||
key.replace("+", "p");
|
|
||||||
|
|
||||||
// Write style name
|
|
||||||
_settings->setValue(key + "", _lexer->description(i));
|
|
||||||
|
|
||||||
// Write the foreground color.
|
|
||||||
if (_colorForStyles.contains(i))
|
|
||||||
{
|
|
||||||
c = _colorForStyles[i];
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
c = _lexer->color(i);
|
|
||||||
}
|
|
||||||
num = (c.red() << 16) | (c.green() << 8) | c.blue();
|
|
||||||
|
|
||||||
_settings->setValue(key + "color", num);
|
|
||||||
|
|
||||||
// Write the end-of-line fill.
|
|
||||||
_settings->setValue(key + "eolfill", _lexer->eolFill(i));
|
|
||||||
|
|
||||||
// Write the font
|
|
||||||
TQStringList fdesc;
|
|
||||||
TQString fmt("%1");
|
|
||||||
TQFont f;
|
|
||||||
|
|
||||||
if (_fontForStyles.contains(i))
|
|
||||||
{
|
|
||||||
f = _fontForStyles[i];
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
f = _lexer->font(i);
|
|
||||||
}
|
|
||||||
|
|
||||||
fdesc += f.family();
|
|
||||||
fdesc += fmt.arg(f.pointSize());
|
|
||||||
|
|
||||||
// The casts are for Borland.
|
|
||||||
fdesc += fmt.arg((int)f.bold());
|
|
||||||
fdesc += fmt.arg((int)f.italic());
|
|
||||||
fdesc += fmt.arg((int)f.underline());
|
|
||||||
|
|
||||||
_settings->setValue(key + "font", fdesc);
|
|
||||||
|
|
||||||
// Write the background color.
|
|
||||||
c = _lexer->paper(i);
|
|
||||||
num = (c.red() << 16) | (c.green() << 8) | c.blue();
|
|
||||||
|
|
||||||
_settings->setValue(key + "paper", num);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
\brief Sets the \a color for the given \a style.
|
|
||||||
*/
|
|
||||||
void UiGuiHighlighter::setColor(const TQColor &color, int style)
|
|
||||||
{
|
|
||||||
_colorForStyles[style] = color;
|
|
||||||
_lexer->setColor(color, style);
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
\brief Sets the \a font for the given \a style.
|
|
||||||
*/
|
|
||||||
void UiGuiHighlighter::setFont(const TQFont &font, int style)
|
|
||||||
{
|
|
||||||
_fontForStyles[style] = font;
|
|
||||||
_lexer->setFont(font, style);
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
\brief Sets the to be used lexer by giving his name.
|
|
||||||
*/
|
|
||||||
void UiGuiHighlighter::setLexerByName(TQString lexerName)
|
|
||||||
{
|
|
||||||
setLexerForExtension(_mapHighlighternameToExtension[lexerName].first());
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
\brief Sets the proper highlighter / lexer for the given file \a extension. Returns the index of the used lexer in the list.
|
|
||||||
*/
|
|
||||||
int UiGuiHighlighter::setLexerForExtension(TQString extension)
|
|
||||||
{
|
|
||||||
int indexOfHighlighter = 0;
|
|
||||||
extension = extension.toLower();
|
|
||||||
|
|
||||||
if (_lexer != NULL)
|
|
||||||
{
|
|
||||||
writeCurrentSettings("");
|
|
||||||
delete _lexer;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (extension == "cpp" || extension == "hpp" || extension == "c" || extension == "h" ||
|
|
||||||
extension == "cxx" || extension == "hxx")
|
|
||||||
{
|
|
||||||
_lexer = new QsciLexerCPP();
|
|
||||||
}
|
|
||||||
else if (extension == "sh")
|
|
||||||
{
|
|
||||||
_lexer = new QsciLexerBash();
|
|
||||||
}
|
|
||||||
else if (extension == "bat")
|
|
||||||
{
|
|
||||||
_lexer = new QsciLexerBatch();
|
|
||||||
}
|
|
||||||
else if (extension == "cmake")
|
|
||||||
{
|
|
||||||
_lexer = new QsciLexerCMake();
|
|
||||||
}
|
|
||||||
else if (extension == "cs")
|
|
||||||
{
|
|
||||||
_lexer = new QsciLexerCSharp();
|
|
||||||
}
|
|
||||||
else if (extension == "css")
|
|
||||||
{
|
|
||||||
_lexer = new QsciLexerCSS();
|
|
||||||
}
|
|
||||||
else if (extension == "d")
|
|
||||||
{
|
|
||||||
_lexer = new QsciLexerD();
|
|
||||||
}
|
|
||||||
else if (extension == "diff")
|
|
||||||
{
|
|
||||||
_lexer = new QsciLexerDiff();
|
|
||||||
}
|
|
||||||
#if (TQSCINTILLA_VERSION >= 0x020300)
|
|
||||||
else if (extension == "f" || extension == "for" || extension == "f90")
|
|
||||||
{
|
|
||||||
_lexer = new QsciLexerFortran();
|
|
||||||
}
|
|
||||||
else if (extension == "f77")
|
|
||||||
{
|
|
||||||
_lexer = new QsciLexerFortran77();
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
else if (extension == "html" || extension == "htm")
|
|
||||||
{
|
|
||||||
_lexer = new QsciLexerHTML();
|
|
||||||
}
|
|
||||||
else if (extension == "idl")
|
|
||||||
{
|
|
||||||
_lexer = new QsciLexerIDL();
|
|
||||||
}
|
|
||||||
else if (extension == "java")
|
|
||||||
{
|
|
||||||
_lexer = new QsciLexerJava();
|
|
||||||
}
|
|
||||||
else if (extension == "js")
|
|
||||||
{
|
|
||||||
_lexer = new QsciLexerJavaScript();
|
|
||||||
}
|
|
||||||
else if (extension == "lua")
|
|
||||||
{
|
|
||||||
_lexer = new QsciLexerLua();
|
|
||||||
}
|
|
||||||
else if (extension == "makefile")
|
|
||||||
{
|
|
||||||
_lexer = new QsciLexerMakefile();
|
|
||||||
}
|
|
||||||
#if (TQSCINTILLA_VERSION >= 0x020300)
|
|
||||||
else if (extension == "pas")
|
|
||||||
{
|
|
||||||
_lexer = new QsciLexerPascal();
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
else if (extension == "perl" || extension == "pl" || extension == "pm")
|
|
||||||
{
|
|
||||||
_lexer = new QsciLexerPerl();
|
|
||||||
}
|
|
||||||
else if (extension == "php")
|
|
||||||
{
|
|
||||||
_lexer = new QsciLexerHTML();
|
|
||||||
}
|
|
||||||
#if (TQSCINTILLA_VERSION >= 0x020300)
|
|
||||||
else if (extension == "ps" || extension == "eps" || extension == "pdf" || extension == "ai" ||
|
|
||||||
extension == "fh")
|
|
||||||
{
|
|
||||||
_lexer = new QsciLexerPostScript();
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
else if (extension == "pov")
|
|
||||||
{
|
|
||||||
_lexer = new QsciLexerPOV();
|
|
||||||
}
|
|
||||||
else if (extension == "ini")
|
|
||||||
{
|
|
||||||
_lexer = new QsciLexerProperties();
|
|
||||||
}
|
|
||||||
else if (extension == "py")
|
|
||||||
{
|
|
||||||
_lexer = new QsciLexerPython();
|
|
||||||
}
|
|
||||||
else if (extension == "rub" || extension == "rb")
|
|
||||||
{
|
|
||||||
_lexer = new QsciLexerRuby();
|
|
||||||
}
|
|
||||||
#if (TQSCINTILLA_VERSION >= 0x020400)
|
|
||||||
else if (extension == "spice?")
|
|
||||||
{
|
|
||||||
_lexer = new QsciLexerSpice();
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
else if (extension == "sql")
|
|
||||||
{
|
|
||||||
_lexer = new QsciLexerSQL();
|
|
||||||
}
|
|
||||||
#if (TQSCINTILLA_VERSION >= 0x020300)
|
|
||||||
else if (extension == "tcl")
|
|
||||||
{
|
|
||||||
_lexer = new QsciLexerTCL();
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
else if (extension == "tex")
|
|
||||||
{
|
|
||||||
_lexer = new QsciLexerTeX();
|
|
||||||
}
|
|
||||||
#if (TQSCINTILLA_VERSION >= 0x020400)
|
|
||||||
else if (extension == "vlog?")
|
|
||||||
{
|
|
||||||
_lexer = new QsciLexerVerilog();
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
else if (extension == "vhdl")
|
|
||||||
{
|
|
||||||
_lexer = new QsciLexerVHDL();
|
|
||||||
}
|
|
||||||
else if (extension == "xml")
|
|
||||||
{
|
|
||||||
#if (TQSCINTILLA_VERSION >= 0x020300)
|
|
||||||
_lexer = new QsciLexerXML();
|
|
||||||
#else
|
|
||||||
_lexer = new QsciLexerHTML();
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
#if (TQSCINTILLA_VERSION >= 0x020300)
|
|
||||||
else if (extension == "yaml")
|
|
||||||
{
|
|
||||||
_lexer = new QsciLexerYAML();
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
else
|
|
||||||
{
|
|
||||||
_lexer = new QsciLexerCPP();
|
|
||||||
extension = "cpp";
|
|
||||||
}
|
|
||||||
|
|
||||||
// Find the index of the selected _lexer.
|
|
||||||
indexOfHighlighter = 0;
|
|
||||||
while (!_mapHighlighternameToExtension.values().at(indexOfHighlighter).contains(extension))
|
|
||||||
{
|
|
||||||
indexOfHighlighter++;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Set the _lexer for the TQScintilla widget.
|
|
||||||
if (_highlightingIsOn)
|
|
||||||
{
|
|
||||||
_qsciEditorParent->setLexer(_lexer);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Read the _settings for the _lexer properties from file.
|
|
||||||
readCurrentSettings("");
|
|
||||||
|
|
||||||
return indexOfHighlighter;
|
|
||||||
}
|
|
Loading…
Reference in new issue