diff options
Diffstat (limited to 'lexlib')
-rw-r--r-- | lexlib/CatalogueModules.h | 2 | ||||
-rw-r--r-- | lexlib/DefaultLexer.cxx | 20 | ||||
-rw-r--r-- | lexlib/DefaultLexer.h | 10 | ||||
-rw-r--r-- | lexlib/LexerBase.cxx | 16 | ||||
-rw-r--r-- | lexlib/LexerBase.h | 6 | ||||
-rw-r--r-- | lexlib/LexerModule.cxx | 2 | ||||
-rw-r--r-- | lexlib/LexerModule.h | 4 | ||||
-rw-r--r-- | lexlib/LexerSimple.cxx | 8 | ||||
-rw-r--r-- | lexlib/LexerSimple.h | 3 |
9 files changed, 60 insertions, 11 deletions
diff --git a/lexlib/CatalogueModules.h b/lexlib/CatalogueModules.h index 1a170cf70..197a66460 100644 --- a/lexlib/CatalogueModules.h +++ b/lexlib/CatalogueModules.h @@ -56,7 +56,7 @@ public: return lexerCatalogue[index]->fnFactory; } - ILexer4 *Create(unsigned int index) { + ILexer5 *Create(unsigned int index) { const LexerModule *plm = lexerCatalogue[index]; if (!plm) { return nullptr; diff --git a/lexlib/DefaultLexer.cxx b/lexlib/DefaultLexer.cxx index 42abac50f..89671aa30 100644 --- a/lexlib/DefaultLexer.cxx +++ b/lexlib/DefaultLexer.cxx @@ -24,8 +24,12 @@ using namespace Scintilla; static const char styleSubable[] = { 0 }; -DefaultLexer::DefaultLexer(const LexicalClass *lexClasses_, size_t nClasses_) : - lexClasses(lexClasses_), nClasses(nClasses_) { +DefaultLexer::DefaultLexer(const char *languageName_, int language_, + const LexicalClass *lexClasses_, size_t nClasses_) : + languageName(languageName_), + language(language_), + lexClasses(lexClasses_), + nClasses(nClasses_) { } DefaultLexer::~DefaultLexer() { @@ -36,7 +40,7 @@ void SCI_METHOD DefaultLexer::Release() { } int SCI_METHOD DefaultLexer::Version() const { - return lvRelease4; + return lvRelease5; } const char * SCI_METHOD DefaultLexer::PropertyNames() { @@ -123,3 +127,13 @@ const char * SCI_METHOD DefaultLexer::TagsOfStyle(int style) { const char * SCI_METHOD DefaultLexer::DescriptionOfStyle(int style) { return (style < NamedStyles()) ? lexClasses[style].description : ""; } + +// ILexer5 methods +const char * SCI_METHOD DefaultLexer::GetName() { + return languageName; +} + +int SCI_METHOD DefaultLexer::GetIdentifier() { + return language; +} + diff --git a/lexlib/DefaultLexer.h b/lexlib/DefaultLexer.h index 6e3d7ac22..9139c4595 100644 --- a/lexlib/DefaultLexer.h +++ b/lexlib/DefaultLexer.h @@ -13,11 +13,14 @@ namespace Scintilla { // A simple lexer with no state -class DefaultLexer : public ILexer4 { +class DefaultLexer : public ILexer5 { + const char *languageName; + int language; const LexicalClass *lexClasses; size_t nClasses; public: - DefaultLexer(const LexicalClass *lexClasses_ = nullptr, size_t nClasses_ = 0); + DefaultLexer(const char *languageName_, int language_, + const LexicalClass *lexClasses_ = nullptr, size_t nClasses_ = 0); virtual ~DefaultLexer(); void SCI_METHOD Release() override; int SCI_METHOD Version() const override; @@ -44,6 +47,9 @@ public: const char * SCI_METHOD NameOfStyle(int style) override; const char * SCI_METHOD TagsOfStyle(int style) override; const char * SCI_METHOD DescriptionOfStyle(int style) override; + // ILexer5 methods + const char * SCI_METHOD GetName() override; + int SCI_METHOD GetIdentifier() override; }; } diff --git a/lexlib/LexerBase.cxx b/lexlib/LexerBase.cxx index ee3aa797e..bf195d824 100644 --- a/lexlib/LexerBase.cxx +++ b/lexlib/LexerBase.cxx @@ -44,7 +44,7 @@ void SCI_METHOD LexerBase::Release() { } int SCI_METHOD LexerBase::Version() const { - return lvRelease4; + return lvRelease5; } const char * SCI_METHOD LexerBase::PropertyNames() { @@ -69,6 +69,10 @@ Sci_Position SCI_METHOD LexerBase::PropertySet(const char *key, const char *val) } } +const char *SCI_METHOD LexerBase::PropertyGet(const char *key) { + return props.Get(key); +} + const char * SCI_METHOD LexerBase::DescribeWordListSets() { return ""; } @@ -139,3 +143,13 @@ const char * SCI_METHOD LexerBase::TagsOfStyle(int style) { const char * SCI_METHOD LexerBase::DescriptionOfStyle(int style) { return (style < NamedStyles()) ? lexClasses[style].description : ""; } + +// ILexer5 methods + +const char *SCI_METHOD LexerBase::GetName() { + return ""; +} + +int SCI_METHOD LexerBase::GetIdentifier() { + return SCLEX_AUTOMATIC; +} diff --git a/lexlib/LexerBase.h b/lexlib/LexerBase.h index ae8096591..22d17fea1 100644 --- a/lexlib/LexerBase.h +++ b/lexlib/LexerBase.h @@ -11,7 +11,7 @@ namespace Scintilla { // A simple lexer with no state -class LexerBase : public ILexer4 { +class LexerBase : public ILexer5 { protected: const LexicalClass *lexClasses; size_t nClasses; @@ -46,6 +46,10 @@ public: const char * SCI_METHOD NameOfStyle(int style) override; const char * SCI_METHOD TagsOfStyle(int style) override; const char * SCI_METHOD DescriptionOfStyle(int style) override; + // ILexer5 methods + const char * SCI_METHOD GetName() override; + int SCI_METHOD GetIdentifier() override; + const char *SCI_METHOD PropertyGet(const char *key) override; }; } diff --git a/lexlib/LexerModule.cxx b/lexlib/LexerModule.cxx index a03be30ef..3d4010756 100644 --- a/lexlib/LexerModule.cxx +++ b/lexlib/LexerModule.cxx @@ -93,7 +93,7 @@ size_t LexerModule::NamedStyles() const { return nClasses; } -ILexer4 *LexerModule::Create() const { +ILexer5 *LexerModule::Create() const { if (fnFactory) return fnFactory(); else diff --git a/lexlib/LexerModule.h b/lexlib/LexerModule.h index 96cff9645..d3b378c9b 100644 --- a/lexlib/LexerModule.h +++ b/lexlib/LexerModule.h @@ -16,7 +16,7 @@ struct LexicalClass; typedef void (*LexerFunction)(Sci_PositionU startPos, Sci_Position lengthDoc, int initStyle, WordList *keywordlists[], Accessor &styler); -typedef ILexer4 *(*LexerFactoryFunction)(); +typedef ILexer5 *(*LexerFactoryFunction)(); /** * A LexerModule is responsible for lexing and folding a particular language. @@ -58,7 +58,7 @@ public: const LexicalClass *LexClasses() const; size_t NamedStyles() const; - ILexer4 *Create() const; + ILexer5 *Create() const; virtual void Lex(Sci_PositionU startPos, Sci_Position lengthDoc, int initStyle, WordList *keywordlists[], Accessor &styler) const; diff --git a/lexlib/LexerSimple.cxx b/lexlib/LexerSimple.cxx index 0be7d97ca..e69c44ad6 100644 --- a/lexlib/LexerSimple.cxx +++ b/lexlib/LexerSimple.cxx @@ -51,3 +51,11 @@ void SCI_METHOD LexerSimple::Fold(Sci_PositionU startPos, Sci_Position lengthDoc astyler.Flush(); } } + +const char * SCI_METHOD LexerSimple::GetName() { + return module->languageName; +} + +int SCI_METHOD LexerSimple::GetIdentifier() { + return module->GetLanguage(); +} diff --git a/lexlib/LexerSimple.h b/lexlib/LexerSimple.h index 87882eaeb..ae4177769 100644 --- a/lexlib/LexerSimple.h +++ b/lexlib/LexerSimple.h @@ -19,6 +19,9 @@ public: const char * SCI_METHOD DescribeWordListSets() override; void SCI_METHOD Lex(Sci_PositionU startPos, Sci_Position lengthDoc, int initStyle, IDocument *pAccess) override; void SCI_METHOD Fold(Sci_PositionU startPos, Sci_Position lengthDoc, int initStyle, IDocument *pAccess) override; + // ILexer5 methods + const char * SCI_METHOD GetName() override; + int SCI_METHOD GetIdentifier() override; }; } |