QScintilla 2.14.1
QsciLexer Class Referenceabstract

#include <qscilexer.h>

Inherits QObject.

Inherited by QsciLexerAVS, QsciLexerAsm, QsciLexerBash, QsciLexerBatch, QsciLexerCMake, QsciLexerCPP, QsciLexerCSS, QsciLexerCoffeeScript, QsciLexerCustom, QsciLexerD, QsciLexerDiff, QsciLexerEDIFACT, QsciLexerFortran77, QsciLexerHTML, QsciLexerHex, QsciLexerJSON, QsciLexerLua, QsciLexerMakefile, QsciLexerMarkdown, QsciLexerMatlab, QsciLexerPO, QsciLexerPOV, QsciLexerPascal, QsciLexerPerl, QsciLexerPostScript, QsciLexerProperties, QsciLexerPython, QsciLexerRuby, QsciLexerSQL, QsciLexerSpice, QsciLexerTCL, QsciLexerTeX, QsciLexerVHDL, QsciLexerVerilog, and QsciLexerYAML.

Public Slots

virtual void setAutoIndentStyle (int autoindentstyle)
virtual void setColor (const QColor &c, int style=-1)
virtual void setEolFill (bool eoffill, int style=-1)
virtual void setFont (const QFont &f, int style=-1)
virtual void setPaper (const QColor &c, int style=-1)

Signals

void colorChanged (const QColor &c, int style)
void eolFillChanged (bool eolfilled, int style)
void fontChanged (const QFont &f, int style)
void paperChanged (const QColor &c, int style)
void propertyChanged (const char *prop, const char *val)

Public Member Functions

 QsciLexer (QObject *parent=0)
virtual ~QsciLexer ()
virtual const char * language () const =0
virtual const char * lexer () const
virtual int lexerId () const
QsciAbstractAPIsapis () const
virtual const char * autoCompletionFillups () const
virtual QStringList autoCompletionWordSeparators () const
int autoIndentStyle ()
virtual const char * blockEnd (int *style=0) const
virtual int blockLookback () const
virtual const char * blockStart (int *style=0) const
virtual const char * blockStartKeyword (int *style=0) const
virtual int braceStyle () const
virtual bool caseSensitive () const
virtual QColor color (int style) const
virtual bool eolFill (int style) const
virtual QFont font (int style) const
virtual int indentationGuideView () const
virtual const char * keywords (int set) const
virtual int defaultStyle () const
virtual QString description (int style) const =0
virtual QColor paper (int style) const
QColor defaultColor () const
virtual QColor defaultColor (int style) const
virtual bool defaultEolFill (int style) const
QFont defaultFont () const
virtual QFont defaultFont (int style) const
QColor defaultPaper () const
virtual QColor defaultPaper (int style) const
QsciScintillaeditor () const
void setAPIs (QsciAbstractAPIs *apis)
void setDefaultColor (const QColor &c)
void setDefaultFont (const QFont &f)
void setDefaultPaper (const QColor &c)
virtual void setEditor (QsciScintilla *editor)
bool readSettings (QSettings &qs, const char *prefix="/Scintilla")
virtual void refreshProperties ()
virtual int styleBitsNeeded () const
virtual const char * wordCharacters () const
bool writeSettings (QSettings &qs, const char *prefix="/Scintilla") const

Protected Member Functions

virtual bool readProperties (QSettings &qs, const QString &prefix)
virtual bool writeProperties (QSettings &qs, const QString &prefix) const
QByteArray textAsBytes (const QString &text) const
QString bytesAsText (const char *bytes, int size) const

Detailed Description

The QsciLexer class is an abstract class used as a base for language lexers.

A lexer scans the text breaking it up into separate language objects, e.g. keywords, strings, operators. The lexer then uses a different style to draw each object. A style is identified by a style number and has a number of attributes, including colour and font. A specific language lexer will implement appropriate default styles which can be overriden by an application by further sub-classing the specific language lexer.

A lexer may provide one or more sets of words to be recognised as keywords. Most lexers only provide one set, but some may support languages embedded in other languages and provide several sets.

