diff options
author | nyamatongwe <devnull@localhost> | 2010-07-28 17:54:24 +1000 |
---|---|---|
committer | nyamatongwe <devnull@localhost> | 2010-07-28 17:54:24 +1000 |
commit | 7317421053e0b1ddde78e0ddd317d6b6fb52aa57 (patch) | |
tree | f6cbcf5648f869cdb62556d39e9223f94307ee94 | |
parent | fc8b0efdbd3f1156feb7fb28d2934c79f1119e8e (diff) | |
download | scintilla-mirror-7317421053e0b1ddde78e0ddd317d6b6fb52aa57.tar.gz |
Restore container lexing functionality which was accidentally removed by lexer objects changes.rel-2-20
-rw-r--r-- | src/Document.cxx | 2 | ||||
-rw-r--r-- | src/Document.h | 3 | ||||
-rw-r--r-- | src/ScintillaBase.cxx | 15 |
3 files changed, 14 insertions, 6 deletions
diff --git a/src/Document.cxx b/src/Document.cxx index 4b6a448cb..577f70910 100644 --- a/src/Document.cxx +++ b/src/Document.cxx @@ -1409,7 +1409,7 @@ bool SCI_METHOD Document::SetStyles(int length, const char *styles) { void Document::EnsureStyledTo(int pos) { if ((enteredStyling == 0) && (pos > GetEndStyled())) { IncrementStyleClock(); - if (pli) { + if (pli && !pli->UseContainerLexing()) { int lineEndStyled = LineFromPosition(GetEndStyled()); int endStyled = LineStart(lineEndStyled); pli->Colourise(endStyled, pos); diff --git a/src/Document.h b/src/Document.h index a765c6299..ffadbade3 100644 --- a/src/Document.h +++ b/src/Document.h @@ -146,6 +146,9 @@ public: virtual ~LexInterface() { } void Colourise(int start, int end); + bool UseContainerLexing() const { + return instance == 0; + } }; /** diff --git a/src/ScintillaBase.cxx b/src/ScintillaBase.cxx index 2f84db7cd..b4accacb9 100644 --- a/src/ScintillaBase.cxx +++ b/src/ScintillaBase.cxx @@ -527,17 +527,22 @@ void LexState::SetLexerModule(const LexerModule *lex) { instance = 0; } lexCurrent = lex; - instance = lexCurrent->Create(); + if (lexCurrent) + instance = lexCurrent->Create(); pdoc->LexerChanged(); } } void LexState::SetLexer(uptr_t wParam) { lexLanguage = wParam; - const LexerModule *lex = Catalogue::Find(lexLanguage); - if (!lex) - lex = Catalogue::Find(SCLEX_NULL); - SetLexerModule(lex); + if (lexLanguage == SCLEX_CONTAINER) { + SetLexerModule(0); + } else { + const LexerModule *lex = Catalogue::Find(lexLanguage); + if (!lex) + lex = Catalogue::Find(SCLEX_NULL); + SetLexerModule(lex); + } } void LexState::SetLexerLanguage(const char *languageName) { |