aboutsummaryrefslogtreecommitdiffhomepage
path: root/lexlib
diff options
context:
space:
mode:
Diffstat (limited to 'lexlib')
-rw-r--r--lexlib/CatalogueModules.h2
-rw-r--r--lexlib/DefaultLexer.cxx20
-rw-r--r--lexlib/DefaultLexer.h10
-rw-r--r--lexlib/LexerBase.cxx16
-rw-r--r--lexlib/LexerBase.h6
-rw-r--r--lexlib/LexerModule.cxx2
-rw-r--r--lexlib/LexerModule.h4
-rw-r--r--lexlib/LexerSimple.cxx8
-rw-r--r--lexlib/LexerSimple.h3
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;
};
}