QsciLexer provides convenience methods for saving and restoring user preferences for fonts and colours.

If you want to write a lexer for a new language then you can add it to the underlying Scintilla code and implement a corresponding QsciLexer sub-class to manage the different styles used. Alternatively you can implement a sub-class of QsciLexerCustom.

Constructor & Destructor Documentation

◆ QsciLexer()

QsciLexer::QsciLexer ( QObject * parent = 0)

Construct a QsciLexer with parent parent. parent is typically the QsciScintilla instance.

Member Function Documentation

◆ language()

◆ lexer()

◆ lexerId()

virtual int QsciLexer::lexerId ( ) const
virtual

Returns the identifier (i.e. a QsciScintillaBase::SCLEX_* value) of the lexer. This is only used if lexer() returns 0. The default implementation returns QsciScintillaBase::SCLEX_CONTAINER.

See also
lexer()

◆ apis()

QsciAbstractAPIs * QsciLexer::apis ( ) const

Returns the current API set or 0 if there isn't one.

See also
setAPIs()

Referenced by setAPIs().

◆ autoCompletionFillups()

virtual const char * QsciLexer::autoCompletionFillups ( ) const
virtual

Returns the characters that can fill up auto-completion.

Reimplemented in QsciLexerHTML.

◆ autoCompletionWordSeparators()

virtual QStringList QsciLexer::autoCompletionWordSeparators ( ) const
virtual

Returns the list of character sequences that can separate auto-completion words. The first in the list is assumed to be the sequence used to separate words in the lexer's API files.

Reimplemented in QsciLexerCoffeeScript, QsciLexerCPP, QsciLexerD, QsciLexerLua, QsciLexerPascal, QsciLexerPerl, and QsciLexerPython.

◆ autoIndentStyle()

int QsciLexer::autoIndentStyle ( )

Returns the auto-indentation style. The default is 0 if the language is block structured, or QsciScintilla::AiMaintain if not.

See also
setAutoIndentStyle(), QsciScintilla::AiMaintain, QsciScintilla::AiOpening, QsciScintilla::AiClosing

◆ blockEnd()

virtual const char * QsciLexer::blockEnd ( int * style = 0) const
virtual

Returns a space separated list of words or characters in a particular style that define the end of a block for auto-indentation. The style is returned via style.

Reimplemented in QsciLexerCoffeeScript, QsciLexerCPP, QsciLexerCSS, QsciLexerD, QsciLexerPascal, QsciLexerPerl, and QsciLexerRuby.

◆ blockLookback()

virtual int QsciLexer::blockLookback ( ) const
virtual

Returns the number of lines prior to the current one when determining the scope of a block when auto-indenting.

Reimplemented in QsciLexerPython.

◆ blockStart()

virtual const char * QsciLexer::blockStart ( int * style = 0) const
virtual

Returns a space separated list of words or characters in a particular style that define the start of a block for auto-indentation. The style is returned via style.

Reimplemented in QsciLexerCoffeeScript, QsciLexerCPP, QsciLexerCSS, QsciLexerD, QsciLexerLua, QsciLexerPascal, QsciLexerPerl, QsciLexerPython, and QsciLexerRuby.

◆ blockStartKeyword()

virtual const char * QsciLexer::blockStartKeyword ( int * style = 0) const
virtual

Returns a space separated list of keywords in a particular style that define the start of a block for auto-indentation. The style is returned via style.

Reimplemented in QsciLexerCoffeeScript, QsciLexerCPP, QsciLexerD, QsciLexerPascal, and QsciLexerRuby.

◆ braceStyle()

◆ caseSensitive()

virtual bool QsciLexer::caseSensitive ( ) const
virtual

Returns true if the language is case sensitive. The default is true.

Reimplemented in QsciLexerBatch.

◆ color()

virtual QColor QsciLexer::color ( int style) const
virtual

Returns the foreground colour of the text for style number style. The default colour is that returned by defaultColor().

See also
defaultColor(), paper()

Referenced by writeProperties().

◆ eolFill()

virtual bool QsciLexer::eolFill ( int style) const
virtual

Returns the end-of-line for style number style. The default is false.

◆ font()

