]> git.saurik.com Git - wxWidgets.git/commitdiff
Updated to Scintilla 1.62
authorRobin Dunn <robin@alldunn.com>
Fri, 11 Feb 2005 22:53:19 +0000 (22:53 +0000)
committerRobin Dunn <robin@alldunn.com>
Fri, 11 Feb 2005 22:53:19 +0000 (22:53 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@31938 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

78 files changed:
contrib/build/stc/makefile.bcc
contrib/build/stc/makefile.gcc
contrib/build/stc/makefile.vc
contrib/build/stc/makefile.wat
contrib/build/stc/stc.bkl
contrib/build/stc/stc.dsp
contrib/include/wx/stc/stc.h
contrib/src/stc/Makefile.in
contrib/src/stc/ScintillaWX.cpp
contrib/src/stc/gen_iface.py
contrib/src/stc/scintilla/README.txt
contrib/src/stc/scintilla/include/Platform.h
contrib/src/stc/scintilla/include/PropSet.h
contrib/src/stc/scintilla/include/SciLexer.h
contrib/src/stc/scintilla/include/Scintilla.h
contrib/src/stc/scintilla/include/Scintilla.iface
contrib/src/stc/scintilla/src/CallTip.cxx
contrib/src/stc/scintilla/src/CallTip.h
contrib/src/stc/scintilla/src/CellBuffer.cxx
contrib/src/stc/scintilla/src/CellBuffer.h
contrib/src/stc/scintilla/src/Document.cxx
contrib/src/stc/scintilla/src/Document.h
contrib/src/stc/scintilla/src/Editor.cxx
contrib/src/stc/scintilla/src/Editor.h
contrib/src/stc/scintilla/src/KeyWords.cxx
contrib/src/stc/scintilla/src/LexAPDL.cxx
contrib/src/stc/scintilla/src/LexAU3.cxx
contrib/src/stc/scintilla/src/LexAda.cxx
contrib/src/stc/scintilla/src/LexAsn1.cxx [new file with mode: 0644]
contrib/src/stc/scintilla/src/LexCPP.cxx
contrib/src/stc/scintilla/src/LexCSS.cxx
contrib/src/stc/scintilla/src/LexHTML.cxx
contrib/src/stc/scintilla/src/LexLisp.cxx
contrib/src/stc/scintilla/src/LexLua.cxx
contrib/src/stc/scintilla/src/LexOthers.cxx
contrib/src/stc/scintilla/src/LexPB.cxx
contrib/src/stc/scintilla/src/LexPython.cxx
contrib/src/stc/scintilla/src/LexVHDL.cxx [new file with mode: 0644]
contrib/src/stc/scintilla/src/PropSet.cxx
contrib/src/stc/scintilla/src/ScintillaBase.cxx
contrib/src/stc/scintilla/src/UniConversion.cxx
contrib/src/stc/stc.cpp
include/wx/stc/stc.h
src/stc/Makefile.in
src/stc/ScintillaWX.cpp
src/stc/gen_iface.py
src/stc/scintilla/README.txt
src/stc/scintilla/include/Platform.h
src/stc/scintilla/include/PropSet.h
src/stc/scintilla/include/SciLexer.h
src/stc/scintilla/include/Scintilla.h
src/stc/scintilla/include/Scintilla.iface
src/stc/scintilla/src/CallTip.cxx
src/stc/scintilla/src/CallTip.h
src/stc/scintilla/src/CellBuffer.cxx
src/stc/scintilla/src/CellBuffer.h
src/stc/scintilla/src/Document.cxx
src/stc/scintilla/src/Document.h
src/stc/scintilla/src/Editor.cxx
src/stc/scintilla/src/Editor.h
src/stc/scintilla/src/KeyWords.cxx
src/stc/scintilla/src/LexAPDL.cxx
src/stc/scintilla/src/LexAU3.cxx
src/stc/scintilla/src/LexAda.cxx
src/stc/scintilla/src/LexAsn1.cxx [new file with mode: 0644]
src/stc/scintilla/src/LexCPP.cxx
src/stc/scintilla/src/LexCSS.cxx
src/stc/scintilla/src/LexHTML.cxx
src/stc/scintilla/src/LexLisp.cxx
src/stc/scintilla/src/LexLua.cxx
src/stc/scintilla/src/LexOthers.cxx
src/stc/scintilla/src/LexPB.cxx
src/stc/scintilla/src/LexPython.cxx
src/stc/scintilla/src/LexVHDL.cxx [new file with mode: 0644]
src/stc/scintilla/src/PropSet.cxx
src/stc/scintilla/src/ScintillaBase.cxx
src/stc/scintilla/src/UniConversion.cxx
src/stc/stc.cpp

index f67cbace166a1319c3adbc2e6fdf3e7627bdfde8..a42a13701ff969a255b063044da6dbd1ec31bb9e 100644 (file)
@@ -1,6 +1,6 @@
 # =========================================================================
 #     This makefile was generated by
-#     Bakefile 0.1.4 (http://bakefile.sourceforge.net)
+#     Bakefile 0.1.6 (http://bakefile.sourceforge.net)
 #     Do not modify, all changes will be overwritten!
 # =========================================================================
 
@@ -22,9 +22,10 @@ BCCDIR = $(MAKEDIR)\..
 ### Variables: ###
 
 WX_RELEASE_NODOT = 25
-WX_VERSION_NODOT = $(WX_RELEASE_NODOT)3
+WX_VERSION_NODOT = $(WX_RELEASE_NODOT)4
 OBJS = \
        bcc_$(PORTNAME)$(WXUNIVNAME)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WXDLLFLAG)$(CFG)
+LIBDIRNAME = ..\..\src\stc\..\..\..\lib\bcc_$(LIBTYPE_SUFFIX)$(CFG)
 SETUPHDIR = \
        $(LIBDIRNAME)\$(PORTNAME)$(WXUNIVNAME)$(WXUNICODEFLAG)$(WXDEBUGFLAG)
 STCDLL_CXXFLAGS = $(__RUNTIME_LIBS) -I$(BCCDIR)\include $(__DEBUGINFO) \
@@ -41,8 +42,8 @@ STCDLL_OBJECTS =  \
        $(OBJS)\stcdll_CallTip.obj \
        $(OBJS)\stcdll_CellBuffer.obj \
        $(OBJS)\stcdll_ContractionState.obj \
-       $(OBJS)\stcdll_DocumentAccessor.obj \
        $(OBJS)\stcdll_Document.obj \
+       $(OBJS)\stcdll_DocumentAccessor.obj \
        $(OBJS)\stcdll_Editor.obj \
        $(OBJS)\stcdll_ExternalLexer.obj \
        $(OBJS)\stcdll_Indicator.obj \
@@ -53,6 +54,7 @@ STCDLL_OBJECTS =  \
        $(OBJS)\stcdll_LexAVE.obj \
        $(OBJS)\stcdll_LexAda.obj \
        $(OBJS)\stcdll_LexAsm.obj \
+       $(OBJS)\stcdll_LexAsn1.obj \
        $(OBJS)\stcdll_LexBaan.obj \
        $(OBJS)\stcdll_LexBash.obj \
        $(OBJS)\stcdll_LexBullant.obj \
@@ -91,14 +93,15 @@ STCDLL_OBJECTS =  \
        $(OBJS)\stcdll_LexSpecman.obj \
        $(OBJS)\stcdll_LexTeX.obj \
        $(OBJS)\stcdll_LexVB.obj \
+       $(OBJS)\stcdll_LexVHDL.obj \
        $(OBJS)\stcdll_LexVerilog.obj \
        $(OBJS)\stcdll_LexYAML.obj \
        $(OBJS)\stcdll_LineMarker.obj \
        $(OBJS)\stcdll_PropSet.obj \
        $(OBJS)\stcdll_RESearch.obj \
        $(OBJS)\stcdll_ScintillaBase.obj \
-       $(OBJS)\stcdll_StyleContext.obj \
        $(OBJS)\stcdll_Style.obj \
+       $(OBJS)\stcdll_StyleContext.obj \
        $(OBJS)\stcdll_UniConversion.obj \
        $(OBJS)\stcdll_ViewStyle.obj \
        $(OBJS)\stcdll_WindowAccessor.obj \
@@ -117,8 +120,8 @@ STCLIB_OBJECTS =  \
        $(OBJS)\stclib_CallTip.obj \
        $(OBJS)\stclib_CellBuffer.obj \
        $(OBJS)\stclib_ContractionState.obj \
-       $(OBJS)\stclib_DocumentAccessor.obj \
        $(OBJS)\stclib_Document.obj \
+       $(OBJS)\stclib_DocumentAccessor.obj \
        $(OBJS)\stclib_Editor.obj \
        $(OBJS)\stclib_ExternalLexer.obj \
        $(OBJS)\stclib_Indicator.obj \
@@ -129,6 +132,7 @@ STCLIB_OBJECTS =  \
        $(OBJS)\stclib_LexAVE.obj \
        $(OBJS)\stclib_LexAda.obj \
        $(OBJS)\stclib_LexAsm.obj \
+       $(OBJS)\stclib_LexAsn1.obj \
        $(OBJS)\stclib_LexBaan.obj \
        $(OBJS)\stclib_LexBash.obj \
        $(OBJS)\stclib_LexBullant.obj \
@@ -167,14 +171,15 @@ STCLIB_OBJECTS =  \
        $(OBJS)\stclib_LexSpecman.obj \
        $(OBJS)\stclib_LexTeX.obj \
        $(OBJS)\stclib_LexVB.obj \
+       $(OBJS)\stclib_LexVHDL.obj \
        $(OBJS)\stclib_LexVerilog.obj \
        $(OBJS)\stclib_LexYAML.obj \
        $(OBJS)\stclib_LineMarker.obj \
        $(OBJS)\stclib_PropSet.obj \
        $(OBJS)\stclib_RESearch.obj \
        $(OBJS)\stclib_ScintillaBase.obj \
-       $(OBJS)\stclib_StyleContext.obj \
        $(OBJS)\stclib_Style.obj \
+       $(OBJS)\stclib_StyleContext.obj \
        $(OBJS)\stclib_UniConversion.obj \
        $(OBJS)\stclib_ViewStyle.obj \
        $(OBJS)\stclib_WindowAccessor.obj \
@@ -209,6 +214,12 @@ WXUNIVNAME = univ
 !if "$(SHARED)" == "1"
 WXDLLFLAG = dll
 !endif
+!if "$(SHARED)" == "0"
+LIBTYPE_SUFFIX = lib
+!endif
+!if "$(SHARED)" == "1"
+LIBTYPE_SUFFIX = dll
+!endif
 !if "$(MONOLITHIC)" == "0"
 EXTRALIBS_FOR_BASE = 
 !endif
@@ -289,12 +300,6 @@ __DEBUG_DEFINE_p = -D__WXDEBUG__
 !if "$(UNICODE)" == "1"
 __UNICODE_DEFINE_p = -D_UNICODE
 !endif
-!if "$(SHARED)" == "0"
-LIBDIRNAME = ..\..\src\stc\..\..\..\lib\bcc_lib$(CFG)
-!endif
-!if "$(SHARED)" == "1"
-LIBDIRNAME = ..\..\src\stc\..\..\..\lib\bcc_dll$(CFG)
-!endif
 
 
 all: $(OBJS)
@@ -308,6 +313,7 @@ all: $(__stcdll___depname) $(__stclib___depname)
 clean: 
        -if exist $(OBJS)\*.obj del $(OBJS)\*.obj
        -if exist $(OBJS)\*.res del $(OBJS)\*.res
+       -if exist $(OBJS)\*.csm del $(OBJS)\*.csm
        -if exist $(LIBDIRNAME)\wx$(PORTNAME)$(WXUNIVNAME)$(WX_VERSION_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_stc_bcc$(VENDORTAG).dll del $(LIBDIRNAME)\wx$(PORTNAME)$(WXUNIVNAME)$(WX_VERSION_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_stc_bcc$(VENDORTAG).dll
        -if exist $(LIBDIRNAME)\wx$(PORTNAME)$(WXUNIVNAME)$(WX_VERSION_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_stc_bcc$(VENDORTAG).tds del $(LIBDIRNAME)\wx$(PORTNAME)$(WXUNIVNAME)$(WX_VERSION_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_stc_bcc$(VENDORTAG).tds
        -if exist $(LIBDIRNAME)\wx$(PORTNAME)$(WXUNIVNAME)$(WX_VERSION_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_stc_bcc$(VENDORTAG).ilc del $(LIBDIRNAME)\wx$(PORTNAME)$(WXUNIVNAME)$(WX_VERSION_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_stc_bcc$(VENDORTAG).ilc
@@ -354,10 +360,10 @@ $(OBJS)\stcdll_CellBuffer.obj: ../../src/stc\scintilla\src\CellBuffer.cxx
 $(OBJS)\stcdll_ContractionState.obj: ../../src/stc\scintilla\src\ContractionState.cxx
        $(CXX) -q -c -P -o$@ $(STCDLL_CXXFLAGS) $**
 
-$(OBJS)\stcdll_DocumentAccessor.obj: ../../src/stc\scintilla\src\DocumentAccessor.cxx
+$(OBJS)\stcdll_Document.obj: ../../src/stc\scintilla\src\Document.cxx
        $(CXX) -q -c -P -o$@ $(STCDLL_CXXFLAGS) $**
 
-$(OBJS)\stcdll_Document.obj: ../../src/stc\scintilla\src\Document.cxx
+$(OBJS)\stcdll_DocumentAccessor.obj: ../../src/stc\scintilla\src\DocumentAccessor.cxx
        $(CXX) -q -c -P -o$@ $(STCDLL_CXXFLAGS) $**
 
 $(OBJS)\stcdll_Editor.obj: ../../src/stc\scintilla\src\Editor.cxx
@@ -390,6 +396,9 @@ $(OBJS)\stcdll_LexAda.obj: ../../src/stc\scintilla\src\LexAda.cxx
 $(OBJS)\stcdll_LexAsm.obj: ../../src/stc\scintilla\src\LexAsm.cxx
        $(CXX) -q -c -P -o$@ $(STCDLL_CXXFLAGS) $**
 
+$(OBJS)\stcdll_LexAsn1.obj: ../../src/stc\scintilla\src\LexAsn1.cxx
+       $(CXX) -q -c -P -o$@ $(STCDLL_CXXFLAGS) $**
+
 $(OBJS)\stcdll_LexBaan.obj: ../../src/stc\scintilla\src\LexBaan.cxx
        $(CXX) -q -c -P -o$@ $(STCDLL_CXXFLAGS) $**
 
@@ -504,6 +513,9 @@ $(OBJS)\stcdll_LexTeX.obj: ../../src/stc\scintilla\src\LexTeX.cxx
 $(OBJS)\stcdll_LexVB.obj: ../../src/stc\scintilla\src\LexVB.cxx
        $(CXX) -q -c -P -o$@ $(STCDLL_CXXFLAGS) $**
 
+$(OBJS)\stcdll_LexVHDL.obj: ../../src/stc\scintilla\src\LexVHDL.cxx
+       $(CXX) -q -c -P -o$@ $(STCDLL_CXXFLAGS) $**
+
 $(OBJS)\stcdll_LexVerilog.obj: ../../src/stc\scintilla\src\LexVerilog.cxx
        $(CXX) -q -c -P -o$@ $(STCDLL_CXXFLAGS) $**
 
@@ -522,10 +534,10 @@ $(OBJS)\stcdll_RESearch.obj: ../../src/stc\scintilla\src\RESearch.cxx
 $(OBJS)\stcdll_ScintillaBase.obj: ../../src/stc\scintilla\src\ScintillaBase.cxx
        $(CXX) -q -c -P -o$@ $(STCDLL_CXXFLAGS) $**
 
-$(OBJS)\stcdll_StyleContext.obj: ../../src/stc\scintilla\src\StyleContext.cxx
+$(OBJS)\stcdll_Style.obj: ../../src/stc\scintilla\src\Style.cxx
        $(CXX) -q -c -P -o$@ $(STCDLL_CXXFLAGS) $**
 
-$(OBJS)\stcdll_Style.obj: ../../src/stc\scintilla\src\Style.cxx
+$(OBJS)\stcdll_StyleContext.obj: ../../src/stc\scintilla\src\StyleContext.cxx
        $(CXX) -q -c -P -o$@ $(STCDLL_CXXFLAGS) $**
 
 $(OBJS)\stcdll_UniConversion.obj: ../../src/stc\scintilla\src\UniConversion.cxx
@@ -561,10 +573,10 @@ $(OBJS)\stclib_CellBuffer.obj: ../../src/stc\scintilla\src\CellBuffer.cxx
 $(OBJS)\stclib_ContractionState.obj: ../../src/stc\scintilla\src\ContractionState.cxx
        $(CXX) -q -c -P -o$@ $(STCLIB_CXXFLAGS) $**
 
-$(OBJS)\stclib_DocumentAccessor.obj: ../../src/stc\scintilla\src\DocumentAccessor.cxx
+$(OBJS)\stclib_Document.obj: ../../src/stc\scintilla\src\Document.cxx
        $(CXX) -q -c -P -o$@ $(STCLIB_CXXFLAGS) $**
 
-$(OBJS)\stclib_Document.obj: ../../src/stc\scintilla\src\Document.cxx
+$(OBJS)\stclib_DocumentAccessor.obj: ../../src/stc\scintilla\src\DocumentAccessor.cxx
        $(CXX) -q -c -P -o$@ $(STCLIB_CXXFLAGS) $**
 
 $(OBJS)\stclib_Editor.obj: ../../src/stc\scintilla\src\Editor.cxx
@@ -597,6 +609,9 @@ $(OBJS)\stclib_LexAda.obj: ../../src/stc\scintilla\src\LexAda.cxx
 $(OBJS)\stclib_LexAsm.obj: ../../src/stc\scintilla\src\LexAsm.cxx
        $(CXX) -q -c -P -o$@ $(STCLIB_CXXFLAGS) $**
 
+$(OBJS)\stclib_LexAsn1.obj: ../../src/stc\scintilla\src\LexAsn1.cxx
+       $(CXX) -q -c -P -o$@ $(STCLIB_CXXFLAGS) $**
+
 $(OBJS)\stclib_LexBaan.obj: ../../src/stc\scintilla\src\LexBaan.cxx
        $(CXX) -q -c -P -o$@ $(STCLIB_CXXFLAGS) $**
 
@@ -711,6 +726,9 @@ $(OBJS)\stclib_LexTeX.obj: ../../src/stc\scintilla\src\LexTeX.cxx
 $(OBJS)\stclib_LexVB.obj: ../../src/stc\scintilla\src\LexVB.cxx
        $(CXX) -q -c -P -o$@ $(STCLIB_CXXFLAGS) $**
 
+$(OBJS)\stclib_LexVHDL.obj: ../../src/stc\scintilla\src\LexVHDL.cxx
+       $(CXX) -q -c -P -o$@ $(STCLIB_CXXFLAGS) $**
+
 $(OBJS)\stclib_LexVerilog.obj: ../../src/stc\scintilla\src\LexVerilog.cxx
        $(CXX) -q -c -P -o$@ $(STCLIB_CXXFLAGS) $**
 
@@ -729,10 +747,10 @@ $(OBJS)\stclib_RESearch.obj: ../../src/stc\scintilla\src\RESearch.cxx
 $(OBJS)\stclib_ScintillaBase.obj: ../../src/stc\scintilla\src\ScintillaBase.cxx
        $(CXX) -q -c -P -o$@ $(STCLIB_CXXFLAGS) $**
 
-$(OBJS)\stclib_StyleContext.obj: ../../src/stc\scintilla\src\StyleContext.cxx
+$(OBJS)\stclib_Style.obj: ../../src/stc\scintilla\src\Style.cxx
        $(CXX) -q -c -P -o$@ $(STCLIB_CXXFLAGS) $**
 
-$(OBJS)\stclib_Style.obj: ../../src/stc\scintilla\src\Style.cxx
+$(OBJS)\stclib_StyleContext.obj: ../../src/stc\scintilla\src\StyleContext.cxx
        $(CXX) -q -c -P -o$@ $(STCLIB_CXXFLAGS) $**
 
 $(OBJS)\stclib_UniConversion.obj: ../../src/stc\scintilla\src\UniConversion.cxx
@@ -746,3 +764,4 @@ $(OBJS)\stclib_WindowAccessor.obj: ../../src/stc\scintilla\src\WindowAccessor.cx
 
 $(OBJS)\stclib_XPM.obj: ../../src/stc\scintilla\src\XPM.cxx
        $(CXX) -q -c -P -o$@ $(STCLIB_CXXFLAGS) $**
+
index 8e54bac89da0d6183e07d3c7294954c8d6715813..a2cb5d0844d1a753ddb68bafbea730b80a301e35 100644 (file)
@@ -1,6 +1,6 @@
 # =========================================================================
 #     This makefile was generated by
-#     Bakefile 0.1.4 (http://bakefile.sourceforge.net)
+#     Bakefile 0.1.6 (http://bakefile.sourceforge.net)
 #     Do not modify, all changes will be overwritten!
 # =========================================================================
 
@@ -13,18 +13,19 @@ include ../../../build/msw/config.gcc
 ### Variables: ###
 
 WX_RELEASE_NODOT = 25
-WX_VERSION_NODOT = $(WX_RELEASE_NODOT)3
+WX_VERSION_NODOT = $(WX_RELEASE_NODOT)4
 OBJS = \
        gcc_$(PORTNAME)$(WXUNIVNAME)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WXDLLFLAG)$(CFG)
+LIBDIRNAME = ..\..\src\stc\..\..\..\lib\gcc_$(LIBTYPE_SUFFIX)$(CFG)
 SETUPHDIR = \
        $(LIBDIRNAME)\$(PORTNAME)$(WXUNIVNAME)$(WXUNICODEFLAG)$(WXDEBUGFLAG)
 STCDLL_CXXFLAGS = $(__DEBUGINFO) $(__OPTIMIZEFLAG) $(GCCFLAGS) -DHAVE_W32API_H \
        -D__WXMSW__ $(__WXUNIV_DEFINE_p) $(__DEBUG_DEFINE_p) $(__UNICODE_DEFINE_p) \
-       -I..\..\src\stc\..\..\..\include -I$(SETUPHDIR) -Wall \
+       -I..\..\src\stc\..\..\..\include -I$(SETUPHDIR) -W -Wall \
        -I..\..\src\stc\..\..\include -I..\..\src\stc\scintilla\include \
        -I..\..\src\stc\scintilla\src -D__WX__ -DSCI_LEXER -DLINK_LEXERS \
        -DWXUSINGDLL -DWXMAKINGDLL_STC $(__EXCEPTIONSFLAG) $(__EXCEPTIONSFLAG_0) \
-       $(CPPFLAGS) $(CXXFLAGS)
+       -Wno-ctor-dtor-privacy $(CPPFLAGS) $(CXXFLAGS)
 STCDLL_OBJECTS =  \
        $(OBJS)\stcdll_PlatWX.o \
        $(OBJS)\stcdll_ScintillaWX.o \
@@ -33,8 +34,8 @@ STCDLL_OBJECTS =  \
        $(OBJS)\stcdll_CallTip.o \
        $(OBJS)\stcdll_CellBuffer.o \
        $(OBJS)\stcdll_ContractionState.o \
-       $(OBJS)\stcdll_DocumentAccessor.o \
        $(OBJS)\stcdll_Document.o \
+       $(OBJS)\stcdll_DocumentAccessor.o \
        $(OBJS)\stcdll_Editor.o \
        $(OBJS)\stcdll_ExternalLexer.o \
        $(OBJS)\stcdll_Indicator.o \
@@ -45,6 +46,7 @@ STCDLL_OBJECTS =  \
        $(OBJS)\stcdll_LexAVE.o \
        $(OBJS)\stcdll_LexAda.o \
        $(OBJS)\stcdll_LexAsm.o \
+       $(OBJS)\stcdll_LexAsn1.o \
        $(OBJS)\stcdll_LexBaan.o \
        $(OBJS)\stcdll_LexBash.o \
        $(OBJS)\stcdll_LexBullant.o \
@@ -83,24 +85,26 @@ STCDLL_OBJECTS =  \
        $(OBJS)\stcdll_LexSpecman.o \
        $(OBJS)\stcdll_LexTeX.o \
        $(OBJS)\stcdll_LexVB.o \
+       $(OBJS)\stcdll_LexVHDL.o \
        $(OBJS)\stcdll_LexVerilog.o \
        $(OBJS)\stcdll_LexYAML.o \
        $(OBJS)\stcdll_LineMarker.o \
        $(OBJS)\stcdll_PropSet.o \
        $(OBJS)\stcdll_RESearch.o \
        $(OBJS)\stcdll_ScintillaBase.o \
-       $(OBJS)\stcdll_StyleContext.o \
        $(OBJS)\stcdll_Style.o \
+       $(OBJS)\stcdll_StyleContext.o \
        $(OBJS)\stcdll_UniConversion.o \
        $(OBJS)\stcdll_ViewStyle.o \
        $(OBJS)\stcdll_WindowAccessor.o \
        $(OBJS)\stcdll_XPM.o
 STCLIB_CXXFLAGS = $(__DEBUGINFO) $(__OPTIMIZEFLAG) $(GCCFLAGS) -DHAVE_W32API_H \
        -D__WXMSW__ $(__WXUNIV_DEFINE_p) $(__DEBUG_DEFINE_p) $(__UNICODE_DEFINE_p) \
-       -I..\..\src\stc\..\..\..\include -I$(SETUPHDIR) -Wall \
+       -I..\..\src\stc\..\..\..\include -I$(SETUPHDIR) -W -Wall \
        -I..\..\src\stc\..\..\include -I..\..\src\stc\scintilla\include \
        -I..\..\src\stc\scintilla\src -D__WX__ -DSCI_LEXER -DLINK_LEXERS \
-       $(__EXCEPTIONSFLAG) $(__EXCEPTIONSFLAG_0) $(CPPFLAGS) $(CXXFLAGS)
+       $(__EXCEPTIONSFLAG) $(__EXCEPTIONSFLAG_0) -Wno-ctor-dtor-privacy \
+       $(CPPFLAGS) $(CXXFLAGS)
 STCLIB_OBJECTS =  \
        $(OBJS)\stclib_PlatWX.o \
        $(OBJS)\stclib_ScintillaWX.o \
@@ -109,8 +113,8 @@ STCLIB_OBJECTS =  \
        $(OBJS)\stclib_CallTip.o \
        $(OBJS)\stclib_CellBuffer.o \
        $(OBJS)\stclib_ContractionState.o \
-       $(OBJS)\stclib_DocumentAccessor.o \
        $(OBJS)\stclib_Document.o \
+       $(OBJS)\stclib_DocumentAccessor.o \
        $(OBJS)\stclib_Editor.o \
        $(OBJS)\stclib_ExternalLexer.o \
        $(OBJS)\stclib_Indicator.o \
@@ -121,6 +125,7 @@ STCLIB_OBJECTS =  \
        $(OBJS)\stclib_LexAVE.o \
        $(OBJS)\stclib_LexAda.o \
        $(OBJS)\stclib_LexAsm.o \
+       $(OBJS)\stclib_LexAsn1.o \
        $(OBJS)\stclib_LexBaan.o \
        $(OBJS)\stclib_LexBash.o \
        $(OBJS)\stclib_LexBullant.o \
@@ -159,14 +164,15 @@ STCLIB_OBJECTS =  \
        $(OBJS)\stclib_LexSpecman.o \
        $(OBJS)\stclib_LexTeX.o \
        $(OBJS)\stclib_LexVB.o \
+       $(OBJS)\stclib_LexVHDL.o \
        $(OBJS)\stclib_LexVerilog.o \
        $(OBJS)\stclib_LexYAML.o \
        $(OBJS)\stclib_LineMarker.o \
        $(OBJS)\stclib_PropSet.o \
        $(OBJS)\stclib_RESearch.o \
        $(OBJS)\stclib_ScintillaBase.o \
-       $(OBJS)\stclib_StyleContext.o \
        $(OBJS)\stclib_Style.o \
+       $(OBJS)\stclib_StyleContext.o \
        $(OBJS)\stclib_UniConversion.o \
        $(OBJS)\stclib_ViewStyle.o \
        $(OBJS)\stclib_WindowAccessor.o \
@@ -206,6 +212,12 @@ endif
 ifeq ($(SHARED),1)
 WXDLLFLAG = dll
 endif
+ifeq ($(SHARED),0)
+LIBTYPE_SUFFIX = lib
+endif
+ifeq ($(SHARED),1)
+LIBTYPE_SUFFIX = dll
+endif
 ifeq ($(MONOLITHIC),0)
 EXTRALIBS_FOR_BASE = 
 endif
@@ -292,12 +304,6 @@ endif
 ifeq ($(UNICODE),1)
 __UNICODE_DEFINE_p = -D_UNICODE
 endif
-ifeq ($(SHARED),0)
-LIBDIRNAME = ..\..\src\stc\..\..\..\lib\gcc_lib$(CFG)
-endif
-ifeq ($(SHARED),1)
-LIBDIRNAME = ..\..\src\stc\..\..\..\lib\gcc_dll$(CFG)
-endif
 
 
 all: $(OBJS)
@@ -316,7 +322,7 @@ clean:
 
 ifeq ($(SHARED),1)
 $(LIBDIRNAME)\wx$(PORTNAME)$(WXUNIVNAME)$(WX_VERSION_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_stc_gcc$(VENDORTAG).dll: $(STCDLL_OBJECTS)
-       $(CXX) -shared -o $@ $(STCDLL_OBJECTS) $(LDFLAGS) $(__DEBUGINFO) -mthreads -L$(LIBDIRNAME) -Wl,--out-implib,$(LIBDIRNAME)\libwx$(PORTNAME)$(WXUNIVNAME)$(WX_RELEASE_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_stc.a  $(__WXLIB_MONO_p) $(__LIB_TIFF_p) $(__LIB_JPEG_p) $(__LIB_PNG_p) -lwxzlib$(WXDEBUGFLAG)  -lwxregex$(WXUNICODEFLAG)$(WXDEBUGFLAG) -lwxexpat$(WXDEBUGFLAG) $(EXTRALIBS_FOR_BASE) $(__UNICOWS_LIB_p) -lkernel32 -luser32 -lgdi32 -lcomdlg32 -lwinspool -lwinmm -lshell32 -lcomctl32 -lole32 -loleaut32 -luuid -lrpcrt4 -ladvapi32 -lwsock32 -lodbc32  $(__WXLIB_CORE_p)  $(__WXLIB_BASE_p)
+       $(CXX) -shared -fPIC -o $@ $(STCDLL_OBJECTS) $(LDFLAGS) $(__DEBUGINFO) -mthreads -L$(LIBDIRNAME) -Wl,--out-implib,$(LIBDIRNAME)\libwx$(PORTNAME)$(WXUNIVNAME)$(WX_RELEASE_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_stc.a  $(__WXLIB_MONO_p) $(__LIB_TIFF_p) $(__LIB_JPEG_p) $(__LIB_PNG_p) -lwxzlib$(WXDEBUGFLAG)  -lwxregex$(WXUNICODEFLAG)$(WXDEBUGFLAG) -lwxexpat$(WXDEBUGFLAG) $(EXTRALIBS_FOR_BASE) $(__UNICOWS_LIB_p) -lkernel32 -luser32 -lgdi32 -lcomdlg32 -lwinspool -lwinmm -lshell32 -lcomctl32 -lole32 -loleaut32 -luuid -lrpcrt4 -ladvapi32 -lwsock32 -lodbc32  $(__WXLIB_CORE_p)  $(__WXLIB_BASE_p)
 endif
 
 ifeq ($(SHARED),0)
@@ -347,10 +353,10 @@ $(OBJS)\stcdll_CellBuffer.o: ../../src/stc/scintilla/src/CellBuffer.cxx
 $(OBJS)\stcdll_ContractionState.o: ../../src/stc/scintilla/src/ContractionState.cxx
        $(CXX) -c -o $@ $(STCDLL_CXXFLAGS) $<
 
-$(OBJS)\stcdll_DocumentAccessor.o: ../../src/stc/scintilla/src/DocumentAccessor.cxx
+$(OBJS)\stcdll_Document.o: ../../src/stc/scintilla/src/Document.cxx
        $(CXX) -c -o $@ $(STCDLL_CXXFLAGS) $<
 
-$(OBJS)\stcdll_Document.o: ../../src/stc/scintilla/src/Document.cxx
+$(OBJS)\stcdll_DocumentAccessor.o: ../../src/stc/scintilla/src/DocumentAccessor.cxx
        $(CXX) -c -o $@ $(STCDLL_CXXFLAGS) $<
 
 $(OBJS)\stcdll_Editor.o: ../../src/stc/scintilla/src/Editor.cxx
@@ -383,6 +389,9 @@ $(OBJS)\stcdll_LexAda.o: ../../src/stc/scintilla/src/LexAda.cxx
 $(OBJS)\stcdll_LexAsm.o: ../../src/stc/scintilla/src/LexAsm.cxx
        $(CXX) -c -o $@ $(STCDLL_CXXFLAGS) $<
 
+$(OBJS)\stcdll_LexAsn1.o: ../../src/stc/scintilla/src/LexAsn1.cxx
+       $(CXX) -c -o $@ $(STCDLL_CXXFLAGS) $<
+
 $(OBJS)\stcdll_LexBaan.o: ../../src/stc/scintilla/src/LexBaan.cxx
        $(CXX) -c -o $@ $(STCDLL_CXXFLAGS) $<
 
@@ -497,6 +506,9 @@ $(OBJS)\stcdll_LexTeX.o: ../../src/stc/scintilla/src/LexTeX.cxx
 $(OBJS)\stcdll_LexVB.o: ../../src/stc/scintilla/src/LexVB.cxx
        $(CXX) -c -o $@ $(STCDLL_CXXFLAGS) $<
 
+$(OBJS)\stcdll_LexVHDL.o: ../../src/stc/scintilla/src/LexVHDL.cxx
+       $(CXX) -c -o $@ $(STCDLL_CXXFLAGS) $<
+
 $(OBJS)\stcdll_LexVerilog.o: ../../src/stc/scintilla/src/LexVerilog.cxx
        $(CXX) -c -o $@ $(STCDLL_CXXFLAGS) $<
 
@@ -515,10 +527,10 @@ $(OBJS)\stcdll_RESearch.o: ../../src/stc/scintilla/src/RESearch.cxx
 $(OBJS)\stcdll_ScintillaBase.o: ../../src/stc/scintilla/src/ScintillaBase.cxx
        $(CXX) -c -o $@ $(STCDLL_CXXFLAGS) $<
 
-$(OBJS)\stcdll_StyleContext.o: ../../src/stc/scintilla/src/StyleContext.cxx
+$(OBJS)\stcdll_Style.o: ../../src/stc/scintilla/src/Style.cxx
        $(CXX) -c -o $@ $(STCDLL_CXXFLAGS) $<
 
-$(OBJS)\stcdll_Style.o: ../../src/stc/scintilla/src/Style.cxx
+$(OBJS)\stcdll_StyleContext.o: ../../src/stc/scintilla/src/StyleContext.cxx
        $(CXX) -c -o $@ $(STCDLL_CXXFLAGS) $<
 
 $(OBJS)\stcdll_UniConversion.o: ../../src/stc/scintilla/src/UniConversion.cxx
@@ -554,10 +566,10 @@ $(OBJS)\stclib_CellBuffer.o: ../../src/stc/scintilla/src/CellBuffer.cxx
 $(OBJS)\stclib_ContractionState.o: ../../src/stc/scintilla/src/ContractionState.cxx
        $(CXX) -c -o $@ $(STCLIB_CXXFLAGS) $<
 
-$(OBJS)\stclib_DocumentAccessor.o: ../../src/stc/scintilla/src/DocumentAccessor.cxx
+$(OBJS)\stclib_Document.o: ../../src/stc/scintilla/src/Document.cxx
        $(CXX) -c -o $@ $(STCLIB_CXXFLAGS) $<
 
-$(OBJS)\stclib_Document.o: ../../src/stc/scintilla/src/Document.cxx
+$(OBJS)\stclib_DocumentAccessor.o: ../../src/stc/scintilla/src/DocumentAccessor.cxx
        $(CXX) -c -o $@ $(STCLIB_CXXFLAGS) $<
 
 $(OBJS)\stclib_Editor.o: ../../src/stc/scintilla/src/Editor.cxx
@@ -590,6 +602,9 @@ $(OBJS)\stclib_LexAda.o: ../../src/stc/scintilla/src/LexAda.cxx
 $(OBJS)\stclib_LexAsm.o: ../../src/stc/scintilla/src/LexAsm.cxx
        $(CXX) -c -o $@ $(STCLIB_CXXFLAGS) $<
 
+$(OBJS)\stclib_LexAsn1.o: ../../src/stc/scintilla/src/LexAsn1.cxx
+       $(CXX) -c -o $@ $(STCLIB_CXXFLAGS) $<
+
 $(OBJS)\stclib_LexBaan.o: ../../src/stc/scintilla/src/LexBaan.cxx
        $(CXX) -c -o $@ $(STCLIB_CXXFLAGS) $<
 
@@ -704,6 +719,9 @@ $(OBJS)\stclib_LexTeX.o: ../../src/stc/scintilla/src/LexTeX.cxx
 $(OBJS)\stclib_LexVB.o: ../../src/stc/scintilla/src/LexVB.cxx
        $(CXX) -c -o $@ $(STCLIB_CXXFLAGS) $<
 
+$(OBJS)\stclib_LexVHDL.o: ../../src/stc/scintilla/src/LexVHDL.cxx
+       $(CXX) -c -o $@ $(STCLIB_CXXFLAGS) $<
+
 $(OBJS)\stclib_LexVerilog.o: ../../src/stc/scintilla/src/LexVerilog.cxx
        $(CXX) -c -o $@ $(STCLIB_CXXFLAGS) $<
 
@@ -722,10 +740,10 @@ $(OBJS)\stclib_RESearch.o: ../../src/stc/scintilla/src/RESearch.cxx
 $(OBJS)\stclib_ScintillaBase.o: ../../src/stc/scintilla/src/ScintillaBase.cxx
        $(CXX) -c -o $@ $(STCLIB_CXXFLAGS) $<
 
-$(OBJS)\stclib_StyleContext.o: ../../src/stc/scintilla/src/StyleContext.cxx
+$(OBJS)\stclib_Style.o: ../../src/stc/scintilla/src/Style.cxx
        $(CXX) -c -o $@ $(STCLIB_CXXFLAGS) $<
 
-$(OBJS)\stclib_Style.o: ../../src/stc/scintilla/src/Style.cxx
+$(OBJS)\stclib_StyleContext.o: ../../src/stc/scintilla/src/StyleContext.cxx
        $(CXX) -c -o $@ $(STCLIB_CXXFLAGS) $<
 
 $(OBJS)\stclib_UniConversion.o: ../../src/stc/scintilla/src/UniConversion.cxx
@@ -741,3 +759,4 @@ $(OBJS)\stclib_XPM.o: ../../src/stc/scintilla/src/XPM.cxx
        $(CXX) -c -o $@ $(STCLIB_CXXFLAGS) $<
 
 .PHONY: all clean
+
index b0b80ec39cd19b496b2a462e1eed41a9fa6ce194..7a9413e271dd6048a9c7a07b584dbd7a50a861f3 100644 (file)
@@ -1,6 +1,6 @@
 # =========================================================================
 #     This makefile was generated by
-#     Bakefile 0.1.4 (http://bakefile.sourceforge.net)
+#     Bakefile 0.1.6 (http://bakefile.sourceforge.net)
 #     Do not modify, all changes will be overwritten!
 # =========================================================================
 
 ### Variables: ###
 
 WX_RELEASE_NODOT = 25
-WX_VERSION_NODOT = $(WX_RELEASE_NODOT)3
+WX_VERSION_NODOT = $(WX_RELEASE_NODOT)4
 OBJS = \
        vc_$(PORTNAME)$(WXUNIVNAME)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WXDLLFLAG)$(CFG)
+LIBDIRNAME = ..\..\src\stc\..\..\..\lib\vc_$(LIBTYPE_SUFFIX)$(CFG)
 SETUPHDIR = \
        $(LIBDIRNAME)\$(PORTNAME)$(WXUNIVNAME)$(WXUNICODEFLAG)$(WXDEBUGFLAG)
 STCDLL_CXXFLAGS = /M$(__RUNTIME_LIBS)$(__DEBUGRUNTIME_4) /DWIN32 \
@@ -36,8 +37,8 @@ STCDLL_OBJECTS =  \
        $(OBJS)\stcdll_CallTip.obj \
        $(OBJS)\stcdll_CellBuffer.obj \
        $(OBJS)\stcdll_ContractionState.obj \
-       $(OBJS)\stcdll_DocumentAccessor.obj \
        $(OBJS)\stcdll_Document.obj \
+       $(OBJS)\stcdll_DocumentAccessor.obj \
        $(OBJS)\stcdll_Editor.obj \
        $(OBJS)\stcdll_ExternalLexer.obj \
        $(OBJS)\stcdll_Indicator.obj \
@@ -48,6 +49,7 @@ STCDLL_OBJECTS =  \
        $(OBJS)\stcdll_LexAVE.obj \
        $(OBJS)\stcdll_LexAda.obj \
        $(OBJS)\stcdll_LexAsm.obj \
+       $(OBJS)\stcdll_LexAsn1.obj \
        $(OBJS)\stcdll_LexBaan.obj \
        $(OBJS)\stcdll_LexBash.obj \
        $(OBJS)\stcdll_LexBullant.obj \
@@ -86,14 +88,15 @@ STCDLL_OBJECTS =  \
        $(OBJS)\stcdll_LexSpecman.obj \
        $(OBJS)\stcdll_LexTeX.obj \
        $(OBJS)\stcdll_LexVB.obj \
+       $(OBJS)\stcdll_LexVHDL.obj \
        $(OBJS)\stcdll_LexVerilog.obj \
        $(OBJS)\stcdll_LexYAML.obj \
        $(OBJS)\stcdll_LineMarker.obj \
        $(OBJS)\stcdll_PropSet.obj \
        $(OBJS)\stcdll_RESearch.obj \
        $(OBJS)\stcdll_ScintillaBase.obj \
-       $(OBJS)\stcdll_StyleContext.obj \
        $(OBJS)\stcdll_Style.obj \
+       $(OBJS)\stcdll_StyleContext.obj \
        $(OBJS)\stcdll_UniConversion.obj \
        $(OBJS)\stcdll_ViewStyle.obj \
        $(OBJS)\stcdll_WindowAccessor.obj \
@@ -115,8 +118,8 @@ STCLIB_OBJECTS =  \
        $(OBJS)\stclib_CallTip.obj \
        $(OBJS)\stclib_CellBuffer.obj \
        $(OBJS)\stclib_ContractionState.obj \
-       $(OBJS)\stclib_DocumentAccessor.obj \
        $(OBJS)\stclib_Document.obj \
+       $(OBJS)\stclib_DocumentAccessor.obj \
        $(OBJS)\stclib_Editor.obj \
        $(OBJS)\stclib_ExternalLexer.obj \
        $(OBJS)\stclib_Indicator.obj \
@@ -127,6 +130,7 @@ STCLIB_OBJECTS =  \
        $(OBJS)\stclib_LexAVE.obj \
        $(OBJS)\stclib_LexAda.obj \
        $(OBJS)\stclib_LexAsm.obj \
+       $(OBJS)\stclib_LexAsn1.obj \
        $(OBJS)\stclib_LexBaan.obj \
        $(OBJS)\stclib_LexBash.obj \
        $(OBJS)\stclib_LexBullant.obj \
@@ -165,14 +169,15 @@ STCLIB_OBJECTS =  \
        $(OBJS)\stclib_LexSpecman.obj \
        $(OBJS)\stclib_LexTeX.obj \
        $(OBJS)\stclib_LexVB.obj \
+       $(OBJS)\stclib_LexVHDL.obj \
        $(OBJS)\stclib_LexVerilog.obj \
        $(OBJS)\stclib_LexYAML.obj \
        $(OBJS)\stclib_LineMarker.obj \
        $(OBJS)\stclib_PropSet.obj \
        $(OBJS)\stclib_RESearch.obj \
        $(OBJS)\stclib_ScintillaBase.obj \
-       $(OBJS)\stclib_StyleContext.obj \
        $(OBJS)\stclib_Style.obj \
+       $(OBJS)\stclib_StyleContext.obj \
        $(OBJS)\stclib_UniConversion.obj \
        $(OBJS)\stclib_ViewStyle.obj \
        $(OBJS)\stclib_WindowAccessor.obj \
@@ -207,6 +212,12 @@ WXUNIVNAME = univ
 !if "$(SHARED)" == "1"
 WXDLLFLAG = dll
 !endif
+!if "$(SHARED)" == "0"
+LIBTYPE_SUFFIX = lib
+!endif
+!if "$(SHARED)" == "1"
+LIBTYPE_SUFFIX = dll
+!endif
 !if "$(MONOLITHIC)" == "0"
 EXTRALIBS_FOR_BASE = 
 !endif
@@ -371,12 +382,6 @@ __DEBUG_DEFINE_p = /D__WXDEBUG__
 !if "$(UNICODE)" == "1"
 __UNICODE_DEFINE_p = /D_UNICODE
 !endif
-!if "$(SHARED)" == "0"
-LIBDIRNAME = ..\..\src\stc\..\..\..\lib\vc_lib$(CFG)
-!endif
-!if "$(SHARED)" == "1"
-LIBDIRNAME = ..\..\src\stc\..\..\..\lib\vc_dll$(CFG)
-!endif
 
 
 all: $(OBJS)
@@ -390,6 +395,7 @@ all: $(__stcdll___depname) $(__stclib___depname)
 clean: 
        -if exist $(OBJS)\*.obj del $(OBJS)\*.obj
        -if exist $(OBJS)\*.res del $(OBJS)\*.res
+       -if exist $(OBJS)\*.pch del $(OBJS)\*.pch
        -if exist $(LIBDIRNAME)\wx$(PORTNAME)$(WXUNIVNAME)$(WX_VERSION_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_stc_vc$(VENDORTAG).dll del $(LIBDIRNAME)\wx$(PORTNAME)$(WXUNIVNAME)$(WX_VERSION_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_stc_vc$(VENDORTAG).dll
        -if exist $(LIBDIRNAME)\wx$(PORTNAME)$(WXUNIVNAME)$(WX_VERSION_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_stc_vc$(VENDORTAG).ilk del $(LIBDIRNAME)\wx$(PORTNAME)$(WXUNIVNAME)$(WX_VERSION_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_stc_vc$(VENDORTAG).ilk
        -if exist $(LIBDIRNAME)\wx$(PORTNAME)$(WXUNIVNAME)$(WX_VERSION_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_stc_vc$(VENDORTAG).pdb del $(LIBDIRNAME)\wx$(PORTNAME)$(WXUNIVNAME)$(WX_VERSION_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_stc_vc$(VENDORTAG).pdb
@@ -432,10 +438,10 @@ $(OBJS)\stcdll_CellBuffer.obj: ../../src/stc\scintilla\src\CellBuffer.cxx
 $(OBJS)\stcdll_ContractionState.obj: ../../src/stc\scintilla\src\ContractionState.cxx
        $(CXX) /c /nologo /TP /Fo$@ $(STCDLL_CXXFLAGS) $**
 
-$(OBJS)\stcdll_DocumentAccessor.obj: ../../src/stc\scintilla\src\DocumentAccessor.cxx
+$(OBJS)\stcdll_Document.obj: ../../src/stc\scintilla\src\Document.cxx
        $(CXX) /c /nologo /TP /Fo$@ $(STCDLL_CXXFLAGS) $**
 
-$(OBJS)\stcdll_Document.obj: ../../src/stc\scintilla\src\Document.cxx
+$(OBJS)\stcdll_DocumentAccessor.obj: ../../src/stc\scintilla\src\DocumentAccessor.cxx
        $(CXX) /c /nologo /TP /Fo$@ $(STCDLL_CXXFLAGS) $**
 
 $(OBJS)\stcdll_Editor.obj: ../../src/stc\scintilla\src\Editor.cxx
@@ -468,6 +474,9 @@ $(OBJS)\stcdll_LexAda.obj: ../../src/stc\scintilla\src\LexAda.cxx
 $(OBJS)\stcdll_LexAsm.obj: ../../src/stc\scintilla\src\LexAsm.cxx
        $(CXX) /c /nologo /TP /Fo$@ $(STCDLL_CXXFLAGS) $**
 
+$(OBJS)\stcdll_LexAsn1.obj: ../../src/stc\scintilla\src\LexAsn1.cxx
+       $(CXX) /c /nologo /TP /Fo$@ $(STCDLL_CXXFLAGS) $**
+
 $(OBJS)\stcdll_LexBaan.obj: ../../src/stc\scintilla\src\LexBaan.cxx
        $(CXX) /c /nologo /TP /Fo$@ $(STCDLL_CXXFLAGS) $**
 
@@ -582,6 +591,9 @@ $(OBJS)\stcdll_LexTeX.obj: ../../src/stc\scintilla\src\LexTeX.cxx
 $(OBJS)\stcdll_LexVB.obj: ../../src/stc\scintilla\src\LexVB.cxx
        $(CXX) /c /nologo /TP /Fo$@ $(STCDLL_CXXFLAGS) $**
 
+$(OBJS)\stcdll_LexVHDL.obj: ../../src/stc\scintilla\src\LexVHDL.cxx
+       $(CXX) /c /nologo /TP /Fo$@ $(STCDLL_CXXFLAGS) $**
+
 $(OBJS)\stcdll_LexVerilog.obj: ../../src/stc\scintilla\src\LexVerilog.cxx
        $(CXX) /c /nologo /TP /Fo$@ $(STCDLL_CXXFLAGS) $**
 
@@ -600,10 +612,10 @@ $(OBJS)\stcdll_RESearch.obj: ../../src/stc\scintilla\src\RESearch.cxx
 $(OBJS)\stcdll_ScintillaBase.obj: ../../src/stc\scintilla\src\ScintillaBase.cxx
        $(CXX) /c /nologo /TP /Fo$@ $(STCDLL_CXXFLAGS) $**
 
-$(OBJS)\stcdll_StyleContext.obj: ../../src/stc\scintilla\src\StyleContext.cxx
+$(OBJS)\stcdll_Style.obj: ../../src/stc\scintilla\src\Style.cxx
        $(CXX) /c /nologo /TP /Fo$@ $(STCDLL_CXXFLAGS) $**
 
-$(OBJS)\stcdll_Style.obj: ../../src/stc\scintilla\src\Style.cxx
+$(OBJS)\stcdll_StyleContext.obj: ../../src/stc\scintilla\src\StyleContext.cxx
        $(CXX) /c /nologo /TP /Fo$@ $(STCDLL_CXXFLAGS) $**
 
 $(OBJS)\stcdll_UniConversion.obj: ../../src/stc\scintilla\src\UniConversion.cxx
@@ -639,10 +651,10 @@ $(OBJS)\stclib_CellBuffer.obj: ../../src/stc\scintilla\src\CellBuffer.cxx
 $(OBJS)\stclib_ContractionState.obj: ../../src/stc\scintilla\src\ContractionState.cxx
        $(CXX) /c /nologo /TP /Fo$@ $(STCLIB_CXXFLAGS) $**
 
-$(OBJS)\stclib_DocumentAccessor.obj: ../../src/stc\scintilla\src\DocumentAccessor.cxx
+$(OBJS)\stclib_Document.obj: ../../src/stc\scintilla\src\Document.cxx
        $(CXX) /c /nologo /TP /Fo$@ $(STCLIB_CXXFLAGS) $**
 
-$(OBJS)\stclib_Document.obj: ../../src/stc\scintilla\src\Document.cxx
+$(OBJS)\stclib_DocumentAccessor.obj: ../../src/stc\scintilla\src\DocumentAccessor.cxx
        $(CXX) /c /nologo /TP /Fo$@ $(STCLIB_CXXFLAGS) $**
 
 $(OBJS)\stclib_Editor.obj: ../../src/stc\scintilla\src\Editor.cxx
@@ -675,6 +687,9 @@ $(OBJS)\stclib_LexAda.obj: ../../src/stc\scintilla\src\LexAda.cxx
 $(OBJS)\stclib_LexAsm.obj: ../../src/stc\scintilla\src\LexAsm.cxx
        $(CXX) /c /nologo /TP /Fo$@ $(STCLIB_CXXFLAGS) $**
 
+$(OBJS)\stclib_LexAsn1.obj: ../../src/stc\scintilla\src\LexAsn1.cxx
+       $(CXX) /c /nologo /TP /Fo$@ $(STCLIB_CXXFLAGS) $**
+
 $(OBJS)\stclib_LexBaan.obj: ../../src/stc\scintilla\src\LexBaan.cxx
        $(CXX) /c /nologo /TP /Fo$@ $(STCLIB_CXXFLAGS) $**
 
@@ -789,6 +804,9 @@ $(OBJS)\stclib_LexTeX.obj: ../../src/stc\scintilla\src\LexTeX.cxx
 $(OBJS)\stclib_LexVB.obj: ../../src/stc\scintilla\src\LexVB.cxx
        $(CXX) /c /nologo /TP /Fo$@ $(STCLIB_CXXFLAGS) $**
 
+$(OBJS)\stclib_LexVHDL.obj: ../../src/stc\scintilla\src\LexVHDL.cxx
+       $(CXX) /c /nologo /TP /Fo$@ $(STCLIB_CXXFLAGS) $**
+
 $(OBJS)\stclib_LexVerilog.obj: ../../src/stc\scintilla\src\LexVerilog.cxx
        $(CXX) /c /nologo /TP /Fo$@ $(STCLIB_CXXFLAGS) $**
 
@@ -807,10 +825,10 @@ $(OBJS)\stclib_RESearch.obj: ../../src/stc\scintilla\src\RESearch.cxx
 $(OBJS)\stclib_ScintillaBase.obj: ../../src/stc\scintilla\src\ScintillaBase.cxx
        $(CXX) /c /nologo /TP /Fo$@ $(STCLIB_CXXFLAGS) $**
 
-$(OBJS)\stclib_StyleContext.obj: ../../src/stc\scintilla\src\StyleContext.cxx
+$(OBJS)\stclib_Style.obj: ../../src/stc\scintilla\src\Style.cxx
        $(CXX) /c /nologo /TP /Fo$@ $(STCLIB_CXXFLAGS) $**
 
-$(OBJS)\stclib_Style.obj: ../../src/stc\scintilla\src\Style.cxx
+$(OBJS)\stclib_StyleContext.obj: ../../src/stc\scintilla\src\StyleContext.cxx
        $(CXX) /c /nologo /TP /Fo$@ $(STCLIB_CXXFLAGS) $**
 
 $(OBJS)\stclib_UniConversion.obj: ../../src/stc\scintilla\src\UniConversion.cxx
@@ -824,3 +842,4 @@ $(OBJS)\stclib_WindowAccessor.obj: ../../src/stc\scintilla\src\WindowAccessor.cx
 
 $(OBJS)\stclib_XPM.obj: ../../src/stc\scintilla\src\XPM.cxx
        $(CXX) /c /nologo /TP /Fo$@ $(STCLIB_CXXFLAGS) $**
+
index 2e04f74e33b257c8c8c4e96efecdebb5d7f7096d..0c78d5166376bf0174f44f39e36358c08d693043 100644 (file)
@@ -1,6 +1,6 @@
 # =========================================================================
 #     This makefile was generated by
-#     Bakefile 0.1.4 (http://bakefile.sourceforge.net)
+#     Bakefile 0.1.6 (http://bakefile.sourceforge.net)
 #     Do not modify, all changes will be overwritten!
 # =========================================================================
 
@@ -62,6 +62,13 @@ WXDLLFLAG =
 !ifeq SHARED 1
 WXDLLFLAG = dll
 !endif
+LIBTYPE_SUFFIX =
+!ifeq SHARED 0
+LIBTYPE_SUFFIX = lib
+!endif
+!ifeq SHARED 1
+LIBTYPE_SUFFIX = dll
+!endif
 EXTRALIBS_FOR_BASE =
 !ifeq MONOLITHIC 0
 EXTRALIBS_FOR_BASE = 
@@ -159,7 +166,14 @@ __EXCEPTIONSFLAG =
 __EXCEPTIONSFLAG = 
 !endif
 !ifeq USE_EXCEPTIONS 1
-__EXCEPTIONSFLAG = -xs
+__EXCEPTIONSFLAG = -xr
+!endif
+__EXCEPTIONSFLAG_0 =
+!ifeq USE_EXCEPTIONS 0
+__EXCEPTIONSFLAG_0 = 
+!endif
+!ifeq USE_EXCEPTIONS 1
+__EXCEPTIONSFLAG_0 = -xs
 !endif
 __WXUNIV_DEFINE_p =
 !ifeq WXUNIV 1
@@ -178,28 +192,23 @@ __UNICODE_DEFINE_p =
 !ifeq UNICODE 1
 __UNICODE_DEFINE_p = -d_UNICODE
 !endif
-LIBDIRNAME =
-!ifeq SHARED 0
-LIBDIRNAME = ..\..\src\stc\..\..\..\lib\wat_lib$(CFG)
-!endif
-!ifeq SHARED 1
-LIBDIRNAME = ..\..\src\stc\..\..\..\lib\wat_dll$(CFG)
-!endif
 
 ### Variables: ###
 
 WX_RELEASE_NODOT = 25
-WX_VERSION_NODOT = $(WX_RELEASE_NODOT)3
+WX_VERSION_NODOT = $(WX_RELEASE_NODOT)4
 OBJS = &
        wat_$(PORTNAME)$(WXUNIVNAME)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WXDLLFLAG)$(CFG)
+LIBDIRNAME = ..\..\src\stc\..\..\..\lib\wat_$(LIBTYPE_SUFFIX)$(CFG)
 SETUPHDIR = &
        $(LIBDIRNAME)\$(PORTNAME)$(WXUNIVNAME)$(WXUNICODEFLAG)$(WXDEBUGFLAG)
 STCDLL_CXXFLAGS = -bd $(__DEBUGINFO_1) $(__OPTIMIZEFLAG) -bm $(__RUNTIME_LIBS) &
        -d__WXMSW__ $(__WXUNIV_DEFINE_p) $(__DEBUG_DEFINE_p) $(__UNICODE_DEFINE_p) &
-       -i=..\..\src\stc\..\..\..\include -i=$(SETUPHDIR) -wcd=549 -wcd=656 -wcd=657 &
-       -i=..\..\src\stc\..\..\include -i=..\..\src\stc\scintilla\include &
-       -i=..\..\src\stc\scintilla\src -d__WX__ -dSCI_LEXER -dLINK_LEXERS &
-       -dWXUSINGDLL -dWXMAKINGDLL_STC $(__EXCEPTIONSFLAG) $(CPPFLAGS) $(CXXFLAGS)
+       -i=..\..\src\stc\..\..\..\include -i=$(SETUPHDIR) -wx -wcd=549 -wcd=656 &
+       -wcd=657 -wcd=667 -i=..\..\src\stc\..\..\include &
+       -i=..\..\src\stc\scintilla\include -i=..\..\src\stc\scintilla\src -d__WX__ &
+       -dSCI_LEXER -dLINK_LEXERS -dWXUSINGDLL -dWXMAKINGDLL_STC $(__EXCEPTIONSFLAG) &
+       $(__EXCEPTIONSFLAG_0) $(CPPFLAGS) $(CXXFLAGS)
 STCDLL_OBJECTS =  &
        $(OBJS)\stcdll_PlatWX.obj &
        $(OBJS)\stcdll_ScintillaWX.obj &
@@ -208,8 +217,8 @@ STCDLL_OBJECTS =  &
        $(OBJS)\stcdll_CallTip.obj &
        $(OBJS)\stcdll_CellBuffer.obj &
        $(OBJS)\stcdll_ContractionState.obj &
-       $(OBJS)\stcdll_DocumentAccessor.obj &
        $(OBJS)\stcdll_Document.obj &
+       $(OBJS)\stcdll_DocumentAccessor.obj &
        $(OBJS)\stcdll_Editor.obj &
        $(OBJS)\stcdll_ExternalLexer.obj &
        $(OBJS)\stcdll_Indicator.obj &
@@ -220,6 +229,7 @@ STCDLL_OBJECTS =  &
        $(OBJS)\stcdll_LexAVE.obj &
        $(OBJS)\stcdll_LexAda.obj &
        $(OBJS)\stcdll_LexAsm.obj &
+       $(OBJS)\stcdll_LexAsn1.obj &
        $(OBJS)\stcdll_LexBaan.obj &
        $(OBJS)\stcdll_LexBash.obj &
        $(OBJS)\stcdll_LexBullant.obj &
@@ -258,24 +268,26 @@ STCDLL_OBJECTS =  &
        $(OBJS)\stcdll_LexSpecman.obj &
        $(OBJS)\stcdll_LexTeX.obj &
        $(OBJS)\stcdll_LexVB.obj &
+       $(OBJS)\stcdll_LexVHDL.obj &
        $(OBJS)\stcdll_LexVerilog.obj &
        $(OBJS)\stcdll_LexYAML.obj &
        $(OBJS)\stcdll_LineMarker.obj &
        $(OBJS)\stcdll_PropSet.obj &
        $(OBJS)\stcdll_RESearch.obj &
        $(OBJS)\stcdll_ScintillaBase.obj &
-       $(OBJS)\stcdll_StyleContext.obj &
        $(OBJS)\stcdll_Style.obj &
+       $(OBJS)\stcdll_StyleContext.obj &
        $(OBJS)\stcdll_UniConversion.obj &
        $(OBJS)\stcdll_ViewStyle.obj &
        $(OBJS)\stcdll_WindowAccessor.obj &
        $(OBJS)\stcdll_XPM.obj
 STCLIB_CXXFLAGS = $(__DEBUGINFO_1) $(__OPTIMIZEFLAG) -bm $(__RUNTIME_LIBS) &
        -d__WXMSW__ $(__WXUNIV_DEFINE_p) $(__DEBUG_DEFINE_p) $(__UNICODE_DEFINE_p) &
-       -i=..\..\src\stc\..\..\..\include -i=$(SETUPHDIR) -wcd=549 -wcd=656 -wcd=657 &
-       -i=..\..\src\stc\..\..\include -i=..\..\src\stc\scintilla\include &
-       -i=..\..\src\stc\scintilla\src -d__WX__ -dSCI_LEXER -dLINK_LEXERS &
-       $(__EXCEPTIONSFLAG) $(CPPFLAGS) $(CXXFLAGS)
+       -i=..\..\src\stc\..\..\..\include -i=$(SETUPHDIR) -wx -wcd=549 -wcd=656 &
+       -wcd=657 -wcd=667 -i=..\..\src\stc\..\..\include &
+       -i=..\..\src\stc\scintilla\include -i=..\..\src\stc\scintilla\src -d__WX__ &
+       -dSCI_LEXER -dLINK_LEXERS $(__EXCEPTIONSFLAG) $(__EXCEPTIONSFLAG_0) &
+       $(CPPFLAGS) $(CXXFLAGS)
 STCLIB_OBJECTS =  &
        $(OBJS)\stclib_PlatWX.obj &
        $(OBJS)\stclib_ScintillaWX.obj &
@@ -284,8 +296,8 @@ STCLIB_OBJECTS =  &
        $(OBJS)\stclib_CallTip.obj &
        $(OBJS)\stclib_CellBuffer.obj &
        $(OBJS)\stclib_ContractionState.obj &
-       $(OBJS)\stclib_DocumentAccessor.obj &
        $(OBJS)\stclib_Document.obj &
+       $(OBJS)\stclib_DocumentAccessor.obj &
        $(OBJS)\stclib_Editor.obj &
        $(OBJS)\stclib_ExternalLexer.obj &
        $(OBJS)\stclib_Indicator.obj &
@@ -296,6 +308,7 @@ STCLIB_OBJECTS =  &
        $(OBJS)\stclib_LexAVE.obj &
        $(OBJS)\stclib_LexAda.obj &
        $(OBJS)\stclib_LexAsm.obj &
+       $(OBJS)\stclib_LexAsn1.obj &
        $(OBJS)\stclib_LexBaan.obj &
        $(OBJS)\stclib_LexBash.obj &
        $(OBJS)\stclib_LexBullant.obj &
@@ -334,14 +347,15 @@ STCLIB_OBJECTS =  &
        $(OBJS)\stclib_LexSpecman.obj &
        $(OBJS)\stclib_LexTeX.obj &
        $(OBJS)\stclib_LexVB.obj &
+       $(OBJS)\stclib_LexVHDL.obj &
        $(OBJS)\stclib_LexVerilog.obj &
        $(OBJS)\stclib_LexYAML.obj &
        $(OBJS)\stclib_LineMarker.obj &
        $(OBJS)\stclib_PropSet.obj &
        $(OBJS)\stclib_RESearch.obj &
        $(OBJS)\stclib_ScintillaBase.obj &
-       $(OBJS)\stclib_StyleContext.obj &
        $(OBJS)\stclib_Style.obj &
+       $(OBJS)\stclib_StyleContext.obj &
        $(OBJS)\stclib_UniConversion.obj &
        $(OBJS)\stclib_ViewStyle.obj &
        $(OBJS)\stclib_WindowAccessor.obj &
@@ -361,6 +375,7 @@ clean : .SYMBOLIC
        -if exist $(OBJS)\*.res del $(OBJS)\*.res
        -if exist $(OBJS)\*.lbc del $(OBJS)\*.lbc
        -if exist $(OBJS)\*.ilk del $(OBJS)\*.ilk
+       -if exist $(OBJS)\*.pch del $(OBJS)\*.pch
        -if exist $(LIBDIRNAME)\wx$(PORTNAME)$(WXUNIVNAME)$(WX_VERSION_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_stc_wat$(VENDORTAG).dll del $(LIBDIRNAME)\wx$(PORTNAME)$(WXUNIVNAME)$(WX_VERSION_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_stc_wat$(VENDORTAG).dll
        -if exist $(LIBDIRNAME)\wx$(PORTNAME)$(WXUNIVNAME)$(WX_RELEASE_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_stc.lib del $(LIBDIRNAME)\wx$(PORTNAME)$(WXUNIVNAME)$(WX_RELEASE_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_stc.lib
        -if exist $(LIBDIRNAME)\wx$(PORTNAME)$(WXUNIVNAME)$(WX_RELEASE_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_stc.lib del $(LIBDIRNAME)\wx$(PORTNAME)$(WXUNIVNAME)$(WX_RELEASE_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_stc.lib
@@ -408,10 +423,10 @@ $(OBJS)\stcdll_CellBuffer.obj :  .AUTODEPEND ../../src/stc\scintilla\src\CellBuf
 $(OBJS)\stcdll_ContractionState.obj :  .AUTODEPEND ../../src/stc\scintilla\src\ContractionState.cxx
        $(CXX) -zq -fo=$^@ $(STCDLL_CXXFLAGS) $<
 
-$(OBJS)\stcdll_DocumentAccessor.obj :  .AUTODEPEND ../../src/stc\scintilla\src\DocumentAccessor.cxx
+$(OBJS)\stcdll_Document.obj :  .AUTODEPEND ../../src/stc\scintilla\src\Document.cxx
        $(CXX) -zq -fo=$^@ $(STCDLL_CXXFLAGS) $<
 
-$(OBJS)\stcdll_Document.obj :  .AUTODEPEND ../../src/stc\scintilla\src\Document.cxx
+$(OBJS)\stcdll_DocumentAccessor.obj :  .AUTODEPEND ../../src/stc\scintilla\src\DocumentAccessor.cxx
        $(CXX) -zq -fo=$^@ $(STCDLL_CXXFLAGS) $<
 
 $(OBJS)\stcdll_Editor.obj :  .AUTODEPEND ../../src/stc\scintilla\src\Editor.cxx
@@ -444,6 +459,9 @@ $(OBJS)\stcdll_LexAda.obj :  .AUTODEPEND ../../src/stc\scintilla\src\LexAda.cxx
 $(OBJS)\stcdll_LexAsm.obj :  .AUTODEPEND ../../src/stc\scintilla\src\LexAsm.cxx
        $(CXX) -zq -fo=$^@ $(STCDLL_CXXFLAGS) $<
 
+$(OBJS)\stcdll_LexAsn1.obj :  .AUTODEPEND ../../src/stc\scintilla\src\LexAsn1.cxx
+       $(CXX) -zq -fo=$^@ $(STCDLL_CXXFLAGS) $<
+
 $(OBJS)\stcdll_LexBaan.obj :  .AUTODEPEND ../../src/stc\scintilla\src\LexBaan.cxx
        $(CXX) -zq -fo=$^@ $(STCDLL_CXXFLAGS) $<
 
@@ -558,6 +576,9 @@ $(OBJS)\stcdll_LexTeX.obj :  .AUTODEPEND ../../src/stc\scintilla\src\LexTeX.cxx
 $(OBJS)\stcdll_LexVB.obj :  .AUTODEPEND ../../src/stc\scintilla\src\LexVB.cxx
        $(CXX) -zq -fo=$^@ $(STCDLL_CXXFLAGS) $<
 
+$(OBJS)\stcdll_LexVHDL.obj :  .AUTODEPEND ../../src/stc\scintilla\src\LexVHDL.cxx
+       $(CXX) -zq -fo=$^@ $(STCDLL_CXXFLAGS) $<
+
 $(OBJS)\stcdll_LexVerilog.obj :  .AUTODEPEND ../../src/stc\scintilla\src\LexVerilog.cxx
        $(CXX) -zq -fo=$^@ $(STCDLL_CXXFLAGS) $<
 
@@ -576,10 +597,10 @@ $(OBJS)\stcdll_RESearch.obj :  .AUTODEPEND ../../src/stc\scintilla\src\RESearch.
 $(OBJS)\stcdll_ScintillaBase.obj :  .AUTODEPEND ../../src/stc\scintilla\src\ScintillaBase.cxx
        $(CXX) -zq -fo=$^@ $(STCDLL_CXXFLAGS) $<
 
-$(OBJS)\stcdll_StyleContext.obj :  .AUTODEPEND ../../src/stc\scintilla\src\StyleContext.cxx
+$(OBJS)\stcdll_Style.obj :  .AUTODEPEND ../../src/stc\scintilla\src\Style.cxx
        $(CXX) -zq -fo=$^@ $(STCDLL_CXXFLAGS) $<
 
-$(OBJS)\stcdll_Style.obj :  .AUTODEPEND ../../src/stc\scintilla\src\Style.cxx
+$(OBJS)\stcdll_StyleContext.obj :  .AUTODEPEND ../../src/stc\scintilla\src\StyleContext.cxx
        $(CXX) -zq -fo=$^@ $(STCDLL_CXXFLAGS) $<
 
 $(OBJS)\stcdll_UniConversion.obj :  .AUTODEPEND ../../src/stc\scintilla\src\UniConversion.cxx
@@ -615,10 +636,10 @@ $(OBJS)\stclib_CellBuffer.obj :  .AUTODEPEND ../../src/stc\scintilla\src\CellBuf
 $(OBJS)\stclib_ContractionState.obj :  .AUTODEPEND ../../src/stc\scintilla\src\ContractionState.cxx
        $(CXX) -zq -fo=$^@ $(STCLIB_CXXFLAGS) $<
 
-$(OBJS)\stclib_DocumentAccessor.obj :  .AUTODEPEND ../../src/stc\scintilla\src\DocumentAccessor.cxx
+$(OBJS)\stclib_Document.obj :  .AUTODEPEND ../../src/stc\scintilla\src\Document.cxx
        $(CXX) -zq -fo=$^@ $(STCLIB_CXXFLAGS) $<
 
-$(OBJS)\stclib_Document.obj :  .AUTODEPEND ../../src/stc\scintilla\src\Document.cxx
+$(OBJS)\stclib_DocumentAccessor.obj :  .AUTODEPEND ../../src/stc\scintilla\src\DocumentAccessor.cxx
        $(CXX) -zq -fo=$^@ $(STCLIB_CXXFLAGS) $<
 
 $(OBJS)\stclib_Editor.obj :  .AUTODEPEND ../../src/stc\scintilla\src\Editor.cxx
@@ -651,6 +672,9 @@ $(OBJS)\stclib_LexAda.obj :  .AUTODEPEND ../../src/stc\scintilla\src\LexAda.cxx
 $(OBJS)\stclib_LexAsm.obj :  .AUTODEPEND ../../src/stc\scintilla\src\LexAsm.cxx
        $(CXX) -zq -fo=$^@ $(STCLIB_CXXFLAGS) $<
 
+$(OBJS)\stclib_LexAsn1.obj :  .AUTODEPEND ../../src/stc\scintilla\src\LexAsn1.cxx
+       $(CXX) -zq -fo=$^@ $(STCLIB_CXXFLAGS) $<
+
 $(OBJS)\stclib_LexBaan.obj :  .AUTODEPEND ../../src/stc\scintilla\src\LexBaan.cxx
        $(CXX) -zq -fo=$^@ $(STCLIB_CXXFLAGS) $<
 
@@ -765,6 +789,9 @@ $(OBJS)\stclib_LexTeX.obj :  .AUTODEPEND ../../src/stc\scintilla\src\LexTeX.cxx
 $(OBJS)\stclib_LexVB.obj :  .AUTODEPEND ../../src/stc\scintilla\src\LexVB.cxx
        $(CXX) -zq -fo=$^@ $(STCLIB_CXXFLAGS) $<
 
+$(OBJS)\stclib_LexVHDL.obj :  .AUTODEPEND ../../src/stc\scintilla\src\LexVHDL.cxx
+       $(CXX) -zq -fo=$^@ $(STCLIB_CXXFLAGS) $<
+
 $(OBJS)\stclib_LexVerilog.obj :  .AUTODEPEND ../../src/stc\scintilla\src\LexVerilog.cxx
        $(CXX) -zq -fo=$^@ $(STCLIB_CXXFLAGS) $<
 
@@ -783,10 +810,10 @@ $(OBJS)\stclib_RESearch.obj :  .AUTODEPEND ../../src/stc\scintilla\src\RESearch.
 $(OBJS)\stclib_ScintillaBase.obj :  .AUTODEPEND ../../src/stc\scintilla\src\ScintillaBase.cxx
        $(CXX) -zq -fo=$^@ $(STCLIB_CXXFLAGS) $<
 
-$(OBJS)\stclib_StyleContext.obj :  .AUTODEPEND ../../src/stc\scintilla\src\StyleContext.cxx
+$(OBJS)\stclib_Style.obj :  .AUTODEPEND ../../src/stc\scintilla\src\Style.cxx
        $(CXX) -zq -fo=$^@ $(STCLIB_CXXFLAGS) $<
 
-$(OBJS)\stclib_Style.obj :  .AUTODEPEND ../../src/stc\scintilla\src\Style.cxx
+$(OBJS)\stclib_StyleContext.obj :  .AUTODEPEND ../../src/stc\scintilla\src\StyleContext.cxx
        $(CXX) -zq -fo=$^@ $(STCLIB_CXXFLAGS) $<
 
 $(OBJS)\stclib_UniConversion.obj :  .AUTODEPEND ../../src/stc\scintilla\src\UniConversion.cxx
@@ -800,3 +827,4 @@ $(OBJS)\stclib_WindowAccessor.obj :  .AUTODEPEND ../../src/stc\scintilla\src\Win
 
 $(OBJS)\stclib_XPM.obj :  .AUTODEPEND ../../src/stc\scintilla\src\XPM.cxx
        $(CXX) -zq -fo=$^@ $(STCLIB_CXXFLAGS) $<
+
index 2ce95a44410c3cffb45f96fa7334b6f73cf8b2fb..7ec877db25d61b2fe79252b152c9eb6de7be3386 100644 (file)
@@ -16,8 +16,8 @@
         scintilla/src/CallTip.cxx
         scintilla/src/CellBuffer.cxx
         scintilla/src/ContractionState.cxx
-        scintilla/src/DocumentAccessor.cxx
         scintilla/src/Document.cxx
+        scintilla/src/DocumentAccessor.cxx
         scintilla/src/Editor.cxx
         scintilla/src/ExternalLexer.cxx
         scintilla/src/Indicator.cxx
@@ -28,6 +28,7 @@
         scintilla/src/LexAVE.cxx
         scintilla/src/LexAda.cxx
         scintilla/src/LexAsm.cxx
+        scintilla/src/LexAsn1.cxx
         scintilla/src/LexBaan.cxx
         scintilla/src/LexBash.cxx
         scintilla/src/LexBullant.cxx
         scintilla/src/LexSpecman.cxx
         scintilla/src/LexTeX.cxx
         scintilla/src/LexVB.cxx
+        scintilla/src/LexVHDL.cxx
         scintilla/src/LexVerilog.cxx
         scintilla/src/LexYAML.cxx
         scintilla/src/LineMarker.cxx
         scintilla/src/PropSet.cxx
         scintilla/src/RESearch.cxx
         scintilla/src/ScintillaBase.cxx
-        scintilla/src/StyleContext.cxx
         scintilla/src/Style.cxx
+        scintilla/src/StyleContext.cxx
         scintilla/src/UniConversion.cxx
         scintilla/src/ViewStyle.cxx
         scintilla/src/WindowAccessor.cxx
index 8c64a9a9ae056815b7bf000d9af0dc9efb02da2f..e54aaf9e1d78e6ebacd42a71192a6b3abb798de8 100644 (file)
@@ -55,18 +55,18 @@ RSC=rc.exe
 # PROP Output_Dir "..\..\src\stc\..\..\..\lib\vc_dll"
 # PROP Intermediate_Dir "vc_mswunivudll\stc"
 # PROP Target_Dir ""
-# ADD BASE CPP /nologo /FD /MD /O1 /GR /GX /I "..\..\src\stc\..\..\..\include" /I "..\..\src\stc\..\..\..\lib\vc_dll\mswunivu" /W4 /Fd..\..\src\stc\..\..\..\lib\vc_dll\wxmswuniv253u_stc_vc_custom.pdb /I "..\..\src\stc\..\..\include" /I "..\..\src\stc\scintilla\include" /I "..\..\src\stc\scintilla\src" /D "WIN32" /D "_USRDLL" /D "DLL_EXPORTS" /D "__WXMSW__" /D "__WXUNIVERSAL__" /D "_UNICODE" /D "__WX__" /D "SCI_LEXER" /D "LINK_LEXERS" /D "WXUSINGDLL" /D "WXMAKINGDLL_STC" /c
-# ADD CPP /nologo /FD /MD /O1 /GR /GX /I "..\..\src\stc\..\..\..\include" /I "..\..\src\stc\..\..\..\lib\vc_dll\mswunivu" /W4 /Fd..\..\src\stc\..\..\..\lib\vc_dll\wxmswuniv253u_stc_vc_custom.pdb /I "..\..\src\stc\..\..\include" /I "..\..\src\stc\scintilla\include" /I "..\..\src\stc\scintilla\src" /D "WIN32" /D "_USRDLL" /D "DLL_EXPORTS" /D "__WXMSW__" /D "__WXUNIVERSAL__" /D "_UNICODE" /D "__WX__" /D "SCI_LEXER" /D "LINK_LEXERS" /D "WXUSINGDLL" /D "WXMAKINGDLL_STC" /c
+# ADD BASE CPP /nologo /FD /MD /O2 /GR /GX /I "..\..\src\stc\..\..\..\include" /I "..\..\src\stc\..\..\..\lib\vc_dll\mswunivu" /W4 /Fd..\..\src\stc\..\..\..\lib\vc_dll\wxmswuniv254u_stc_vc_custom.pdb /I "..\..\src\stc\..\..\include" /I "..\..\src\stc\scintilla\include" /I "..\..\src\stc\scintilla\src" /D "WIN32" /D "_USRDLL" /D "DLL_EXPORTS" /D "__WXMSW__" /D "__WXUNIVERSAL__" /D "_UNICODE" /D "__WX__" /D "SCI_LEXER" /D "LINK_LEXERS" /D "WXUSINGDLL" /D "WXMAKINGDLL_STC" /c
+# ADD CPP /nologo /FD /MD /O2 /GR /GX /I "..\..\src\stc\..\..\..\include" /I "..\..\src\stc\..\..\..\lib\vc_dll\mswunivu" /W4 /Fd..\..\src\stc\..\..\..\lib\vc_dll\wxmswuniv254u_stc_vc_custom.pdb /I "..\..\src\stc\..\..\include" /I "..\..\src\stc\scintilla\include" /I "..\..\src\stc\scintilla\src" /D "WIN32" /D "_USRDLL" /D "DLL_EXPORTS" /D "__WXMSW__" /D "__WXUNIVERSAL__" /D "_UNICODE" /D "__WX__" /D "SCI_LEXER" /D "LINK_LEXERS" /D "WXUSINGDLL" /D "WXMAKINGDLL_STC" /c
 # ADD BASE MTL /nologo /D "WIN32" /D "_USRDLL" /D "DLL_EXPORTS" /D "__WXMSW__" /D "__WXUNIVERSAL__" /D "_UNICODE" /D "__WX__" /D "SCI_LEXER" /D "LINK_LEXERS" /D "WXUSINGDLL" /D "WXMAKINGDLL_STC" /mktyplib203 /win32
 # ADD MTL /nologo /D "WIN32" /D "_USRDLL" /D "DLL_EXPORTS" /D "__WXMSW__" /D "__WXUNIVERSAL__" /D "_UNICODE" /D "__WX__" /D "SCI_LEXER" /D "LINK_LEXERS" /D "WXUSINGDLL" /D "WXMAKINGDLL_STC" /mktyplib203 /win32
-# ADD BASE RSC /l 0x405 /d "__WXMSW__" /d "__WXUNIVERSAL__" /d "_UNICODE" /i "..\..\src\stc\..\..\..\include" /i "..\..\src\stc\..\..\..\lib\vc_dll\mswunivu" /i "..\..\src\stc\..\..\include" /i "..\..\src\stc\scintilla\include" /i "..\..\src\stc\scintilla\src" /d "__WX__" /d "SCI_LEXER" /d "LINK_LEXERS" /d "WXUSINGDLL" /d WXMAKINGDLL_STC
-# ADD RSC /l 0x405 /d "__WXMSW__" /d "__WXUNIVERSAL__" /d "_UNICODE" /i "..\..\src\stc\..\..\..\include" /i "..\..\src\stc\..\..\..\lib\vc_dll\mswunivu" /i "..\..\src\stc\..\..\include" /i "..\..\src\stc\scintilla\include" /i "..\..\src\stc\scintilla\src" /d "__WX__" /d "SCI_LEXER" /d "LINK_LEXERS" /d "WXUSINGDLL" /d WXMAKINGDLL_STC
+# ADD BASE RSC /l 0x409 /d "__WXMSW__" /d "__WXUNIVERSAL__" /d "_UNICODE" /i "..\..\src\stc\..\..\..\include" /i "..\..\src\stc\..\..\..\lib\vc_dll\mswunivu" /i "..\..\src\stc\..\..\include" /i "..\..\src\stc\scintilla\include" /i "..\..\src\stc\scintilla\src" /d "__WX__" /d "SCI_LEXER" /d "LINK_LEXERS" /d "WXUSINGDLL" /d WXMAKINGDLL_STC
+# ADD RSC /l 0x409 /d "__WXMSW__" /d "__WXUNIVERSAL__" /d "_UNICODE" /i "..\..\src\stc\..\..\..\include" /i "..\..\src\stc\..\..\..\lib\vc_dll\mswunivu" /i "..\..\src\stc\..\..\include" /i "..\..\src\stc\scintilla\include" /i "..\..\src\stc\scintilla\src" /d "__WX__" /d "SCI_LEXER" /d "LINK_LEXERS" /d "WXUSINGDLL" /d WXMAKINGDLL_STC
 BSC32=bscmake.exe
 # ADD BASE BSC32 /nologo
 # ADD BSC32 /nologo
 LINK32=link.exe
-# ADD BASE LINK32 wxtiff.lib wxjpeg.lib wxpng.lib wxzlib.lib wxregexu.lib wxexpat.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib oleacc.lib odbc32.lib wxmswuniv25u_core.lib wxbase25u.lib /nologo /dll /machine:i386 /out:"..\..\src\stc\..\..\..\lib\vc_dll\wxmswuniv253u_stc_vc_custom.dll" /libpath:"..\..\src\stc\..\..\..\lib\vc_dll" /implib:"..\..\src\stc\..\..\..\lib\vc_dll\wxmswuniv25u_stc.lib"
-# ADD LINK32 wxtiff.lib wxjpeg.lib wxpng.lib wxzlib.lib wxregexu.lib wxexpat.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib oleacc.lib odbc32.lib wxmswuniv25u_core.lib wxbase25u.lib /nologo /dll /machine:i386 /out:"..\..\src\stc\..\..\..\lib\vc_dll\wxmswuniv253u_stc_vc_custom.dll" /libpath:"..\..\src\stc\..\..\..\lib\vc_dll" /implib:"..\..\src\stc\..\..\..\lib\vc_dll\wxmswuniv25u_stc.lib"
+# ADD BASE LINK32 wxtiff.lib wxjpeg.lib wxpng.lib wxzlib.lib wxregexu.lib wxexpat.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib oleacc.lib odbc32.lib wxmswuniv25u_core.lib wxbase25u.lib /nologo /dll /machine:i386 /out:"..\..\src\stc\..\..\..\lib\vc_dll\wxmswuniv254u_stc_vc_custom.dll" /libpath:"..\..\src\stc\..\..\..\lib\vc_dll" /implib:"..\..\src\stc\..\..\..\lib\vc_dll\wxmswuniv25u_stc.lib"
+# ADD LINK32 wxtiff.lib wxjpeg.lib wxpng.lib wxzlib.lib wxregexu.lib wxexpat.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib oleacc.lib odbc32.lib wxmswuniv25u_core.lib wxbase25u.lib /nologo /dll /machine:i386 /out:"..\..\src\stc\..\..\..\lib\vc_dll\wxmswuniv254u_stc_vc_custom.dll" /libpath:"..\..\src\stc\..\..\..\lib\vc_dll" /implib:"..\..\src\stc\..\..\..\lib\vc_dll\wxmswuniv25u_stc.lib"
 
 !ELSEIF  "$(CFG)" == "stc - Win32 DLL Universal Unicode Debug"
 
@@ -80,18 +80,18 @@ LINK32=link.exe
 # PROP Output_Dir "..\..\src\stc\..\..\..\lib\vc_dll"
 # PROP Intermediate_Dir "vc_mswunivuddll\stc"
 # PROP Target_Dir ""
-# ADD BASE CPP /nologo /FD /MDd /Od /GR /GX /I "..\..\src\stc\..\..\..\include" /I "..\..\src\stc\..\..\..\lib\vc_dll\mswunivud" /W4 /Zi /Gm /GZ /Fd..\..\src\stc\..\..\..\lib\vc_dll\wxmswuniv253ud_stc_vc_custom.pdb /I "..\..\src\stc\..\..\include" /I "..\..\src\stc\scintilla\include" /I "..\..\src\stc\scintilla\src" /D "WIN32" /D "_USRDLL" /D "DLL_EXPORTS" /D "_DEBUG" /D "__WXMSW__" /D "__WXUNIVERSAL__" /D "__WXDEBUG__" /D "_UNICODE" /D "__WX__" /D "SCI_LEXER" /D "LINK_LEXERS" /D "WXUSINGDLL" /D "WXMAKINGDLL_STC" /c
-# ADD CPP /nologo /FD /MDd /Od /GR /GX /I "..\..\src\stc\..\..\..\include" /I "..\..\src\stc\..\..\..\lib\vc_dll\mswunivud" /W4 /Zi /Gm /GZ /Fd..\..\src\stc\..\..\..\lib\vc_dll\wxmswuniv253ud_stc_vc_custom.pdb /I "..\..\src\stc\..\..\include" /I "..\..\src\stc\scintilla\include" /I "..\..\src\stc\scintilla\src" /D "WIN32" /D "_USRDLL" /D "DLL_EXPORTS" /D "_DEBUG" /D "__WXMSW__" /D "__WXUNIVERSAL__" /D "__WXDEBUG__" /D "_UNICODE" /D "__WX__" /D "SCI_LEXER" /D "LINK_LEXERS" /D "WXUSINGDLL" /D "WXMAKINGDLL_STC" /c
+# ADD BASE CPP /nologo /FD /MDd /Od /GR /GX /I "..\..\src\stc\..\..\..\include" /I "..\..\src\stc\..\..\..\lib\vc_dll\mswunivud" /W4 /Zi /Gm /GZ /Fd..\..\src\stc\..\..\..\lib\vc_dll\wxmswuniv254ud_stc_vc_custom.pdb /I "..\..\src\stc\..\..\include" /I "..\..\src\stc\scintilla\include" /I "..\..\src\stc\scintilla\src" /D "WIN32" /D "_USRDLL" /D "DLL_EXPORTS" /D "_DEBUG" /D "__WXMSW__" /D "__WXUNIVERSAL__" /D "__WXDEBUG__" /D "_UNICODE" /D "__WX__" /D "SCI_LEXER" /D "LINK_LEXERS" /D "WXUSINGDLL" /D "WXMAKINGDLL_STC" /c
+# ADD CPP /nologo /FD /MDd /Od /GR /GX /I "..\..\src\stc\..\..\..\include" /I "..\..\src\stc\..\..\..\lib\vc_dll\mswunivud" /W4 /Zi /Gm /GZ /Fd..\..\src\stc\..\..\..\lib\vc_dll\wxmswuniv254ud_stc_vc_custom.pdb /I "..\..\src\stc\..\..\include" /I "..\..\src\stc\scintilla\include" /I "..\..\src\stc\scintilla\src" /D "WIN32" /D "_USRDLL" /D "DLL_EXPORTS" /D "_DEBUG" /D "__WXMSW__" /D "__WXUNIVERSAL__" /D "__WXDEBUG__" /D "_UNICODE" /D "__WX__" /D "SCI_LEXER" /D "LINK_LEXERS" /D "WXUSINGDLL" /D "WXMAKINGDLL_STC" /c
 # ADD BASE MTL /nologo /D "WIN32" /D "_USRDLL" /D "DLL_EXPORTS" /D "_DEBUG" /D "__WXMSW__" /D "__WXUNIVERSAL__" /D "__WXDEBUG__" /D "_UNICODE" /D "__WX__" /D "SCI_LEXER" /D "LINK_LEXERS" /D "WXUSINGDLL" /D "WXMAKINGDLL_STC" /mktyplib203 /win32
 # ADD MTL /nologo /D "WIN32" /D "_USRDLL" /D "DLL_EXPORTS" /D "_DEBUG" /D "__WXMSW__" /D "__WXUNIVERSAL__" /D "__WXDEBUG__" /D "_UNICODE" /D "__WX__" /D "SCI_LEXER" /D "LINK_LEXERS" /D "WXUSINGDLL" /D "WXMAKINGDLL_STC" /mktyplib203 /win32
-# ADD BASE RSC /l 0x405 /d "_DEBUG" /d "__WXMSW__" /d "__WXUNIVERSAL__" /d "__WXDEBUG__" /d "_UNICODE" /i "..\..\src\stc\..\..\..\include" /i "..\..\src\stc\..\..\..\lib\vc_dll\mswunivud" /i "..\..\src\stc\..\..\include" /i "..\..\src\stc\scintilla\include" /i "..\..\src\stc\scintilla\src" /d "__WX__" /d "SCI_LEXER" /d "LINK_LEXERS" /d "WXUSINGDLL" /d WXMAKINGDLL_STC
-# ADD RSC /l 0x405 /d "_DEBUG" /d "__WXMSW__" /d "__WXUNIVERSAL__" /d "__WXDEBUG__" /d "_UNICODE" /i "..\..\src\stc\..\..\..\include" /i "..\..\src\stc\..\..\..\lib\vc_dll\mswunivud" /i "..\..\src\stc\..\..\include" /i "..\..\src\stc\scintilla\include" /i "..\..\src\stc\scintilla\src" /d "__WX__" /d "SCI_LEXER" /d "LINK_LEXERS" /d "WXUSINGDLL" /d WXMAKINGDLL_STC
+# ADD BASE RSC /l 0x409 /d "_DEBUG" /d "__WXMSW__" /d "__WXUNIVERSAL__" /d "__WXDEBUG__" /d "_UNICODE" /i "..\..\src\stc\..\..\..\include" /i "..\..\src\stc\..\..\..\lib\vc_dll\mswunivud" /i "..\..\src\stc\..\..\include" /i "..\..\src\stc\scintilla\include" /i "..\..\src\stc\scintilla\src" /d "__WX__" /d "SCI_LEXER" /d "LINK_LEXERS" /d "WXUSINGDLL" /d WXMAKINGDLL_STC
+# ADD RSC /l 0x409 /d "_DEBUG" /d "__WXMSW__" /d "__WXUNIVERSAL__" /d "__WXDEBUG__" /d "_UNICODE" /i "..\..\src\stc\..\..\..\include" /i "..\..\src\stc\..\..\..\lib\vc_dll\mswunivud" /i "..\..\src\stc\..\..\include" /i "..\..\src\stc\scintilla\include" /i "..\..\src\stc\scintilla\src" /d "__WX__" /d "SCI_LEXER" /d "LINK_LEXERS" /d "WXUSINGDLL" /d WXMAKINGDLL_STC
 BSC32=bscmake.exe
 # ADD BASE BSC32 /nologo
 # ADD BSC32 /nologo
 LINK32=link.exe
-# ADD BASE LINK32 wxtiffd.lib wxjpegd.lib wxpngd.lib wxzlibd.lib wxregexud.lib wxexpatd.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib oleacc.lib odbc32.lib wxmswuniv25ud_core.lib wxbase25ud.lib /nologo /dll /machine:i386 /out:"..\..\src\stc\..\..\..\lib\vc_dll\wxmswuniv253ud_stc_vc_custom.dll" /libpath:"..\..\src\stc\..\..\..\lib\vc_dll" /implib:"..\..\src\stc\..\..\..\lib\vc_dll\wxmswuniv25ud_stc.lib" /debug
-# ADD LINK32 wxtiffd.lib wxjpegd.lib wxpngd.lib wxzlibd.lib wxregexud.lib wxexpatd.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib oleacc.lib odbc32.lib wxmswuniv25ud_core.lib wxbase25ud.lib /nologo /dll /machine:i386 /out:"..\..\src\stc\..\..\..\lib\vc_dll\wxmswuniv253ud_stc_vc_custom.dll" /libpath:"..\..\src\stc\..\..\..\lib\vc_dll" /implib:"..\..\src\stc\..\..\..\lib\vc_dll\wxmswuniv25ud_stc.lib" /debug
+# ADD BASE LINK32 wxtiffd.lib wxjpegd.lib wxpngd.lib wxzlibd.lib wxregexud.lib wxexpatd.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib oleacc.lib odbc32.lib wxmswuniv25ud_core.lib wxbase25ud.lib /nologo /dll /machine:i386 /out:"..\..\src\stc\..\..\..\lib\vc_dll\wxmswuniv254ud_stc_vc_custom.dll" /libpath:"..\..\src\stc\..\..\..\lib\vc_dll" /implib:"..\..\src\stc\..\..\..\lib\vc_dll\wxmswuniv25ud_stc.lib" /debug
+# ADD LINK32 wxtiffd.lib wxjpegd.lib wxpngd.lib wxzlibd.lib wxregexud.lib wxexpatd.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib oleacc.lib odbc32.lib wxmswuniv25ud_core.lib wxbase25ud.lib /nologo /dll /machine:i386 /out:"..\..\src\stc\..\..\..\lib\vc_dll\wxmswuniv254ud_stc_vc_custom.dll" /libpath:"..\..\src\stc\..\..\..\lib\vc_dll" /implib:"..\..\src\stc\..\..\..\lib\vc_dll\wxmswuniv25ud_stc.lib" /debug
 
 !ELSEIF  "$(CFG)" == "stc - Win32 DLL Universal Release"
 
@@ -105,18 +105,18 @@ LINK32=link.exe
 # PROP Output_Dir "..\..\src\stc\..\..\..\lib\vc_dll"
 # PROP Intermediate_Dir "vc_mswunivdll\stc"
 # PROP Target_Dir ""
-# ADD BASE CPP /nologo /FD /MD /O1 /GR /GX /I "..\..\src\stc\..\..\..\include" /I "..\..\src\stc\..\..\..\lib\vc_dll\mswuniv" /W4 /Fd..\..\src\stc\..\..\..\lib\vc_dll\wxmswuniv253_stc_vc_custom.pdb /I "..\..\src\stc\..\..\include" /I "..\..\src\stc\scintilla\include" /I "..\..\src\stc\scintilla\src" /D "WIN32" /D "_USRDLL" /D "DLL_EXPORTS" /D "__WXMSW__" /D "__WXUNIVERSAL__" /D "__WX__" /D "SCI_LEXER" /D "LINK_LEXERS" /D "WXUSINGDLL" /D "WXMAKINGDLL_STC" /c
-# ADD CPP /nologo /FD /MD /O1 /GR /GX /I "..\..\src\stc\..\..\..\include" /I "..\..\src\stc\..\..\..\lib\vc_dll\mswuniv" /W4 /Fd..\..\src\stc\..\..\..\lib\vc_dll\wxmswuniv253_stc_vc_custom.pdb /I "..\..\src\stc\..\..\include" /I "..\..\src\stc\scintilla\include" /I "..\..\src\stc\scintilla\src" /D "WIN32" /D "_USRDLL" /D "DLL_EXPORTS" /D "__WXMSW__" /D "__WXUNIVERSAL__" /D "__WX__" /D "SCI_LEXER" /D "LINK_LEXERS" /D "WXUSINGDLL" /D "WXMAKINGDLL_STC" /c
+# ADD BASE CPP /nologo /FD /MD /O2 /GR /GX /I "..\..\src\stc\..\..\..\include" /I "..\..\src\stc\..\..\..\lib\vc_dll\mswuniv" /W4 /Fd..\..\src\stc\..\..\..\lib\vc_dll\wxmswuniv254_stc_vc_custom.pdb /I "..\..\src\stc\..\..\include" /I "..\..\src\stc\scintilla\include" /I "..\..\src\stc\scintilla\src" /D "WIN32" /D "_USRDLL" /D "DLL_EXPORTS" /D "__WXMSW__" /D "__WXUNIVERSAL__" /D "__WX__" /D "SCI_LEXER" /D "LINK_LEXERS" /D "WXUSINGDLL" /D "WXMAKINGDLL_STC" /c
+# ADD CPP /nologo /FD /MD /O2 /GR /GX /I "..\..\src\stc\..\..\..\include" /I "..\..\src\stc\..\..\..\lib\vc_dll\mswuniv" /W4 /Fd..\..\src\stc\..\..\..\lib\vc_dll\wxmswuniv254_stc_vc_custom.pdb /I "..\..\src\stc\..\..\include" /I "..\..\src\stc\scintilla\include" /I "..\..\src\stc\scintilla\src" /D "WIN32" /D "_USRDLL" /D "DLL_EXPORTS" /D "__WXMSW__" /D "__WXUNIVERSAL__" /D "__WX__" /D "SCI_LEXER" /D "LINK_LEXERS" /D "WXUSINGDLL" /D "WXMAKINGDLL_STC" /c
 # ADD BASE MTL /nologo /D "WIN32" /D "_USRDLL" /D "DLL_EXPORTS" /D "__WXMSW__" /D "__WXUNIVERSAL__" /D "__WX__" /D "SCI_LEXER" /D "LINK_LEXERS" /D "WXUSINGDLL" /D "WXMAKINGDLL_STC" /mktyplib203 /win32
 # ADD MTL /nologo /D "WIN32" /D "_USRDLL" /D "DLL_EXPORTS" /D "__WXMSW__" /D "__WXUNIVERSAL__" /D "__WX__" /D "SCI_LEXER" /D "LINK_LEXERS" /D "WXUSINGDLL" /D "WXMAKINGDLL_STC" /mktyplib203 /win32
-# ADD BASE RSC /l 0x405 /d "__WXMSW__" /d "__WXUNIVERSAL__" /i "..\..\src\stc\..\..\..\include" /i "..\..\src\stc\..\..\..\lib\vc_dll\mswuniv" /i "..\..\src\stc\..\..\include" /i "..\..\src\stc\scintilla\include" /i "..\..\src\stc\scintilla\src" /d "__WX__" /d "SCI_LEXER" /d "LINK_LEXERS" /d "WXUSINGDLL" /d WXMAKINGDLL_STC
-# ADD RSC /l 0x405 /d "__WXMSW__" /d "__WXUNIVERSAL__" /i "..\..\src\stc\..\..\..\include" /i "..\..\src\stc\..\..\..\lib\vc_dll\mswuniv" /i "..\..\src\stc\..\..\include" /i "..\..\src\stc\scintilla\include" /i "..\..\src\stc\scintilla\src" /d "__WX__" /d "SCI_LEXER" /d "LINK_LEXERS" /d "WXUSINGDLL" /d WXMAKINGDLL_STC
+# ADD BASE RSC /l 0x409 /d "__WXMSW__" /d "__WXUNIVERSAL__" /i "..\..\src\stc\..\..\..\include" /i "..\..\src\stc\..\..\..\lib\vc_dll\mswuniv" /i "..\..\src\stc\..\..\include" /i "..\..\src\stc\scintilla\include" /i "..\..\src\stc\scintilla\src" /d "__WX__" /d "SCI_LEXER" /d "LINK_LEXERS" /d "WXUSINGDLL" /d WXMAKINGDLL_STC
+# ADD RSC /l 0x409 /d "__WXMSW__" /d "__WXUNIVERSAL__" /i "..\..\src\stc\..\..\..\include" /i "..\..\src\stc\..\..\..\lib\vc_dll\mswuniv" /i "..\..\src\stc\..\..\include" /i "..\..\src\stc\scintilla\include" /i "..\..\src\stc\scintilla\src" /d "__WX__" /d "SCI_LEXER" /d "LINK_LEXERS" /d "WXUSINGDLL" /d WXMAKINGDLL_STC
 BSC32=bscmake.exe
 # ADD BASE BSC32 /nologo
 # ADD BSC32 /nologo
 LINK32=link.exe
-# ADD BASE LINK32 wxtiff.lib wxjpeg.lib wxpng.lib wxzlib.lib wxregex.lib wxexpat.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib oleacc.lib odbc32.lib wxmswuniv25_core.lib wxbase25.lib /nologo /dll /machine:i386 /out:"..\..\src\stc\..\..\..\lib\vc_dll\wxmswuniv253_stc_vc_custom.dll" /libpath:"..\..\src\stc\..\..\..\lib\vc_dll" /implib:"..\..\src\stc\..\..\..\lib\vc_dll\wxmswuniv25_stc.lib"
-# ADD LINK32 wxtiff.lib wxjpeg.lib wxpng.lib wxzlib.lib wxregex.lib wxexpat.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib oleacc.lib odbc32.lib wxmswuniv25_core.lib wxbase25.lib /nologo /dll /machine:i386 /out:"..\..\src\stc\..\..\..\lib\vc_dll\wxmswuniv253_stc_vc_custom.dll" /libpath:"..\..\src\stc\..\..\..\lib\vc_dll" /implib:"..\..\src\stc\..\..\..\lib\vc_dll\wxmswuniv25_stc.lib"
+# ADD BASE LINK32 wxtiff.lib wxjpeg.lib wxpng.lib wxzlib.lib wxregex.lib wxexpat.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib oleacc.lib odbc32.lib wxmswuniv25_core.lib wxbase25.lib /nologo /dll /machine:i386 /out:"..\..\src\stc\..\..\..\lib\vc_dll\wxmswuniv254_stc_vc_custom.dll" /libpath:"..\..\src\stc\..\..\..\lib\vc_dll" /implib:"..\..\src\stc\..\..\..\lib\vc_dll\wxmswuniv25_stc.lib"
+# ADD LINK32 wxtiff.lib wxjpeg.lib wxpng.lib wxzlib.lib wxregex.lib wxexpat.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib oleacc.lib odbc32.lib wxmswuniv25_core.lib wxbase25.lib /nologo /dll /machine:i386 /out:"..\..\src\stc\..\..\..\lib\vc_dll\wxmswuniv254_stc_vc_custom.dll" /libpath:"..\..\src\stc\..\..\..\lib\vc_dll" /implib:"..\..\src\stc\..\..\..\lib\vc_dll\wxmswuniv25_stc.lib"
 
 !ELSEIF  "$(CFG)" == "stc - Win32 DLL Universal Debug"
 
@@ -130,18 +130,18 @@ LINK32=link.exe
 # PROP Output_Dir "..\..\src\stc\..\..\..\lib\vc_dll"
 # PROP Intermediate_Dir "vc_mswunivddll\stc"
 # PROP Target_Dir ""
-# ADD BASE CPP /nologo /FD /MDd /Od /GR /GX /I "..\..\src\stc\..\..\..\include" /I "..\..\src\stc\..\..\..\lib\vc_dll\mswunivd" /W4 /Zi /Gm /GZ /Fd..\..\src\stc\..\..\..\lib\vc_dll\wxmswuniv253d_stc_vc_custom.pdb /I "..\..\src\stc\..\..\include" /I "..\..\src\stc\scintilla\include" /I "..\..\src\stc\scintilla\src" /D "WIN32" /D "_USRDLL" /D "DLL_EXPORTS" /D "_DEBUG" /D "__WXMSW__" /D "__WXUNIVERSAL__" /D "__WXDEBUG__" /D "__WX__" /D "SCI_LEXER" /D "LINK_LEXERS" /D "WXUSINGDLL" /D "WXMAKINGDLL_STC" /c
-# ADD CPP /nologo /FD /MDd /Od /GR /GX /I "..\..\src\stc\..\..\..\include" /I "..\..\src\stc\..\..\..\lib\vc_dll\mswunivd" /W4 /Zi /Gm /GZ /Fd..\..\src\stc\..\..\..\lib\vc_dll\wxmswuniv253d_stc_vc_custom.pdb /I "..\..\src\stc\..\..\include" /I "..\..\src\stc\scintilla\include" /I "..\..\src\stc\scintilla\src" /D "WIN32" /D "_USRDLL" /D "DLL_EXPORTS" /D "_DEBUG" /D "__WXMSW__" /D "__WXUNIVERSAL__" /D "__WXDEBUG__" /D "__WX__" /D "SCI_LEXER" /D "LINK_LEXERS" /D "WXUSINGDLL" /D "WXMAKINGDLL_STC" /c
+# ADD BASE CPP /nologo /FD /MDd /Od /GR /GX /I "..\..\src\stc\..\..\..\include" /I "..\..\src\stc\..\..\..\lib\vc_dll\mswunivd" /W4 /Zi /Gm /GZ /Fd..\..\src\stc\..\..\..\lib\vc_dll\wxmswuniv254d_stc_vc_custom.pdb /I "..\..\src\stc\..\..\include" /I "..\..\src\stc\scintilla\include" /I "..\..\src\stc\scintilla\src" /D "WIN32" /D "_USRDLL" /D "DLL_EXPORTS" /D "_DEBUG" /D "__WXMSW__" /D "__WXUNIVERSAL__" /D "__WXDEBUG__" /D "__WX__" /D "SCI_LEXER" /D "LINK_LEXERS" /D "WXUSINGDLL" /D "WXMAKINGDLL_STC" /c
+# ADD CPP /nologo /FD /MDd /Od /GR /GX /I "..\..\src\stc\..\..\..\include" /I "..\..\src\stc\..\..\..\lib\vc_dll\mswunivd" /W4 /Zi /Gm /GZ /Fd..\..\src\stc\..\..\..\lib\vc_dll\wxmswuniv254d_stc_vc_custom.pdb /I "..\..\src\stc\..\..\include" /I "..\..\src\stc\scintilla\include" /I "..\..\src\stc\scintilla\src" /D "WIN32" /D "_USRDLL" /D "DLL_EXPORTS" /D "_DEBUG" /D "__WXMSW__" /D "__WXUNIVERSAL__" /D "__WXDEBUG__" /D "__WX__" /D "SCI_LEXER" /D "LINK_LEXERS" /D "WXUSINGDLL" /D "WXMAKINGDLL_STC" /c
 # ADD BASE MTL /nologo /D "WIN32" /D "_USRDLL" /D "DLL_EXPORTS" /D "_DEBUG" /D "__WXMSW__" /D "__WXUNIVERSAL__" /D "__WXDEBUG__" /D "__WX__" /D "SCI_LEXER" /D "LINK_LEXERS" /D "WXUSINGDLL" /D "WXMAKINGDLL_STC" /mktyplib203 /win32
 # ADD MTL /nologo /D "WIN32" /D "_USRDLL" /D "DLL_EXPORTS" /D "_DEBUG" /D "__WXMSW__" /D "__WXUNIVERSAL__" /D "__WXDEBUG__" /D "__WX__" /D "SCI_LEXER" /D "LINK_LEXERS" /D "WXUSINGDLL" /D "WXMAKINGDLL_STC" /mktyplib203 /win32
-# ADD BASE RSC /l 0x405 /d "_DEBUG" /d "__WXMSW__" /d "__WXUNIVERSAL__" /d "__WXDEBUG__" /i "..\..\src\stc\..\..\..\include" /i "..\..\src\stc\..\..\..\lib\vc_dll\mswunivd" /i "..\..\src\stc\..\..\include" /i "..\..\src\stc\scintilla\include" /i "..\..\src\stc\scintilla\src" /d "__WX__" /d "SCI_LEXER" /d "LINK_LEXERS" /d "WXUSINGDLL" /d WXMAKINGDLL_STC
-# ADD RSC /l 0x405 /d "_DEBUG" /d "__WXMSW__" /d "__WXUNIVERSAL__" /d "__WXDEBUG__" /i "..\..\src\stc\..\..\..\include" /i "..\..\src\stc\..\..\..\lib\vc_dll\mswunivd" /i "..\..\src\stc\..\..\include" /i "..\..\src\stc\scintilla\include" /i "..\..\src\stc\scintilla\src" /d "__WX__" /d "SCI_LEXER" /d "LINK_LEXERS" /d "WXUSINGDLL" /d WXMAKINGDLL_STC
+# ADD BASE RSC /l 0x409 /d "_DEBUG" /d "__WXMSW__" /d "__WXUNIVERSAL__" /d "__WXDEBUG__" /i "..\..\src\stc\..\..\..\include" /i "..\..\src\stc\..\..\..\lib\vc_dll\mswunivd" /i "..\..\src\stc\..\..\include" /i "..\..\src\stc\scintilla\include" /i "..\..\src\stc\scintilla\src" /d "__WX__" /d "SCI_LEXER" /d "LINK_LEXERS" /d "WXUSINGDLL" /d WXMAKINGDLL_STC
+# ADD RSC /l 0x409 /d "_DEBUG" /d "__WXMSW__" /d "__WXUNIVERSAL__" /d "__WXDEBUG__" /i "..\..\src\stc\..\..\..\include" /i "..\..\src\stc\..\..\..\lib\vc_dll\mswunivd" /i "..\..\src\stc\..\..\include" /i "..\..\src\stc\scintilla\include" /i "..\..\src\stc\scintilla\src" /d "__WX__" /d "SCI_LEXER" /d "LINK_LEXERS" /d "WXUSINGDLL" /d WXMAKINGDLL_STC
 BSC32=bscmake.exe
 # ADD BASE BSC32 /nologo
 # ADD BSC32 /nologo
 LINK32=link.exe
-# ADD BASE LINK32 wxtiffd.lib wxjpegd.lib wxpngd.lib wxzlibd.lib wxregexd.lib wxexpatd.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib oleacc.lib odbc32.lib wxmswuniv25d_core.lib wxbase25d.lib /nologo /dll /machine:i386 /out:"..\..\src\stc\..\..\..\lib\vc_dll\wxmswuniv253d_stc_vc_custom.dll" /libpath:"..\..\src\stc\..\..\..\lib\vc_dll" /implib:"..\..\src\stc\..\..\..\lib\vc_dll\wxmswuniv25d_stc.lib" /debug
-# ADD LINK32 wxtiffd.lib wxjpegd.lib wxpngd.lib wxzlibd.lib wxregexd.lib wxexpatd.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib oleacc.lib odbc32.lib wxmswuniv25d_core.lib wxbase25d.lib /nologo /dll /machine:i386 /out:"..\..\src\stc\..\..\..\lib\vc_dll\wxmswuniv253d_stc_vc_custom.dll" /libpath:"..\..\src\stc\..\..\..\lib\vc_dll" /implib:"..\..\src\stc\..\..\..\lib\vc_dll\wxmswuniv25d_stc.lib" /debug
+# ADD BASE LINK32 wxtiffd.lib wxjpegd.lib wxpngd.lib wxzlibd.lib wxregexd.lib wxexpatd.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib oleacc.lib odbc32.lib wxmswuniv25d_core.lib wxbase25d.lib /nologo /dll /machine:i386 /out:"..\..\src\stc\..\..\..\lib\vc_dll\wxmswuniv254d_stc_vc_custom.dll" /libpath:"..\..\src\stc\..\..\..\lib\vc_dll" /implib:"..\..\src\stc\..\..\..\lib\vc_dll\wxmswuniv25d_stc.lib" /debug
+# ADD LINK32 wxtiffd.lib wxjpegd.lib wxpngd.lib wxzlibd.lib wxregexd.lib wxexpatd.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib oleacc.lib odbc32.lib wxmswuniv25d_core.lib wxbase25d.lib /nologo /dll /machine:i386 /out:"..\..\src\stc\..\..\..\lib\vc_dll\wxmswuniv254d_stc_vc_custom.dll" /libpath:"..\..\src\stc\..\..\..\lib\vc_dll" /implib:"..\..\src\stc\..\..\..\lib\vc_dll\wxmswuniv25d_stc.lib" /debug
 
 !ELSEIF  "$(CFG)" == "stc - Win32 DLL Unicode Release"
 
@@ -155,18 +155,18 @@ LINK32=link.exe
 # PROP Output_Dir "..\..\src\stc\..\..\..\lib\vc_dll"
 # PROP Intermediate_Dir "vc_mswudll\stc"
 # PROP Target_Dir ""
-# ADD BASE CPP /nologo /FD /MD /O1 /GR /GX /I "..\..\src\stc\..\..\..\include" /I "..\..\src\stc\..\..\..\lib\vc_dll\mswu" /W4 /Fd..\..\src\stc\..\..\..\lib\vc_dll\wxmsw253u_stc_vc_custom.pdb /I "..\..\src\stc\..\..\include" /I "..\..\src\stc\scintilla\include" /I "..\..\src\stc\scintilla\src" /D "WIN32" /D "_USRDLL" /D "DLL_EXPORTS" /D "__WXMSW__" /D "_UNICODE" /D "__WX__" /D "SCI_LEXER" /D "LINK_LEXERS" /D "WXUSINGDLL" /D "WXMAKINGDLL_STC" /c
-# ADD CPP /nologo /FD /MD /O1 /GR /GX /I "..\..\src\stc\..\..\..\include" /I "..\..\src\stc\..\..\..\lib\vc_dll\mswu" /W4 /Fd..\..\src\stc\..\..\..\lib\vc_dll\wxmsw253u_stc_vc_custom.pdb /I "..\..\src\stc\..\..\include" /I "..\..\src\stc\scintilla\include" /I "..\..\src\stc\scintilla\src" /D "WIN32" /D "_USRDLL" /D "DLL_EXPORTS" /D "__WXMSW__" /D "_UNICODE" /D "__WX__" /D "SCI_LEXER" /D "LINK_LEXERS" /D "WXUSINGDLL" /D "WXMAKINGDLL_STC" /c
+# ADD BASE CPP /nologo /FD /MD /O2 /GR /GX /I "..\..\src\stc\..\..\..\include" /I "..\..\src\stc\..\..\..\lib\vc_dll\mswu" /W4 /Fd..\..\src\stc\..\..\..\lib\vc_dll\wxmsw254u_stc_vc_custom.pdb /I "..\..\src\stc\..\..\include" /I "..\..\src\stc\scintilla\include" /I "..\..\src\stc\scintilla\src" /D "WIN32" /D "_USRDLL" /D "DLL_EXPORTS" /D "__WXMSW__" /D "_UNICODE" /D "__WX__" /D "SCI_LEXER" /D "LINK_LEXERS" /D "WXUSINGDLL" /D "WXMAKINGDLL_STC" /c
+# ADD CPP /nologo /FD /MD /O2 /GR /GX /I "..\..\src\stc\..\..\..\include" /I "..\..\src\stc\..\..\..\lib\vc_dll\mswu" /W4 /Fd..\..\src\stc\..\..\..\lib\vc_dll\wxmsw254u_stc_vc_custom.pdb /I "..\..\src\stc\..\..\include" /I "..\..\src\stc\scintilla\include" /I "..\..\src\stc\scintilla\src" /D "WIN32" /D "_USRDLL" /D "DLL_EXPORTS" /D "__WXMSW__" /D "_UNICODE" /D "__WX__" /D "SCI_LEXER" /D "LINK_LEXERS" /D "WXUSINGDLL" /D "WXMAKINGDLL_STC" /c
 # ADD BASE MTL /nologo /D "WIN32" /D "_USRDLL" /D "DLL_EXPORTS" /D "__WXMSW__" /D "_UNICODE" /D "__WX__" /D "SCI_LEXER" /D "LINK_LEXERS" /D "WXUSINGDLL" /D "WXMAKINGDLL_STC" /mktyplib203 /win32
 # ADD MTL /nologo /D "WIN32" /D "_USRDLL" /D "DLL_EXPORTS" /D "__WXMSW__" /D "_UNICODE" /D "__WX__" /D "SCI_LEXER" /D "LINK_LEXERS" /D "WXUSINGDLL" /D "WXMAKINGDLL_STC" /mktyplib203 /win32
-# ADD BASE RSC /l 0x405 /d "__WXMSW__" /d "_UNICODE" /i "..\..\src\stc\..\..\..\include" /i "..\..\src\stc\..\..\..\lib\vc_dll\mswu" /i "..\..\src\stc\..\..\include" /i "..\..\src\stc\scintilla\include" /i "..\..\src\stc\scintilla\src" /d "__WX__" /d "SCI_LEXER" /d "LINK_LEXERS" /d "WXUSINGDLL" /d WXMAKINGDLL_STC
-# ADD RSC /l 0x405 /d "__WXMSW__" /d "_UNICODE" /i "..\..\src\stc\..\..\..\include" /i "..\..\src\stc\..\..\..\lib\vc_dll\mswu" /i "..\..\src\stc\..\..\include" /i "..\..\src\stc\scintilla\include" /i "..\..\src\stc\scintilla\src" /d "__WX__" /d "SCI_LEXER" /d "LINK_LEXERS" /d "WXUSINGDLL" /d WXMAKINGDLL_STC
+# ADD BASE RSC /l 0x409 /d "__WXMSW__" /d "_UNICODE" /i "..\..\src\stc\..\..\..\include" /i "..\..\src\stc\..\..\..\lib\vc_dll\mswu" /i "..\..\src\stc\..\..\include" /i "..\..\src\stc\scintilla\include" /i "..\..\src\stc\scintilla\src" /d "__WX__" /d "SCI_LEXER" /d "LINK_LEXERS" /d "WXUSINGDLL" /d WXMAKINGDLL_STC
+# ADD RSC /l 0x409 /d "__WXMSW__" /d "_UNICODE" /i "..\..\src\stc\..\..\..\include" /i "..\..\src\stc\..\..\..\lib\vc_dll\mswu" /i "..\..\src\stc\..\..\include" /i "..\..\src\stc\scintilla\include" /i "..\..\src\stc\scintilla\src" /d "__WX__" /d "SCI_LEXER" /d "LINK_LEXERS" /d "WXUSINGDLL" /d WXMAKINGDLL_STC
 BSC32=bscmake.exe
 # ADD BASE BSC32 /nologo
 # ADD BSC32 /nologo
 LINK32=link.exe
-# ADD BASE LINK32 wxtiff.lib wxjpeg.lib wxpng.lib wxzlib.lib wxregexu.lib wxexpat.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib oleacc.lib odbc32.lib wxmsw25u_core.lib wxbase25u.lib /nologo /dll /machine:i386 /out:"..\..\src\stc\..\..\..\lib\vc_dll\wxmsw253u_stc_vc_custom.dll" /libpath:"..\..\src\stc\..\..\..\lib\vc_dll" /implib:"..\..\src\stc\..\..\..\lib\vc_dll\wxmsw25u_stc.lib"
-# ADD LINK32 wxtiff.lib wxjpeg.lib wxpng.lib wxzlib.lib wxregexu.lib wxexpat.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib oleacc.lib odbc32.lib wxmsw25u_core.lib wxbase25u.lib /nologo /dll /machine:i386 /out:"..\..\src\stc\..\..\..\lib\vc_dll\wxmsw253u_stc_vc_custom.dll" /libpath:"..\..\src\stc\..\..\..\lib\vc_dll" /implib:"..\..\src\stc\..\..\..\lib\vc_dll\wxmsw25u_stc.lib"
+# ADD BASE LINK32 wxtiff.lib wxjpeg.lib wxpng.lib wxzlib.lib wxregexu.lib wxexpat.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib oleacc.lib odbc32.lib wxmsw25u_core.lib wxbase25u.lib /nologo /dll /machine:i386 /out:"..\..\src\stc\..\..\..\lib\vc_dll\wxmsw254u_stc_vc_custom.dll" /libpath:"..\..\src\stc\..\..\..\lib\vc_dll" /implib:"..\..\src\stc\..\..\..\lib\vc_dll\wxmsw25u_stc.lib"
+# ADD LINK32 wxtiff.lib wxjpeg.lib wxpng.lib wxzlib.lib wxregexu.lib wxexpat.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib oleacc.lib odbc32.lib wxmsw25u_core.lib wxbase25u.lib /nologo /dll /machine:i386 /out:"..\..\src\stc\..\..\..\lib\vc_dll\wxmsw254u_stc_vc_custom.dll" /libpath:"..\..\src\stc\..\..\..\lib\vc_dll" /implib:"..\..\src\stc\..\..\..\lib\vc_dll\wxmsw25u_stc.lib"
 
 !ELSEIF  "$(CFG)" == "stc - Win32 DLL Unicode Debug"
 
@@ -180,18 +180,18 @@ LINK32=link.exe
 # PROP Output_Dir "..\..\src\stc\..\..\..\lib\vc_dll"
 # PROP Intermediate_Dir "vc_mswuddll\stc"
 # PROP Target_Dir ""
-# ADD BASE CPP /nologo /FD /MDd /Od /GR /GX /I "..\..\src\stc\..\..\..\include" /I "..\..\src\stc\..\..\..\lib\vc_dll\mswud" /W4 /Zi /Gm /GZ /Fd..\..\src\stc\..\..\..\lib\vc_dll\wxmsw253ud_stc_vc_custom.pdb /I "..\..\src\stc\..\..\include" /I "..\..\src\stc\scintilla\include" /I "..\..\src\stc\scintilla\src" /D "WIN32" /D "_USRDLL" /D "DLL_EXPORTS" /D "_DEBUG" /D "__WXMSW__" /D "__WXDEBUG__" /D "_UNICODE" /D "__WX__" /D "SCI_LEXER" /D "LINK_LEXERS" /D "WXUSINGDLL" /D "WXMAKINGDLL_STC" /c
-# ADD CPP /nologo /FD /MDd /Od /GR /GX /I "..\..\src\stc\..\..\..\include" /I "..\..\src\stc\..\..\..\lib\vc_dll\mswud" /W4 /Zi /Gm /GZ /Fd..\..\src\stc\..\..\..\lib\vc_dll\wxmsw253ud_stc_vc_custom.pdb /I "..\..\src\stc\..\..\include" /I "..\..\src\stc\scintilla\include" /I "..\..\src\stc\scintilla\src" /D "WIN32" /D "_USRDLL" /D "DLL_EXPORTS" /D "_DEBUG" /D "__WXMSW__" /D "__WXDEBUG__" /D "_UNICODE" /D "__WX__" /D "SCI_LEXER" /D "LINK_LEXERS" /D "WXUSINGDLL" /D "WXMAKINGDLL_STC" /c
+# ADD BASE CPP /nologo /FD /MDd /Od /GR /GX /I "..\..\src\stc\..\..\..\include" /I "..\..\src\stc\..\..\..\lib\vc_dll\mswud" /W4 /Zi /Gm /GZ /Fd..\..\src\stc\..\..\..\lib\vc_dll\wxmsw254ud_stc_vc_custom.pdb /I "..\..\src\stc\..\..\include" /I "..\..\src\stc\scintilla\include" /I "..\..\src\stc\scintilla\src" /D "WIN32" /D "_USRDLL" /D "DLL_EXPORTS" /D "_DEBUG" /D "__WXMSW__" /D "__WXDEBUG__" /D "_UNICODE" /D "__WX__" /D "SCI_LEXER" /D "LINK_LEXERS" /D "WXUSINGDLL" /D "WXMAKINGDLL_STC" /c
+# ADD CPP /nologo /FD /MDd /Od /GR /GX /I "..\..\src\stc\..\..\..\include" /I "..\..\src\stc\..\..\..\lib\vc_dll\mswud" /W4 /Zi /Gm /GZ /Fd..\..\src\stc\..\..\..\lib\vc_dll\wxmsw254ud_stc_vc_custom.pdb /I "..\..\src\stc\..\..\include" /I "..\..\src\stc\scintilla\include" /I "..\..\src\stc\scintilla\src" /D "WIN32" /D "_USRDLL" /D "DLL_EXPORTS" /D "_DEBUG" /D "__WXMSW__" /D "__WXDEBUG__" /D "_UNICODE" /D "__WX__" /D "SCI_LEXER" /D "LINK_LEXERS" /D "WXUSINGDLL" /D "WXMAKINGDLL_STC" /c
 # ADD BASE MTL /nologo /D "WIN32" /D "_USRDLL" /D "DLL_EXPORTS" /D "_DEBUG" /D "__WXMSW__" /D "__WXDEBUG__" /D "_UNICODE" /D "__WX__" /D "SCI_LEXER" /D "LINK_LEXERS" /D "WXUSINGDLL" /D "WXMAKINGDLL_STC" /mktyplib203 /win32
 # ADD MTL /nologo /D "WIN32" /D "_USRDLL" /D "DLL_EXPORTS" /D "_DEBUG" /D "__WXMSW__" /D "__WXDEBUG__" /D "_UNICODE" /D "__WX__" /D "SCI_LEXER" /D "LINK_LEXERS" /D "WXUSINGDLL" /D "WXMAKINGDLL_STC" /mktyplib203 /win32
-# ADD BASE RSC /l 0x405 /d "_DEBUG" /d "__WXMSW__" /d "__WXDEBUG__" /d "_UNICODE" /i "..\..\src\stc\..\..\..\include" /i "..\..\src\stc\..\..\..\lib\vc_dll\mswud" /i "..\..\src\stc\..\..\include" /i "..\..\src\stc\scintilla\include" /i "..\..\src\stc\scintilla\src" /d "__WX__" /d "SCI_LEXER" /d "LINK_LEXERS" /d "WXUSINGDLL" /d WXMAKINGDLL_STC
-# ADD RSC /l 0x405 /d "_DEBUG" /d "__WXMSW__" /d "__WXDEBUG__" /d "_UNICODE" /i "..\..\src\stc\..\..\..\include" /i "..\..\src\stc\..\..\..\lib\vc_dll\mswud" /i "..\..\src\stc\..\..\include" /i "..\..\src\stc\scintilla\include" /i "..\..\src\stc\scintilla\src" /d "__WX__" /d "SCI_LEXER" /d "LINK_LEXERS" /d "WXUSINGDLL" /d WXMAKINGDLL_STC
+# ADD BASE RSC /l 0x409 /d "_DEBUG" /d "__WXMSW__" /d "__WXDEBUG__" /d "_UNICODE" /i "..\..\src\stc\..\..\..\include" /i "..\..\src\stc\..\..\..\lib\vc_dll\mswud" /i "..\..\src\stc\..\..\include" /i "..\..\src\stc\scintilla\include" /i "..\..\src\stc\scintilla\src" /d "__WX__" /d "SCI_LEXER" /d "LINK_LEXERS" /d "WXUSINGDLL" /d WXMAKINGDLL_STC
+# ADD RSC /l 0x409 /d "_DEBUG" /d "__WXMSW__" /d "__WXDEBUG__" /d "_UNICODE" /i "..\..\src\stc\..\..\..\include" /i "..\..\src\stc\..\..\..\lib\vc_dll\mswud" /i "..\..\src\stc\..\..\include" /i "..\..\src\stc\scintilla\include" /i "..\..\src\stc\scintilla\src" /d "__WX__" /d "SCI_LEXER" /d "LINK_LEXERS" /d "WXUSINGDLL" /d WXMAKINGDLL_STC
 BSC32=bscmake.exe
 # ADD BASE BSC32 /nologo
 # ADD BSC32 /nologo
 LINK32=link.exe
-# ADD BASE LINK32 wxtiffd.lib wxjpegd.lib wxpngd.lib wxzlibd.lib wxregexud.lib wxexpatd.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib oleacc.lib odbc32.lib wxmsw25ud_core.lib wxbase25ud.lib /nologo /dll /machine:i386 /out:"..\..\src\stc\..\..\..\lib\vc_dll\wxmsw253ud_stc_vc_custom.dll" /libpath:"..\..\src\stc\..\..\..\lib\vc_dll" /implib:"..\..\src\stc\..\..\..\lib\vc_dll\wxmsw25ud_stc.lib" /debug
-# ADD LINK32 wxtiffd.lib wxjpegd.lib wxpngd.lib wxzlibd.lib wxregexud.lib wxexpatd.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib oleacc.lib odbc32.lib wxmsw25ud_core.lib wxbase25ud.lib /nologo /dll /machine:i386 /out:"..\..\src\stc\..\..\..\lib\vc_dll\wxmsw253ud_stc_vc_custom.dll" /libpath:"..\..\src\stc\..\..\..\lib\vc_dll" /implib:"..\..\src\stc\..\..\..\lib\vc_dll\wxmsw25ud_stc.lib" /debug
+# ADD BASE LINK32 wxtiffd.lib wxjpegd.lib wxpngd.lib wxzlibd.lib wxregexud.lib wxexpatd.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib oleacc.lib odbc32.lib wxmsw25ud_core.lib wxbase25ud.lib /nologo /dll /machine:i386 /out:"..\..\src\stc\..\..\..\lib\vc_dll\wxmsw254ud_stc_vc_custom.dll" /libpath:"..\..\src\stc\..\..\..\lib\vc_dll" /implib:"..\..\src\stc\..\..\..\lib\vc_dll\wxmsw25ud_stc.lib" /debug
+# ADD LINK32 wxtiffd.lib wxjpegd.lib wxpngd.lib wxzlibd.lib wxregexud.lib wxexpatd.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib oleacc.lib odbc32.lib wxmsw25ud_core.lib wxbase25ud.lib /nologo /dll /machine:i386 /out:"..\..\src\stc\..\..\..\lib\vc_dll\wxmsw254ud_stc_vc_custom.dll" /libpath:"..\..\src\stc\..\..\..\lib\vc_dll" /implib:"..\..\src\stc\..\..\..\lib\vc_dll\wxmsw25ud_stc.lib" /debug
 
 !ELSEIF  "$(CFG)" == "stc - Win32 DLL Release"
 
@@ -205,18 +205,18 @@ LINK32=link.exe
 # PROP Output_Dir "..\..\src\stc\..\..\..\lib\vc_dll"
 # PROP Intermediate_Dir "vc_mswdll\stc"
 # PROP Target_Dir ""
-# ADD BASE CPP /nologo /FD /MD /O1 /GR /GX /I "..\..\src\stc\..\..\..\include" /I "..\..\src\stc\..\..\..\lib\vc_dll\msw" /W4 /Fd..\..\src\stc\..\..\..\lib\vc_dll\wxmsw253_stc_vc_custom.pdb /I "..\..\src\stc\..\..\include" /I "..\..\src\stc\scintilla\include" /I "..\..\src\stc\scintilla\src" /D "WIN32" /D "_USRDLL" /D "DLL_EXPORTS" /D "__WXMSW__" /D "__WX__" /D "SCI_LEXER" /D "LINK_LEXERS" /D "WXUSINGDLL" /D "WXMAKINGDLL_STC" /c
-# ADD CPP /nologo /FD /MD /O1 /GR /GX /I "..\..\src\stc\..\..\..\include" /I "..\..\src\stc\..\..\..\lib\vc_dll\msw" /W4 /Fd..\..\src\stc\..\..\..\lib\vc_dll\wxmsw253_stc_vc_custom.pdb /I "..\..\src\stc\..\..\include" /I "..\..\src\stc\scintilla\include" /I "..\..\src\stc\scintilla\src" /D "WIN32" /D "_USRDLL" /D "DLL_EXPORTS" /D "__WXMSW__" /D "__WX__" /D "SCI_LEXER" /D "LINK_LEXERS" /D "WXUSINGDLL" /D "WXMAKINGDLL_STC" /c
+# ADD BASE CPP /nologo /FD /MD /O2 /GR /GX /I "..\..\src\stc\..\..\..\include" /I "..\..\src\stc\..\..\..\lib\vc_dll\msw" /W4 /Fd..\..\src\stc\..\..\..\lib\vc_dll\wxmsw254_stc_vc_custom.pdb /I "..\..\src\stc\..\..\include" /I "..\..\src\stc\scintilla\include" /I "..\..\src\stc\scintilla\src" /D "WIN32" /D "_USRDLL" /D "DLL_EXPORTS" /D "__WXMSW__" /D "__WX__" /D "SCI_LEXER" /D "LINK_LEXERS" /D "WXUSINGDLL" /D "WXMAKINGDLL_STC" /c
+# ADD CPP /nologo /FD /MD /O2 /GR /GX /I "..\..\src\stc\..\..\..\include" /I "..\..\src\stc\..\..\..\lib\vc_dll\msw" /W4 /Fd..\..\src\stc\..\..\..\lib\vc_dll\wxmsw254_stc_vc_custom.pdb /I "..\..\src\stc\..\..\include" /I "..\..\src\stc\scintilla\include" /I "..\..\src\stc\scintilla\src" /D "WIN32" /D "_USRDLL" /D "DLL_EXPORTS" /D "__WXMSW__" /D "__WX__" /D "SCI_LEXER" /D "LINK_LEXERS" /D "WXUSINGDLL" /D "WXMAKINGDLL_STC" /c
 # ADD BASE MTL /nologo /D "WIN32" /D "_USRDLL" /D "DLL_EXPORTS" /D "__WXMSW__" /D "__WX__" /D "SCI_LEXER" /D "LINK_LEXERS" /D "WXUSINGDLL" /D "WXMAKINGDLL_STC" /mktyplib203 /win32
 # ADD MTL /nologo /D "WIN32" /D "_USRDLL" /D "DLL_EXPORTS" /D "__WXMSW__" /D "__WX__" /D "SCI_LEXER" /D "LINK_LEXERS" /D "WXUSINGDLL" /D "WXMAKINGDLL_STC" /mktyplib203 /win32
-# ADD BASE RSC /l 0x405 /d "__WXMSW__" /i "..\..\src\stc\..\..\..\include" /i "..\..\src\stc\..\..\..\lib\vc_dll\msw" /i "..\..\src\stc\..\..\include" /i "..\..\src\stc\scintilla\include" /i "..\..\src\stc\scintilla\src" /d "__WX__" /d "SCI_LEXER" /d "LINK_LEXERS" /d "WXUSINGDLL" /d WXMAKINGDLL_STC
-# ADD RSC /l 0x405 /d "__WXMSW__" /i "..\..\src\stc\..\..\..\include" /i "..\..\src\stc\..\..\..\lib\vc_dll\msw" /i "..\..\src\stc\..\..\include" /i "..\..\src\stc\scintilla\include" /i "..\..\src\stc\scintilla\src" /d "__WX__" /d "SCI_LEXER" /d "LINK_LEXERS" /d "WXUSINGDLL" /d WXMAKINGDLL_STC
+# ADD BASE RSC /l 0x409 /d "__WXMSW__" /i "..\..\src\stc\..\..\..\include" /i "..\..\src\stc\..\..\..\lib\vc_dll\msw" /i "..\..\src\stc\..\..\include" /i "..\..\src\stc\scintilla\include" /i "..\..\src\stc\scintilla\src" /d "__WX__" /d "SCI_LEXER" /d "LINK_LEXERS" /d "WXUSINGDLL" /d WXMAKINGDLL_STC
+# ADD RSC /l 0x409 /d "__WXMSW__" /i "..\..\src\stc\..\..\..\include" /i "..\..\src\stc\..\..\..\lib\vc_dll\msw" /i "..\..\src\stc\..\..\include" /i "..\..\src\stc\scintilla\include" /i "..\..\src\stc\scintilla\src" /d "__WX__" /d "SCI_LEXER" /d "LINK_LEXERS" /d "WXUSINGDLL" /d WXMAKINGDLL_STC
 BSC32=bscmake.exe
 # ADD BASE BSC32 /nologo
 # ADD BSC32 /nologo
 LINK32=link.exe
-# ADD BASE LINK32 wxtiff.lib wxjpeg.lib wxpng.lib wxzlib.lib wxregex.lib wxexpat.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib oleacc.lib odbc32.lib wxmsw25_core.lib wxbase25.lib /nologo /dll /machine:i386 /out:"..\..\src\stc\..\..\..\lib\vc_dll\wxmsw253_stc_vc_custom.dll" /libpath:"..\..\src\stc\..\..\..\lib\vc_dll" /implib:"..\..\src\stc\..\..\..\lib\vc_dll\wxmsw25_stc.lib"
-# ADD LINK32 wxtiff.lib wxjpeg.lib wxpng.lib wxzlib.lib wxregex.lib wxexpat.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib oleacc.lib odbc32.lib wxmsw25_core.lib wxbase25.lib /nologo /dll /machine:i386 /out:"..\..\src\stc\..\..\..\lib\vc_dll\wxmsw253_stc_vc_custom.dll" /libpath:"..\..\src\stc\..\..\..\lib\vc_dll" /implib:"..\..\src\stc\..\..\..\lib\vc_dll\wxmsw25_stc.lib"
+# ADD BASE LINK32 wxtiff.lib wxjpeg.lib wxpng.lib wxzlib.lib wxregex.lib wxexpat.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib oleacc.lib odbc32.lib wxmsw25_core.lib wxbase25.lib /nologo /dll /machine:i386 /out:"..\..\src\stc\..\..\..\lib\vc_dll\wxmsw254_stc_vc_custom.dll" /libpath:"..\..\src\stc\..\..\..\lib\vc_dll" /implib:"..\..\src\stc\..\..\..\lib\vc_dll\wxmsw25_stc.lib"
+# ADD LINK32 wxtiff.lib wxjpeg.lib wxpng.lib wxzlib.lib wxregex.lib wxexpat.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib oleacc.lib odbc32.lib wxmsw25_core.lib wxbase25.lib /nologo /dll /machine:i386 /out:"..\..\src\stc\..\..\..\lib\vc_dll\wxmsw254_stc_vc_custom.dll" /libpath:"..\..\src\stc\..\..\..\lib\vc_dll" /implib:"..\..\src\stc\..\..\..\lib\vc_dll\wxmsw25_stc.lib"
 
 !ELSEIF  "$(CFG)" == "stc - Win32 DLL Debug"
 
@@ -230,18 +230,18 @@ LINK32=link.exe
 # PROP Output_Dir "..\..\src\stc\..\..\..\lib\vc_dll"
 # PROP Intermediate_Dir "vc_mswddll\stc"
 # PROP Target_Dir ""
-# ADD BASE CPP /nologo /FD /MDd /Od /GR /GX /I "..\..\src\stc\..\..\..\include" /I "..\..\src\stc\..\..\..\lib\vc_dll\mswd" /W4 /Zi /Gm /GZ /Fd..\..\src\stc\..\..\..\lib\vc_dll\wxmsw253d_stc_vc_custom.pdb /I "..\..\src\stc\..\..\include" /I "..\..\src\stc\scintilla\include" /I "..\..\src\stc\scintilla\src" /D "WIN32" /D "_USRDLL" /D "DLL_EXPORTS" /D "_DEBUG" /D "__WXMSW__" /D "__WXDEBUG__" /D "__WX__" /D "SCI_LEXER" /D "LINK_LEXERS" /D "WXUSINGDLL" /D "WXMAKINGDLL_STC" /c
-# ADD CPP /nologo /FD /MDd /Od /GR /GX /I "..\..\src\stc\..\..\..\include" /I "..\..\src\stc\..\..\..\lib\vc_dll\mswd" /W4 /Zi /Gm /GZ /Fd..\..\src\stc\..\..\..\lib\vc_dll\wxmsw253d_stc_vc_custom.pdb /I "..\..\src\stc\..\..\include" /I "..\..\src\stc\scintilla\include" /I "..\..\src\stc\scintilla\src" /D "WIN32" /D "_USRDLL" /D "DLL_EXPORTS" /D "_DEBUG" /D "__WXMSW__" /D "__WXDEBUG__" /D "__WX__" /D "SCI_LEXER" /D "LINK_LEXERS" /D "WXUSINGDLL" /D "WXMAKINGDLL_STC" /c
+# ADD BASE CPP /nologo /FD /MDd /Od /GR /GX /I "..\..\src\stc\..\..\..\include" /I "..\..\src\stc\..\..\..\lib\vc_dll\mswd" /W4 /Zi /Gm /GZ /Fd..\..\src\stc\..\..\..\lib\vc_dll\wxmsw254d_stc_vc_custom.pdb /I "..\..\src\stc\..\..\include" /I "..\..\src\stc\scintilla\include" /I "..\..\src\stc\scintilla\src" /D "WIN32" /D "_USRDLL" /D "DLL_EXPORTS" /D "_DEBUG" /D "__WXMSW__" /D "__WXDEBUG__" /D "__WX__" /D "SCI_LEXER" /D "LINK_LEXERS" /D "WXUSINGDLL" /D "WXMAKINGDLL_STC" /c
+# ADD CPP /nologo /FD /MDd /Od /GR /GX /I "..\..\src\stc\..\..\..\include" /I "..\..\src\stc\..\..\..\lib\vc_dll\mswd" /W4 /Zi /Gm /GZ /Fd..\..\src\stc\..\..\..\lib\vc_dll\wxmsw254d_stc_vc_custom.pdb /I "..\..\src\stc\..\..\include" /I "..\..\src\stc\scintilla\include" /I "..\..\src\stc\scintilla\src" /D "WIN32" /D "_USRDLL" /D "DLL_EXPORTS" /D "_DEBUG" /D "__WXMSW__" /D "__WXDEBUG__" /D "__WX__" /D "SCI_LEXER" /D "LINK_LEXERS" /D "WXUSINGDLL" /D "WXMAKINGDLL_STC" /c
 # ADD BASE MTL /nologo /D "WIN32" /D "_USRDLL" /D "DLL_EXPORTS" /D "_DEBUG" /D "__WXMSW__" /D "__WXDEBUG__" /D "__WX__" /D "SCI_LEXER" /D "LINK_LEXERS" /D "WXUSINGDLL" /D "WXMAKINGDLL_STC" /mktyplib203 /win32
 # ADD MTL /nologo /D "WIN32" /D "_USRDLL" /D "DLL_EXPORTS" /D "_DEBUG" /D "__WXMSW__" /D "__WXDEBUG__" /D "__WX__" /D "SCI_LEXER" /D "LINK_LEXERS" /D "WXUSINGDLL" /D "WXMAKINGDLL_STC" /mktyplib203 /win32
-# ADD BASE RSC /l 0x405 /d "_DEBUG" /d "__WXMSW__" /d "__WXDEBUG__" /i "..\..\src\stc\..\..\..\include" /i "..\..\src\stc\..\..\..\lib\vc_dll\mswd" /i "..\..\src\stc\..\..\include" /i "..\..\src\stc\scintilla\include" /i "..\..\src\stc\scintilla\src" /d "__WX__" /d "SCI_LEXER" /d "LINK_LEXERS" /d "WXUSINGDLL" /d WXMAKINGDLL_STC
-# ADD RSC /l 0x405 /d "_DEBUG" /d "__WXMSW__" /d "__WXDEBUG__" /i "..\..\src\stc\..\..\..\include" /i "..\..\src\stc\..\..\..\lib\vc_dll\mswd" /i "..\..\src\stc\..\..\include" /i "..\..\src\stc\scintilla\include" /i "..\..\src\stc\scintilla\src" /d "__WX__" /d "SCI_LEXER" /d "LINK_LEXERS" /d "WXUSINGDLL" /d WXMAKINGDLL_STC
+# ADD BASE RSC /l 0x409 /d "_DEBUG" /d "__WXMSW__" /d "__WXDEBUG__" /i "..\..\src\stc\..\..\..\include" /i "..\..\src\stc\..\..\..\lib\vc_dll\mswd" /i "..\..\src\stc\..\..\include" /i "..\..\src\stc\scintilla\include" /i "..\..\src\stc\scintilla\src" /d "__WX__" /d "SCI_LEXER" /d "LINK_LEXERS" /d "WXUSINGDLL" /d WXMAKINGDLL_STC
+# ADD RSC /l 0x409 /d "_DEBUG" /d "__WXMSW__" /d "__WXDEBUG__" /i "..\..\src\stc\..\..\..\include" /i "..\..\src\stc\..\..\..\lib\vc_dll\mswd" /i "..\..\src\stc\..\..\include" /i "..\..\src\stc\scintilla\include" /i "..\..\src\stc\scintilla\src" /d "__WX__" /d "SCI_LEXER" /d "LINK_LEXERS" /d "WXUSINGDLL" /d WXMAKINGDLL_STC
 BSC32=bscmake.exe
 # ADD BASE BSC32 /nologo
 # ADD BSC32 /nologo
 LINK32=link.exe
-# ADD BASE LINK32 wxtiffd.lib wxjpegd.lib wxpngd.lib wxzlibd.lib wxregexd.lib wxexpatd.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib oleacc.lib odbc32.lib wxmsw25d_core.lib wxbase25d.lib /nologo /dll /machine:i386 /out:"..\..\src\stc\..\..\..\lib\vc_dll\wxmsw253d_stc_vc_custom.dll" /libpath:"..\..\src\stc\..\..\..\lib\vc_dll" /implib:"..\..\src\stc\..\..\..\lib\vc_dll\wxmsw25d_stc.lib" /debug
-# ADD LINK32 wxtiffd.lib wxjpegd.lib wxpngd.lib wxzlibd.lib wxregexd.lib wxexpatd.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib oleacc.lib odbc32.lib wxmsw25d_core.lib wxbase25d.lib /nologo /dll /machine:i386 /out:"..\..\src\stc\..\..\..\lib\vc_dll\wxmsw253d_stc_vc_custom.dll" /libpath:"..\..\src\stc\..\..\..\lib\vc_dll" /implib:"..\..\src\stc\..\..\..\lib\vc_dll\wxmsw25d_stc.lib" /debug
+# ADD BASE LINK32 wxtiffd.lib wxjpegd.lib wxpngd.lib wxzlibd.lib wxregexd.lib wxexpatd.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib oleacc.lib odbc32.lib wxmsw25d_core.lib wxbase25d.lib /nologo /dll /machine:i386 /out:"..\..\src\stc\..\..\..\lib\vc_dll\wxmsw254d_stc_vc_custom.dll" /libpath:"..\..\src\stc\..\..\..\lib\vc_dll" /implib:"..\..\src\stc\..\..\..\lib\vc_dll\wxmsw25d_stc.lib" /debug
+# ADD LINK32 wxtiffd.lib wxjpegd.lib wxpngd.lib wxzlibd.lib wxregexd.lib wxexpatd.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib oleacc.lib odbc32.lib wxmsw25d_core.lib wxbase25d.lib /nologo /dll /machine:i386 /out:"..\..\src\stc\..\..\..\lib\vc_dll\wxmsw254d_stc_vc_custom.dll" /libpath:"..\..\src\stc\..\..\..\lib\vc_dll" /implib:"..\..\src\stc\..\..\..\lib\vc_dll\wxmsw25d_stc.lib" /debug
 
 !ELSEIF  "$(CFG)" == "stc - Win32 Universal Unicode Release"
 
@@ -255,10 +255,10 @@ LINK32=link.exe
 # PROP Output_Dir "..\..\src\stc\..\..\..\lib\vc_lib"
 # PROP Intermediate_Dir "vc_mswunivu\stc"
 # PROP Target_Dir ""
-# ADD BASE CPP /nologo /FD /MD /O1 /GR /GX /I "..\..\src\stc\..\..\..\include" /I "..\..\src\stc\..\..\..\lib\vc_lib\mswunivu" /W4 /Fd..\..\src\stc\..\..\..\lib\vc_lib\wxmswuniv25u_stc.pdb /I "..\..\src\stc\..\..\include" /I "..\..\src\stc\scintilla\include" /I "..\..\src\stc\scintilla\src" /D "WIN32" /D "_LIB" /D "__WXMSW__" /D "__WXUNIVERSAL__" /D "_UNICODE" /D "__WX__" /D "SCI_LEXER" /D "LINK_LEXERS" /c
-# ADD CPP /nologo /FD /MD /O1 /GR /GX /I "..\..\src\stc\..\..\..\include" /I "..\..\src\stc\..\..\..\lib\vc_lib\mswunivu" /W4 /Fd..\..\src\stc\..\..\..\lib\vc_lib\wxmswuniv25u_stc.pdb /I "..\..\src\stc\..\..\include" /I "..\..\src\stc\scintilla\include" /I "..\..\src\stc\scintilla\src" /D "WIN32" /D "_LIB" /D "__WXMSW__" /D "__WXUNIVERSAL__" /D "_UNICODE" /D "__WX__" /D "SCI_LEXER" /D "LINK_LEXERS" /c
-# ADD BASE RSC /l 0x405
-# ADD RSC /l 0x405
+# ADD BASE CPP /nologo /FD /MD /O2 /GR /GX /I "..\..\src\stc\..\..\..\include" /I "..\..\src\stc\..\..\..\lib\vc_lib\mswunivu" /W4 /Fd..\..\src\stc\..\..\..\lib\vc_lib\wxmswuniv25u_stc.pdb /I "..\..\src\stc\..\..\include" /I "..\..\src\stc\scintilla\include" /I "..\..\src\stc\scintilla\src" /D "WIN32" /D "_LIB" /D "__WXMSW__" /D "__WXUNIVERSAL__" /D "_UNICODE" /D "__WX__" /D "SCI_LEXER" /D "LINK_LEXERS" /c
+# ADD CPP /nologo /FD /MD /O2 /GR /GX /I "..\..\src\stc\..\..\..\include" /I "..\..\src\stc\..\..\..\lib\vc_lib\mswunivu" /W4 /Fd..\..\src\stc\..\..\..\lib\vc_lib\wxmswuniv25u_stc.pdb /I "..\..\src\stc\..\..\include" /I "..\..\src\stc\scintilla\include" /I "..\..\src\stc\scintilla\src" /D "WIN32" /D "_LIB" /D "__WXMSW__" /D "__WXUNIVERSAL__" /D "_UNICODE" /D "__WX__" /D "SCI_LEXER" /D "LINK_LEXERS" /c
+# ADD BASE RSC /l 0x409
+# ADD RSC /l 0x409
 BSC32=bscmake.exe
 # ADD BASE BSC32 /nologo
 # ADD BSC32 /nologo
@@ -280,8 +280,8 @@ LIB32=link.exe -lib
 # PROP Target_Dir ""
 # ADD BASE CPP /nologo /FD /MDd /Od /GR /GX /I "..\..\src\stc\..\..\..\include" /I "..\..\src\stc\..\..\..\lib\vc_lib\mswunivud" /W4 /Zi /Gm /GZ /Fd..\..\src\stc\..\..\..\lib\vc_lib\wxmswuniv25ud_stc.pdb /I "..\..\src\stc\..\..\include" /I "..\..\src\stc\scintilla\include" /I "..\..\src\stc\scintilla\src" /D "WIN32" /D "_LIB" /D "_DEBUG" /D "__WXMSW__" /D "__WXUNIVERSAL__" /D "__WXDEBUG__" /D "_UNICODE" /D "__WX__" /D "SCI_LEXER" /D "LINK_LEXERS" /c
 # ADD CPP /nologo /FD /MDd /Od /GR /GX /I "..\..\src\stc\..\..\..\include" /I "..\..\src\stc\..\..\..\lib\vc_lib\mswunivud" /W4 /Zi /Gm /GZ /Fd..\..\src\stc\..\..\..\lib\vc_lib\wxmswuniv25ud_stc.pdb /I "..\..\src\stc\..\..\include" /I "..\..\src\stc\scintilla\include" /I "..\..\src\stc\scintilla\src" /D "WIN32" /D "_LIB" /D "_DEBUG" /D "__WXMSW__" /D "__WXUNIVERSAL__" /D "__WXDEBUG__" /D "_UNICODE" /D "__WX__" /D "SCI_LEXER" /D "LINK_LEXERS" /c
-# ADD BASE RSC /l 0x405
-# ADD RSC /l 0x405
+# ADD BASE RSC /l 0x409
+# ADD RSC /l 0x409
 BSC32=bscmake.exe
 # ADD BASE BSC32 /nologo
 # ADD BSC32 /nologo
@@ -301,10 +301,10 @@ LIB32=link.exe -lib
 # PROP Output_Dir "..\..\src\stc\..\..\..\lib\vc_lib"
 # PROP Intermediate_Dir "vc_mswuniv\stc"
 # PROP Target_Dir ""
-# ADD BASE CPP /nologo /FD /MD /O1 /GR /GX /I "..\..\src\stc\..\..\..\include" /I "..\..\src\stc\..\..\..\lib\vc_lib\mswuniv" /W4 /Fd..\..\src\stc\..\..\..\lib\vc_lib\wxmswuniv25_stc.pdb /I "..\..\src\stc\..\..\include" /I "..\..\src\stc\scintilla\include" /I "..\..\src\stc\scintilla\src" /D "WIN32" /D "_LIB" /D "__WXMSW__" /D "__WXUNIVERSAL__" /D "__WX__" /D "SCI_LEXER" /D "LINK_LEXERS" /c
-# ADD CPP /nologo /FD /MD /O1 /GR /GX /I "..\..\src\stc\..\..\..\include" /I "..\..\src\stc\..\..\..\lib\vc_lib\mswuniv" /W4 /Fd..\..\src\stc\..\..\..\lib\vc_lib\wxmswuniv25_stc.pdb /I "..\..\src\stc\..\..\include" /I "..\..\src\stc\scintilla\include" /I "..\..\src\stc\scintilla\src" /D "WIN32" /D "_LIB" /D "__WXMSW__" /D "__WXUNIVERSAL__" /D "__WX__" /D "SCI_LEXER" /D "LINK_LEXERS" /c
-# ADD BASE RSC /l 0x405
-# ADD RSC /l 0x405
+# ADD BASE CPP /nologo /FD /MD /O2 /GR /GX /I "..\..\src\stc\..\..\..\include" /I "..\..\src\stc\..\..\..\lib\vc_lib\mswuniv" /W4 /Fd..\..\src\stc\..\..\..\lib\vc_lib\wxmswuniv25_stc.pdb /I "..\..\src\stc\..\..\include" /I "..\..\src\stc\scintilla\include" /I "..\..\src\stc\scintilla\src" /D "WIN32" /D "_LIB" /D "__WXMSW__" /D "__WXUNIVERSAL__" /D "__WX__" /D "SCI_LEXER" /D "LINK_LEXERS" /c
+# ADD CPP /nologo /FD /MD /O2 /GR /GX /I "..\..\src\stc\..\..\..\include" /I "..\..\src\stc\..\..\..\lib\vc_lib\mswuniv" /W4 /Fd..\..\src\stc\..\..\..\lib\vc_lib\wxmswuniv25_stc.pdb /I "..\..\src\stc\..\..\include" /I "..\..\src\stc\scintilla\include" /I "..\..\src\stc\scintilla\src" /D "WIN32" /D "_LIB" /D "__WXMSW__" /D "__WXUNIVERSAL__" /D "__WX__" /D "SCI_LEXER" /D "LINK_LEXERS" /c
+# ADD BASE RSC /l 0x409
+# ADD RSC /l 0x409
 BSC32=bscmake.exe
 # ADD BASE BSC32 /nologo
 # ADD BSC32 /nologo
@@ -326,8 +326,8 @@ LIB32=link.exe -lib
 # PROP Target_Dir ""
 # ADD BASE CPP /nologo /FD /MDd /Od /GR /GX /I "..\..\src\stc\..\..\..\include" /I "..\..\src\stc\..\..\..\lib\vc_lib\mswunivd" /W4 /Zi /Gm /GZ /Fd..\..\src\stc\..\..\..\lib\vc_lib\wxmswuniv25d_stc.pdb /I "..\..\src\stc\..\..\include" /I "..\..\src\stc\scintilla\include" /I "..\..\src\stc\scintilla\src" /D "WIN32" /D "_LIB" /D "_DEBUG" /D "__WXMSW__" /D "__WXUNIVERSAL__" /D "__WXDEBUG__" /D "__WX__" /D "SCI_LEXER" /D "LINK_LEXERS" /c
 # ADD CPP /nologo /FD /MDd /Od /GR /GX /I "..\..\src\stc\..\..\..\include" /I "..\..\src\stc\..\..\..\lib\vc_lib\mswunivd" /W4 /Zi /Gm /GZ /Fd..\..\src\stc\..\..\..\lib\vc_lib\wxmswuniv25d_stc.pdb /I "..\..\src\stc\..\..\include" /I "..\..\src\stc\scintilla\include" /I "..\..\src\stc\scintilla\src" /D "WIN32" /D "_LIB" /D "_DEBUG" /D "__WXMSW__" /D "__WXUNIVERSAL__" /D "__WXDEBUG__" /D "__WX__" /D "SCI_LEXER" /D "LINK_LEXERS" /c
-# ADD BASE RSC /l 0x405
-# ADD RSC /l 0x405
+# ADD BASE RSC /l 0x409
+# ADD RSC /l 0x409
 BSC32=bscmake.exe
 # ADD BASE BSC32 /nologo
 # ADD BSC32 /nologo
@@ -347,10 +347,10 @@ LIB32=link.exe -lib
 # PROP Output_Dir "..\..\src\stc\..\..\..\lib\vc_lib"
 # PROP Intermediate_Dir "vc_mswu\stc"
 # PROP Target_Dir ""
-# ADD BASE CPP /nologo /FD /MD /O1 /GR /GX /I "..\..\src\stc\..\..\..\include" /I "..\..\src\stc\..\..\..\lib\vc_lib\mswu" /W4 /Fd..\..\src\stc\..\..\..\lib\vc_lib\wxmsw25u_stc.pdb /I "..\..\src\stc\..\..\include" /I "..\..\src\stc\scintilla\include" /I "..\..\src\stc\scintilla\src" /D "WIN32" /D "_LIB" /D "__WXMSW__" /D "_UNICODE" /D "__WX__" /D "SCI_LEXER" /D "LINK_LEXERS" /c
-# ADD CPP /nologo /FD /MD /O1 /GR /GX /I "..\..\src\stc\..\..\..\include" /I "..\..\src\stc\..\..\..\lib\vc_lib\mswu" /W4 /Fd..\..\src\stc\..\..\..\lib\vc_lib\wxmsw25u_stc.pdb /I "..\..\src\stc\..\..\include" /I "..\..\src\stc\scintilla\include" /I "..\..\src\stc\scintilla\src" /D "WIN32" /D "_LIB" /D "__WXMSW__" /D "_UNICODE" /D "__WX__" /D "SCI_LEXER" /D "LINK_LEXERS" /c
-# ADD BASE RSC /l 0x405
-# ADD RSC /l 0x405
+# ADD BASE CPP /nologo /FD /MD /O2 /GR /GX /I "..\..\src\stc\..\..\..\include" /I "..\..\src\stc\..\..\..\lib\vc_lib\mswu" /W4 /Fd..\..\src\stc\..\..\..\lib\vc_lib\wxmsw25u_stc.pdb /I "..\..\src\stc\..\..\include" /I "..\..\src\stc\scintilla\include" /I "..\..\src\stc\scintilla\src" /D "WIN32" /D "_LIB" /D "__WXMSW__" /D "_UNICODE" /D "__WX__" /D "SCI_LEXER" /D "LINK_LEXERS" /c
+# ADD CPP /nologo /FD /MD /O2 /GR /GX /I "..\..\src\stc\..\..\..\include" /I "..\..\src\stc\..\..\..\lib\vc_lib\mswu" /W4 /Fd..\..\src\stc\..\..\..\lib\vc_lib\wxmsw25u_stc.pdb /I "..\..\src\stc\..\..\include" /I "..\..\src\stc\scintilla\include" /I "..\..\src\stc\scintilla\src" /D "WIN32" /D "_LIB" /D "__WXMSW__" /D "_UNICODE" /D "__WX__" /D "SCI_LEXER" /D "LINK_LEXERS" /c
+# ADD BASE RSC /l 0x409
+# ADD RSC /l 0x409
 BSC32=bscmake.exe
 # ADD BASE BSC32 /nologo
 # ADD BSC32 /nologo
@@ -372,8 +372,8 @@ LIB32=link.exe -lib
 # PROP Target_Dir ""
 # ADD BASE CPP /nologo /FD /MDd /Od /GR /GX /I "..\..\src\stc\..\..\..\include" /I "..\..\src\stc\..\..\..\lib\vc_lib\mswud" /W4 /Zi /Gm /GZ /Fd..\..\src\stc\..\..\..\lib\vc_lib\wxmsw25ud_stc.pdb /I "..\..\src\stc\..\..\include" /I "..\..\src\stc\scintilla\include" /I "..\..\src\stc\scintilla\src" /D "WIN32" /D "_LIB" /D "_DEBUG" /D "__WXMSW__" /D "__WXDEBUG__" /D "_UNICODE" /D "__WX__" /D "SCI_LEXER" /D "LINK_LEXERS" /c
 # ADD CPP /nologo /FD /MDd /Od /GR /GX /I "..\..\src\stc\..\..\..\include" /I "..\..\src\stc\..\..\..\lib\vc_lib\mswud" /W4 /Zi /Gm /GZ /Fd..\..\src\stc\..\..\..\lib\vc_lib\wxmsw25ud_stc.pdb /I "..\..\src\stc\..\..\include" /I "..\..\src\stc\scintilla\include" /I "..\..\src\stc\scintilla\src" /D "WIN32" /D "_LIB" /D "_DEBUG" /D "__WXMSW__" /D "__WXDEBUG__" /D "_UNICODE" /D "__WX__" /D "SCI_LEXER" /D "LINK_LEXERS" /c
-# ADD BASE RSC /l 0x405
-# ADD RSC /l 0x405
+# ADD BASE RSC /l 0x409
+# ADD RSC /l 0x409
 BSC32=bscmake.exe
 # ADD BASE BSC32 /nologo
 # ADD BSC32 /nologo
@@ -393,10 +393,10 @@ LIB32=link.exe -lib
 # PROP Output_Dir "..\..\src\stc\..\..\..\lib\vc_lib"
 # PROP Intermediate_Dir "vc_msw\stc"
 # PROP Target_Dir ""
-# ADD BASE CPP /nologo /FD /MD /O1 /GR /GX /I "..\..\src\stc\..\..\..\include" /I "..\..\src\stc\..\..\..\lib\vc_lib\msw" /W4 /Fd..\..\src\stc\..\..\..\lib\vc_lib\wxmsw25_stc.pdb /I "..\..\src\stc\..\..\include" /I "..\..\src\stc\scintilla\include" /I "..\..\src\stc\scintilla\src" /D "WIN32" /D "_LIB" /D "__WXMSW__" /D "__WX__" /D "SCI_LEXER" /D "LINK_LEXERS" /c
-# ADD CPP /nologo /FD /MD /O1 /GR /GX /I "..\..\src\stc\..\..\..\include" /I "..\..\src\stc\..\..\..\lib\vc_lib\msw" /W4 /Fd..\..\src\stc\..\..\..\lib\vc_lib\wxmsw25_stc.pdb /I "..\..\src\stc\..\..\include" /I "..\..\src\stc\scintilla\include" /I "..\..\src\stc\scintilla\src" /D "WIN32" /D "_LIB" /D "__WXMSW__" /D "__WX__" /D "SCI_LEXER" /D "LINK_LEXERS" /c
-# ADD BASE RSC /l 0x405
-# ADD RSC /l 0x405
+# ADD BASE CPP /nologo /FD /MD /O2 /GR /GX /I "..\..\src\stc\..\..\..\include" /I "..\..\src\stc\..\..\..\lib\vc_lib\msw" /W4 /Fd..\..\src\stc\..\..\..\lib\vc_lib\wxmsw25_stc.pdb /I "..\..\src\stc\..\..\include" /I "..\..\src\stc\scintilla\include" /I "..\..\src\stc\scintilla\src" /D "WIN32" /D "_LIB" /D "__WXMSW__" /D "__WX__" /D "SCI_LEXER" /D "LINK_LEXERS" /c
+# ADD CPP /nologo /FD /MD /O2 /GR /GX /I "..\..\src\stc\..\..\..\include" /I "..\..\src\stc\..\..\..\lib\vc_lib\msw" /W4 /Fd..\..\src\stc\..\..\..\lib\vc_lib\wxmsw25_stc.pdb /I "..\..\src\stc\..\..\include" /I "..\..\src\stc\scintilla\include" /I "..\..\src\stc\scintilla\src" /D "WIN32" /D "_LIB" /D "__WXMSW__" /D "__WX__" /D "SCI_LEXER" /D "LINK_LEXERS" /c
+# ADD BASE RSC /l 0x409
+# ADD RSC /l 0x409
 BSC32=bscmake.exe
 # ADD BASE BSC32 /nologo
 # ADD BSC32 /nologo
@@ -418,8 +418,8 @@ LIB32=link.exe -lib
 # PROP Target_Dir ""
 # ADD BASE CPP /nologo /FD /MDd /Od /GR /GX /I "..\..\src\stc\..\..\..\include" /I "..\..\src\stc\..\..\..\lib\vc_lib\mswd" /W4 /Zi /Gm /GZ /Fd..\..\src\stc\..\..\..\lib\vc_lib\wxmsw25d_stc.pdb /I "..\..\src\stc\..\..\include" /I "..\..\src\stc\scintilla\include" /I "..\..\src\stc\scintilla\src" /D "WIN32" /D "_LIB" /D "_DEBUG" /D "__WXMSW__" /D "__WXDEBUG__" /D "__WX__" /D "SCI_LEXER" /D "LINK_LEXERS" /c
 # ADD CPP /nologo /FD /MDd /Od /GR /GX /I "..\..\src\stc\..\..\..\include" /I "..\..\src\stc\..\..\..\lib\vc_lib\mswd" /W4 /Zi /Gm /GZ /Fd..\..\src\stc\..\..\..\lib\vc_lib\wxmsw25d_stc.pdb /I "..\..\src\stc\..\..\include" /I "..\..\src\stc\scintilla\include" /I "..\..\src\stc\scintilla\src" /D "WIN32" /D "_LIB" /D "_DEBUG" /D "__WXMSW__" /D "__WXDEBUG__" /D "__WX__" /D "SCI_LEXER" /D "LINK_LEXERS" /c
-# ADD BASE RSC /l 0x405
-# ADD RSC /l 0x405
+# ADD BASE RSC /l 0x409
+# ADD RSC /l 0x409
 BSC32=bscmake.exe
 # ADD BASE BSC32 /nologo
 # ADD BSC32 /nologo
@@ -516,6 +516,10 @@ SOURCE=../../src/stc\scintilla\src\LexAsm.cxx
 # End Source File
 # Begin Source File
 
+SOURCE=../../src/stc\scintilla\src\LexAsn1.cxx
+# End Source File
+# Begin Source File
+
 SOURCE=../../src/stc\scintilla\src\LexBaan.cxx
 # End Source File
 # Begin Source File
@@ -668,6 +672,10 @@ SOURCE=../../src/stc\scintilla\src\LexVB.cxx
 # End Source File
 # Begin Source File
 
+SOURCE=../../src/stc\scintilla\src\LexVHDL.cxx
+# End Source File
+# Begin Source File
+
 SOURCE=../../src/stc\scintilla\src\LexVerilog.cxx
 # End Source File
 # Begin Source File
index 10519a61b70eae7cb25c17ed67b261c44da3d3af..b636753aa5267ae976e36852319e74db7b6a5068 100644 (file)
 #define wxSTC_LEX_AU3 60
 #define wxSTC_LEX_APDL 61
 #define wxSTC_LEX_BASH 62
+#define wxSTC_LEX_ASN1 63
+#define wxSTC_LEX_VHDL 64
 
 // When a lexer specifies its language as SCLEX_AUTOMATIC it receives a
 // value assigned in sequence from SCLEX_AUTOMATIC+1.
 #define wxSTC_ERR_IFORT 17
 #define wxSTC_ERR_ABSF 18
 #define wxSTC_ERR_TIDY 19
+#define wxSTC_ERR_JAVA_STACK 20
 
 // Lexical states for SCLEX_BATCH
 #define wxSTC_BAT_DEFAULT 0
 #define wxSTC_CSS_DIRECTIVE 12
 #define wxSTC_CSS_DOUBLESTRING 13
 #define wxSTC_CSS_SINGLESTRING 14
+#define wxSTC_CSS_IDENTIFIER2 15
 
 // Lexical states for SCLEX_POV
 #define wxSTC_POV_DEFAULT 0
 #define wxSTC_AU3_VARIABLE 9
 #define wxSTC_AU3_SENT 10
 #define wxSTC_AU3_PREPROCESSOR 11
+#define wxSTC_AU3_SPECIAL 12
 
 // Lexical states for SCLEX_APDL
 #define wxSTC_APDL_DEFAULT 0
 #define wxSTC_APDL_COMMENTBLOCK 2
 #define wxSTC_APDL_NUMBER 3
 #define wxSTC_APDL_STRING 4
-#define wxSTC_APDL_WORD 5
-#define wxSTC_APDL_COMMAND 6
+#define wxSTC_APDL_OPERATOR 5
+#define wxSTC_APDL_WORD 6
 #define wxSTC_APDL_PROCESSOR 7
-#define wxSTC_APDL_FUNCTION 8
+#define wxSTC_APDL_COMMAND 8
+#define wxSTC_APDL_SLASHCOMMAND 9
+#define wxSTC_APDL_STARCOMMAND 10
+#define wxSTC_APDL_ARGUMENT 11
+#define wxSTC_APDL_FUNCTION 12
 
 // Lexical states for SCLEX_BASH
 #define wxSTC_SH_DEFAULT 0
 #define wxSTC_SH_HERE_DELIM 12
 #define wxSTC_SH_HERE_Q 13
 
+// Lexical states for SCLEX_ASN1
+#define wxSTC_ASN1_DEFAULT 0
+#define wxSTC_ASN1_COMMENT 1
+#define wxSTC_ASN1_IDENTIFIER 2
+#define wxSTC_ASN1_STRING 3
+#define wxSTC_ASN1_OID 4
+#define wxSTC_ASN1_SCALAR 5
+#define wxSTC_ASN1_KEYWORD 6
+#define wxSTC_ASN1_ATTRIBUTE 7
+#define wxSTC_ASN1_DESCRIPTOR 8
+#define wxSTC_ASN1_TYPE 9
+#define wxSTC_ASN1_OPERATOR 10
+
+// Lexical states for SCLEX_VHDL
+#define wxSTC_VHDL_DEFAULT 0
+#define wxSTC_VHDL_COMMENT 1
+#define wxSTC_VHDL_COMMENTLINEBANG 2
+#define wxSTC_VHDL_NUMBER 3
+#define wxSTC_VHDL_STRING 4
+#define wxSTC_VHDL_OPERATOR 5
+#define wxSTC_VHDL_IDENTIFIER 6
+#define wxSTC_VHDL_STRINGEOL 7
+#define wxSTC_VHDL_KEYWORD 8
+#define wxSTC_VHDL_STDOPERATOR 9
+#define wxSTC_VHDL_ATTRIBUTE 10
+#define wxSTC_VHDL_STDFUNCTION 11
+#define wxSTC_VHDL_STDPACKAGE 12
+#define wxSTC_VHDL_STDTYPE 13
+#define wxSTC_VHDL_USERWORD 14
+
 
 //-----------------------------------------
 // Commands that can be bound to keystrokes
@@ -2737,6 +2776,10 @@ public:
     // Enlarge the document to a particular size of text bytes.
     void Allocate(int bytes);
 
+    // Find the position of a column on a line taking into account tabs and 
+    // multi-byte characters. If beyond end of line, return line end position.
+    int FindColumn(int line, int column);
+
     // Start notifying the container of all key presses and commands.
     void StartRecord();
 
index 77751156071d72bec2ea565054aea9e7e9f11947..385a300f1211e48dac3a99969651c88ec5b55e66 100644 (file)
@@ -1,6 +1,6 @@
 # =========================================================================
 #     This makefile was generated by
-#     Bakefile 0.1.4 (http://bakefile.sourceforge.net)
+#     Bakefile 0.1.6 (http://bakefile.sourceforge.net)
 #     Do not modify, all changes will be overwritten!
 # =========================================================================
 
@@ -49,8 +49,8 @@ HOST_SUFFIX = @HOST_SUFFIX@
 DESTDIR = 
 WX_RELEASE = 2.5
 WX_RELEASE_NODOT = 25
-WX_VERSION = $(WX_RELEASE).3
-WX_VERSION_NODOT = $(WX_RELEASE_NODOT)3
+WX_VERSION = $(WX_RELEASE).4
+WX_VERSION_NODOT = $(WX_RELEASE_NODOT)4
 LIBDIRNAME = $(top_builddir)lib
 STCDLL_CXXFLAGS = -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \
        -I$(srcdir)/../../include -I$(srcdir)/scintilla/include \
@@ -64,8 +64,8 @@ STCDLL_OBJECTS =  \
        stcdll_CallTip.o \
        stcdll_CellBuffer.o \
        stcdll_ContractionState.o \
-       stcdll_DocumentAccessor.o \
        stcdll_Document.o \
+       stcdll_DocumentAccessor.o \
        stcdll_Editor.o \
        stcdll_ExternalLexer.o \
        stcdll_Indicator.o \
@@ -76,6 +76,7 @@ STCDLL_OBJECTS =  \
        stcdll_LexAVE.o \
        stcdll_LexAda.o \
        stcdll_LexAsm.o \
+       stcdll_LexAsn1.o \
        stcdll_LexBaan.o \
        stcdll_LexBash.o \
        stcdll_LexBullant.o \
@@ -114,14 +115,15 @@ STCDLL_OBJECTS =  \
        stcdll_LexSpecman.o \
        stcdll_LexTeX.o \
        stcdll_LexVB.o \
+       stcdll_LexVHDL.o \
        stcdll_LexVerilog.o \
        stcdll_LexYAML.o \
        stcdll_LineMarker.o \
        stcdll_PropSet.o \
        stcdll_RESearch.o \
        stcdll_ScintillaBase.o \
-       stcdll_StyleContext.o \
        stcdll_Style.o \
+       stcdll_StyleContext.o \
        stcdll_UniConversion.o \
        stcdll_ViewStyle.o \
        stcdll_WindowAccessor.o \
@@ -138,8 +140,8 @@ STCLIB_OBJECTS =  \
        stclib_CallTip.o \
        stclib_CellBuffer.o \
        stclib_ContractionState.o \
-       stclib_DocumentAccessor.o \
        stclib_Document.o \
+       stclib_DocumentAccessor.o \
        stclib_Editor.o \
        stclib_ExternalLexer.o \
        stclib_Indicator.o \
@@ -150,6 +152,7 @@ STCLIB_OBJECTS =  \
        stclib_LexAVE.o \
        stclib_LexAda.o \
        stclib_LexAsm.o \
+       stclib_LexAsn1.o \
        stclib_LexBaan.o \
        stclib_LexBash.o \
        stclib_LexBullant.o \
@@ -188,14 +191,15 @@ STCLIB_OBJECTS =  \
        stclib_LexSpecman.o \
        stclib_LexTeX.o \
        stclib_LexVB.o \
+       stclib_LexVHDL.o \
        stclib_LexVerilog.o \
        stclib_LexYAML.o \
        stclib_LineMarker.o \
        stclib_PropSet.o \
        stclib_RESearch.o \
        stclib_ScintillaBase.o \
-       stclib_StyleContext.o \
        stclib_Style.o \
+       stclib_StyleContext.o \
        stclib_UniConversion.o \
        stclib_ViewStyle.o \
        stclib_WindowAccessor.o \
@@ -238,14 +242,14 @@ COND_PLATFORM_WIN32_1___stcdll___importlib = \
        -Wl,--out-implib,$(LIBDIRNAME)/$(LIBPREFIX)wx_$(PORTNAME)$(WXUNIVNAME)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_stc-$(WX_RELEASE)$(HOST_SUFFIX).$(DLLIMP_SUFFIX)
 @COND_PLATFORM_WIN32_1@__stcdll___importlib = $(COND_PLATFORM_WIN32_1___stcdll___importlib)
 @COND_PLATFORM_MACOSX_0_USE_SOVERSION_1@__stcdll___targetsuf2 \
-@COND_PLATFORM_MACOSX_0_USE_SOVERSION_1@       = .$(SO_SUFFIX).3
+@COND_PLATFORM_MACOSX_0_USE_SOVERSION_1@       = .$(SO_SUFFIX).4
 @COND_PLATFORM_MACOSX_1_USE_SOVERSION_1@__stcdll___targetsuf2 \
-@COND_PLATFORM_MACOSX_1_USE_SOVERSION_1@       = .3.$(SO_SUFFIX)
+@COND_PLATFORM_MACOSX_1_USE_SOVERSION_1@       = .4.$(SO_SUFFIX)
 @COND_USE_SOVERSION_0@__stcdll___targetsuf2 = .$(SO_SUFFIX)
 @COND_PLATFORM_MACOSX_0_USE_SOVERSION_1@__stcdll___targetsuf3 \
-@COND_PLATFORM_MACOSX_0_USE_SOVERSION_1@       = .$(SO_SUFFIX).3.0.0
+@COND_PLATFORM_MACOSX_0_USE_SOVERSION_1@       = .$(SO_SUFFIX).4.0.0
 @COND_PLATFORM_MACOSX_1_USE_SOVERSION_1@__stcdll___targetsuf3 \
-@COND_PLATFORM_MACOSX_1_USE_SOVERSION_1@       = .3.0.0.$(SO_SUFFIX)
+@COND_PLATFORM_MACOSX_1_USE_SOVERSION_1@       = .4.0.0.$(SO_SUFFIX)
 @COND_USE_SOVERSION_0@__stcdll___targetsuf3 = .$(SO_SUFFIX)
 COND_USE_SOVERLINUX_1___stcdll___soname_flags = \
        $(SONAME_FLAG)$(DLLPREFIX)$(WXDLLNAMEPREFIXGUI)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_stc$(WXCOMPILER)$(VENDORTAG)$(WXDLLVERSIONTAG)$(__stcdll___targetsuf2)
@@ -336,7 +340,7 @@ clean:
        rm -f $(LIBDIRNAME)/$(LIBPREFIX)wx_$(PORTNAME)$(WXUNIVNAME)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_stc-$(WX_RELEASE)$(HOST_SUFFIX)$(LIBEXT)
 
 distclean: clean
-       rm -f configure config.cache config.log config.status bk-deps bk-make-pch shared-ld-sh Makefile
+       rm -f config.cache config.log config.status bk-deps bk-make-pch shared-ld-sh Makefile
 
 @COND_SHARED_1@$(LIBDIRNAME)/$(DLLPREFIX)$(WXDLLNAMEPREFIXGUI)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_stc$(WXCOMPILER)$(VENDORTAG)$(WXDLLVERSIONTAG)$(__stcdll___targetsuf3): $(STCDLL_OBJECTS)
 @COND_SHARED_1@        $(SHARED_LD_CXX) $@ $(STCDLL_OBJECTS) $(LDFLAGS)   -L$(LIBDIRNAME) $(__stcdll___macinstnamecmd) $(__stcdll___importlib) $(__stcdll___soname_flags) $(__stcdll___macver)  $(__WXLIB_MONO_p) $(__LIB_TIFF_p) $(__LIB_JPEG_p) $(__LIB_PNG_p) $(__LIB_ZLIB_p) $(__LIB_ODBC_p) $(__LIB_REGEX_p) $(__LIB_EXPAT_p) $(EXTRALIBS_FOR_BASE) $(EXTRALIBS_FOR_GUI) $(__WXLIB_CORE_p)  $(__WXLIB_BASE_p)
@@ -359,418 +363,430 @@ distclean: clean
 @COND_SHARED_0@        $(INSTALL_DATA) $(LIBDIRNAME)/$(LIBPREFIX)wx_$(PORTNAME)$(WXUNIVNAME)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_stc-$(WX_RELEASE)$(HOST_SUFFIX)$(LIBEXT) $(DESTDIR)$(libdir)
 
 stcdll_PlatWX.o: $(srcdir)/PlatWX.cpp
-       $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $<
+       $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $(srcdir)/PlatWX.cpp
 
 stcdll_ScintillaWX.o: $(srcdir)/ScintillaWX.cpp
-       $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $<
+       $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $(srcdir)/ScintillaWX.cpp
 
 stcdll_stc.o: $(srcdir)/stc.cpp
-       $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $<
+       $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $(srcdir)/stc.cpp
 
 stcdll_AutoComplete.o: $(srcdir)/scintilla/src/AutoComplete.cxx
-       $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $<
+       $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $(srcdir)/scintilla/src/AutoComplete.cxx
 
 stcdll_CallTip.o: $(srcdir)/scintilla/src/CallTip.cxx
-       $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $<
+       $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $(srcdir)/scintilla/src/CallTip.cxx
 
 stcdll_CellBuffer.o: $(srcdir)/scintilla/src/CellBuffer.cxx
-       $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $<
+       $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $(srcdir)/scintilla/src/CellBuffer.cxx
 
 stcdll_ContractionState.o: $(srcdir)/scintilla/src/ContractionState.cxx
-       $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $<
-
-stcdll_DocumentAccessor.o: $(srcdir)/scintilla/src/DocumentAccessor.cxx
-       $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $<
+       $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $(srcdir)/scintilla/src/ContractionState.cxx
 
 stcdll_Document.o: $(srcdir)/scintilla/src/Document.cxx
-       $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $<
+       $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $(srcdir)/scintilla/src/Document.cxx
+
+stcdll_DocumentAccessor.o: $(srcdir)/scintilla/src/DocumentAccessor.cxx
+       $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $(srcdir)/scintilla/src/DocumentAccessor.cxx
 
 stcdll_Editor.o: $(srcdir)/scintilla/src/Editor.cxx
-       $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $<
+       $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $(srcdir)/scintilla/src/Editor.cxx
 
 stcdll_ExternalLexer.o: $(srcdir)/scintilla/src/ExternalLexer.cxx
-       $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $<
+       $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $(srcdir)/scintilla/src/ExternalLexer.cxx
 
 stcdll_Indicator.o: $(srcdir)/scintilla/src/Indicator.cxx
-       $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $<
+       $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $(srcdir)/scintilla/src/Indicator.cxx
 
 stcdll_KeyMap.o: $(srcdir)/scintilla/src/KeyMap.cxx
-       $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $<
+       $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $(srcdir)/scintilla/src/KeyMap.cxx
 
 stcdll_KeyWords.o: $(srcdir)/scintilla/src/KeyWords.cxx
-       $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $<
+       $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $(srcdir)/scintilla/src/KeyWords.cxx
 
 stcdll_LexAPDL.o: $(srcdir)/scintilla/src/LexAPDL.cxx
-       $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $<
+       $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $(srcdir)/scintilla/src/LexAPDL.cxx
 
 stcdll_LexAU3.o: $(srcdir)/scintilla/src/LexAU3.cxx
-       $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $<
+       $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $(srcdir)/scintilla/src/LexAU3.cxx
 
 stcdll_LexAVE.o: $(srcdir)/scintilla/src/LexAVE.cxx
-       $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $<
+       $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $(srcdir)/scintilla/src/LexAVE.cxx
 
 stcdll_LexAda.o: $(srcdir)/scintilla/src/LexAda.cxx
-       $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $<
+       $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $(srcdir)/scintilla/src/LexAda.cxx
 
 stcdll_LexAsm.o: $(srcdir)/scintilla/src/LexAsm.cxx
-       $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $<
+       $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $(srcdir)/scintilla/src/LexAsm.cxx
+
+stcdll_LexAsn1.o: $(srcdir)/scintilla/src/LexAsn1.cxx
+       $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $(srcdir)/scintilla/src/LexAsn1.cxx
 
 stcdll_LexBaan.o: $(srcdir)/scintilla/src/LexBaan.cxx
-       $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $<
+       $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $(srcdir)/scintilla/src/LexBaan.cxx
 
 stcdll_LexBash.o: $(srcdir)/scintilla/src/LexBash.cxx
-       $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $<
+       $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $(srcdir)/scintilla/src/LexBash.cxx
 
 stcdll_LexBullant.o: $(srcdir)/scintilla/src/LexBullant.cxx
-       $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $<
+       $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $(srcdir)/scintilla/src/LexBullant.cxx
 
 stcdll_LexCLW.o: $(srcdir)/scintilla/src/LexCLW.cxx
-       $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $<
+       $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $(srcdir)/scintilla/src/LexCLW.cxx
 
 stcdll_LexCPP.o: $(srcdir)/scintilla/src/LexCPP.cxx
-       $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $<
+       $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $(srcdir)/scintilla/src/LexCPP.cxx
 
 stcdll_LexCSS.o: $(srcdir)/scintilla/src/LexCSS.cxx
-       $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $<
+       $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $(srcdir)/scintilla/src/LexCSS.cxx
 
 stcdll_LexConf.o: $(srcdir)/scintilla/src/LexConf.cxx
-       $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $<
+       $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $(srcdir)/scintilla/src/LexConf.cxx
 
 stcdll_LexCrontab.o: $(srcdir)/scintilla/src/LexCrontab.cxx
-       $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $<
+       $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $(srcdir)/scintilla/src/LexCrontab.cxx
 
 stcdll_LexEScript.o: $(srcdir)/scintilla/src/LexEScript.cxx
-       $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $<
+       $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $(srcdir)/scintilla/src/LexEScript.cxx
 
 stcdll_LexEiffel.o: $(srcdir)/scintilla/src/LexEiffel.cxx
-       $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $<
+       $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $(srcdir)/scintilla/src/LexEiffel.cxx
 
 stcdll_LexErlang.o: $(srcdir)/scintilla/src/LexErlang.cxx
-       $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $<
+       $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $(srcdir)/scintilla/src/LexErlang.cxx
 
 stcdll_LexForth.o: $(srcdir)/scintilla/src/LexForth.cxx
-       $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $<
+       $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $(srcdir)/scintilla/src/LexForth.cxx
 
 stcdll_LexFortran.o: $(srcdir)/scintilla/src/LexFortran.cxx
-       $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $<
+       $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $(srcdir)/scintilla/src/LexFortran.cxx
 
 stcdll_LexGui4Cli.o: $(srcdir)/scintilla/src/LexGui4Cli.cxx
-       $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $<
+       $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $(srcdir)/scintilla/src/LexGui4Cli.cxx
 
 stcdll_LexHTML.o: $(srcdir)/scintilla/src/LexHTML.cxx
-       $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $<
+       $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $(srcdir)/scintilla/src/LexHTML.cxx
 
 stcdll_LexKix.o: $(srcdir)/scintilla/src/LexKix.cxx
-       $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $<
+       $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $(srcdir)/scintilla/src/LexKix.cxx
 
 stcdll_LexLisp.o: $(srcdir)/scintilla/src/LexLisp.cxx
-       $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $<
+       $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $(srcdir)/scintilla/src/LexLisp.cxx
 
 stcdll_LexLout.o: $(srcdir)/scintilla/src/LexLout.cxx
-       $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $<
+       $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $(srcdir)/scintilla/src/LexLout.cxx
 
 stcdll_LexLua.o: $(srcdir)/scintilla/src/LexLua.cxx
-       $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $<
+       $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $(srcdir)/scintilla/src/LexLua.cxx
 
 stcdll_LexMMIXAL.o: $(srcdir)/scintilla/src/LexMMIXAL.cxx
-       $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $<
+       $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $(srcdir)/scintilla/src/LexMMIXAL.cxx
 
 stcdll_LexMPT.o: $(srcdir)/scintilla/src/LexMPT.cxx
-       $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $<
+       $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $(srcdir)/scintilla/src/LexMPT.cxx
 
 stcdll_LexMSSQL.o: $(srcdir)/scintilla/src/LexMSSQL.cxx
-       $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $<
+       $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $(srcdir)/scintilla/src/LexMSSQL.cxx
 
 stcdll_LexMatlab.o: $(srcdir)/scintilla/src/LexMatlab.cxx
-       $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $<
+       $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $(srcdir)/scintilla/src/LexMatlab.cxx
 
 stcdll_LexMetapost.o: $(srcdir)/scintilla/src/LexMetapost.cxx
-       $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $<
+       $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $(srcdir)/scintilla/src/LexMetapost.cxx
 
 stcdll_LexNsis.o: $(srcdir)/scintilla/src/LexNsis.cxx
-       $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $<
+       $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $(srcdir)/scintilla/src/LexNsis.cxx
 
 stcdll_LexOthers.o: $(srcdir)/scintilla/src/LexOthers.cxx
-       $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $<
+       $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $(srcdir)/scintilla/src/LexOthers.cxx
 
 stcdll_LexPB.o: $(srcdir)/scintilla/src/LexPB.cxx
-       $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $<
+       $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $(srcdir)/scintilla/src/LexPB.cxx
 
 stcdll_LexPOV.o: $(srcdir)/scintilla/src/LexPOV.cxx
-       $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $<
+       $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $(srcdir)/scintilla/src/LexPOV.cxx
 
 stcdll_LexPS.o: $(srcdir)/scintilla/src/LexPS.cxx
-       $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $<
+       $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $(srcdir)/scintilla/src/LexPS.cxx
 
 stcdll_LexPascal.o: $(srcdir)/scintilla/src/LexPascal.cxx
-       $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $<
+       $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $(srcdir)/scintilla/src/LexPascal.cxx
 
 stcdll_LexPerl.o: $(srcdir)/scintilla/src/LexPerl.cxx
-       $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $<
+       $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $(srcdir)/scintilla/src/LexPerl.cxx
 
 stcdll_LexPython.o: $(srcdir)/scintilla/src/LexPython.cxx
-       $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $<
+       $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $(srcdir)/scintilla/src/LexPython.cxx
 
 stcdll_LexRuby.o: $(srcdir)/scintilla/src/LexRuby.cxx
-       $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $<
+       $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $(srcdir)/scintilla/src/LexRuby.cxx
 
 stcdll_LexSQL.o: $(srcdir)/scintilla/src/LexSQL.cxx
-       $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $<
+       $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $(srcdir)/scintilla/src/LexSQL.cxx
 
 stcdll_LexScriptol.o: $(srcdir)/scintilla/src/LexScriptol.cxx
-       $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $<
+       $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $(srcdir)/scintilla/src/LexScriptol.cxx
 
 stcdll_LexSpecman.o: $(srcdir)/scintilla/src/LexSpecman.cxx
-       $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $<
+       $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $(srcdir)/scintilla/src/LexSpecman.cxx
 
 stcdll_LexTeX.o: $(srcdir)/scintilla/src/LexTeX.cxx
-       $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $<
+       $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $(srcdir)/scintilla/src/LexTeX.cxx
 
 stcdll_LexVB.o: $(srcdir)/scintilla/src/LexVB.cxx
-       $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $<
+       $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $(srcdir)/scintilla/src/LexVB.cxx
+
+stcdll_LexVHDL.o: $(srcdir)/scintilla/src/LexVHDL.cxx
+       $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $(srcdir)/scintilla/src/LexVHDL.cxx
 
 stcdll_LexVerilog.o: $(srcdir)/scintilla/src/LexVerilog.cxx
-       $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $<
+       $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $(srcdir)/scintilla/src/LexVerilog.cxx
 
 stcdll_LexYAML.o: $(srcdir)/scintilla/src/LexYAML.cxx
-       $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $<
+       $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $(srcdir)/scintilla/src/LexYAML.cxx
 
 stcdll_LineMarker.o: $(srcdir)/scintilla/src/LineMarker.cxx
-       $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $<
+       $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $(srcdir)/scintilla/src/LineMarker.cxx
 
 stcdll_PropSet.o: $(srcdir)/scintilla/src/PropSet.cxx
-       $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $<
+       $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $(srcdir)/scintilla/src/PropSet.cxx
 
 stcdll_RESearch.o: $(srcdir)/scintilla/src/RESearch.cxx
-       $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $<
+       $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $(srcdir)/scintilla/src/RESearch.cxx
 
 stcdll_ScintillaBase.o: $(srcdir)/scintilla/src/ScintillaBase.cxx
-       $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $<
-
-stcdll_StyleContext.o: $(srcdir)/scintilla/src/StyleContext.cxx
-       $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $<
+       $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $(srcdir)/scintilla/src/ScintillaBase.cxx
 
 stcdll_Style.o: $(srcdir)/scintilla/src/Style.cxx
-       $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $<
+       $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $(srcdir)/scintilla/src/Style.cxx
+
+stcdll_StyleContext.o: $(srcdir)/scintilla/src/StyleContext.cxx
+       $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $(srcdir)/scintilla/src/StyleContext.cxx
 
 stcdll_UniConversion.o: $(srcdir)/scintilla/src/UniConversion.cxx
-       $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $<
+       $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $(srcdir)/scintilla/src/UniConversion.cxx
 
 stcdll_ViewStyle.o: $(srcdir)/scintilla/src/ViewStyle.cxx
-       $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $<
+       $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $(srcdir)/scintilla/src/ViewStyle.cxx
 
 stcdll_WindowAccessor.o: $(srcdir)/scintilla/src/WindowAccessor.cxx
-       $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $<
+       $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $(srcdir)/scintilla/src/WindowAccessor.cxx
 
 stcdll_XPM.o: $(srcdir)/scintilla/src/XPM.cxx
-       $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $<
+       $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $(srcdir)/scintilla/src/XPM.cxx
 
 stclib_PlatWX.o: $(srcdir)/PlatWX.cpp
-       $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $<
+       $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $(srcdir)/PlatWX.cpp
 
 stclib_ScintillaWX.o: $(srcdir)/ScintillaWX.cpp
-       $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $<
+       $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $(srcdir)/ScintillaWX.cpp
 
 stclib_stc.o: $(srcdir)/stc.cpp
-       $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $<
+       $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $(srcdir)/stc.cpp
 
 stclib_AutoComplete.o: $(srcdir)/scintilla/src/AutoComplete.cxx
-       $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $<
+       $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $(srcdir)/scintilla/src/AutoComplete.cxx
 
 stclib_CallTip.o: $(srcdir)/scintilla/src/CallTip.cxx
-       $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $<
+       $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $(srcdir)/scintilla/src/CallTip.cxx
 
 stclib_CellBuffer.o: $(srcdir)/scintilla/src/CellBuffer.cxx
-       $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $<
+       $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $(srcdir)/scintilla/src/CellBuffer.cxx
 
 stclib_ContractionState.o: $(srcdir)/scintilla/src/ContractionState.cxx
-       $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $<
-
-stclib_DocumentAccessor.o: $(srcdir)/scintilla/src/DocumentAccessor.cxx
-       $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $<
+       $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $(srcdir)/scintilla/src/ContractionState.cxx
 
 stclib_Document.o: $(srcdir)/scintilla/src/Document.cxx
-       $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $<
+       $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $(srcdir)/scintilla/src/Document.cxx
+
+stclib_DocumentAccessor.o: $(srcdir)/scintilla/src/DocumentAccessor.cxx
+       $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $(srcdir)/scintilla/src/DocumentAccessor.cxx
 
 stclib_Editor.o: $(srcdir)/scintilla/src/Editor.cxx
-       $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $<
+       $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $(srcdir)/scintilla/src/Editor.cxx
 
 stclib_ExternalLexer.o: $(srcdir)/scintilla/src/ExternalLexer.cxx
-       $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $<
+       $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $(srcdir)/scintilla/src/ExternalLexer.cxx
 
 stclib_Indicator.o: $(srcdir)/scintilla/src/Indicator.cxx
-       $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $<
+       $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $(srcdir)/scintilla/src/Indicator.cxx
 
 stclib_KeyMap.o: $(srcdir)/scintilla/src/KeyMap.cxx
-       $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $<
+       $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $(srcdir)/scintilla/src/KeyMap.cxx
 
 stclib_KeyWords.o: $(srcdir)/scintilla/src/KeyWords.cxx
-       $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $<
+       $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $(srcdir)/scintilla/src/KeyWords.cxx
 
 stclib_LexAPDL.o: $(srcdir)/scintilla/src/LexAPDL.cxx
-       $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $<
+       $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $(srcdir)/scintilla/src/LexAPDL.cxx
 
 stclib_LexAU3.o: $(srcdir)/scintilla/src/LexAU3.cxx
-       $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $<
+       $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $(srcdir)/scintilla/src/LexAU3.cxx
 
 stclib_LexAVE.o: $(srcdir)/scintilla/src/LexAVE.cxx
-       $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $<
+       $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $(srcdir)/scintilla/src/LexAVE.cxx
 
 stclib_LexAda.o: $(srcdir)/scintilla/src/LexAda.cxx
-       $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $<
+       $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $(srcdir)/scintilla/src/LexAda.cxx
 
 stclib_LexAsm.o: $(srcdir)/scintilla/src/LexAsm.cxx
-       $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $<
+       $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $(srcdir)/scintilla/src/LexAsm.cxx
+
+stclib_LexAsn1.o: $(srcdir)/scintilla/src/LexAsn1.cxx
+       $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $(srcdir)/scintilla/src/LexAsn1.cxx
 
 stclib_LexBaan.o: $(srcdir)/scintilla/src/LexBaan.cxx
-       $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $<
+       $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $(srcdir)/scintilla/src/LexBaan.cxx
 
 stclib_LexBash.o: $(srcdir)/scintilla/src/LexBash.cxx
-       $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $<
+       $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $(srcdir)/scintilla/src/LexBash.cxx
 
 stclib_LexBullant.o: $(srcdir)/scintilla/src/LexBullant.cxx
-       $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $<
+       $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $(srcdir)/scintilla/src/LexBullant.cxx
 
 stclib_LexCLW.o: $(srcdir)/scintilla/src/LexCLW.cxx
-       $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $<
+       $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $(srcdir)/scintilla/src/LexCLW.cxx
 
 stclib_LexCPP.o: $(srcdir)/scintilla/src/LexCPP.cxx
-       $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $<
+       $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $(srcdir)/scintilla/src/LexCPP.cxx
 
 stclib_LexCSS.o: $(srcdir)/scintilla/src/LexCSS.cxx
-       $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $<
+       $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $(srcdir)/scintilla/src/LexCSS.cxx
 
 stclib_LexConf.o: $(srcdir)/scintilla/src/LexConf.cxx
-       $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $<
+       $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $(srcdir)/scintilla/src/LexConf.cxx
 
 stclib_LexCrontab.o: $(srcdir)/scintilla/src/LexCrontab.cxx
-       $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $<
+       $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $(srcdir)/scintilla/src/LexCrontab.cxx
 
 stclib_LexEScript.o: $(srcdir)/scintilla/src/LexEScript.cxx
-       $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $<
+       $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $(srcdir)/scintilla/src/LexEScript.cxx
 
 stclib_LexEiffel.o: $(srcdir)/scintilla/src/LexEiffel.cxx
-       $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $<
+       $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $(srcdir)/scintilla/src/LexEiffel.cxx
 
 stclib_LexErlang.o: $(srcdir)/scintilla/src/LexErlang.cxx
-       $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $<
+       $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $(srcdir)/scintilla/src/LexErlang.cxx
 
 stclib_LexForth.o: $(srcdir)/scintilla/src/LexForth.cxx
-       $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $<
+       $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $(srcdir)/scintilla/src/LexForth.cxx
 
 stclib_LexFortran.o: $(srcdir)/scintilla/src/LexFortran.cxx
-       $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $<
+       $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $(srcdir)/scintilla/src/LexFortran.cxx
 
 stclib_LexGui4Cli.o: $(srcdir)/scintilla/src/LexGui4Cli.cxx
-       $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $<
+       $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $(srcdir)/scintilla/src/LexGui4Cli.cxx
 
 stclib_LexHTML.o: $(srcdir)/scintilla/src/LexHTML.cxx
-       $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $<
+       $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $(srcdir)/scintilla/src/LexHTML.cxx
 
 stclib_LexKix.o: $(srcdir)/scintilla/src/LexKix.cxx
-       $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $<
+       $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $(srcdir)/scintilla/src/LexKix.cxx
 
 stclib_LexLisp.o: $(srcdir)/scintilla/src/LexLisp.cxx
-       $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $<
+       $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $(srcdir)/scintilla/src/LexLisp.cxx
 
 stclib_LexLout.o: $(srcdir)/scintilla/src/LexLout.cxx
-       $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $<
+       $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $(srcdir)/scintilla/src/LexLout.cxx
 
 stclib_LexLua.o: $(srcdir)/scintilla/src/LexLua.cxx
-       $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $<
+       $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $(srcdir)/scintilla/src/LexLua.cxx
 
 stclib_LexMMIXAL.o: $(srcdir)/scintilla/src/LexMMIXAL.cxx
-       $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $<
+       $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $(srcdir)/scintilla/src/LexMMIXAL.cxx
 
 stclib_LexMPT.o: $(srcdir)/scintilla/src/LexMPT.cxx
-       $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $<
+       $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $(srcdir)/scintilla/src/LexMPT.cxx
 
 stclib_LexMSSQL.o: $(srcdir)/scintilla/src/LexMSSQL.cxx
-       $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $<
+       $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $(srcdir)/scintilla/src/LexMSSQL.cxx
 
 stclib_LexMatlab.o: $(srcdir)/scintilla/src/LexMatlab.cxx
-       $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $<
+       $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $(srcdir)/scintilla/src/LexMatlab.cxx
 
 stclib_LexMetapost.o: $(srcdir)/scintilla/src/LexMetapost.cxx
-       $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $<
+       $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $(srcdir)/scintilla/src/LexMetapost.cxx
 
 stclib_LexNsis.o: $(srcdir)/scintilla/src/LexNsis.cxx
-       $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $<
+       $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $(srcdir)/scintilla/src/LexNsis.cxx
 
 stclib_LexOthers.o: $(srcdir)/scintilla/src/LexOthers.cxx
-       $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $<
+       $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $(srcdir)/scintilla/src/LexOthers.cxx
 
 stclib_LexPB.o: $(srcdir)/scintilla/src/LexPB.cxx
-       $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $<
+       $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $(srcdir)/scintilla/src/LexPB.cxx
 
 stclib_LexPOV.o: $(srcdir)/scintilla/src/LexPOV.cxx
-       $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $<
+       $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $(srcdir)/scintilla/src/LexPOV.cxx
 
 stclib_LexPS.o: $(srcdir)/scintilla/src/LexPS.cxx
-       $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $<
+       $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $(srcdir)/scintilla/src/LexPS.cxx
 
 stclib_LexPascal.o: $(srcdir)/scintilla/src/LexPascal.cxx
-       $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $<
+       $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $(srcdir)/scintilla/src/LexPascal.cxx
 
 stclib_LexPerl.o: $(srcdir)/scintilla/src/LexPerl.cxx
-       $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $<
+       $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $(srcdir)/scintilla/src/LexPerl.cxx
 
 stclib_LexPython.o: $(srcdir)/scintilla/src/LexPython.cxx
-       $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $<
+       $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $(srcdir)/scintilla/src/LexPython.cxx
 
 stclib_LexRuby.o: $(srcdir)/scintilla/src/LexRuby.cxx
-       $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $<
+       $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $(srcdir)/scintilla/src/LexRuby.cxx
 
 stclib_LexSQL.o: $(srcdir)/scintilla/src/LexSQL.cxx
-       $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $<
+       $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $(srcdir)/scintilla/src/LexSQL.cxx
 
 stclib_LexScriptol.o: $(srcdir)/scintilla/src/LexScriptol.cxx
-       $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $<
+       $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $(srcdir)/scintilla/src/LexScriptol.cxx
 
 stclib_LexSpecman.o: $(srcdir)/scintilla/src/LexSpecman.cxx
-       $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $<
+       $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $(srcdir)/scintilla/src/LexSpecman.cxx
 
 stclib_LexTeX.o: $(srcdir)/scintilla/src/LexTeX.cxx
-       $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $<
+       $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $(srcdir)/scintilla/src/LexTeX.cxx
 
 stclib_LexVB.o: $(srcdir)/scintilla/src/LexVB.cxx
-       $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $<
+       $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $(srcdir)/scintilla/src/LexVB.cxx
+
+stclib_LexVHDL.o: $(srcdir)/scintilla/src/LexVHDL.cxx
+       $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $(srcdir)/scintilla/src/LexVHDL.cxx
 
 stclib_LexVerilog.o: $(srcdir)/scintilla/src/LexVerilog.cxx
-       $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $<
+       $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $(srcdir)/scintilla/src/LexVerilog.cxx
 
 stclib_LexYAML.o: $(srcdir)/scintilla/src/LexYAML.cxx
-       $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $<
+       $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $(srcdir)/scintilla/src/LexYAML.cxx
 
 stclib_LineMarker.o: $(srcdir)/scintilla/src/LineMarker.cxx
-       $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $<
+       $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $(srcdir)/scintilla/src/LineMarker.cxx
 
 stclib_PropSet.o: $(srcdir)/scintilla/src/PropSet.cxx
-       $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $<
+       $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $(srcdir)/scintilla/src/PropSet.cxx
 
 stclib_RESearch.o: $(srcdir)/scintilla/src/RESearch.cxx
-       $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $<
+       $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $(srcdir)/scintilla/src/RESearch.cxx
 
 stclib_ScintillaBase.o: $(srcdir)/scintilla/src/ScintillaBase.cxx
-       $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $<
-
-stclib_StyleContext.o: $(srcdir)/scintilla/src/StyleContext.cxx
-       $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $<
+       $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $(srcdir)/scintilla/src/ScintillaBase.cxx
 
 stclib_Style.o: $(srcdir)/scintilla/src/Style.cxx
-       $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $<
+       $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $(srcdir)/scintilla/src/Style.cxx
+
+stclib_StyleContext.o: $(srcdir)/scintilla/src/StyleContext.cxx
+       $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $(srcdir)/scintilla/src/StyleContext.cxx
 
 stclib_UniConversion.o: $(srcdir)/scintilla/src/UniConversion.cxx
-       $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $<
+       $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $(srcdir)/scintilla/src/UniConversion.cxx
 
 stclib_ViewStyle.o: $(srcdir)/scintilla/src/ViewStyle.cxx
-       $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $<
+       $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $(srcdir)/scintilla/src/ViewStyle.cxx
 
 stclib_WindowAccessor.o: $(srcdir)/scintilla/src/WindowAccessor.cxx
-       $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $<
+       $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $(srcdir)/scintilla/src/WindowAccessor.cxx
 
 stclib_XPM.o: $(srcdir)/scintilla/src/XPM.cxx
-       $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $<
+       $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $(srcdir)/scintilla/src/XPM.cxx
 
 
 # Include dependency info, if present:
index 41b3a5a06d089c654d50d4dcf3aa2fbb86a6b92b..796f06e0c8f03ac927b8e2fa36f0763a9d507fbb 100644 (file)
@@ -539,7 +539,8 @@ long ScintillaWX::WndProc(unsigned int iMessage, unsigned long wParam, long lPar
                                           defn,
                                           vs.styles[STYLE_DEFAULT].fontName,
                                           vs.styles[STYLE_DEFAULT].sizeZoomed,
-                                          IsUnicodeMode(),
+                                          CodePage(),
+                                          vs.styles[STYLE_DEFAULT].characterSet,
                                           wMain);
           // If the call-tip window would be out of the client
           // space, adjust so it displays above the text.
index 541dd96ee880dd3408e108f3587da8380e891b5b..6e0a0aee90770c073644b161bfde18d911844b91 100644 (file)
@@ -501,6 +501,11 @@ methodOverrideMap = {
          return SendMsg(%s, strlen(buf), (long)(const char*)buf);''',
      0),
 
+    # not sure what to do about these yet
+    'TargetAsUTF8' :       ( None, 0, 0, 0),
+    'SetLengthForEncode' : ( None, 0, 0, 0),
+    'EncodedFromUTF8' :    ( None, 0, 0, 0),
+    
 
     'GetDocPointer' :
     (0,
index 25dca357b17b24068edf3ed461726ca16dc43c80..fce427d5d11dfc75b6bf312ea3f3198f8b021914 100644 (file)
@@ -3,5 +3,5 @@ scintilla/include directories from the Scintilla/SCiTE source
 distribution.  All other code needed to implement Scintilla on top of
 wxWindows is located in the directory above this one.
 
-The current version of the Scintilla code is 1.61
+The current version of the Scintilla code is 1.62
 
index e6385da71ddf818c245c11d665e81a64e35ffbb0..f0c0b84d17103be352a5aeac065191dff1568870 100644 (file)
@@ -69,7 +69,7 @@ public:
        int x;
        int y;
 
-       Point(int x_=0, int y_=0) : x(x_), y(y_) {
+       explicit Point(int x_=0, int y_=0) : x(x_), y(y_) {
        }
 
        // Other automatically defined methods (assignment, copy constructor, destructor) are fine
index 0b4c2f58de2046a4a95d06e9769ff79cae2f187d..32aea8a0c7f59ce6b7f7873d3d47593e44c9e060 100644 (file)
@@ -39,12 +39,14 @@ protected:
                return ret;
        }
        static bool IncludesVar(const char *value, const char *key);
+
 public:
        PropSet *superPS;
        PropSet();
        ~PropSet();
        void Set(const char *key, const char *val, int lenKey=-1, int lenVal=-1);
        void Set(const char *keyVal);
+       void Unset(const char *key, int lenKey=-1);
        void SetMultiple(const char *s);
        SString Get(const char *key);
        SString GetExpanded(const char *key);
@@ -85,9 +87,9 @@ public:
        char *Allocate(int size);
        void SetFromAllocated();
        bool InList(const char *s);
-       const char *GetNearestWord(const char *wordStart, int searchLen = -1,
+       const char *GetNearestWord(const char *wordStart, int searchLen,
                bool ignoreCase = false, SString wordCharacters="", int wordIndex = -1);
-       char *GetNearestWords(const char *wordStart, int searchLen=-1,
+       char *GetNearestWords(const char *wordStart, int searchLen,
                bool ignoreCase=false, char otherSeparator='\0', bool exactLen=false);
 };
 
index 5c8307a59551bbbc805a5d6142a57ee9d6abf81f..ce50a7fab5fed63a4140a473e85a4ee23f01af68 100644 (file)
@@ -77,6 +77,8 @@
 #define SCLEX_AU3 60
 #define SCLEX_APDL 61
 #define SCLEX_BASH 62
+#define SCLEX_ASN1 63
+#define SCLEX_VHDL 64
 #define SCLEX_AUTOMATIC 1000
 #define SCE_P_DEFAULT 0
 #define SCE_P_COMMENTLINE 1
 #define SCE_ERR_IFORT 17
 #define SCE_ERR_ABSF 18
 #define SCE_ERR_TIDY 19
+#define SCE_ERR_JAVA_STACK 20
 #define SCE_BAT_DEFAULT 0
 #define SCE_BAT_COMMENT 1
 #define SCE_BAT_WORD 2
 #define SCE_CSS_DIRECTIVE 12
 #define SCE_CSS_DOUBLESTRING 13
 #define SCE_CSS_SINGLESTRING 14
+#define SCE_CSS_IDENTIFIER2 15
 #define SCE_POV_DEFAULT 0
 #define SCE_POV_COMMENT 1
 #define SCE_POV_COMMENTLINE 2
 #define SCE_AU3_VARIABLE 9
 #define SCE_AU3_SENT 10
 #define SCE_AU3_PREPROCESSOR 11
+#define SCE_AU3_SPECIAL 12
 #define SCE_APDL_DEFAULT 0
 #define SCE_APDL_COMMENT 1
 #define SCE_APDL_COMMENTBLOCK 2
 #define SCE_APDL_NUMBER 3
 #define SCE_APDL_STRING 4
-#define SCE_APDL_WORD 5
-#define SCE_APDL_COMMAND 6
+#define SCE_APDL_OPERATOR 5
+#define SCE_APDL_WORD 6
 #define SCE_APDL_PROCESSOR 7
-#define SCE_APDL_FUNCTION 8
+#define SCE_APDL_COMMAND 8
+#define SCE_APDL_SLASHCOMMAND 9
+#define SCE_APDL_STARCOMMAND 10
+#define SCE_APDL_ARGUMENT 11
+#define SCE_APDL_FUNCTION 12
 #define SCE_SH_DEFAULT 0
 #define SCE_SH_ERROR 1
 #define SCE_SH_COMMENTLINE 2
 #define SCE_SH_BACKTICKS 11
 #define SCE_SH_HERE_DELIM 12
 #define SCE_SH_HERE_Q 13
+#define SCE_ASN1_DEFAULT 0
+#define SCE_ASN1_COMMENT 1
+#define SCE_ASN1_IDENTIFIER 2
+#define SCE_ASN1_STRING 3
+#define SCE_ASN1_OID 4
+#define SCE_ASN1_SCALAR 5
+#define SCE_ASN1_KEYWORD 6
+#define SCE_ASN1_ATTRIBUTE 7
+#define SCE_ASN1_DESCRIPTOR 8
+#define SCE_ASN1_TYPE 9
+#define SCE_ASN1_OPERATOR 10
+#define SCE_VHDL_DEFAULT 0
+#define SCE_VHDL_COMMENT 1
+#define SCE_VHDL_COMMENTLINEBANG 2
+#define SCE_VHDL_NUMBER 3
+#define SCE_VHDL_STRING 4
+#define SCE_VHDL_OPERATOR 5
+#define SCE_VHDL_IDENTIFIER 6
+#define SCE_VHDL_STRINGEOL 7
+#define SCE_VHDL_KEYWORD 8
+#define SCE_VHDL_STDOPERATOR 9
+#define SCE_VHDL_ATTRIBUTE 10
+#define SCE_VHDL_STDFUNCTION 11
+#define SCE_VHDL_STDPACKAGE 12
+#define SCE_VHDL_STDTYPE 13
+#define SCE_VHDL_USERWORD 14
 //--Autogenerated -- end of section automatically generated from Scintilla.iface
 
 #endif
index 1a4e4887228a2be9a0b17b771d3746e7e6cf7dd6..f20f0de22dec345a0545f6bc95a0958a3b545bc4 100644 (file)
@@ -583,6 +583,10 @@ typedef sptr_t (*SciFnDirect)(sptr_t ptr, unsigned int iMessage, uptr_t wParam,
 #define SCI_SETCHARSDEFAULT 2444
 #define SCI_AUTOCGETCURRENT 2445
 #define SCI_ALLOCATE 2446
+#define SCI_TARGETASUTF8 2447
+#define SCI_SETLENGTHFORENCODE 2448
+#define SCI_ENCODEDFROMUTF8 2449
+#define SCI_FINDCOLUMN 2456
 #define SCI_STARTRECORD 3001
 #define SCI_STOPRECORD 3002
 #define SCI_SETLEXER 4001
index fef371328ce7b64432bec109d8ee0f8724968cce..5be763f258d78f748efb24c8dc1469a6ac43e3be 100644 (file)
@@ -1583,6 +1583,23 @@ fun int AutoCGetCurrent=2445(,)
 # Enlarge the document to a particular size of text bytes.
 fun void Allocate=2446(int bytes,)
 
+# Returns the target converted to UTF8.
+# Return the length in bytes.
+fun int TargetAsUTF8=2447(, stringresult s)
+
+# Set the length of the utf8 argument for calling EncodedFromUTF8.
+# Set to 0 and the string will be measured to the first nul.
+fun void SetLengthForEncode=2448(int bytes,)
+
+# Translates a UTF8 string into the document encoding.
+# Return the length of the result in bytes.
+# On error return 0.
+fun int EncodedFromUTF8=2449(string utf8, stringresult encoded)
+
+# Find the position of a column on a line taking into account tabs and 
+# multi-byte characters. If beyond end of line, return line end position.
+fun int FindColumn=2456(int line, int column)
+
 # Start notifying the container of all key presses and commands.
 fun void StartRecord=3001(,)
 
@@ -1733,6 +1750,8 @@ val SCLEX_SPECMAN=59
 val SCLEX_AU3=60
 val SCLEX_APDL=61
 val SCLEX_BASH=62
+val SCLEX_ASN1=63
+val SCLEX_VHDL=64
 
 # When a lexer specifies its language as SCLEX_AUTOMATIC it receives a
 # value assigned in sequence from SCLEX_AUTOMATIC+1.
@@ -2017,6 +2036,7 @@ val SCE_ERR_IFC=16
 val SCE_ERR_IFORT=17
 val SCE_ERR_ABSF=18
 val SCE_ERR_TIDY=19
+val SCE_ERR_JAVA_STACK=20
 # Lexical states for SCLEX_BATCH
 lex Batch=SCLEX_BATCH SCE_BAT_
 val SCE_BAT_DEFAULT=0
@@ -2232,6 +2252,7 @@ val SCE_CSS_IMPORTANT=11
 val SCE_CSS_DIRECTIVE=12
 val SCE_CSS_DOUBLESTRING=13
 val SCE_CSS_SINGLESTRING=14
+val SCE_CSS_IDENTIFIER2=15
 # Lexical states for SCLEX_POV
 lex POV=SCLEX_POV SCE_POV_
 val SCE_POV_DEFAULT=0
@@ -2496,6 +2517,7 @@ val SCE_AU3_OPERATOR=8
 val SCE_AU3_VARIABLE=9
 val SCE_AU3_SENT=10
 val SCE_AU3_PREPROCESSOR=11
+val SCE_AU3_SPECIAL=12
 # Lexical states for SCLEX_APDL
 lex APDL=SCLEX_APDL SCE_APDL_
 val SCE_APDL_DEFAULT=0
@@ -2503,10 +2525,14 @@ val SCE_APDL_COMMENT=1
 val SCE_APDL_COMMENTBLOCK=2
 val SCE_APDL_NUMBER=3
 val SCE_APDL_STRING=4
-val SCE_APDL_WORD=5
-val SCE_APDL_COMMAND=6
+val SCE_APDL_OPERATOR=5
+val SCE_APDL_WORD=6
 val SCE_APDL_PROCESSOR=7
-val SCE_APDL_FUNCTION=8
+val SCE_APDL_COMMAND=8
+val SCE_APDL_SLASHCOMMAND=9
+val SCE_APDL_STARCOMMAND=10
+val SCE_APDL_ARGUMENT=11
+val SCE_APDL_FUNCTION=12
 # Lexical states for SCLEX_BASH
 lex Bash=SCLEX_BASH SCE_SH_
 val SCE_SH_DEFAULT=0
@@ -2523,6 +2549,37 @@ val SCE_SH_PARAM=10
 val SCE_SH_BACKTICKS=11
 val SCE_SH_HERE_DELIM=12
 val SCE_SH_HERE_Q=13
+# Lexical states for SCLEX_ASN1
+lex Asn1=SCLEX_ASN1 SCE_ASN1_
+val SCE_ASN1_DEFAULT=0
+val SCE_ASN1_COMMENT=1
+val SCE_ASN1_IDENTIFIER=2
+val SCE_ASN1_STRING=3
+val SCE_ASN1_OID=4
+val SCE_ASN1_SCALAR=5
+val SCE_ASN1_KEYWORD=6
+val SCE_ASN1_ATTRIBUTE=7
+val SCE_ASN1_DESCRIPTOR=8
+val SCE_ASN1_TYPE=9
+val SCE_ASN1_OPERATOR=10
+# Lexical states for SCLEX_VHDL
+lex VHDL=SCLEX_VHDL SCE_VHDL_
+val SCE_VHDL_DEFAULT=0
+val SCE_VHDL_COMMENT=1
+val SCE_VHDL_COMMENTLINEBANG=2
+val SCE_VHDL_NUMBER=3
+val SCE_VHDL_STRING=4
+val SCE_VHDL_OPERATOR=5
+val SCE_VHDL_IDENTIFIER=6
+val SCE_VHDL_STRINGEOL=7
+val SCE_VHDL_KEYWORD=8
+val SCE_VHDL_STDOPERATOR=9
+val SCE_VHDL_ATTRIBUTE=10
+val SCE_VHDL_STDFUNCTION=11
+val SCE_VHDL_STDPACKAGE=12
+val SCE_VHDL_STDTYPE=13
+val SCE_VHDL_USERWORD=14
+
 # Events
 
 evt void StyleNeeded=2000(int position)
index 93e888d0e6b9f77f7a9d202d8130e806f074df20..003284c12df5f14e8ef85a4669f8d50c2f7b71f7 100644 (file)
@@ -214,7 +214,7 @@ void CallTip::MouseClick(Point pt) {
 
 PRectangle CallTip::CallTipStart(int pos, Point pt, const char *defn,
                                  const char *faceName, int size,
-                                 int codePage_, Window &wParent) {
+                                 int codePage_, int characterSet, Window &wParent) {
        clickPlace = 0;
        if (val)
                delete []val;
@@ -234,7 +234,7 @@ PRectangle CallTip::CallTipStart(int pos, Point pt, const char *defn,
        inCallTipMode = true;
        posStartCallTip = pos;
        int deviceHeight = surfaceMeasure->DeviceHeightFont(size);
-       font.Create(faceName, SC_CHARSET_DEFAULT, deviceHeight, false, false);
+       font.Create(faceName, characterSet, deviceHeight, false, false);
        // Look for multiple lines in the text
        // Only support \n here - simply means container must avoid \r!
        int numLines = 1;
index ffaedb0771b746a40b1f4ac647b6adb26d993607..feff7ea0b1ef4355e9a65efdd6f62e538a85dfd4 100644 (file)
@@ -52,7 +52,8 @@ public:
 
        /// Setup the calltip and return a rectangle of the area required.
        PRectangle CallTipStart(int pos, Point pt, const char *defn,
-               const char *faceName, int size, int codePage_, Window &wParent);
+               const char *faceName, int size, int codePage_, 
+               int characterSet, Window &wParent);
 
        void CallTipCancel();
 
index 27e62ac61c1aedbd5ea11b4e4affbe8a7862e196..8183e4d8d3ca9fffc41ddbc983c85cb1b8557146 100644 (file)
@@ -96,17 +96,20 @@ void MarkerHandleSet::RemoveHandle(int handle) {
        }
 }
 
-void MarkerHandleSet::RemoveNumber(int markerNum) {
+bool MarkerHandleSet::RemoveNumber(int markerNum) {
+       bool performedDeletion = false;
        MarkerHandleNumber **pmhn = &root;
        while (*pmhn) {
                MarkerHandleNumber *mhn = *pmhn;
                if (mhn->number == markerNum) {
                        *pmhn = mhn->next;
                        delete mhn;
+                       performedDeletion = true;
                } else {
                        pmhn = &((*pmhn)->next);
                }
        }
+       return performedDeletion;
 }
 
 void MarkerHandleSet::CombineWith(MarkerHandleSet *other) {
@@ -306,13 +309,18 @@ void LineVector::MergeMarkers(int pos) {
        }
 }
 
-void LineVector::DeleteMark(int line, int markerNum) {
+void LineVector::DeleteMark(int line, int markerNum, bool all) {
        if (linesData[line].handleSet) {
                if (markerNum == -1) {
                        delete linesData[line].handleSet;
                        linesData[line].handleSet = 0;
                } else {
-                       linesData[line].handleSet->RemoveNumber(markerNum);
+                       bool performedDeletion = 
+                               linesData[line].handleSet->RemoveNumber(markerNum);
+                       while (all && performedDeletion) {
+                               performedDeletion = 
+                                       linesData[line].handleSet->RemoveNumber(markerNum);
+                       }
                        if (linesData[line].handleSet->Length() == 0) {
                                delete linesData[line].handleSet;
                                linesData[line].handleSet = 0;
@@ -442,6 +450,9 @@ void UndoHistory::AppendAction(actionType at, int position, char *data, int leng
        //Platform::DebugPrintf("%% %d action %d %d %d\n", at, position, lengthData, currentAction);
        //Platform::DebugPrintf("^ %d action %d %d\n", actions[currentAction - 1].at,
        //      actions[currentAction - 1].position, actions[currentAction - 1].lenData);
+       if (currentAction < savePoint) {
+               savePoint = -1;
+       }
        if (currentAction >= 1) {
                if (0 == undoSequenceDepth) {
                        // Top level actions may not always be coalesced
@@ -833,7 +844,7 @@ int CellBuffer::AddMark(int line, int markerNum) {
 
 void CellBuffer::DeleteMark(int line, int markerNum) {
        if ((line >= 0) && (line < lv.lines)) {
-               lv.DeleteMark(line, markerNum);
+               lv.DeleteMark(line, markerNum, false);
        }
 }
 
@@ -849,7 +860,7 @@ int CellBuffer::GetMark(int line) {
 
 void CellBuffer::DeleteAllMarks(int markerNum) {
        for (int line = 0; line < lv.lines; line++) {
-               lv.DeleteMark(line, markerNum);
+               lv.DeleteMark(line, markerNum, true);
        }
 }
 
index bf4a102f2268ea418e1d6199ca260d6a0a3d382a..b16eef5e51a745f92ed3ae10d5098fd9b0c2818c 100644 (file)
@@ -33,7 +33,7 @@ public:
        bool Contains(int handle);
        bool InsertHandle(int handle, int markerNum);
        void RemoveHandle(int handle);
-       void RemoveNumber(int markerNum);
+       bool RemoveNumber(int markerNum);
        void CombineWith(MarkerHandleSet *other);
 };
 
@@ -77,7 +77,7 @@ public:
 
        int AddMark(int line, int marker);
        void MergeMarkers(int pos);
-       void DeleteMark(int line, int markerNum);
+       void DeleteMark(int line, int markerNum, bool all);
        void DeleteMarkFromHandle(int markerHandle);
        int LineFromHandle(int markerHandle);
 };
index 97abd6254600de6e2a835c2c1ab93344b116c565..76fa456ccb613e44366b2205081e91d4bac74150 100644 (file)
@@ -653,7 +653,7 @@ int Document::FindColumn(int line, int column) {
        int position = LineStart(line);
        int columnCurrent = 0;
        if ((line >= 0) && (line < LinesTotal())) {
-               while (columnCurrent < column) {
+               while ((columnCurrent < column) && (position < Length())) {
                        char ch = cb.CharAt(position);
                        if (ch == '\t') {
                                columnCurrent = NextTab(columnCurrent, tabInChars);
@@ -682,43 +682,73 @@ void Document::Indent(bool forwards, int lineBottom, int lineTop) {
        }
 }
 
+// Convert line endings for a piece of text to a particular mode.
+// Stop at len or when a NUL is found.
+// Caller must delete the returned pointer.
+char *Document::TransformLineEnds(int *pLenOut, const char *s, size_t len, int eolMode) {
+       char *dest = new char[2 * len + 1];
+       const char *sptr = s;
+       char *dptr = dest;
+       for (size_t i = 0; (i < len) && (*sptr != '\0'); i++) {
+               if (*sptr == '\n' || *sptr == '\r') {
+                       if (eolMode == SC_EOL_CR) {
+                               *dptr++ = '\r';
+                       } else if (eolMode == SC_EOL_LF) {
+                               *dptr++ = '\n';
+                       } else { // eolMode == SC_EOL_CRLF
+                               *dptr++ = '\r';
+                               *dptr++ = '\n';
+                       }
+                       if ((*sptr == '\r') && (i+1 < len) && (*(sptr+1) == '\n')) {
+                               i++;
+                               sptr++;
+                       }
+                       sptr++;
+               } else {
+                       *dptr++ = *sptr++;
+               }
+       }
+       *dptr++ = '\0';
+       *pLenOut = (dptr - dest) - 1;
+       return dest;
+}
+
 void Document::ConvertLineEnds(int eolModeSet) {
        BeginUndoAction();
+
        for (int pos = 0; pos < Length(); pos++) {
                if (cb.CharAt(pos) == '\r') {
-                       if (cb.CharAt(pos + 1) == '\n') {
-                               if (eolModeSet != SC_EOL_CRLF) {
-                                       DeleteChars(pos, 2);
-                                       if (eolModeSet == SC_EOL_CR)
-                                               InsertString(pos, "\r", 1);
-                                       else
-                                               InsertString(pos, "\n", 1);
+                       if (cb.CharAt(pos + 1) == '\n') { 
+                               // CRLF
+                               if (eolModeSet == SC_EOL_CR) {
+                                       DeleteChars(pos + 1, 1); // Delete the LF
+                               } else if (eolModeSet == SC_EOL_LF) {
+                                       DeleteChars(pos, 1); // Delete the CR
                                } else {
                                        pos++;
                                }
-                       } else {
-                               if (eolModeSet != SC_EOL_CR) {
-                                       DeleteChars(pos, 1);
-                                       if (eolModeSet == SC_EOL_CRLF) {
-                                               InsertString(pos, "\r\n", 2);
-                                               pos++;
-                                       } else {
-                                               InsertString(pos, "\n", 1);
-                                       }
-                               }
-                       }
-               } else if (cb.CharAt(pos) == '\n') {
-                       if (eolModeSet != SC_EOL_LF) {
-                               DeleteChars(pos, 1);
+                       } else { 
+                               // CR
                                if (eolModeSet == SC_EOL_CRLF) {
-                                       InsertString(pos, "\r\n", 2);
+                                       InsertString(pos + 1, "\n", 1); // Insert LF
                                        pos++;
-                               } else {
-                                       InsertString(pos, "\r", 1);
+                               } else if (eolModeSet == SC_EOL_LF) {
+                                       InsertString(pos, "\n", 1); // Insert LF
+                                       DeleteChars(pos + 1, 1); // Delete CR
                                }
                        }
+               } else if (cb.CharAt(pos) == '\n') {
+                       // LF
+                       if (eolModeSet == SC_EOL_CRLF) {
+                               InsertString(pos, "\r", 1); // Insert CR
+                               pos++;
+                       } else if (eolModeSet == SC_EOL_CR) {
+                               InsertString(pos, "\r", 1); // Insert CR
+                               DeleteChars(pos + 1, 1); // Delete LF
+                       }
                }
        }
+
        EndUndoAction();
 }
 
@@ -854,7 +884,7 @@ bool Document::IsWordStartAt(int pos) {
  * the next character is of a different character class.
  */
 bool Document::IsWordEndAt(int pos) {
-       if (pos < Length() - 1) {
+       if (pos < Length()) {
                charClassification ccPrev = WordCharClass(CharAt(pos-1));
                return (ccPrev == ccWord || ccPrev == ccPunctuation) &&
                        (ccPrev != WordCharClass(CharAt(pos)));
index 54ecadb004535e261d6cabeaca8ca5d024ab6c0a..ce27ffc47611e638e8365ef78285abd5e0d05df8 100644 (file)
@@ -156,6 +156,7 @@ public:
        int GetColumn(int position);
        int FindColumn(int line, int column);
        void Indent(bool forwards, int lineBottom, int lineTop);
+       static char *TransformLineEnds(int *pLenOut, const char *s, size_t len, int eolMode);
        void ConvertLineEnds(int eolModeSet);
        void SetReadOnly(bool set) { cb.SetReadOnly(set); }
        bool IsReadOnly() { return cb.IsReadOnly(); }
index 591125dda678210237b9f13107977f3f8c6362f1..399e6597645e2133d345499dc1455ee099f5deda 100644 (file)
@@ -361,6 +361,8 @@ Editor::Editor() {
        topLine = 0;
        posTopLine = 0;
 
+       lengthForEncode = 0;
+
        needUpdateUI = true;
        braces[0] = invalidPosition;
        braces[1] = invalidPosition;
@@ -670,7 +672,7 @@ int Editor::LineFromLocation(Point pt) {
 
 void Editor::SetTopLine(int topLineNew) {
        topLine = topLineNew;
-       posTopLine = pdoc->LineStart(topLine);
+       posTopLine = pdoc->LineStart(cs.DocFromDisplay(topLine));
 }
 
 static inline bool IsEOLChar(char ch) {
@@ -1392,6 +1394,7 @@ void Editor::EnsureCaretVisible(bool useMargin, bool vert, bool horiz) {
                        Redraw();
                }
        }
+       UpdateSystemCaret();
 }
 
 void Editor::ShowCaretAtCurrentPosition() {
@@ -1416,6 +1419,10 @@ void Editor::InvalidateCaret() {
                InvalidateRange(posDrag, posDrag + 1);
        else
                InvalidateRange(currentPos, currentPos + 1);
+       UpdateSystemCaret();
+}
+
+void Editor::UpdateSystemCaret() {
 }
 
 void Editor::NeedWrapping(int docLineStartWrapping, int docLineEndWrapping) {
@@ -2206,8 +2213,9 @@ void Editor::DrawLine(Surface *surface, ViewStyle &vsDraw, int line, int lineVis
        // See if something overrides the line background color:  Either if caret is on the line
        // and background color is set for that, or if a marker is defined that forces its background
        // color onto the line, or if a marker is defined but has no selection margin in which to
-       // display itself.  These are checked in order with the earlier taking precedence.  When
-       // multiple markers cause background override, the color for the highest numbered one is used.
+       // display itself (as long as it's not an SC_MARK_EMPTY marker).  These are checked in order
+       // with the earlier taking precedence.  When multiple markers cause background override,
+       // the color for the highest numbered one is used.
        bool overrideBackground = false;
        ColourAllocated background;
        if (caret.active && vsDraw.showCaretLineBackground && ll->containsCaret) {
@@ -2228,9 +2236,9 @@ void Editor::DrawLine(Surface *surface, ViewStyle &vsDraw, int line, int lineVis
                if (vsDraw.maskInLine) {
                        int marks = pdoc->GetMark(line) & vsDraw.maskInLine;
                        if (marks) {
-                               overrideBackground = true;
                                for (int markBit = 0; (markBit < 32) && marks; markBit++) {
-                                       if (marks & 1) {
+                                       if ((marks & 1) && (vsDraw.markers[markBit].markType != SC_MARK_EMPTY)) {
+                                               overrideBackground = true;
                                                background = vsDraw.markers[markBit].back.allocated;
                                        }
                                        marks >>= 1;
@@ -2523,10 +2531,11 @@ void Editor::DrawLine(Surface *surface, ViewStyle &vsDraw, int line, int lineVis
                indStart[indica] = 0;
 
        for (int indicPos = lineStart; indicPos <= lineEnd; indicPos++) {
-               if ((indicPos == lineEnd) || (ll->indicators[indicPos] != ll->indicators[indicPos + 1])) {
+               if ((indicPos == lineStart) || (indicPos == lineEnd) ||
+                       (ll->indicators[indicPos] != ll->indicators[indicPos + 1])) {
                        int mask = 1 << pdoc->stylingBits;
                        for (int indicnum = 0; mask < 0x100; indicnum++) {
-                               if ((indicPos == lineEnd)) {
+                               if ((indicPos == lineStart) || (indicPos == lineEnd)) {
                                        indStart[indicnum] = ll->positions[indicPos];
                                } else if ((ll->indicators[indicPos + 1] & mask) && !(ll->indicators[indicPos] & mask)) {
                                        indStart[indicnum] = ll->positions[indicPos + 1];
@@ -3283,7 +3292,6 @@ void Editor::ClearAll() {
        currentPos = 0;
        SetTopLine(0);
        SetVerticalScrollPos();
-        InvalidateStyleRedraw();
 }
 
 void Editor::ClearDocumentStyle() {
@@ -4154,16 +4162,20 @@ int Editor::KeyCommand(unsigned int iMessage) {
                break;
        case SCI_LINEENDWRAP: {
                        int endPos = MovePositionSoVisible(StartEndDisplayLine(currentPos, false), 1);
-                       if (currentPos >= endPos)
-                               endPos = pdoc->LineEndPosition(currentPos);
+                       int realEndPos = pdoc->LineEndPosition(currentPos);
+                       if (endPos > realEndPos      // if moved past visible EOLs
+                               || currentPos >= endPos) // if at end of display line already
+                               endPos = realEndPos;
                        MovePositionTo(endPos);
                        SetLastXChosen();
                }
                break;
        case SCI_LINEENDWRAPEXTEND: {
                        int endPos = MovePositionSoVisible(StartEndDisplayLine(currentPos, false), 1);
-                       if (currentPos >= endPos)
-                               endPos = pdoc->LineEndPosition(currentPos);
+                       int realEndPos = pdoc->LineEndPosition(currentPos);
+                       if (endPos > realEndPos      // if moved past visible EOLs
+                               || currentPos >= endPos) // if at end of display line already
+                               endPos = realEndPos;
                        MovePositionTo(endPos, selStream);
                        SetLastXChosen();
                }
@@ -4929,7 +4941,7 @@ void Editor::ButtonDown(Point pt, unsigned int curTime, bool shift, bool ctrl, b
                //Platform::DebugPrintf("Double click: %d - %d\n", anchor, currentPos);
                if (doubleClick) {
                        NotifyDoubleClick(pt, shift);
-                       if (PointIsHotspot(newPos))
+                       if (PositionIsHotspot(newPos))
                                NotifyHotSpotDoubleClicked(newPos, shift, ctrl, alt);
                }
        } else {        // Single click
@@ -6301,6 +6313,9 @@ sptr_t Editor::WndProc(unsigned int iMessage, uptr_t wParam, sptr_t lParam) {
        case SCI_GETCOLUMN:
                return pdoc->GetColumn(wParam);
 
+       case SCI_FINDCOLUMN:
+               return pdoc->FindColumn(wParam, lParam);
+
        case SCI_SETHSCROLLBAR :
                if (horizontalScrollBarVisible != (wParam != 0)) {
                        horizontalScrollBarVisible = wParam != 0;
@@ -6949,6 +6964,10 @@ sptr_t Editor::WndProc(unsigned int iMessage, uptr_t wParam, sptr_t lParam) {
                SetSelection(currentPos, anchor);       // Ensure selection inside document
                return 0;
 
+       case SCI_SETLENGTHFORENCODE:
+               lengthForEncode = wParam;
+               return 0;
+
        case SCI_SELECTIONISRECTANGLE:
                return selType == selRectangle ? 1 : 0;
 
index b9bda04ab4678c4ec19ed761a5bdfd4f688bc436..e14cb5ed95c125891c6a4f16cea35c3365ebaa47 100644 (file)
@@ -127,7 +127,7 @@ public:
 
 /**
  * Hold a piece of text selected for copying or dragging.
- * The text is expected to hold a terminating '\0'.
+ * The text is expected to hold a terminating '\0' and this is counted in len.
  */
 class SelectionText {
 public:
@@ -257,6 +257,7 @@ protected:  // ScintillaBase subclass needs access to much of Editor
        int searchFlags;
        int topLine;
        int posTopLine;
+       int lengthForEncode;
 
        bool needUpdateUI;
        Position braces[2];
@@ -368,6 +369,7 @@ protected:  // ScintillaBase subclass needs access to much of Editor
        void ShowCaretAtCurrentPosition();
        void DropCaret();
        void InvalidateCaret();
+       virtual void UpdateSystemCaret();
 
        void NeedWrapping(int docLineStartWrapping = 0, int docLineEndWrapping = 0x7ffffff);
        bool WrapLines(bool fullWrap, int priorityWrapLineStart);
index def79f6ecdce17cfe32c1801e71064bbfb300a65..67e52ec11ad312874d7947bec42730176016b43d 100644 (file)
@@ -132,6 +132,7 @@ int Scintilla_LinkLexers() {
        LINK_LEXER(lmAda);
        LINK_LEXER(lmAPDL);
        LINK_LEXER(lmAsm);
+       LINK_LEXER(lmAsn1);
        LINK_LEXER(lmAU3);
        LINK_LEXER(lmAVE);
        LINK_LEXER(lmBaan);
@@ -189,6 +190,7 @@ int Scintilla_LinkLexers() {
        LINK_LEXER(lmVB);
        LINK_LEXER(lmVBScript);
        LINK_LEXER(lmVerilog);
+       LINK_LEXER(lmVHDL);
        LINK_LEXER(lmYAML);
 
 //--Autogenerated -- end of automatically generated section
index b739e9a7cb562845ad58855044131c8eff494566..1cf263e5018a9eef4ba08258943ca595834583df 100644 (file)
@@ -1,3 +1,10 @@
+// Scintilla source code edit control
+/** @file LexAPDL.cxx
+ ** Lexer for APDL. Based on the lexer for Assembler by The Black Horus.
+ ** By Hadar Raz.
+ **/
+// Copyright 1998-2003 by Neil Hodgson <neilh@scintilla.org>
+// The License.txt file describes the conditions under which this software may be distributed.
 
 #include <stdlib.h>
 #include <string.h>
 
 
 static inline bool IsAWordChar(const int ch) {
-       return (ch < 0x80) && (isalnum(ch) || ch == '_');
+       return (ch < 0x80 && (isalnum(ch) || ch == '_'));
 }
 
-static inline bool IsAWordStart(const int ch) {
-       return (ch < 0x80) && (isalnum(ch) || ch == '/' || ch == '*');
+static inline bool IsAnOperator(char ch) {
+       // '.' left out as it is used to make up numbers
+       if (ch == '*' || ch == '/' || ch == '-' || ch == '+' ||
+               ch == '(' || ch == ')' || ch == '=' || ch == '^' ||
+               ch == '[' || ch == ']' || ch == '<' || ch == '&' ||
+               ch == '>' || ch == ',' || ch == '|' || ch == '~' ||
+               ch == '$' || ch == ':' || ch == '%')
+               return true;
+       return false;
 }
 
-inline bool IsABlank(unsigned int ch) {
-    return (ch == ' ') || (ch == 0x09) || (ch == 0x0b) ;
-}
-
-
-
-static void ColouriseAPDLDoc(unsigned int startPos, int length, int initStyle,
-                              WordList *keywordlists[], Accessor &styler)
-{
-
-    //~ FILE *fp;
-    //~ fp = fopen("myoutput.txt", "w");
-
-    WordList &commands = *keywordlists[0];
-    WordList &processors = *keywordlists[1];
-    WordList &functions = *keywordlists[2];
-
-
-    // backtrack to the beginning of the document, this may be slow for big documents.
-    initStyle = SCE_APDL_DEFAULT;
-    StyleContext sc(0, startPos+length, initStyle, styler);
-
-    // backtrack to the nearest keyword
-    //~ while ((startPos > 1) && (styler.StyleAt(startPos) != SCE_APDL_WORD)) {
-            //~ startPos--;
-    //~ }
-    //~ startPos = styler.LineStart(styler.GetLine(startPos));
-    //~ initStyle = styler.StyleAt(startPos - 1);
-    //~ StyleContext sc(startPos, endPos-startPos, initStyle, styler);
-
-    bool firstInLine = true;
-    bool atEOL;
-
-    for (; sc.More(); sc.Forward()) {
-
-        atEOL = (sc.ch == '\r' && sc.chNext == '\n') || (sc.ch == '\n');
-
-        //~ if (sc.ch == '\r') {
-            //~ fprintf(fp,"CR\t%d\t%d", atEOL, firstInLine);
-        //~ } else if (sc.ch == '\n') {
-            //~ fprintf(fp,"LF\t%d\t%d", atEOL, firstInLine);
-        //~ } else {
-            //~ fprintf(fp,"%c\t%d\t%d", sc.ch, atEOL, firstInLine);
-        //~ }
-
-        // Determine if the current state should terminate.
-        if (sc.state == SCE_APDL_COMMENT) {
-            //~ fprintf(fp,"\tCOMMENT");
-            if (atEOL) {
-                sc.SetState(SCE_APDL_DEFAULT);
-            }
-        } else if (sc.state == SCE_APDL_COMMENTBLOCK) {
-            //~ fprintf(fp,"\tCOMMENTBLOCK");
-            if (atEOL) {
-                if (sc.ch == '\r') {
-                    sc.Forward();
-                }
-                sc.ForwardSetState(SCE_APDL_DEFAULT);
-            }
-        } else if (sc.state == SCE_APDL_NUMBER) {
-            //~ fprintf(fp,"\tNUMBER");
-            if (isdigit(sc.ch)) {
-            } else if ((sc.ch == 'e' || sc.ch == 'E') && (isdigit(sc.chNext) || sc.chNext == '+' || sc.chNext == '-')) {
-            } else if (sc.ch == '.') {
-            } else if ((sc.ch == '+' || sc.ch == '-') && (sc.chPrev == 'e' || sc.chPrev == 'E')) {
-            } else {
-                sc.SetState(SCE_APDL_DEFAULT);
-            }
-        } else if (sc.state == SCE_APDL_STRING) {
-            //~ fprintf(fp,"\tSTRING");
-            if (sc.ch == '\"') {
-                //~ sc.ForwardSetState(SCE_APDL_DEFAULT);
-                sc.Forward();
-                atEOL = (sc.ch == '\r' && sc.chNext == '\n') || (sc.ch == '\n');
-                if (atEOL) {
-                    firstInLine = true;
-                }
-                sc.SetState(SCE_APDL_DEFAULT);
-            }
-        } else if (sc.state == SCE_APDL_WORD) {
-            //~ fprintf(fp,"\tWORD");
-            if (!IsAWordChar(sc.ch) || sc.ch == '%') {
-                char s[100];
-                sc.GetCurrentLowered(s, sizeof(s));
-                if (commands.InList(s) && firstInLine) {
-                    if (IsABlank(sc.ch) || sc.ch == ',' || atEOL) {
-                        sc.ChangeState(SCE_APDL_COMMAND);
-                    }
-                    if (sc.ch != '\n') {
-                        firstInLine = false;
-                    }
-                } else if (processors.InList(s)) {
-                    if (IsABlank(sc.ch) || atEOL) {
-                        sc.ChangeState(SCE_APDL_PROCESSOR);
-                        while (sc.ch != '\n') {
-                            sc.Forward();
-                        }
-                        sc.Forward();
-                    }
-                } else if (functions.InList(s)) {
-                    sc.ChangeState(SCE_APDL_FUNCTION);
-                    if (sc.ch != '\n') {
-                        firstInLine = false;
-                    }
-                } else {
-                    if (sc.ch != '\n') {
-                        firstInLine = false;
-                    }
-                }
-                sc.SetState(SCE_APDL_DEFAULT);
-            }
-        }
-
-        // Determine if a new state should be entered.
-        if (sc.state == SCE_APDL_DEFAULT) {
-            if (sc.ch == '!' && sc.chNext != '!') {
-                sc.SetState(SCE_APDL_COMMENT);
-            } else if (sc.ch == '!' && sc.chNext == '!') {
-                sc.SetState(SCE_APDL_COMMENTBLOCK);
-            } else if (IsADigit(sc.ch) && !IsAWordChar(sc.chPrev)) {
-                sc.SetState(SCE_APDL_NUMBER);
-            } else if (sc.ch == '.' && (isoperator(static_cast<char>(sc.chPrev)) ||
-               IsABlank(sc.chPrev) || sc.chPrev == '\n' || sc.chPrev == '\r')) {
-                sc.SetState(SCE_APDL_NUMBER);
-            } else if (sc.ch == '\"') {
-                sc.SetState(SCE_APDL_STRING);
-            } else if (IsAWordStart(sc.ch) && (!IsADigit(sc.chPrev))) {
-                sc.SetState(SCE_APDL_WORD);
-            }
-
-        }
-        //~ fprintf(fp,"\n");
-
-        if (atEOL) {
-            firstInLine = true;
-        }
-
-    }
-    sc.Complete();
+static void ColouriseAPDLDoc(unsigned int startPos, int length, int initStyle, WordList *keywordlists[],
+                            Accessor &styler) {
+
+       int stringStart = ' ';
+
+       WordList &processors = *keywordlists[0];
+       WordList &commands = *keywordlists[1];
+       WordList &slashcommands = *keywordlists[2];
+       WordList &starcommands = *keywordlists[3];
+       WordList &arguments = *keywordlists[4];
+       WordList &functions = *keywordlists[5];
+
+       // Do not leak onto next line
+       initStyle = SCE_APDL_DEFAULT;
+       StyleContext sc(startPos, length, initStyle, styler);
+
+       for (; sc.More(); sc.Forward()) {
+               // Determine if the current state should terminate.
+               if (sc.state == SCE_APDL_NUMBER) {
+                       if (!(IsADigit(sc.ch) || sc.ch == '.' || (sc.ch == 'e' || sc.ch == 'E') ||
+                               ((sc.ch == '+' || sc.ch == '-') && (sc.chPrev == 'e' || sc.chPrev == 'E')))) {
+                               sc.SetState(SCE_APDL_DEFAULT);
+                       }
+               } else if (sc.state == SCE_APDL_COMMENT) {
+                       if (sc.atLineEnd) {
+                               sc.SetState(SCE_APDL_DEFAULT);
+                       }
+               } else if (sc.state == SCE_APDL_COMMENTBLOCK) {
+                       if (sc.atLineEnd) {
+                               if (sc.ch == '\r') {
+                               sc.Forward();
+                               }
+                               sc.ForwardSetState(SCE_APDL_DEFAULT);
+                       }
+               } else if (sc.state == SCE_APDL_STRING) {
+                       if (sc.atLineEnd) {
+                               sc.SetState(SCE_APDL_DEFAULT);
+                       } else if ((sc.ch == '\'' && stringStart == '\'') || (sc.ch == '\"' && stringStart == '\"')) {
+                               sc.ForwardSetState(SCE_APDL_DEFAULT);
+                       }
+               } else if (sc.state == SCE_APDL_WORD) {
+                       if (!IsAWordChar(sc.ch)) {
+                               char s[100];
+                               sc.GetCurrentLowered(s, sizeof(s));
+                               if (processors.InList(s)) {
+                                       sc.ChangeState(SCE_APDL_PROCESSOR);
+                               } else if (slashcommands.InList(s)) {
+                                       sc.ChangeState(SCE_APDL_SLASHCOMMAND);
+                               } else if (starcommands.InList(s)) {
+                                       sc.ChangeState(SCE_APDL_STARCOMMAND);
+                               } else if (commands.InList(s)) {
+                                       sc.ChangeState(SCE_APDL_COMMAND);
+                               } else if (arguments.InList(s)) {
+                                       sc.ChangeState(SCE_APDL_ARGUMENT);
+                               } else if (functions.InList(s)) {
+                                       sc.ChangeState(SCE_APDL_FUNCTION);
+                               }
+                               sc.SetState(SCE_APDL_DEFAULT);
+                       }
+               } else if (sc.state == SCE_APDL_OPERATOR) {
+                       if (!IsAnOperator(static_cast<char>(sc.ch))) {
+                           sc.SetState(SCE_APDL_DEFAULT);
+                       }
+               }
+
+               // Determine if a new state should be entered.
+               if (sc.state == SCE_APDL_DEFAULT) {
+                       if (sc.ch == '!' && sc.chNext == '!') {
+                               sc.SetState(SCE_APDL_COMMENTBLOCK);
+                       } else if (sc.ch == '!') {
+                               sc.SetState(SCE_APDL_COMMENT);
+                       } else if (IsADigit(sc.ch) || (sc.ch == '.' && IsADigit(sc.chNext))) {
+                               sc.SetState(SCE_APDL_NUMBER);
+                       } else if (sc.ch == '\'' || sc.ch == '\"') {
+                               sc.SetState(SCE_APDL_STRING);
+                               stringStart = sc.ch;
+                       } else if (IsAWordChar(sc.ch) || ((sc.ch == '*' || sc.ch == '/') && !isgraph(sc.chPrev))) {
+                               sc.SetState(SCE_APDL_WORD);
+                       } else if (IsAnOperator(static_cast<char>(sc.ch))) {
+                               sc.SetState(SCE_APDL_OPERATOR);
+                       }
+               }
+       }
+       sc.Complete();
 }
 
 static const char * const apdlWordListDesc[] = {
-    "Commands",
-    "Processors",
-    "Functions",
+    "processors",
+    "commands",
+    "slashommands",
+    "starcommands",
+    "arguments",
+    "functions",
     0
 };
 
index 8bc1f062eb473016f9a680ffe762a280c328de5a..31e4ee52d2d78be5a5ce611d5e1cd1702eca52ed 100644 (file)
 //                  Fixed "#comments_end" -> "#comments-end"  
 //                  Fixed Sendkeys in Strings when not terminated with }
 //                  Added support for Sendkey strings that have second parameter e.g. {UP 5} or {a down}
-// April 26, 2004   Fixed # pre-processor statement inside of comment block would invalidly change the color.
+// April 26, 2004 - Fixed # pre-processor statement inside of comment block would invalidly change the color.
 //                  Added logic for #include <xyz.au3> to treat the <> as string
 //                  Added underscore to IsAOperator.
+// May 17, 2004   - Changed the folding logic from indent to keyword folding.
+//                  Added Folding logic for blocks of single-commentlines or commentblock.
+//                        triggered by: fold.comment=1
+//                  Added Folding logic for preprocessor blocks triggered by fold.preprocessor=1
+//                  Added Special for #region - #endregion syntax highlight and folding.
+// May 30, 2004   - Fixed issue with continuation lines on If statements.
+// June 5, 2004   - Added comma to Operators for better readability.
+//                  Added fold.compact support set with fold.compact=1
+//                  Changed folding inside of #cs-#ce. Default is no keyword folding inside comment blocks when fold.comment=1
+//                        it will now only happen when fold.comment=2.
+// 
 // Copyright for Scintilla: 1998-2001 by Neil Hodgson <neilh@scintilla.org>
 // The License.txt file describes the conditions under which this software may be distributed.
 // Scintilla source code edit control
 #include "Scintilla.h"
 #include "SciLexer.h"
 
-static bool IsAU3Comment(Accessor &styler, int pos, int len) {
-       return len>0 && styler[pos]==';';
-}
-
 static inline bool IsTypeCharacter(const int ch)
 {
     return ch == '$';
 }
 static inline bool IsAWordChar(const int ch)
 {
-    return (ch < 0x80) && (isalnum(ch) || ch == '_' || ch == '-');
+    return (ch < 0x80) && (isalnum(ch) || ch == '_');
 }
 
 static inline bool IsAWordStart(const int ch)
@@ -57,7 +64,7 @@ static inline bool IsAOperator(char ch) {
                return false;
        if (ch == '+' || ch == '-' || ch == '*' || ch == '/' ||
            ch == '&' || ch == '^' || ch == '=' || ch == '<' || ch == '>' ||
-           ch == '(' || ch == ')' || ch == '[' || ch == ']' || ch == '_' )
+           ch == '(' || ch == ')' || ch == '[' || ch == ']' || ch == ',' )
                return true;
        return false;
 }
@@ -111,9 +118,9 @@ static int GetSendKey(const char *szLine, char *szKey)
        // Check if the second portion is either a number or one of these keywords
        szKey[nKeyPos] = '\0';
        szSpecial[nSpecPos] = '\0';
-       if (strcmp(szSpecial,"down")==0    || strcmp(szSpecial,"up")==0  ||
-               strcmp(szSpecial,"on")==0      || strcmp(szSpecial,"off")==0 || 
-               strcmp(szSpecial,"toggle")==0  || nSpecNum == 1 )
+       if (strcmp(szSpecial,"down")== 0    || strcmp(szSpecial,"up")== 0  ||
+               strcmp(szSpecial,"on")== 0      || strcmp(szSpecial,"off")== 0 || 
+               strcmp(szSpecial,"toggle")== 0  || nSpecNum == 1 )
        {
                nFlag = 0;
        }
@@ -121,9 +128,9 @@ static int GetSendKey(const char *szLine, char *szKey)
        {
                nFlag = 1;
        }
-       return nFlag;  // 1 is bad, 0 is good
+       return nFlag;  // 1 is bad, 0 is good 
 
-} // GetSendKey()
+} // GetSendKey() 
 
 static void ColouriseAU3Doc(unsigned int startPos, 
                                                        int length, int initStyle,
@@ -135,6 +142,7 @@ static void ColouriseAU3Doc(unsigned int startPos,
     WordList &keywords3 = *keywordlists[2];
     WordList &keywords4 = *keywordlists[3];
     WordList &keywords5 = *keywordlists[4];
+    WordList &keywords6 = *keywordlists[5];
     styler.StartAt(startPos);
 
     StyleContext sc(startPos, length, initStyle, styler);
@@ -148,9 +156,9 @@ static void ColouriseAU3Doc(unsigned int startPos,
         {
             case SCE_AU3_COMMENTBLOCK:
             {
-                               if (!IsAWordChar(sc.ch))
+                               if (!(IsAWordChar(sc.ch) || (sc.ch == '-' && strcmp(s, "#comments") == 0)))
                                {
-                                       if ((strcmp(s, "#ce")==0 || strcmp(s, "#comments-end")==0)) 
+                                       if ((strcmp(s, "#ce")== 0 || strcmp(s, "#comments-end")== 0)) 
                                        {sc.SetState(SCE_AU3_COMMENT);}  // set to comment line for the rest of the line
                                        else
                                        {sc.SetState(SCE_AU3_COMMENTBLOCK);}
@@ -167,13 +175,18 @@ static void ColouriseAU3Doc(unsigned int startPos,
                 sc.SetState(SCE_AU3_DEFAULT);
                 break;
             }
+            case SCE_AU3_SPECIAL:
+            {
+                if (sc.atLineEnd) {sc.SetState(SCE_AU3_DEFAULT);}
+                break;
+            }
             case SCE_AU3_KEYWORD:
             {
-                if (!IsAWordChar(sc.ch))
+                if (!(IsAWordChar(sc.ch) || (sc.ch == '-' && (strcmp(s, "#comments") == 0 || strcmp(s, "#include") == 0))))
                 {
                     if (!IsTypeCharacter(sc.ch))
                     {
-                                               if (strcmp(s, "#cs")==0 || strcmp(s, "#comments-start")==0 )
+                                               if (strcmp(s, "#cs")== 0 || strcmp(s, "#comments-start")== 0 )
                                                {
                                                        sc.ChangeState(SCE_AU3_COMMENTBLOCK);
                                                        sc.SetState(SCE_AU3_COMMENTBLOCK);
@@ -193,11 +206,19 @@ static void ColouriseAU3Doc(unsigned int startPos,
                                                else if (keywords5.InList(s)) {
                                                        sc.ChangeState(SCE_AU3_PREPROCESSOR);
                                                        sc.SetState(SCE_AU3_DEFAULT);
-                                                       if (strcmp(s, "#include")==0)
+                                                       if (strcmp(s, "#include")== 0)
                                                        {
                                                                si = 3;   // use to determine string start for #inlude <>
                                                        }
                                                }
+                                               else if (keywords6.InList(s)) {
+                                                       sc.ChangeState(SCE_AU3_SPECIAL);
+                                                       sc.SetState(SCE_AU3_SPECIAL);
+                                               }
+                                               else if (strcmp(s, "_") == 0) {
+                                                       sc.ChangeState(SCE_AU3_OPERATOR);
+                                                       sc.SetState(SCE_AU3_DEFAULT);
+                                               }
                                                else if (!IsAWordChar(sc.ch)) {
                                                        sc.ChangeState(SCE_AU3_DEFAULT);
                                                        sc.SetState(SCE_AU3_DEFAULT);
@@ -302,8 +323,8 @@ static void ColouriseAU3Doc(unsigned int startPos,
                                sc.SetState(SCE_AU3_STRING);
                                si = 2; }
             else if (IsADigit(sc.ch) || (sc.ch == '.' && IsADigit(sc.chNext))) {sc.SetState(SCE_AU3_NUMBER);}
-            else if (IsAOperator(static_cast<char>(sc.ch))) {sc.SetState(SCE_AU3_OPERATOR);}
             else if (IsAWordStart(sc.ch)) {sc.SetState(SCE_AU3_KEYWORD);}
+            else if (IsAOperator(static_cast<char>(sc.ch))) {sc.SetState(SCE_AU3_OPERATOR);}
                        else if (sc.atLineEnd) {sc.SetState(SCE_AU3_DEFAULT);}
         }
     }      //for (; sc.More(); sc.Forward())
@@ -311,11 +332,62 @@ static void ColouriseAU3Doc(unsigned int startPos,
 }
 
 //
+static bool IsStreamCommentStyle(int style) {
+       return style == SCE_AU3_COMMENT || style == SCE_AU3_COMMENTBLOCK;
+}
+
 //
-static void FoldAU3Doc(unsigned int startPos, int length, int, WordList *[], Accessor &styler)
+// Routine to find first none space on the current line and return its Style
+// needed for comment lines not starting on pos 1 
+static int GetStyleFirstWord(unsigned int szLine, Accessor &styler)
 {
-               int endPos = startPos + length;
+       int nsPos = styler.LineStart(szLine);
+       int nePos = styler.LineStart(szLine+1) - 1;
+       while (isspacechar(styler.SafeGetCharAt(nsPos)) && nsPos < nePos)
+       {
+               nsPos++; // skip to next char
+
+       } // End While
+       return styler.StyleAt(nsPos);
 
+} // GetStyleFirstWord()
+
+//
+// Routine to check the last "none comment" character on a line to see if its a continuation
+// 
+static bool IsContinuationLine(unsigned int szLine, Accessor &styler)
+{
+       int nsPos = styler.LineStart(szLine);
+       int nePos = styler.LineStart(szLine+1) - 2;
+       //int stylech = styler.StyleAt(nsPos);
+       while (nsPos < nePos)
+       {
+               //stylech = styler.StyleAt(nePos);
+               int stylech = styler.StyleAt(nsPos);
+               if (!(stylech == SCE_AU3_COMMENT)) {
+                       char ch = styler.SafeGetCharAt(nePos);
+                       if (!isspacechar(ch)) {
+                               if (ch == '_')
+                                       return true;
+                               else
+                                       return false;
+                       }
+               }
+               nePos--; // skip to next char
+       } // End While
+       return false;
+} // IsContinuationLine()
+
+
+//
+static void FoldAU3Doc(unsigned int startPos, int length, int, WordList *[], Accessor &styler)
+{
+       int endPos = startPos + length;
+       // get settings from the config files for folding comments and preprocessor lines
+       bool foldComment = styler.GetPropertyInt("fold.comment") != 0;
+       bool foldInComment = styler.GetPropertyInt("fold.comment") == 2;
+       bool foldCompact = styler.GetPropertyInt("fold.compact", 1) != 0;
+       bool foldpreprocessor = styler.GetPropertyInt("fold.preprocessor") != 0;
        // Backtrack to previous line in case need to fix its fold status
        int lineCurrent = styler.GetLine(startPos);
        if (startPos > 0) {
@@ -324,35 +396,207 @@ static void FoldAU3Doc(unsigned int startPos, int length, int, WordList *[], Acc
                        startPos = styler.LineStart(lineCurrent);
                }
        }
-       int spaceFlags = 0;
-       int indentCurrent = styler.IndentAmount(lineCurrent, &spaceFlags, IsAU3Comment);
-       char chNext = styler[startPos];
+       // vars for style of previous/current/next lines 
+       int style = GetStyleFirstWord(lineCurrent,styler);
+       int stylePrev = 0;
+       // find the first previous line without continuation character at the end
+       while ((lineCurrent > 0 && IsContinuationLine(lineCurrent,styler)) ||
+              (lineCurrent > 1 && IsContinuationLine(lineCurrent-1,styler))) {
+               lineCurrent--;
+               startPos = styler.LineStart(lineCurrent);
+       }
+       if (lineCurrent > 0) {
+               stylePrev = GetStyleFirstWord(lineCurrent-1,styler);
+       }
+       // vars for getting first word to check for keywords
+       bool FirstWordStart = false;
+       bool FirstWordEnd = false;
+       char szKeyword[10]="";
+       int      szKeywordlen = 0;
+       char szThen[5]="";
+       int      szThenlen = 0;
+       bool ThenFoundLast = false;
+       // var for indentlevel
+       int levelCurrent = SC_FOLDLEVELBASE;
+       if (lineCurrent > 0)
+               levelCurrent = styler.LevelAt(lineCurrent-1) >> 16;
+       int levelNext = levelCurrent;
+       //  
+       int     visibleChars = 0;
+       char chNext = styler.SafeGetCharAt(startPos);
+       char chPrev = ' ';
+       //
        for (int i = startPos; i < endPos; i++) {
                char ch = chNext;
                chNext = styler.SafeGetCharAt(i + 1);
-
-               if ((ch == '\r' && chNext != '\n') || (ch == '\n') || (i == endPos)) {
-                       int lev = indentCurrent;
-                       int indentNext = styler.IndentAmount(lineCurrent + 1, &spaceFlags, IsAU3Comment);
-                       if (!(indentCurrent & SC_FOLDLEVELWHITEFLAG)) {
-                               // Only non whitespace lines can be headers
-                               if ((indentCurrent & SC_FOLDLEVELNUMBERMASK) < (indentNext & SC_FOLDLEVELNUMBERMASK)) {
-                                       lev |= SC_FOLDLEVELHEADERFLAG;
-                               } else if (indentNext & SC_FOLDLEVELWHITEFLAG) {
-                                       // Line after is blank so check the next - maybe should continue further?
-                                       int spaceFlags2 = 0;
-                                       int indentNext2 = styler.IndentAmount(lineCurrent + 2, &spaceFlags2, IsAU3Comment);
-                                       if ((indentCurrent & SC_FOLDLEVELNUMBERMASK) < (indentNext2 & SC_FOLDLEVELNUMBERMASK)) {
-                                               lev |= SC_FOLDLEVELHEADERFLAG;
+               if (IsAWordChar(ch)) {
+                       visibleChars++;
+               }
+               // get the syle for the current character neede to check in comment
+               int stylech = styler.StyleAt(i);
+               // get first word for the line for indent check max 9 characters
+               if (FirstWordStart && (!(FirstWordEnd))) {
+                       if (!IsAWordChar(ch)) {
+                               FirstWordEnd = true;
+                               szKeyword[szKeywordlen] = '\0';
+                       }
+                       else {
+                               if (szKeywordlen < 10) {
+                               szKeyword[szKeywordlen++] = static_cast<char>(tolower(ch));
+                               }
+                       }
+               }
+               // start the capture of the first word 
+               if (!(FirstWordStart)) {
+                       if (IsAWordChar(ch) || IsAWordStart(ch) || ch == ';') {
+                               FirstWordStart = true;
+                               szKeyword[szKeywordlen++] = static_cast<char>(tolower(ch));
+                       }
+               }
+               // only process this logic when not in comment section
+               if (!(stylech == SCE_AU3_COMMENT)) {
+                       if (ThenFoundLast) {
+                               if (IsAWordChar(ch)) {
+                                       ThenFoundLast = false;
+                               }               
+                       }
+                       // find out if the word "then" is the last on a "if" line
+                       if (FirstWordEnd && strcmp(szKeyword,"if") == 0) {
+                               if (szThenlen == 4) {
+                                       szThen[0] = szThen[1];
+                                       szThen[1] = szThen[2];
+                                       szThen[2] = szThen[3];
+                                       szThen[3] = static_cast<char>(tolower(ch));
+                                       if (strcmp(szThen,"then") == 0 ) {
+                                               ThenFoundLast = true;
+                                       }
+                               }
+                               else {
+                                       szThen[szThenlen++] = static_cast<char>(tolower(ch));
+                                       if (szThenlen == 5) {
+                                               szThen[4] = '\0';
                                        }
                                }
                        }
-                       indentCurrent = indentNext;
-                       styler.SetLevel(lineCurrent, lev);
+               }
+               // End of Line found so process the information 
+               if ((ch == '\r' && chNext != '\n') || (ch == '\n') || (i == endPos)) {
+                       // **************************
+                       // Folding logic for Keywords
+                       // **************************
+                       // if a keyword is found on the current line and the line doesn't end with _ (continuation)
+                       //    and we are not inside a commentblock.
+                       if (szKeywordlen > 0 && (!(chPrev == '_')) && 
+                               ((!(IsStreamCommentStyle(style)) || foldInComment)) ) {
+                               szKeyword[szKeywordlen] = '\0';
+                               // only fold "if" last keyword is "then"  (else its a one line if)
+                               if (strcmp(szKeyword,"if") == 0  && ThenFoundLast) {
+                                               levelNext++;
+                               }
+                               // create new fold for these words 
+                               if (strcmp(szKeyword,"do") == 0   || strcmp(szKeyword,"for") == 0 ||
+                                       strcmp(szKeyword,"func") == 0 || strcmp(szKeyword,"while") == 0||
+                                       strcmp(szKeyword,"#region") == 0 ) {
+                                               levelNext++;
+                               }
+                               // create double Fold for select because Case will subtract one of the current level
+                               if (strcmp(szKeyword,"select") == 0) {
+                                               levelNext++;
+                                               levelNext++;
+                               }
+                               // end the fold for these words before the current line
+                               if (strcmp(szKeyword,"endfunc") == 0 || strcmp(szKeyword,"endif") == 0 ||
+                                       strcmp(szKeyword,"next") == 0    || strcmp(szKeyword,"until") == 0 || 
+                                       strcmp(szKeyword,"wend") == 0){
+                                               levelNext--;
+                                               levelCurrent--;
+                               }
+                               // end the fold for these words before the current line and Start new fold 
+                               if (strcmp(szKeyword,"case") == 0      || strcmp(szKeyword,"else") == 0 ||
+                                       strcmp(szKeyword,"elseif") == 0 ) {
+                                               levelCurrent--;
+                               }
+                               // end the double fold for this word before the current line
+                               if (strcmp(szKeyword,"endselect") == 0 ) {
+                                               levelNext--;
+                                               levelNext--;
+                                               levelCurrent--;
+                                               levelCurrent--;
+                               }
+                               // end the fold for these words on the current line
+                               if (strcmp(szKeyword,"#endregion") == 0 ) {
+                                               levelNext--;
+                               }
+                       }
+                       // Preprocessor and Comment folding
+                       int styleNext = GetStyleFirstWord(lineCurrent + 1,styler);
+                       // *************************************
+                       // Folding logic for preprocessor blocks
+                       // *************************************
+                       // process preprosessor line
+                       if (foldpreprocessor && style == SCE_AU3_PREPROCESSOR) {
+                               if (!(stylePrev == SCE_AU3_PREPROCESSOR) && (styleNext == SCE_AU3_PREPROCESSOR)) {
+                                   levelNext++;
+                               }
+                               // fold till the last line for normal comment lines
+                               else if (stylePrev == SCE_AU3_PREPROCESSOR && !(styleNext == SCE_AU3_PREPROCESSOR)) {
+                                       levelNext--;
+                               }
+                       }
+                       // *********************************
+                       // Folding logic for Comment blocks
+                       // *********************************
+                       if (foldComment && IsStreamCommentStyle(style)) {
+                               // Start of a comment block
+                               if (!(stylePrev==style) && IsStreamCommentStyle(styleNext) && styleNext==style) {
+                                   levelNext++;
+                               } 
+                               // fold till the last line for normal comment lines
+                               else if (IsStreamCommentStyle(stylePrev) 
+                                               && !(styleNext == SCE_AU3_COMMENT)
+                                               && stylePrev == SCE_AU3_COMMENT 
+                                               && style == SCE_AU3_COMMENT) {
+                                       levelNext--;
+                               }
+                               // fold till the one but last line for Blockcomment lines
+                               else if (IsStreamCommentStyle(stylePrev) 
+                                               && !(styleNext == SCE_AU3_COMMENTBLOCK)
+                                               && style == SCE_AU3_COMMENTBLOCK) {
+                                       levelNext--;
+                                       levelCurrent--;
+                               }
+                       }
+                       int levelUse = levelCurrent;
+                       int lev = levelUse | levelNext << 16;
+                       if (visibleChars == 0 && foldCompact)
+                               lev |= SC_FOLDLEVELWHITEFLAG;
+                       if (levelUse < levelNext) {
+                               lev |= SC_FOLDLEVELHEADERFLAG;
+                       }
+                       if (lev != styler.LevelAt(lineCurrent)) {
+                               styler.SetLevel(lineCurrent, lev);
+                       }
+                       // reset values for the next line
                        lineCurrent++;
+                       stylePrev = style;
+                       style = styleNext;
+                       levelCurrent = levelNext;
+                       visibleChars = 0;
+                       // if the last character is an Underscore then don't reset since the line continues on the next line.
+                       if (!(chPrev == '_')) {
+                               szKeywordlen = 0;
+                               szThenlen = 0;
+                               FirstWordStart = false;
+                               FirstWordEnd = false;
+                               ThenFoundLast = false;
+                       }
+               }
+               // save the last processed character
+               if (!isspacechar(ch)) {
+                       chPrev = ch;
+                       visibleChars++;
                }
        }
-
 }
 
 
@@ -364,6 +608,7 @@ static const char * const AU3WordLists[] = {
     "#autoit macros",
     "#autoit Sent keys",
     "#autoit Pre-processors",
+    "#autoit Special",
     0
 };
 LexerModule lmAU3(SCLEX_AU3, ColouriseAU3Doc, "au3", FoldAU3Doc , AU3WordLists);
index 2e5f891b4b1fbf11757e5a1267ef0c022348420c..0227ce11088b7aa9ba73033e36a74f931bfcc306 100644 (file)
@@ -256,7 +256,7 @@ static void ColouriseDocument(
                        ColouriseLabel(sc, keywords, apostropheStartsAttribute);
 
                // Whitespace
-               } else if (isspace(sc.ch)) {
+               } else if (IsASpace(sc.ch)) {
                        ColouriseWhiteSpace(sc, apostropheStartsAttribute);
 
                // Delimiters
@@ -264,7 +264,7 @@ static void ColouriseDocument(
                        ColouriseDelimiter(sc, apostropheStartsAttribute);
 
                // Numbers
-               } else if (isdigit(sc.ch) || sc.ch == '#') {
+               } else if (IsADigit(sc.ch) || sc.ch == '#') {
                        ColouriseNumber(sc, apostropheStartsAttribute);
 
                // Keywords or identifiers
@@ -310,11 +310,11 @@ static inline bool IsNumberCharacter(int ch) {
 }
 
 static inline bool IsNumberStartCharacter(int ch) {
-       return isdigit(ch) != 0;
+       return IsADigit(ch);
 }
 
 static inline bool IsSeparatorOrDelimiterCharacter(int ch) {
-       return isspace(ch) || IsDelimiterCharacter(ch);
+       return IsASpace(ch) || IsDelimiterCharacter(ch);
 }
 
 static bool IsValidIdentifier(const SString& identifier) {
@@ -377,7 +377,7 @@ static bool IsValidNumber(const SString& number) {
                                }
                                canBeSpecial = false;
                                seenDot = true;
-                       } else if (isdigit(number[i])) {
+                       } else if (IsADigit(number[i])) {
                                canBeSpecial = true;
                        } else {
                                break;
@@ -398,7 +398,7 @@ static bool IsValidNumber(const SString& number) {
                                if (!canBeSpecial)
                                        return false;
                                canBeSpecial = false;
-                       } else if (isdigit (ch)) {
+                       } else if (IsADigit(ch)) {
                                base = base * 10 + (ch - '0');
                                if (base > 16)
                                        return false;
@@ -436,7 +436,7 @@ static bool IsValidNumber(const SString& number) {
                                canBeSpecial = false;
                                seenDot = true;
 
-                       } else if (isdigit (ch)) {
+                       } else if (IsADigit(ch)) {
                                if (ch - '0' >= base) {
                                        return false;
                                }
@@ -496,7 +496,7 @@ static bool IsValidNumber(const SString& number) {
                                        return false;
                                }
                                canBeSpecial = false;
-                       } else if (isdigit(number[i])) {
+                       } else if (IsADigit(number[i])) {
                                canBeSpecial = true;
                        } else {
                                return false;
@@ -512,9 +512,9 @@ static bool IsValidNumber(const SString& number) {
 }
 
 static inline bool IsWordCharacter(int ch) {
-       return IsWordStartCharacter(ch) || isdigit(ch);
+       return IsWordStartCharacter(ch) || IsADigit(ch);
 }
 
 static inline bool IsWordStartCharacter(int ch) {
-       return isalpha(ch) || ch == '_';
+       return (isascii(ch) && isalpha(ch)) || ch == '_';
 }
diff --git a/contrib/src/stc/scintilla/src/LexAsn1.cxx b/contrib/src/stc/scintilla/src/LexAsn1.cxx
new file mode 100644 (file)
index 0000000..be6c3f2
--- /dev/null
@@ -0,0 +1,181 @@
+// Scintilla source code edit control
+/** @file LexAsn1.cxx
+ ** Lexer for ASN.1
+ **/
+// Copyright 2004 by Herr Pfarrer rpfarrer <at> yahoo <dot> de
+// Last Updated: 20/07/2004
+// The License.txt file describes the conditions under which this software may be distributed.
+#include <stdlib.h>
+#include <string.h>
+#include <ctype.h>
+#include <stdio.h>
+#include <stdarg.h>
+
+#include "Platform.h"
+
+#include "PropSet.h"
+#include "Accessor.h"
+#include "StyleContext.h"
+#include "KeyWords.h"
+#include "Scintilla.h"
+#include "SciLexer.h"
+
+// Some char test functions
+static bool isAsn1Number(int ch)
+{
+       return (ch >= '0' && ch <= '9');
+}
+
+static bool isAsn1Letter(int ch)
+{
+       return (ch >= 'A' && ch <= 'Z') || (ch >= 'a' && ch <= 'z');
+}
+
+static bool isAsn1Char(int ch)
+{
+       return (ch == '-' ) || isAsn1Number(ch) || isAsn1Letter (ch);
+}
+
+//
+//     Function determining the color of a given code portion
+//     Based on a "state"
+//
+static void ColouriseAsn1Doc(unsigned int startPos, int length, int initStyle, WordList *keywordLists[], Accessor &styler)
+{
+       // The keywords
+       WordList &Keywords = *keywordLists[0];
+       WordList &Attributes = *keywordLists[1];
+       WordList &Descriptors = *keywordLists[2];
+       WordList &Types = *keywordLists[3];
+
+       // Parse the whole buffer character by character using StyleContext
+       StyleContext sc(startPos, length, initStyle, styler);
+       for (; sc.More(); sc.Forward())
+       {
+               // The state engine
+               switch (sc.state)
+               {
+               case SCE_ASN1_DEFAULT:          // Plain characters
+asn1_default:
+                       if (sc.ch == '-' && sc.chNext == '-')
+                               // A comment begins here
+                               sc.SetState(SCE_ASN1_COMMENT);
+                       else if (sc.ch == '"')
+                               // A string begins here
+                               sc.SetState(SCE_ASN1_STRING);
+                       else if (isAsn1Number (sc.ch))
+                               // A number starts here (identifier should start with a letter in ASN.1)
+                               sc.SetState(SCE_ASN1_SCALAR);
+                       else if (isAsn1Char (sc.ch))
+                               // An identifier starts here (identifier always start with a letter)
+                               sc.SetState(SCE_ASN1_IDENTIFIER);
+                       else if (sc.ch == ':')
+                               // A ::= operator starts here
+                               sc.SetState(SCE_ASN1_OPERATOR);
+                       break;
+               case SCE_ASN1_COMMENT:          // A comment
+                       if (sc.ch == '\r' || sc.ch == '\n')
+                               // A comment ends here
+                               sc.SetState(SCE_ASN1_DEFAULT);
+                       break;
+               case SCE_ASN1_IDENTIFIER:       // An identifier (keyword, attribute, descriptor or type)
+                       if (!isAsn1Char (sc.ch))
+                       {
+                               // The end of identifier is here: we can look for it in lists by now and change its state
+                               char s[100];
+                               sc.GetCurrent(s, sizeof(s));
+                               if (Keywords.InList(s))
+                                       // It's a keyword, change its state
+                                       sc.ChangeState(SCE_ASN1_KEYWORD);
+                               else if (Attributes.InList(s))
+                                       // It's an attribute, change its state
+                                       sc.ChangeState(SCE_ASN1_ATTRIBUTE);
+                               else if (Descriptors.InList(s))
+                                       // It's a descriptor, change its state
+                                       sc.ChangeState(SCE_ASN1_DESCRIPTOR);
+                               else if (Types.InList(s))
+                                       // It's a type, change its state
+                                       sc.ChangeState(SCE_ASN1_TYPE);
+
+                               // Set to default now
+                               sc.SetState(SCE_ASN1_DEFAULT);
+                       }
+                       break;
+               case SCE_ASN1_STRING:           // A string delimited by ""
+                       if (sc.ch == '"')
+                       {
+                               // A string ends here
+                               sc.ForwardSetState(SCE_ASN1_DEFAULT);
+
+                               // To correctly manage a char sticking to the string quote
+                               goto asn1_default;
+                       }
+                       break;
+               case SCE_ASN1_SCALAR:           // A plain number
+                       if (!isAsn1Number (sc.ch))
+                               // A number ends here
+                               sc.SetState(SCE_ASN1_DEFAULT);
+                       break;
+               case SCE_ASN1_OPERATOR:         // The affectation operator ::= and wath follows (eg: ::= { org 6 } OID or ::= 12 trap)
+                       if (sc.ch == '{')
+                       {
+                               // An OID definition starts here: enter the sub loop
+                               for (; sc.More(); sc.Forward())
+                               {
+                                       if (isAsn1Number (sc.ch) && (!isAsn1Char (sc.chPrev) || isAsn1Number (sc.chPrev)))
+                                               // The OID number is highlighted
+                                               sc.SetState(SCE_ASN1_OID);
+                                       else if (isAsn1Char (sc.ch))
+                                               // The OID parent identifier is plain
+                                               sc.SetState(SCE_ASN1_IDENTIFIER);
+                                       else
+                                               sc.SetState(SCE_ASN1_DEFAULT);
+
+                                       if (sc.ch == '}')
+                                               // Here ends the OID and the operator sub loop: go back to main loop
+                                               break;
+                               }
+                       }
+                       else if (isAsn1Number (sc.ch))
+                       {
+                               // A trap number definition starts here: enter the sub loop
+                               for (; sc.More(); sc.Forward())
+                               {
+                                       if (isAsn1Number (sc.ch))
+                                               // The trap number is highlighted
+                                               sc.SetState(SCE_ASN1_OID);
+                                       else
+                                       {
+                                               // The number ends here: go back to main loop
+                                               sc.SetState(SCE_ASN1_DEFAULT);
+                                               break;
+                                       }
+                               }
+                       }
+                       else if (sc.ch != ':' && sc.ch != '=' && sc.ch != ' ')
+                               // The operator doesn't imply an OID definition nor a trap, back to main loop
+                               goto asn1_default; // To be sure to handle actually the state change
+                       break;
+               }
+       }
+       sc.Complete();
+}
+
+static void FoldAsn1Doc(unsigned int, int, int, WordList *[], Accessor &styler)
+{
+       // No folding enabled, no reason to continue...
+       if( styler.GetPropertyInt("fold") == 0 )
+               return;
+
+       // No folding implemented: doesn't make sense for ASN.1
+}
+
+static const char * const asn1WordLists[] = {
+       "Keywords",
+       "Attributes",
+       "Descriptors",
+       "Types",
+       0, };
+
+
+LexerModule lmAsn1(SCLEX_ASN1, ColouriseAsn1Doc, "asn1", FoldAsn1Doc, asn1WordLists);
index 9c8ea416ae6b3b36063090f26addb4696f7fe626..c6ca0650585470cf431a24f9579f0f02c794b01a 100644 (file)
@@ -123,7 +123,7 @@ static void ColouriseCppDoc(unsigned int startPos, int length, int initStyle, Wo
                                        sc.SetState(SCE_C_DEFAULT);
                                }
                        } else {
-                               if ((sc.atLineEnd) || (sc.Match('/', '*')) || (sc.Match('/', '/'))) {
+                               if ((sc.ch == '\r') || (sc.ch == '\n') || (sc.Match('/', '*')) || (sc.Match('/', '/'))) {
                                        sc.SetState(SCE_C_DEFAULT);
                                }
                        }
@@ -140,7 +140,7 @@ static void ColouriseCppDoc(unsigned int startPos, int length, int initStyle, Wo
                                sc.SetState(SCE_C_COMMENTDOCKEYWORD);
                        }
                } else if (sc.state == SCE_C_COMMENTLINE || sc.state == SCE_C_COMMENTLINEDOC) {
-                       if (sc.atLineEnd) {
+                       if (sc.ch == '\r' || sc.ch == '\n') {
                                sc.SetState(SCE_C_DEFAULT);
                                visibleChars = 0;
                        }
@@ -235,7 +235,8 @@ static void ColouriseCppDoc(unsigned int startPos, int length, int initStyle, Wo
                                }
                                sc.Forward();   // Eat the * so it isn't used for the end of the comment
                        } else if (sc.Match('/', '/')) {
-                               if (sc.Match("///") || sc.Match("//!")) // Support of Qt/Doxygen doc. style
+                               if ((sc.Match("///") && !sc.Match("////")) || sc.Match("//!"))
+                                       // Support of Qt/Doxygen doc. style
                                        sc.SetState(SCE_C_COMMENTLINEDOC);
                                else
                                        sc.SetState(SCE_C_COMMENTLINE);
@@ -252,7 +253,7 @@ static void ColouriseCppDoc(unsigned int startPos, int length, int initStyle, Wo
                                do {
                                        sc.Forward();
                                } while ((sc.ch == ' ' || sc.ch == '\t') && sc.More());
-                               if (sc.atLineEnd) {
+                               if (sc.ch == '\r' || sc.ch == '\n') {
                                        sc.SetState(SCE_C_DEFAULT);
                                }
                        } else if (isoperator(static_cast<char>(sc.ch))) {
index 11daa142388d83d3080f53c7b878d8a3b4a1a281..f45ce1cda4c656fedf11860b19e74be7b851765c 100644 (file)
@@ -1,7 +1,8 @@
 // Scintilla source code edit control
 /** @file LexCSS.cxx
- ** Lexer for Cascade Style Sheets
+ ** Lexer for Cascading Style Sheets
  ** Written by Jakub Vrána
+ ** Improved by Philippe Lhoste (CSS2)
  **/
 // Copyright 1998-2002 by Neil Hodgson <neilh@scintilla.org>
 // The License.txt file describes the conditions under which this software may be distributed.
 #include "Scintilla.h"
 #include "SciLexer.h"
 
+
 static inline bool IsAWordChar(const unsigned int ch) {
        return (isalnum(ch) || ch == '-' || ch == '_' || ch >= 161); // _ is not in fact correct CSS word-character
 }
 
 inline bool IsCssOperator(const char ch) {
-       if (!isalnum(ch) && (ch == '{' || ch == '}' || ch == ':' || ch == ',' || ch == ';' || ch == '.' || ch == '#' || ch == '!' || ch == '@'))
+       if (!isalnum(ch) &&
+               (ch == '{' || ch == '}' || ch == ':' || ch == ',' || ch == ';' ||
+                ch == '.' || ch == '#' || ch == '!' || ch == '@' ||
+                /* CSS2 */
+                ch == '*' || ch == '>' || ch == '+' || ch == '=' || ch == '~' || ch == '|' ||
+                ch == '[' || ch == ']' || ch == '(' || ch == ')')) {
                return true;
+       }
        return false;
 }
 
 static void ColouriseCssDoc(unsigned int startPos, int length, int initStyle, WordList *keywordlists[], Accessor &styler) {
        WordList &keywords = *keywordlists[0];
        WordList &pseudoClasses = *keywordlists[1];
+       WordList &keywords2 = *keywordlists[2];
 
        StyleContext sc(startPos, length, initStyle, styler);
 
@@ -44,7 +53,8 @@ static void ColouriseCssDoc(unsigned int startPos, int length, int initStyle, Wo
        for (; sc.More(); sc.Forward()) {
                if (sc.state == SCE_CSS_COMMENT && sc.Match('*', '/')) {
                        if (lastStateC == -1) {
-                               // backtrack to get last state
+                               // backtrack to get last state:
+                               // comments are like whitespace, so we must return to the previous state
                                unsigned int i = startPos;
                                for (; i > 0; i--) {
                                        if ((lastStateC = styler.StyleAt(i-1)) != SCE_CSS_COMMENT) {
@@ -104,14 +114,15 @@ static void ColouriseCssDoc(unsigned int startPos, int length, int initStyle, Wo
                                        sc.SetState(SCE_CSS_IDENTIFIER);
                                break;
                        case '}':
-                               if (lastState == SCE_CSS_DEFAULT || lastState == SCE_CSS_VALUE || lastState == SCE_CSS_IMPORTANT || lastState == SCE_CSS_IDENTIFIER)
+                               if (lastState == SCE_CSS_DEFAULT || lastState == SCE_CSS_VALUE || lastState == SCE_CSS_IMPORTANT ||
+                                       lastState == SCE_CSS_IDENTIFIER || lastState == SCE_CSS_IDENTIFIER2)
                                        sc.SetState(SCE_CSS_DEFAULT);
                                break;
                        case ':':
                                if (lastState == SCE_CSS_TAG || lastState == SCE_CSS_PSEUDOCLASS || lastState == SCE_CSS_DEFAULT ||
                                        lastState == SCE_CSS_CLASS || lastState == SCE_CSS_ID || lastState == SCE_CSS_UNKNOWN_PSEUDOCLASS)
                                        sc.SetState(SCE_CSS_PSEUDOCLASS);
-                               else if (lastState == SCE_CSS_IDENTIFIER || lastState == SCE_CSS_UNKNOWN_IDENTIFIER)
+                               else if (lastState == SCE_CSS_IDENTIFIER || lastState == SCE_CSS_IDENTIFIER2 || lastState == SCE_CSS_UNKNOWN_IDENTIFIER)
                                        sc.SetState(SCE_CSS_VALUE);
                                break;
                        case '.':
@@ -146,7 +157,8 @@ static void ColouriseCssDoc(unsigned int startPos, int length, int initStyle, Wo
                }
 
                if (IsAWordChar(sc.chPrev) && (
-                       sc.state == SCE_CSS_IDENTIFIER || sc.state == SCE_CSS_UNKNOWN_IDENTIFIER
+                       sc.state == SCE_CSS_IDENTIFIER || sc.state == SCE_CSS_IDENTIFIER2
+                       || sc.state == SCE_CSS_UNKNOWN_IDENTIFIER
                        || sc.state == SCE_CSS_PSEUDOCLASS || sc.state == SCE_CSS_UNKNOWN_PSEUDOCLASS
                        || sc.state == SCE_CSS_IMPORTANT
                )) {
@@ -157,12 +169,19 @@ static void ColouriseCssDoc(unsigned int startPos, int length, int initStyle, Wo
                                s2++;
                        switch (sc.state) {
                        case SCE_CSS_IDENTIFIER:
-                               if (!keywords.InList(s2))
-                                       sc.ChangeState(SCE_CSS_UNKNOWN_IDENTIFIER);
+                               if (!keywords.InList(s2)) {
+                                       if (keywords2.InList(s2)) {
+                                               sc.ChangeState(SCE_CSS_IDENTIFIER2);
+                                       } else {
+                                               sc.ChangeState(SCE_CSS_UNKNOWN_IDENTIFIER);
+                                       }
+                               }
                                break;
                        case SCE_CSS_UNKNOWN_IDENTIFIER:
                                if (keywords.InList(s2))
                                        sc.ChangeState(SCE_CSS_IDENTIFIER);
+                               else if (keywords2.InList(s2))
+                                       sc.ChangeState(SCE_CSS_IDENTIFIER2);
                                break;
                        case SCE_CSS_PSEUDOCLASS:
                                if (!pseudoClasses.InList(s2))
@@ -253,8 +272,9 @@ static void FoldCSSDoc(unsigned int startPos, int length, int, WordList *[], Acc
 }
 
 static const char * const cssWordListDesc[] = {
-       "Keywords",
+       "CSS1 Keywords",
        "Pseudo classes",
+       "CSS2 Keywords",
        0
 };
 
index d2cd30f60e2ee44335d3806f317b9cc63b51e755..e3546b436fdb6b1674a29fef85e44e92a3cedd71 100644 (file)
@@ -314,7 +314,7 @@ static void classifyWordHTPy(unsigned int start, unsigned int end, WordList &key
 // Called when in a PHP word
 static void classifyWordHTPHP(unsigned int start, unsigned int end, WordList &keywords, Accessor &styler) {
        char chAttr = SCE_HPHP_DEFAULT;
-       bool wordIsNumber = IsADigit(styler[start]);
+       bool wordIsNumber = IsADigit(styler[start]) || (styler[start] == '.' && start+1 <= end && IsADigit(styler[start+1]));
        if (wordIsNumber)
                chAttr = SCE_HPHP_NUMBER;
        else {
@@ -637,9 +637,10 @@ static void ColouriseHyperTextDoc(unsigned int startPos, int length, int initSty
                         (state != SCE_HPHP_COMMENT) &&
                         (ch == '<') &&
                         (chNext == '?')) {
+                       scriptLanguage = segIsScriptingIndicator(styler, styler.GetStartSegment() + 2, i + 10, eScriptPHP);
+                       if (scriptLanguage != eScriptPHP && isStringState(state)) continue;
                        styler.ColourTo(i - 1, StateToPrint);
                        beforePreProc = state;
-                       scriptLanguage = segIsScriptingIndicator(styler, styler.GetStartSegment() + 2, i + 10, eScriptPHP);
                        i++;
                        visibleChars++;
                        i += PrintScriptingIndicatorOffset(styler, styler.GetStartSegment() + 2, i + 10);
@@ -1495,7 +1496,7 @@ static void ColouriseHyperTextDoc(unsigned int startPos, int length, int initSty
                        }
                        break;
                case SCE_HPHP_NUMBER:
-                       if (!IsADigit(ch)) {
+                       if (!IsADigit(ch) && ch != '.' && ch != 'e' && ch != 'E' && (ch != '-' || (chPrev != 'e' && chPrev != 'E'))) {
                                styler.ColourTo(i - 1, SCE_HPHP_NUMBER);
                                if (isoperator(ch))
                                        state = SCE_HPHP_OPERATOR;
@@ -1567,7 +1568,7 @@ static void ColouriseHyperTextDoc(unsigned int startPos, int length, int initSty
                case SCE_HPHP_OPERATOR:
                case SCE_HPHP_DEFAULT:
                        styler.ColourTo(i - 1, StateToPrint);
-                       if (IsADigit(ch)) {
+                       if (IsADigit(ch) || (ch == '.' && IsADigit(chNext))) {
                                state = SCE_HPHP_NUMBER;
                        } else if (iswordstart(ch)) {
                                state = SCE_HPHP_WORD;
index 9cd5433c89630299cb796c5b1c9b464464483b62..549b573e2ed3275a31d97e9a5d1dfdbdadd7d01a 100644 (file)
@@ -66,9 +66,6 @@ static void ColouriseLispDoc(unsigned int startPos, int length, int initStyle, W
        styler.StartAt(startPos);
 
        int state = initStyle;
-       if (state == SCE_LISP_STRINGEOL)        // Does not leak onto next line
-               state = SCE_LISP_DEFAULT;
-       char chPrev = ' ';
        char chNext = styler[startPos];
        unsigned int lengthDoc = startPos + length;
        styler.StartSegment(startPos);
@@ -77,19 +74,9 @@ static void ColouriseLispDoc(unsigned int startPos, int length, int initStyle, W
                chNext = styler.SafeGetCharAt(i + 1);
 
                bool atEOL = (ch == '\r' && chNext != '\n') || (ch == '\n');
-               if (atEOL) {
-                       // Trigger on CR only (Mac style) or either on LF from CR+LF (Dos/Win) or on LF alone (Unix)
-                       // Avoid triggering two times on Dos/Win
-                       // End of line
-                       if (state == SCE_LISP_STRINGEOL) {
-                               styler.ColourTo(i, state);
-                               state = SCE_LISP_DEFAULT;
-                       }
-               }
 
                if (styler.IsLeadByte(ch)) {
                        chNext = styler.SafeGetCharAt(i + 2);
-                       chPrev = ' ';
                        i += 1;
                        continue;
                }
@@ -107,9 +94,9 @@ static void ColouriseLispDoc(unsigned int startPos, int length, int initStyle, W
                                styler.ColourTo(i - 1, state);
                                styler.ColourTo(i, SCE_LISP_OPERATOR);
                        }
-
                        else if (ch == '\"') {
-                                       state = SCE_LISP_STRING;
+                               styler.ColourTo(i - 1, state);
+                               state = SCE_LISP_STRING;
                        }
                } else if (state == SCE_LISP_IDENTIFIER) {
                        if (!isLispwordstart(ch)) {
@@ -131,20 +118,15 @@ static void ColouriseLispDoc(unsigned int startPos, int length, int initStyle, W
                                if (ch == '\\') {
                                        if (chNext == '\"' || chNext == '\'' || chNext == '\\') {
                                                i++;
-                                               ch = chNext;
                                                chNext = styler.SafeGetCharAt(i + 1);
                                        }
                                } else if (ch == '\"') {
                                        styler.ColourTo(i, state);
                                        state = SCE_LISP_DEFAULT;
-                               } else if ((chNext == '\r' || chNext == '\n') && (chPrev != '\\')) {
-                                       styler.ColourTo(i - 1, SCE_LISP_STRINGEOL);
-                                       state = SCE_LISP_STRINGEOL;
                                }
                        }
                }
 
-               chPrev = ch;
        }
        styler.ColourTo(lengthDoc - 1, state);
 }
index 3781eed83af5877c6dd18df13cdbe9a337526b07..3e4b25cb5e9acb3c600b0077ef09545673d0e900 100644 (file)
@@ -138,7 +138,7 @@ static void ColouriseLuaDoc(
                                sc.SetState(SCE_LUA_DEFAULT);
                        }
                } else if (sc.state == SCE_LUA_IDENTIFIER) {
-                       if (!IsAWordChar(sc.ch)) {
+                       if (!IsAWordChar(sc.ch) || sc.Match('.', '.')) {
                                char s[100];
                                sc.GetCurrent(s, sizeof(s));
                                if (keywords.InList(s)) {
index 1681ba5d4a6bd38c218d4ea4ad68cf1a90795d4b..f777e300fa24ec132a68137cc899bc81762a8a62 100644 (file)
@@ -330,6 +330,7 @@ static void FoldPropsDoc(unsigned int startPos, int length, int, WordList *[], A
        char chNext = styler[startPos];
        int styleNext = styler.StyleAt(startPos);
        bool headerPoint = false;
+       int lev;
 
        for (unsigned int i = startPos; i < endPos; i++) {
                char ch = chNext;
@@ -339,21 +340,32 @@ static void FoldPropsDoc(unsigned int startPos, int length, int, WordList *[], A
                styleNext = styler.StyleAt(i + 1);
                bool atEOL = (ch == '\r' && chNext != '\n') || (ch == '\n');
 
-               if (style==2) {
+               if (style == SCE_PROPS_SECTION) {
                        headerPoint = true;
                }
 
                if (atEOL) {
-                       int lev = SC_FOLDLEVELBASE+1;
-                       if (headerPoint)
-                               lev = SC_FOLDLEVELBASE;
+                       lev = SC_FOLDLEVELBASE;
+
+                       if (lineCurrent > 0) {
+                               int levelPrevious = styler.LevelAt(lineCurrent - 1);
 
+                               if (levelPrevious & SC_FOLDLEVELHEADERFLAG) {
+                                       lev = SC_FOLDLEVELBASE + 1;
+                               } else {
+                                       lev = levelPrevious & SC_FOLDLEVELNUMBERMASK;
+                               }
+                       }
+
+                       if (headerPoint) {
+                               lev = SC_FOLDLEVELBASE;
+                       }
                        if (visibleChars == 0 && foldCompact)
                                lev |= SC_FOLDLEVELWHITEFLAG;
 
-                       if (headerPoint)
+                       if (headerPoint) {
                                lev |= SC_FOLDLEVELHEADERFLAG;
-
+                       }
                        if (lev != styler.LevelAt(lineCurrent)) {
                                styler.SetLevel(lineCurrent, lev);
                        }
@@ -366,9 +378,18 @@ static void FoldPropsDoc(unsigned int startPos, int length, int, WordList *[], A
                        visibleChars++;
        }
 
-       int lev = headerPoint ? SC_FOLDLEVELBASE : SC_FOLDLEVELBASE+1;
-       int flagsNext = styler.LevelAt(lineCurrent) & ~SC_FOLDLEVELNUMBERMASK;
-       styler.SetLevel(lineCurrent, lev | flagsNext);
+       if (lineCurrent > 0) {
+               int levelPrevious = styler.LevelAt(lineCurrent - 1);
+               if (levelPrevious & SC_FOLDLEVELHEADERFLAG) {
+                       lev = SC_FOLDLEVELBASE + 1;
+               } else {
+                       lev = levelPrevious & SC_FOLDLEVELNUMBERMASK;
+               }
+       } else {
+               lev = SC_FOLDLEVELBASE;
+       }
+       int flagsNext = styler.LevelAt(lineCurrent);
+       styler.SetLevel(lineCurrent, lev | flagsNext & ~SC_FOLDLEVELNUMBERMASK);
 }
 
 static void ColouriseMakeLine(
@@ -523,6 +544,15 @@ static void ColouriseErrorListLine(
                strstr(lineBuffer, ", file ")) {
                // Essential Lahey Fortran error message
                styler.ColourTo(endPos, SCE_ERR_ELF);
+       } else if (strstart(lineBuffer, "line ") &&
+                      strstr(lineBuffer, " column ")) {
+               // HTML tidy style: line 42 column 1
+               styler.ColourTo(endPos, SCE_ERR_TIDY);
+       } else if (strstart(lineBuffer, "\tat ") &&
+               strstr(lineBuffer, "(") &&
+               strstr(lineBuffer, ".java:")) {
+               // Java stack back trace
+               styler.ColourTo(endPos, SCE_ERR_JAVA_STACK);
        } else {
                // Look for GCC <filename>:<line>:message
                // Look for Microsoft <filename>(line) :message
index 775b5587257d750d34c214e05f6e1332b6b8f0d1..7878a6bf8f0667414782da52b28dc043f70ad1fc 100644 (file)
@@ -3,10 +3,32 @@
 // Lexer for PowerBasic by Roland Walter, roland@rowalt.de (for PowerBasic see www.powerbasic.com)
 //
 // Changes:
-// 17.10.2003 Toggling of subs/functions now until next sub/function - this gives better results
-// 29.10.2003 1. Bug: Toggling didn't work for subs/functions added in editor
-//            2. Own colors for PB constants and Inline Assembler SCE_B_CONSTANT and SCE_B_ASM
-//            3. Several smaller syntax coloring improvements and speed optimizations
+// 17.10.2003: Toggling of subs/functions now until next sub/function - this gives better results
+// 29.10.2003: 1. Bug: Toggling didn't work for subs/functions added in editor
+//             2. Own colors for PB constants and Inline Assembler SCE_B_CONSTANT and SCE_B_ASM
+//             3. Several smaller syntax coloring improvements and speed optimizations
+// 12.07.2004: 1. Toggling for macros added
+//             2. Further folding speed optimitations (for people dealing with very large listings)
+//
+// Necessary changes for the PB lexer in Scintilla project:
+//  - In SciLexer.h and Scintilla.iface:
+//
+//    #define SCLEX_POWERBASIC 51       //ID for PowerBasic lexer
+//    (...)
+//    #define SCE_B_DEFAULT 0           //in both VB and PB lexer
+//    #define SCE_B_COMMENT 1           //in both VB and PB lexer
+//    #define SCE_B_NUMBER 2            //in both VB and PB lexer
+//    #define SCE_B_KEYWORD 3           //in both VB and PB lexer
+//    #define SCE_B_STRING 4            //in both VB and PB lexer
+//    #define SCE_B_PREPROCESSOR 5      //VB lexer only, not in PB lexer
+//    #define SCE_B_OPERATOR 6          //in both VB and PB lexer
+//    #define SCE_B_IDENTIFIER 7        //in both VB and PB lexer
+//    #define SCE_B_DATE 8              //VB lexer only, not in PB lexer
+//    #define SCE_B_CONSTANT 13         //PB lexer only, not in VB lexer
+//    #define SCE_B_ASM 14              //PB lexer only, not in VB lexer
+
+//  - Statement added to KeyWords.cxx:      'LINK_LEXER(lmPB);'
+//  - Statement added to scintilla_vc6.mak: '$(DIR_O)\LexPB.obj: ...\src\LexPB.cxx $(LEX_HEADERS)'
 //
 // Copyright for Scintilla: 1998-2001 by Neil Hodgson <neilh@scintilla.org>
 // The License.txt file describes the conditions under which this software may be distributed.
@@ -171,6 +193,8 @@ static void FoldPBDoc(unsigned int startPos, int length, int, WordList *[], Acce
     char chNext = styler[startPos];
 
     bool fNewLine=true;
+    bool fMightBeMultiLineMacro=false;
+    bool fBeginOfCommentFound=false;
     for (unsigned int i = startPos; i < endPos; i++)
     {
         char ch = chNext;
@@ -179,10 +203,11 @@ static void FoldPBDoc(unsigned int startPos, int length, int, WordList *[], Acce
         if (fNewLine)            //Begin of a new line (The Sub/Function/Macro keywords may occur at begin of line only)
         {
             fNewLine=false;
-
+            fBeginOfCommentFound=false;
             switch (ch)
             {
-            case ' ':      //Most lines start with space - so check this first
+            case ' ':      //Most lines start with space - so check this first, the code is the same as for 'default:'
+            case '\t':     //Handle tab too
                 {
                     int levelUse = levelCurrent;
                     int lev = levelUse | levelNext << 16;
@@ -190,37 +215,89 @@ static void FoldPBDoc(unsigned int startPos, int length, int, WordList *[], Acce
                     break;
                 }
             case 'F':
-            case 'S':
-            case 'C':
             case 'f':
+                {
+                                       switch (chNext)
+                                       {
+                    case 'U':
+                    case 'u':
+                                               {
+                                                       if( MatchUpperCase(styler,i,"FUNCTION") )
+                                                       {
+                                                               styler.SetLevel(lineCurrent, (SC_FOLDLEVELBASE << 16) | SC_FOLDLEVELHEADERFLAG);
+                                                               levelNext=SC_FOLDLEVELBASE+1;
+                                                       }
+                                                       break;
+                                               }
+                                       }
+                break;
+                }
+            case 'S':
             case 's':
+                {
+                                       switch (chNext)
+                                       {
+                    case 'U':
+                    case 'u':
+                                               {
+                                                       if( MatchUpperCase(styler,i,"SUB") )
+                                                       {
+                                                               styler.SetLevel(lineCurrent, (SC_FOLDLEVELBASE << 16) | SC_FOLDLEVELHEADERFLAG);
+                                                               levelNext=SC_FOLDLEVELBASE+1;
+                                                       }
+                                                       break;
+                                               }
+                    case 'T':
+                    case 't':
+                                               {
+                                                       if( MatchUpperCase(styler,i,"STATIC FUNCTION") )
+                                                       {
+                                                               styler.SetLevel(lineCurrent, (SC_FOLDLEVELBASE << 16) | SC_FOLDLEVELHEADERFLAG);
+                                                               levelNext=SC_FOLDLEVELBASE+1;
+                                                       }
+                                                       else if( MatchUpperCase(styler,i,"STATIC SUB") )
+                                                       {
+                                                               styler.SetLevel(lineCurrent, (SC_FOLDLEVELBASE << 16) | SC_FOLDLEVELHEADERFLAG);
+                                                               levelNext=SC_FOLDLEVELBASE+1;
+                                                       }
+                                                       break;
+                                               }
+                                       }
+                break;
+                }
+            case 'C':
             case 'c':
                 {
-                    if( MatchUpperCase(styler,i,"FUNCTION") )
-                    {
-                        styler.SetLevel(lineCurrent, (SC_FOLDLEVELBASE << 16) | SC_FOLDLEVELHEADERFLAG);
-                        levelNext=SC_FOLDLEVELBASE+1;
-                    }
-                else if( MatchUpperCase(styler,i,"SUB") )
-                    {
-                        styler.SetLevel(lineCurrent, (SC_FOLDLEVELBASE << 16) | SC_FOLDLEVELHEADERFLAG);
-                        levelNext=SC_FOLDLEVELBASE+1;
-                    }
-                else if( MatchUpperCase(styler,i,"CALLBACK FUNCTION") )
-                    {
-                        styler.SetLevel(lineCurrent, (SC_FOLDLEVELBASE << 16) | SC_FOLDLEVELHEADERFLAG);
-                        levelNext=SC_FOLDLEVELBASE+1;
-                    }
-                else if( MatchUpperCase(styler,i,"STATIC FUNCTION") )
-                    {
-                        styler.SetLevel(lineCurrent, (SC_FOLDLEVELBASE << 16) | SC_FOLDLEVELHEADERFLAG);
-                        levelNext=SC_FOLDLEVELBASE+1;
-                    }
-                else if( MatchUpperCase(styler,i,"STATIC SUB") )
-                    {
-                        styler.SetLevel(lineCurrent, (SC_FOLDLEVELBASE << 16) | SC_FOLDLEVELHEADERFLAG);
-                        levelNext=SC_FOLDLEVELBASE+1;
-                    }
+                                       switch (chNext)
+                                       {
+                    case 'A':
+                    case 'a':
+                                               {
+                                                       if( MatchUpperCase(styler,i,"CALLBACK FUNCTION") )
+                                                       {
+                                                               styler.SetLevel(lineCurrent, (SC_FOLDLEVELBASE << 16) | SC_FOLDLEVELHEADERFLAG);
+                                                               levelNext=SC_FOLDLEVELBASE+1;
+                                                       }
+                                                       break;
+                                               }
+                                       }
+                break;
+                }
+            case 'M':
+            case 'm':
+                {
+                                       switch (chNext)
+                                       {
+                    case 'A':
+                    case 'a':
+                                               {
+                                                       if( MatchUpperCase(styler,i,"MACRO") )
+                                                       {
+                                                               fMightBeMultiLineMacro=true;  //Set folder level at end of line, we have to check for single line macro
+                                                       }
+                                                       break;
+                                               }
+                                       }
                 break;
                 }
             default:
@@ -235,8 +312,25 @@ static void FoldPBDoc(unsigned int startPos, int length, int, WordList *[], Acce
 
         switch (ch)
         {
+            case '=':                              //To test single line macros
+            {
+                if (fBeginOfCommentFound==false)
+                    fMightBeMultiLineMacro=false;  //The found macro is a single line macro only;
+                break;
+            }
+            case '\'':                             //A comment starts
+            {
+                fBeginOfCommentFound=true;
+                break;
+            }
             case '\n':
             {
+                if (fMightBeMultiLineMacro)        //The current line is the begin of a multi line macro
+                {
+                    fMightBeMultiLineMacro=false;
+                    styler.SetLevel(lineCurrent, (SC_FOLDLEVELBASE << 16) | SC_FOLDLEVELHEADERFLAG);
+                    levelNext=SC_FOLDLEVELBASE+1;
+                }
                 lineCurrent++;
                 levelCurrent = levelNext;
                 fNewLine=true;
index d4d4f46fedb436e41403995919a5abf698c39725..e13c6220d9c40be7efed0ef868639367a557ea5d 100644 (file)
@@ -265,7 +265,8 @@ static void ColourisePyDoc(unsigned int startPos, int length, int initStyle,
                        } else if (IsPyStringStart(sc.ch, sc.chNext, sc.GetRelative(2))) {
                                unsigned int nextIndex = 0;
                                sc.SetState(GetPyStringState(styler, sc.currentPos, &nextIndex));
-                               while (nextIndex > (sc.currentPos + 1) && sc.More()) {                                  sc.Forward();
+                               while (nextIndex > (sc.currentPos + 1) && sc.More()) {
+                                       sc.Forward();
                                }
                        } else if (IsAWordStart(sc.ch)) {
                                sc.SetState(SCE_P_IDENTIFIER);
diff --git a/contrib/src/stc/scintilla/src/LexVHDL.cxx b/contrib/src/stc/scintilla/src/LexVHDL.cxx
new file mode 100644 (file)
index 0000000..0feef95
--- /dev/null
@@ -0,0 +1,473 @@
+// Scintilla source code edit control
+/** @file LexVHDL.cxx
+ ** Lexer for VHDL
+ ** Written by Phil Reid, 
+ ** Based on:
+ **  - The Verilog Lexer by Avi Yegudin 
+ **  - The Fortran Lexer by Chuan-jian Shen
+ **  - The C++ lexer by Neil Hodgson
+ **/
+// Copyright 1998-2002 by Neil Hodgson <neilh@scintilla.org>
+// The License.txt file describes the conditions under which this software may be distributed.
+
+#include <stdlib.h>
+#include <string.h>
+#include <ctype.h>
+#include <stdio.h>
+#include <stdarg.h>
+
+#include "Platform.h"
+
+#include "PropSet.h"
+#include "Accessor.h"
+#include "StyleContext.h"
+#include "KeyWords.h"
+#include "Scintilla.h"
+#include "SciLexer.h"
+
+static void ColouriseVHDLDoc(
+  unsigned int startPos,
+  int length,
+  int initStyle,
+  WordList *keywordlists[],
+  Accessor &styler);
+
+
+/***************************************/
+static inline bool IsAWordChar(const int ch) {
+  return (ch < 0x80) && (isalnum(ch) || ch == '.' || ch == '_' );
+}
+
+/***************************************/
+static inline bool IsAWordStart(const int ch) {
+  return (ch < 0x80) && (isalnum(ch) || ch == '_');
+}
+
+/***************************************/
+inline bool IsABlank(unsigned int ch) {
+    return (ch == ' ') || (ch == 0x09) || (ch == 0x0b) ;
+}
+
+/***************************************/
+static void ColouriseVHDLDoc(
+  unsigned int startPos,
+  int length,
+  int initStyle,
+  WordList *keywordlists[],
+  Accessor &styler)
+{
+  WordList &Keywords   = *keywordlists[0];
+  WordList &Operators  = *keywordlists[1];
+  WordList &Attributes = *keywordlists[2];
+  WordList &Functions  = *keywordlists[3];
+  WordList &Packages   = *keywordlists[4];
+  WordList &Types      = *keywordlists[5];
+  WordList &User       = *keywordlists[6];
+
+  StyleContext sc(startPos, length, initStyle, styler);
+
+  for (; sc.More(); sc.Forward())
+  {
+
+    // Determine if the current state should terminate.
+    if (sc.state == SCE_VHDL_OPERATOR) {
+      sc.SetState(SCE_VHDL_DEFAULT);
+    } else if (sc.state == SCE_VHDL_NUMBER) {
+      if (!IsAWordChar(sc.ch) && (sc.ch != '#')) {
+        sc.SetState(SCE_VHDL_DEFAULT);
+      }
+    } else if (sc.state == SCE_VHDL_IDENTIFIER) {
+      if (!IsAWordChar(sc.ch) || (sc.ch == '.')) {
+        char s[100];
+        sc.GetCurrentLowered(s, sizeof(s));
+        if (Keywords.InList(s)) {
+          sc.ChangeState(SCE_VHDL_KEYWORD);
+        } else if (Operators.InList(s)) {
+          sc.ChangeState(SCE_VHDL_STDOPERATOR);
+        } else if (Attributes.InList(s)) {
+          sc.ChangeState(SCE_VHDL_ATTRIBUTE);
+        } else if (Functions.InList(s)) {
+          sc.ChangeState(SCE_VHDL_STDFUNCTION);
+        } else if (Packages.InList(s)) {
+          sc.ChangeState(SCE_VHDL_STDPACKAGE);
+        } else if (Types.InList(s)) {
+          sc.ChangeState(SCE_VHDL_STDTYPE);
+        } else if (User.InList(s)) {
+          sc.ChangeState(SCE_VHDL_USERWORD);
+        }
+        sc.SetState(SCE_VHDL_DEFAULT);
+      }
+    } else if (sc.state == SCE_VHDL_COMMENT || sc.state == SCE_V_COMMENTLINEBANG) {
+      if (sc.atLineEnd) {
+        sc.SetState(SCE_VHDL_DEFAULT);
+      }
+    } else if (sc.state == SCE_VHDL_STRING) {
+      if (sc.ch == '\\') {
+        if (sc.chNext == '\"' || sc.chNext == '\'' || sc.chNext == '\\') {
+          sc.Forward();
+        }
+      } else if (sc.ch == '\"') {
+        sc.ForwardSetState(SCE_VHDL_DEFAULT);
+      } else if (sc.atLineEnd) {
+        sc.ChangeState(SCE_V_STRINGEOL);
+        sc.ForwardSetState(SCE_VHDL_DEFAULT);
+      }
+    }
+
+    // Determine if a new state should be entered.
+    if (sc.state == SCE_VHDL_DEFAULT) {
+      if (IsADigit(sc.ch) || (sc.ch == '.' && IsADigit(sc.chNext))) {
+        sc.SetState(SCE_VHDL_NUMBER);
+      } else if (IsAWordStart(sc.ch)) {
+        sc.SetState(SCE_VHDL_IDENTIFIER);
+      } else if (sc.Match('-', '-')) {
+        sc.SetState(SCE_VHDL_COMMENT);
+        sc.Forward(); 
+      } else if (sc.Match('-', '-')) {
+        if (sc.Match("--!"))  // Nice to have a different comment style
+          sc.SetState(SCE_VHDL_COMMENTLINEBANG);
+        else
+          sc.SetState(SCE_VHDL_COMMENT);
+      } else if (sc.ch == '\"') {
+        sc.SetState(SCE_VHDL_STRING);
+      } else if (isoperator(static_cast<char>(sc.ch))) {
+        sc.SetState(SCE_VHDL_OPERATOR);
+      }
+    }
+  }
+  sc.Complete();
+}
+//=============================================================================
+static bool IsCommentLine(int line, Accessor &styler) {
+       int pos = styler.LineStart(line);
+       int eol_pos = styler.LineStart(line + 1) - 1;
+       for (int i = pos; i < eol_pos; i++) {
+               char ch = styler[i];
+               char chNext = styler[i+1];
+               if ((ch == '-') && (chNext == '-'))
+                       return true;
+               else if (ch != ' ' && ch != '\t')
+                       return false;
+       }
+       return false;
+}
+
+//=============================================================================
+// Folding the code
+static void FoldNoBoxVHDLDoc(
+  unsigned int startPos,
+  int length,
+  int initStyle,
+  Accessor &styler)
+{
+  // Decided it would be smarter to have the lexer have all keywords included. Therefore I
+  // don't check if the style for the keywords that I use to adjust the levels.
+  char words[] =
+    "architecture begin case component else elsif end entity generate loop package process record then "
+    "procedure function when";
+  WordList keywords;
+  keywords.Set(words);
+
+  bool foldComment      = styler.GetPropertyInt("fold.comment", 1) != 0;
+  bool foldCompact      = styler.GetPropertyInt("fold.compact", 1) != 0;
+  bool foldAtElse       = styler.GetPropertyInt("fold.at.else", 1) != 0;
+  bool foldAtBegin      = styler.GetPropertyInt("fold.at.Begin", 1) != 0;
+  bool foldAtParenthese = styler.GetPropertyInt("fold.at.Parenthese", 1) != 0;
+  //bool foldAtWhen       = styler.GetPropertyInt("fold.at.When", 1) != 0;  //< fold at when in case statements
+
+  int  visibleChars     = 0;
+  unsigned int endPos   = startPos + length;
+
+  int lineCurrent       = styler.GetLine(startPos);
+  int levelCurrent      = SC_FOLDLEVELBASE;
+  if(lineCurrent > 0)
+    levelCurrent        = styler.LevelAt(lineCurrent-1) >> 16;
+  //int levelMinCurrent   = levelCurrent;
+  int levelMinCurrentElse = levelCurrent;   //< Used for folding at 'else'
+  int levelMinCurrentBegin = levelCurrent;  //< Used for folding at 'begin'
+  int levelNext         = levelCurrent;
+
+  /***************************************/
+  int lastStart         = 0;
+  char prevWord[32]     = "";
+
+  /***************************************/
+  // Find prev word
+  // The logic for going up or down a level depends on a the previous keyword
+  // This code could be cleaned up.
+  int end = 0;
+  unsigned int j;
+  for(j = startPos; j>0; j--)
+  {
+    char ch       = styler.SafeGetCharAt(j);
+    char chPrev   = styler.SafeGetCharAt(j-1);
+    int style     = styler.StyleAt(j);
+    int stylePrev = styler.StyleAt(j-1);
+    if ((stylePrev != SCE_VHDL_COMMENT) && (stylePrev != SCE_VHDL_STRING))
+    {
+      if(IsAWordChar(chPrev) && !IsAWordChar(ch))
+      {
+        end = j-1;
+      }
+    }
+    if ((style != SCE_VHDL_COMMENT) && (style != SCE_VHDL_STRING))
+    {
+      if(!IsAWordChar(chPrev) && IsAWordStart(ch) && (end != 0))
+      {
+        char s[32];
+        unsigned int k;
+        for(k=0; (k<31 ) && (k<end-j+1 ); k++) {
+          s[k] = static_cast<char>(tolower(styler[j+k]));
+        }
+        s[k] = '\0';
+
+        if(keywords.InList(s)) {
+          strcpy(prevWord, s);
+          break;
+        }
+      }
+    }
+  }
+  for(j=j+strlen(prevWord); j<endPos; j++)
+  {
+    char ch       = styler.SafeGetCharAt(j);
+    int style     = styler.StyleAt(j);
+    if ((style != SCE_VHDL_COMMENT) && (style != SCE_VHDL_STRING))
+    {
+      if((ch == ';') && (strcmp(prevWord, "end") == 0))
+      {
+        strcpy(prevWord, ";");
+      }
+    }
+  }
+
+  char  chNext          = styler[startPos];
+  char  chPrev          = '\0';
+  char  chNextNonBlank;
+  int   styleNext       = styler.StyleAt(startPos);
+  int   style           = initStyle;
+  //Platform::DebugPrintf("Line[%04d] Prev[%20s] ************************* Level[%x]\n", lineCurrent+1, prevWord, levelCurrent);
+
+  /***************************************/
+  for (unsigned int i = startPos; i < endPos; i++)
+  {
+    char ch         = chNext;
+    chNext          = styler.SafeGetCharAt(i + 1);
+    chPrev          = styler.SafeGetCharAt(i - 1);
+    chNextNonBlank  = chNext;
+    unsigned int j  = i+1;
+    while(IsABlank(chNextNonBlank) && j<endPos)
+    {
+      j ++ ;
+      chNextNonBlank = styler.SafeGetCharAt(j);
+    }
+    style           = styleNext;
+    styleNext       = styler.StyleAt(i + 1);
+    bool atEOL      = (ch == '\r' && chNext != '\n') || (ch == '\n');
+
+               if (foldComment && atEOL && IsCommentLine(lineCurrent, styler)) 
+    {
+      if(!IsCommentLine(lineCurrent-1, styler) && IsCommentLine(lineCurrent+1, styler))
+      {
+        levelNext++;
+      } 
+      else if(IsCommentLine(lineCurrent-1, styler) && !IsCommentLine(lineCurrent+1, styler))
+      {
+        levelNext--;
+      }
+    }
+
+    if ((style == SCE_VHDL_OPERATOR) && foldAtParenthese)
+    {
+      if(ch == '(') {
+        levelNext++;
+      } else if (ch == ')') {
+        levelNext--;
+      }
+    }
+
+    if ((style != SCE_VHDL_COMMENT) && (style != SCE_VHDL_STRING))
+    {
+      if((ch == ';') && (strcmp(prevWord, "end") == 0))
+      {
+        strcpy(prevWord, ";");
+      }
+
+      if(!IsAWordChar(chPrev) && IsAWordStart(ch))
+      {
+        lastStart = i;
+      }
+
+      if(iswordchar(ch) && !iswordchar(chNext)) {
+        char s[32];
+        unsigned int k;
+        for(k=0; (k<31 ) && (k<i-lastStart+1 ); k++) {
+          s[k] = static_cast<char>(tolower(styler[lastStart+k]));
+        }
+        s[k] = '\0';
+
+        if(keywords.InList(s))
+        {
+          if (
+            strcmp(s, "architecture") == 0  ||
+            strcmp(s, "case") == 0          ||
+            strcmp(s, "component") == 0     ||
+            strcmp(s, "entity") == 0        ||
+            strcmp(s, "generate") == 0      ||
+            strcmp(s, "loop") == 0          ||
+            strcmp(s, "package") ==0        ||
+            strcmp(s, "process") == 0       ||
+            strcmp(s, "record") == 0        ||
+            strcmp(s, "then") == 0)
+          {
+            if (strcmp(prevWord, "end") != 0)
+            {
+              if (levelMinCurrentElse > levelNext) {
+                levelMinCurrentElse = levelNext;
+              }
+              levelNext++;
+            }
+          } else if (
+            strcmp(s, "procedure") == 0     ||
+            strcmp(s, "function") == 0)
+          {
+            if (strcmp(prevWord, "end") != 0) // check for "end procedure" etc.
+            { // This code checks to see if the procedure / function is a definition within a "package"
+              // rather than the actual code in the body.
+              int BracketLevel = 0;
+              for(int j=i+1; j<styler.Length(); j++)
+              {
+                int LocalStyle = styler.StyleAt(j);
+                char LocalCh = styler.SafeGetCharAt(j);
+                if(LocalCh == '(') BracketLevel++;
+                if(LocalCh == ')') BracketLevel--;
+                if(
+                  (BracketLevel == 0) &&
+                  (LocalStyle != SCE_VHDL_COMMENT) &&
+                  (LocalStyle != SCE_VHDL_STRING) &&
+                  !iswordchar(styler.SafeGetCharAt(j-1)) &&
+                  styler.Match(j, "is") &&
+                  !iswordchar(styler.SafeGetCharAt(j+2)))
+                {
+                  if (levelMinCurrentElse > levelNext) {
+                    levelMinCurrentElse = levelNext;
+                  }
+                  levelNext++;
+                  break;
+                }
+                if((BracketLevel == 0) && (LocalCh == ';'))
+                {
+                  break;
+                }
+              }
+            }
+
+          } else if (strcmp(s, "end") == 0) {
+            levelNext--;
+          }  else if(strcmp(s, "elsif") == 0) { // elsif is followed by then so folding occurs correctly
+            levelNext--;
+          } else if (strcmp(s, "else") == 0) {
+            if(strcmp(prevWord, "when") != 0)  // ignore a <= x when y else z;
+            {
+              levelMinCurrentElse = levelNext - 1;  // VHDL else is all on its own so just dec. the min level
+            }
+          } else if(
+            ((strcmp(s, "begin") == 0) && (strcmp(prevWord, "architecture") == 0)) ||
+            ((strcmp(s, "begin") == 0) && (strcmp(prevWord, "function") == 0)) ||
+            ((strcmp(s, "begin") == 0) && (strcmp(prevWord, "procedure") == 0)))
+          {
+            levelMinCurrentBegin = levelNext - 1;  
+          }
+          //Platform::DebugPrintf("Line[%04d] Prev[%20s] Cur[%20s] Level[%x]\n", lineCurrent+1, prevWord, s, levelCurrent);
+          strcpy(prevWord, s);
+        }
+      }
+    }
+    if (atEOL) {
+      int levelUse = levelCurrent;
+
+      if (foldAtElse && (levelMinCurrentElse < levelUse)) {
+        levelUse = levelMinCurrentElse;
+      }
+      if (foldAtBegin && (levelMinCurrentBegin < levelUse)) {
+        levelUse = levelMinCurrentBegin;
+      }
+      int lev = levelUse | levelNext << 16;
+      if (visibleChars == 0 && foldCompact)
+        lev |= SC_FOLDLEVELWHITEFLAG;
+
+      if (levelUse < levelNext)
+        lev |= SC_FOLDLEVELHEADERFLAG;
+      if (lev != styler.LevelAt(lineCurrent)) {
+        styler.SetLevel(lineCurrent, lev);
+      }
+      //Platform::DebugPrintf("Line[%04d] ---------------------------------------------------- Level[%x]\n", lineCurrent+1, levelCurrent);
+      lineCurrent++;
+      levelCurrent = levelNext;
+      //levelMinCurrent = levelCurrent;
+      levelMinCurrentElse = levelCurrent;
+      levelMinCurrentBegin = levelCurrent;
+      visibleChars = 0;
+    }
+    /***************************************/
+    if (!isspacechar(ch)) visibleChars++;
+  }
+
+  /***************************************/
+//  Platform::DebugPrintf("Line[%04d] ---------------------------------------------------- Level[%x]\n", lineCurrent+1, levelCurrent);
+}
+
+//=============================================================================
+static void FoldVHDLDoc(unsigned int startPos, int length, int initStyle, WordList *[],
+                       Accessor &styler) {
+  FoldNoBoxVHDLDoc(startPos, length, initStyle, styler);
+}
+
+//=============================================================================
+static const char * const VHDLWordLists[] = {
+            "Keywords",
+            "Operators",
+            "Attributes",
+            "Standard Functions",
+            "Standard Packages",
+            "Standard Types",
+            "User Words",
+            0,
+        };
+
+
+LexerModule lmVHDL(SCLEX_VHDL, ColouriseVHDLDoc, "vhdl", FoldVHDLDoc, VHDLWordLists);
+
+
+// Keyword:
+//    access after alias all architecture array assert attribute begin block body buffer bus case component 
+//    configuration constant disconnect downto else elsif end entity exit file for function generate generic 
+//    group guarded if impure in inertial inout is label library linkage literal loop map new next null of 
+//    on open others out package port postponed procedure process pure range record register reject report 
+//    return select severity shared signal subtype then to transport type unaffected units until use variable 
+//    wait when while with
+//
+// Operators:
+//    abs and mod nand nor not or rem rol ror sla sll sra srl xnor xor
+//
+// Attributes:
+//    left right low high ascending image value pos val succ pred leftof rightof base range reverse_range 
+//    length delayed stable quiet transaction event active last_event last_active last_value driving 
+//    driving_value simple_name path_name instance_name
+//
+// Std Functions:
+//    now readline read writeline write endfile resolved to_bit to_bitvector to_stdulogic to_stdlogicvector 
+//    to_stdulogicvector to_x01 to_x01z to_UX01 rising_edge falling_edge is_x shift_left shift_right rotate_left 
+//    rotate_right resize to_integer to_unsigned to_signed std_match to_01
+//
+// Std Packages:
+//    std ieee work standard textio std_logic_1164 std_logic_arith std_logic_misc std_logic_signed 
+//    std_logic_textio std_logic_unsigned numeric_bit numeric_std math_complex math_real vital_primitives 
+//    vital_timing
+//
+// Std Types:
+//    boolean bit character severity_level integer real time delay_length natural positive string bit_vector 
+//    file_open_kind file_open_status line text side width std_ulogic std_ulogic_vector std_logic 
+//    std_logic_vector X01 X01Z UX01 UX01Z unsigned signed
+//
+
index d0a7f8b0f7f1c8ff6b69637e9a7d2aa7466d3b1f..1e9920d79c5a0400ef2f71d65f2c5acd99dcd182 100644 (file)
@@ -124,7 +124,7 @@ SString &SString::assign(const char *sOther, lenpos_t sSize_) {
                s = StringAllocate(sOther, sSize_);
                if (s) {
                        sSize = sSize_; // Allow buffer bigger than real string, thus providing space to grow
-                       sLen = strlen(s);
+                       sLen = sSize_;
                } else {
                        sSize = sLen = 0;
                }
@@ -383,6 +383,33 @@ void PropSet::Set(const char *keyVal) {
        }
 }
 
+void PropSet::Unset(const char *key, int lenKey) {
+       if (!*key)      // Empty keys are not supported
+               return;
+       if (lenKey == -1)
+               lenKey = static_cast<int>(strlen(key));
+       unsigned int hash = HashString(key, lenKey);
+       Property *pPrev = NULL;
+       for (Property *p = props[hash % hashRoots]; p; p = p->next) {
+               if ((hash == p->hash) &&
+                       ((strlen(p->key) == static_cast<unsigned int>(lenKey)) &&
+                               (0 == strncmp(p->key, key, lenKey)))) {
+                       if (pPrev)
+                               pPrev->next = p->next;
+                       else
+                               props[hash % hashRoots] = p->next;
+                       if (p == enumnext)
+                               enumnext = p->next; // Not that anyone should mix enum and Set / Unset.
+                       delete [](p->key);
+                       delete [](p->val);
+                       delete p;
+                       return;
+               } else {
+                       pPrev = p;
+               }
+       }
+}
+
 void PropSet::SetMultiple(const char *s) {
        const char *eol = strchr(s, '\n');
        while (eol) {
@@ -422,39 +449,71 @@ bool PropSet::IncludesVar(const char *value, const char *key) {
        return false;
 }
 
+
+// There is some inconsistency between GetExpanded("foo") and Expand("$(foo)").
+// A solution is to keep a stack of variables that have been expanded, so that
+// recursive expansions can be skipped.  For now I'll just use the C++ stack
+// for that, through a recursive function and a simple chain of pointers.
+
+struct VarChain {
+       VarChain(const char*var_=NULL, const VarChain *link_=NULL): var(var_), link(link_) {}
+
+       bool contains(const char *testVar) const {
+               return (var && (0 == strcmp(var, testVar))) 
+                       || (link && link->contains(testVar));
+       }
+
+       const char *var;
+       const VarChain *link;
+};
+
+static int ExpandAllInPlace(PropSet &props, SString &withVars, int maxExpands, const VarChain &blankVars = VarChain()) {
+       int varStart = withVars.search("$(");
+       while ((varStart >= 0) && (maxExpands > 0)) {
+               int varEnd = withVars.search(")", varStart+2);
+               if (varEnd < 0) {
+                       break;
+               }
+
+               // For consistency, when we see '$(ab$(cde))', expand the inner variable first,
+               // regardless whether there is actually a degenerate variable named 'ab$(cde'.
+               int innerVarStart = withVars.search("$(", varStart+2);
+               while ((innerVarStart > varStart) && (innerVarStart < varEnd)) {
+                       varStart = innerVarStart;
+                       innerVarStart = withVars.search("$(", varStart+2);
+               }
+
+               SString var(withVars.c_str(), varStart + 2, varEnd);
+               SString val = props.Get(var.c_str());
+
+               if (blankVars.contains(var.c_str())) {
+                       val.clear(); // treat blankVar as an empty string (e.g. to block self-reference)
+               }
+
+               if (--maxExpands >= 0) {
+                       maxExpands = ExpandAllInPlace(props, val, maxExpands, VarChain(var.c_str(), &blankVars));
+               }
+
+               withVars.remove(varStart, varEnd-varStart+1);
+               withVars.insert(varStart, val.c_str(), val.length());
+
+               varStart = withVars.search("$(");
+       }
+
+       return maxExpands;
+}
+
+
 SString PropSet::GetExpanded(const char *key) {
        SString val = Get(key);
-       if (IncludesVar(val.c_str(), key))
-               return val;
-       return Expand(val.c_str());
+       ExpandAllInPlace(*this, val, 100, VarChain(key));
+       return val;
 }
 
 SString PropSet::Expand(const char *withVars, int maxExpands) {
-       char *base = StringDup(withVars);
-       char *cpvar = strstr(base, "$(");
-       while (cpvar && (maxExpands > 0)) {
-               char *cpendvar = strchr(cpvar, ')');
-               if (!cpendvar)
-                       break;
-               int lenvar = cpendvar - cpvar - 2;      // Subtract the $()
-               char *var = StringDup(cpvar + 2, lenvar);
-               SString val = Get(var);
-               if (IncludesVar(val.c_str(), var))
-                       break;
-               size_t newlenbase = strlen(base) + val.length() - lenvar;
-               char *newbase = new char[newlenbase];
-               strncpy(newbase, base, cpvar - base);
-               strcpy(newbase + (cpvar - base), val.c_str());
-               strcpy(newbase + (cpvar - base) + val.length(), cpendvar + 1);
-               delete []var;
-               delete []base;
-               base = newbase;
-               cpvar = strstr(base, "$(");
-               maxExpands--;
-       }
-       SString sret = base;
-       delete []base;
-       return sret;
+       SString val = withVars;
+       ExpandAllInPlace(*this, val, maxExpands);
+       return val;
 }
 
 int PropSet::GetInt(const char *key, int defaultValue) {
@@ -549,6 +608,8 @@ SString PropSet::GetWild(const char *keybase, const char *filename) {
        }
 }
 
+
+
 // GetNewExpand does not use Expand as it has to use GetWild with the filename for each
 // variable reference found.
 SString PropSet::GetNewExpand(const char *keybase, const char *filename) {
@@ -561,6 +622,8 @@ SString PropSet::GetNewExpand(const char *keybase, const char *filename) {
                        int lenvar = cpendvar - cpvar - 2;      // Subtract the $()
                        char *var = StringDup(cpvar + 2, lenvar);
                        SString val = GetWild(var, filename);
+                       if (0 == strcmp(var, keybase))
+                               val.clear(); // Self-references evaluate to empty string
                        size_t newlenbase = strlen(base) + val.length() - lenvar;
                        char *newbase = new char[newlenbase];
                        strncpy(newbase, base, cpvar - base);
@@ -820,7 +883,7 @@ bool WordList::InList(const char *s) {
  * The length of the word to compare is passed too.
  * Letter case can be ignored or preserved (default).
  */
-const char *WordList::GetNearestWord(const char *wordStart, int searchLen /*= -1*/, bool ignoreCase /*= false*/, SString wordCharacters /*='/0' */, int wordIndex /*= -1 */) {
+const char *WordList::GetNearestWord(const char *wordStart, int searchLen, bool ignoreCase /*= false*/, SString wordCharacters /*='/0' */, int wordIndex /*= -1 */) {
        int start = 0; // lower bound of the api array block to search
        int end = len - 1; // upper bound of the api array block to search
        int pivot; // index of api array element just being compared
@@ -838,36 +901,32 @@ const char *WordList::GetNearestWord(const char *wordStart, int searchLen /*= -1
                        pivot = (start + end) >> 1;
                        word = wordsNoCase[pivot];
                        cond = CompareNCaseInsensitive(wordStart, word, searchLen);
-                       if (!cond && (!wordCharacters.contains(word[searchLen]))) {
-                               // Found a word in a binary fashion. Now checks if a specific index was requested
-                               if (wordIndex < 0)
-                                       return word; // result must not be freed with free()
-
+                       if (!cond) {
+                               // find first word
+                               start = pivot;
+                               while (start > 0 && !CompareNCaseInsensitive(wordStart, wordsNoCase[start-1], searchLen)) {
+                                       start--;
+                               }
+                               // find last word
+                               end = pivot;
+                               while (end < len-1 && !CompareNCaseInsensitive(wordStart, wordsNoCase[end+1], searchLen)) {
+                                       end++;
+                               }
+                               
                                // Finds first word in a series of equal words
-                               int first = pivot;
-                               end = pivot - 1;
-                               while (start <= end) {
-                                       pivot = (start + end) >> 1;
+                               for (pivot = start; pivot <= end; pivot++) {
                                        word = wordsNoCase[pivot];
-                                       cond = CompareNCaseInsensitive(wordStart, word, searchLen);
-                                       if (!cond && (!wordCharacters.contains(word[searchLen]))) {
-                                               // Found another word
-                                               first = pivot;
-                                               end = pivot - 1;
+                                       if (!wordCharacters.contains(word[searchLen])) {
+                                               if (wordIndex <= 0) // Checks if a specific index was requested
+                                                       return word; // result must not be freed with free()
+                                               wordIndex--;
                                        }
-                                       else if (cond > 0)
-                                               start = pivot + 1;
-                                       else if (cond <= 0)
-                                               break;
                                }
-
-                               // Gets the word at the requested index
-                               word = wordsNoCase[first + wordIndex];
-                               return word;
+                               return NULL;
                        }
                        else if (cond > 0)
                                start = pivot + 1;
-                       else if (cond <= 0)
+                       else if (cond < 0)
                                end = pivot - 1;
                }
        } else { // preserve the letter case
@@ -875,36 +934,34 @@ const char *WordList::GetNearestWord(const char *wordStart, int searchLen /*= -1
                        pivot = (start + end) >> 1;
                        word = words[pivot];
                        cond = strncmp(wordStart, word, searchLen);
-                       if (!cond && (!wordCharacters.contains(word[searchLen]))) {
-                               // Found a word in a binary fashion. Now checks if a specific index was requested
-                               if (wordIndex < 0)
-                                       return word; // result must not be freed with free()
-
+                       if (!cond) {
+                               // find first word
+                               start = pivot;
+                               while (start > 0 && !strncmp(wordStart, words[start-1], searchLen)) {
+                                       start--;
+                               }
+                               // find last word
+                               end = pivot;
+                               while (end < len-1 && !strncmp(wordStart, words[end+1], searchLen)) {
+                                       end++;
+                               }
+                               
                                // Finds first word in a series of equal words
-                               int first = pivot;
-                               end = pivot - 1;
-                               while (start <= end) {
-                                       pivot = (start + end) >> 1;
+                               pivot = start;
+                               while (pivot <= end) {
                                        word = words[pivot];
-                                       cond = strncmp(wordStart, word, searchLen);
-                                       if (!cond && (!wordCharacters.contains(word[searchLen]))) {
-                                               // Found another word
-                                               first = pivot;
-                                               end = pivot - 1;
+                                       if (!wordCharacters.contains(word[searchLen])) {
+                                               if (wordIndex <= 0) // Checks if a specific index was requested
+                                                       return word; // result must not be freed with free()
+                                               wordIndex--;
                                        }
-                                       else if (cond > 0)
-                                               start = pivot + 1;
-                                       else if (cond <= 0)
-                                               break;
+                                       pivot++;
                                }
-
-                               // Gets the word at the requested index
-                               word = words[first + wordIndex];
-                               return word;
+                               return NULL;
                        }
                        else if (cond > 0)
                                start = pivot + 1;
-                       else if (cond <= 0)
+                       else if (cond < 0)
                                end = pivot - 1;
                }
        }
@@ -913,15 +970,13 @@ const char *WordList::GetNearestWord(const char *wordStart, int searchLen /*= -1
 
 /**
  * Find the length of a 'word' which is actually an identifier in a string
- * which looks like "identifier(..." or "identifier:" or "identifier" and where
+ * which looks like "identifier(..." or "identifier" and where
  * there may be extra spaces after the identifier that should not be
  * counted in the length.
  */
 static unsigned int LengthWord(const char *word, char otherSeparator) {
-       // Find a '(', or ':'. If that fails go to the end of the string.
+       // Find a '('. If that fails go to the end of the string.
        const char *endWord = strchr(word, '(');
-       if (!endWord)
-               endWord = strchr(word, ':');
        if (!endWord && otherSeparator)
                endWord = strchr(word, otherSeparator);
        if (!endWord)
@@ -930,7 +985,7 @@ static unsigned int LengthWord(const char *word, char otherSeparator) {
 
        // Drop any space characters.
        if (endWord > word) {
-               endWord--;      // Back from the '(', ':', or '\0'
+               endWord--;      // Back from the '(', otherSeparator, or '\0'
                // Move backwards over any spaces
                while ((endWord > word) && (IsASpace(*endWord))) {
                        endWord--;
@@ -951,7 +1006,7 @@ static unsigned int LengthWord(const char *word, char otherSeparator) {
  */
 char *WordList::GetNearestWords(
     const char *wordStart,
-    int searchLen /*= -1*/,
+    int searchLen,
     bool ignoreCase /*= false*/,
     char otherSeparator /*= '\0'*/,
     bool exactLen /*=false*/) {
@@ -985,10 +1040,10 @@ char *WordList::GetNearestWords(
                                        (0 == CompareNCaseInsensitive(wordStart,
                                                wordsNoCase[pivot], searchLen))) {
                                        wordlen = LengthWord(wordsNoCase[pivot], otherSeparator) + 1;
-                                       if (exactLen && wordlen != LengthWord(wordStart, otherSeparator) + 1)
-                                               break;
-                                       wordsNear.append(wordsNoCase[pivot], wordlen, ' ');
                                        ++pivot;
+                                       if (exactLen && wordlen != LengthWord(wordStart, otherSeparator) + 1)
+                                               continue;
+                                       wordsNear.append(wordsNoCase[pivot-1], wordlen, ' ');
                                }
                                return wordsNear.detach();
                        } else if (cond < 0) {
@@ -1013,10 +1068,10 @@ char *WordList::GetNearestWords(
                                        (0 == strncmp(wordStart,
                                                words[pivot], searchLen))) {
                                        wordlen = LengthWord(words[pivot], otherSeparator) + 1;
-                                       if (exactLen && wordlen != LengthWord(wordStart, otherSeparator) + 1)
-                                               break;
-                                       wordsNear.append(words[pivot], wordlen, ' ');
                                        ++pivot;
+                                       if (exactLen && wordlen != LengthWord(wordStart, otherSeparator) + 1)
+                                               continue;
+                                       wordsNear.append(words[pivot-1], wordlen, ' ');
                                }
                                return wordsNear.detach();
                        } else if (cond < 0) {
index cc02674b355995c6284b3b19579930c449420039..1d3867b7fe1510660dbfd4fa9a985f7ffc0202fa 100644 (file)
@@ -280,9 +280,9 @@ void ScintillaBase::AutoCompleteMoveToCurrentWord() {
        char wordCurrent[1000];
        int i;
        int startWord = ac.posStart - ac.startLen;
-       for (i = startWord; i < currentPos; i++)
+       for (i = startWord; i < currentPos && i - startWord < 1000; i++)
                wordCurrent[i - startWord] = pdoc->CharAt(i);
-       wordCurrent[i - startWord] = '\0';
+       wordCurrent[Platform::Minimum(i - startWord, 999)] = '\0';
        ac.Select(wordCurrent);
 }
 
@@ -357,11 +357,12 @@ void ScintillaBase::CallTipShow(Point pt, const char *defn) {
        AutoCompleteCancel();
        pt.y += vs.lineHeight;
        PRectangle rc = ct.CallTipStart(currentPos, pt,
-                                                                       defn,
-                                                                       vs.styles[STYLE_DEFAULT].fontName,
-                                                                       vs.styles[STYLE_DEFAULT].sizeZoomed,
-                                                                       IsUnicodeMode(),
-                                                                       wMain);
+               defn,
+               vs.styles[STYLE_DEFAULT].fontName,
+               vs.styles[STYLE_DEFAULT].sizeZoomed,
+               CodePage(),
+               vs.styles[STYLE_DEFAULT].characterSet,
+               wMain);
        // If the call-tip window would be out of the client
        // space, adjust so it displays above the text.
        PRectangle rcClient = GetClientRectangle();
index 15cad6382969fb8070ac312b40547de47f3949bd..363db90f4528c5bfe3abda127f5e063b369d389f 100644 (file)
@@ -16,7 +16,7 @@ unsigned int UTF8Length(const wchar_t *uptr, unsigned int tlen) {
                if (uch < 0x80)
                        len++;
                else if (uch < 0x800)
-                       len+=2;
+                       len += 2;
                else
                        len +=3;
        }
index b3b3cd2765934fc9eee85b8337c6c9b373f1dd6f..f534906177dad0be62b4d5de0003ff3049f25474 100644 (file)
@@ -2408,6 +2408,12 @@ void wxStyledTextCtrl::Allocate(int bytes) {
     SendMsg(2446, bytes, 0);
 }
 
+// Find the position of a column on a line taking into account tabs and 
+// multi-byte characters. If beyond end of line, return line end position.
+int wxStyledTextCtrl::FindColumn(int line, int column) {
+    return SendMsg(2456, line, column);
+}
+
 // Start notifying the container of all key presses and commands.
 void wxStyledTextCtrl::StartRecord() {
     SendMsg(3001, 0, 0);
index 10519a61b70eae7cb25c17ed67b261c44da3d3af..b636753aa5267ae976e36852319e74db7b6a5068 100644 (file)
 #define wxSTC_LEX_AU3 60
 #define wxSTC_LEX_APDL 61
 #define wxSTC_LEX_BASH 62
+#define wxSTC_LEX_ASN1 63
+#define wxSTC_LEX_VHDL 64
 
 // When a lexer specifies its language as SCLEX_AUTOMATIC it receives a
 // value assigned in sequence from SCLEX_AUTOMATIC+1.
 #define wxSTC_ERR_IFORT 17
 #define wxSTC_ERR_ABSF 18
 #define wxSTC_ERR_TIDY 19
+#define wxSTC_ERR_JAVA_STACK 20
 
 // Lexical states for SCLEX_BATCH
 #define wxSTC_BAT_DEFAULT 0
 #define wxSTC_CSS_DIRECTIVE 12
 #define wxSTC_CSS_DOUBLESTRING 13
 #define wxSTC_CSS_SINGLESTRING 14
+#define wxSTC_CSS_IDENTIFIER2 15
 
 // Lexical states for SCLEX_POV
 #define wxSTC_POV_DEFAULT 0
 #define wxSTC_AU3_VARIABLE 9
 #define wxSTC_AU3_SENT 10
 #define wxSTC_AU3_PREPROCESSOR 11
+#define wxSTC_AU3_SPECIAL 12
 
 // Lexical states for SCLEX_APDL
 #define wxSTC_APDL_DEFAULT 0
 #define wxSTC_APDL_COMMENTBLOCK 2
 #define wxSTC_APDL_NUMBER 3
 #define wxSTC_APDL_STRING 4
-#define wxSTC_APDL_WORD 5
-#define wxSTC_APDL_COMMAND 6
+#define wxSTC_APDL_OPERATOR 5
+#define wxSTC_APDL_WORD 6
 #define wxSTC_APDL_PROCESSOR 7
-#define wxSTC_APDL_FUNCTION 8
+#define wxSTC_APDL_COMMAND 8
+#define wxSTC_APDL_SLASHCOMMAND 9
+#define wxSTC_APDL_STARCOMMAND 10
+#define wxSTC_APDL_ARGUMENT 11
+#define wxSTC_APDL_FUNCTION 12
 
 // Lexical states for SCLEX_BASH
 #define wxSTC_SH_DEFAULT 0
 #define wxSTC_SH_HERE_DELIM 12
 #define wxSTC_SH_HERE_Q 13
 
+// Lexical states for SCLEX_ASN1
+#define wxSTC_ASN1_DEFAULT 0
+#define wxSTC_ASN1_COMMENT 1
+#define wxSTC_ASN1_IDENTIFIER 2
+#define wxSTC_ASN1_STRING 3
+#define wxSTC_ASN1_OID 4
+#define wxSTC_ASN1_SCALAR 5
+#define wxSTC_ASN1_KEYWORD 6
+#define wxSTC_ASN1_ATTRIBUTE 7
+#define wxSTC_ASN1_DESCRIPTOR 8
+#define wxSTC_ASN1_TYPE 9
+#define wxSTC_ASN1_OPERATOR 10
+
+// Lexical states for SCLEX_VHDL
+#define wxSTC_VHDL_DEFAULT 0
+#define wxSTC_VHDL_COMMENT 1
+#define wxSTC_VHDL_COMMENTLINEBANG 2
+#define wxSTC_VHDL_NUMBER 3
+#define wxSTC_VHDL_STRING 4
+#define wxSTC_VHDL_OPERATOR 5
+#define wxSTC_VHDL_IDENTIFIER 6
+#define wxSTC_VHDL_STRINGEOL 7
+#define wxSTC_VHDL_KEYWORD 8
+#define wxSTC_VHDL_STDOPERATOR 9
+#define wxSTC_VHDL_ATTRIBUTE 10
+#define wxSTC_VHDL_STDFUNCTION 11
+#define wxSTC_VHDL_STDPACKAGE 12
+#define wxSTC_VHDL_STDTYPE 13
+#define wxSTC_VHDL_USERWORD 14
+
 
 //-----------------------------------------
 // Commands that can be bound to keystrokes
@@ -2737,6 +2776,10 @@ public:
     // Enlarge the document to a particular size of text bytes.
     void Allocate(int bytes);
 
+    // Find the position of a column on a line taking into account tabs and 
+    // multi-byte characters. If beyond end of line, return line end position.
+    int FindColumn(int line, int column);
+
     // Start notifying the container of all key presses and commands.
     void StartRecord();
 
index 77751156071d72bec2ea565054aea9e7e9f11947..385a300f1211e48dac3a99969651c88ec5b55e66 100644 (file)
@@ -1,6 +1,6 @@
 # =========================================================================
 #     This makefile was generated by
-#     Bakefile 0.1.4 (http://bakefile.sourceforge.net)
+#     Bakefile 0.1.6 (http://bakefile.sourceforge.net)
 #     Do not modify, all changes will be overwritten!
 # =========================================================================
 
@@ -49,8 +49,8 @@ HOST_SUFFIX = @HOST_SUFFIX@
 DESTDIR = 
 WX_RELEASE = 2.5
 WX_RELEASE_NODOT = 25
-WX_VERSION = $(WX_RELEASE).3
-WX_VERSION_NODOT = $(WX_RELEASE_NODOT)3
+WX_VERSION = $(WX_RELEASE).4
+WX_VERSION_NODOT = $(WX_RELEASE_NODOT)4
 LIBDIRNAME = $(top_builddir)lib
 STCDLL_CXXFLAGS = -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \
        -I$(srcdir)/../../include -I$(srcdir)/scintilla/include \
@@ -64,8 +64,8 @@ STCDLL_OBJECTS =  \
        stcdll_CallTip.o \
        stcdll_CellBuffer.o \
        stcdll_ContractionState.o \
-       stcdll_DocumentAccessor.o \
        stcdll_Document.o \
+       stcdll_DocumentAccessor.o \
        stcdll_Editor.o \
        stcdll_ExternalLexer.o \
        stcdll_Indicator.o \
@@ -76,6 +76,7 @@ STCDLL_OBJECTS =  \
        stcdll_LexAVE.o \
        stcdll_LexAda.o \
        stcdll_LexAsm.o \
+       stcdll_LexAsn1.o \
        stcdll_LexBaan.o \
        stcdll_LexBash.o \
        stcdll_LexBullant.o \
@@ -114,14 +115,15 @@ STCDLL_OBJECTS =  \
        stcdll_LexSpecman.o \
        stcdll_LexTeX.o \
        stcdll_LexVB.o \
+       stcdll_LexVHDL.o \
        stcdll_LexVerilog.o \
        stcdll_LexYAML.o \
        stcdll_LineMarker.o \
        stcdll_PropSet.o \
        stcdll_RESearch.o \
        stcdll_ScintillaBase.o \
-       stcdll_StyleContext.o \
        stcdll_Style.o \
+       stcdll_StyleContext.o \
        stcdll_UniConversion.o \
        stcdll_ViewStyle.o \
        stcdll_WindowAccessor.o \
@@ -138,8 +140,8 @@ STCLIB_OBJECTS =  \
        stclib_CallTip.o \
        stclib_CellBuffer.o \
        stclib_ContractionState.o \
-       stclib_DocumentAccessor.o \
        stclib_Document.o \
+       stclib_DocumentAccessor.o \
        stclib_Editor.o \
        stclib_ExternalLexer.o \
        stclib_Indicator.o \
@@ -150,6 +152,7 @@ STCLIB_OBJECTS =  \
        stclib_LexAVE.o \
        stclib_LexAda.o \
        stclib_LexAsm.o \
+       stclib_LexAsn1.o \
        stclib_LexBaan.o \
        stclib_LexBash.o \
        stclib_LexBullant.o \
@@ -188,14 +191,15 @@ STCLIB_OBJECTS =  \
        stclib_LexSpecman.o \
        stclib_LexTeX.o \
        stclib_LexVB.o \
+       stclib_LexVHDL.o \
        stclib_LexVerilog.o \
        stclib_LexYAML.o \
        stclib_LineMarker.o \
        stclib_PropSet.o \
        stclib_RESearch.o \
        stclib_ScintillaBase.o \
-       stclib_StyleContext.o \
        stclib_Style.o \
+       stclib_StyleContext.o \
        stclib_UniConversion.o \
        stclib_ViewStyle.o \
        stclib_WindowAccessor.o \
@@ -238,14 +242,14 @@ COND_PLATFORM_WIN32_1___stcdll___importlib = \
        -Wl,--out-implib,$(LIBDIRNAME)/$(LIBPREFIX)wx_$(PORTNAME)$(WXUNIVNAME)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_stc-$(WX_RELEASE)$(HOST_SUFFIX).$(DLLIMP_SUFFIX)
 @COND_PLATFORM_WIN32_1@__stcdll___importlib = $(COND_PLATFORM_WIN32_1___stcdll___importlib)
 @COND_PLATFORM_MACOSX_0_USE_SOVERSION_1@__stcdll___targetsuf2 \
-@COND_PLATFORM_MACOSX_0_USE_SOVERSION_1@       = .$(SO_SUFFIX).3
+@COND_PLATFORM_MACOSX_0_USE_SOVERSION_1@       = .$(SO_SUFFIX).4
 @COND_PLATFORM_MACOSX_1_USE_SOVERSION_1@__stcdll___targetsuf2 \
-@COND_PLATFORM_MACOSX_1_USE_SOVERSION_1@       = .3.$(SO_SUFFIX)
+@COND_PLATFORM_MACOSX_1_USE_SOVERSION_1@       = .4.$(SO_SUFFIX)
 @COND_USE_SOVERSION_0@__stcdll___targetsuf2 = .$(SO_SUFFIX)
 @COND_PLATFORM_MACOSX_0_USE_SOVERSION_1@__stcdll___targetsuf3 \
-@COND_PLATFORM_MACOSX_0_USE_SOVERSION_1@       = .$(SO_SUFFIX).3.0.0
+@COND_PLATFORM_MACOSX_0_USE_SOVERSION_1@       = .$(SO_SUFFIX).4.0.0
 @COND_PLATFORM_MACOSX_1_USE_SOVERSION_1@__stcdll___targetsuf3 \
-@COND_PLATFORM_MACOSX_1_USE_SOVERSION_1@       = .3.0.0.$(SO_SUFFIX)
+@COND_PLATFORM_MACOSX_1_USE_SOVERSION_1@       = .4.0.0.$(SO_SUFFIX)
 @COND_USE_SOVERSION_0@__stcdll___targetsuf3 = .$(SO_SUFFIX)
 COND_USE_SOVERLINUX_1___stcdll___soname_flags = \
        $(SONAME_FLAG)$(DLLPREFIX)$(WXDLLNAMEPREFIXGUI)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_stc$(WXCOMPILER)$(VENDORTAG)$(WXDLLVERSIONTAG)$(__stcdll___targetsuf2)
@@ -336,7 +340,7 @@ clean:
        rm -f $(LIBDIRNAME)/$(LIBPREFIX)wx_$(PORTNAME)$(WXUNIVNAME)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_stc-$(WX_RELEASE)$(HOST_SUFFIX)$(LIBEXT)
 
 distclean: clean
-       rm -f configure config.cache config.log config.status bk-deps bk-make-pch shared-ld-sh Makefile
+       rm -f config.cache config.log config.status bk-deps bk-make-pch shared-ld-sh Makefile
 
 @COND_SHARED_1@$(LIBDIRNAME)/$(DLLPREFIX)$(WXDLLNAMEPREFIXGUI)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_stc$(WXCOMPILER)$(VENDORTAG)$(WXDLLVERSIONTAG)$(__stcdll___targetsuf3): $(STCDLL_OBJECTS)
 @COND_SHARED_1@        $(SHARED_LD_CXX) $@ $(STCDLL_OBJECTS) $(LDFLAGS)   -L$(LIBDIRNAME) $(__stcdll___macinstnamecmd) $(__stcdll___importlib) $(__stcdll___soname_flags) $(__stcdll___macver)  $(__WXLIB_MONO_p) $(__LIB_TIFF_p) $(__LIB_JPEG_p) $(__LIB_PNG_p) $(__LIB_ZLIB_p) $(__LIB_ODBC_p) $(__LIB_REGEX_p) $(__LIB_EXPAT_p) $(EXTRALIBS_FOR_BASE) $(EXTRALIBS_FOR_GUI) $(__WXLIB_CORE_p)  $(__WXLIB_BASE_p)
@@ -359,418 +363,430 @@ distclean: clean
 @COND_SHARED_0@        $(INSTALL_DATA) $(LIBDIRNAME)/$(LIBPREFIX)wx_$(PORTNAME)$(WXUNIVNAME)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_stc-$(WX_RELEASE)$(HOST_SUFFIX)$(LIBEXT) $(DESTDIR)$(libdir)
 
 stcdll_PlatWX.o: $(srcdir)/PlatWX.cpp
-       $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $<
+       $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $(srcdir)/PlatWX.cpp
 
 stcdll_ScintillaWX.o: $(srcdir)/ScintillaWX.cpp
-       $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $<
+       $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $(srcdir)/ScintillaWX.cpp
 
 stcdll_stc.o: $(srcdir)/stc.cpp
-       $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $<
+       $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $(srcdir)/stc.cpp
 
 stcdll_AutoComplete.o: $(srcdir)/scintilla/src/AutoComplete.cxx
-       $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $<
+       $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $(srcdir)/scintilla/src/AutoComplete.cxx
 
 stcdll_CallTip.o: $(srcdir)/scintilla/src/CallTip.cxx
-       $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $<
+       $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $(srcdir)/scintilla/src/CallTip.cxx
 
 stcdll_CellBuffer.o: $(srcdir)/scintilla/src/CellBuffer.cxx
-       $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $<
+       $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $(srcdir)/scintilla/src/CellBuffer.cxx
 
 stcdll_ContractionState.o: $(srcdir)/scintilla/src/ContractionState.cxx
-       $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $<
-
-stcdll_DocumentAccessor.o: $(srcdir)/scintilla/src/DocumentAccessor.cxx
-       $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $<
+       $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $(srcdir)/scintilla/src/ContractionState.cxx
 
 stcdll_Document.o: $(srcdir)/scintilla/src/Document.cxx
-       $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $<
+       $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $(srcdir)/scintilla/src/Document.cxx
+
+stcdll_DocumentAccessor.o: $(srcdir)/scintilla/src/DocumentAccessor.cxx
+       $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $(srcdir)/scintilla/src/DocumentAccessor.cxx
 
 stcdll_Editor.o: $(srcdir)/scintilla/src/Editor.cxx
-       $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $<
+       $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $(srcdir)/scintilla/src/Editor.cxx
 
 stcdll_ExternalLexer.o: $(srcdir)/scintilla/src/ExternalLexer.cxx
-       $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $<
+       $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $(srcdir)/scintilla/src/ExternalLexer.cxx
 
 stcdll_Indicator.o: $(srcdir)/scintilla/src/Indicator.cxx
-       $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $<
+       $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $(srcdir)/scintilla/src/Indicator.cxx
 
 stcdll_KeyMap.o: $(srcdir)/scintilla/src/KeyMap.cxx
-       $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $<
+       $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $(srcdir)/scintilla/src/KeyMap.cxx
 
 stcdll_KeyWords.o: $(srcdir)/scintilla/src/KeyWords.cxx
-       $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $<
+       $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $(srcdir)/scintilla/src/KeyWords.cxx
 
 stcdll_LexAPDL.o: $(srcdir)/scintilla/src/LexAPDL.cxx
-       $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $<
+       $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $(srcdir)/scintilla/src/LexAPDL.cxx
 
 stcdll_LexAU3.o: $(srcdir)/scintilla/src/LexAU3.cxx
-       $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $<
+       $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $(srcdir)/scintilla/src/LexAU3.cxx
 
 stcdll_LexAVE.o: $(srcdir)/scintilla/src/LexAVE.cxx
-       $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $<
+       $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $(srcdir)/scintilla/src/LexAVE.cxx
 
 stcdll_LexAda.o: $(srcdir)/scintilla/src/LexAda.cxx
-       $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $<
+       $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $(srcdir)/scintilla/src/LexAda.cxx
 
 stcdll_LexAsm.o: $(srcdir)/scintilla/src/LexAsm.cxx
-       $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $<
+       $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $(srcdir)/scintilla/src/LexAsm.cxx
+
+stcdll_LexAsn1.o: $(srcdir)/scintilla/src/LexAsn1.cxx
+       $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $(srcdir)/scintilla/src/LexAsn1.cxx
 
 stcdll_LexBaan.o: $(srcdir)/scintilla/src/LexBaan.cxx
-       $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $<
+       $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $(srcdir)/scintilla/src/LexBaan.cxx
 
 stcdll_LexBash.o: $(srcdir)/scintilla/src/LexBash.cxx
-       $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $<
+       $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $(srcdir)/scintilla/src/LexBash.cxx
 
 stcdll_LexBullant.o: $(srcdir)/scintilla/src/LexBullant.cxx
-       $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $<
+       $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $(srcdir)/scintilla/src/LexBullant.cxx
 
 stcdll_LexCLW.o: $(srcdir)/scintilla/src/LexCLW.cxx
-       $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $<
+       $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $(srcdir)/scintilla/src/LexCLW.cxx
 
 stcdll_LexCPP.o: $(srcdir)/scintilla/src/LexCPP.cxx
-       $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $<
+       $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $(srcdir)/scintilla/src/LexCPP.cxx
 
 stcdll_LexCSS.o: $(srcdir)/scintilla/src/LexCSS.cxx
-       $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $<
+       $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $(srcdir)/scintilla/src/LexCSS.cxx
 
 stcdll_LexConf.o: $(srcdir)/scintilla/src/LexConf.cxx
-       $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $<
+       $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $(srcdir)/scintilla/src/LexConf.cxx
 
 stcdll_LexCrontab.o: $(srcdir)/scintilla/src/LexCrontab.cxx
-       $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $<
+       $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $(srcdir)/scintilla/src/LexCrontab.cxx
 
 stcdll_LexEScript.o: $(srcdir)/scintilla/src/LexEScript.cxx
-       $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $<
+       $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $(srcdir)/scintilla/src/LexEScript.cxx
 
 stcdll_LexEiffel.o: $(srcdir)/scintilla/src/LexEiffel.cxx
-       $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $<
+       $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $(srcdir)/scintilla/src/LexEiffel.cxx
 
 stcdll_LexErlang.o: $(srcdir)/scintilla/src/LexErlang.cxx
-       $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $<
+       $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $(srcdir)/scintilla/src/LexErlang.cxx
 
 stcdll_LexForth.o: $(srcdir)/scintilla/src/LexForth.cxx
-       $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $<
+       $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $(srcdir)/scintilla/src/LexForth.cxx
 
 stcdll_LexFortran.o: $(srcdir)/scintilla/src/LexFortran.cxx
-       $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $<
+       $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $(srcdir)/scintilla/src/LexFortran.cxx
 
 stcdll_LexGui4Cli.o: $(srcdir)/scintilla/src/LexGui4Cli.cxx
-       $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $<
+       $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $(srcdir)/scintilla/src/LexGui4Cli.cxx
 
 stcdll_LexHTML.o: $(srcdir)/scintilla/src/LexHTML.cxx
-       $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $<
+       $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $(srcdir)/scintilla/src/LexHTML.cxx
 
 stcdll_LexKix.o: $(srcdir)/scintilla/src/LexKix.cxx
-       $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $<
+       $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $(srcdir)/scintilla/src/LexKix.cxx
 
 stcdll_LexLisp.o: $(srcdir)/scintilla/src/LexLisp.cxx
-       $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $<
+       $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $(srcdir)/scintilla/src/LexLisp.cxx
 
 stcdll_LexLout.o: $(srcdir)/scintilla/src/LexLout.cxx
-       $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $<
+       $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $(srcdir)/scintilla/src/LexLout.cxx
 
 stcdll_LexLua.o: $(srcdir)/scintilla/src/LexLua.cxx
-       $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $<
+       $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $(srcdir)/scintilla/src/LexLua.cxx
 
 stcdll_LexMMIXAL.o: $(srcdir)/scintilla/src/LexMMIXAL.cxx
-       $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $<
+       $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $(srcdir)/scintilla/src/LexMMIXAL.cxx
 
 stcdll_LexMPT.o: $(srcdir)/scintilla/src/LexMPT.cxx
-       $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $<
+       $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $(srcdir)/scintilla/src/LexMPT.cxx
 
 stcdll_LexMSSQL.o: $(srcdir)/scintilla/src/LexMSSQL.cxx
-       $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $<
+       $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $(srcdir)/scintilla/src/LexMSSQL.cxx
 
 stcdll_LexMatlab.o: $(srcdir)/scintilla/src/LexMatlab.cxx
-       $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $<
+       $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $(srcdir)/scintilla/src/LexMatlab.cxx
 
 stcdll_LexMetapost.o: $(srcdir)/scintilla/src/LexMetapost.cxx
-       $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $<
+       $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $(srcdir)/scintilla/src/LexMetapost.cxx
 
 stcdll_LexNsis.o: $(srcdir)/scintilla/src/LexNsis.cxx
-       $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $<
+       $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $(srcdir)/scintilla/src/LexNsis.cxx
 
 stcdll_LexOthers.o: $(srcdir)/scintilla/src/LexOthers.cxx
-       $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $<
+       $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $(srcdir)/scintilla/src/LexOthers.cxx
 
 stcdll_LexPB.o: $(srcdir)/scintilla/src/LexPB.cxx
-       $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $<
+       $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $(srcdir)/scintilla/src/LexPB.cxx
 
 stcdll_LexPOV.o: $(srcdir)/scintilla/src/LexPOV.cxx
-       $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $<
+       $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $(srcdir)/scintilla/src/LexPOV.cxx
 
 stcdll_LexPS.o: $(srcdir)/scintilla/src/LexPS.cxx
-       $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $<
+       $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $(srcdir)/scintilla/src/LexPS.cxx
 
 stcdll_LexPascal.o: $(srcdir)/scintilla/src/LexPascal.cxx
-       $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $<
+       $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $(srcdir)/scintilla/src/LexPascal.cxx
 
 stcdll_LexPerl.o: $(srcdir)/scintilla/src/LexPerl.cxx
-       $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $<
+       $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $(srcdir)/scintilla/src/LexPerl.cxx
 
 stcdll_LexPython.o: $(srcdir)/scintilla/src/LexPython.cxx
-       $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $<
+       $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $(srcdir)/scintilla/src/LexPython.cxx
 
 stcdll_LexRuby.o: $(srcdir)/scintilla/src/LexRuby.cxx
-       $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $<
+       $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $(srcdir)/scintilla/src/LexRuby.cxx
 
 stcdll_LexSQL.o: $(srcdir)/scintilla/src/LexSQL.cxx
-       $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $<
+       $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $(srcdir)/scintilla/src/LexSQL.cxx
 
 stcdll_LexScriptol.o: $(srcdir)/scintilla/src/LexScriptol.cxx
-       $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $<
+       $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $(srcdir)/scintilla/src/LexScriptol.cxx
 
 stcdll_LexSpecman.o: $(srcdir)/scintilla/src/LexSpecman.cxx
-       $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $<
+       $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $(srcdir)/scintilla/src/LexSpecman.cxx
 
 stcdll_LexTeX.o: $(srcdir)/scintilla/src/LexTeX.cxx
-       $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $<
+       $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $(srcdir)/scintilla/src/LexTeX.cxx
 
 stcdll_LexVB.o: $(srcdir)/scintilla/src/LexVB.cxx
-       $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $<
+       $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $(srcdir)/scintilla/src/LexVB.cxx
+
+stcdll_LexVHDL.o: $(srcdir)/scintilla/src/LexVHDL.cxx
+       $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $(srcdir)/scintilla/src/LexVHDL.cxx
 
 stcdll_LexVerilog.o: $(srcdir)/scintilla/src/LexVerilog.cxx
-       $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $<
+       $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $(srcdir)/scintilla/src/LexVerilog.cxx
 
 stcdll_LexYAML.o: $(srcdir)/scintilla/src/LexYAML.cxx
-       $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $<
+       $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $(srcdir)/scintilla/src/LexYAML.cxx
 
 stcdll_LineMarker.o: $(srcdir)/scintilla/src/LineMarker.cxx
-       $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $<
+       $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $(srcdir)/scintilla/src/LineMarker.cxx
 
 stcdll_PropSet.o: $(srcdir)/scintilla/src/PropSet.cxx
-       $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $<
+       $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $(srcdir)/scintilla/src/PropSet.cxx
 
 stcdll_RESearch.o: $(srcdir)/scintilla/src/RESearch.cxx
-       $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $<
+       $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $(srcdir)/scintilla/src/RESearch.cxx
 
 stcdll_ScintillaBase.o: $(srcdir)/scintilla/src/ScintillaBase.cxx
-       $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $<
-
-stcdll_StyleContext.o: $(srcdir)/scintilla/src/StyleContext.cxx
-       $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $<
+       $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $(srcdir)/scintilla/src/ScintillaBase.cxx
 
 stcdll_Style.o: $(srcdir)/scintilla/src/Style.cxx
-       $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $<
+       $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $(srcdir)/scintilla/src/Style.cxx
+
+stcdll_StyleContext.o: $(srcdir)/scintilla/src/StyleContext.cxx
+       $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $(srcdir)/scintilla/src/StyleContext.cxx
 
 stcdll_UniConversion.o: $(srcdir)/scintilla/src/UniConversion.cxx
-       $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $<
+       $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $(srcdir)/scintilla/src/UniConversion.cxx
 
 stcdll_ViewStyle.o: $(srcdir)/scintilla/src/ViewStyle.cxx
-       $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $<
+       $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $(srcdir)/scintilla/src/ViewStyle.cxx
 
 stcdll_WindowAccessor.o: $(srcdir)/scintilla/src/WindowAccessor.cxx
-       $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $<
+       $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $(srcdir)/scintilla/src/WindowAccessor.cxx
 
 stcdll_XPM.o: $(srcdir)/scintilla/src/XPM.cxx
-       $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $<
+       $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $(srcdir)/scintilla/src/XPM.cxx
 
 stclib_PlatWX.o: $(srcdir)/PlatWX.cpp
-       $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $<
+       $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $(srcdir)/PlatWX.cpp
 
 stclib_ScintillaWX.o: $(srcdir)/ScintillaWX.cpp
-       $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $<
+       $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $(srcdir)/ScintillaWX.cpp
 
 stclib_stc.o: $(srcdir)/stc.cpp
-       $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $<
+       $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $(srcdir)/stc.cpp
 
 stclib_AutoComplete.o: $(srcdir)/scintilla/src/AutoComplete.cxx
-       $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $<
+       $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $(srcdir)/scintilla/src/AutoComplete.cxx
 
 stclib_CallTip.o: $(srcdir)/scintilla/src/CallTip.cxx
-       $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $<
+       $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $(srcdir)/scintilla/src/CallTip.cxx
 
 stclib_CellBuffer.o: $(srcdir)/scintilla/src/CellBuffer.cxx
-       $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $<
+       $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $(srcdir)/scintilla/src/CellBuffer.cxx
 
 stclib_ContractionState.o: $(srcdir)/scintilla/src/ContractionState.cxx
-       $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $<
-
-stclib_DocumentAccessor.o: $(srcdir)/scintilla/src/DocumentAccessor.cxx
-       $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $<
+       $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $(srcdir)/scintilla/src/ContractionState.cxx
 
 stclib_Document.o: $(srcdir)/scintilla/src/Document.cxx
-       $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $<
+       $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $(srcdir)/scintilla/src/Document.cxx
+
+stclib_DocumentAccessor.o: $(srcdir)/scintilla/src/DocumentAccessor.cxx
+       $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $(srcdir)/scintilla/src/DocumentAccessor.cxx
 
 stclib_Editor.o: $(srcdir)/scintilla/src/Editor.cxx
-       $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $<
+       $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $(srcdir)/scintilla/src/Editor.cxx
 
 stclib_ExternalLexer.o: $(srcdir)/scintilla/src/ExternalLexer.cxx
-       $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $<
+       $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $(srcdir)/scintilla/src/ExternalLexer.cxx
 
 stclib_Indicator.o: $(srcdir)/scintilla/src/Indicator.cxx
-       $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $<
+       $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $(srcdir)/scintilla/src/Indicator.cxx
 
 stclib_KeyMap.o: $(srcdir)/scintilla/src/KeyMap.cxx
-       $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $<
+       $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $(srcdir)/scintilla/src/KeyMap.cxx
 
 stclib_KeyWords.o: $(srcdir)/scintilla/src/KeyWords.cxx
-       $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $<
+       $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $(srcdir)/scintilla/src/KeyWords.cxx
 
 stclib_LexAPDL.o: $(srcdir)/scintilla/src/LexAPDL.cxx
-       $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $<
+       $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $(srcdir)/scintilla/src/LexAPDL.cxx
 
 stclib_LexAU3.o: $(srcdir)/scintilla/src/LexAU3.cxx
-       $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $<
+       $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $(srcdir)/scintilla/src/LexAU3.cxx
 
 stclib_LexAVE.o: $(srcdir)/scintilla/src/LexAVE.cxx
-       $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $<
+       $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $(srcdir)/scintilla/src/LexAVE.cxx
 
 stclib_LexAda.o: $(srcdir)/scintilla/src/LexAda.cxx
-       $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $<
+       $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $(srcdir)/scintilla/src/LexAda.cxx
 
 stclib_LexAsm.o: $(srcdir)/scintilla/src/LexAsm.cxx
-       $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $<
+       $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $(srcdir)/scintilla/src/LexAsm.cxx
+
+stclib_LexAsn1.o: $(srcdir)/scintilla/src/LexAsn1.cxx
+       $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $(srcdir)/scintilla/src/LexAsn1.cxx
 
 stclib_LexBaan.o: $(srcdir)/scintilla/src/LexBaan.cxx
-       $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $<
+       $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $(srcdir)/scintilla/src/LexBaan.cxx
 
 stclib_LexBash.o: $(srcdir)/scintilla/src/LexBash.cxx
-       $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $<
+       $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $(srcdir)/scintilla/src/LexBash.cxx
 
 stclib_LexBullant.o: $(srcdir)/scintilla/src/LexBullant.cxx
-       $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $<
+       $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $(srcdir)/scintilla/src/LexBullant.cxx
 
 stclib_LexCLW.o: $(srcdir)/scintilla/src/LexCLW.cxx
-       $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $<
+       $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $(srcdir)/scintilla/src/LexCLW.cxx
 
 stclib_LexCPP.o: $(srcdir)/scintilla/src/LexCPP.cxx
-       $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $<
+       $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $(srcdir)/scintilla/src/LexCPP.cxx
 
 stclib_LexCSS.o: $(srcdir)/scintilla/src/LexCSS.cxx
-       $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $<
+       $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $(srcdir)/scintilla/src/LexCSS.cxx
 
 stclib_LexConf.o: $(srcdir)/scintilla/src/LexConf.cxx
-       $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $<
+       $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $(srcdir)/scintilla/src/LexConf.cxx
 
 stclib_LexCrontab.o: $(srcdir)/scintilla/src/LexCrontab.cxx
-       $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $<
+       $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $(srcdir)/scintilla/src/LexCrontab.cxx
 
 stclib_LexEScript.o: $(srcdir)/scintilla/src/LexEScript.cxx
-       $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $<
+       $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $(srcdir)/scintilla/src/LexEScript.cxx
 
 stclib_LexEiffel.o: $(srcdir)/scintilla/src/LexEiffel.cxx
-       $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $<
+       $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $(srcdir)/scintilla/src/LexEiffel.cxx
 
 stclib_LexErlang.o: $(srcdir)/scintilla/src/LexErlang.cxx
-       $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $<
+       $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $(srcdir)/scintilla/src/LexErlang.cxx
 
 stclib_LexForth.o: $(srcdir)/scintilla/src/LexForth.cxx
-       $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $<
+       $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $(srcdir)/scintilla/src/LexForth.cxx
 
 stclib_LexFortran.o: $(srcdir)/scintilla/src/LexFortran.cxx
-       $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $<
+       $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $(srcdir)/scintilla/src/LexFortran.cxx
 
 stclib_LexGui4Cli.o: $(srcdir)/scintilla/src/LexGui4Cli.cxx
-       $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $<
+       $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $(srcdir)/scintilla/src/LexGui4Cli.cxx
 
 stclib_LexHTML.o: $(srcdir)/scintilla/src/LexHTML.cxx
-       $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $<
+       $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $(srcdir)/scintilla/src/LexHTML.cxx
 
 stclib_LexKix.o: $(srcdir)/scintilla/src/LexKix.cxx
-       $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $<
+       $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $(srcdir)/scintilla/src/LexKix.cxx
 
 stclib_LexLisp.o: $(srcdir)/scintilla/src/LexLisp.cxx
-       $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $<
+       $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $(srcdir)/scintilla/src/LexLisp.cxx
 
 stclib_LexLout.o: $(srcdir)/scintilla/src/LexLout.cxx
-       $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $<
+       $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $(srcdir)/scintilla/src/LexLout.cxx
 
 stclib_LexLua.o: $(srcdir)/scintilla/src/LexLua.cxx
-       $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $<
+       $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $(srcdir)/scintilla/src/LexLua.cxx
 
 stclib_LexMMIXAL.o: $(srcdir)/scintilla/src/LexMMIXAL.cxx
-       $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $<
+       $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $(srcdir)/scintilla/src/LexMMIXAL.cxx
 
 stclib_LexMPT.o: $(srcdir)/scintilla/src/LexMPT.cxx
-       $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $<
+       $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $(srcdir)/scintilla/src/LexMPT.cxx
 
 stclib_LexMSSQL.o: $(srcdir)/scintilla/src/LexMSSQL.cxx
-       $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $<
+       $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $(srcdir)/scintilla/src/LexMSSQL.cxx
 
 stclib_LexMatlab.o: $(srcdir)/scintilla/src/LexMatlab.cxx
-       $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $<
+       $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $(srcdir)/scintilla/src/LexMatlab.cxx
 
 stclib_LexMetapost.o: $(srcdir)/scintilla/src/LexMetapost.cxx
-       $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $<
+       $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $(srcdir)/scintilla/src/LexMetapost.cxx
 
 stclib_LexNsis.o: $(srcdir)/scintilla/src/LexNsis.cxx
-       $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $<
+       $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $(srcdir)/scintilla/src/LexNsis.cxx
 
 stclib_LexOthers.o: $(srcdir)/scintilla/src/LexOthers.cxx
-       $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $<
+       $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $(srcdir)/scintilla/src/LexOthers.cxx
 
 stclib_LexPB.o: $(srcdir)/scintilla/src/LexPB.cxx
-       $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $<
+       $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $(srcdir)/scintilla/src/LexPB.cxx
 
 stclib_LexPOV.o: $(srcdir)/scintilla/src/LexPOV.cxx
-       $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $<
+       $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $(srcdir)/scintilla/src/LexPOV.cxx
 
 stclib_LexPS.o: $(srcdir)/scintilla/src/LexPS.cxx
-       $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $<
+       $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $(srcdir)/scintilla/src/LexPS.cxx
 
 stclib_LexPascal.o: $(srcdir)/scintilla/src/LexPascal.cxx
-       $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $<
+       $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $(srcdir)/scintilla/src/LexPascal.cxx
 
 stclib_LexPerl.o: $(srcdir)/scintilla/src/LexPerl.cxx
-       $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $<
+       $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $(srcdir)/scintilla/src/LexPerl.cxx
 
 stclib_LexPython.o: $(srcdir)/scintilla/src/LexPython.cxx
-       $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $<
+       $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $(srcdir)/scintilla/src/LexPython.cxx
 
 stclib_LexRuby.o: $(srcdir)/scintilla/src/LexRuby.cxx
-       $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $<
+       $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $(srcdir)/scintilla/src/LexRuby.cxx
 
 stclib_LexSQL.o: $(srcdir)/scintilla/src/LexSQL.cxx
-       $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $<
+       $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $(srcdir)/scintilla/src/LexSQL.cxx
 
 stclib_LexScriptol.o: $(srcdir)/scintilla/src/LexScriptol.cxx
-       $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $<
+       $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $(srcdir)/scintilla/src/LexScriptol.cxx
 
 stclib_LexSpecman.o: $(srcdir)/scintilla/src/LexSpecman.cxx
-       $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $<
+       $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $(srcdir)/scintilla/src/LexSpecman.cxx
 
 stclib_LexTeX.o: $(srcdir)/scintilla/src/LexTeX.cxx
-       $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $<
+       $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $(srcdir)/scintilla/src/LexTeX.cxx
 
 stclib_LexVB.o: $(srcdir)/scintilla/src/LexVB.cxx
-       $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $<
+       $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $(srcdir)/scintilla/src/LexVB.cxx
+
+stclib_LexVHDL.o: $(srcdir)/scintilla/src/LexVHDL.cxx
+       $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $(srcdir)/scintilla/src/LexVHDL.cxx
 
 stclib_LexVerilog.o: $(srcdir)/scintilla/src/LexVerilog.cxx
-       $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $<
+       $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $(srcdir)/scintilla/src/LexVerilog.cxx
 
 stclib_LexYAML.o: $(srcdir)/scintilla/src/LexYAML.cxx
-       $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $<
+       $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $(srcdir)/scintilla/src/LexYAML.cxx
 
 stclib_LineMarker.o: $(srcdir)/scintilla/src/LineMarker.cxx
-       $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $<
+       $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $(srcdir)/scintilla/src/LineMarker.cxx
 
 stclib_PropSet.o: $(srcdir)/scintilla/src/PropSet.cxx
-       $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $<
+       $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $(srcdir)/scintilla/src/PropSet.cxx
 
 stclib_RESearch.o: $(srcdir)/scintilla/src/RESearch.cxx
-       $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $<
+       $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $(srcdir)/scintilla/src/RESearch.cxx
 
 stclib_ScintillaBase.o: $(srcdir)/scintilla/src/ScintillaBase.cxx
-       $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $<
-
-stclib_StyleContext.o: $(srcdir)/scintilla/src/StyleContext.cxx
-       $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $<
+       $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $(srcdir)/scintilla/src/ScintillaBase.cxx
 
 stclib_Style.o: $(srcdir)/scintilla/src/Style.cxx
-       $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $<
+       $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $(srcdir)/scintilla/src/Style.cxx
+
+stclib_StyleContext.o: $(srcdir)/scintilla/src/StyleContext.cxx
+       $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $(srcdir)/scintilla/src/StyleContext.cxx
 
 stclib_UniConversion.o: $(srcdir)/scintilla/src/UniConversion.cxx
-       $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $<
+       $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $(srcdir)/scintilla/src/UniConversion.cxx
 
 stclib_ViewStyle.o: $(srcdir)/scintilla/src/ViewStyle.cxx
-       $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $<
+       $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $(srcdir)/scintilla/src/ViewStyle.cxx
 
 stclib_WindowAccessor.o: $(srcdir)/scintilla/src/WindowAccessor.cxx
-       $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $<
+       $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $(srcdir)/scintilla/src/WindowAccessor.cxx
 
 stclib_XPM.o: $(srcdir)/scintilla/src/XPM.cxx
-       $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $<
+       $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $(srcdir)/scintilla/src/XPM.cxx
 
 
 # Include dependency info, if present:
index 41b3a5a06d089c654d50d4dcf3aa2fbb86a6b92b..796f06e0c8f03ac927b8e2fa36f0763a9d507fbb 100644 (file)
@@ -539,7 +539,8 @@ long ScintillaWX::WndProc(unsigned int iMessage, unsigned long wParam, long lPar
                                           defn,
                                           vs.styles[STYLE_DEFAULT].fontName,
                                           vs.styles[STYLE_DEFAULT].sizeZoomed,
-                                          IsUnicodeMode(),
+                                          CodePage(),
+                                          vs.styles[STYLE_DEFAULT].characterSet,
                                           wMain);
           // If the call-tip window would be out of the client
           // space, adjust so it displays above the text.
index 541dd96ee880dd3408e108f3587da8380e891b5b..6e0a0aee90770c073644b161bfde18d911844b91 100644 (file)
@@ -501,6 +501,11 @@ methodOverrideMap = {
          return SendMsg(%s, strlen(buf), (long)(const char*)buf);''',
      0),
 
+    # not sure what to do about these yet
+    'TargetAsUTF8' :       ( None, 0, 0, 0),
+    'SetLengthForEncode' : ( None, 0, 0, 0),
+    'EncodedFromUTF8' :    ( None, 0, 0, 0),
+    
 
     'GetDocPointer' :
     (0,
index 25dca357b17b24068edf3ed461726ca16dc43c80..fce427d5d11dfc75b6bf312ea3f3198f8b021914 100644 (file)
@@ -3,5 +3,5 @@ scintilla/include directories from the Scintilla/SCiTE source
 distribution.  All other code needed to implement Scintilla on top of
 wxWindows is located in the directory above this one.
 
-The current version of the Scintilla code is 1.61
+The current version of the Scintilla code is 1.62
 
index e6385da71ddf818c245c11d665e81a64e35ffbb0..f0c0b84d17103be352a5aeac065191dff1568870 100644 (file)
@@ -69,7 +69,7 @@ public:
        int x;
        int y;
 
-       Point(int x_=0, int y_=0) : x(x_), y(y_) {
+       explicit Point(int x_=0, int y_=0) : x(x_), y(y_) {
        }
 
        // Other automatically defined methods (assignment, copy constructor, destructor) are fine
index 0b4c2f58de2046a4a95d06e9769ff79cae2f187d..32aea8a0c7f59ce6b7f7873d3d47593e44c9e060 100644 (file)
@@ -39,12 +39,14 @@ protected:
                return ret;
        }
        static bool IncludesVar(const char *value, const char *key);
+
 public:
        PropSet *superPS;
        PropSet();
        ~PropSet();
        void Set(const char *key, const char *val, int lenKey=-1, int lenVal=-1);
        void Set(const char *keyVal);
+       void Unset(const char *key, int lenKey=-1);
        void SetMultiple(const char *s);
        SString Get(const char *key);
        SString GetExpanded(const char *key);
@@ -85,9 +87,9 @@ public:
        char *Allocate(int size);
        void SetFromAllocated();
        bool InList(const char *s);
-       const char *GetNearestWord(const char *wordStart, int searchLen = -1,
+       const char *GetNearestWord(const char *wordStart, int searchLen,
                bool ignoreCase = false, SString wordCharacters="", int wordIndex = -1);
-       char *GetNearestWords(const char *wordStart, int searchLen=-1,
+       char *GetNearestWords(const char *wordStart, int searchLen,
                bool ignoreCase=false, char otherSeparator='\0', bool exactLen=false);
 };
 
index 5c8307a59551bbbc805a5d6142a57ee9d6abf81f..ce50a7fab5fed63a4140a473e85a4ee23f01af68 100644 (file)
@@ -77,6 +77,8 @@
 #define SCLEX_AU3 60
 #define SCLEX_APDL 61
 #define SCLEX_BASH 62
+#define SCLEX_ASN1 63
+#define SCLEX_VHDL 64
 #define SCLEX_AUTOMATIC 1000
 #define SCE_P_DEFAULT 0
 #define SCE_P_COMMENTLINE 1
 #define SCE_ERR_IFORT 17
 #define SCE_ERR_ABSF 18
 #define SCE_ERR_TIDY 19
+#define SCE_ERR_JAVA_STACK 20
 #define SCE_BAT_DEFAULT 0
 #define SCE_BAT_COMMENT 1
 #define SCE_BAT_WORD 2
 #define SCE_CSS_DIRECTIVE 12
 #define SCE_CSS_DOUBLESTRING 13
 #define SCE_CSS_SINGLESTRING 14
+#define SCE_CSS_IDENTIFIER2 15
 #define SCE_POV_DEFAULT 0
 #define SCE_POV_COMMENT 1
 #define SCE_POV_COMMENTLINE 2
 #define SCE_AU3_VARIABLE 9
 #define SCE_AU3_SENT 10
 #define SCE_AU3_PREPROCESSOR 11
+#define SCE_AU3_SPECIAL 12
 #define SCE_APDL_DEFAULT 0
 #define SCE_APDL_COMMENT 1
 #define SCE_APDL_COMMENTBLOCK 2
 #define SCE_APDL_NUMBER 3
 #define SCE_APDL_STRING 4
-#define SCE_APDL_WORD 5
-#define SCE_APDL_COMMAND 6
+#define SCE_APDL_OPERATOR 5
+#define SCE_APDL_WORD 6
 #define SCE_APDL_PROCESSOR 7
-#define SCE_APDL_FUNCTION 8
+#define SCE_APDL_COMMAND 8
+#define SCE_APDL_SLASHCOMMAND 9
+#define SCE_APDL_STARCOMMAND 10
+#define SCE_APDL_ARGUMENT 11
+#define SCE_APDL_FUNCTION 12
 #define SCE_SH_DEFAULT 0
 #define SCE_SH_ERROR 1
 #define SCE_SH_COMMENTLINE 2
 #define SCE_SH_BACKTICKS 11
 #define SCE_SH_HERE_DELIM 12
 #define SCE_SH_HERE_Q 13
+#define SCE_ASN1_DEFAULT 0
+#define SCE_ASN1_COMMENT 1
+#define SCE_ASN1_IDENTIFIER 2
+#define SCE_ASN1_STRING 3
+#define SCE_ASN1_OID 4
+#define SCE_ASN1_SCALAR 5
+#define SCE_ASN1_KEYWORD 6
+#define SCE_ASN1_ATTRIBUTE 7
+#define SCE_ASN1_DESCRIPTOR 8
+#define SCE_ASN1_TYPE 9
+#define SCE_ASN1_OPERATOR 10
+#define SCE_VHDL_DEFAULT 0
+#define SCE_VHDL_COMMENT 1
+#define SCE_VHDL_COMMENTLINEBANG 2
+#define SCE_VHDL_NUMBER 3
+#define SCE_VHDL_STRING 4
+#define SCE_VHDL_OPERATOR 5
+#define SCE_VHDL_IDENTIFIER 6
+#define SCE_VHDL_STRINGEOL 7
+#define SCE_VHDL_KEYWORD 8
+#define SCE_VHDL_STDOPERATOR 9
+#define SCE_VHDL_ATTRIBUTE 10
+#define SCE_VHDL_STDFUNCTION 11
+#define SCE_VHDL_STDPACKAGE 12
+#define SCE_VHDL_STDTYPE 13
+#define SCE_VHDL_USERWORD 14
 //--Autogenerated -- end of section automatically generated from Scintilla.iface
 
 #endif
index 1a4e4887228a2be9a0b17b771d3746e7e6cf7dd6..f20f0de22dec345a0545f6bc95a0958a3b545bc4 100644 (file)
@@ -583,6 +583,10 @@ typedef sptr_t (*SciFnDirect)(sptr_t ptr, unsigned int iMessage, uptr_t wParam,
 #define SCI_SETCHARSDEFAULT 2444
 #define SCI_AUTOCGETCURRENT 2445
 #define SCI_ALLOCATE 2446
+#define SCI_TARGETASUTF8 2447
+#define SCI_SETLENGTHFORENCODE 2448
+#define SCI_ENCODEDFROMUTF8 2449
+#define SCI_FINDCOLUMN 2456
 #define SCI_STARTRECORD 3001
 #define SCI_STOPRECORD 3002
 #define SCI_SETLEXER 4001
index fef371328ce7b64432bec109d8ee0f8724968cce..5be763f258d78f748efb24c8dc1469a6ac43e3be 100644 (file)
@@ -1583,6 +1583,23 @@ fun int AutoCGetCurrent=2445(,)
 # Enlarge the document to a particular size of text bytes.
 fun void Allocate=2446(int bytes,)
 
+# Returns the target converted to UTF8.
+# Return the length in bytes.
+fun int TargetAsUTF8=2447(, stringresult s)
+
+# Set the length of the utf8 argument for calling EncodedFromUTF8.
+# Set to 0 and the string will be measured to the first nul.
+fun void SetLengthForEncode=2448(int bytes,)
+
+# Translates a UTF8 string into the document encoding.
+# Return the length of the result in bytes.
+# On error return 0.
+fun int EncodedFromUTF8=2449(string utf8, stringresult encoded)
+
+# Find the position of a column on a line taking into account tabs and 
+# multi-byte characters. If beyond end of line, return line end position.
+fun int FindColumn=2456(int line, int column)
+
 # Start notifying the container of all key presses and commands.
 fun void StartRecord=3001(,)
 
@@ -1733,6 +1750,8 @@ val SCLEX_SPECMAN=59
 val SCLEX_AU3=60
 val SCLEX_APDL=61
 val SCLEX_BASH=62
+val SCLEX_ASN1=63
+val SCLEX_VHDL=64
 
 # When a lexer specifies its language as SCLEX_AUTOMATIC it receives a
 # value assigned in sequence from SCLEX_AUTOMATIC+1.
@@ -2017,6 +2036,7 @@ val SCE_ERR_IFC=16
 val SCE_ERR_IFORT=17
 val SCE_ERR_ABSF=18
 val SCE_ERR_TIDY=19
+val SCE_ERR_JAVA_STACK=20
 # Lexical states for SCLEX_BATCH
 lex Batch=SCLEX_BATCH SCE_BAT_
 val SCE_BAT_DEFAULT=0
@@ -2232,6 +2252,7 @@ val SCE_CSS_IMPORTANT=11
 val SCE_CSS_DIRECTIVE=12
 val SCE_CSS_DOUBLESTRING=13
 val SCE_CSS_SINGLESTRING=14
+val SCE_CSS_IDENTIFIER2=15
 # Lexical states for SCLEX_POV
 lex POV=SCLEX_POV SCE_POV_
 val SCE_POV_DEFAULT=0
@@ -2496,6 +2517,7 @@ val SCE_AU3_OPERATOR=8
 val SCE_AU3_VARIABLE=9
 val SCE_AU3_SENT=10
 val SCE_AU3_PREPROCESSOR=11
+val SCE_AU3_SPECIAL=12
 # Lexical states for SCLEX_APDL
 lex APDL=SCLEX_APDL SCE_APDL_
 val SCE_APDL_DEFAULT=0
@@ -2503,10 +2525,14 @@ val SCE_APDL_COMMENT=1
 val SCE_APDL_COMMENTBLOCK=2
 val SCE_APDL_NUMBER=3
 val SCE_APDL_STRING=4
-val SCE_APDL_WORD=5
-val SCE_APDL_COMMAND=6
+val SCE_APDL_OPERATOR=5
+val SCE_APDL_WORD=6
 val SCE_APDL_PROCESSOR=7
-val SCE_APDL_FUNCTION=8
+val SCE_APDL_COMMAND=8
+val SCE_APDL_SLASHCOMMAND=9
+val SCE_APDL_STARCOMMAND=10
+val SCE_APDL_ARGUMENT=11
+val SCE_APDL_FUNCTION=12
 # Lexical states for SCLEX_BASH
 lex Bash=SCLEX_BASH SCE_SH_
 val SCE_SH_DEFAULT=0
@@ -2523,6 +2549,37 @@ val SCE_SH_PARAM=10
 val SCE_SH_BACKTICKS=11
 val SCE_SH_HERE_DELIM=12
 val SCE_SH_HERE_Q=13
+# Lexical states for SCLEX_ASN1
+lex Asn1=SCLEX_ASN1 SCE_ASN1_
+val SCE_ASN1_DEFAULT=0
+val SCE_ASN1_COMMENT=1
+val SCE_ASN1_IDENTIFIER=2
+val SCE_ASN1_STRING=3
+val SCE_ASN1_OID=4
+val SCE_ASN1_SCALAR=5
+val SCE_ASN1_KEYWORD=6
+val SCE_ASN1_ATTRIBUTE=7
+val SCE_ASN1_DESCRIPTOR=8
+val SCE_ASN1_TYPE=9
+val SCE_ASN1_OPERATOR=10
+# Lexical states for SCLEX_VHDL
+lex VHDL=SCLEX_VHDL SCE_VHDL_
+val SCE_VHDL_DEFAULT=0
+val SCE_VHDL_COMMENT=1
+val SCE_VHDL_COMMENTLINEBANG=2
+val SCE_VHDL_NUMBER=3
+val SCE_VHDL_STRING=4
+val SCE_VHDL_OPERATOR=5
+val SCE_VHDL_IDENTIFIER=6
+val SCE_VHDL_STRINGEOL=7
+val SCE_VHDL_KEYWORD=8
+val SCE_VHDL_STDOPERATOR=9
+val SCE_VHDL_ATTRIBUTE=10
+val SCE_VHDL_STDFUNCTION=11
+val SCE_VHDL_STDPACKAGE=12
+val SCE_VHDL_STDTYPE=13
+val SCE_VHDL_USERWORD=14
+
 # Events
 
 evt void StyleNeeded=2000(int position)
index 93e888d0e6b9f77f7a9d202d8130e806f074df20..003284c12df5f14e8ef85a4669f8d50c2f7b71f7 100644 (file)
@@ -214,7 +214,7 @@ void CallTip::MouseClick(Point pt) {
 
 PRectangle CallTip::CallTipStart(int pos, Point pt, const char *defn,
                                  const char *faceName, int size,
-                                 int codePage_, Window &wParent) {
+                                 int codePage_, int characterSet, Window &wParent) {
        clickPlace = 0;
        if (val)
                delete []val;
@@ -234,7 +234,7 @@ PRectangle CallTip::CallTipStart(int pos, Point pt, const char *defn,
        inCallTipMode = true;
        posStartCallTip = pos;
        int deviceHeight = surfaceMeasure->DeviceHeightFont(size);
-       font.Create(faceName, SC_CHARSET_DEFAULT, deviceHeight, false, false);
+       font.Create(faceName, characterSet, deviceHeight, false, false);
        // Look for multiple lines in the text
        // Only support \n here - simply means container must avoid \r!
        int numLines = 1;
index ffaedb0771b746a40b1f4ac647b6adb26d993607..feff7ea0b1ef4355e9a65efdd6f62e538a85dfd4 100644 (file)
@@ -52,7 +52,8 @@ public:
 
        /// Setup the calltip and return a rectangle of the area required.
        PRectangle CallTipStart(int pos, Point pt, const char *defn,
-               const char *faceName, int size, int codePage_, Window &wParent);
+               const char *faceName, int size, int codePage_, 
+               int characterSet, Window &wParent);
 
        void CallTipCancel();
 
index 27e62ac61c1aedbd5ea11b4e4affbe8a7862e196..8183e4d8d3ca9fffc41ddbc983c85cb1b8557146 100644 (file)
@@ -96,17 +96,20 @@ void MarkerHandleSet::RemoveHandle(int handle) {
        }
 }
 
-void MarkerHandleSet::RemoveNumber(int markerNum) {
+bool MarkerHandleSet::RemoveNumber(int markerNum) {
+       bool performedDeletion = false;
        MarkerHandleNumber **pmhn = &root;
        while (*pmhn) {
                MarkerHandleNumber *mhn = *pmhn;
                if (mhn->number == markerNum) {
                        *pmhn = mhn->next;
                        delete mhn;
+                       performedDeletion = true;
                } else {
                        pmhn = &((*pmhn)->next);
                }
        }
+       return performedDeletion;
 }
 
 void MarkerHandleSet::CombineWith(MarkerHandleSet *other) {
@@ -306,13 +309,18 @@ void LineVector::MergeMarkers(int pos) {
        }
 }
 
-void LineVector::DeleteMark(int line, int markerNum) {
+void LineVector::DeleteMark(int line, int markerNum, bool all) {
        if (linesData[line].handleSet) {
                if (markerNum == -1) {
                        delete linesData[line].handleSet;
                        linesData[line].handleSet = 0;
                } else {
-                       linesData[line].handleSet->RemoveNumber(markerNum);
+                       bool performedDeletion = 
+                               linesData[line].handleSet->RemoveNumber(markerNum);
+                       while (all && performedDeletion) {
+                               performedDeletion = 
+                                       linesData[line].handleSet->RemoveNumber(markerNum);
+                       }
                        if (linesData[line].handleSet->Length() == 0) {
                                delete linesData[line].handleSet;
                                linesData[line].handleSet = 0;
@@ -442,6 +450,9 @@ void UndoHistory::AppendAction(actionType at, int position, char *data, int leng
        //Platform::DebugPrintf("%% %d action %d %d %d\n", at, position, lengthData, currentAction);
        //Platform::DebugPrintf("^ %d action %d %d\n", actions[currentAction - 1].at,
        //      actions[currentAction - 1].position, actions[currentAction - 1].lenData);
+       if (currentAction < savePoint) {
+               savePoint = -1;
+       }
        if (currentAction >= 1) {
                if (0 == undoSequenceDepth) {
                        // Top level actions may not always be coalesced
@@ -833,7 +844,7 @@ int CellBuffer::AddMark(int line, int markerNum) {
 
 void CellBuffer::DeleteMark(int line, int markerNum) {
        if ((line >= 0) && (line < lv.lines)) {
-               lv.DeleteMark(line, markerNum);
+               lv.DeleteMark(line, markerNum, false);
        }
 }
 
@@ -849,7 +860,7 @@ int CellBuffer::GetMark(int line) {
 
 void CellBuffer::DeleteAllMarks(int markerNum) {
        for (int line = 0; line < lv.lines; line++) {
-               lv.DeleteMark(line, markerNum);
+               lv.DeleteMark(line, markerNum, true);
        }
 }
 
index bf4a102f2268ea418e1d6199ca260d6a0a3d382a..b16eef5e51a745f92ed3ae10d5098fd9b0c2818c 100644 (file)
@@ -33,7 +33,7 @@ public:
        bool Contains(int handle);
        bool InsertHandle(int handle, int markerNum);
        void RemoveHandle(int handle);
-       void RemoveNumber(int markerNum);
+       bool RemoveNumber(int markerNum);
        void CombineWith(MarkerHandleSet *other);
 };
 
@@ -77,7 +77,7 @@ public:
 
        int AddMark(int line, int marker);
        void MergeMarkers(int pos);
-       void DeleteMark(int line, int markerNum);
+       void DeleteMark(int line, int markerNum, bool all);
        void DeleteMarkFromHandle(int markerHandle);
        int LineFromHandle(int markerHandle);
 };
index 97abd6254600de6e2a835c2c1ab93344b116c565..76fa456ccb613e44366b2205081e91d4bac74150 100644 (file)
@@ -653,7 +653,7 @@ int Document::FindColumn(int line, int column) {
        int position = LineStart(line);
        int columnCurrent = 0;
        if ((line >= 0) && (line < LinesTotal())) {
-               while (columnCurrent < column) {
+               while ((columnCurrent < column) && (position < Length())) {
                        char ch = cb.CharAt(position);
                        if (ch == '\t') {
                                columnCurrent = NextTab(columnCurrent, tabInChars);
@@ -682,43 +682,73 @@ void Document::Indent(bool forwards, int lineBottom, int lineTop) {
        }
 }
 
+// Convert line endings for a piece of text to a particular mode.
+// Stop at len or when a NUL is found.
+// Caller must delete the returned pointer.
+char *Document::TransformLineEnds(int *pLenOut, const char *s, size_t len, int eolMode) {
+       char *dest = new char[2 * len + 1];
+       const char *sptr = s;
+       char *dptr = dest;
+       for (size_t i = 0; (i < len) && (*sptr != '\0'); i++) {
+               if (*sptr == '\n' || *sptr == '\r') {
+                       if (eolMode == SC_EOL_CR) {
+                               *dptr++ = '\r';
+                       } else if (eolMode == SC_EOL_LF) {
+                               *dptr++ = '\n';
+                       } else { // eolMode == SC_EOL_CRLF
+                               *dptr++ = '\r';
+                               *dptr++ = '\n';
+                       }
+                       if ((*sptr == '\r') && (i+1 < len) && (*(sptr+1) == '\n')) {
+                               i++;
+                               sptr++;
+                       }
+                       sptr++;
+               } else {
+                       *dptr++ = *sptr++;
+               }
+       }
+       *dptr++ = '\0';
+       *pLenOut = (dptr - dest) - 1;
+       return dest;
+}
+
 void Document::ConvertLineEnds(int eolModeSet) {
        BeginUndoAction();
+
        for (int pos = 0; pos < Length(); pos++) {
                if (cb.CharAt(pos) == '\r') {
-                       if (cb.CharAt(pos + 1) == '\n') {
-                               if (eolModeSet != SC_EOL_CRLF) {
-                                       DeleteChars(pos, 2);
-                                       if (eolModeSet == SC_EOL_CR)
-                                               InsertString(pos, "\r", 1);
-                                       else
-                                               InsertString(pos, "\n", 1);
+                       if (cb.CharAt(pos + 1) == '\n') { 
+                               // CRLF
+                               if (eolModeSet == SC_EOL_CR) {
+                                       DeleteChars(pos + 1, 1); // Delete the LF
+                               } else if (eolModeSet == SC_EOL_LF) {
+                                       DeleteChars(pos, 1); // Delete the CR
                                } else {
                                        pos++;
                                }
-                       } else {
-                               if (eolModeSet != SC_EOL_CR) {
-                                       DeleteChars(pos, 1);
-                                       if (eolModeSet == SC_EOL_CRLF) {
-                                               InsertString(pos, "\r\n", 2);
-                                               pos++;
-                                       } else {
-                                               InsertString(pos, "\n", 1);
-                                       }
-                               }
-                       }
-               } else if (cb.CharAt(pos) == '\n') {
-                       if (eolModeSet != SC_EOL_LF) {
-                               DeleteChars(pos, 1);
+                       } else { 
+                               // CR
                                if (eolModeSet == SC_EOL_CRLF) {
-                                       InsertString(pos, "\r\n", 2);
+                                       InsertString(pos + 1, "\n", 1); // Insert LF
                                        pos++;
-                               } else {
-                                       InsertString(pos, "\r", 1);
+                               } else if (eolModeSet == SC_EOL_LF) {
+                                       InsertString(pos, "\n", 1); // Insert LF
+                                       DeleteChars(pos + 1, 1); // Delete CR
                                }
                        }
+               } else if (cb.CharAt(pos) == '\n') {
+                       // LF
+                       if (eolModeSet == SC_EOL_CRLF) {
+                               InsertString(pos, "\r", 1); // Insert CR
+                               pos++;
+                       } else if (eolModeSet == SC_EOL_CR) {
+                               InsertString(pos, "\r", 1); // Insert CR
+                               DeleteChars(pos + 1, 1); // Delete LF
+                       }
                }
        }
+
        EndUndoAction();
 }
 
@@ -854,7 +884,7 @@ bool Document::IsWordStartAt(int pos) {
  * the next character is of a different character class.
  */
 bool Document::IsWordEndAt(int pos) {
-       if (pos < Length() - 1) {
+       if (pos < Length()) {
                charClassification ccPrev = WordCharClass(CharAt(pos-1));
                return (ccPrev == ccWord || ccPrev == ccPunctuation) &&
                        (ccPrev != WordCharClass(CharAt(pos)));
index 54ecadb004535e261d6cabeaca8ca5d024ab6c0a..ce27ffc47611e638e8365ef78285abd5e0d05df8 100644 (file)
@@ -156,6 +156,7 @@ public:
        int GetColumn(int position);
        int FindColumn(int line, int column);
        void Indent(bool forwards, int lineBottom, int lineTop);
+       static char *TransformLineEnds(int *pLenOut, const char *s, size_t len, int eolMode);
        void ConvertLineEnds(int eolModeSet);
        void SetReadOnly(bool set) { cb.SetReadOnly(set); }
        bool IsReadOnly() { return cb.IsReadOnly(); }
index 591125dda678210237b9f13107977f3f8c6362f1..399e6597645e2133d345499dc1455ee099f5deda 100644 (file)
@@ -361,6 +361,8 @@ Editor::Editor() {
        topLine = 0;
        posTopLine = 0;
 
+       lengthForEncode = 0;
+
        needUpdateUI = true;
        braces[0] = invalidPosition;
        braces[1] = invalidPosition;
@@ -670,7 +672,7 @@ int Editor::LineFromLocation(Point pt) {
 
 void Editor::SetTopLine(int topLineNew) {
        topLine = topLineNew;
-       posTopLine = pdoc->LineStart(topLine);
+       posTopLine = pdoc->LineStart(cs.DocFromDisplay(topLine));
 }
 
 static inline bool IsEOLChar(char ch) {
@@ -1392,6 +1394,7 @@ void Editor::EnsureCaretVisible(bool useMargin, bool vert, bool horiz) {
                        Redraw();
                }
        }
+       UpdateSystemCaret();
 }
 
 void Editor::ShowCaretAtCurrentPosition() {
@@ -1416,6 +1419,10 @@ void Editor::InvalidateCaret() {
                InvalidateRange(posDrag, posDrag + 1);
        else
                InvalidateRange(currentPos, currentPos + 1);
+       UpdateSystemCaret();
+}
+
+void Editor::UpdateSystemCaret() {
 }
 
 void Editor::NeedWrapping(int docLineStartWrapping, int docLineEndWrapping) {
@@ -2206,8 +2213,9 @@ void Editor::DrawLine(Surface *surface, ViewStyle &vsDraw, int line, int lineVis
        // See if something overrides the line background color:  Either if caret is on the line
        // and background color is set for that, or if a marker is defined that forces its background
        // color onto the line, or if a marker is defined but has no selection margin in which to
-       // display itself.  These are checked in order with the earlier taking precedence.  When
-       // multiple markers cause background override, the color for the highest numbered one is used.
+       // display itself (as long as it's not an SC_MARK_EMPTY marker).  These are checked in order
+       // with the earlier taking precedence.  When multiple markers cause background override,
+       // the color for the highest numbered one is used.
        bool overrideBackground = false;
        ColourAllocated background;
        if (caret.active && vsDraw.showCaretLineBackground && ll->containsCaret) {
@@ -2228,9 +2236,9 @@ void Editor::DrawLine(Surface *surface, ViewStyle &vsDraw, int line, int lineVis
                if (vsDraw.maskInLine) {
                        int marks = pdoc->GetMark(line) & vsDraw.maskInLine;
                        if (marks) {
-                               overrideBackground = true;
                                for (int markBit = 0; (markBit < 32) && marks; markBit++) {
-                                       if (marks & 1) {
+                                       if ((marks & 1) && (vsDraw.markers[markBit].markType != SC_MARK_EMPTY)) {
+                                               overrideBackground = true;
                                                background = vsDraw.markers[markBit].back.allocated;
                                        }
                                        marks >>= 1;
@@ -2523,10 +2531,11 @@ void Editor::DrawLine(Surface *surface, ViewStyle &vsDraw, int line, int lineVis
                indStart[indica] = 0;
 
        for (int indicPos = lineStart; indicPos <= lineEnd; indicPos++) {
-               if ((indicPos == lineEnd) || (ll->indicators[indicPos] != ll->indicators[indicPos + 1])) {
+               if ((indicPos == lineStart) || (indicPos == lineEnd) ||
+                       (ll->indicators[indicPos] != ll->indicators[indicPos + 1])) {
                        int mask = 1 << pdoc->stylingBits;
                        for (int indicnum = 0; mask < 0x100; indicnum++) {
-                               if ((indicPos == lineEnd)) {
+                               if ((indicPos == lineStart) || (indicPos == lineEnd)) {
                                        indStart[indicnum] = ll->positions[indicPos];
                                } else if ((ll->indicators[indicPos + 1] & mask) && !(ll->indicators[indicPos] & mask)) {
                                        indStart[indicnum] = ll->positions[indicPos + 1];
@@ -3283,7 +3292,6 @@ void Editor::ClearAll() {
        currentPos = 0;
        SetTopLine(0);
        SetVerticalScrollPos();
-        InvalidateStyleRedraw();
 }
 
 void Editor::ClearDocumentStyle() {
@@ -4154,16 +4162,20 @@ int Editor::KeyCommand(unsigned int iMessage) {
                break;
        case SCI_LINEENDWRAP: {
                        int endPos = MovePositionSoVisible(StartEndDisplayLine(currentPos, false), 1);
-                       if (currentPos >= endPos)
-                               endPos = pdoc->LineEndPosition(currentPos);
+                       int realEndPos = pdoc->LineEndPosition(currentPos);
+                       if (endPos > realEndPos      // if moved past visible EOLs
+                               || currentPos >= endPos) // if at end of display line already
+                               endPos = realEndPos;
                        MovePositionTo(endPos);
                        SetLastXChosen();
                }
                break;
        case SCI_LINEENDWRAPEXTEND: {
                        int endPos = MovePositionSoVisible(StartEndDisplayLine(currentPos, false), 1);
-                       if (currentPos >= endPos)
-                               endPos = pdoc->LineEndPosition(currentPos);
+                       int realEndPos = pdoc->LineEndPosition(currentPos);
+                       if (endPos > realEndPos      // if moved past visible EOLs
+                               || currentPos >= endPos) // if at end of display line already
+                               endPos = realEndPos;
                        MovePositionTo(endPos, selStream);
                        SetLastXChosen();
                }
@@ -4929,7 +4941,7 @@ void Editor::ButtonDown(Point pt, unsigned int curTime, bool shift, bool ctrl, b
                //Platform::DebugPrintf("Double click: %d - %d\n", anchor, currentPos);
                if (doubleClick) {
                        NotifyDoubleClick(pt, shift);
-                       if (PointIsHotspot(newPos))
+                       if (PositionIsHotspot(newPos))
                                NotifyHotSpotDoubleClicked(newPos, shift, ctrl, alt);
                }
        } else {        // Single click
@@ -6301,6 +6313,9 @@ sptr_t Editor::WndProc(unsigned int iMessage, uptr_t wParam, sptr_t lParam) {
        case SCI_GETCOLUMN:
                return pdoc->GetColumn(wParam);
 
+       case SCI_FINDCOLUMN:
+               return pdoc->FindColumn(wParam, lParam);
+
        case SCI_SETHSCROLLBAR :
                if (horizontalScrollBarVisible != (wParam != 0)) {
                        horizontalScrollBarVisible = wParam != 0;
@@ -6949,6 +6964,10 @@ sptr_t Editor::WndProc(unsigned int iMessage, uptr_t wParam, sptr_t lParam) {
                SetSelection(currentPos, anchor);       // Ensure selection inside document
                return 0;
 
+       case SCI_SETLENGTHFORENCODE:
+               lengthForEncode = wParam;
+               return 0;
+
        case SCI_SELECTIONISRECTANGLE:
                return selType == selRectangle ? 1 : 0;
 
index b9bda04ab4678c4ec19ed761a5bdfd4f688bc436..e14cb5ed95c125891c6a4f16cea35c3365ebaa47 100644 (file)
@@ -127,7 +127,7 @@ public:
 
 /**
  * Hold a piece of text selected for copying or dragging.
- * The text is expected to hold a terminating '\0'.
+ * The text is expected to hold a terminating '\0' and this is counted in len.
  */
 class SelectionText {
 public:
@@ -257,6 +257,7 @@ protected:  // ScintillaBase subclass needs access to much of Editor
        int searchFlags;
        int topLine;
        int posTopLine;
+       int lengthForEncode;
 
        bool needUpdateUI;
        Position braces[2];
@@ -368,6 +369,7 @@ protected:  // ScintillaBase subclass needs access to much of Editor
        void ShowCaretAtCurrentPosition();
        void DropCaret();
        void InvalidateCaret();
+       virtual void UpdateSystemCaret();
 
        void NeedWrapping(int docLineStartWrapping = 0, int docLineEndWrapping = 0x7ffffff);
        bool WrapLines(bool fullWrap, int priorityWrapLineStart);
index def79f6ecdce17cfe32c1801e71064bbfb300a65..67e52ec11ad312874d7947bec42730176016b43d 100644 (file)
@@ -132,6 +132,7 @@ int Scintilla_LinkLexers() {
        LINK_LEXER(lmAda);
        LINK_LEXER(lmAPDL);
        LINK_LEXER(lmAsm);
+       LINK_LEXER(lmAsn1);
        LINK_LEXER(lmAU3);
        LINK_LEXER(lmAVE);
        LINK_LEXER(lmBaan);
@@ -189,6 +190,7 @@ int Scintilla_LinkLexers() {
        LINK_LEXER(lmVB);
        LINK_LEXER(lmVBScript);
        LINK_LEXER(lmVerilog);
+       LINK_LEXER(lmVHDL);
        LINK_LEXER(lmYAML);
 
 //--Autogenerated -- end of automatically generated section
index b739e9a7cb562845ad58855044131c8eff494566..1cf263e5018a9eef4ba08258943ca595834583df 100644 (file)
@@ -1,3 +1,10 @@
+// Scintilla source code edit control
+/** @file LexAPDL.cxx
+ ** Lexer for APDL. Based on the lexer for Assembler by The Black Horus.
+ ** By Hadar Raz.
+ **/
+// Copyright 1998-2003 by Neil Hodgson <neilh@scintilla.org>
+// The License.txt file describes the conditions under which this software may be distributed.
 
 #include <stdlib.h>
 #include <string.h>
 
 
 static inline bool IsAWordChar(const int ch) {
-       return (ch < 0x80) && (isalnum(ch) || ch == '_');
+       return (ch < 0x80 && (isalnum(ch) || ch == '_'));
 }
 
-static inline bool IsAWordStart(const int ch) {
-       return (ch < 0x80) && (isalnum(ch) || ch == '/' || ch == '*');
+static inline bool IsAnOperator(char ch) {
+       // '.' left out as it is used to make up numbers
+       if (ch == '*' || ch == '/' || ch == '-' || ch == '+' ||
+               ch == '(' || ch == ')' || ch == '=' || ch == '^' ||
+               ch == '[' || ch == ']' || ch == '<' || ch == '&' ||
+               ch == '>' || ch == ',' || ch == '|' || ch == '~' ||
+               ch == '$' || ch == ':' || ch == '%')
+               return true;
+       return false;
 }
 
-inline bool IsABlank(unsigned int ch) {
-    return (ch == ' ') || (ch == 0x09) || (ch == 0x0b) ;
-}
-
-
-
-static void ColouriseAPDLDoc(unsigned int startPos, int length, int initStyle,
-                              WordList *keywordlists[], Accessor &styler)
-{
-
-    //~ FILE *fp;
-    //~ fp = fopen("myoutput.txt", "w");
-
-    WordList &commands = *keywordlists[0];
-    WordList &processors = *keywordlists[1];
-    WordList &functions = *keywordlists[2];
-
-
-    // backtrack to the beginning of the document, this may be slow for big documents.
-    initStyle = SCE_APDL_DEFAULT;
-    StyleContext sc(0, startPos+length, initStyle, styler);
-
-    // backtrack to the nearest keyword
-    //~ while ((startPos > 1) && (styler.StyleAt(startPos) != SCE_APDL_WORD)) {
-            //~ startPos--;
-    //~ }
-    //~ startPos = styler.LineStart(styler.GetLine(startPos));
-    //~ initStyle = styler.StyleAt(startPos - 1);
-    //~ StyleContext sc(startPos, endPos-startPos, initStyle, styler);
-
-    bool firstInLine = true;
-    bool atEOL;
-
-    for (; sc.More(); sc.Forward()) {
-
-        atEOL = (sc.ch == '\r' && sc.chNext == '\n') || (sc.ch == '\n');
-
-        //~ if (sc.ch == '\r') {
-            //~ fprintf(fp,"CR\t%d\t%d", atEOL, firstInLine);
-        //~ } else if (sc.ch == '\n') {
-            //~ fprintf(fp,"LF\t%d\t%d", atEOL, firstInLine);
-        //~ } else {
-            //~ fprintf(fp,"%c\t%d\t%d", sc.ch, atEOL, firstInLine);
-        //~ }
-
-        // Determine if the current state should terminate.
-        if (sc.state == SCE_APDL_COMMENT) {
-            //~ fprintf(fp,"\tCOMMENT");
-            if (atEOL) {
-                sc.SetState(SCE_APDL_DEFAULT);
-            }
-        } else if (sc.state == SCE_APDL_COMMENTBLOCK) {
-            //~ fprintf(fp,"\tCOMMENTBLOCK");
-            if (atEOL) {
-                if (sc.ch == '\r') {
-                    sc.Forward();
-                }
-                sc.ForwardSetState(SCE_APDL_DEFAULT);
-            }
-        } else if (sc.state == SCE_APDL_NUMBER) {
-            //~ fprintf(fp,"\tNUMBER");
-            if (isdigit(sc.ch)) {
-            } else if ((sc.ch == 'e' || sc.ch == 'E') && (isdigit(sc.chNext) || sc.chNext == '+' || sc.chNext == '-')) {
-            } else if (sc.ch == '.') {
-            } else if ((sc.ch == '+' || sc.ch == '-') && (sc.chPrev == 'e' || sc.chPrev == 'E')) {
-            } else {
-                sc.SetState(SCE_APDL_DEFAULT);
-            }
-        } else if (sc.state == SCE_APDL_STRING) {
-            //~ fprintf(fp,"\tSTRING");
-            if (sc.ch == '\"') {
-                //~ sc.ForwardSetState(SCE_APDL_DEFAULT);
-                sc.Forward();
-                atEOL = (sc.ch == '\r' && sc.chNext == '\n') || (sc.ch == '\n');
-                if (atEOL) {
-                    firstInLine = true;
-                }
-                sc.SetState(SCE_APDL_DEFAULT);
-            }
-        } else if (sc.state == SCE_APDL_WORD) {
-            //~ fprintf(fp,"\tWORD");
-            if (!IsAWordChar(sc.ch) || sc.ch == '%') {
-                char s[100];
-                sc.GetCurrentLowered(s, sizeof(s));
-                if (commands.InList(s) && firstInLine) {
-                    if (IsABlank(sc.ch) || sc.ch == ',' || atEOL) {
-                        sc.ChangeState(SCE_APDL_COMMAND);
-                    }
-                    if (sc.ch != '\n') {
-                        firstInLine = false;
-                    }
-                } else if (processors.InList(s)) {
-                    if (IsABlank(sc.ch) || atEOL) {
-                        sc.ChangeState(SCE_APDL_PROCESSOR);
-                        while (sc.ch != '\n') {
-                            sc.Forward();
-                        }
-                        sc.Forward();
-                    }
-                } else if (functions.InList(s)) {
-                    sc.ChangeState(SCE_APDL_FUNCTION);
-                    if (sc.ch != '\n') {
-                        firstInLine = false;
-                    }
-                } else {
-                    if (sc.ch != '\n') {
-                        firstInLine = false;
-                    }
-                }
-                sc.SetState(SCE_APDL_DEFAULT);
-            }
-        }
-
-        // Determine if a new state should be entered.
-        if (sc.state == SCE_APDL_DEFAULT) {
-            if (sc.ch == '!' && sc.chNext != '!') {
-                sc.SetState(SCE_APDL_COMMENT);
-            } else if (sc.ch == '!' && sc.chNext == '!') {
-                sc.SetState(SCE_APDL_COMMENTBLOCK);
-            } else if (IsADigit(sc.ch) && !IsAWordChar(sc.chPrev)) {
-                sc.SetState(SCE_APDL_NUMBER);
-            } else if (sc.ch == '.' && (isoperator(static_cast<char>(sc.chPrev)) ||
-               IsABlank(sc.chPrev) || sc.chPrev == '\n' || sc.chPrev == '\r')) {
-                sc.SetState(SCE_APDL_NUMBER);
-            } else if (sc.ch == '\"') {
-                sc.SetState(SCE_APDL_STRING);
-            } else if (IsAWordStart(sc.ch) && (!IsADigit(sc.chPrev))) {
-                sc.SetState(SCE_APDL_WORD);
-            }
-
-        }
-        //~ fprintf(fp,"\n");
-
-        if (atEOL) {
-            firstInLine = true;
-        }
-
-    }
-    sc.Complete();
+static void ColouriseAPDLDoc(unsigned int startPos, int length, int initStyle, WordList *keywordlists[],
+                            Accessor &styler) {
+
+       int stringStart = ' ';
+
+       WordList &processors = *keywordlists[0];
+       WordList &commands = *keywordlists[1];
+       WordList &slashcommands = *keywordlists[2];
+       WordList &starcommands = *keywordlists[3];
+       WordList &arguments = *keywordlists[4];
+       WordList &functions = *keywordlists[5];
+
+       // Do not leak onto next line
+       initStyle = SCE_APDL_DEFAULT;
+       StyleContext sc(startPos, length, initStyle, styler);
+
+       for (; sc.More(); sc.Forward()) {
+               // Determine if the current state should terminate.
+               if (sc.state == SCE_APDL_NUMBER) {
+                       if (!(IsADigit(sc.ch) || sc.ch == '.' || (sc.ch == 'e' || sc.ch == 'E') ||
+                               ((sc.ch == '+' || sc.ch == '-') && (sc.chPrev == 'e' || sc.chPrev == 'E')))) {
+                               sc.SetState(SCE_APDL_DEFAULT);
+                       }
+               } else if (sc.state == SCE_APDL_COMMENT) {
+                       if (sc.atLineEnd) {
+                               sc.SetState(SCE_APDL_DEFAULT);
+                       }
+               } else if (sc.state == SCE_APDL_COMMENTBLOCK) {
+                       if (sc.atLineEnd) {
+                               if (sc.ch == '\r') {
+                               sc.Forward();
+                               }
+                               sc.ForwardSetState(SCE_APDL_DEFAULT);
+                       }
+               } else if (sc.state == SCE_APDL_STRING) {
+                       if (sc.atLineEnd) {
+                               sc.SetState(SCE_APDL_DEFAULT);
+                       } else if ((sc.ch == '\'' && stringStart == '\'') || (sc.ch == '\"' && stringStart == '\"')) {
+                               sc.ForwardSetState(SCE_APDL_DEFAULT);
+                       }
+               } else if (sc.state == SCE_APDL_WORD) {
+                       if (!IsAWordChar(sc.ch)) {
+                               char s[100];
+                               sc.GetCurrentLowered(s, sizeof(s));
+                               if (processors.InList(s)) {
+                                       sc.ChangeState(SCE_APDL_PROCESSOR);
+                               } else if (slashcommands.InList(s)) {
+                                       sc.ChangeState(SCE_APDL_SLASHCOMMAND);
+                               } else if (starcommands.InList(s)) {
+                                       sc.ChangeState(SCE_APDL_STARCOMMAND);
+                               } else if (commands.InList(s)) {
+                                       sc.ChangeState(SCE_APDL_COMMAND);
+                               } else if (arguments.InList(s)) {
+                                       sc.ChangeState(SCE_APDL_ARGUMENT);
+                               } else if (functions.InList(s)) {
+                                       sc.ChangeState(SCE_APDL_FUNCTION);
+                               }
+                               sc.SetState(SCE_APDL_DEFAULT);
+                       }
+               } else if (sc.state == SCE_APDL_OPERATOR) {
+                       if (!IsAnOperator(static_cast<char>(sc.ch))) {
+                           sc.SetState(SCE_APDL_DEFAULT);
+                       }
+               }
+
+               // Determine if a new state should be entered.
+               if (sc.state == SCE_APDL_DEFAULT) {
+                       if (sc.ch == '!' && sc.chNext == '!') {
+                               sc.SetState(SCE_APDL_COMMENTBLOCK);
+                       } else if (sc.ch == '!') {
+                               sc.SetState(SCE_APDL_COMMENT);
+                       } else if (IsADigit(sc.ch) || (sc.ch == '.' && IsADigit(sc.chNext))) {
+                               sc.SetState(SCE_APDL_NUMBER);
+                       } else if (sc.ch == '\'' || sc.ch == '\"') {
+                               sc.SetState(SCE_APDL_STRING);
+                               stringStart = sc.ch;
+                       } else if (IsAWordChar(sc.ch) || ((sc.ch == '*' || sc.ch == '/') && !isgraph(sc.chPrev))) {
+                               sc.SetState(SCE_APDL_WORD);
+                       } else if (IsAnOperator(static_cast<char>(sc.ch))) {
+                               sc.SetState(SCE_APDL_OPERATOR);
+                       }
+               }
+       }
+       sc.Complete();
 }
 
 static const char * const apdlWordListDesc[] = {
-    "Commands",
-    "Processors",
-    "Functions",
+    "processors",
+    "commands",
+    "slashommands",
+    "starcommands",
+    "arguments",
+    "functions",
     0
 };
 
index 8bc1f062eb473016f9a680ffe762a280c328de5a..31e4ee52d2d78be5a5ce611d5e1cd1702eca52ed 100644 (file)
 //                  Fixed "#comments_end" -> "#comments-end"  
 //                  Fixed Sendkeys in Strings when not terminated with }
 //                  Added support for Sendkey strings that have second parameter e.g. {UP 5} or {a down}
-// April 26, 2004   Fixed # pre-processor statement inside of comment block would invalidly change the color.
+// April 26, 2004 - Fixed # pre-processor statement inside of comment block would invalidly change the color.
 //                  Added logic for #include <xyz.au3> to treat the <> as string
 //                  Added underscore to IsAOperator.
+// May 17, 2004   - Changed the folding logic from indent to keyword folding.
+//                  Added Folding logic for blocks of single-commentlines or commentblock.
+//                        triggered by: fold.comment=1
+//                  Added Folding logic for preprocessor blocks triggered by fold.preprocessor=1
+//                  Added Special for #region - #endregion syntax highlight and folding.
+// May 30, 2004   - Fixed issue with continuation lines on If statements.
+// June 5, 2004   - Added comma to Operators for better readability.
+//                  Added fold.compact support set with fold.compact=1
+//                  Changed folding inside of #cs-#ce. Default is no keyword folding inside comment blocks when fold.comment=1
+//                        it will now only happen when fold.comment=2.
+// 
 // Copyright for Scintilla: 1998-2001 by Neil Hodgson <neilh@scintilla.org>
 // The License.txt file describes the conditions under which this software may be distributed.
 // Scintilla source code edit control
 #include "Scintilla.h"
 #include "SciLexer.h"
 
-static bool IsAU3Comment(Accessor &styler, int pos, int len) {
-       return len>0 && styler[pos]==';';
-}
-
 static inline bool IsTypeCharacter(const int ch)
 {
     return ch == '$';
 }
 static inline bool IsAWordChar(const int ch)
 {
-    return (ch < 0x80) && (isalnum(ch) || ch == '_' || ch == '-');
+    return (ch < 0x80) && (isalnum(ch) || ch == '_');
 }
 
 static inline bool IsAWordStart(const int ch)
@@ -57,7 +64,7 @@ static inline bool IsAOperator(char ch) {
                return false;
        if (ch == '+' || ch == '-' || ch == '*' || ch == '/' ||
            ch == '&' || ch == '^' || ch == '=' || ch == '<' || ch == '>' ||
-           ch == '(' || ch == ')' || ch == '[' || ch == ']' || ch == '_' )
+           ch == '(' || ch == ')' || ch == '[' || ch == ']' || ch == ',' )
                return true;
        return false;
 }
@@ -111,9 +118,9 @@ static int GetSendKey(const char *szLine, char *szKey)
        // Check if the second portion is either a number or one of these keywords
        szKey[nKeyPos] = '\0';
        szSpecial[nSpecPos] = '\0';
-       if (strcmp(szSpecial,"down")==0    || strcmp(szSpecial,"up")==0  ||
-               strcmp(szSpecial,"on")==0      || strcmp(szSpecial,"off")==0 || 
-               strcmp(szSpecial,"toggle")==0  || nSpecNum == 1 )
+       if (strcmp(szSpecial,"down")== 0    || strcmp(szSpecial,"up")== 0  ||
+               strcmp(szSpecial,"on")== 0      || strcmp(szSpecial,"off")== 0 || 
+               strcmp(szSpecial,"toggle")== 0  || nSpecNum == 1 )
        {
                nFlag = 0;
        }
@@ -121,9 +128,9 @@ static int GetSendKey(const char *szLine, char *szKey)
        {
                nFlag = 1;
        }
-       return nFlag;  // 1 is bad, 0 is good
+       return nFlag;  // 1 is bad, 0 is good 
 
-} // GetSendKey()
+} // GetSendKey() 
 
 static void ColouriseAU3Doc(unsigned int startPos, 
                                                        int length, int initStyle,
@@ -135,6 +142,7 @@ static void ColouriseAU3Doc(unsigned int startPos,
     WordList &keywords3 = *keywordlists[2];
     WordList &keywords4 = *keywordlists[3];
     WordList &keywords5 = *keywordlists[4];
+    WordList &keywords6 = *keywordlists[5];
     styler.StartAt(startPos);
 
     StyleContext sc(startPos, length, initStyle, styler);
@@ -148,9 +156,9 @@ static void ColouriseAU3Doc(unsigned int startPos,
         {
             case SCE_AU3_COMMENTBLOCK:
             {
-                               if (!IsAWordChar(sc.ch))
+                               if (!(IsAWordChar(sc.ch) || (sc.ch == '-' && strcmp(s, "#comments") == 0)))
                                {
-                                       if ((strcmp(s, "#ce")==0 || strcmp(s, "#comments-end")==0)) 
+                                       if ((strcmp(s, "#ce")== 0 || strcmp(s, "#comments-end")== 0)) 
                                        {sc.SetState(SCE_AU3_COMMENT);}  // set to comment line for the rest of the line
                                        else
                                        {sc.SetState(SCE_AU3_COMMENTBLOCK);}
@@ -167,13 +175,18 @@ static void ColouriseAU3Doc(unsigned int startPos,
                 sc.SetState(SCE_AU3_DEFAULT);
                 break;
             }
+            case SCE_AU3_SPECIAL:
+            {
+                if (sc.atLineEnd) {sc.SetState(SCE_AU3_DEFAULT);}
+                break;
+            }
             case SCE_AU3_KEYWORD:
             {
-                if (!IsAWordChar(sc.ch))
+                if (!(IsAWordChar(sc.ch) || (sc.ch == '-' && (strcmp(s, "#comments") == 0 || strcmp(s, "#include") == 0))))
                 {
                     if (!IsTypeCharacter(sc.ch))
                     {
-                                               if (strcmp(s, "#cs")==0 || strcmp(s, "#comments-start")==0 )
+                                               if (strcmp(s, "#cs")== 0 || strcmp(s, "#comments-start")== 0 )
                                                {
                                                        sc.ChangeState(SCE_AU3_COMMENTBLOCK);
                                                        sc.SetState(SCE_AU3_COMMENTBLOCK);
@@ -193,11 +206,19 @@ static void ColouriseAU3Doc(unsigned int startPos,
                                                else if (keywords5.InList(s)) {
                                                        sc.ChangeState(SCE_AU3_PREPROCESSOR);
                                                        sc.SetState(SCE_AU3_DEFAULT);
-                                                       if (strcmp(s, "#include")==0)
+                                                       if (strcmp(s, "#include")== 0)
                                                        {
                                                                si = 3;   // use to determine string start for #inlude <>
                                                        }
                                                }
+                                               else if (keywords6.InList(s)) {
+                                                       sc.ChangeState(SCE_AU3_SPECIAL);
+                                                       sc.SetState(SCE_AU3_SPECIAL);
+                                               }
+                                               else if (strcmp(s, "_") == 0) {
+                                                       sc.ChangeState(SCE_AU3_OPERATOR);
+                                                       sc.SetState(SCE_AU3_DEFAULT);
+                                               }
                                                else if (!IsAWordChar(sc.ch)) {
                                                        sc.ChangeState(SCE_AU3_DEFAULT);
                                                        sc.SetState(SCE_AU3_DEFAULT);
@@ -302,8 +323,8 @@ static void ColouriseAU3Doc(unsigned int startPos,
                                sc.SetState(SCE_AU3_STRING);
                                si = 2; }
             else if (IsADigit(sc.ch) || (sc.ch == '.' && IsADigit(sc.chNext))) {sc.SetState(SCE_AU3_NUMBER);}
-            else if (IsAOperator(static_cast<char>(sc.ch))) {sc.SetState(SCE_AU3_OPERATOR);}
             else if (IsAWordStart(sc.ch)) {sc.SetState(SCE_AU3_KEYWORD);}
+            else if (IsAOperator(static_cast<char>(sc.ch))) {sc.SetState(SCE_AU3_OPERATOR);}
                        else if (sc.atLineEnd) {sc.SetState(SCE_AU3_DEFAULT);}
         }
     }      //for (; sc.More(); sc.Forward())
@@ -311,11 +332,62 @@ static void ColouriseAU3Doc(unsigned int startPos,
 }
 
 //
+static bool IsStreamCommentStyle(int style) {
+       return style == SCE_AU3_COMMENT || style == SCE_AU3_COMMENTBLOCK;
+}
+
 //
-static void FoldAU3Doc(unsigned int startPos, int length, int, WordList *[], Accessor &styler)
+// Routine to find first none space on the current line and return its Style
+// needed for comment lines not starting on pos 1 
+static int GetStyleFirstWord(unsigned int szLine, Accessor &styler)
 {
-               int endPos = startPos + length;
+       int nsPos = styler.LineStart(szLine);
+       int nePos = styler.LineStart(szLine+1) - 1;
+       while (isspacechar(styler.SafeGetCharAt(nsPos)) && nsPos < nePos)
+       {
+               nsPos++; // skip to next char
+
+       } // End While
+       return styler.StyleAt(nsPos);
 
+} // GetStyleFirstWord()
+
+//
+// Routine to check the last "none comment" character on a line to see if its a continuation
+// 
+static bool IsContinuationLine(unsigned int szLine, Accessor &styler)
+{
+       int nsPos = styler.LineStart(szLine);
+       int nePos = styler.LineStart(szLine+1) - 2;
+       //int stylech = styler.StyleAt(nsPos);
+       while (nsPos < nePos)
+       {
+               //stylech = styler.StyleAt(nePos);
+               int stylech = styler.StyleAt(nsPos);
+               if (!(stylech == SCE_AU3_COMMENT)) {
+                       char ch = styler.SafeGetCharAt(nePos);
+                       if (!isspacechar(ch)) {
+                               if (ch == '_')
+                                       return true;
+                               else
+                                       return false;
+                       }
+               }
+               nePos--; // skip to next char
+       } // End While
+       return false;
+} // IsContinuationLine()
+
+
+//
+static void FoldAU3Doc(unsigned int startPos, int length, int, WordList *[], Accessor &styler)
+{
+       int endPos = startPos + length;
+       // get settings from the config files for folding comments and preprocessor lines
+       bool foldComment = styler.GetPropertyInt("fold.comment") != 0;
+       bool foldInComment = styler.GetPropertyInt("fold.comment") == 2;
+       bool foldCompact = styler.GetPropertyInt("fold.compact", 1) != 0;
+       bool foldpreprocessor = styler.GetPropertyInt("fold.preprocessor") != 0;
        // Backtrack to previous line in case need to fix its fold status
        int lineCurrent = styler.GetLine(startPos);
        if (startPos > 0) {
@@ -324,35 +396,207 @@ static void FoldAU3Doc(unsigned int startPos, int length, int, WordList *[], Acc
                        startPos = styler.LineStart(lineCurrent);
                }
        }
-       int spaceFlags = 0;
-       int indentCurrent = styler.IndentAmount(lineCurrent, &spaceFlags, IsAU3Comment);
-       char chNext = styler[startPos];
+       // vars for style of previous/current/next lines 
+       int style = GetStyleFirstWord(lineCurrent,styler);
+       int stylePrev = 0;
+       // find the first previous line without continuation character at the end
+       while ((lineCurrent > 0 && IsContinuationLine(lineCurrent,styler)) ||
+              (lineCurrent > 1 && IsContinuationLine(lineCurrent-1,styler))) {
+               lineCurrent--;
+               startPos = styler.LineStart(lineCurrent);
+       }
+       if (lineCurrent > 0) {
+               stylePrev = GetStyleFirstWord(lineCurrent-1,styler);
+       }
+       // vars for getting first word to check for keywords
+       bool FirstWordStart = false;
+       bool FirstWordEnd = false;
+       char szKeyword[10]="";
+       int      szKeywordlen = 0;
+       char szThen[5]="";
+       int      szThenlen = 0;
+       bool ThenFoundLast = false;
+       // var for indentlevel
+       int levelCurrent = SC_FOLDLEVELBASE;
+       if (lineCurrent > 0)
+               levelCurrent = styler.LevelAt(lineCurrent-1) >> 16;
+       int levelNext = levelCurrent;
+       //  
+       int     visibleChars = 0;
+       char chNext = styler.SafeGetCharAt(startPos);
+       char chPrev = ' ';
+       //
        for (int i = startPos; i < endPos; i++) {
                char ch = chNext;
                chNext = styler.SafeGetCharAt(i + 1);
-
-               if ((ch == '\r' && chNext != '\n') || (ch == '\n') || (i == endPos)) {
-                       int lev = indentCurrent;
-                       int indentNext = styler.IndentAmount(lineCurrent + 1, &spaceFlags, IsAU3Comment);
-                       if (!(indentCurrent & SC_FOLDLEVELWHITEFLAG)) {
-                               // Only non whitespace lines can be headers
-                               if ((indentCurrent & SC_FOLDLEVELNUMBERMASK) < (indentNext & SC_FOLDLEVELNUMBERMASK)) {
-                                       lev |= SC_FOLDLEVELHEADERFLAG;
-                               } else if (indentNext & SC_FOLDLEVELWHITEFLAG) {
-                                       // Line after is blank so check the next - maybe should continue further?
-                                       int spaceFlags2 = 0;
-                                       int indentNext2 = styler.IndentAmount(lineCurrent + 2, &spaceFlags2, IsAU3Comment);
-                                       if ((indentCurrent & SC_FOLDLEVELNUMBERMASK) < (indentNext2 & SC_FOLDLEVELNUMBERMASK)) {
-                                               lev |= SC_FOLDLEVELHEADERFLAG;
+               if (IsAWordChar(ch)) {
+                       visibleChars++;
+               }
+               // get the syle for the current character neede to check in comment
+               int stylech = styler.StyleAt(i);
+               // get first word for the line for indent check max 9 characters
+               if (FirstWordStart && (!(FirstWordEnd))) {
+                       if (!IsAWordChar(ch)) {
+                               FirstWordEnd = true;
+                               szKeyword[szKeywordlen] = '\0';
+                       }
+                       else {
+                               if (szKeywordlen < 10) {
+                               szKeyword[szKeywordlen++] = static_cast<char>(tolower(ch));
+                               }
+                       }
+               }
+               // start the capture of the first word 
+               if (!(FirstWordStart)) {
+                       if (IsAWordChar(ch) || IsAWordStart(ch) || ch == ';') {
+                               FirstWordStart = true;
+                               szKeyword[szKeywordlen++] = static_cast<char>(tolower(ch));
+                       }
+               }
+               // only process this logic when not in comment section
+               if (!(stylech == SCE_AU3_COMMENT)) {
+                       if (ThenFoundLast) {
+                               if (IsAWordChar(ch)) {
+                                       ThenFoundLast = false;
+                               }               
+                       }
+                       // find out if the word "then" is the last on a "if" line
+                       if (FirstWordEnd && strcmp(szKeyword,"if") == 0) {
+                               if (szThenlen == 4) {
+                                       szThen[0] = szThen[1];
+                                       szThen[1] = szThen[2];
+                                       szThen[2] = szThen[3];
+                                       szThen[3] = static_cast<char>(tolower(ch));
+                                       if (strcmp(szThen,"then") == 0 ) {
+                                               ThenFoundLast = true;
+                                       }
+                               }
+                               else {
+                                       szThen[szThenlen++] = static_cast<char>(tolower(ch));
+                                       if (szThenlen == 5) {
+                                               szThen[4] = '\0';
                                        }
                                }
                        }
-                       indentCurrent = indentNext;
-                       styler.SetLevel(lineCurrent, lev);
+               }
+               // End of Line found so process the information 
+               if ((ch == '\r' && chNext != '\n') || (ch == '\n') || (i == endPos)) {
+                       // **************************
+                       // Folding logic for Keywords
+                       // **************************
+                       // if a keyword is found on the current line and the line doesn't end with _ (continuation)
+                       //    and we are not inside a commentblock.
+                       if (szKeywordlen > 0 && (!(chPrev == '_')) && 
+                               ((!(IsStreamCommentStyle(style)) || foldInComment)) ) {
+                               szKeyword[szKeywordlen] = '\0';
+                               // only fold "if" last keyword is "then"  (else its a one line if)
+                               if (strcmp(szKeyword,"if") == 0  && ThenFoundLast) {
+                                               levelNext++;
+                               }
+                               // create new fold for these words 
+                               if (strcmp(szKeyword,"do") == 0   || strcmp(szKeyword,"for") == 0 ||
+                                       strcmp(szKeyword,"func") == 0 || strcmp(szKeyword,"while") == 0||
+                                       strcmp(szKeyword,"#region") == 0 ) {
+                                               levelNext++;
+                               }
+                               // create double Fold for select because Case will subtract one of the current level
+                               if (strcmp(szKeyword,"select") == 0) {
+                                               levelNext++;
+                                               levelNext++;
+                               }
+                               // end the fold for these words before the current line
+                               if (strcmp(szKeyword,"endfunc") == 0 || strcmp(szKeyword,"endif") == 0 ||
+                                       strcmp(szKeyword,"next") == 0    || strcmp(szKeyword,"until") == 0 || 
+                                       strcmp(szKeyword,"wend") == 0){
+                                               levelNext--;
+                                               levelCurrent--;
+                               }
+                               // end the fold for these words before the current line and Start new fold 
+                               if (strcmp(szKeyword,"case") == 0      || strcmp(szKeyword,"else") == 0 ||
+                                       strcmp(szKeyword,"elseif") == 0 ) {
+                                               levelCurrent--;
+                               }
+                               // end the double fold for this word before the current line
+                               if (strcmp(szKeyword,"endselect") == 0 ) {
+                                               levelNext--;
+                                               levelNext--;
+                                               levelCurrent--;
+                                               levelCurrent--;
+                               }
+                               // end the fold for these words on the current line
+                               if (strcmp(szKeyword,"#endregion") == 0 ) {
+                                               levelNext--;
+                               }
+                       }
+                       // Preprocessor and Comment folding
+                       int styleNext = GetStyleFirstWord(lineCurrent + 1,styler);
+                       // *************************************
+                       // Folding logic for preprocessor blocks
+                       // *************************************
+                       // process preprosessor line
+                       if (foldpreprocessor && style == SCE_AU3_PREPROCESSOR) {
+                               if (!(stylePrev == SCE_AU3_PREPROCESSOR) && (styleNext == SCE_AU3_PREPROCESSOR)) {
+                                   levelNext++;
+                               }
+                               // fold till the last line for normal comment lines
+                               else if (stylePrev == SCE_AU3_PREPROCESSOR && !(styleNext == SCE_AU3_PREPROCESSOR)) {
+                                       levelNext--;
+                               }
+                       }
+                       // *********************************
+                       // Folding logic for Comment blocks
+                       // *********************************
+                       if (foldComment && IsStreamCommentStyle(style)) {
+                               // Start of a comment block
+                               if (!(stylePrev==style) && IsStreamCommentStyle(styleNext) && styleNext==style) {
+                                   levelNext++;
+                               } 
+                               // fold till the last line for normal comment lines
+                               else if (IsStreamCommentStyle(stylePrev) 
+                                               && !(styleNext == SCE_AU3_COMMENT)
+                                               && stylePrev == SCE_AU3_COMMENT 
+                                               && style == SCE_AU3_COMMENT) {
+                                       levelNext--;
+                               }
+                               // fold till the one but last line for Blockcomment lines
+                               else if (IsStreamCommentStyle(stylePrev) 
+                                               && !(styleNext == SCE_AU3_COMMENTBLOCK)
+                                               && style == SCE_AU3_COMMENTBLOCK) {
+                                       levelNext--;
+                                       levelCurrent--;
+                               }
+                       }
+                       int levelUse = levelCurrent;
+                       int lev = levelUse | levelNext << 16;
+                       if (visibleChars == 0 && foldCompact)
+                               lev |= SC_FOLDLEVELWHITEFLAG;
+                       if (levelUse < levelNext) {
+                               lev |= SC_FOLDLEVELHEADERFLAG;
+                       }
+                       if (lev != styler.LevelAt(lineCurrent)) {
+                               styler.SetLevel(lineCurrent, lev);
+                       }
+                       // reset values for the next line
                        lineCurrent++;
+                       stylePrev = style;
+                       style = styleNext;
+                       levelCurrent = levelNext;
+                       visibleChars = 0;
+                       // if the last character is an Underscore then don't reset since the line continues on the next line.
+                       if (!(chPrev == '_')) {
+                               szKeywordlen = 0;
+                               szThenlen = 0;
+                               FirstWordStart = false;
+                               FirstWordEnd = false;
+                               ThenFoundLast = false;
+                       }
+               }
+               // save the last processed character
+               if (!isspacechar(ch)) {
+                       chPrev = ch;
+                       visibleChars++;
                }
        }
-
 }
 
 
@@ -364,6 +608,7 @@ static const char * const AU3WordLists[] = {
     "#autoit macros",
     "#autoit Sent keys",
     "#autoit Pre-processors",
+    "#autoit Special",
     0
 };
 LexerModule lmAU3(SCLEX_AU3, ColouriseAU3Doc, "au3", FoldAU3Doc , AU3WordLists);
index 2e5f891b4b1fbf11757e5a1267ef0c022348420c..0227ce11088b7aa9ba73033e36a74f931bfcc306 100644 (file)
@@ -256,7 +256,7 @@ static void ColouriseDocument(
                        ColouriseLabel(sc, keywords, apostropheStartsAttribute);
 
                // Whitespace
-               } else if (isspace(sc.ch)) {
+               } else if (IsASpace(sc.ch)) {
                        ColouriseWhiteSpace(sc, apostropheStartsAttribute);
 
                // Delimiters
@@ -264,7 +264,7 @@ static void ColouriseDocument(
                        ColouriseDelimiter(sc, apostropheStartsAttribute);
 
                // Numbers
-               } else if (isdigit(sc.ch) || sc.ch == '#') {
+               } else if (IsADigit(sc.ch) || sc.ch == '#') {
                        ColouriseNumber(sc, apostropheStartsAttribute);
 
                // Keywords or identifiers
@@ -310,11 +310,11 @@ static inline bool IsNumberCharacter(int ch) {
 }
 
 static inline bool IsNumberStartCharacter(int ch) {
-       return isdigit(ch) != 0;
+       return IsADigit(ch);
 }
 
 static inline bool IsSeparatorOrDelimiterCharacter(int ch) {
-       return isspace(ch) || IsDelimiterCharacter(ch);
+       return IsASpace(ch) || IsDelimiterCharacter(ch);
 }
 
 static bool IsValidIdentifier(const SString& identifier) {
@@ -377,7 +377,7 @@ static bool IsValidNumber(const SString& number) {
                                }
                                canBeSpecial = false;
                                seenDot = true;
-                       } else if (isdigit(number[i])) {
+                       } else if (IsADigit(number[i])) {
                                canBeSpecial = true;
                        } else {
                                break;
@@ -398,7 +398,7 @@ static bool IsValidNumber(const SString& number) {
                                if (!canBeSpecial)
                                        return false;
                                canBeSpecial = false;
-                       } else if (isdigit (ch)) {
+                       } else if (IsADigit(ch)) {
                                base = base * 10 + (ch - '0');
                                if (base > 16)
                                        return false;
@@ -436,7 +436,7 @@ static bool IsValidNumber(const SString& number) {
                                canBeSpecial = false;
                                seenDot = true;
 
-                       } else if (isdigit (ch)) {
+                       } else if (IsADigit(ch)) {
                                if (ch - '0' >= base) {
                                        return false;
                                }
@@ -496,7 +496,7 @@ static bool IsValidNumber(const SString& number) {
                                        return false;
                                }
                                canBeSpecial = false;
-                       } else if (isdigit(number[i])) {
+                       } else if (IsADigit(number[i])) {
                                canBeSpecial = true;
                        } else {
                                return false;
@@ -512,9 +512,9 @@ static bool IsValidNumber(const SString& number) {
 }
 
 static inline bool IsWordCharacter(int ch) {
-       return IsWordStartCharacter(ch) || isdigit(ch);
+       return IsWordStartCharacter(ch) || IsADigit(ch);
 }
 
 static inline bool IsWordStartCharacter(int ch) {
-       return isalpha(ch) || ch == '_';
+       return (isascii(ch) && isalpha(ch)) || ch == '_';
 }
diff --git a/src/stc/scintilla/src/LexAsn1.cxx b/src/stc/scintilla/src/LexAsn1.cxx
new file mode 100644 (file)
index 0000000..be6c3f2
--- /dev/null
@@ -0,0 +1,181 @@
+// Scintilla source code edit control
+/** @file LexAsn1.cxx
+ ** Lexer for ASN.1
+ **/
+// Copyright 2004 by Herr Pfarrer rpfarrer <at> yahoo <dot> de
+// Last Updated: 20/07/2004
+// The License.txt file describes the conditions under which this software may be distributed.
+#include <stdlib.h>
+#include <string.h>
+#include <ctype.h>
+#include <stdio.h>
+#include <stdarg.h>
+
+#include "Platform.h"
+
+#include "PropSet.h"
+#include "Accessor.h"
+#include "StyleContext.h"
+#include "KeyWords.h"
+#include "Scintilla.h"
+#include "SciLexer.h"
+
+// Some char test functions
+static bool isAsn1Number(int ch)
+{
+       return (ch >= '0' && ch <= '9');
+}
+
+static bool isAsn1Letter(int ch)
+{
+       return (ch >= 'A' && ch <= 'Z') || (ch >= 'a' && ch <= 'z');
+}
+
+static bool isAsn1Char(int ch)
+{
+       return (ch == '-' ) || isAsn1Number(ch) || isAsn1Letter (ch);
+}
+
+//
+//     Function determining the color of a given code portion
+//     Based on a "state"
+//
+static void ColouriseAsn1Doc(unsigned int startPos, int length, int initStyle, WordList *keywordLists[], Accessor &styler)
+{
+       // The keywords
+       WordList &Keywords = *keywordLists[0];
+       WordList &Attributes = *keywordLists[1];
+       WordList &Descriptors = *keywordLists[2];
+       WordList &Types = *keywordLists[3];
+
+       // Parse the whole buffer character by character using StyleContext
+       StyleContext sc(startPos, length, initStyle, styler);
+       for (; sc.More(); sc.Forward())
+       {
+               // The state engine
+               switch (sc.state)
+               {
+               case SCE_ASN1_DEFAULT:          // Plain characters
+asn1_default:
+                       if (sc.ch == '-' && sc.chNext == '-')
+                               // A comment begins here
+                               sc.SetState(SCE_ASN1_COMMENT);
+                       else if (sc.ch == '"')
+                               // A string begins here
+                               sc.SetState(SCE_ASN1_STRING);
+                       else if (isAsn1Number (sc.ch))
+                               // A number starts here (identifier should start with a letter in ASN.1)
+                               sc.SetState(SCE_ASN1_SCALAR);
+                       else if (isAsn1Char (sc.ch))
+                               // An identifier starts here (identifier always start with a letter)
+                               sc.SetState(SCE_ASN1_IDENTIFIER);
+                       else if (sc.ch == ':')
+                               // A ::= operator starts here
+                               sc.SetState(SCE_ASN1_OPERATOR);
+                       break;
+               case SCE_ASN1_COMMENT:          // A comment
+                       if (sc.ch == '\r' || sc.ch == '\n')
+                               // A comment ends here
+                               sc.SetState(SCE_ASN1_DEFAULT);
+                       break;
+               case SCE_ASN1_IDENTIFIER:       // An identifier (keyword, attribute, descriptor or type)
+                       if (!isAsn1Char (sc.ch))
+                       {
+                               // The end of identifier is here: we can look for it in lists by now and change its state
+                               char s[100];
+                               sc.GetCurrent(s, sizeof(s));
+                               if (Keywords.InList(s))
+                                       // It's a keyword, change its state
+                                       sc.ChangeState(SCE_ASN1_KEYWORD);
+                               else if (Attributes.InList(s))
+                                       // It's an attribute, change its state
+                                       sc.ChangeState(SCE_ASN1_ATTRIBUTE);
+                               else if (Descriptors.InList(s))
+                                       // It's a descriptor, change its state
+                                       sc.ChangeState(SCE_ASN1_DESCRIPTOR);
+                               else if (Types.InList(s))
+                                       // It's a type, change its state
+                                       sc.ChangeState(SCE_ASN1_TYPE);
+
+                               // Set to default now
+                               sc.SetState(SCE_ASN1_DEFAULT);
+                       }
+                       break;
+               case SCE_ASN1_STRING:           // A string delimited by ""
+                       if (sc.ch == '"')
+                       {
+                               // A string ends here
+                               sc.ForwardSetState(SCE_ASN1_DEFAULT);
+
+                               // To correctly manage a char sticking to the string quote
+                               goto asn1_default;
+                       }
+                       break;
+               case SCE_ASN1_SCALAR:           // A plain number
+                       if (!isAsn1Number (sc.ch))
+                               // A number ends here
+                               sc.SetState(SCE_ASN1_DEFAULT);
+                       break;
+               case SCE_ASN1_OPERATOR:         // The affectation operator ::= and wath follows (eg: ::= { org 6 } OID or ::= 12 trap)
+                       if (sc.ch == '{')
+                       {
+                               // An OID definition starts here: enter the sub loop
+                               for (; sc.More(); sc.Forward())
+                               {
+                                       if (isAsn1Number (sc.ch) && (!isAsn1Char (sc.chPrev) || isAsn1Number (sc.chPrev)))
+                                               // The OID number is highlighted
+                                               sc.SetState(SCE_ASN1_OID);
+                                       else if (isAsn1Char (sc.ch))
+                                               // The OID parent identifier is plain
+                                               sc.SetState(SCE_ASN1_IDENTIFIER);
+                                       else
+                                               sc.SetState(SCE_ASN1_DEFAULT);
+
+                                       if (sc.ch == '}')
+                                               // Here ends the OID and the operator sub loop: go back to main loop
+                                               break;
+                               }
+                       }
+                       else if (isAsn1Number (sc.ch))
+                       {
+                               // A trap number definition starts here: enter the sub loop
+                               for (; sc.More(); sc.Forward())
+                               {
+                                       if (isAsn1Number (sc.ch))
+                                               // The trap number is highlighted
+                                               sc.SetState(SCE_ASN1_OID);
+                                       else
+                                       {
+                                               // The number ends here: go back to main loop
+                                               sc.SetState(SCE_ASN1_DEFAULT);
+                                               break;
+                                       }
+                               }
+                       }
+                       else if (sc.ch != ':' && sc.ch != '=' && sc.ch != ' ')
+                               // The operator doesn't imply an OID definition nor a trap, back to main loop
+                               goto asn1_default; // To be sure to handle actually the state change
+                       break;
+               }
+       }
+       sc.Complete();
+}
+
+static void FoldAsn1Doc(unsigned int, int, int, WordList *[], Accessor &styler)
+{
+       // No folding enabled, no reason to continue...
+       if( styler.GetPropertyInt("fold") == 0 )
+               return;
+
+       // No folding implemented: doesn't make sense for ASN.1
+}
+
+static const char * const asn1WordLists[] = {
+       "Keywords",
+       "Attributes",
+       "Descriptors",
+       "Types",
+       0, };
+
+
+LexerModule lmAsn1(SCLEX_ASN1, ColouriseAsn1Doc, "asn1", FoldAsn1Doc, asn1WordLists);
index 9c8ea416ae6b3b36063090f26addb4696f7fe626..c6ca0650585470cf431a24f9579f0f02c794b01a 100644 (file)
@@ -123,7 +123,7 @@ static void ColouriseCppDoc(unsigned int startPos, int length, int initStyle, Wo
                                        sc.SetState(SCE_C_DEFAULT);
                                }
                        } else {
-                               if ((sc.atLineEnd) || (sc.Match('/', '*')) || (sc.Match('/', '/'))) {
+                               if ((sc.ch == '\r') || (sc.ch == '\n') || (sc.Match('/', '*')) || (sc.Match('/', '/'))) {
                                        sc.SetState(SCE_C_DEFAULT);
                                }
                        }
@@ -140,7 +140,7 @@ static void ColouriseCppDoc(unsigned int startPos, int length, int initStyle, Wo
                                sc.SetState(SCE_C_COMMENTDOCKEYWORD);
                        }
                } else if (sc.state == SCE_C_COMMENTLINE || sc.state == SCE_C_COMMENTLINEDOC) {
-                       if (sc.atLineEnd) {
+                       if (sc.ch == '\r' || sc.ch == '\n') {
                                sc.SetState(SCE_C_DEFAULT);
                                visibleChars = 0;
                        }
@@ -235,7 +235,8 @@ static void ColouriseCppDoc(unsigned int startPos, int length, int initStyle, Wo
                                }
                                sc.Forward();   // Eat the * so it isn't used for the end of the comment
                        } else if (sc.Match('/', '/')) {
-                               if (sc.Match("///") || sc.Match("//!")) // Support of Qt/Doxygen doc. style
+                               if ((sc.Match("///") && !sc.Match("////")) || sc.Match("//!"))
+                                       // Support of Qt/Doxygen doc. style
                                        sc.SetState(SCE_C_COMMENTLINEDOC);
                                else
                                        sc.SetState(SCE_C_COMMENTLINE);
@@ -252,7 +253,7 @@ static void ColouriseCppDoc(unsigned int startPos, int length, int initStyle, Wo
                                do {
                                        sc.Forward();
                                } while ((sc.ch == ' ' || sc.ch == '\t') && sc.More());
-                               if (sc.atLineEnd) {
+                               if (sc.ch == '\r' || sc.ch == '\n') {
                                        sc.SetState(SCE_C_DEFAULT);
                                }
                        } else if (isoperator(static_cast<char>(sc.ch))) {
index 11daa142388d83d3080f53c7b878d8a3b4a1a281..f45ce1cda4c656fedf11860b19e74be7b851765c 100644 (file)
@@ -1,7 +1,8 @@
 // Scintilla source code edit control
 /** @file LexCSS.cxx
- ** Lexer for Cascade Style Sheets
+ ** Lexer for Cascading Style Sheets
  ** Written by Jakub Vrána
+ ** Improved by Philippe Lhoste (CSS2)
  **/
 // Copyright 1998-2002 by Neil Hodgson <neilh@scintilla.org>
 // The License.txt file describes the conditions under which this software may be distributed.
 #include "Scintilla.h"
 #include "SciLexer.h"
 
+
 static inline bool IsAWordChar(const unsigned int ch) {
        return (isalnum(ch) || ch == '-' || ch == '_' || ch >= 161); // _ is not in fact correct CSS word-character
 }
 
 inline bool IsCssOperator(const char ch) {
-       if (!isalnum(ch) && (ch == '{' || ch == '}' || ch == ':' || ch == ',' || ch == ';' || ch == '.' || ch == '#' || ch == '!' || ch == '@'))
+       if (!isalnum(ch) &&
+               (ch == '{' || ch == '}' || ch == ':' || ch == ',' || ch == ';' ||
+                ch == '.' || ch == '#' || ch == '!' || ch == '@' ||
+                /* CSS2 */
+                ch == '*' || ch == '>' || ch == '+' || ch == '=' || ch == '~' || ch == '|' ||
+                ch == '[' || ch == ']' || ch == '(' || ch == ')')) {
                return true;
+       }
        return false;
 }
 
 static void ColouriseCssDoc(unsigned int startPos, int length, int initStyle, WordList *keywordlists[], Accessor &styler) {
        WordList &keywords = *keywordlists[0];
        WordList &pseudoClasses = *keywordlists[1];
+       WordList &keywords2 = *keywordlists[2];
 
        StyleContext sc(startPos, length, initStyle, styler);
 
@@ -44,7 +53,8 @@ static void ColouriseCssDoc(unsigned int startPos, int length, int initStyle, Wo
        for (; sc.More(); sc.Forward()) {
                if (sc.state == SCE_CSS_COMMENT && sc.Match('*', '/')) {
                        if (lastStateC == -1) {
-                               // backtrack to get last state
+                               // backtrack to get last state:
+                               // comments are like whitespace, so we must return to the previous state
                                unsigned int i = startPos;
                                for (; i > 0; i--) {
                                        if ((lastStateC = styler.StyleAt(i-1)) != SCE_CSS_COMMENT) {
@@ -104,14 +114,15 @@ static void ColouriseCssDoc(unsigned int startPos, int length, int initStyle, Wo
                                        sc.SetState(SCE_CSS_IDENTIFIER);
                                break;
                        case '}':
-                               if (lastState == SCE_CSS_DEFAULT || lastState == SCE_CSS_VALUE || lastState == SCE_CSS_IMPORTANT || lastState == SCE_CSS_IDENTIFIER)
+                               if (lastState == SCE_CSS_DEFAULT || lastState == SCE_CSS_VALUE || lastState == SCE_CSS_IMPORTANT ||
+                                       lastState == SCE_CSS_IDENTIFIER || lastState == SCE_CSS_IDENTIFIER2)
                                        sc.SetState(SCE_CSS_DEFAULT);
                                break;
                        case ':':
                                if (lastState == SCE_CSS_TAG || lastState == SCE_CSS_PSEUDOCLASS || lastState == SCE_CSS_DEFAULT ||
                                        lastState == SCE_CSS_CLASS || lastState == SCE_CSS_ID || lastState == SCE_CSS_UNKNOWN_PSEUDOCLASS)
                                        sc.SetState(SCE_CSS_PSEUDOCLASS);
-                               else if (lastState == SCE_CSS_IDENTIFIER || lastState == SCE_CSS_UNKNOWN_IDENTIFIER)
+                               else if (lastState == SCE_CSS_IDENTIFIER || lastState == SCE_CSS_IDENTIFIER2 || lastState == SCE_CSS_UNKNOWN_IDENTIFIER)
                                        sc.SetState(SCE_CSS_VALUE);
                                break;
                        case '.':
@@ -146,7 +157,8 @@ static void ColouriseCssDoc(unsigned int startPos, int length, int initStyle, Wo
                }
 
                if (IsAWordChar(sc.chPrev) && (
-                       sc.state == SCE_CSS_IDENTIFIER || sc.state == SCE_CSS_UNKNOWN_IDENTIFIER
+                       sc.state == SCE_CSS_IDENTIFIER || sc.state == SCE_CSS_IDENTIFIER2
+                       || sc.state == SCE_CSS_UNKNOWN_IDENTIFIER
                        || sc.state == SCE_CSS_PSEUDOCLASS || sc.state == SCE_CSS_UNKNOWN_PSEUDOCLASS
                        || sc.state == SCE_CSS_IMPORTANT
                )) {
@@ -157,12 +169,19 @@ static void ColouriseCssDoc(unsigned int startPos, int length, int initStyle, Wo
                                s2++;
                        switch (sc.state) {
                        case SCE_CSS_IDENTIFIER:
-                               if (!keywords.InList(s2))
-                                       sc.ChangeState(SCE_CSS_UNKNOWN_IDENTIFIER);
+                               if (!keywords.InList(s2)) {
+                                       if (keywords2.InList(s2)) {
+                                               sc.ChangeState(SCE_CSS_IDENTIFIER2);
+                                       } else {
+                                               sc.ChangeState(SCE_CSS_UNKNOWN_IDENTIFIER);
+                                       }
+                               }
                                break;
                        case SCE_CSS_UNKNOWN_IDENTIFIER:
                                if (keywords.InList(s2))
                                        sc.ChangeState(SCE_CSS_IDENTIFIER);
+                               else if (keywords2.InList(s2))
+                                       sc.ChangeState(SCE_CSS_IDENTIFIER2);
                                break;
                        case SCE_CSS_PSEUDOCLASS:
                                if (!pseudoClasses.InList(s2))
@@ -253,8 +272,9 @@ static void FoldCSSDoc(unsigned int startPos, int length, int, WordList *[], Acc
 }
 
 static const char * const cssWordListDesc[] = {
-       "Keywords",
+       "CSS1 Keywords",
        "Pseudo classes",
+       "CSS2 Keywords",
        0
 };
 
index d2cd30f60e2ee44335d3806f317b9cc63b51e755..e3546b436fdb6b1674a29fef85e44e92a3cedd71 100644 (file)
@@ -314,7 +314,7 @@ static void classifyWordHTPy(unsigned int start, unsigned int end, WordList &key
 // Called when in a PHP word
 static void classifyWordHTPHP(unsigned int start, unsigned int end, WordList &keywords, Accessor &styler) {
        char chAttr = SCE_HPHP_DEFAULT;
-       bool wordIsNumber = IsADigit(styler[start]);
+       bool wordIsNumber = IsADigit(styler[start]) || (styler[start] == '.' && start+1 <= end && IsADigit(styler[start+1]));
        if (wordIsNumber)
                chAttr = SCE_HPHP_NUMBER;
        else {
@@ -637,9 +637,10 @@ static void ColouriseHyperTextDoc(unsigned int startPos, int length, int initSty
                         (state != SCE_HPHP_COMMENT) &&
                         (ch == '<') &&
                         (chNext == '?')) {
+                       scriptLanguage = segIsScriptingIndicator(styler, styler.GetStartSegment() + 2, i + 10, eScriptPHP);
+                       if (scriptLanguage != eScriptPHP && isStringState(state)) continue;
                        styler.ColourTo(i - 1, StateToPrint);
                        beforePreProc = state;
-                       scriptLanguage = segIsScriptingIndicator(styler, styler.GetStartSegment() + 2, i + 10, eScriptPHP);
                        i++;
                        visibleChars++;
                        i += PrintScriptingIndicatorOffset(styler, styler.GetStartSegment() + 2, i + 10);
@@ -1495,7 +1496,7 @@ static void ColouriseHyperTextDoc(unsigned int startPos, int length, int initSty
                        }
                        break;
                case SCE_HPHP_NUMBER:
-                       if (!IsADigit(ch)) {
+                       if (!IsADigit(ch) && ch != '.' && ch != 'e' && ch != 'E' && (ch != '-' || (chPrev != 'e' && chPrev != 'E'))) {
                                styler.ColourTo(i - 1, SCE_HPHP_NUMBER);
                                if (isoperator(ch))
                                        state = SCE_HPHP_OPERATOR;
@@ -1567,7 +1568,7 @@ static void ColouriseHyperTextDoc(unsigned int startPos, int length, int initSty
                case SCE_HPHP_OPERATOR:
                case SCE_HPHP_DEFAULT:
                        styler.ColourTo(i - 1, StateToPrint);
-                       if (IsADigit(ch)) {
+                       if (IsADigit(ch) || (ch == '.' && IsADigit(chNext))) {
                                state = SCE_HPHP_NUMBER;
                        } else if (iswordstart(ch)) {
                                state = SCE_HPHP_WORD;
index 9cd5433c89630299cb796c5b1c9b464464483b62..549b573e2ed3275a31d97e9a5d1dfdbdadd7d01a 100644 (file)
@@ -66,9 +66,6 @@ static void ColouriseLispDoc(unsigned int startPos, int length, int initStyle, W
        styler.StartAt(startPos);
 
        int state = initStyle;
-       if (state == SCE_LISP_STRINGEOL)        // Does not leak onto next line
-               state = SCE_LISP_DEFAULT;
-       char chPrev = ' ';
        char chNext = styler[startPos];
        unsigned int lengthDoc = startPos + length;
        styler.StartSegment(startPos);
@@ -77,19 +74,9 @@ static void ColouriseLispDoc(unsigned int startPos, int length, int initStyle, W
                chNext = styler.SafeGetCharAt(i + 1);
 
                bool atEOL = (ch == '\r' && chNext != '\n') || (ch == '\n');
-               if (atEOL) {
-                       // Trigger on CR only (Mac style) or either on LF from CR+LF (Dos/Win) or on LF alone (Unix)
-                       // Avoid triggering two times on Dos/Win
-                       // End of line
-                       if (state == SCE_LISP_STRINGEOL) {
-                               styler.ColourTo(i, state);
-                               state = SCE_LISP_DEFAULT;
-                       }
-               }
 
                if (styler.IsLeadByte(ch)) {
                        chNext = styler.SafeGetCharAt(i + 2);
-                       chPrev = ' ';
                        i += 1;
                        continue;
                }
@@ -107,9 +94,9 @@ static void ColouriseLispDoc(unsigned int startPos, int length, int initStyle, W
                                styler.ColourTo(i - 1, state);
                                styler.ColourTo(i, SCE_LISP_OPERATOR);
                        }
-
                        else if (ch == '\"') {
-                                       state = SCE_LISP_STRING;
+                               styler.ColourTo(i - 1, state);
+                               state = SCE_LISP_STRING;
                        }
                } else if (state == SCE_LISP_IDENTIFIER) {
                        if (!isLispwordstart(ch)) {
@@ -131,20 +118,15 @@ static void ColouriseLispDoc(unsigned int startPos, int length, int initStyle, W
                                if (ch == '\\') {
                                        if (chNext == '\"' || chNext == '\'' || chNext == '\\') {
                                                i++;
-                                               ch = chNext;
                                                chNext = styler.SafeGetCharAt(i + 1);
                                        }
                                } else if (ch == '\"') {
                                        styler.ColourTo(i, state);
                                        state = SCE_LISP_DEFAULT;
-                               } else if ((chNext == '\r' || chNext == '\n') && (chPrev != '\\')) {
-                                       styler.ColourTo(i - 1, SCE_LISP_STRINGEOL);
-                                       state = SCE_LISP_STRINGEOL;
                                }
                        }
                }
 
-               chPrev = ch;
        }
        styler.ColourTo(lengthDoc - 1, state);
 }
index 3781eed83af5877c6dd18df13cdbe9a337526b07..3e4b25cb5e9acb3c600b0077ef09545673d0e900 100644 (file)
@@ -138,7 +138,7 @@ static void ColouriseLuaDoc(
                                sc.SetState(SCE_LUA_DEFAULT);
                        }
                } else if (sc.state == SCE_LUA_IDENTIFIER) {
-                       if (!IsAWordChar(sc.ch)) {
+                       if (!IsAWordChar(sc.ch) || sc.Match('.', '.')) {
                                char s[100];
                                sc.GetCurrent(s, sizeof(s));
                                if (keywords.InList(s)) {
index 1681ba5d4a6bd38c218d4ea4ad68cf1a90795d4b..f777e300fa24ec132a68137cc899bc81762a8a62 100644 (file)
@@ -330,6 +330,7 @@ static void FoldPropsDoc(unsigned int startPos, int length, int, WordList *[], A
        char chNext = styler[startPos];
        int styleNext = styler.StyleAt(startPos);
        bool headerPoint = false;
+       int lev;
 
        for (unsigned int i = startPos; i < endPos; i++) {
                char ch = chNext;
@@ -339,21 +340,32 @@ static void FoldPropsDoc(unsigned int startPos, int length, int, WordList *[], A
                styleNext = styler.StyleAt(i + 1);
                bool atEOL = (ch == '\r' && chNext != '\n') || (ch == '\n');
 
-               if (style==2) {
+               if (style == SCE_PROPS_SECTION) {
                        headerPoint = true;
                }
 
                if (atEOL) {
-                       int lev = SC_FOLDLEVELBASE+1;
-                       if (headerPoint)
-                               lev = SC_FOLDLEVELBASE;
+                       lev = SC_FOLDLEVELBASE;
+
+                       if (lineCurrent > 0) {
+                               int levelPrevious = styler.LevelAt(lineCurrent - 1);
 
+                               if (levelPrevious & SC_FOLDLEVELHEADERFLAG) {
+                                       lev = SC_FOLDLEVELBASE + 1;
+                               } else {
+                                       lev = levelPrevious & SC_FOLDLEVELNUMBERMASK;
+                               }
+                       }
+
+                       if (headerPoint) {
+                               lev = SC_FOLDLEVELBASE;
+                       }
                        if (visibleChars == 0 && foldCompact)
                                lev |= SC_FOLDLEVELWHITEFLAG;
 
-                       if (headerPoint)
+                       if (headerPoint) {
                                lev |= SC_FOLDLEVELHEADERFLAG;
-
+                       }
                        if (lev != styler.LevelAt(lineCurrent)) {
                                styler.SetLevel(lineCurrent, lev);
                        }
@@ -366,9 +378,18 @@ static void FoldPropsDoc(unsigned int startPos, int length, int, WordList *[], A
                        visibleChars++;
        }
 
-       int lev = headerPoint ? SC_FOLDLEVELBASE : SC_FOLDLEVELBASE+1;
-       int flagsNext = styler.LevelAt(lineCurrent) & ~SC_FOLDLEVELNUMBERMASK;
-       styler.SetLevel(lineCurrent, lev | flagsNext);
+       if (lineCurrent > 0) {
+               int levelPrevious = styler.LevelAt(lineCurrent - 1);
+               if (levelPrevious & SC_FOLDLEVELHEADERFLAG) {
+                       lev = SC_FOLDLEVELBASE + 1;
+               } else {
+                       lev = levelPrevious & SC_FOLDLEVELNUMBERMASK;
+               }
+       } else {
+               lev = SC_FOLDLEVELBASE;
+       }
+       int flagsNext = styler.LevelAt(lineCurrent);
+       styler.SetLevel(lineCurrent, lev | flagsNext & ~SC_FOLDLEVELNUMBERMASK);
 }
 
 static void ColouriseMakeLine(
@@ -523,6 +544,15 @@ static void ColouriseErrorListLine(
                strstr(lineBuffer, ", file ")) {
                // Essential Lahey Fortran error message
                styler.ColourTo(endPos, SCE_ERR_ELF);
+       } else if (strstart(lineBuffer, "line ") &&
+                      strstr(lineBuffer, " column ")) {
+               // HTML tidy style: line 42 column 1
+               styler.ColourTo(endPos, SCE_ERR_TIDY);
+       } else if (strstart(lineBuffer, "\tat ") &&
+               strstr(lineBuffer, "(") &&
+               strstr(lineBuffer, ".java:")) {
+               // Java stack back trace
+               styler.ColourTo(endPos, SCE_ERR_JAVA_STACK);
        } else {
                // Look for GCC <filename>:<line>:message
                // Look for Microsoft <filename>(line) :message
index 775b5587257d750d34c214e05f6e1332b6b8f0d1..7878a6bf8f0667414782da52b28dc043f70ad1fc 100644 (file)
@@ -3,10 +3,32 @@
 // Lexer for PowerBasic by Roland Walter, roland@rowalt.de (for PowerBasic see www.powerbasic.com)
 //
 // Changes:
-// 17.10.2003 Toggling of subs/functions now until next sub/function - this gives better results
-// 29.10.2003 1. Bug: Toggling didn't work for subs/functions added in editor
-//            2. Own colors for PB constants and Inline Assembler SCE_B_CONSTANT and SCE_B_ASM
-//            3. Several smaller syntax coloring improvements and speed optimizations
+// 17.10.2003: Toggling of subs/functions now until next sub/function - this gives better results
+// 29.10.2003: 1. Bug: Toggling didn't work for subs/functions added in editor
+//             2. Own colors for PB constants and Inline Assembler SCE_B_CONSTANT and SCE_B_ASM
+//             3. Several smaller syntax coloring improvements and speed optimizations
+// 12.07.2004: 1. Toggling for macros added
+//             2. Further folding speed optimitations (for people dealing with very large listings)
+//
+// Necessary changes for the PB lexer in Scintilla project:
+//  - In SciLexer.h and Scintilla.iface:
+//
+//    #define SCLEX_POWERBASIC 51       //ID for PowerBasic lexer
+//    (...)
+//    #define SCE_B_DEFAULT 0           //in both VB and PB lexer
+//    #define SCE_B_COMMENT 1           //in both VB and PB lexer
+//    #define SCE_B_NUMBER 2            //in both VB and PB lexer
+//    #define SCE_B_KEYWORD 3           //in both VB and PB lexer
+//    #define SCE_B_STRING 4            //in both VB and PB lexer
+//    #define SCE_B_PREPROCESSOR 5      //VB lexer only, not in PB lexer
+//    #define SCE_B_OPERATOR 6          //in both VB and PB lexer
+//    #define SCE_B_IDENTIFIER 7        //in both VB and PB lexer
+//    #define SCE_B_DATE 8              //VB lexer only, not in PB lexer
+//    #define SCE_B_CONSTANT 13         //PB lexer only, not in VB lexer
+//    #define SCE_B_ASM 14              //PB lexer only, not in VB lexer
+
+//  - Statement added to KeyWords.cxx:      'LINK_LEXER(lmPB);'
+//  - Statement added to scintilla_vc6.mak: '$(DIR_O)\LexPB.obj: ...\src\LexPB.cxx $(LEX_HEADERS)'
 //
 // Copyright for Scintilla: 1998-2001 by Neil Hodgson <neilh@scintilla.org>
 // The License.txt file describes the conditions under which this software may be distributed.
@@ -171,6 +193,8 @@ static void FoldPBDoc(unsigned int startPos, int length, int, WordList *[], Acce
     char chNext = styler[startPos];
 
     bool fNewLine=true;
+    bool fMightBeMultiLineMacro=false;
+    bool fBeginOfCommentFound=false;
     for (unsigned int i = startPos; i < endPos; i++)
     {
         char ch = chNext;
@@ -179,10 +203,11 @@ static void FoldPBDoc(unsigned int startPos, int length, int, WordList *[], Acce
         if (fNewLine)            //Begin of a new line (The Sub/Function/Macro keywords may occur at begin of line only)
         {
             fNewLine=false;
-
+            fBeginOfCommentFound=false;
             switch (ch)
             {
-            case ' ':      //Most lines start with space - so check this first
+            case ' ':      //Most lines start with space - so check this first, the code is the same as for 'default:'
+            case '\t':     //Handle tab too
                 {
                     int levelUse = levelCurrent;
                     int lev = levelUse | levelNext << 16;
@@ -190,37 +215,89 @@ static void FoldPBDoc(unsigned int startPos, int length, int, WordList *[], Acce
                     break;
                 }
             case 'F':
-            case 'S':
-            case 'C':
             case 'f':
+                {
+                                       switch (chNext)
+                                       {
+                    case 'U':
+                    case 'u':
+                                               {
+                                                       if( MatchUpperCase(styler,i,"FUNCTION") )
+                                                       {
+                                                               styler.SetLevel(lineCurrent, (SC_FOLDLEVELBASE << 16) | SC_FOLDLEVELHEADERFLAG);
+                                                               levelNext=SC_FOLDLEVELBASE+1;
+                                                       }
+                                                       break;
+                                               }
+                                       }
+                break;
+                }
+            case 'S':
             case 's':
+                {
+                                       switch (chNext)
+                                       {
+                    case 'U':
+                    case 'u':
+                                               {
+                                                       if( MatchUpperCase(styler,i,"SUB") )
+                                                       {
+                                                               styler.SetLevel(lineCurrent, (SC_FOLDLEVELBASE << 16) | SC_FOLDLEVELHEADERFLAG);
+                                                               levelNext=SC_FOLDLEVELBASE+1;
+                                                       }
+                                                       break;
+                                               }
+                    case 'T':
+                    case 't':
+                                               {
+                                                       if( MatchUpperCase(styler,i,"STATIC FUNCTION") )
+                                                       {
+                                                               styler.SetLevel(lineCurrent, (SC_FOLDLEVELBASE << 16) | SC_FOLDLEVELHEADERFLAG);
+                                                               levelNext=SC_FOLDLEVELBASE+1;
+                                                       }
+                                                       else if( MatchUpperCase(styler,i,"STATIC SUB") )
+                                                       {
+                                                               styler.SetLevel(lineCurrent, (SC_FOLDLEVELBASE << 16) | SC_FOLDLEVELHEADERFLAG);
+                                                               levelNext=SC_FOLDLEVELBASE+1;
+                                                       }
+                                                       break;
+                                               }
+                                       }
+                break;
+                }
+            case 'C':
             case 'c':
                 {
-                    if( MatchUpperCase(styler,i,"FUNCTION") )
-                    {
-                        styler.SetLevel(lineCurrent, (SC_FOLDLEVELBASE << 16) | SC_FOLDLEVELHEADERFLAG);
-                        levelNext=SC_FOLDLEVELBASE+1;
-                    }
-                else if( MatchUpperCase(styler,i,"SUB") )
-                    {
-                        styler.SetLevel(lineCurrent, (SC_FOLDLEVELBASE << 16) | SC_FOLDLEVELHEADERFLAG);
-                        levelNext=SC_FOLDLEVELBASE+1;
-                    }
-                else if( MatchUpperCase(styler,i,"CALLBACK FUNCTION") )
-                    {
-                        styler.SetLevel(lineCurrent, (SC_FOLDLEVELBASE << 16) | SC_FOLDLEVELHEADERFLAG);
-                        levelNext=SC_FOLDLEVELBASE+1;
-                    }
-                else if( MatchUpperCase(styler,i,"STATIC FUNCTION") )
-                    {
-                        styler.SetLevel(lineCurrent, (SC_FOLDLEVELBASE << 16) | SC_FOLDLEVELHEADERFLAG);
-                        levelNext=SC_FOLDLEVELBASE+1;
-                    }
-                else if( MatchUpperCase(styler,i,"STATIC SUB") )
-                    {
-                        styler.SetLevel(lineCurrent, (SC_FOLDLEVELBASE << 16) | SC_FOLDLEVELHEADERFLAG);
-                        levelNext=SC_FOLDLEVELBASE+1;
-                    }
+                                       switch (chNext)
+                                       {
+                    case 'A':
+                    case 'a':
+                                               {
+                                                       if( MatchUpperCase(styler,i,"CALLBACK FUNCTION") )
+                                                       {
+                                                               styler.SetLevel(lineCurrent, (SC_FOLDLEVELBASE << 16) | SC_FOLDLEVELHEADERFLAG);
+                                                               levelNext=SC_FOLDLEVELBASE+1;
+                                                       }
+                                                       break;
+                                               }
+                                       }
+                break;
+                }
+            case 'M':
+            case 'm':
+                {
+                                       switch (chNext)
+                                       {
+                    case 'A':
+                    case 'a':
+                                               {
+                                                       if( MatchUpperCase(styler,i,"MACRO") )
+                                                       {
+                                                               fMightBeMultiLineMacro=true;  //Set folder level at end of line, we have to check for single line macro
+                                                       }
+                                                       break;
+                                               }
+                                       }
                 break;
                 }
             default:
@@ -235,8 +312,25 @@ static void FoldPBDoc(unsigned int startPos, int length, int, WordList *[], Acce
 
         switch (ch)
         {
+            case '=':                              //To test single line macros
+            {
+                if (fBeginOfCommentFound==false)
+                    fMightBeMultiLineMacro=false;  //The found macro is a single line macro only;
+                break;
+            }
+            case '\'':                             //A comment starts
+            {
+                fBeginOfCommentFound=true;
+                break;
+            }
             case '\n':
             {
+                if (fMightBeMultiLineMacro)        //The current line is the begin of a multi line macro
+                {
+                    fMightBeMultiLineMacro=false;
+                    styler.SetLevel(lineCurrent, (SC_FOLDLEVELBASE << 16) | SC_FOLDLEVELHEADERFLAG);
+                    levelNext=SC_FOLDLEVELBASE+1;
+                }
                 lineCurrent++;
                 levelCurrent = levelNext;
                 fNewLine=true;
index d4d4f46fedb436e41403995919a5abf698c39725..e13c6220d9c40be7efed0ef868639367a557ea5d 100644 (file)
@@ -265,7 +265,8 @@ static void ColourisePyDoc(unsigned int startPos, int length, int initStyle,
                        } else if (IsPyStringStart(sc.ch, sc.chNext, sc.GetRelative(2))) {
                                unsigned int nextIndex = 0;
                                sc.SetState(GetPyStringState(styler, sc.currentPos, &nextIndex));
-                               while (nextIndex > (sc.currentPos + 1) && sc.More()) {                                  sc.Forward();
+                               while (nextIndex > (sc.currentPos + 1) && sc.More()) {
+                                       sc.Forward();
                                }
                        } else if (IsAWordStart(sc.ch)) {
                                sc.SetState(SCE_P_IDENTIFIER);
diff --git a/src/stc/scintilla/src/LexVHDL.cxx b/src/stc/scintilla/src/LexVHDL.cxx
new file mode 100644 (file)
index 0000000..0feef95
--- /dev/null
@@ -0,0 +1,473 @@
+// Scintilla source code edit control
+/** @file LexVHDL.cxx
+ ** Lexer for VHDL
+ ** Written by Phil Reid, 
+ ** Based on:
+ **  - The Verilog Lexer by Avi Yegudin 
+ **  - The Fortran Lexer by Chuan-jian Shen
+ **  - The C++ lexer by Neil Hodgson
+ **/
+// Copyright 1998-2002 by Neil Hodgson <neilh@scintilla.org>
+// The License.txt file describes the conditions under which this software may be distributed.
+
+#include <stdlib.h>
+#include <string.h>
+#include <ctype.h>
+#include <stdio.h>
+#include <stdarg.h>
+
+#include "Platform.h"
+
+#include "PropSet.h"
+#include "Accessor.h"
+#include "StyleContext.h"
+#include "KeyWords.h"
+#include "Scintilla.h"
+#include "SciLexer.h"
+
+static void ColouriseVHDLDoc(
+  unsigned int startPos,
+  int length,
+  int initStyle,
+  WordList *keywordlists[],
+  Accessor &styler);
+
+
+/***************************************/
+static inline bool IsAWordChar(const int ch) {
+  return (ch < 0x80) && (isalnum(ch) || ch == '.' || ch == '_' );
+}
+
+/***************************************/
+static inline bool IsAWordStart(const int ch) {
+  return (ch < 0x80) && (isalnum(ch) || ch == '_');
+}
+
+/***************************************/
+inline bool IsABlank(unsigned int ch) {
+    return (ch == ' ') || (ch == 0x09) || (ch == 0x0b) ;
+}
+
+/***************************************/
+static void ColouriseVHDLDoc(
+  unsigned int startPos,
+  int length,
+  int initStyle,
+  WordList *keywordlists[],
+  Accessor &styler)
+{
+  WordList &Keywords   = *keywordlists[0];
+  WordList &Operators  = *keywordlists[1];
+  WordList &Attributes = *keywordlists[2];
+  WordList &Functions  = *keywordlists[3];
+  WordList &Packages   = *keywordlists[4];
+  WordList &Types      = *keywordlists[5];
+  WordList &User       = *keywordlists[6];
+
+  StyleContext sc(startPos, length, initStyle, styler);
+
+  for (; sc.More(); sc.Forward())
+  {
+
+    // Determine if the current state should terminate.
+    if (sc.state == SCE_VHDL_OPERATOR) {
+      sc.SetState(SCE_VHDL_DEFAULT);
+    } else if (sc.state == SCE_VHDL_NUMBER) {
+      if (!IsAWordChar(sc.ch) && (sc.ch != '#')) {
+        sc.SetState(SCE_VHDL_DEFAULT);
+      }
+    } else if (sc.state == SCE_VHDL_IDENTIFIER) {
+      if (!IsAWordChar(sc.ch) || (sc.ch == '.')) {
+        char s[100];
+        sc.GetCurrentLowered(s, sizeof(s));
+        if (Keywords.InList(s)) {
+          sc.ChangeState(SCE_VHDL_KEYWORD);
+        } else if (Operators.InList(s)) {
+          sc.ChangeState(SCE_VHDL_STDOPERATOR);
+        } else if (Attributes.InList(s)) {
+          sc.ChangeState(SCE_VHDL_ATTRIBUTE);
+        } else if (Functions.InList(s)) {
+          sc.ChangeState(SCE_VHDL_STDFUNCTION);
+        } else if (Packages.InList(s)) {
+          sc.ChangeState(SCE_VHDL_STDPACKAGE);
+        } else if (Types.InList(s)) {
+          sc.ChangeState(SCE_VHDL_STDTYPE);
+        } else if (User.InList(s)) {
+          sc.ChangeState(SCE_VHDL_USERWORD);
+        }
+        sc.SetState(SCE_VHDL_DEFAULT);
+      }
+    } else if (sc.state == SCE_VHDL_COMMENT || sc.state == SCE_V_COMMENTLINEBANG) {
+      if (sc.atLineEnd) {
+        sc.SetState(SCE_VHDL_DEFAULT);
+      }
+    } else if (sc.state == SCE_VHDL_STRING) {
+      if (sc.ch == '\\') {
+        if (sc.chNext == '\"' || sc.chNext == '\'' || sc.chNext == '\\') {
+          sc.Forward();
+        }
+      } else if (sc.ch == '\"') {
+        sc.ForwardSetState(SCE_VHDL_DEFAULT);
+      } else if (sc.atLineEnd) {
+        sc.ChangeState(SCE_V_STRINGEOL);
+        sc.ForwardSetState(SCE_VHDL_DEFAULT);
+      }
+    }
+
+    // Determine if a new state should be entered.
+    if (sc.state == SCE_VHDL_DEFAULT) {
+      if (IsADigit(sc.ch) || (sc.ch == '.' && IsADigit(sc.chNext))) {
+        sc.SetState(SCE_VHDL_NUMBER);
+      } else if (IsAWordStart(sc.ch)) {
+        sc.SetState(SCE_VHDL_IDENTIFIER);
+      } else if (sc.Match('-', '-')) {
+        sc.SetState(SCE_VHDL_COMMENT);
+        sc.Forward(); 
+      } else if (sc.Match('-', '-')) {
+        if (sc.Match("--!"))  // Nice to have a different comment style
+          sc.SetState(SCE_VHDL_COMMENTLINEBANG);
+        else
+          sc.SetState(SCE_VHDL_COMMENT);
+      } else if (sc.ch == '\"') {
+        sc.SetState(SCE_VHDL_STRING);
+      } else if (isoperator(static_cast<char>(sc.ch))) {
+        sc.SetState(SCE_VHDL_OPERATOR);
+      }
+    }
+  }
+  sc.Complete();
+}
+//=============================================================================
+static bool IsCommentLine(int line, Accessor &styler) {
+       int pos = styler.LineStart(line);
+       int eol_pos = styler.LineStart(line + 1) - 1;
+       for (int i = pos; i < eol_pos; i++) {
+               char ch = styler[i];
+               char chNext = styler[i+1];
+               if ((ch == '-') && (chNext == '-'))
+                       return true;
+               else if (ch != ' ' && ch != '\t')
+                       return false;
+       }
+       return false;
+}
+
+//=============================================================================
+// Folding the code
+static void FoldNoBoxVHDLDoc(
+  unsigned int startPos,
+  int length,
+  int initStyle,
+  Accessor &styler)
+{
+  // Decided it would be smarter to have the lexer have all keywords included. Therefore I
+  // don't check if the style for the keywords that I use to adjust the levels.
+  char words[] =
+    "architecture begin case component else elsif end entity generate loop package process record then "
+    "procedure function when";
+  WordList keywords;
+  keywords.Set(words);
+
+  bool foldComment      = styler.GetPropertyInt("fold.comment", 1) != 0;
+  bool foldCompact      = styler.GetPropertyInt("fold.compact", 1) != 0;
+  bool foldAtElse       = styler.GetPropertyInt("fold.at.else", 1) != 0;
+  bool foldAtBegin      = styler.GetPropertyInt("fold.at.Begin", 1) != 0;
+  bool foldAtParenthese = styler.GetPropertyInt("fold.at.Parenthese", 1) != 0;
+  //bool foldAtWhen       = styler.GetPropertyInt("fold.at.When", 1) != 0;  //< fold at when in case statements
+
+  int  visibleChars     = 0;
+  unsigned int endPos   = startPos + length;
+
+  int lineCurrent       = styler.GetLine(startPos);
+  int levelCurrent      = SC_FOLDLEVELBASE;
+  if(lineCurrent > 0)
+    levelCurrent        = styler.LevelAt(lineCurrent-1) >> 16;
+  //int levelMinCurrent   = levelCurrent;
+  int levelMinCurrentElse = levelCurrent;   //< Used for folding at 'else'
+  int levelMinCurrentBegin = levelCurrent;  //< Used for folding at 'begin'
+  int levelNext         = levelCurrent;
+
+  /***************************************/
+  int lastStart         = 0;
+  char prevWord[32]     = "";
+
+  /***************************************/
+  // Find prev word
+  // The logic for going up or down a level depends on a the previous keyword
+  // This code could be cleaned up.
+  int end = 0;
+  unsigned int j;
+  for(j = startPos; j>0; j--)
+  {
+    char ch       = styler.SafeGetCharAt(j);
+    char chPrev   = styler.SafeGetCharAt(j-1);
+    int style     = styler.StyleAt(j);
+    int stylePrev = styler.StyleAt(j-1);
+    if ((stylePrev != SCE_VHDL_COMMENT) && (stylePrev != SCE_VHDL_STRING))
+    {
+      if(IsAWordChar(chPrev) && !IsAWordChar(ch))
+      {
+        end = j-1;
+      }
+    }
+    if ((style != SCE_VHDL_COMMENT) && (style != SCE_VHDL_STRING))
+    {
+      if(!IsAWordChar(chPrev) && IsAWordStart(ch) && (end != 0))
+      {
+        char s[32];
+        unsigned int k;
+        for(k=0; (k<31 ) && (k<end-j+1 ); k++) {
+          s[k] = static_cast<char>(tolower(styler[j+k]));
+        }
+        s[k] = '\0';
+
+        if(keywords.InList(s)) {
+          strcpy(prevWord, s);
+          break;
+        }
+      }
+    }
+  }
+  for(j=j+strlen(prevWord); j<endPos; j++)
+  {
+    char ch       = styler.SafeGetCharAt(j);
+    int style     = styler.StyleAt(j);
+    if ((style != SCE_VHDL_COMMENT) && (style != SCE_VHDL_STRING))
+    {
+      if((ch == ';') && (strcmp(prevWord, "end") == 0))
+      {
+        strcpy(prevWord, ";");
+      }
+    }
+  }
+
+  char  chNext          = styler[startPos];
+  char  chPrev          = '\0';
+  char  chNextNonBlank;
+  int   styleNext       = styler.StyleAt(startPos);
+  int   style           = initStyle;
+  //Platform::DebugPrintf("Line[%04d] Prev[%20s] ************************* Level[%x]\n", lineCurrent+1, prevWord, levelCurrent);
+
+  /***************************************/
+  for (unsigned int i = startPos; i < endPos; i++)
+  {
+    char ch         = chNext;
+    chNext          = styler.SafeGetCharAt(i + 1);
+    chPrev          = styler.SafeGetCharAt(i - 1);
+    chNextNonBlank  = chNext;
+    unsigned int j  = i+1;
+    while(IsABlank(chNextNonBlank) && j<endPos)
+    {
+      j ++ ;
+      chNextNonBlank = styler.SafeGetCharAt(j);
+    }
+    style           = styleNext;
+    styleNext       = styler.StyleAt(i + 1);
+    bool atEOL      = (ch == '\r' && chNext != '\n') || (ch == '\n');
+
+               if (foldComment && atEOL && IsCommentLine(lineCurrent, styler)) 
+    {
+      if(!IsCommentLine(lineCurrent-1, styler) && IsCommentLine(lineCurrent+1, styler))
+      {
+        levelNext++;
+      } 
+      else if(IsCommentLine(lineCurrent-1, styler) && !IsCommentLine(lineCurrent+1, styler))
+      {
+        levelNext--;
+      }
+    }
+
+    if ((style == SCE_VHDL_OPERATOR) && foldAtParenthese)
+    {
+      if(ch == '(') {
+        levelNext++;
+      } else if (ch == ')') {
+        levelNext--;
+      }
+    }
+
+    if ((style != SCE_VHDL_COMMENT) && (style != SCE_VHDL_STRING))
+    {
+      if((ch == ';') && (strcmp(prevWord, "end") == 0))
+      {
+        strcpy(prevWord, ";");
+      }
+
+      if(!IsAWordChar(chPrev) && IsAWordStart(ch))
+      {
+        lastStart = i;
+      }
+
+      if(iswordchar(ch) && !iswordchar(chNext)) {
+        char s[32];
+        unsigned int k;
+        for(k=0; (k<31 ) && (k<i-lastStart+1 ); k++) {
+          s[k] = static_cast<char>(tolower(styler[lastStart+k]));
+        }
+        s[k] = '\0';
+
+        if(keywords.InList(s))
+        {
+          if (
+            strcmp(s, "architecture") == 0  ||
+            strcmp(s, "case") == 0          ||
+            strcmp(s, "component") == 0     ||
+            strcmp(s, "entity") == 0        ||
+            strcmp(s, "generate") == 0      ||
+            strcmp(s, "loop") == 0          ||
+            strcmp(s, "package") ==0        ||
+            strcmp(s, "process") == 0       ||
+            strcmp(s, "record") == 0        ||
+            strcmp(s, "then") == 0)
+          {
+            if (strcmp(prevWord, "end") != 0)
+            {
+              if (levelMinCurrentElse > levelNext) {
+                levelMinCurrentElse = levelNext;
+              }
+              levelNext++;
+            }
+          } else if (
+            strcmp(s, "procedure") == 0     ||
+            strcmp(s, "function") == 0)
+          {
+            if (strcmp(prevWord, "end") != 0) // check for "end procedure" etc.
+            { // This code checks to see if the procedure / function is a definition within a "package"
+              // rather than the actual code in the body.
+              int BracketLevel = 0;
+              for(int j=i+1; j<styler.Length(); j++)
+              {
+                int LocalStyle = styler.StyleAt(j);
+                char LocalCh = styler.SafeGetCharAt(j);
+                if(LocalCh == '(') BracketLevel++;
+                if(LocalCh == ')') BracketLevel--;
+                if(
+                  (BracketLevel == 0) &&
+                  (LocalStyle != SCE_VHDL_COMMENT) &&
+                  (LocalStyle != SCE_VHDL_STRING) &&
+                  !iswordchar(styler.SafeGetCharAt(j-1)) &&
+                  styler.Match(j, "is") &&
+                  !iswordchar(styler.SafeGetCharAt(j+2)))
+                {
+                  if (levelMinCurrentElse > levelNext) {
+                    levelMinCurrentElse = levelNext;
+                  }
+                  levelNext++;
+                  break;
+                }
+                if((BracketLevel == 0) && (LocalCh == ';'))
+                {
+                  break;
+                }
+              }
+            }
+
+          } else if (strcmp(s, "end") == 0) {
+            levelNext--;
+          }  else if(strcmp(s, "elsif") == 0) { // elsif is followed by then so folding occurs correctly
+            levelNext--;
+          } else if (strcmp(s, "else") == 0) {
+            if(strcmp(prevWord, "when") != 0)  // ignore a <= x when y else z;
+            {
+              levelMinCurrentElse = levelNext - 1;  // VHDL else is all on its own so just dec. the min level
+            }
+          } else if(
+            ((strcmp(s, "begin") == 0) && (strcmp(prevWord, "architecture") == 0)) ||
+            ((strcmp(s, "begin") == 0) && (strcmp(prevWord, "function") == 0)) ||
+            ((strcmp(s, "begin") == 0) && (strcmp(prevWord, "procedure") == 0)))
+          {
+            levelMinCurrentBegin = levelNext - 1;  
+          }
+          //Platform::DebugPrintf("Line[%04d] Prev[%20s] Cur[%20s] Level[%x]\n", lineCurrent+1, prevWord, s, levelCurrent);
+          strcpy(prevWord, s);
+        }
+      }
+    }
+    if (atEOL) {
+      int levelUse = levelCurrent;
+
+      if (foldAtElse && (levelMinCurrentElse < levelUse)) {
+        levelUse = levelMinCurrentElse;
+      }
+      if (foldAtBegin && (levelMinCurrentBegin < levelUse)) {
+        levelUse = levelMinCurrentBegin;
+      }
+      int lev = levelUse | levelNext << 16;
+      if (visibleChars == 0 && foldCompact)
+        lev |= SC_FOLDLEVELWHITEFLAG;
+
+      if (levelUse < levelNext)
+        lev |= SC_FOLDLEVELHEADERFLAG;
+      if (lev != styler.LevelAt(lineCurrent)) {
+        styler.SetLevel(lineCurrent, lev);
+      }
+      //Platform::DebugPrintf("Line[%04d] ---------------------------------------------------- Level[%x]\n", lineCurrent+1, levelCurrent);
+      lineCurrent++;
+      levelCurrent = levelNext;
+      //levelMinCurrent = levelCurrent;
+      levelMinCurrentElse = levelCurrent;
+      levelMinCurrentBegin = levelCurrent;
+      visibleChars = 0;
+    }
+    /***************************************/
+    if (!isspacechar(ch)) visibleChars++;
+  }
+
+  /***************************************/
+//  Platform::DebugPrintf("Line[%04d] ---------------------------------------------------- Level[%x]\n", lineCurrent+1, levelCurrent);
+}
+
+//=============================================================================
+static void FoldVHDLDoc(unsigned int startPos, int length, int initStyle, WordList *[],
+                       Accessor &styler) {
+  FoldNoBoxVHDLDoc(startPos, length, initStyle, styler);
+}
+
+//=============================================================================
+static const char * const VHDLWordLists[] = {
+            "Keywords",
+            "Operators",
+            "Attributes",
+            "Standard Functions",
+            "Standard Packages",
+            "Standard Types",
+            "User Words",
+            0,
+        };
+
+
+LexerModule lmVHDL(SCLEX_VHDL, ColouriseVHDLDoc, "vhdl", FoldVHDLDoc, VHDLWordLists);
+
+
+// Keyword:
+//    access after alias all architecture array assert attribute begin block body buffer bus case component 
+//    configuration constant disconnect downto else elsif end entity exit file for function generate generic 
+//    group guarded if impure in inertial inout is label library linkage literal loop map new next null of 
+//    on open others out package port postponed procedure process pure range record register reject report 
+//    return select severity shared signal subtype then to transport type unaffected units until use variable 
+//    wait when while with
+//
+// Operators:
+//    abs and mod nand nor not or rem rol ror sla sll sra srl xnor xor
+//
+// Attributes:
+//    left right low high ascending image value pos val succ pred leftof rightof base range reverse_range 
+//    length delayed stable quiet transaction event active last_event last_active last_value driving 
+//    driving_value simple_name path_name instance_name
+//
+// Std Functions:
+//    now readline read writeline write endfile resolved to_bit to_bitvector to_stdulogic to_stdlogicvector 
+//    to_stdulogicvector to_x01 to_x01z to_UX01 rising_edge falling_edge is_x shift_left shift_right rotate_left 
+//    rotate_right resize to_integer to_unsigned to_signed std_match to_01
+//
+// Std Packages:
+//    std ieee work standard textio std_logic_1164 std_logic_arith std_logic_misc std_logic_signed 
+//    std_logic_textio std_logic_unsigned numeric_bit numeric_std math_complex math_real vital_primitives 
+//    vital_timing
+//
+// Std Types:
+//    boolean bit character severity_level integer real time delay_length natural positive string bit_vector 
+//    file_open_kind file_open_status line text side width std_ulogic std_ulogic_vector std_logic 
+//    std_logic_vector X01 X01Z UX01 UX01Z unsigned signed
+//
+
index d0a7f8b0f7f1c8ff6b69637e9a7d2aa7466d3b1f..1e9920d79c5a0400ef2f71d65f2c5acd99dcd182 100644 (file)
@@ -124,7 +124,7 @@ SString &SString::assign(const char *sOther, lenpos_t sSize_) {
                s = StringAllocate(sOther, sSize_);
                if (s) {
                        sSize = sSize_; // Allow buffer bigger than real string, thus providing space to grow
-                       sLen = strlen(s);
+                       sLen = sSize_;
                } else {
                        sSize = sLen = 0;
                }
@@ -383,6 +383,33 @@ void PropSet::Set(const char *keyVal) {
        }
 }
 
+void PropSet::Unset(const char *key, int lenKey) {
+       if (!*key)      // Empty keys are not supported
+               return;
+       if (lenKey == -1)
+               lenKey = static_cast<int>(strlen(key));
+       unsigned int hash = HashString(key, lenKey);
+       Property *pPrev = NULL;
+       for (Property *p = props[hash % hashRoots]; p; p = p->next) {
+               if ((hash == p->hash) &&
+                       ((strlen(p->key) == static_cast<unsigned int>(lenKey)) &&
+                               (0 == strncmp(p->key, key, lenKey)))) {
+                       if (pPrev)
+                               pPrev->next = p->next;
+                       else
+                               props[hash % hashRoots] = p->next;
+                       if (p == enumnext)
+                               enumnext = p->next; // Not that anyone should mix enum and Set / Unset.
+                       delete [](p->key);
+                       delete [](p->val);
+                       delete p;
+                       return;
+               } else {
+                       pPrev = p;
+               }
+       }
+}
+
 void PropSet::SetMultiple(const char *s) {
        const char *eol = strchr(s, '\n');
        while (eol) {
@@ -422,39 +449,71 @@ bool PropSet::IncludesVar(const char *value, const char *key) {
        return false;
 }
 
+
+// There is some inconsistency between GetExpanded("foo") and Expand("$(foo)").
+// A solution is to keep a stack of variables that have been expanded, so that
+// recursive expansions can be skipped.  For now I'll just use the C++ stack
+// for that, through a recursive function and a simple chain of pointers.
+
+struct VarChain {
+       VarChain(const char*var_=NULL, const VarChain *link_=NULL): var(var_), link(link_) {}
+
+       bool contains(const char *testVar) const {
+               return (var && (0 == strcmp(var, testVar))) 
+                       || (link && link->contains(testVar));
+       }
+
+       const char *var;
+       const VarChain *link;
+};
+
+static int ExpandAllInPlace(PropSet &props, SString &withVars, int maxExpands, const VarChain &blankVars = VarChain()) {
+       int varStart = withVars.search("$(");
+       while ((varStart >= 0) && (maxExpands > 0)) {
+               int varEnd = withVars.search(")", varStart+2);
+               if (varEnd < 0) {
+                       break;
+               }
+
+               // For consistency, when we see '$(ab$(cde))', expand the inner variable first,
+               // regardless whether there is actually a degenerate variable named 'ab$(cde'.
+               int innerVarStart = withVars.search("$(", varStart+2);
+               while ((innerVarStart > varStart) && (innerVarStart < varEnd)) {
+                       varStart = innerVarStart;
+                       innerVarStart = withVars.search("$(", varStart+2);
+               }
+
+               SString var(withVars.c_str(), varStart + 2, varEnd);
+               SString val = props.Get(var.c_str());
+
+               if (blankVars.contains(var.c_str())) {
+                       val.clear(); // treat blankVar as an empty string (e.g. to block self-reference)
+               }
+
+               if (--maxExpands >= 0) {
+                       maxExpands = ExpandAllInPlace(props, val, maxExpands, VarChain(var.c_str(), &blankVars));
+               }
+
+               withVars.remove(varStart, varEnd-varStart+1);
+               withVars.insert(varStart, val.c_str(), val.length());
+
+               varStart = withVars.search("$(");
+       }
+
+       return maxExpands;
+}
+
+
 SString PropSet::GetExpanded(const char *key) {
        SString val = Get(key);
-       if (IncludesVar(val.c_str(), key))
-               return val;
-       return Expand(val.c_str());
+       ExpandAllInPlace(*this, val, 100, VarChain(key));
+       return val;
 }
 
 SString PropSet::Expand(const char *withVars, int maxExpands) {
-       char *base = StringDup(withVars);
-       char *cpvar = strstr(base, "$(");
-       while (cpvar && (maxExpands > 0)) {
-               char *cpendvar = strchr(cpvar, ')');
-               if (!cpendvar)
-                       break;
-               int lenvar = cpendvar - cpvar - 2;      // Subtract the $()
-               char *var = StringDup(cpvar + 2, lenvar);
-               SString val = Get(var);
-               if (IncludesVar(val.c_str(), var))
-                       break;
-               size_t newlenbase = strlen(base) + val.length() - lenvar;
-               char *newbase = new char[newlenbase];
-               strncpy(newbase, base, cpvar - base);
-               strcpy(newbase + (cpvar - base), val.c_str());
-               strcpy(newbase + (cpvar - base) + val.length(), cpendvar + 1);
-               delete []var;
-               delete []base;
-               base = newbase;
-               cpvar = strstr(base, "$(");
-               maxExpands--;
-       }
-       SString sret = base;
-       delete []base;
-       return sret;
+       SString val = withVars;
+       ExpandAllInPlace(*this, val, maxExpands);
+       return val;
 }
 
 int PropSet::GetInt(const char *key, int defaultValue) {
@@ -549,6 +608,8 @@ SString PropSet::GetWild(const char *keybase, const char *filename) {
        }
 }
 
+
+
 // GetNewExpand does not use Expand as it has to use GetWild with the filename for each
 // variable reference found.
 SString PropSet::GetNewExpand(const char *keybase, const char *filename) {
@@ -561,6 +622,8 @@ SString PropSet::GetNewExpand(const char *keybase, const char *filename) {
                        int lenvar = cpendvar - cpvar - 2;      // Subtract the $()
                        char *var = StringDup(cpvar + 2, lenvar);
                        SString val = GetWild(var, filename);
+                       if (0 == strcmp(var, keybase))
+                               val.clear(); // Self-references evaluate to empty string
                        size_t newlenbase = strlen(base) + val.length() - lenvar;
                        char *newbase = new char[newlenbase];
                        strncpy(newbase, base, cpvar - base);
@@ -820,7 +883,7 @@ bool WordList::InList(const char *s) {
  * The length of the word to compare is passed too.
  * Letter case can be ignored or preserved (default).
  */
-const char *WordList::GetNearestWord(const char *wordStart, int searchLen /*= -1*/, bool ignoreCase /*= false*/, SString wordCharacters /*='/0' */, int wordIndex /*= -1 */) {
+const char *WordList::GetNearestWord(const char *wordStart, int searchLen, bool ignoreCase /*= false*/, SString wordCharacters /*='/0' */, int wordIndex /*= -1 */) {
        int start = 0; // lower bound of the api array block to search
        int end = len - 1; // upper bound of the api array block to search
        int pivot; // index of api array element just being compared
@@ -838,36 +901,32 @@ const char *WordList::GetNearestWord(const char *wordStart, int searchLen /*= -1
                        pivot = (start + end) >> 1;
                        word = wordsNoCase[pivot];
                        cond = CompareNCaseInsensitive(wordStart, word, searchLen);
-                       if (!cond && (!wordCharacters.contains(word[searchLen]))) {
-                               // Found a word in a binary fashion. Now checks if a specific index was requested
-                               if (wordIndex < 0)
-                                       return word; // result must not be freed with free()
-
+                       if (!cond) {
+                               // find first word
+                               start = pivot;
+                               while (start > 0 && !CompareNCaseInsensitive(wordStart, wordsNoCase[start-1], searchLen)) {
+                                       start--;
+                               }
+                               // find last word
+                               end = pivot;
+                               while (end < len-1 && !CompareNCaseInsensitive(wordStart, wordsNoCase[end+1], searchLen)) {
+                                       end++;
+                               }
+                               
                                // Finds first word in a series of equal words
-                               int first = pivot;
-                               end = pivot - 1;
-                               while (start <= end) {
-                                       pivot = (start + end) >> 1;
+                               for (pivot = start; pivot <= end; pivot++) {
                                        word = wordsNoCase[pivot];
-                                       cond = CompareNCaseInsensitive(wordStart, word, searchLen);
-                                       if (!cond && (!wordCharacters.contains(word[searchLen]))) {
-                                               // Found another word
-                                               first = pivot;
-                                               end = pivot - 1;
+                                       if (!wordCharacters.contains(word[searchLen])) {
+                                               if (wordIndex <= 0) // Checks if a specific index was requested
+                                                       return word; // result must not be freed with free()
+                                               wordIndex--;
                                        }
-                                       else if (cond > 0)
-                                               start = pivot + 1;
-                                       else if (cond <= 0)
-                                               break;
                                }
-
-                               // Gets the word at the requested index
-                               word = wordsNoCase[first + wordIndex];
-                               return word;
+                               return NULL;
                        }
                        else if (cond > 0)
                                start = pivot + 1;
-                       else if (cond <= 0)
+                       else if (cond < 0)
                                end = pivot - 1;
                }
        } else { // preserve the letter case
@@ -875,36 +934,34 @@ const char *WordList::GetNearestWord(const char *wordStart, int searchLen /*= -1
                        pivot = (start + end) >> 1;
                        word = words[pivot];
                        cond = strncmp(wordStart, word, searchLen);
-                       if (!cond && (!wordCharacters.contains(word[searchLen]))) {
-                               // Found a word in a binary fashion. Now checks if a specific index was requested
-                               if (wordIndex < 0)
-                                       return word; // result must not be freed with free()
-
+                       if (!cond) {
+                               // find first word
+                               start = pivot;
+                               while (start > 0 && !strncmp(wordStart, words[start-1], searchLen)) {
+                                       start--;
+                               }
+                               // find last word
+                               end = pivot;
+                               while (end < len-1 && !strncmp(wordStart, words[end+1], searchLen)) {
+                                       end++;
+                               }
+                               
                                // Finds first word in a series of equal words
-                               int first = pivot;
-                               end = pivot - 1;
-                               while (start <= end) {
-                                       pivot = (start + end) >> 1;
+                               pivot = start;
+                               while (pivot <= end) {
                                        word = words[pivot];
-                                       cond = strncmp(wordStart, word, searchLen);
-                                       if (!cond && (!wordCharacters.contains(word[searchLen]))) {
-                                               // Found another word
-                                               first = pivot;
-                                               end = pivot - 1;
+                                       if (!wordCharacters.contains(word[searchLen])) {
+                                               if (wordIndex <= 0) // Checks if a specific index was requested
+                                                       return word; // result must not be freed with free()
+                                               wordIndex--;
                                        }
-                                       else if (cond > 0)
-                                               start = pivot + 1;
-                                       else if (cond <= 0)
-                                               break;
+                                       pivot++;
                                }
-
-                               // Gets the word at the requested index
-                               word = words[first + wordIndex];
-                               return word;
+                               return NULL;
                        }
                        else if (cond > 0)
                                start = pivot + 1;
-                       else if (cond <= 0)
+                       else if (cond < 0)
                                end = pivot - 1;
                }
        }
@@ -913,15 +970,13 @@ const char *WordList::GetNearestWord(const char *wordStart, int searchLen /*= -1
 
 /**
  * Find the length of a 'word' which is actually an identifier in a string
- * which looks like "identifier(..." or "identifier:" or "identifier" and where
+ * which looks like "identifier(..." or "identifier" and where
  * there may be extra spaces after the identifier that should not be
  * counted in the length.
  */
 static unsigned int LengthWord(const char *word, char otherSeparator) {
-       // Find a '(', or ':'. If that fails go to the end of the string.
+       // Find a '('. If that fails go to the end of the string.
        const char *endWord = strchr(word, '(');
-       if (!endWord)
-               endWord = strchr(word, ':');
        if (!endWord && otherSeparator)
                endWord = strchr(word, otherSeparator);
        if (!endWord)
@@ -930,7 +985,7 @@ static unsigned int LengthWord(const char *word, char otherSeparator) {
 
        // Drop any space characters.
        if (endWord > word) {
-               endWord--;      // Back from the '(', ':', or '\0'
+               endWord--;      // Back from the '(', otherSeparator, or '\0'
                // Move backwards over any spaces
                while ((endWord > word) && (IsASpace(*endWord))) {
                        endWord--;
@@ -951,7 +1006,7 @@ static unsigned int LengthWord(const char *word, char otherSeparator) {
  */
 char *WordList::GetNearestWords(
     const char *wordStart,
-    int searchLen /*= -1*/,
+    int searchLen,
     bool ignoreCase /*= false*/,
     char otherSeparator /*= '\0'*/,
     bool exactLen /*=false*/) {
@@ -985,10 +1040,10 @@ char *WordList::GetNearestWords(
                                        (0 == CompareNCaseInsensitive(wordStart,
                                                wordsNoCase[pivot], searchLen))) {
                                        wordlen = LengthWord(wordsNoCase[pivot], otherSeparator) + 1;
-                                       if (exactLen && wordlen != LengthWord(wordStart, otherSeparator) + 1)
-                                               break;
-                                       wordsNear.append(wordsNoCase[pivot], wordlen, ' ');
                                        ++pivot;
+                                       if (exactLen && wordlen != LengthWord(wordStart, otherSeparator) + 1)
+                                               continue;
+                                       wordsNear.append(wordsNoCase[pivot-1], wordlen, ' ');
                                }
                                return wordsNear.detach();
                        } else if (cond < 0) {
@@ -1013,10 +1068,10 @@ char *WordList::GetNearestWords(
                                        (0 == strncmp(wordStart,
                                                words[pivot], searchLen))) {
                                        wordlen = LengthWord(words[pivot], otherSeparator) + 1;
-                                       if (exactLen && wordlen != LengthWord(wordStart, otherSeparator) + 1)
-                                               break;
-                                       wordsNear.append(words[pivot], wordlen, ' ');
                                        ++pivot;
+                                       if (exactLen && wordlen != LengthWord(wordStart, otherSeparator) + 1)
+                                               continue;
+                                       wordsNear.append(words[pivot-1], wordlen, ' ');
                                }
                                return wordsNear.detach();
                        } else if (cond < 0) {
index cc02674b355995c6284b3b19579930c449420039..1d3867b7fe1510660dbfd4fa9a985f7ffc0202fa 100644 (file)
@@ -280,9 +280,9 @@ void ScintillaBase::AutoCompleteMoveToCurrentWord() {
        char wordCurrent[1000];
        int i;
        int startWord = ac.posStart - ac.startLen;
-       for (i = startWord; i < currentPos; i++)
+       for (i = startWord; i < currentPos && i - startWord < 1000; i++)
                wordCurrent[i - startWord] = pdoc->CharAt(i);
-       wordCurrent[i - startWord] = '\0';
+       wordCurrent[Platform::Minimum(i - startWord, 999)] = '\0';
        ac.Select(wordCurrent);
 }
 
@@ -357,11 +357,12 @@ void ScintillaBase::CallTipShow(Point pt, const char *defn) {
        AutoCompleteCancel();
        pt.y += vs.lineHeight;
        PRectangle rc = ct.CallTipStart(currentPos, pt,
-                                                                       defn,
-                                                                       vs.styles[STYLE_DEFAULT].fontName,
-                                                                       vs.styles[STYLE_DEFAULT].sizeZoomed,
-                                                                       IsUnicodeMode(),
-                                                                       wMain);
+               defn,
+               vs.styles[STYLE_DEFAULT].fontName,
+               vs.styles[STYLE_DEFAULT].sizeZoomed,
+               CodePage(),
+               vs.styles[STYLE_DEFAULT].characterSet,
+               wMain);
        // If the call-tip window would be out of the client
        // space, adjust so it displays above the text.
        PRectangle rcClient = GetClientRectangle();
index 15cad6382969fb8070ac312b40547de47f3949bd..363db90f4528c5bfe3abda127f5e063b369d389f 100644 (file)
@@ -16,7 +16,7 @@ unsigned int UTF8Length(const wchar_t *uptr, unsigned int tlen) {
                if (uch < 0x80)
                        len++;
                else if (uch < 0x800)
-                       len+=2;
+                       len += 2;
                else
                        len +=3;
        }
index b3b3cd2765934fc9eee85b8337c6c9b373f1dd6f..f534906177dad0be62b4d5de0003ff3049f25474 100644 (file)
@@ -2408,6 +2408,12 @@ void wxStyledTextCtrl::Allocate(int bytes) {
     SendMsg(2446, bytes, 0);
 }
 
+// Find the position of a column on a line taking into account tabs and 
+// multi-byte characters. If beyond end of line, return line end position.
+int wxStyledTextCtrl::FindColumn(int line, int column) {
+    return SendMsg(2456, line, column);
+}
+
 // Start notifying the container of all key presses and commands.
 void wxStyledTextCtrl::StartRecord() {
     SendMsg(3001, 0, 0);