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;  };  } | 