virtual QFont QsciLexer::font ( int style) const
virtual

Returns the font for style number style. The default font is that returned by defaultFont().

See also
defaultFont()

Referenced by writeProperties().

◆ indentationGuideView()

virtual int QsciLexer::indentationGuideView ( ) const
virtual

Returns the view used for indentation guides.

Reimplemented in QsciLexerPython.

◆ keywords()

virtual const char * QsciLexer::keywords ( int set) const
virtual

◆ defaultStyle()

virtual int QsciLexer::defaultStyle ( ) const
virtual

Returns the number of the style used for whitespace. The default implementation returns 0 which is the convention adopted by most lexers.

◆ description()

virtual QString QsciLexer::description ( int style) const
pure virtual

◆ paper()

virtual QColor QsciLexer::paper ( int style) const
virtual

Returns the background colour of the text for style number style.

See also
defaultPaper(), color()

Referenced by writeProperties().

◆ defaultColor() [1/2]

QColor QsciLexer::defaultColor ( ) const

Returns the default text colour.

See also
setDefaultColor()

◆ defaultColor() [2/2]

◆ defaultEolFill()

◆ defaultFont() [1/2]

QFont QsciLexer::defaultFont ( ) const

Returns the default font.

See also
setDefaultFont()

◆ defaultFont() [2/2]

◆ defaultPaper() [1/2]

QColor QsciLexer::defaultPaper ( ) const

Returns the default paper colour.

See also
setDefaultPaper()

◆ defaultPaper() [2/2]

◆ editor()

QsciScintilla * QsciLexer::editor ( ) const
inline

Returns the QsciScintilla instance that the lexer is currently attached to or 0 if it is unattached.

Referenced by setDefaultPaper(), and QsciLexerCustom::setEditor().

◆ setAPIs()

void QsciLexer::setAPIs ( QsciAbstractAPIs * apis)

The current set of APIs is set to apis. If apis is 0 then any existing APIs for this lexer are removed.

See also
apis()

References apis().

◆ setDefaultColor()

void QsciLexer::setDefaultColor ( const QColor & c)

The default text colour is set to c.

See also
defaultColor(), color()

◆ setDefaultFont()

void QsciLexer::setDefaultFont ( const QFont & f)

The default font is set to f.

See also
defaultFont(), font()

◆ setDefaultPaper()

void QsciLexer::setDefaultPaper ( const QColor & c)

The default paper colour is set to c.

See also
defaultPaper(), paper()

References editor().

◆ setEditor()

virtual void QsciLexer::setEditor ( QsciScintilla * editor)
virtual

Reimplemented in QsciLexerCustom.

◆ readSettings()

bool QsciLexer::readSettings ( QSettings & qs,
const char * prefix = "/Scintilla" )

The colour, paper, font and end-of-line for each style number, and all lexer specific properties are read from the settings qs. prefix is prepended to the key of each entry. true is returned if there was no error.

See also
writeSettings(), QsciScintilla::setLexer()

◆ refreshProperties()

◆ styleBitsNeeded()

virtual int QsciLexer::styleBitsNeeded ( ) const
virtual

Returns the number of style bits needed by the lexer. Normally this should only be re-implemented by custom lexers. This is deprecated and no longer has any effect.

Reimplemented in QsciLexerCustom.

◆ wordCharacters()

virtual const char * QsciLexer::wordCharacters ( ) const
virtual

Returns the string of characters that comprise a word. The default is 0 which implies the upper and lower case alphabetic characters and underscore.

Reimplemented in QsciLexerAVS, QsciLexerBash, QsciLexerBatch, QsciLexerCoffeeScript, QsciLexerCPP, QsciLexerCSS, QsciLexerD, QsciLexerDiff, QsciLexerHTML, QsciLexerMakefile, QsciLexerPerl, QsciLexerPOV, QsciLexerProperties, QsciLexerTeX, and QsciLexerVerilog.

◆ writeSettings()

bool QsciLexer::writeSettings ( QSettings & qs,
const char * prefix = "/Scintilla" ) const

The colour, paper, font and end-of-line for each style number, and all lexer specific properties are written to the settings qs. prefix is prepended to the key of each entry. true is returned if there was no error.

