aboutsummaryrefslogtreecommitdiffhomepage
path: root/win32/ExternalLexer.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'win32/ExternalLexer.cxx')
-rw-r--r--win32/ExternalLexer.cxx31
1 files changed, 30 insertions, 1 deletions
diff --git a/win32/ExternalLexer.cxx b/win32/ExternalLexer.cxx
index d6df40343..77c235940 100644
--- a/win32/ExternalLexer.cxx
+++ b/win32/ExternalLexer.cxx
@@ -21,6 +21,7 @@
int LexerManager::UseCount = 0;
LexerLibrary *LexerManager::first = NULL;
LexerLibrary *LexerManager::last = NULL;
+LexerManager *LexerManager::firstlm = NULL;
//------------------------------------------
//
@@ -210,7 +211,8 @@ LexerManager::LexerManager() {
UseCount++;
if (1 == UseCount) {
- EnumerateLexers();
+ firstlm = this;
+ m_bLoaded = false;
}
}
@@ -279,4 +281,31 @@ LexerManager::~LexerManager() {
last = NULL;
}
}
+ if (this == firstlm)
+ firstlm = NULL;
+}
+
+void LexerManager::Load()
+{
+ if(!m_bLoaded)
+ {
+ m_bLoaded = true;
+ EnumerateLexers();
+ }
}
+
+// Return a LexerManager, or create one and then return it.
+LexerManager *LexerManager::GetInstance() {
+ if(!firstlm)
+ firstlm = new LexerManager;
+ return firstlm;
+}
+
+LMMinder::~LMMinder()
+{
+ LexerManager *rem = LexerManager::firstlm;
+ if(rem)
+ delete rem;
+}
+
+LMMinder minder;