diff --git a/Makefile.in b/Makefile.in
index f456892a36..0322d80ad1 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -236,6 +236,7 @@ WXSCINTILLA_OBJECTS = \
wxscintilla_LexBaan.o \
wxscintilla_LexBash.o \
wxscintilla_LexBasic.o \
+ wxscintilla_LexBibTeX.o \
wxscintilla_LexBullant.o \
wxscintilla_LexCaml.o \
wxscintilla_LexCLW.o \
@@ -295,6 +296,7 @@ WXSCINTILLA_OBJECTS = \
wxscintilla_LexPython.o \
wxscintilla_LexR.o \
wxscintilla_LexRebol.o \
+ wxscintilla_LexRegistry.o \
wxscintilla_LexRuby.o \
wxscintilla_LexRust.o \
wxscintilla_LexScriptol.o \
@@ -337,11 +339,14 @@ WXSCINTILLA_OBJECTS = \
wxscintilla_ContractionState.o \
wxscintilla_Decoration.o \
wxscintilla_Document.o \
+ wxscintilla_EditModel.o \
+ wxscintilla_EditView.o \
wxscintilla_Editor.o \
wxscintilla_ExternalLexer.o \
wxscintilla_Indicator.o \
wxscintilla_KeyMap.o \
wxscintilla_LineMarker.o \
+ wxscintilla_MarginView.o \
wxscintilla_PerLine.o \
wxscintilla_PositionCache.o \
wxscintilla_RESearch.o \
@@ -17060,6 +17065,9 @@ wxscintilla_LexBash.o: $(srcdir)/src/stc/scintilla/lexers/LexBash.cxx
wxscintilla_LexBasic.o: $(srcdir)/src/stc/scintilla/lexers/LexBasic.cxx
$(CXXC) -c -o $@ $(WXSCINTILLA_CXXFLAGS) $(srcdir)/src/stc/scintilla/lexers/LexBasic.cxx
+wxscintilla_LexBibTeX.o: $(srcdir)/src/stc/scintilla/lexers/LexBibTeX.cxx
+ $(CXXC) -c -o $@ $(WXSCINTILLA_CXXFLAGS) $(srcdir)/src/stc/scintilla/lexers/LexBibTeX.cxx
+
wxscintilla_LexBullant.o: $(srcdir)/src/stc/scintilla/lexers/LexBullant.cxx
$(CXXC) -c -o $@ $(WXSCINTILLA_CXXFLAGS) $(srcdir)/src/stc/scintilla/lexers/LexBullant.cxx
@@ -17237,6 +17245,9 @@ wxscintilla_LexR.o: $(srcdir)/src/stc/scintilla/lexers/LexR.cxx
wxscintilla_LexRebol.o: $(srcdir)/src/stc/scintilla/lexers/LexRebol.cxx
$(CXXC) -c -o $@ $(WXSCINTILLA_CXXFLAGS) $(srcdir)/src/stc/scintilla/lexers/LexRebol.cxx
+wxscintilla_LexRegistry.o: $(srcdir)/src/stc/scintilla/lexers/LexRegistry.cxx
+ $(CXXC) -c -o $@ $(WXSCINTILLA_CXXFLAGS) $(srcdir)/src/stc/scintilla/lexers/LexRegistry.cxx
+
wxscintilla_LexRuby.o: $(srcdir)/src/stc/scintilla/lexers/LexRuby.cxx
$(CXXC) -c -o $@ $(WXSCINTILLA_CXXFLAGS) $(srcdir)/src/stc/scintilla/lexers/LexRuby.cxx
@@ -17363,6 +17374,12 @@ wxscintilla_Decoration.o: $(srcdir)/src/stc/scintilla/src/Decoration.cxx
wxscintilla_Document.o: $(srcdir)/src/stc/scintilla/src/Document.cxx
$(CXXC) -c -o $@ $(WXSCINTILLA_CXXFLAGS) $(srcdir)/src/stc/scintilla/src/Document.cxx
+wxscintilla_EditModel.o: $(srcdir)/src/stc/scintilla/src/EditModel.cxx
+ $(CXXC) -c -o $@ $(WXSCINTILLA_CXXFLAGS) $(srcdir)/src/stc/scintilla/src/EditModel.cxx
+
+wxscintilla_EditView.o: $(srcdir)/src/stc/scintilla/src/EditView.cxx
+ $(CXXC) -c -o $@ $(WXSCINTILLA_CXXFLAGS) $(srcdir)/src/stc/scintilla/src/EditView.cxx
+
wxscintilla_Editor.o: $(srcdir)/src/stc/scintilla/src/Editor.cxx
$(CXXC) -c -o $@ $(WXSCINTILLA_CXXFLAGS) $(srcdir)/src/stc/scintilla/src/Editor.cxx
@@ -17378,6 +17395,9 @@ wxscintilla_KeyMap.o: $(srcdir)/src/stc/scintilla/src/KeyMap.cxx
wxscintilla_LineMarker.o: $(srcdir)/src/stc/scintilla/src/LineMarker.cxx
$(CXXC) -c -o $@ $(WXSCINTILLA_CXXFLAGS) $(srcdir)/src/stc/scintilla/src/LineMarker.cxx
+wxscintilla_MarginView.o: $(srcdir)/src/stc/scintilla/src/MarginView.cxx
+ $(CXXC) -c -o $@ $(WXSCINTILLA_CXXFLAGS) $(srcdir)/src/stc/scintilla/src/MarginView.cxx
+
wxscintilla_PerLine.o: $(srcdir)/src/stc/scintilla/src/PerLine.cxx
$(CXXC) -c -o $@ $(WXSCINTILLA_CXXFLAGS) $(srcdir)/src/stc/scintilla/src/PerLine.cxx
diff --git a/build/bakefiles/scintilla.bkl b/build/bakefiles/scintilla.bkl
index 4b3e95423b..37065e76f6 100644
--- a/build/bakefiles/scintilla.bkl
+++ b/build/bakefiles/scintilla.bkl
@@ -69,6 +69,7 @@
src/stc/scintilla/lexers/LexBaan.cxx
src/stc/scintilla/lexers/LexBash.cxx
src/stc/scintilla/lexers/LexBasic.cxx
+ src/stc/scintilla/lexers/LexBibTeX.cxx
src/stc/scintilla/lexers/LexBullant.cxx
src/stc/scintilla/lexers/LexCaml.cxx
src/stc/scintilla/lexers/LexCLW.cxx
@@ -128,6 +129,7 @@
src/stc/scintilla/lexers/LexPython.cxx
src/stc/scintilla/lexers/LexR.cxx
src/stc/scintilla/lexers/LexRebol.cxx
+ src/stc/scintilla/lexers/LexRegistry.cxx
src/stc/scintilla/lexers/LexRuby.cxx
src/stc/scintilla/lexers/LexRust.cxx
src/stc/scintilla/lexers/LexScriptol.cxx
@@ -170,11 +172,14 @@
src/stc/scintilla/src/ContractionState.cxx
src/stc/scintilla/src/Decoration.cxx
src/stc/scintilla/src/Document.cxx
+ src/stc/scintilla/src/EditModel.cxx
+ src/stc/scintilla/src/EditView.cxx
src/stc/scintilla/src/Editor.cxx
src/stc/scintilla/src/ExternalLexer.cxx
src/stc/scintilla/src/Indicator.cxx
src/stc/scintilla/src/KeyMap.cxx
src/stc/scintilla/src/LineMarker.cxx
+ src/stc/scintilla/src/MarginView.cxx
src/stc/scintilla/src/PerLine.cxx
src/stc/scintilla/src/PositionCache.cxx
src/stc/scintilla/src/RESearch.cxx
diff --git a/build/msw/makefile.bcc b/build/msw/makefile.bcc
index fdf357418f..7ac4fe1644 100644
--- a/build/msw/makefile.bcc
+++ b/build/msw/makefile.bcc
@@ -217,6 +217,7 @@ WXSCINTILLA_OBJECTS = \
$(OBJS)\wxscintilla_LexBaan.obj \
$(OBJS)\wxscintilla_LexBash.obj \
$(OBJS)\wxscintilla_LexBasic.obj \
+ $(OBJS)\wxscintilla_LexBibTeX.obj \
$(OBJS)\wxscintilla_LexBullant.obj \
$(OBJS)\wxscintilla_LexCaml.obj \
$(OBJS)\wxscintilla_LexCLW.obj \
@@ -276,6 +277,7 @@ WXSCINTILLA_OBJECTS = \
$(OBJS)\wxscintilla_LexPython.obj \
$(OBJS)\wxscintilla_LexR.obj \
$(OBJS)\wxscintilla_LexRebol.obj \
+ $(OBJS)\wxscintilla_LexRegistry.obj \
$(OBJS)\wxscintilla_LexRuby.obj \
$(OBJS)\wxscintilla_LexRust.obj \
$(OBJS)\wxscintilla_LexScriptol.obj \
@@ -318,11 +320,14 @@ WXSCINTILLA_OBJECTS = \
$(OBJS)\wxscintilla_ContractionState.obj \
$(OBJS)\wxscintilla_Decoration.obj \
$(OBJS)\wxscintilla_Document.obj \
+ $(OBJS)\wxscintilla_EditModel.obj \
+ $(OBJS)\wxscintilla_EditView.obj \
$(OBJS)\wxscintilla_Editor.obj \
$(OBJS)\wxscintilla_ExternalLexer.obj \
$(OBJS)\wxscintilla_Indicator.obj \
$(OBJS)\wxscintilla_KeyMap.obj \
$(OBJS)\wxscintilla_LineMarker.obj \
+ $(OBJS)\wxscintilla_MarginView.obj \
$(OBJS)\wxscintilla_PerLine.obj \
$(OBJS)\wxscintilla_PositionCache.obj \
$(OBJS)\wxscintilla_RESearch.obj \
@@ -5942,6 +5947,9 @@ $(OBJS)\wxscintilla_LexBash.obj: ..\..\src\stc\scintilla\lexers\LexBash.cxx
$(OBJS)\wxscintilla_LexBasic.obj: ..\..\src\stc\scintilla\lexers\LexBasic.cxx
$(CXX) -q -c -P -o$@ $(WXSCINTILLA_CXXFLAGS) ..\..\src\stc\scintilla\lexers\LexBasic.cxx
+$(OBJS)\wxscintilla_LexBibTeX.obj: ..\..\src\stc\scintilla\lexers\LexBibTeX.cxx
+ $(CXX) -q -c -P -o$@ $(WXSCINTILLA_CXXFLAGS) ..\..\src\stc\scintilla\lexers\LexBibTeX.cxx
+
$(OBJS)\wxscintilla_LexBullant.obj: ..\..\src\stc\scintilla\lexers\LexBullant.cxx
$(CXX) -q -c -P -o$@ $(WXSCINTILLA_CXXFLAGS) ..\..\src\stc\scintilla\lexers\LexBullant.cxx
@@ -6119,6 +6127,9 @@ $(OBJS)\wxscintilla_LexR.obj: ..\..\src\stc\scintilla\lexers\LexR.cxx
$(OBJS)\wxscintilla_LexRebol.obj: ..\..\src\stc\scintilla\lexers\LexRebol.cxx
$(CXX) -q -c -P -o$@ $(WXSCINTILLA_CXXFLAGS) ..\..\src\stc\scintilla\lexers\LexRebol.cxx
+$(OBJS)\wxscintilla_LexRegistry.obj: ..\..\src\stc\scintilla\lexers\LexRegistry.cxx
+ $(CXX) -q -c -P -o$@ $(WXSCINTILLA_CXXFLAGS) ..\..\src\stc\scintilla\lexers\LexRegistry.cxx
+
$(OBJS)\wxscintilla_LexRuby.obj: ..\..\src\stc\scintilla\lexers\LexRuby.cxx
$(CXX) -q -c -P -o$@ $(WXSCINTILLA_CXXFLAGS) ..\..\src\stc\scintilla\lexers\LexRuby.cxx
@@ -6245,6 +6256,12 @@ $(OBJS)\wxscintilla_Decoration.obj: ..\..\src\stc\scintilla\src\Decoration.cxx
$(OBJS)\wxscintilla_Document.obj: ..\..\src\stc\scintilla\src\Document.cxx
$(CXX) -q -c -P -o$@ $(WXSCINTILLA_CXXFLAGS) ..\..\src\stc\scintilla\src\Document.cxx
+$(OBJS)\wxscintilla_EditModel.obj: ..\..\src\stc\scintilla\src\EditModel.cxx
+ $(CXX) -q -c -P -o$@ $(WXSCINTILLA_CXXFLAGS) ..\..\src\stc\scintilla\src\EditModel.cxx
+
+$(OBJS)\wxscintilla_EditView.obj: ..\..\src\stc\scintilla\src\EditView.cxx
+ $(CXX) -q -c -P -o$@ $(WXSCINTILLA_CXXFLAGS) ..\..\src\stc\scintilla\src\EditView.cxx
+
$(OBJS)\wxscintilla_Editor.obj: ..\..\src\stc\scintilla\src\Editor.cxx
$(CXX) -q -c -P -o$@ $(WXSCINTILLA_CXXFLAGS) ..\..\src\stc\scintilla\src\Editor.cxx
@@ -6260,6 +6277,9 @@ $(OBJS)\wxscintilla_KeyMap.obj: ..\..\src\stc\scintilla\src\KeyMap.cxx
$(OBJS)\wxscintilla_LineMarker.obj: ..\..\src\stc\scintilla\src\LineMarker.cxx
$(CXX) -q -c -P -o$@ $(WXSCINTILLA_CXXFLAGS) ..\..\src\stc\scintilla\src\LineMarker.cxx
+$(OBJS)\wxscintilla_MarginView.obj: ..\..\src\stc\scintilla\src\MarginView.cxx
+ $(CXX) -q -c -P -o$@ $(WXSCINTILLA_CXXFLAGS) ..\..\src\stc\scintilla\src\MarginView.cxx
+
$(OBJS)\wxscintilla_PerLine.obj: ..\..\src\stc\scintilla\src\PerLine.cxx
$(CXX) -q -c -P -o$@ $(WXSCINTILLA_CXXFLAGS) ..\..\src\stc\scintilla\src\PerLine.cxx
diff --git a/build/msw/makefile.gcc b/build/msw/makefile.gcc
index 58de4691d8..d0d1a013c8 100644
--- a/build/msw/makefile.gcc
+++ b/build/msw/makefile.gcc
@@ -205,6 +205,7 @@ WXSCINTILLA_OBJECTS = \
$(OBJS)\wxscintilla_LexBaan.o \
$(OBJS)\wxscintilla_LexBash.o \
$(OBJS)\wxscintilla_LexBasic.o \
+ $(OBJS)\wxscintilla_LexBibTeX.o \
$(OBJS)\wxscintilla_LexBullant.o \
$(OBJS)\wxscintilla_LexCaml.o \
$(OBJS)\wxscintilla_LexCLW.o \
@@ -264,6 +265,7 @@ WXSCINTILLA_OBJECTS = \
$(OBJS)\wxscintilla_LexPython.o \
$(OBJS)\wxscintilla_LexR.o \
$(OBJS)\wxscintilla_LexRebol.o \
+ $(OBJS)\wxscintilla_LexRegistry.o \
$(OBJS)\wxscintilla_LexRuby.o \
$(OBJS)\wxscintilla_LexRust.o \
$(OBJS)\wxscintilla_LexScriptol.o \
@@ -306,11 +308,14 @@ WXSCINTILLA_OBJECTS = \
$(OBJS)\wxscintilla_ContractionState.o \
$(OBJS)\wxscintilla_Decoration.o \
$(OBJS)\wxscintilla_Document.o \
+ $(OBJS)\wxscintilla_EditModel.o \
+ $(OBJS)\wxscintilla_EditView.o \
$(OBJS)\wxscintilla_Editor.o \
$(OBJS)\wxscintilla_ExternalLexer.o \
$(OBJS)\wxscintilla_Indicator.o \
$(OBJS)\wxscintilla_KeyMap.o \
$(OBJS)\wxscintilla_LineMarker.o \
+ $(OBJS)\wxscintilla_MarginView.o \
$(OBJS)\wxscintilla_PerLine.o \
$(OBJS)\wxscintilla_PositionCache.o \
$(OBJS)\wxscintilla_RESearch.o \
@@ -6117,6 +6122,9 @@ $(OBJS)\wxscintilla_LexBash.o: ../../src/stc/scintilla/lexers/LexBash.cxx
$(OBJS)\wxscintilla_LexBasic.o: ../../src/stc/scintilla/lexers/LexBasic.cxx
$(CXX) -c -o $@ $(WXSCINTILLA_CXXFLAGS) $(CPPDEPS) $<
+$(OBJS)\wxscintilla_LexBibTeX.o: ../../src/stc/scintilla/lexers/LexBibTeX.cxx
+ $(CXX) -c -o $@ $(WXSCINTILLA_CXXFLAGS) $(CPPDEPS) $<
+
$(OBJS)\wxscintilla_LexBullant.o: ../../src/stc/scintilla/lexers/LexBullant.cxx
$(CXX) -c -o $@ $(WXSCINTILLA_CXXFLAGS) $(CPPDEPS) $<
@@ -6294,6 +6302,9 @@ $(OBJS)\wxscintilla_LexR.o: ../../src/stc/scintilla/lexers/LexR.cxx
$(OBJS)\wxscintilla_LexRebol.o: ../../src/stc/scintilla/lexers/LexRebol.cxx
$(CXX) -c -o $@ $(WXSCINTILLA_CXXFLAGS) $(CPPDEPS) $<
+$(OBJS)\wxscintilla_LexRegistry.o: ../../src/stc/scintilla/lexers/LexRegistry.cxx
+ $(CXX) -c -o $@ $(WXSCINTILLA_CXXFLAGS) $(CPPDEPS) $<
+
$(OBJS)\wxscintilla_LexRuby.o: ../../src/stc/scintilla/lexers/LexRuby.cxx
$(CXX) -c -o $@ $(WXSCINTILLA_CXXFLAGS) $(CPPDEPS) $<
@@ -6420,6 +6431,12 @@ $(OBJS)\wxscintilla_Decoration.o: ../../src/stc/scintilla/src/Decoration.cxx
$(OBJS)\wxscintilla_Document.o: ../../src/stc/scintilla/src/Document.cxx
$(CXX) -c -o $@ $(WXSCINTILLA_CXXFLAGS) $(CPPDEPS) $<
+$(OBJS)\wxscintilla_EditModel.o: ../../src/stc/scintilla/src/EditModel.cxx
+ $(CXX) -c -o $@ $(WXSCINTILLA_CXXFLAGS) $(CPPDEPS) $<
+
+$(OBJS)\wxscintilla_EditView.o: ../../src/stc/scintilla/src/EditView.cxx
+ $(CXX) -c -o $@ $(WXSCINTILLA_CXXFLAGS) $(CPPDEPS) $<
+
$(OBJS)\wxscintilla_Editor.o: ../../src/stc/scintilla/src/Editor.cxx
$(CXX) -c -o $@ $(WXSCINTILLA_CXXFLAGS) $(CPPDEPS) $<
@@ -6435,6 +6452,9 @@ $(OBJS)\wxscintilla_KeyMap.o: ../../src/stc/scintilla/src/KeyMap.cxx
$(OBJS)\wxscintilla_LineMarker.o: ../../src/stc/scintilla/src/LineMarker.cxx
$(CXX) -c -o $@ $(WXSCINTILLA_CXXFLAGS) $(CPPDEPS) $<
+$(OBJS)\wxscintilla_MarginView.o: ../../src/stc/scintilla/src/MarginView.cxx
+ $(CXX) -c -o $@ $(WXSCINTILLA_CXXFLAGS) $(CPPDEPS) $<
+
$(OBJS)\wxscintilla_PerLine.o: ../../src/stc/scintilla/src/PerLine.cxx
$(CXX) -c -o $@ $(WXSCINTILLA_CXXFLAGS) $(CPPDEPS) $<
diff --git a/build/msw/makefile.vc b/build/msw/makefile.vc
index c5dcd0812f..fe5f95662b 100644
--- a/build/msw/makefile.vc
+++ b/build/msw/makefile.vc
@@ -228,6 +228,7 @@ WXSCINTILLA_OBJECTS = \
$(OBJS)\wxscintilla_LexBaan.obj \
$(OBJS)\wxscintilla_LexBash.obj \
$(OBJS)\wxscintilla_LexBasic.obj \
+ $(OBJS)\wxscintilla_LexBibTeX.obj \
$(OBJS)\wxscintilla_LexBullant.obj \
$(OBJS)\wxscintilla_LexCaml.obj \
$(OBJS)\wxscintilla_LexCLW.obj \
@@ -287,6 +288,7 @@ WXSCINTILLA_OBJECTS = \
$(OBJS)\wxscintilla_LexPython.obj \
$(OBJS)\wxscintilla_LexR.obj \
$(OBJS)\wxscintilla_LexRebol.obj \
+ $(OBJS)\wxscintilla_LexRegistry.obj \
$(OBJS)\wxscintilla_LexRuby.obj \
$(OBJS)\wxscintilla_LexRust.obj \
$(OBJS)\wxscintilla_LexScriptol.obj \
@@ -329,11 +331,14 @@ WXSCINTILLA_OBJECTS = \
$(OBJS)\wxscintilla_ContractionState.obj \
$(OBJS)\wxscintilla_Decoration.obj \
$(OBJS)\wxscintilla_Document.obj \
+ $(OBJS)\wxscintilla_EditModel.obj \
+ $(OBJS)\wxscintilla_EditView.obj \
$(OBJS)\wxscintilla_Editor.obj \
$(OBJS)\wxscintilla_ExternalLexer.obj \
$(OBJS)\wxscintilla_Indicator.obj \
$(OBJS)\wxscintilla_KeyMap.obj \
$(OBJS)\wxscintilla_LineMarker.obj \
+ $(OBJS)\wxscintilla_MarginView.obj \
$(OBJS)\wxscintilla_PerLine.obj \
$(OBJS)\wxscintilla_PositionCache.obj \
$(OBJS)\wxscintilla_RESearch.obj \
@@ -6634,6 +6639,9 @@ $(OBJS)\wxscintilla_LexBash.obj: ..\..\src\stc\scintilla\lexers\LexBash.cxx
$(OBJS)\wxscintilla_LexBasic.obj: ..\..\src\stc\scintilla\lexers\LexBasic.cxx
$(CXX) /c /nologo /TP /Fo$@ $(WXSCINTILLA_CXXFLAGS) ..\..\src\stc\scintilla\lexers\LexBasic.cxx
+$(OBJS)\wxscintilla_LexBibTeX.obj: ..\..\src\stc\scintilla\lexers\LexBibTeX.cxx
+ $(CXX) /c /nologo /TP /Fo$@ $(WXSCINTILLA_CXXFLAGS) ..\..\src\stc\scintilla\lexers\LexBibTeX.cxx
+
$(OBJS)\wxscintilla_LexBullant.obj: ..\..\src\stc\scintilla\lexers\LexBullant.cxx
$(CXX) /c /nologo /TP /Fo$@ $(WXSCINTILLA_CXXFLAGS) ..\..\src\stc\scintilla\lexers\LexBullant.cxx
@@ -6811,6 +6819,9 @@ $(OBJS)\wxscintilla_LexR.obj: ..\..\src\stc\scintilla\lexers\LexR.cxx
$(OBJS)\wxscintilla_LexRebol.obj: ..\..\src\stc\scintilla\lexers\LexRebol.cxx
$(CXX) /c /nologo /TP /Fo$@ $(WXSCINTILLA_CXXFLAGS) ..\..\src\stc\scintilla\lexers\LexRebol.cxx
+$(OBJS)\wxscintilla_LexRegistry.obj: ..\..\src\stc\scintilla\lexers\LexRegistry.cxx
+ $(CXX) /c /nologo /TP /Fo$@ $(WXSCINTILLA_CXXFLAGS) ..\..\src\stc\scintilla\lexers\LexRegistry.cxx
+
$(OBJS)\wxscintilla_LexRuby.obj: ..\..\src\stc\scintilla\lexers\LexRuby.cxx
$(CXX) /c /nologo /TP /Fo$@ $(WXSCINTILLA_CXXFLAGS) ..\..\src\stc\scintilla\lexers\LexRuby.cxx
@@ -6937,6 +6948,12 @@ $(OBJS)\wxscintilla_Decoration.obj: ..\..\src\stc\scintilla\src\Decoration.cxx
$(OBJS)\wxscintilla_Document.obj: ..\..\src\stc\scintilla\src\Document.cxx
$(CXX) /c /nologo /TP /Fo$@ $(WXSCINTILLA_CXXFLAGS) ..\..\src\stc\scintilla\src\Document.cxx
+$(OBJS)\wxscintilla_EditModel.obj: ..\..\src\stc\scintilla\src\EditModel.cxx
+ $(CXX) /c /nologo /TP /Fo$@ $(WXSCINTILLA_CXXFLAGS) ..\..\src\stc\scintilla\src\EditModel.cxx
+
+$(OBJS)\wxscintilla_EditView.obj: ..\..\src\stc\scintilla\src\EditView.cxx
+ $(CXX) /c /nologo /TP /Fo$@ $(WXSCINTILLA_CXXFLAGS) ..\..\src\stc\scintilla\src\EditView.cxx
+
$(OBJS)\wxscintilla_Editor.obj: ..\..\src\stc\scintilla\src\Editor.cxx
$(CXX) /c /nologo /TP /Fo$@ $(WXSCINTILLA_CXXFLAGS) ..\..\src\stc\scintilla\src\Editor.cxx
@@ -6952,6 +6969,9 @@ $(OBJS)\wxscintilla_KeyMap.obj: ..\..\src\stc\scintilla\src\KeyMap.cxx
$(OBJS)\wxscintilla_LineMarker.obj: ..\..\src\stc\scintilla\src\LineMarker.cxx
$(CXX) /c /nologo /TP /Fo$@ $(WXSCINTILLA_CXXFLAGS) ..\..\src\stc\scintilla\src\LineMarker.cxx
+$(OBJS)\wxscintilla_MarginView.obj: ..\..\src\stc\scintilla\src\MarginView.cxx
+ $(CXX) /c /nologo /TP /Fo$@ $(WXSCINTILLA_CXXFLAGS) ..\..\src\stc\scintilla\src\MarginView.cxx
+
$(OBJS)\wxscintilla_PerLine.obj: ..\..\src\stc\scintilla\src\PerLine.cxx
$(CXX) /c /nologo /TP /Fo$@ $(WXSCINTILLA_CXXFLAGS) ..\..\src\stc\scintilla\src\PerLine.cxx
diff --git a/build/msw/wx_vc7_wxscintilla.vcproj b/build/msw/wx_vc7_wxscintilla.vcproj
index 76fefd019b..90af102689 100644
--- a/build/msw/wx_vc7_wxscintilla.vcproj
+++ b/build/msw/wx_vc7_wxscintilla.vcproj
@@ -286,6 +286,12 @@
+
+
+
+
@@ -337,6 +343,9 @@
+
+
@@ -514,6 +523,9 @@
+
+
@@ -595,6 +607,9 @@
+
+
diff --git a/build/msw/wx_vc8_wxscintilla.vcproj b/build/msw/wx_vc8_wxscintilla.vcproj
index a0226156d7..418e0fe9c9 100644
--- a/build/msw/wx_vc8_wxscintilla.vcproj
+++ b/build/msw/wx_vc8_wxscintilla.vcproj
@@ -730,6 +730,14 @@
RelativePath="..\..\src\stc\scintilla\src\Document.cxx"
>
+
+
+
+
@@ -798,6 +806,10 @@
RelativePath="..\..\src\stc\scintilla\lexers\LexBasic.cxx"
>
+
+
@@ -1034,6 +1046,10 @@
RelativePath="..\..\src\stc\scintilla\lexers\LexRebol.cxx"
>
+
+
@@ -1142,6 +1158,10 @@
RelativePath="..\..\src\stc\scintilla\src\LineMarker.cxx"
>
+
+
diff --git a/build/msw/wx_vc9_wxscintilla.vcproj b/build/msw/wx_vc9_wxscintilla.vcproj
index 9d36c7afba..479161d738 100644
--- a/build/msw/wx_vc9_wxscintilla.vcproj
+++ b/build/msw/wx_vc9_wxscintilla.vcproj
@@ -726,6 +726,14 @@
RelativePath="..\..\src\stc\scintilla\src\Document.cxx"
>
+
+
+
+
@@ -794,6 +802,10 @@
RelativePath="..\..\src\stc\scintilla\lexers\LexBasic.cxx"
>
+
+
@@ -1030,6 +1042,10 @@
RelativePath="..\..\src\stc\scintilla\lexers\LexRebol.cxx"
>
+
+
@@ -1138,6 +1154,10 @@
RelativePath="..\..\src\stc\scintilla\src\LineMarker.cxx"
>
+
+
diff --git a/include/wx/stc/stc.h b/include/wx/stc/stc.h
index a06899cb71..381596251d 100644
--- a/include/wx/stc/stc.h
+++ b/include/wx/stc/stc.h
@@ -75,6 +75,8 @@ class WXDLLIMPEXP_FWD_CORE wxScrollBar;
/// The SC_CP_UTF8 value can be used to enter Unicode mode.
/// This is the same value as CP_UTF8 in Windows
#define wxSTC_CP_UTF8 65001
+#define wxSTC_IME_WINDOWED 0
+#define wxSTC_IME_INLINE 1
#define wxSTC_MARKER_MAX 31
#define wxSTC_MARK_CIRCLE 0
#define wxSTC_MARK_ROUNDRECT 1
@@ -190,7 +192,9 @@ class WXDLLIMPEXP_FWD_CORE wxScrollBar;
#define wxSTC_INDIC_DOTBOX 12
#define wxSTC_INDIC_SQUIGGLEPIXMAP 13
#define wxSTC_INDIC_COMPOSITIONTHICK 14
-#define wxSTC_INDIC_MAX 31
+#define wxSTC_INDIC_IME 32
+#define wxSTC_INDIC_IME_MAX 35
+#define wxSTC_INDIC_MAX 35
#define wxSTC_INDIC_CONTAINER 8
#define wxSTC_INDIC0_MASK 0x20
#define wxSTC_INDIC1_MASK 0x40
@@ -220,6 +224,7 @@ class WXDLLIMPEXP_FWD_CORE wxScrollBar;
#define wxSTC_FIND_WORDSTART 0x00100000
#define wxSTC_FIND_REGEXP 0x00200000
#define wxSTC_FIND_POSIX 0x00400000
+#define wxSTC_FIND_CXX11REGEX 0x00800000
#define wxSTC_FOLDLEVELBASE 0x400
#define wxSTC_FOLDLEVELWHITEFLAG 0x1000
#define wxSTC_FOLDLEVELHEADERFLAG 0x2000
@@ -255,6 +260,9 @@ class WXDLLIMPEXP_FWD_CORE wxScrollBar;
#define wxSTC_CACHE_CARET 1
#define wxSTC_CACHE_PAGE 2
#define wxSTC_CACHE_DOCUMENT 3
+#define wxSTC_PHASES_ONE 0
+#define wxSTC_PHASES_TWO 1
+#define wxSTC_PHASES_MULTIPLE 2
/// Control font anti-aliasing.
#define wxSTC_EFF_QUALITY_MASK 0xF
@@ -270,6 +278,8 @@ class WXDLLIMPEXP_FWD_CORE wxScrollBar;
#define wxSTC_STATUS_OK 0
#define wxSTC_STATUS_FAILURE 1
#define wxSTC_STATUS_BADALLOC 2
+#define wxSTC_STATUS_WARN_START 1000
+#define wxSTC_STATUS_WARN_REGEX 1001
#define wxSTC_CURSORNORMAL -1
#define wxSTC_CURSORARROW 2
#define wxSTC_CURSORWAIT 4
@@ -329,12 +339,15 @@ class WXDLLIMPEXP_FWD_CORE wxScrollBar;
#define wxSTC_ANNOTATION_HIDDEN 0
#define wxSTC_ANNOTATION_STANDARD 1
#define wxSTC_ANNOTATION_BOXED 2
+#define wxSTC_ANNOTATION_INDENTED 3
#define wxSTC_UNDO_MAY_COALESCE 1
#define wxSTC_SCVS_NONE 0
#define wxSTC_SCVS_RECTANGULARSELECTION 1
#define wxSTC_SCVS_USERACCESSIBLE 2
#define wxSTC_TECHNOLOGY_DEFAULT 0
#define wxSTC_TECHNOLOGY_DIRECTWRITE 1
+#define wxSTC_TECHNOLOGY_DIRECTWRITERETAIN 2
+#define wxSTC_TECHNOLOGY_DIRECTWRITEDC 3
/// Line end types which may be used in addition to LF, CR, and CRLF
/// SC_LINE_END_TYPE_UNICODE includes U+2028 Line Separator,
@@ -373,7 +386,8 @@ class WXDLLIMPEXP_FWD_CORE wxScrollBar;
#define wxSTC_MOD_CONTAINER 0x40000
#define wxSTC_MOD_LEXERSTATE 0x80000
#define wxSTC_MOD_INSERTCHECK 0x100000
-#define wxSTC_MODEVENTMASKALL 0x1FFFFF
+#define wxSTC_MOD_CHANGETABSTOPS 0x200000
+#define wxSTC_MODEVENTMASKALL 0x3FFFFF
#define wxSTC_UPDATE_CONTENT 0x1
#define wxSTC_UPDATE_SELECTION 0x2
#define wxSTC_UPDATE_V_SCROLL 0x4
@@ -523,6 +537,8 @@ class WXDLLIMPEXP_FWD_CORE wxScrollBar;
#define wxSTC_LEX_DMAP 112
#define wxSTC_LEX_AS 113
#define wxSTC_LEX_DMIS 114
+#define wxSTC_LEX_REGISTRY 115
+#define wxSTC_LEX_BIBTEX 116
/// When a lexer specifies its language as SCLEX_AUTOMATIC it receives a
/// value assigned in sequence from SCLEX_AUTOMATIC+1.
@@ -1418,6 +1434,7 @@ class WXDLLIMPEXP_FWD_CORE wxScrollBar;
#define wxSTC_KIX_KEYWORD 7
#define wxSTC_KIX_FUNCTIONS 8
#define wxSTC_KIX_OPERATOR 9
+#define wxSTC_KIX_COMMENTSTREAM 10
#define wxSTC_KIX_IDENTIFIER 31
/// Lexical states for SCLEX_GUI4CLI
@@ -1528,6 +1545,7 @@ class WXDLLIMPEXP_FWD_CORE wxScrollBar;
#define wxSTC_VHDL_STDPACKAGE 12
#define wxSTC_VHDL_STDTYPE 13
#define wxSTC_VHDL_USERWORD 14
+#define wxSTC_VHDL_BLOCK_COMMENT 15
/// Lexical states for SCLEX_CAML
#define wxSTC_CAML_DEFAULT 0
@@ -1649,6 +1667,7 @@ class WXDLLIMPEXP_FWD_CORE wxScrollBar;
#define wxSTC_SQL_USER3 21
#define wxSTC_SQL_USER4 22
#define wxSTC_SQL_QUOTEDIDENTIFIER 23
+#define wxSTC_SQL_QOPERATOR 24
/// Lexical states for SCLEX_SMALLTALK
#define wxSTC_ST_DEFAULT 0
@@ -2294,6 +2313,9 @@ class WXDLLIMPEXP_FWD_CORE wxScrollBar;
#define wxSTC_RUST_LIFETIME 18
#define wxSTC_RUST_MACRO 19
#define wxSTC_RUST_LEXERROR 20
+#define wxSTC_RUST_BYTESTRING 21
+#define wxSTC_RUST_BYTESTRINGR 22
+#define wxSTC_RUST_BYTECHARACTER 23
/// Lexical states for SCLEX_DMAP
#define wxSTC_DMAP_DEFAULT 0
@@ -2320,6 +2342,30 @@ class WXDLLIMPEXP_FWD_CORE wxScrollBar;
#define wxSTC_DMIS_UNSUPPORTED_MINOR 8
#define wxSTC_DMIS_LABEL 9
+/// Lexical states for SCLEX_REGISTRY
+#define wxSTC_REG_DEFAULT 0
+#define wxSTC_REG_COMMENT 1
+#define wxSTC_REG_VALUENAME 2
+#define wxSTC_REG_STRING 3
+#define wxSTC_REG_HEXDIGIT 4
+#define wxSTC_REG_VALUETYPE 5
+#define wxSTC_REG_ADDEDKEY 6
+#define wxSTC_REG_DELETEDKEY 7
+#define wxSTC_REG_ESCAPED 8
+#define wxSTC_REG_KEYPATH_GUID 9
+#define wxSTC_REG_STRING_GUID 10
+#define wxSTC_REG_PARAMETER 11
+#define wxSTC_REG_OPERATOR 12
+
+/// Lexical state for SCLEX_BIBTEX
+#define wxSTC_BIBTEX_DEFAULT 0
+#define wxSTC_BIBTEX_ENTRY 1
+#define wxSTC_BIBTEX_UNKNOWN_ENTRY 2
+#define wxSTC_BIBTEX_KEY 3
+#define wxSTC_BIBTEX_PARAMETER 4
+#define wxSTC_BIBTEX_VALUE 5
+#define wxSTC_BIBTEX_COMMENT 6
+
//}}}
//----------------------------------------------------------------------
@@ -2806,9 +2852,24 @@ public:
// Retrieve the visible size of a tab.
int GetTabWidth() const;
+ // Clear explicit tabstops on a line.
+ void ClearTabStops(int line);
+
+ // Add an explicit tab stop for a line.
+ void AddTabStop(int line, int x);
+
+ // Find the next explicit tab stop position on a line after a position.
+ int GetNextTabStop(int line, int x);
+
// Set the code page used to interpret the bytes of the document as characters.
void SetCodePage(int codePage);
+ // Is the IME displayed in a winow or inline?
+ int GetIMEInteraction() const;
+
+ // Choose to display the the IME in a winow or inline.
+ void SetIMEInteraction(int imeInteraction);
+
// Set the symbol used for a particular marker number,
// and optionally the fore and background colours.
void MarkerDefine(int markerNumber, int markerSymbol,
@@ -3632,13 +3693,22 @@ public:
// Append a string to the end of the document without changing the selection.
void AppendText(const wxString& text);
- // Is drawing done in two phases with backgrounds drawn before faoregrounds?
+ // Is drawing done in two phases with backgrounds drawn before foregrounds?
bool GetTwoPhaseDraw() const;
// In twoPhaseDraw mode, drawing is performed in two phases, first the background
// and then the foreground. This avoids chopping off characters that overlap the next run.
void SetTwoPhaseDraw(bool twoPhase);
+ // How many phases is drawing done in?
+ int GetPhasesDraw() const;
+
+ // In one phase draw, text is drawn in a series of rectangular blocks with no overlap.
+ // In two phase draw, text is drawn in a series of lines allowing runs to overlap horizontally.
+ // In multiple phase draw, each element is drawn over the whole drawing area, allowing text
+ // to overlap from one line to the next.
+ void SetPhasesDraw(int phases);
+
// Scroll so that a display line is at the top of the display.
void SetFirstVisibleLine(int lineDisplay);
diff --git a/interface/wx/stc/stc.h b/interface/wx/stc/stc.h
index 31dda9f42d..80f4a21676 100644
--- a/interface/wx/stc/stc.h
+++ b/interface/wx/stc/stc.h
@@ -31,6 +31,8 @@
/// The SC_CP_UTF8 value can be used to enter Unicode mode.
/// This is the same value as CP_UTF8 in Windows
#define wxSTC_CP_UTF8 65001
+#define wxSTC_IME_WINDOWED 0
+#define wxSTC_IME_INLINE 1
#define wxSTC_MARKER_MAX 31
#define wxSTC_MARK_CIRCLE 0
#define wxSTC_MARK_ROUNDRECT 1
@@ -146,7 +148,9 @@
#define wxSTC_INDIC_DOTBOX 12
#define wxSTC_INDIC_SQUIGGLEPIXMAP 13
#define wxSTC_INDIC_COMPOSITIONTHICK 14
-#define wxSTC_INDIC_MAX 31
+#define wxSTC_INDIC_IME 32
+#define wxSTC_INDIC_IME_MAX 35
+#define wxSTC_INDIC_MAX 35
#define wxSTC_INDIC_CONTAINER 8
#define wxSTC_INDIC0_MASK 0x20
#define wxSTC_INDIC1_MASK 0x40
@@ -176,6 +180,7 @@
#define wxSTC_FIND_WORDSTART 0x00100000
#define wxSTC_FIND_REGEXP 0x00200000
#define wxSTC_FIND_POSIX 0x00400000
+#define wxSTC_FIND_CXX11REGEX 0x00800000
#define wxSTC_FOLDLEVELBASE 0x400
#define wxSTC_FOLDLEVELWHITEFLAG 0x1000
#define wxSTC_FOLDLEVELHEADERFLAG 0x2000
@@ -211,6 +216,9 @@
#define wxSTC_CACHE_CARET 1
#define wxSTC_CACHE_PAGE 2
#define wxSTC_CACHE_DOCUMENT 3
+#define wxSTC_PHASES_ONE 0
+#define wxSTC_PHASES_TWO 1
+#define wxSTC_PHASES_MULTIPLE 2
/// Control font anti-aliasing.
#define wxSTC_EFF_QUALITY_MASK 0xF
@@ -226,6 +234,8 @@
#define wxSTC_STATUS_OK 0
#define wxSTC_STATUS_FAILURE 1
#define wxSTC_STATUS_BADALLOC 2
+#define wxSTC_STATUS_WARN_START 1000
+#define wxSTC_STATUS_WARN_REGEX 1001
#define wxSTC_CURSORNORMAL -1
#define wxSTC_CURSORARROW 2
#define wxSTC_CURSORWAIT 4
@@ -285,12 +295,15 @@
#define wxSTC_ANNOTATION_HIDDEN 0
#define wxSTC_ANNOTATION_STANDARD 1
#define wxSTC_ANNOTATION_BOXED 2
+#define wxSTC_ANNOTATION_INDENTED 3
#define wxSTC_UNDO_MAY_COALESCE 1
#define wxSTC_SCVS_NONE 0
#define wxSTC_SCVS_RECTANGULARSELECTION 1
#define wxSTC_SCVS_USERACCESSIBLE 2
#define wxSTC_TECHNOLOGY_DEFAULT 0
#define wxSTC_TECHNOLOGY_DIRECTWRITE 1
+#define wxSTC_TECHNOLOGY_DIRECTWRITERETAIN 2
+#define wxSTC_TECHNOLOGY_DIRECTWRITEDC 3
/// Line end types which may be used in addition to LF, CR, and CRLF
/// SC_LINE_END_TYPE_UNICODE includes U+2028 Line Separator,
@@ -329,7 +342,8 @@
#define wxSTC_MOD_CONTAINER 0x40000
#define wxSTC_MOD_LEXERSTATE 0x80000
#define wxSTC_MOD_INSERTCHECK 0x100000
-#define wxSTC_MODEVENTMASKALL 0x1FFFFF
+#define wxSTC_MOD_CHANGETABSTOPS 0x200000
+#define wxSTC_MODEVENTMASKALL 0x3FFFFF
#define wxSTC_UPDATE_CONTENT 0x1
#define wxSTC_UPDATE_SELECTION 0x2
#define wxSTC_UPDATE_V_SCROLL 0x4
@@ -479,6 +493,8 @@
#define wxSTC_LEX_DMAP 112
#define wxSTC_LEX_AS 113
#define wxSTC_LEX_DMIS 114
+#define wxSTC_LEX_REGISTRY 115
+#define wxSTC_LEX_BIBTEX 116
/// When a lexer specifies its language as SCLEX_AUTOMATIC it receives a
/// value assigned in sequence from SCLEX_AUTOMATIC+1.
@@ -1374,6 +1390,7 @@
#define wxSTC_KIX_KEYWORD 7
#define wxSTC_KIX_FUNCTIONS 8
#define wxSTC_KIX_OPERATOR 9
+#define wxSTC_KIX_COMMENTSTREAM 10
#define wxSTC_KIX_IDENTIFIER 31
/// Lexical states for SCLEX_GUI4CLI
@@ -1484,6 +1501,7 @@
#define wxSTC_VHDL_STDPACKAGE 12
#define wxSTC_VHDL_STDTYPE 13
#define wxSTC_VHDL_USERWORD 14
+#define wxSTC_VHDL_BLOCK_COMMENT 15
/// Lexical states for SCLEX_CAML
#define wxSTC_CAML_DEFAULT 0
@@ -1605,6 +1623,7 @@
#define wxSTC_SQL_USER3 21
#define wxSTC_SQL_USER4 22
#define wxSTC_SQL_QUOTEDIDENTIFIER 23
+#define wxSTC_SQL_QOPERATOR 24
/// Lexical states for SCLEX_SMALLTALK
#define wxSTC_ST_DEFAULT 0
@@ -2250,6 +2269,9 @@
#define wxSTC_RUST_LIFETIME 18
#define wxSTC_RUST_MACRO 19
#define wxSTC_RUST_LEXERROR 20
+#define wxSTC_RUST_BYTESTRING 21
+#define wxSTC_RUST_BYTESTRINGR 22
+#define wxSTC_RUST_BYTECHARACTER 23
/// Lexical states for SCLEX_DMAP
#define wxSTC_DMAP_DEFAULT 0
@@ -2276,6 +2298,30 @@
#define wxSTC_DMIS_UNSUPPORTED_MINOR 8
#define wxSTC_DMIS_LABEL 9
+/// Lexical states for SCLEX_REGISTRY
+#define wxSTC_REG_DEFAULT 0
+#define wxSTC_REG_COMMENT 1
+#define wxSTC_REG_VALUENAME 2
+#define wxSTC_REG_STRING 3
+#define wxSTC_REG_HEXDIGIT 4
+#define wxSTC_REG_VALUETYPE 5
+#define wxSTC_REG_ADDEDKEY 6
+#define wxSTC_REG_DELETEDKEY 7
+#define wxSTC_REG_ESCAPED 8
+#define wxSTC_REG_KEYPATH_GUID 9
+#define wxSTC_REG_STRING_GUID 10
+#define wxSTC_REG_PARAMETER 11
+#define wxSTC_REG_OPERATOR 12
+
+/// Lexical state for SCLEX_BIBTEX
+#define wxSTC_BIBTEX_DEFAULT 0
+#define wxSTC_BIBTEX_ENTRY 1
+#define wxSTC_BIBTEX_UNKNOWN_ENTRY 2
+#define wxSTC_BIBTEX_KEY 3
+#define wxSTC_BIBTEX_PARAMETER 4
+#define wxSTC_BIBTEX_VALUE 5
+#define wxSTC_BIBTEX_COMMENT 6
+
//}}}
// Commands that can be bound to keystrokes {{{
@@ -2916,11 +2962,36 @@ public:
*/
int GetTabWidth() const;
+ /**
+ Clear explicit tabstops on a line.
+ */
+ void ClearTabStops(int line);
+
+ /**
+ Add an explicit tab stop for a line.
+ */
+ void AddTabStop(int line, int x);
+
+ /**
+ Find the next explicit tab stop position on a line after a position.
+ */
+ int GetNextTabStop(int line, int x);
+
/**
Set the code page used to interpret the bytes of the document as characters.
*/
void SetCodePage(int codePage);
+ /**
+ Is the IME displayed in a winow or inline?
+ */
+ int GetIMEInteraction() const;
+
+ /**
+ Choose to display the the IME in a winow or inline.
+ */
+ void SetIMEInteraction(int imeInteraction);
+
/**
Set the symbol used for a particular marker number,
and optionally the fore and background colours.
@@ -4261,7 +4332,7 @@ public:
void AppendText(const wxString& text);
/**
- Is drawing done in two phases with backgrounds drawn before faoregrounds?
+ Is drawing done in two phases with backgrounds drawn before foregrounds?
*/
bool GetTwoPhaseDraw() const;
@@ -4271,6 +4342,19 @@ public:
*/
void SetTwoPhaseDraw(bool twoPhase);
+ /**
+ How many phases is drawing done in?
+ */
+ int GetPhasesDraw() const;
+
+ /**
+ In one phase draw, text is drawn in a series of rectangular blocks with no overlap.
+ In two phase draw, text is drawn in a series of lines allowing runs to overlap horizontally.
+ In multiple phase draw, each element is drawn over the whole drawing area, allowing text
+ to overlap from one line to the next.
+ */
+ void SetPhasesDraw(int phases);
+
/**
Scroll so that a display line is at the top of the display.
*/
diff --git a/src/stc/scintilla/README.txt b/src/stc/scintilla/README.txt
index fe78ff9e85..94198e0a47 100644
--- a/src/stc/scintilla/README.txt
+++ b/src/stc/scintilla/README.txt
@@ -3,7 +3,7 @@ directories from the Scintilla source distribution. All other code
needed to implement Scintilla on top of wxWidgets is located in the
directory above this one.
-The current version of the Scintilla code is 3.4.4
+The current version of the Scintilla code is 3.5.2
These are the basic steps needed to update the version of Scintilla used by wxSTC.
diff --git a/src/stc/scintilla/include/SciLexer.h b/src/stc/scintilla/include/SciLexer.h
index 54cc8ba7ef..dc75a98b6a 100644
--- a/src/stc/scintilla/include/SciLexer.h
+++ b/src/stc/scintilla/include/SciLexer.h
@@ -127,6 +127,8 @@
#define SCLEX_DMAP 112
#define SCLEX_AS 113
#define SCLEX_DMIS 114
+#define SCLEX_REGISTRY 115
+#define SCLEX_BIBTEX 116
#define SCLEX_AUTOMATIC 1000
#define SCE_P_DEFAULT 0
#define SCE_P_COMMENTLINE 1
@@ -906,6 +908,7 @@
#define SCE_KIX_KEYWORD 7
#define SCE_KIX_FUNCTIONS 8
#define SCE_KIX_OPERATOR 9
+#define SCE_KIX_COMMENTSTREAM 10
#define SCE_KIX_IDENTIFIER 31
#define SCE_GC_DEFAULT 0
#define SCE_GC_COMMENTLINE 1
@@ -1002,6 +1005,7 @@
#define SCE_VHDL_STDPACKAGE 12
#define SCE_VHDL_STDTYPE 13
#define SCE_VHDL_USERWORD 14
+#define SCE_VHDL_BLOCK_COMMENT 15
#define SCE_CAML_DEFAULT 0
#define SCE_CAML_IDENTIFIER 1
#define SCE_CAML_TAGNAME 2
@@ -1113,6 +1117,7 @@
#define SCE_SQL_USER3 21
#define SCE_SQL_USER4 22
#define SCE_SQL_QUOTEDIDENTIFIER 23
+#define SCE_SQL_QOPERATOR 24
#define SCE_ST_DEFAULT 0
#define SCE_ST_STRING 1
#define SCE_ST_NUMBER 2
@@ -1692,6 +1697,9 @@
#define SCE_RUST_LIFETIME 18
#define SCE_RUST_MACRO 19
#define SCE_RUST_LEXERROR 20
+#define SCE_RUST_BYTESTRING 21
+#define SCE_RUST_BYTESTRINGR 22
+#define SCE_RUST_BYTECHARACTER 23
#define SCE_DMAP_DEFAULT 0
#define SCE_DMAP_COMMENT 1
#define SCE_DMAP_NUMBER 2
@@ -1713,6 +1721,26 @@
#define SCE_DMIS_UNSUPPORTED_MAJOR 7
#define SCE_DMIS_UNSUPPORTED_MINOR 8
#define SCE_DMIS_LABEL 9
+#define SCE_REG_DEFAULT 0
+#define SCE_REG_COMMENT 1
+#define SCE_REG_VALUENAME 2
+#define SCE_REG_STRING 3
+#define SCE_REG_HEXDIGIT 4
+#define SCE_REG_VALUETYPE 5
+#define SCE_REG_ADDEDKEY 6
+#define SCE_REG_DELETEDKEY 7
+#define SCE_REG_ESCAPED 8
+#define SCE_REG_KEYPATH_GUID 9
+#define SCE_REG_STRING_GUID 10
+#define SCE_REG_PARAMETER 11
+#define SCE_REG_OPERATOR 12
+#define SCE_BIBTEX_DEFAULT 0
+#define SCE_BIBTEX_ENTRY 1
+#define SCE_BIBTEX_UNKNOWN_ENTRY 2
+#define SCE_BIBTEX_KEY 3
+#define SCE_BIBTEX_PARAMETER 4
+#define SCE_BIBTEX_VALUE 5
+#define SCE_BIBTEX_COMMENT 6
/* --Autogenerated -- end of section automatically generated from Scintilla.iface */
#endif
diff --git a/src/stc/scintilla/include/Scintilla.h b/src/stc/scintilla/include/Scintilla.h
index a769398d8a..6fc75c3696 100644
--- a/src/stc/scintilla/include/Scintilla.h
+++ b/src/stc/scintilla/include/Scintilla.h
@@ -18,9 +18,9 @@ extern "C" {
#if defined(_WIN32)
/* Return false on failure: */
int Scintilla_RegisterClasses(void *hInstance);
-int Scintilla_ReleaseResources();
+int Scintilla_ReleaseResources(void);
#endif
-int Scintilla_LinkLexers();
+int Scintilla_LinkLexers(void);
#ifdef __cplusplus
}
@@ -103,8 +103,15 @@ inline int isascii(int c) { return !(c & ~0x7F); }
#define SCI_SETBUFFEREDDRAW 2035
#define SCI_SETTABWIDTH 2036
#define SCI_GETTABWIDTH 2121
+#define SCI_CLEARTABSTOPS 2675
+#define SCI_ADDTABSTOP 2676
+#define SCI_GETNEXTTABSTOP 2677
#define SC_CP_UTF8 65001
#define SCI_SETCODEPAGE 2037
+#define SC_IME_WINDOWED 0
+#define SC_IME_INLINE 1
+#define SCI_GETIMEINTERACTION 2678
+#define SCI_SETIMEINTERACTION 2679
#define MARKER_MAX 31
#define SC_MARK_CIRCLE 0
#define SC_MARK_ROUNDRECT 1
@@ -278,7 +285,9 @@ inline int isascii(int c) { return !(c & ~0x7F); }
#define INDIC_DOTBOX 12
#define INDIC_SQUIGGLEPIXMAP 13
#define INDIC_COMPOSITIONTHICK 14
-#define INDIC_MAX 31
+#define INDIC_IME 32
+#define INDIC_IME_MAX 35
+#define INDIC_MAX 35
#define INDIC_CONTAINER 8
#define INDIC0_MASK 0x20
#define INDIC1_MASK 0x40
@@ -376,6 +385,7 @@ inline int isascii(int c) { return !(c & ~0x7F); }
#define SCFIND_WORDSTART 0x00100000
#define SCFIND_REGEXP 0x00200000
#define SCFIND_POSIX 0x00400000
+#define SCFIND_CXX11REGEX 0x00800000
#define SCI_FINDTEXT 2150
#define SCI_FORMATRANGE 2151
#define SCI_GETFIRSTVISIBLELINE 2152
@@ -528,6 +538,11 @@ inline int isascii(int c) { return !(c & ~0x7F); }
#define SCI_APPENDTEXT 2282
#define SCI_GETTWOPHASEDRAW 2283
#define SCI_SETTWOPHASEDRAW 2284
+#define SC_PHASES_ONE 0
+#define SC_PHASES_TWO 1
+#define SC_PHASES_MULTIPLE 2
+#define SCI_GETPHASESDRAW 2673
+#define SCI_SETPHASESDRAW 2674
#define SC_EFF_QUALITY_MASK 0xF
#define SC_EFF_QUALITY_DEFAULT 0
#define SC_EFF_QUALITY_NON_ANTIALIASED 1
@@ -642,6 +657,8 @@ inline int isascii(int c) { return !(c & ~0x7F); }
#define SC_STATUS_OK 0
#define SC_STATUS_FAILURE 1
#define SC_STATUS_BADALLOC 2
+#define SC_STATUS_WARN_START 1000
+#define SC_STATUS_WARN_REGEX 1001
#define SCI_SETSTATUS 2382
#define SCI_GETSTATUS 2383
#define SCI_SETMOUSEDOWNCAPTURES 2384
@@ -812,6 +829,7 @@ inline int isascii(int c) { return !(c & ~0x7F); }
#define ANNOTATION_HIDDEN 0
#define ANNOTATION_STANDARD 1
#define ANNOTATION_BOXED 2
+#define ANNOTATION_INDENTED 3
#define SCI_ANNOTATIONSETVISIBLE 2548
#define SCI_ANNOTATIONGETVISIBLE 2549
#define SCI_ANNOTATIONSETSTYLEOFFSET 2550
@@ -891,6 +909,8 @@ inline int isascii(int c) { return !(c & ~0x7F); }
#define SCI_SCROLLTOEND 2629
#define SC_TECHNOLOGY_DEFAULT 0
#define SC_TECHNOLOGY_DIRECTWRITE 1
+#define SC_TECHNOLOGY_DIRECTWRITERETAIN 2
+#define SC_TECHNOLOGY_DIRECTWRITEDC 3
#define SCI_SETTECHNOLOGY 2630
#define SCI_GETTECHNOLOGY 2631
#define SCI_CREATELOADER 2632
@@ -963,7 +983,8 @@ inline int isascii(int c) { return !(c & ~0x7F); }
#define SC_MOD_CONTAINER 0x40000
#define SC_MOD_LEXERSTATE 0x80000
#define SC_MOD_INSERTCHECK 0x100000
-#define SC_MODEVENTMASKALL 0x1FFFFF
+#define SC_MOD_CHANGETABSTOPS 0x200000
+#define SC_MODEVENTMASKALL 0x3FFFFF
#define SC_UPDATE_CONTENT 0x1
#define SC_UPDATE_SELECTION 0x2
#define SC_UPDATE_V_SCROLL 0x4
diff --git a/src/stc/scintilla/include/Scintilla.iface b/src/stc/scintilla/include/Scintilla.iface
index 3e5f51b9cf..ca54c65ee8 100644
--- a/src/stc/scintilla/include/Scintilla.iface
+++ b/src/stc/scintilla/include/Scintilla.iface
@@ -226,6 +226,15 @@ set void SetTabWidth=2036(int tabWidth,)
# Retrieve the visible size of a tab.
get int GetTabWidth=2121(,)
+# Clear explicit tabstops on a line.
+fun void ClearTabStops=2675(int line,)
+
+# Add an explicit tab stop for a line.
+fun void AddTabStop=2676(int line, int x)
+
+# Find the next explicit tab stop position on a line after a position.
+fun int GetNextTabStop=2677(int line, int x)
+
# The SC_CP_UTF8 value can be used to enter Unicode mode.
# This is the same value as CP_UTF8 in Windows
val SC_CP_UTF8=65001
@@ -234,6 +243,16 @@ val SC_CP_UTF8=65001
# The SC_CP_UTF8 value can be used to enter Unicode mode.
set void SetCodePage=2037(int codePage,)
+enu IMEInteraction=SC_IME_
+val SC_IME_WINDOWED=0
+val SC_IME_INLINE=1
+
+# Is the IME displayed in a winow or inline?
+get int GetIMEInteraction=2678(,)
+
+# Choose to display the the IME in a winow or inline.
+set void SetIMEInteraction=2679(int imeInteraction,)
+
enu MarkerSymbol=SC_MARK_
val MARKER_MAX=31
val SC_MARK_CIRCLE=0
@@ -586,7 +605,9 @@ val INDIC_SQUIGGLELOW=11
val INDIC_DOTBOX=12
val INDIC_SQUIGGLEPIXMAP=13
val INDIC_COMPOSITIONTHICK=14
-val INDIC_MAX=31
+val INDIC_IME=32
+val INDIC_IME_MAX=35
+val INDIC_MAX=35
val INDIC_CONTAINER=8
val INDIC0_MASK=0x20
val INDIC1_MASK=0x40
@@ -865,6 +886,7 @@ val SCFIND_MATCHCASE=0x4
val SCFIND_WORDSTART=0x00100000
val SCFIND_REGEXP=0x00200000
val SCFIND_POSIX=0x00400000
+val SCFIND_CXX11REGEX=0x00800000
# Find some text in the document.
fun position FindText=2150(int flags, findtext ft)
@@ -1291,13 +1313,27 @@ get bool GetVScrollBar=2281(,)
# Append a string to the end of the document without changing the selection.
fun void AppendText=2282(int length, string text)
-# Is drawing done in two phases with backgrounds drawn before faoregrounds?
+# Is drawing done in two phases with backgrounds drawn before foregrounds?
get bool GetTwoPhaseDraw=2283(,)
# In twoPhaseDraw mode, drawing is performed in two phases, first the background
# and then the foreground. This avoids chopping off characters that overlap the next run.
set void SetTwoPhaseDraw=2284(bool twoPhase,)
+enu FontQuality=SC_PHASES_
+val SC_PHASES_ONE=0
+val SC_PHASES_TWO=1
+val SC_PHASES_MULTIPLE=2
+
+# How many phases is drawing done in?
+get int GetPhasesDraw=2673(,)
+
+# In one phase draw, text is drawn in a series of rectangular blocks with no overlap.
+# In two phase draw, text is drawn in a series of lines allowing runs to overlap horizontally.
+# In multiple phase draw, each element is drawn over the whole drawing area, allowing text
+# to overlap from one line to the next.
+set void SetPhasesDraw=2674(int phases,)
+
# Control font anti-aliasing.
enu FontQuality=SC_EFF_
@@ -1628,6 +1664,8 @@ enu Status=SC_STATUS_
val SC_STATUS_OK=0
val SC_STATUS_FAILURE=1
val SC_STATUS_BADALLOC=2
+val SC_STATUS_WARN_START=1000
+val SC_STATUS_WARN_REGEX=1001
# Change error status - 0 = OK.
set void SetStatus=2382(int statusCode,)
@@ -2119,6 +2157,7 @@ enu AnnotationVisible=ANNOTATION_
val ANNOTATION_HIDDEN=0
val ANNOTATION_STANDARD=1
val ANNOTATION_BOXED=2
+val ANNOTATION_INDENTED=3
# Set the visibility for the annotations for a view
set void AnnotationSetVisible=2548(int visible,)
@@ -2326,6 +2365,8 @@ fun void ScrollToEnd=2629(,)
val SC_TECHNOLOGY_DEFAULT=0
val SC_TECHNOLOGY_DIRECTWRITE=1
+val SC_TECHNOLOGY_DIRECTWRITERETAIN=2
+val SC_TECHNOLOGY_DIRECTWRITEDC=3
# Set the technology used.
set void SetTechnology=2630(int technology,)
@@ -2509,7 +2550,8 @@ val SC_MOD_CHANGEANNOTATION=0x20000
val SC_MOD_CONTAINER=0x40000
val SC_MOD_LEXERSTATE=0x80000
val SC_MOD_INSERTCHECK=0x100000
-val SC_MODEVENTMASKALL=0x1FFFFF
+val SC_MOD_CHANGETABSTOPS=0x200000
+val SC_MODEVENTMASKALL=0x3FFFFF
enu Update=SC_UPDATE_
val SC_UPDATE_CONTENT=0x1
@@ -2675,6 +2717,8 @@ val SCLEX_RUST=111
val SCLEX_DMAP=112
val SCLEX_AS=113
val SCLEX_DMIS=114
+val SCLEX_REGISTRY=115
+val SCLEX_BIBTEX=116
# When a lexer specifies its language as SCLEX_AUTOMATIC it receives a
# value assigned in sequence from SCLEX_AUTOMATIC+1.
@@ -3567,6 +3611,7 @@ val SCE_KIX_MACRO=6
val SCE_KIX_KEYWORD=7
val SCE_KIX_FUNCTIONS=8
val SCE_KIX_OPERATOR=9
+val SCE_KIX_COMMENTSTREAM=10
val SCE_KIX_IDENTIFIER=31
# Lexical states for SCLEX_GUI4CLI
lex Gui4Cli=SCLEX_GUI4CLI SCE_GC_
@@ -3677,6 +3722,7 @@ val SCE_VHDL_STDFUNCTION=11
val SCE_VHDL_STDPACKAGE=12
val SCE_VHDL_STDTYPE=13
val SCE_VHDL_USERWORD=14
+val SCE_VHDL_BLOCK_COMMENT=15
# Lexical states for SCLEX_CAML
lex Caml=SCLEX_CAML SCE_CAML_
val SCE_CAML_DEFAULT=0
@@ -3798,6 +3844,7 @@ val SCE_SQL_USER2=20
val SCE_SQL_USER3=21
val SCE_SQL_USER4=22
val SCE_SQL_QUOTEDIDENTIFIER=23
+val SCE_SQL_QOPERATOR=24
# Lexical states for SCLEX_SMALLTALK
lex Smalltalk=SCLEX_SMALLTALK SCE_ST_
val SCE_ST_DEFAULT=0
@@ -4443,6 +4490,9 @@ val SCE_RUST_IDENTIFIER=17
val SCE_RUST_LIFETIME=18
val SCE_RUST_MACRO=19
val SCE_RUST_LEXERROR=20
+val SCE_RUST_BYTESTRING=21
+val SCE_RUST_BYTESTRINGR=22
+val SCE_RUST_BYTECHARACTER=23
# Lexical states for SCLEX_DMAP
lex DMAP=SCLEX_DMAP SCE_DMAP_
val SCE_DMAP_DEFAULT=0
@@ -4468,6 +4518,30 @@ val SCE_DMIS_MINORWORD=6
val SCE_DMIS_UNSUPPORTED_MAJOR=7
val SCE_DMIS_UNSUPPORTED_MINOR=8
val SCE_DMIS_LABEL=9
+# Lexical states for SCLEX_REGISTRY
+lex REG=SCLEX_REGISTRY SCE_REG_
+val SCE_REG_DEFAULT=0
+val SCE_REG_COMMENT=1
+val SCE_REG_VALUENAME=2
+val SCE_REG_STRING=3
+val SCE_REG_HEXDIGIT=4
+val SCE_REG_VALUETYPE=5
+val SCE_REG_ADDEDKEY=6
+val SCE_REG_DELETEDKEY=7
+val SCE_REG_ESCAPED=8
+val SCE_REG_KEYPATH_GUID=9
+val SCE_REG_STRING_GUID=10
+val SCE_REG_PARAMETER=11
+val SCE_REG_OPERATOR=12
+# Lexical state for SCLEX_BIBTEX
+lex BibTeX=SCLEX_BIBTEX SCE_BIBTEX_
+val SCE_BIBTEX_DEFAULT=0
+val SCE_BIBTEX_ENTRY=1
+val SCE_BIBTEX_UNKNOWN_ENTRY=2
+val SCE_BIBTEX_KEY=3
+val SCE_BIBTEX_PARAMETER=4
+val SCE_BIBTEX_VALUE=5
+val SCE_BIBTEX_COMMENT=6
# Events
diff --git a/src/stc/scintilla/lexers/LexBibTeX.cxx b/src/stc/scintilla/lexers/LexBibTeX.cxx
new file mode 100644
index 0000000000..cdbce8d493
--- /dev/null
+++ b/src/stc/scintilla/lexers/LexBibTeX.cxx
@@ -0,0 +1,310 @@
+// Copyright 2008-2010 Sergiu Dotenco. The License.txt file describes the
+// conditions under which this software may be distributed.
+
+/**
+ * @file LexBibTeX.cxx
+ * @brief General BibTeX coloring scheme.
+ * @author Sergiu Dotenco
+ * @date April 18, 2009
+ */
+
+#include
+#include
+
+#include
+#include
+
+#include
+#include
+#include
+
+#include "ILexer.h"
+#include "Scintilla.h"
+#include "SciLexer.h"
+
+#include "PropSetSimple.h"
+#include "WordList.h"
+#include "LexAccessor.h"
+#include "Accessor.h"
+#include "StyleContext.h"
+#include "CharacterSet.h"
+#include "LexerModule.h"
+
+#ifdef SCI_NAMESPACE
+using namespace Scintilla;
+#endif
+
+namespace {
+ bool IsAlphabetic(unsigned int ch)
+ {
+ return IsASCII(ch) && std::isalpha(ch) != 0;
+ }
+ bool IsAlphaNumeric(char ch)
+ {
+ return IsASCII(ch) && std::isalnum(ch);
+ }
+
+ bool EqualCaseInsensitive(const char* a, const char* b)
+ {
+ return CompareCaseInsensitive(a, b) == 0;
+ }
+
+ bool EntryWithoutKey(const char* name)
+ {
+ return EqualCaseInsensitive(name,"string");
+ }
+
+ char GetClosingBrace(char openbrace)
+ {
+ char result = openbrace;
+
+ switch (openbrace) {
+ case '(': result = ')'; break;
+ case '{': result = '}'; break;
+ }
+
+ return result;
+ }
+
+ bool IsEntryStart(char prev, char ch)
+ {
+ return prev != '\\' && ch == '@';
+ }
+
+ bool IsEntryStart(const StyleContext& sc)
+ {
+ return IsEntryStart(sc.chPrev, sc.ch);
+ }
+
+ void ColorizeBibTeX(unsigned start_pos, int length, int /*init_style*/, WordList* keywordlists[], Accessor& styler)
+ {
+ WordList &EntryNames = *keywordlists[0];
+ bool fold_compact = styler.GetPropertyInt("fold.compact", 1) != 0;
+
+ std::string buffer;
+ buffer.reserve(25);
+
+ // We always colorize a section from the beginning, so let's
+ // search for the @ character which isn't escaped, i.e. \@
+ while (start_pos > 0 && !IsEntryStart(styler.SafeGetCharAt(start_pos - 1),
+ styler.SafeGetCharAt(start_pos))) {
+ --start_pos; ++length;
+ }
+
+ styler.StartAt(start_pos);
+ styler.StartSegment(start_pos);
+
+ int current_line = styler.GetLine(start_pos);
+ int prev_level = styler.LevelAt(current_line) & SC_FOLDLEVELNUMBERMASK;
+ int current_level = prev_level;
+ int visible_chars = 0;
+
+ bool in_comment = false ;
+ StyleContext sc(start_pos, length, SCE_BIBTEX_DEFAULT, styler);
+
+ bool going = sc.More(); // needed because of a fuzzy end of file state
+ char closing_brace = 0;
+ bool collect_entry_name = false;
+
+ for (; going; sc.Forward()) {
+ if (!sc.More())
+ going = false; // we need to go one behind the end of text
+
+ if (in_comment) {
+ if (sc.atLineEnd) {
+ sc.SetState(SCE_BIBTEX_DEFAULT);
+ in_comment = false;
+ }
+ }
+ else {
+ // Found @entry
+ if (IsEntryStart(sc)) {
+ sc.SetState(SCE_BIBTEX_UNKNOWN_ENTRY);
+ sc.Forward();
+ ++current_level;
+
+ buffer.clear();
+ collect_entry_name = true;
+ }
+ else if ((sc.state == SCE_BIBTEX_ENTRY || sc.state == SCE_BIBTEX_UNKNOWN_ENTRY)
+ && (sc.ch == '{' || sc.ch == '(')) {
+ // Entry name colorization done
+ // Found either a { or a ( after entry's name, e.g. @entry(...) @entry{...}
+ // Closing counterpart needs to be stored.
+ closing_brace = GetClosingBrace(sc.ch);
+
+ sc.SetState(SCE_BIBTEX_DEFAULT); // Don't colorize { (
+
+ // @string doesn't have any key
+ if (EntryWithoutKey(buffer.c_str()))
+ sc.ForwardSetState(SCE_BIBTEX_PARAMETER);
+ else
+ sc.ForwardSetState(SCE_BIBTEX_KEY); // Key/label colorization
+ }
+
+ // Need to handle the case where entry's key is empty
+ // e.g. @book{,...}
+ if (sc.state == SCE_BIBTEX_KEY && sc.ch == ',') {
+ // Key/label colorization done
+ sc.SetState(SCE_BIBTEX_DEFAULT); // Don't colorize the ,
+ sc.ForwardSetState(SCE_BIBTEX_PARAMETER); // Parameter colorization
+ }
+ else if (sc.state == SCE_BIBTEX_PARAMETER && sc.ch == '=') {
+ sc.SetState(SCE_BIBTEX_DEFAULT); // Don't colorize the =
+ sc.ForwardSetState(SCE_BIBTEX_VALUE); // Parameter value colorization
+
+ int start = sc.currentPos;
+
+ // We need to handle multiple situations:
+ // 1. name"one two {three}"
+ // 2. name={one {one two {two}} three}
+ // 3. year=2005
+
+ // Skip ", { until we encounter the first alphanumerical character
+ while (sc.More() && !(IsAlphaNumeric(sc.ch) || sc.ch == '"' || sc.ch == '{'))
+ sc.Forward();
+
+ if (sc.More()) {
+ // Store " or {
+ char ch = sc.ch;
+
+ // Not interested in alphanumerical characters
+ if (IsAlphaNumeric(ch))
+ ch = 0;
+
+ int skipped = 0;
+
+ if (ch) {
+ // Skip preceding " or { such as in name={{test}}.
+ // Remember how many characters have been skipped
+ // Make sure that empty values, i.e. "" are also handled correctly
+ while (sc.More() && (sc.ch == ch && (ch != '"' || skipped < 1))) {
+ sc.Forward();
+ ++skipped;
+ }
+ }
+
+ // Closing counterpart for " is the same character
+ if (ch == '{')
+ ch = '}';
+
+ // We have reached the parameter value
+ // In case the open character was a alnum char, skip until , is found
+ // otherwise until skipped == 0
+ while (sc.More() && (skipped > 0 || (!ch && !(sc.ch == ',' || sc.ch == closing_brace)))) {
+ // Make sure the character isn't escaped
+ if (sc.chPrev != '\\') {
+ // Parameter value contains a { which is the 2nd case described above
+ if (sc.ch == '{')
+ ++skipped; // Remember it
+ else if (sc.ch == '}')
+ --skipped;
+ else if (skipped == 1 && sc.ch == ch && ch == '"') // Don't ignore cases like {"o}
+ skipped = 0;
+ }
+
+ sc.Forward();
+ }
+ }
+
+ // Don't colorize the ,
+ sc.SetState(SCE_BIBTEX_DEFAULT);
+
+ // Skip until the , or entry's closing closing_brace is found
+ // since this parameter might be the last one
+ while (sc.More() && !(sc.ch == ',' || sc.ch == closing_brace))
+ sc.Forward();
+
+ int state = SCE_BIBTEX_PARAMETER; // The might be more parameters
+
+ // We've reached the closing closing_brace for the bib entry
+ // in case no " or {} has been used to enclose the value,
+ // as in 3rd case described above
+ if (sc.ch == closing_brace) {
+ --current_level;
+ // Make sure the text between entries is not colored
+ // using parameter's style
+ state = SCE_BIBTEX_DEFAULT;
+ }
+
+ int end = sc.currentPos;
+ current_line = styler.GetLine(end);
+
+ // We have possibly skipped some lines, so the folding levels
+ // have to be adjusted separately
+ for (int i = styler.GetLine(start); i <= styler.GetLine(end); ++i)
+ styler.SetLevel(i, prev_level);
+
+ sc.ForwardSetState(state);
+ }
+
+ if (sc.state == SCE_BIBTEX_PARAMETER && sc.ch == closing_brace) {
+ sc.SetState(SCE_BIBTEX_DEFAULT);
+ --current_level;
+ }
+
+ // Non escaped % found which represents a comment until the end of the line
+ if (sc.chPrev != '\\' && sc.ch == '%') {
+ in_comment = true;
+ sc.SetState(SCE_BIBTEX_COMMENT);
+ }
+ }
+
+ if (sc.state == SCE_BIBTEX_UNKNOWN_ENTRY || sc.state == SCE_BIBTEX_ENTRY) {
+ if (!IsAlphabetic(sc.ch) && collect_entry_name)
+ collect_entry_name = false;
+
+ if (collect_entry_name) {
+ buffer += static_cast(tolower(sc.ch));
+ if (EntryNames.InList(buffer.c_str()))
+ sc.ChangeState(SCE_BIBTEX_ENTRY);
+ else
+ sc.ChangeState(SCE_BIBTEX_UNKNOWN_ENTRY);
+ }
+ }
+
+ if (sc.atLineEnd) {
+ int level = prev_level;
+
+ if (visible_chars == 0 && fold_compact)
+ level |= SC_FOLDLEVELWHITEFLAG;
+
+ if ((current_level > prev_level))
+ level |= SC_FOLDLEVELHEADERFLAG;
+ // else if (current_level < prev_level)
+ // level |= SC_FOLDLEVELBOXFOOTERFLAG; // Deprecated
+
+ if (level != styler.LevelAt(current_line)) {
+ styler.SetLevel(current_line, level);
+ }
+
+ ++current_line;
+ prev_level = current_level;
+ visible_chars = 0;
+ }
+
+ if (!isspacechar(sc.ch))
+ ++visible_chars;
+ }
+
+ sc.Complete();
+
+ // Fill in the real level of the next line, keeping the current flags as they will be filled in later
+ int flagsNext = styler.LevelAt(current_line) & ~SC_FOLDLEVELNUMBERMASK;
+ styler.SetLevel(current_line, prev_level | flagsNext);
+ }
+}
+static const char * const BibTeXWordLists[] = {
+ "Entry Names",
+ 0,
+};
+
+
+LexerModule lmBibTeX(SCLEX_BIBTEX, ColorizeBibTeX, "bib", 0, BibTeXWordLists);
+
+// Entry Names
+// article, book, booklet, conference, inbook,
+// incollection, inproceedings, manual, mastersthesis,
+// misc, phdthesis, proceedings, techreport, unpublished,
+// string, url
+
diff --git a/src/stc/scintilla/lexers/LexCoffeeScript.cxx b/src/stc/scintilla/lexers/LexCoffeeScript.cxx
index c52a5a42bf..1667683218 100644
--- a/src/stc/scintilla/lexers/LexCoffeeScript.cxx
+++ b/src/stc/scintilla/lexers/LexCoffeeScript.cxx
@@ -31,11 +31,8 @@ using namespace Scintilla;
#endif
static bool IsSpaceEquiv(int state) {
- return (state <= SCE_COFFEESCRIPT_COMMENTDOC
- // including SCE_COFFEESCRIPT_DEFAULT, SCE_COFFEESCRIPT_COMMENT, SCE_COFFEESCRIPT_COMMENTLINE
- || state == SCE_COFFEESCRIPT_COMMENTLINEDOC
- || state == SCE_COFFEESCRIPT_COMMENTDOCKEYWORD
- || state == SCE_COFFEESCRIPT_COMMENTDOCKEYWORDERROR
+ return (state == SCE_COFFEESCRIPT_DEFAULT
+ || state == SCE_COFFEESCRIPT_COMMENTLINE
|| state == SCE_COFFEESCRIPT_COMMENTBLOCK
|| state == SCE_COFFEESCRIPT_VERBOSE_REGEX
|| state == SCE_COFFEESCRIPT_VERBOSE_REGEX_COMMENT
@@ -88,51 +85,16 @@ static void ColouriseCoffeeScriptDoc(unsigned int startPos, int length, int init
WordList &keywords = *keywordlists[0];
WordList &keywords2 = *keywordlists[1];
- WordList &keywords3 = *keywordlists[2];
WordList &keywords4 = *keywordlists[3];
- // property styling.within.preprocessor
- // For C++ code, determines whether all preprocessor code is styled in the preprocessor style (0, the default)
- // or only from the initial # to the end of the command word(1).
- bool stylingWithinPreprocessor = styler.GetPropertyInt("styling.within.preprocessor") != 0;
-
CharacterSet setOKBeforeRE(CharacterSet::setNone, "([{=,:;!%^&*|?~+-");
CharacterSet setCouldBePostOp(CharacterSet::setNone, "+-");
- CharacterSet setDoxygen(CharacterSet::setAlpha, "$@\\&<>#{}[]");
-
- CharacterSet setWordStart(CharacterSet::setAlpha, "_", 0x80, true);
- CharacterSet setWord(CharacterSet::setAlphaNum, "._", 0x80, true);
-
- // property lexer.cpp.allow.dollars
- // Set to 0 to disallow the '$' character in identifiers with the cpp lexer.
- if (styler.GetPropertyInt("lexer.cpp.allow.dollars", 1) != 0) {
- setWordStart.Add('$');
- setWord.Add('$');
- }
+ CharacterSet setWordStart(CharacterSet::setAlpha, "_$@", 0x80, true);
+ CharacterSet setWord(CharacterSet::setAlphaNum, "._$", 0x80, true);
int chPrevNonWhite = ' ';
int visibleChars = 0;
- bool lastWordWasUUID = false;
- int styleBeforeDCKeyword = SCE_COFFEESCRIPT_DEFAULT;
- bool continuationLine = false;
- bool isIncludePreprocessor = false;
-
- if (initStyle == SCE_COFFEESCRIPT_PREPROCESSOR) {
- // Set continuationLine if last character of previous line is '\'
- int lineCurrent = styler.GetLine(startPos);
- if (lineCurrent > 0) {
- int chBack = styler.SafeGetCharAt(startPos-1, 0);
- int chBack2 = styler.SafeGetCharAt(startPos-2, 0);
- int lineEndChar = '!';
- if (chBack2 == '\r' && chBack == '\n') {
- lineEndChar = styler.SafeGetCharAt(startPos-3, 0);
- } else if (chBack == '\n' || chBack == '\r') {
- lineEndChar = chBack2;
- }
- continuationLine = lineEndChar == '\\';
- }
- }
// look back to set chPrevNonWhite properly for better regex colouring
int endPos = startPos + length;
@@ -161,20 +123,6 @@ static void ColouriseCoffeeScriptDoc(unsigned int startPos, int length, int init
// Reset states to beginning of colourise so no surprises
// if different sets of lines lexed.
visibleChars = 0;
- lastWordWasUUID = false;
- isIncludePreprocessor = false;
- }
-
- // Handle line continuation generically.
- if (sc.ch == '\\') {
- if (sc.chNext == '\n' || sc.chNext == '\r') {
- sc.Forward();
- if (sc.ch == '\r' && sc.chNext == '\n') {
- sc.Forward();
- }
- continuationLine = true;
- continue;
- }
}
// Determine if the current state should terminate.
@@ -193,7 +141,6 @@ static void ColouriseCoffeeScriptDoc(unsigned int startPos, int length, int init
char s[1000];
sc.GetCurrent(s, sizeof(s));
if (keywords.InList(s)) {
- lastWordWasUUID = strcmp(s, "uuid") == 0;
sc.ChangeState(SCE_COFFEESCRIPT_WORD);
} else if (keywords2.InList(s)) {
sc.ChangeState(SCE_COFFEESCRIPT_WORD2);
@@ -210,74 +157,13 @@ static void ColouriseCoffeeScriptDoc(unsigned int startPos, int length, int init
sc.SetState(SCE_COFFEESCRIPT_DEFAULT);
}
break;
- case SCE_COFFEESCRIPT_PREPROCESSOR:
- if (sc.atLineStart && !continuationLine) {
- sc.SetState(SCE_COFFEESCRIPT_DEFAULT);
- } else if (stylingWithinPreprocessor) {
- if (IsASpace(sc.ch)) {
- sc.SetState(SCE_COFFEESCRIPT_DEFAULT);
- }
- } else {
- if (sc.Match('/', '*') || sc.Match('/', '/')) {
- sc.SetState(SCE_COFFEESCRIPT_DEFAULT);
- }
- }
- break;
- case SCE_COFFEESCRIPT_COMMENT:
- if (sc.Match('*', '/')) {
- sc.Forward();
- sc.ForwardSetState(SCE_COFFEESCRIPT_DEFAULT);
- }
- break;
- case SCE_COFFEESCRIPT_COMMENTDOC:
- if (sc.Match('*', '/')) {
- sc.Forward();
- sc.ForwardSetState(SCE_COFFEESCRIPT_DEFAULT);
- } else if (sc.ch == '@' || sc.ch == '\\') { // JavaDoc and Doxygen support
- // Verify that we have the conditions to mark a comment-doc-keyword
- if ((IsASpace(sc.chPrev) || sc.chPrev == '*') && (!IsASpace(sc.chNext))) {
- styleBeforeDCKeyword = SCE_COFFEESCRIPT_COMMENTDOC;
- sc.SetState(SCE_COFFEESCRIPT_COMMENTDOCKEYWORD);
- }
- }
- break;
case SCE_COFFEESCRIPT_COMMENTLINE:
if (sc.atLineStart) {
sc.SetState(SCE_COFFEESCRIPT_DEFAULT);
}
break;
- case SCE_COFFEESCRIPT_COMMENTLINEDOC:
- if (sc.atLineStart) {
- sc.SetState(SCE_COFFEESCRIPT_DEFAULT);
- } else if (sc.ch == '@' || sc.ch == '\\') { // JavaDoc and Doxygen support
- // Verify that we have the conditions to mark a comment-doc-keyword
- if ((IsASpace(sc.chPrev) || sc.chPrev == '/' || sc.chPrev == '!') && (!IsASpace(sc.chNext))) {
- styleBeforeDCKeyword = SCE_COFFEESCRIPT_COMMENTLINEDOC;
- sc.SetState(SCE_COFFEESCRIPT_COMMENTDOCKEYWORD);
- }
- }
- break;
- case SCE_COFFEESCRIPT_COMMENTDOCKEYWORD:
- if ((styleBeforeDCKeyword == SCE_COFFEESCRIPT_COMMENTDOC) && sc.Match('*', '/')) {
- sc.ChangeState(SCE_COFFEESCRIPT_COMMENTDOCKEYWORDERROR);
- sc.Forward();
- sc.ForwardSetState(SCE_COFFEESCRIPT_DEFAULT);
- } else if (!setDoxygen.Contains(sc.ch)) {
- char s[100];
- sc.GetCurrent(s, sizeof(s));
- if (!IsASpace(sc.ch) || !keywords3.InList(s + 1)) {
- sc.ChangeState(SCE_COFFEESCRIPT_COMMENTDOCKEYWORDERROR);
- }
- sc.SetState(styleBeforeDCKeyword);
- }
- break;
case SCE_COFFEESCRIPT_STRING:
- if (isIncludePreprocessor) {
- if (sc.ch == '>') {
- sc.ForwardSetState(SCE_COFFEESCRIPT_DEFAULT);
- isIncludePreprocessor = false;
- }
- } else if (sc.ch == '\\') {
+ if (sc.ch == '\\') {
if (sc.chNext == '\"' || sc.chNext == '\'' || sc.chNext == '\\') {
sc.Forward();
}
@@ -314,20 +200,6 @@ static void ColouriseCoffeeScriptDoc(unsigned int startPos, int length, int init
sc.SetState(SCE_COFFEESCRIPT_DEFAULT);
}
break;
- case SCE_COFFEESCRIPT_VERBATIM:
- if (sc.ch == '\"') {
- if (sc.chNext == '\"') {
- sc.Forward();
- } else {
- sc.ForwardSetState(SCE_COFFEESCRIPT_DEFAULT);
- }
- }
- break;
- case SCE_COFFEESCRIPT_UUID:
- if (sc.ch == '\r' || sc.ch == '\n' || sc.ch == ')') {
- sc.SetState(SCE_COFFEESCRIPT_DEFAULT);
- }
- break;
case SCE_COFFEESCRIPT_COMMENTBLOCK:
if (sc.Match("###")) {
sc.Forward();
@@ -357,30 +229,10 @@ static void ColouriseCoffeeScriptDoc(unsigned int startPos, int length, int init
// Determine if a new state should be entered.
if (sc.state == SCE_COFFEESCRIPT_DEFAULT) {
- if (sc.Match('@', '\"')) {
- sc.SetState(SCE_COFFEESCRIPT_VERBATIM);
- sc.Forward();
- } else if (IsADigit(sc.ch) || (sc.ch == '.' && IsADigit(sc.chNext))) {
- if (lastWordWasUUID) {
- sc.SetState(SCE_COFFEESCRIPT_UUID);
- lastWordWasUUID = false;
- } else {
- sc.SetState(SCE_COFFEESCRIPT_NUMBER);
- }
- } else if (setWordStart.Contains(sc.ch) || (sc.ch == '@') || (sc.ch == '$')) {
- if (lastWordWasUUID) {
- sc.SetState(SCE_COFFEESCRIPT_UUID);
- lastWordWasUUID = false;
- } else {
- sc.SetState(SCE_COFFEESCRIPT_IDENTIFIER);
- }
- } else if (sc.Match('/', '*')) {
- if (sc.Match("/**") || sc.Match("/*!")) { // Support of Qt/Doxygen doc. style
- sc.SetState(SCE_COFFEESCRIPT_COMMENTDOC);
- } else {
- sc.SetState(SCE_COFFEESCRIPT_COMMENT);
- }
- sc.Forward(); // Eat the * so it isn't used for the end of the comment
+ if (IsADigit(sc.ch) || (sc.ch == '.' && IsADigit(sc.chNext))) {
+ sc.SetState(SCE_COFFEESCRIPT_NUMBER);
+ } else if (setWordStart.Contains(sc.ch)) {
+ sc.SetState(SCE_COFFEESCRIPT_IDENTIFIER);
} else if (sc.Match("///")) {
sc.SetState(SCE_COFFEESCRIPT_VERBOSE_REGEX);
sc.Forward();
@@ -393,9 +245,6 @@ static void ColouriseCoffeeScriptDoc(unsigned int startPos, int length, int init
sc.SetState(SCE_COFFEESCRIPT_REGEX); // JavaScript's RegEx
} else if (sc.ch == '\"') {
sc.SetState(SCE_COFFEESCRIPT_STRING);
- isIncludePreprocessor = false; // ensure that '>' won't end the string
- } else if (isIncludePreprocessor && sc.ch == '<') {
- sc.SetState(SCE_COFFEESCRIPT_STRING);
} else if (sc.ch == '\'') {
sc.SetState(SCE_COFFEESCRIPT_CHARACTER);
} else if (sc.ch == '#') {
@@ -403,7 +252,6 @@ static void ColouriseCoffeeScriptDoc(unsigned int startPos, int length, int init
sc.SetState(SCE_COFFEESCRIPT_COMMENTBLOCK);
sc.Forward();
sc.Forward();
-
} else {
sc.SetState(SCE_COFFEESCRIPT_COMMENTLINE);
}
@@ -416,7 +264,6 @@ static void ColouriseCoffeeScriptDoc(unsigned int startPos, int length, int init
chPrevNonWhite = sc.ch;
visibleChars++;
}
- continuationLine = false;
}
sc.Complete();
}
@@ -428,10 +275,6 @@ static bool IsCommentLine(int line, Accessor &styler) {
char ch = styler[i];
if (ch == '#')
return true;
- else if (ch == '/'
- && i < eol_pos - 1
- && styler[i + 1] == '*')
- return true;
else if (ch != ' ' && ch != '\t')
return false;
}
@@ -563,6 +406,9 @@ static void FoldCoffeeScriptDoc(unsigned int startPos, int length, int,
static const char *const csWordLists[] = {
"Keywords",
+ "Secondary keywords",
+ "Unused",
+ "Global classes",
0,
};
diff --git a/src/stc/scintilla/lexers/LexHTML.cxx b/src/stc/scintilla/lexers/LexHTML.cxx
index d6b0b31bcb..02047930ce 100644
--- a/src/stc/scintilla/lexers/LexHTML.cxx
+++ b/src/stc/scintilla/lexers/LexHTML.cxx
@@ -822,19 +822,27 @@ static void ColouriseHyperTextDoc(unsigned int startPos, int length, int initSty
// handle start of Mako comment line
if (isMako && ch == '#' && chNext == '#') {
makoComment = 1;
+ state = SCE_HP_COMMENTLINE;
}
// handle end of Mako comment line
else if (isMako && makoComment && (ch == '\r' || ch == '\n')) {
makoComment = 0;
- styler.ColourTo(i, SCE_HP_COMMENTLINE);
- state = SCE_HP_DEFAULT;
+ styler.ColourTo(i, StateToPrint);
+ if (scriptLanguage == eScriptPython) {
+ state = SCE_HP_DEFAULT;
+ } else {
+ state = SCE_H_DEFAULT;
+ }
}
// Allow falling through to mako handling code if newline is going to end a block
if (((ch == '\r' && chNext != '\n') || (ch == '\n')) &&
(!isMako || (0 != strcmp(makoBlockType, "%")))) {
}
+ // Ignore everything in mako comment until the line ends
+ else if (isMako && makoComment) {
+ }
// generic end of script processing
else if ((inScriptType == eNonHtmlScript) && (ch == '<') && (chNext == '/')) {
diff --git a/src/stc/scintilla/lexers/LexKix.cxx b/src/stc/scintilla/lexers/LexKix.cxx
index 32af263fdf..dc509e4caa 100644
--- a/src/stc/scintilla/lexers/LexKix.cxx
+++ b/src/stc/scintilla/lexers/LexKix.cxx
@@ -4,6 +4,7 @@
**/
// Copyright 2004 by Manfred Becker
// The License.txt file describes the conditions under which this software may be distributed.
+// Edited by Lee Wilmott (24-Jun-2014) added support for block comments
#include
#include
@@ -54,6 +55,10 @@ static void ColouriseKixDoc(unsigned int startPos, int length, int initStyle,
if (sc.atLineEnd) {
sc.SetState(SCE_KIX_DEFAULT);
}
+ } else if (sc.state == SCE_KIX_COMMENTSTREAM) {
+ if (sc.ch == '/' && sc.chPrev == '*') {
+ sc.ForwardSetState(SCE_KIX_DEFAULT);
+ }
} else if (sc.state == SCE_KIX_STRING1) {
// This is a doubles quotes string
if (sc.ch == '\"') {
@@ -104,6 +109,8 @@ static void ColouriseKixDoc(unsigned int startPos, int length, int initStyle,
if (sc.state == SCE_KIX_DEFAULT) {
if (sc.ch == ';') {
sc.SetState(SCE_KIX_COMMENT);
+ } else if (sc.ch == '/' && sc.chNext == '*') {
+ sc.SetState(SCE_KIX_COMMENTSTREAM);
} else if (sc.ch == '\"') {
sc.SetState(SCE_KIX_STRING1);
} else if (sc.ch == '\'') {
diff --git a/src/stc/scintilla/lexers/LexMatlab.cxx b/src/stc/scintilla/lexers/LexMatlab.cxx
index a8ac03cc7f..4dfd512c83 100644
--- a/src/stc/scintilla/lexers/LexMatlab.cxx
+++ b/src/stc/scintilla/lexers/LexMatlab.cxx
@@ -12,6 +12,9 @@
** - added ... displayed as a comment
** - removed unused IsAWord functions
** - added some comments
+ **
+ ** Changes by John Donoghue 2014/08/01
+ ** - fix allowed transpose ' after {} operator
**/
// Copyright 1998-2001 by Neil Hodgson
// The License.txt file describes the conditions under which this software may be distributed.
@@ -218,7 +221,7 @@ static void ColouriseMatlabOctaveDoc(
} else if (isalpha(sc.ch)) {
sc.SetState(SCE_MATLAB_KEYWORD);
} else if (isoperator(static_cast(sc.ch)) || sc.ch == '@' || sc.ch == '\\') {
- if (sc.ch == ')' || sc.ch == ']') {
+ if (sc.ch == ')' || sc.ch == ']' || sc.ch == '}') {
transpose = true;
} else {
transpose = false;
diff --git a/src/stc/scintilla/lexers/LexRegistry.cxx b/src/stc/scintilla/lexers/LexRegistry.cxx
new file mode 100644
index 0000000000..0f401fa4b5
--- /dev/null
+++ b/src/stc/scintilla/lexers/LexRegistry.cxx
@@ -0,0 +1,416 @@
+// Scintilla source code edit control
+/**
+ * @file LexRegistry.cxx
+ * @date July 26 2014
+ * @brief Lexer for Windows registration files(.reg)
+ * @author nkmathew
+ *
+ * The License.txt file describes the conditions under which this software may be
+ * distributed.
+ *
+ */
+
+#include
+#include
+#include
+#include
+#include
+#include
+#include