See also
readSettings()

◆ setAutoIndentStyle

virtual void QsciLexer::setAutoIndentStyle ( int autoindentstyle)
virtualslot

The auto-indentation style is set to autoindentstyle.

See also
autoIndentStyle(), QsciScintilla::AiMaintain, QsciScintilla::AiOpening, QsciScintilla::AiClosing

◆ setColor

virtual void QsciLexer::setColor ( const QColor & c,
int style = -1 )
virtualslot

The foreground colour for style number style is set to c. If style is -1 then the colour is set for all styles.

◆ setEolFill

virtual void QsciLexer::setEolFill ( bool eoffill,
int style = -1 )
virtualslot

The end-of-line fill for style number style is set to eoffill. If style is -1 then the fill is set for all styles.

◆ setFont

virtual void QsciLexer::setFont ( const QFont & f,
int style = -1 )
virtualslot

The font for style number style is set to f. If style is -1 then the font is set for all styles.

◆ setPaper

virtual void QsciLexer::setPaper ( const QColor & c,
int style = -1 )
virtualslot

The background colour for style number style is set to c. If style is -1 then the colour is set for all styles.

◆ colorChanged

void QsciLexer::colorChanged ( const QColor & c,
int style )
signal

This signal is emitted when the foreground colour of style number style has changed. The new colour is c.

◆ eolFillChanged

void QsciLexer::eolFillChanged ( bool eolfilled,
int style )
signal

This signal is emitted when the end-of-file fill of style number style has changed. The new fill is eolfilled.

◆ fontChanged

void QsciLexer::fontChanged ( const QFont & f,
int style )
signal

This signal is emitted when the font of style number style has changed. The new font is f.

◆ paperChanged

void QsciLexer::paperChanged ( const QColor & c,
int style )
signal

This signal is emitted when the background colour of style number style has changed. The new colour is c.

◆ propertyChanged

void QsciLexer::propertyChanged ( const char * prop,
const char * val )
signal

This signal is emitted when the value of the lexer property prop needs to be changed. The new value is val.

◆ readProperties()

virtual bool QsciLexer::readProperties ( QSettings & qs,
const QString & prefix )
protectedvirtual

The lexer's properties are read from the settings qs. prefix (which has a trailing '/') should be used as a prefix to the key of each setting. true is returned if there is no error.

Reimplemented in QsciLexerAsm, QsciLexerAVS, QsciLexerBash, QsciLexerCMake, QsciLexerCoffeeScript, QsciLexerCPP, QsciLexerCSS, QsciLexerD, QsciLexerFortran77, QsciLexerHTML, QsciLexerJSON, QsciLexerLua, QsciLexerPascal, QsciLexerPerl, QsciLexerPO, QsciLexerPostScript, QsciLexerPOV, QsciLexerProperties, QsciLexerPython, QsciLexerRuby, QsciLexerSQL, QsciLexerTCL, QsciLexerTeX, QsciLexerVerilog, QsciLexerVHDL, QsciLexerXML, and QsciLexerYAML.

◆ writeProperties()

virtual bool QsciLexer::writeProperties ( QSettings & qs,
const QString & prefix ) const
protectedvirtual

The lexer's properties are written to the settings qs. prefix (which has a trailing '/') should be used as a prefix to the key of each setting. true is returned if there is no error.

Reimplemented in QsciLexerAsm, QsciLexerAVS, QsciLexerBash, QsciLexerCMake, QsciLexerCoffeeScript, QsciLexerCPP, QsciLexerCSS, QsciLexerD, QsciLexerFortran77, QsciLexerHTML, QsciLexerJSON, QsciLexerLua, QsciLexerPascal, QsciLexerPerl, QsciLexerPO, QsciLexerPostScript, QsciLexerPOV, QsciLexerProperties, QsciLexerPython, QsciLexerRuby, QsciLexerSQL, QsciLexerTCL, QsciLexerTeX, QsciLexerVerilog, QsciLexerVHDL, QsciLexerXML, and QsciLexerYAML.

References color(), font(), and paper().