From d12c83527976eb3b2fce01a4b104ab119d531bc2 Mon Sep 17 00:00:00 2001 From: Neil Date: Sun, 5 Apr 2020 21:31:33 +1000 Subject: Implement access to the identifier of an ILexer5. This also stops unexpected container lexing when a lexer is set. --- src/ScintillaBase.cxx | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/src/ScintillaBase.cxx b/src/ScintillaBase.cxx index 8e3a86c15..9180b3796 100644 --- a/src/ScintillaBase.cxx +++ b/src/ScintillaBase.cxx @@ -679,6 +679,18 @@ void LexState::SetWordList(int n, const char *wl) { } } +int LexState::GetIdentifier() const { + if (lexCurrent) { + return lexCurrent->GetLanguage(); + } + if (instance) { + if (instance->Version() >= lvRelease5) { + return instance->GetIdentifier(); + } + } + return SCLEX_CONTAINER; +} + const char *LexState::GetName() const { if (lexCurrent) { return lexCurrent->languageName; @@ -847,7 +859,7 @@ const char *LexState::DescriptionOfStyle(int style) { } void ScintillaBase::NotifyStyleToNeeded(Sci::Position endStyleNeeded) { - if (DocumentLexState()->lexLanguage != SCLEX_CONTAINER) { + if (DocumentLexState()->GetIdentifier() != SCLEX_CONTAINER) { const Sci::Line lineEndStyled = pdoc->SciLineFromPosition(pdoc->GetEndStyled()); const Sci::Position endStyled = @@ -1062,7 +1074,7 @@ sptr_t ScintillaBase::WndProc(unsigned int iMessage, uptr_t wParam, sptr_t lPara break; case SCI_GETLEXER: - return DocumentLexState()->lexLanguage; + return DocumentLexState()->GetIdentifier(); case SCI_SETILEXER: DocumentLexState()->SetInstance(reinterpret_cast(lParam)); -- cgit v1.2.3