diff options
author | Neil <nyamatongwe@gmail.com> | 2020-04-05 21:31:33 +1000 |
---|---|---|
committer | Neil <nyamatongwe@gmail.com> | 2020-04-05 21:31:33 +1000 |
commit | d12c83527976eb3b2fce01a4b104ab119d531bc2 (patch) | |
tree | 9ecd15acc7034b5014711ff01d9c4a8eb2a29989 /src/ScintillaBase.cxx | |
parent | e72c4af1c604bce533c68488cdb5802b461ec179 (diff) | |
download | scintilla-mirror-d12c83527976eb3b2fce01a4b104ab119d531bc2.tar.gz |
Implement access to the identifier of an ILexer5. This also stops unexpected
container lexing when a lexer is set.
Diffstat (limited to 'src/ScintillaBase.cxx')
-rw-r--r-- | src/ScintillaBase.cxx | 16 |
1 files 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<ILexer5 *>(lParam)); |