diff --git a/src/CodeBlocks_wx30-unix.workspace b/src/CodeBlocks_wx30-unix.workspace
index dda7b8a9f4..895c3e51b5 100644
--- a/src/CodeBlocks_wx30-unix.workspace
+++ b/src/CodeBlocks_wx30-unix.workspace
@@ -15,6 +15,9 @@
+
+
+
diff --git a/src/CodeBlocks_wx30.workspace b/src/CodeBlocks_wx30.workspace
index 83a80f5c06..b15fde36b4 100644
--- a/src/CodeBlocks_wx30.workspace
+++ b/src/CodeBlocks_wx30.workspace
@@ -1,7 +1,7 @@
-
+
@@ -16,6 +16,7 @@
+
@@ -33,7 +34,6 @@
-
diff --git a/src/plugins/contrib/wxSmithSTC/Makefile.am b/src/plugins/contrib/wxSmithSTC/Makefile.am
index 506bc1e527..cf4fefdb7c 100644
--- a/src/plugins/contrib/wxSmithSTC/Makefile.am
+++ b/src/plugins/contrib/wxSmithSTC/Makefile.am
@@ -3,5 +3,4 @@ EXTRA_DIST = $(srcdir)/*.cpp \
$(srcdir)/*.cbp \
$(srcdir)/manifest.xml \
$(srcdir)/images \
- $(srcdir)/stc \
$(srcdir)/stedit
diff --git a/src/plugins/contrib/wxSmithSTC/stc/Makefile.in b/src/plugins/contrib/wxSmithSTC/stc/Makefile.in
deleted file mode 100644
index a2bb3b895d..0000000000
--- a/src/plugins/contrib/wxSmithSTC/stc/Makefile.in
+++ /dev/null
@@ -1,956 +0,0 @@
-# =========================================================================
-# This makefile was generated by
-# Bakefile 0.2.9 (http://www.bakefile.org)
-# Do not modify, all changes will be overwritten!
-# =========================================================================
-
-
-@MAKE_SET@
-
-prefix = @prefix@
-exec_prefix = @exec_prefix@
-datarootdir = @datarootdir@
-INSTALL = @INSTALL@
-SHARED_LD_CXX = @SHARED_LD_CXX@
-LIBEXT = @LIBEXT@
-LIBPREFIX = @LIBPREFIX@
-SO_SUFFIX = @SO_SUFFIX@
-DLLIMP_SUFFIX = @DLLIMP_SUFFIX@
-LN_S = @LN_S@
-WINDRES = @WINDRES@
-PIC_FLAG = @PIC_FLAG@
-SONAME_FLAG = @SONAME_FLAG@
-STRIP = @STRIP@
-INSTALL_PROGRAM = @INSTALL_PROGRAM@
-INSTALL_DATA = @INSTALL_DATA@
-INSTALL_DIR = @INSTALL_DIR@
-BK_DEPS = @BK_DEPS@
-srcdir = @srcdir@
-top_srcdir = @top_srcdir@
-libdir = @libdir@
-includedir = @includedir@
-DLLPREFIX = @DLLPREFIX@
-LIBS = @LIBS@
-AR = @AR@
-AROPTIONS = @AROPTIONS@
-RANLIB = @RANLIB@
-CXX = @CXX@
-CXXFLAGS = @CXXFLAGS@
-CPPFLAGS = @CPPFLAGS@
-LDFLAGS = @LDFLAGS@
-VENDOR = @VENDOR@
-WX_FLAVOUR = @WX_FLAVOUR@
-WX_LIB_FLAVOUR = @WX_LIB_FLAVOUR@
-TOOLKIT = @TOOLKIT@
-TOOLKIT_LOWERCASE = @TOOLKIT_LOWERCASE@
-TOOLKIT_VERSION = @TOOLKIT_VERSION@
-TOOLCHAIN_FULLNAME = @TOOLCHAIN_FULLNAME@
-EXTRALIBS = @EXTRALIBS@
-EXTRALIBS_GUI = @EXTRALIBS_GUI@
-HOST_SUFFIX = @HOST_SUFFIX@
-wx_top_builddir = @wx_top_builddir@
-
-### Variables: ###
-
-DESTDIR =
-WX_RELEASE = 2.8
-WX_RELEASE_NODOT = 28
-LIBDIRNAME = $(wx_top_builddir)/lib
-STCDLL_CXXFLAGS = -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \
- $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) $(__THREAD_DEFINE_p) \
- -DWXBUILDING -I$(srcdir)/../../include -I$(srcdir)/scintilla/include \
- -I$(srcdir)/scintilla/src -D__WX__ -DSCI_LEXER -DLINK_LEXERS -DWXUSINGDLL \
- -DWXMAKINGDLL_STC $(PIC_FLAG) $(CPPFLAGS) $(CXXFLAGS)
-STCDLL_OBJECTS = \
- stcdll_PlatWX.o \
- stcdll_ScintillaWX.o \
- stcdll_stc.o \
- stcdll_AutoComplete.o \
- stcdll_CallTip.o \
- stcdll_CellBuffer.o \
- stcdll_CharClassify.o \
- stcdll_ContractionState.o \
- stcdll_Document.o \
- stcdll_DocumentAccessor.o \
- stcdll_Editor.o \
- stcdll_ExternalLexer.o \
- stcdll_Indicator.o \
- stcdll_KeyMap.o \
- stcdll_KeyWords.o \
- stcdll_LexAPDL.o \
- stcdll_LexAU3.o \
- stcdll_LexAVE.o \
- stcdll_LexAda.o \
- stcdll_LexAsm.o \
- stcdll_LexAsn1.o \
- stcdll_LexBaan.o \
- stcdll_LexBash.o \
- stcdll_LexBasic.o \
- stcdll_LexBullant.o \
- stcdll_LexCLW.o \
- stcdll_LexCPP.o \
- stcdll_LexCSS.o \
- stcdll_LexCaml.o \
- stcdll_LexCsound.o \
- stcdll_LexConf.o \
- stcdll_LexCrontab.o \
- stcdll_LexEScript.o \
- stcdll_LexEiffel.o \
- stcdll_LexErlang.o \
- stcdll_LexFlagship.o \
- stcdll_LexForth.o \
- stcdll_LexFortran.o \
- stcdll_LexGui4Cli.o \
- stcdll_LexHTML.o \
- stcdll_LexHaskell.o \
- stcdll_LexInno.o \
- stcdll_LexKix.o \
- stcdll_LexLisp.o \
- stcdll_LexLout.o \
- stcdll_LexLua.o \
- stcdll_LexMMIXAL.o \
- stcdll_LexMPT.o \
- stcdll_LexMSSQL.o \
- stcdll_LexMatlab.o \
- stcdll_LexMetapost.o \
- stcdll_LexNsis.o \
- stcdll_LexOpal.o \
- stcdll_LexOthers.o \
- stcdll_LexPB.o \
- stcdll_LexPOV.o \
- stcdll_LexPS.o \
- stcdll_LexPascal.o \
- stcdll_LexPerl.o \
- stcdll_LexPython.o \
- stcdll_LexRebol.o \
- stcdll_LexRuby.o \
- stcdll_LexSQL.o \
- stcdll_LexSmalltalk.o \
- stcdll_LexTADS3.o \
- stcdll_LexScriptol.o \
- stcdll_LexSpecman.o \
- stcdll_LexSpice.o \
- stcdll_LexTCL.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_Style.o \
- stcdll_StyleContext.o \
- stcdll_UniConversion.o \
- stcdll_ViewStyle.o \
- stcdll_WindowAccessor.o \
- stcdll_XPM.o \
- $(__stcdll___win32rc)
-STCLIB_CXXFLAGS = -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \
- $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) $(__THREAD_DEFINE_p) \
- -DWXBUILDING -I$(srcdir)/../../include -I$(srcdir)/scintilla/include \
- -I$(srcdir)/scintilla/src -D__WX__ -DSCI_LEXER -DLINK_LEXERS $(CPPFLAGS) \
- $(CXXFLAGS)
-STCLIB_OBJECTS = \
- stclib_PlatWX.o \
- stclib_ScintillaWX.o \
- stclib_stc.o \
- stclib_AutoComplete.o \
- stclib_CallTip.o \
- stclib_CellBuffer.o \
- stclib_CharClassify.o \
- stclib_ContractionState.o \
- stclib_Document.o \
- stclib_DocumentAccessor.o \
- stclib_Editor.o \
- stclib_ExternalLexer.o \
- stclib_Indicator.o \
- stclib_KeyMap.o \
- stclib_KeyWords.o \
- stclib_LexAPDL.o \
- stclib_LexAU3.o \
- stclib_LexAVE.o \
- stclib_LexAda.o \
- stclib_LexAsm.o \
- stclib_LexAsn1.o \
- stclib_LexBaan.o \
- stclib_LexBash.o \
- stclib_LexBasic.o \
- stclib_LexBullant.o \
- stclib_LexCLW.o \
- stclib_LexCPP.o \
- stclib_LexCSS.o \
- stclib_LexCaml.o \
- stclib_LexCsound.o \
- stclib_LexConf.o \
- stclib_LexCrontab.o \
- stclib_LexEScript.o \
- stclib_LexEiffel.o \
- stclib_LexErlang.o \
- stclib_LexFlagship.o \
- stclib_LexForth.o \
- stclib_LexFortran.o \
- stclib_LexGui4Cli.o \
- stclib_LexHTML.o \
- stclib_LexHaskell.o \
- stclib_LexInno.o \
- stclib_LexKix.o \
- stclib_LexLisp.o \
- stclib_LexLout.o \
- stclib_LexLua.o \
- stclib_LexMMIXAL.o \
- stclib_LexMPT.o \
- stclib_LexMSSQL.o \
- stclib_LexMatlab.o \
- stclib_LexMetapost.o \
- stclib_LexNsis.o \
- stclib_LexOpal.o \
- stclib_LexOthers.o \
- stclib_LexPB.o \
- stclib_LexPOV.o \
- stclib_LexPS.o \
- stclib_LexPascal.o \
- stclib_LexPerl.o \
- stclib_LexPython.o \
- stclib_LexRebol.o \
- stclib_LexRuby.o \
- stclib_LexSQL.o \
- stclib_LexSmalltalk.o \
- stclib_LexTADS3.o \
- stclib_LexScriptol.o \
- stclib_LexSpecman.o \
- stclib_LexSpice.o \
- stclib_LexTCL.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_Style.o \
- stclib_StyleContext.o \
- stclib_UniConversion.o \
- stclib_ViewStyle.o \
- stclib_WindowAccessor.o \
- stclib_XPM.o
-
-### Conditionally set variables: ###
-
-@COND_DEPS_TRACKING_0@CXXC = $(CXX)
-@COND_DEPS_TRACKING_1@CXXC = $(BK_DEPS) $(CXX)
-@COND_PLATFORM_MACOSX_1@WXMACVERSION_CMD = \
-@COND_PLATFORM_MACOSX_1@ -compatibility_version 9.0 -current_version 9.0
-@COND_USE_GUI_0@PORTNAME = base
-@COND_USE_GUI_1@PORTNAME = $(TOOLKIT_LOWERCASE)$(TOOLKIT_VERSION)
-@COND_TOOLKIT_MAC@WXBASEPORT = _carbon
-@COND_PLATFORM_WIN32_1@WXCOMPILER = _gcc
-@COND_OFFICIAL_BUILD_0_PLATFORM_WIN32_1@VENDORTAG = _$(VENDOR)
-@COND_OFFICIAL_BUILD_1_PLATFORM_WIN32_1@VENDORTAG =
-@COND_BUILD_debug_DEBUG_FLAG_default@WXDEBUGFLAG = d
-@COND_DEBUG_FLAG_1@WXDEBUGFLAG = d
-@COND_UNICODE_1@WXUNICODEFLAG = u
-@COND_WXUNIV_1@WXUNIVNAME = univ
-@COND_PLATFORM_WIN32_0@WXDLLNAMEPREFIXGUI = wx_$(PORTNAME)$(WXUNIVNAME)
-@COND_PLATFORM_WIN32_1@WXDLLNAMEPREFIXGUI = \
-@COND_PLATFORM_WIN32_1@ wx$(PORTNAME)$(WXUNIVNAME)$(WX_RELEASE_NODOT)
-@COND_PLATFORM_WIN32_0@WXDLLVERSIONTAG = -$(WX_RELEASE)
-@COND_PLATFORM_WIN32_1@WXDLLVERSIONTAG =
-@COND_MONOLITHIC_0@EXTRALIBS_FOR_BASE = $(EXTRALIBS)
-@COND_MONOLITHIC_1@EXTRALIBS_FOR_BASE = $(EXTRALIBS) $(EXTRALIBS_GUI)
-@COND_MONOLITHIC_0@EXTRALIBS_FOR_GUI = $(EXTRALIBS_GUI)
-@COND_MONOLITHIC_1@EXTRALIBS_FOR_GUI =
-COND_SHARED_1___stcdll___depname = \
- $(LIBDIRNAME)/$(DLLPREFIX)$(WXDLLNAMEPREFIXGUI)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_stc$(WXCOMPILER)$(VENDORTAG)$(WXDLLVERSIONTAG)$(__stcdll___targetsuf3)
-@COND_SHARED_1@__stcdll___depname = $(COND_SHARED_1___stcdll___depname)
-@COND_WXUNIV_1@__WXUNIV_DEFINE_p_1 = --define __WXUNIVERSAL__
-@COND_USE_EXCEPTIONS_0@__EXCEPTIONS_DEFINE_p_1 = --define wxNO_EXCEPTIONS
-@COND_USE_RTTI_0@__RTTI_DEFINE_p_1 = --define wxNO_RTTI
-@COND_USE_THREADS_0@__THREAD_DEFINE_p_1 = --define wxNO_THREADS
-@COND_SHARED_1@__install_stcdll___depname = install_stcdll
-@COND_SHARED_1@__uninstall_stcdll___depname = uninstall_stcdll
-COND_PLATFORM_MACOSX_1___stcdll___macinstnamecmd = -install_name \
- $(libdir)/$(DLLPREFIX)$(WXDLLNAMEPREFIXGUI)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_stc$(WXCOMPILER)$(VENDORTAG)$(WXDLLVERSIONTAG)$(__stcdll___targetsuf2)
-@COND_PLATFORM_MACOSX_1@__stcdll___macinstnamecmd = $(COND_PLATFORM_MACOSX_1___stcdll___macinstnamecmd)
-COND_PLATFORM_OS2_1___stcdll___importlib = -import \
- $(LIBDIRNAME)/$(LIBPREFIX)wx_$(PORTNAME)$(WXUNIVNAME)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_stc-$(WX_RELEASE)$(HOST_SUFFIX).$(DLLIMP_SUFFIX)
-@COND_PLATFORM_OS2_1@__stcdll___importlib = $(COND_PLATFORM_OS2_1___stcdll___importlib)
-COND_WINDOWS_IMPLIB_1___stcdll___importlib = \
- -Wl,--out-implib=$(LIBDIRNAME)/$(LIBPREFIX)wx_$(PORTNAME)$(WXUNIVNAME)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_stc-$(WX_RELEASE)$(HOST_SUFFIX).$(DLLIMP_SUFFIX)
-@COND_WINDOWS_IMPLIB_1@__stcdll___importlib = $(COND_WINDOWS_IMPLIB_1___stcdll___importlib)
-@COND_PLATFORM_MACOSX_0_USE_SOVERSION_1@__stcdll___targetsuf2 \
-@COND_PLATFORM_MACOSX_0_USE_SOVERSION_1@ = .$(SO_SUFFIX).0
-@COND_PLATFORM_MACOSX_1_USE_SOVERSION_1@__stcdll___targetsuf2 \
-@COND_PLATFORM_MACOSX_1_USE_SOVERSION_1@ = .0.$(SO_SUFFIX)
-@COND_USE_SOVERSION_0@__stcdll___targetsuf2 = .$(SO_SUFFIX)
-@COND_PLATFORM_MACOSX_0_USE_SOVERCYGWIN_0_USE_SOVERSION_1@__stcdll___targetsuf3 \
-@COND_PLATFORM_MACOSX_0_USE_SOVERCYGWIN_0_USE_SOVERSION_1@ = \
-@COND_PLATFORM_MACOSX_0_USE_SOVERCYGWIN_0_USE_SOVERSION_1@ .$(SO_SUFFIX).0.8.0
-@COND_PLATFORM_MACOSX_1_USE_SOVERSION_1@__stcdll___targetsuf3 \
-@COND_PLATFORM_MACOSX_1_USE_SOVERSION_1@ = .0.8.0.$(SO_SUFFIX)
-@COND_USE_SOVERSION_1_USE_SOVERSOLARIS_1@__stcdll___targetsuf3 \
-@COND_USE_SOVERSION_1_USE_SOVERSOLARIS_1@ = .$(SO_SUFFIX).0
-@COND_USE_SOVERCYGWIN_1_USE_SOVERSION_1@__stcdll___targetsuf3 \
-@COND_USE_SOVERCYGWIN_1_USE_SOVERSION_1@ = -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)
-@COND_USE_SOVERLINUX_1@__stcdll___soname_flags = $(COND_USE_SOVERLINUX_1___stcdll___soname_flags)
-COND_USE_SOVERSOLARIS_1___stcdll___soname_flags = \
- $(SONAME_FLAG)$(DLLPREFIX)$(WXDLLNAMEPREFIXGUI)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_stc$(WXCOMPILER)$(VENDORTAG)$(WXDLLVERSIONTAG)$(__stcdll___targetsuf3)
-@COND_USE_SOVERSOLARIS_1@__stcdll___soname_flags = $(COND_USE_SOVERSOLARIS_1___stcdll___soname_flags)
-COND_USE_SOTWOSYMLINKS_1___stcdll___so_symlinks_cmd = (cd $(LIBDIRNAME)/; rm -f \
- $(LIBPREFIX)wx_$(PORTNAME)$(WXUNIVNAME)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_stc-$(WX_RELEASE)$(HOST_SUFFIX).$(DLLIMP_SUFFIX) \
- $(DLLPREFIX)$(WXDLLNAMEPREFIXGUI)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_stc$(WXCOMPILER)$(VENDORTAG)$(WXDLLVERSIONTAG)$(__stcdll___targetsuf2); \
- $(LN_S) \
- $(DLLPREFIX)$(WXDLLNAMEPREFIXGUI)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_stc$(WXCOMPILER)$(VENDORTAG)$(WXDLLVERSIONTAG)$(__stcdll___targetsuf3) \
- $(DLLPREFIX)$(WXDLLNAMEPREFIXGUI)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_stc$(WXCOMPILER)$(VENDORTAG)$(WXDLLVERSIONTAG)$(__stcdll___targetsuf2); \
- $(LN_S) \
- $(DLLPREFIX)$(WXDLLNAMEPREFIXGUI)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_stc$(WXCOMPILER)$(VENDORTAG)$(WXDLLVERSIONTAG)$(__stcdll___targetsuf2) \
- $(LIBPREFIX)wx_$(PORTNAME)$(WXUNIVNAME)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_stc-$(WX_RELEASE)$(HOST_SUFFIX).$(DLLIMP_SUFFIX))
-@COND_USE_SOTWOSYMLINKS_1@__stcdll___so_symlinks_cmd = $(COND_USE_SOTWOSYMLINKS_1___stcdll___so_symlinks_cmd)
-COND_USE_SOVERSOLARIS_1___stcdll___so_symlinks_cmd = (cd $(LIBDIRNAME)/; rm -f \
- $(LIBPREFIX)wx_$(PORTNAME)$(WXUNIVNAME)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_stc-$(WX_RELEASE)$(HOST_SUFFIX).$(DLLIMP_SUFFIX); \
- $(LN_S) \
- $(DLLPREFIX)$(WXDLLNAMEPREFIXGUI)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_stc$(WXCOMPILER)$(VENDORTAG)$(WXDLLVERSIONTAG)$(__stcdll___targetsuf3) \
- $(LIBPREFIX)wx_$(PORTNAME)$(WXUNIVNAME)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_stc-$(WX_RELEASE)$(HOST_SUFFIX).$(DLLIMP_SUFFIX))
-@COND_USE_SOVERSOLARIS_1@__stcdll___so_symlinks_cmd = $(COND_USE_SOVERSOLARIS_1___stcdll___so_symlinks_cmd)
-COND_USE_SOTWOSYMLINKS_1___stcdll___so_symlinks_inst_cmd = rm -f \
- $(LIBPREFIX)wx_$(PORTNAME)$(WXUNIVNAME)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_stc-$(WX_RELEASE)$(HOST_SUFFIX).$(DLLIMP_SUFFIX) \
- $(DLLPREFIX)$(WXDLLNAMEPREFIXGUI)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_stc$(WXCOMPILER)$(VENDORTAG)$(WXDLLVERSIONTAG)$(__stcdll___targetsuf2); \
- $(LN_S) \
- $(DLLPREFIX)$(WXDLLNAMEPREFIXGUI)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_stc$(WXCOMPILER)$(VENDORTAG)$(WXDLLVERSIONTAG)$(__stcdll___targetsuf3) \
- $(DLLPREFIX)$(WXDLLNAMEPREFIXGUI)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_stc$(WXCOMPILER)$(VENDORTAG)$(WXDLLVERSIONTAG)$(__stcdll___targetsuf2); \
- $(LN_S) \
- $(DLLPREFIX)$(WXDLLNAMEPREFIXGUI)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_stc$(WXCOMPILER)$(VENDORTAG)$(WXDLLVERSIONTAG)$(__stcdll___targetsuf2) \
- $(LIBPREFIX)wx_$(PORTNAME)$(WXUNIVNAME)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_stc-$(WX_RELEASE)$(HOST_SUFFIX).$(DLLIMP_SUFFIX)
-@COND_USE_SOTWOSYMLINKS_1@__stcdll___so_symlinks_inst_cmd = $(COND_USE_SOTWOSYMLINKS_1___stcdll___so_symlinks_inst_cmd)
-COND_USE_SOVERSOLARIS_1___stcdll___so_symlinks_inst_cmd = rm -f \
- $(LIBPREFIX)wx_$(PORTNAME)$(WXUNIVNAME)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_stc-$(WX_RELEASE)$(HOST_SUFFIX).$(DLLIMP_SUFFIX); \
- $(LN_S) \
- $(DLLPREFIX)$(WXDLLNAMEPREFIXGUI)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_stc$(WXCOMPILER)$(VENDORTAG)$(WXDLLVERSIONTAG)$(__stcdll___targetsuf3) \
- $(LIBPREFIX)wx_$(PORTNAME)$(WXUNIVNAME)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_stc-$(WX_RELEASE)$(HOST_SUFFIX).$(DLLIMP_SUFFIX);
-@COND_USE_SOVERSOLARIS_1@__stcdll___so_symlinks_inst_cmd = $(COND_USE_SOVERSOLARIS_1___stcdll___so_symlinks_inst_cmd)
-COND_USE_SOTWOSYMLINKS_1___stcdll___so_symlinks_uninst_cmd = rm -f \
- $(DLLPREFIX)$(WXDLLNAMEPREFIXGUI)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_stc$(WXCOMPILER)$(VENDORTAG)$(WXDLLVERSIONTAG)$(__stcdll___targetsuf2) \
- $(LIBPREFIX)wx_$(PORTNAME)$(WXUNIVNAME)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_stc-$(WX_RELEASE)$(HOST_SUFFIX).$(DLLIMP_SUFFIX)
-@COND_USE_SOTWOSYMLINKS_1@__stcdll___so_symlinks_uninst_cmd = $(COND_USE_SOTWOSYMLINKS_1___stcdll___so_symlinks_uninst_cmd)
-COND_USE_SOVERSOLARIS_1___stcdll___so_symlinks_uninst_cmd = rm -f \
- $(LIBPREFIX)wx_$(PORTNAME)$(WXUNIVNAME)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_stc-$(WX_RELEASE)$(HOST_SUFFIX).$(DLLIMP_SUFFIX)
-@COND_USE_SOVERSOLARIS_1@__stcdll___so_symlinks_uninst_cmd = $(COND_USE_SOVERSOLARIS_1___stcdll___so_symlinks_uninst_cmd)
-@COND_TOOLKIT_MSW@__RCDEFDIR_p = --include-dir \
-@COND_TOOLKIT_MSW@ $(LIBDIRNAME)/wx/include/$(TOOLCHAIN_FULLNAME)
-COND_MONOLITHIC_1___WXLIB_MONO_p = \
- -lwx_$(PORTNAME)$(WXUNIVNAME)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)-$(WX_RELEASE)$(HOST_SUFFIX)
-@COND_MONOLITHIC_1@__WXLIB_MONO_p = $(COND_MONOLITHIC_1___WXLIB_MONO_p)
-@COND_USE_GUI_1_wxUSE_LIBTIFF_builtin@__LIB_TIFF_p \
-@COND_USE_GUI_1_wxUSE_LIBTIFF_builtin@ = \
-@COND_USE_GUI_1_wxUSE_LIBTIFF_builtin@ -lwxtiff$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)-$(WX_RELEASE)$(HOST_SUFFIX)
-@COND_USE_GUI_1_wxUSE_LIBJPEG_builtin@__LIB_JPEG_p \
-@COND_USE_GUI_1_wxUSE_LIBJPEG_builtin@ = \
-@COND_USE_GUI_1_wxUSE_LIBJPEG_builtin@ -lwxjpeg$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)-$(WX_RELEASE)$(HOST_SUFFIX)
-@COND_USE_GUI_1_wxUSE_LIBPNG_builtin@__LIB_PNG_p \
-@COND_USE_GUI_1_wxUSE_LIBPNG_builtin@ = \
-@COND_USE_GUI_1_wxUSE_LIBPNG_builtin@ -lwxpng$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)-$(WX_RELEASE)$(HOST_SUFFIX)
-@COND_wxUSE_ZLIB_builtin@__LIB_ZLIB_p = \
-@COND_wxUSE_ZLIB_builtin@ -lwxzlib$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)-$(WX_RELEASE)$(HOST_SUFFIX)
-@COND_wxUSE_ODBC_builtin@__LIB_ODBC_p = \
-@COND_wxUSE_ODBC_builtin@ -lwxodbc$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)-$(WX_RELEASE)$(HOST_SUFFIX)
-COND_wxUSE_REGEX_builtin___LIB_REGEX_p = \
- -lwxregex$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)-$(WX_RELEASE)$(HOST_SUFFIX)
-@COND_wxUSE_REGEX_builtin@__LIB_REGEX_p = $(COND_wxUSE_REGEX_builtin___LIB_REGEX_p)
-@COND_wxUSE_EXPAT_builtin@__LIB_EXPAT_p = \
-@COND_wxUSE_EXPAT_builtin@ -lwxexpat$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)-$(WX_RELEASE)$(HOST_SUFFIX)
-@COND_PLATFORM_WIN32_1@__stcdll___win32rc = stcdll_version_rc.o
-COND_MONOLITHIC_0___WXLIB_CORE_p = \
- -lwx_$(PORTNAME)$(WXUNIVNAME)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_core-$(WX_RELEASE)$(HOST_SUFFIX)
-@COND_MONOLITHIC_0@__WXLIB_CORE_p = $(COND_MONOLITHIC_0___WXLIB_CORE_p)
-COND_MONOLITHIC_0___WXLIB_BASE_p = \
- -lwx_base$(WXBASEPORT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)-$(WX_RELEASE)$(HOST_SUFFIX)
-@COND_MONOLITHIC_0@__WXLIB_BASE_p = $(COND_MONOLITHIC_0___WXLIB_BASE_p)
-COND_SHARED_0___stclib___depname = \
- $(LIBDIRNAME)/$(LIBPREFIX)wx_$(PORTNAME)$(WXUNIVNAME)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_stc-$(WX_RELEASE)$(HOST_SUFFIX)$(LIBEXT)
-@COND_SHARED_0@__stclib___depname = $(COND_SHARED_0___stclib___depname)
-@COND_SHARED_0@__install_stclib___depname = install_stclib
-@COND_SHARED_0@__uninstall_stclib___depname = uninstall_stclib
-@COND_WXUNIV_1@__WXUNIV_DEFINE_p = -D__WXUNIVERSAL__
-@COND_USE_EXCEPTIONS_0@__EXCEPTIONS_DEFINE_p = -DwxNO_EXCEPTIONS
-@COND_USE_RTTI_0@__RTTI_DEFINE_p = -DwxNO_RTTI
-@COND_USE_THREADS_0@__THREAD_DEFINE_p = -DwxNO_THREADS
-
-### Targets: ###
-
-all: $(__stcdll___depname) $(__stclib___depname)
-
-install: $(__install_stcdll___depname) $(__install_stclib___depname)
- $(INSTALL_DIR) $(DESTDIR)$(includedir)/wx-$(WX_RELEASE)$(WX_FLAVOUR)
- for f in wx/stc/stc.h; do \
- if test ! -d $(DESTDIR)$(includedir)/wx-$(WX_RELEASE)$(WX_FLAVOUR)/`dirname $$f` ; then \
- $(INSTALL_DIR) $(DESTDIR)$(includedir)/wx-$(WX_RELEASE)$(WX_FLAVOUR)/`dirname $$f`; \
- fi; \
- $(INSTALL_DATA) $(srcdir)/../../include/$$f $(DESTDIR)$(includedir)/wx-$(WX_RELEASE)$(WX_FLAVOUR)/$$f; \
- done
-
-uninstall: $(__uninstall_stcdll___depname) $(__uninstall_stclib___depname)
- for f in wx/stc/stc.h; do \
- rm -f $(DESTDIR)$(includedir)/wx-$(WX_RELEASE)$(WX_FLAVOUR)/$$f; \
- done
-
-install-strip: install
- $(STRIP) $(DESTDIR)$(libdir)/$(DLLPREFIX)$(WXDLLNAMEPREFIXGUI)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_stc$(WXCOMPILER)$(VENDORTAG)$(WXDLLVERSIONTAG)$(__stcdll___targetsuf3)
-
-clean:
- rm -rf ./.deps ./.pch
- rm -f ./*.o
- rm -f $(LIBDIRNAME)/$(DLLPREFIX)$(WXDLLNAMEPREFIXGUI)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_stc$(WXCOMPILER)$(VENDORTAG)$(WXDLLVERSIONTAG)$(__stcdll___targetsuf3)
- rm -f $(LIBDIRNAME)/$(LIBPREFIX)wx_$(PORTNAME)$(WXUNIVNAME)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_stc-$(WX_RELEASE)$(HOST_SUFFIX).$(DLLIMP_SUFFIX)
- rm -f $(LIBDIRNAME)/$(LIBPREFIX)wx_$(PORTNAME)$(WXUNIVNAME)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_stc-$(WX_RELEASE)$(HOST_SUFFIX).$(DLLIMP_SUFFIX) $(LIBDIRNAME)/$(DLLPREFIX)$(WXDLLNAMEPREFIXGUI)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_stc$(WXCOMPILER)$(VENDORTAG)$(WXDLLVERSIONTAG)$(__stcdll___targetsuf2)
- rm -f $(LIBDIRNAME)/$(LIBPREFIX)wx_$(PORTNAME)$(WXUNIVNAME)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_stc-$(WX_RELEASE)$(HOST_SUFFIX)$(LIBEXT)
-
-distclean: clean
- 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) $(__stcdll___win32rc)
-@COND_SHARED_1@ $(SHARED_LD_CXX) $@ $(STCDLL_OBJECTS) -L$(LIBDIRNAME) $(__stcdll___macinstnamecmd) $(__stcdll___importlib) $(__stcdll___soname_flags) $(WXMACVERSION_CMD) $(LDFLAGS) $(__WXLIB_MONO_p) $(__LIB_TIFF_p) $(__LIB_JPEG_p) $(__LIB_PNG_p) $(EXTRALIBS_FOR_GUI) $(__LIB_ZLIB_p) $(__LIB_ODBC_p) $(__LIB_REGEX_p) $(__LIB_EXPAT_p) $(EXTRALIBS_FOR_BASE) $(__WXLIB_CORE_p) $(__WXLIB_BASE_p) $(LIBS)
-@COND_SHARED_1@
-@COND_SHARED_1@ $(__stcdll___so_symlinks_cmd)
-
-@COND_SHARED_1@install_stcdll: $(__stcdll___depname)
-@COND_SHARED_1@ $(INSTALL_DIR) $(DESTDIR)$(libdir)
-@COND_SHARED_1@ $(INSTALL_DATA) $(LIBDIRNAME)/$(LIBPREFIX)wx_$(PORTNAME)$(WXUNIVNAME)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_stc-$(WX_RELEASE)$(HOST_SUFFIX).$(DLLIMP_SUFFIX) $(DESTDIR)$(libdir)
-@COND_SHARED_1@ $(INSTALL_PROGRAM) $(LIBDIRNAME)/$(DLLPREFIX)$(WXDLLNAMEPREFIXGUI)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_stc$(WXCOMPILER)$(VENDORTAG)$(WXDLLVERSIONTAG)$(__stcdll___targetsuf3) $(DESTDIR)$(libdir)
-@COND_SHARED_1@ (cd $(DESTDIR)$(libdir) ; $(__stcdll___so_symlinks_inst_cmd))
-
-@COND_SHARED_1@uninstall_stcdll:
-@COND_SHARED_1@ rm -f $(DESTDIR)$(libdir)/$(LIBPREFIX)wx_$(PORTNAME)$(WXUNIVNAME)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_stc-$(WX_RELEASE)$(HOST_SUFFIX).$(DLLIMP_SUFFIX)
-@COND_SHARED_1@ rm -f $(DESTDIR)$(libdir)/$(DLLPREFIX)$(WXDLLNAMEPREFIXGUI)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_stc$(WXCOMPILER)$(VENDORTAG)$(WXDLLVERSIONTAG)$(__stcdll___targetsuf3)
-@COND_SHARED_1@ (cd $(DESTDIR)$(libdir) ; $(__stcdll___so_symlinks_uninst_cmd))
-
-@COND_SHARED_0@$(LIBDIRNAME)/$(LIBPREFIX)wx_$(PORTNAME)$(WXUNIVNAME)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_stc-$(WX_RELEASE)$(HOST_SUFFIX)$(LIBEXT): $(STCLIB_OBJECTS)
-@COND_SHARED_0@ rm -f $@
-@COND_SHARED_0@ $(AR) $(AROPTIONS) $@ $(STCLIB_OBJECTS)
-@COND_SHARED_0@ $(RANLIB) $@
-
-@COND_SHARED_0@install_stclib: $(__stclib___depname)
-@COND_SHARED_0@ $(INSTALL_DIR) $(DESTDIR)$(libdir)
-@COND_SHARED_0@ $(INSTALL_DATA) $(LIBDIRNAME)/$(LIBPREFIX)wx_$(PORTNAME)$(WXUNIVNAME)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_stc-$(WX_RELEASE)$(HOST_SUFFIX)$(LIBEXT) $(DESTDIR)$(libdir)
-
-@COND_SHARED_0@uninstall_stclib:
-@COND_SHARED_0@ rm -f $(DESTDIR)$(libdir)/$(LIBPREFIX)wx_$(PORTNAME)$(WXUNIVNAME)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_stc-$(WX_RELEASE)$(HOST_SUFFIX)$(LIBEXT)
-
-stcdll_PlatWX.o: $(srcdir)/PlatWX.cpp
- $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $(srcdir)/PlatWX.cpp
-
-stcdll_ScintillaWX.o: $(srcdir)/ScintillaWX.cpp
- $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $(srcdir)/ScintillaWX.cpp
-
-stcdll_stc.o: $(srcdir)/stc.cpp
- $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $(srcdir)/stc.cpp
-
-stcdll_AutoComplete.o: $(srcdir)/scintilla/src/AutoComplete.cxx
- $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $(srcdir)/scintilla/src/AutoComplete.cxx
-
-stcdll_CallTip.o: $(srcdir)/scintilla/src/CallTip.cxx
- $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $(srcdir)/scintilla/src/CallTip.cxx
-
-stcdll_CellBuffer.o: $(srcdir)/scintilla/src/CellBuffer.cxx
- $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $(srcdir)/scintilla/src/CellBuffer.cxx
-
-stcdll_CharClassify.o: $(srcdir)/scintilla/src/CharClassify.cxx
- $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $(srcdir)/scintilla/src/CharClassify.cxx
-
-stcdll_ContractionState.o: $(srcdir)/scintilla/src/ContractionState.cxx
- $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $(srcdir)/scintilla/src/ContractionState.cxx
-
-stcdll_Document.o: $(srcdir)/scintilla/src/Document.cxx
- $(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) $(srcdir)/scintilla/src/Editor.cxx
-
-stcdll_ExternalLexer.o: $(srcdir)/scintilla/src/ExternalLexer.cxx
- $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $(srcdir)/scintilla/src/ExternalLexer.cxx
-
-stcdll_Indicator.o: $(srcdir)/scintilla/src/Indicator.cxx
- $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $(srcdir)/scintilla/src/Indicator.cxx
-
-stcdll_KeyMap.o: $(srcdir)/scintilla/src/KeyMap.cxx
- $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $(srcdir)/scintilla/src/KeyMap.cxx
-
-stcdll_KeyWords.o: $(srcdir)/scintilla/src/KeyWords.cxx
- $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $(srcdir)/scintilla/src/KeyWords.cxx
-
-stcdll_LexAPDL.o: $(srcdir)/scintilla/src/LexAPDL.cxx
- $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $(srcdir)/scintilla/src/LexAPDL.cxx
-
-stcdll_LexAU3.o: $(srcdir)/scintilla/src/LexAU3.cxx
- $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $(srcdir)/scintilla/src/LexAU3.cxx
-
-stcdll_LexAVE.o: $(srcdir)/scintilla/src/LexAVE.cxx
- $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $(srcdir)/scintilla/src/LexAVE.cxx
-
-stcdll_LexAda.o: $(srcdir)/scintilla/src/LexAda.cxx
- $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $(srcdir)/scintilla/src/LexAda.cxx
-
-stcdll_LexAsm.o: $(srcdir)/scintilla/src/LexAsm.cxx
- $(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) $(srcdir)/scintilla/src/LexBaan.cxx
-
-stcdll_LexBash.o: $(srcdir)/scintilla/src/LexBash.cxx
- $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $(srcdir)/scintilla/src/LexBash.cxx
-
-stcdll_LexBasic.o: $(srcdir)/scintilla/src/LexBasic.cxx
- $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $(srcdir)/scintilla/src/LexBasic.cxx
-
-stcdll_LexBullant.o: $(srcdir)/scintilla/src/LexBullant.cxx
- $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $(srcdir)/scintilla/src/LexBullant.cxx
-
-stcdll_LexCLW.o: $(srcdir)/scintilla/src/LexCLW.cxx
- $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $(srcdir)/scintilla/src/LexCLW.cxx
-
-stcdll_LexCPP.o: $(srcdir)/scintilla/src/LexCPP.cxx
- $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $(srcdir)/scintilla/src/LexCPP.cxx
-
-stcdll_LexCSS.o: $(srcdir)/scintilla/src/LexCSS.cxx
- $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $(srcdir)/scintilla/src/LexCSS.cxx
-
-stcdll_LexCaml.o: $(srcdir)/scintilla/src/LexCaml.cxx
- $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $(srcdir)/scintilla/src/LexCaml.cxx
-
-stcdll_LexCsound.o: $(srcdir)/scintilla/src/LexCsound.cxx
- $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $(srcdir)/scintilla/src/LexCsound.cxx
-
-stcdll_LexConf.o: $(srcdir)/scintilla/src/LexConf.cxx
- $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $(srcdir)/scintilla/src/LexConf.cxx
-
-stcdll_LexCrontab.o: $(srcdir)/scintilla/src/LexCrontab.cxx
- $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $(srcdir)/scintilla/src/LexCrontab.cxx
-
-stcdll_LexEScript.o: $(srcdir)/scintilla/src/LexEScript.cxx
- $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $(srcdir)/scintilla/src/LexEScript.cxx
-
-stcdll_LexEiffel.o: $(srcdir)/scintilla/src/LexEiffel.cxx
- $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $(srcdir)/scintilla/src/LexEiffel.cxx
-
-stcdll_LexErlang.o: $(srcdir)/scintilla/src/LexErlang.cxx
- $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $(srcdir)/scintilla/src/LexErlang.cxx
-
-stcdll_LexFlagship.o: $(srcdir)/scintilla/src/LexFlagship.cxx
- $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $(srcdir)/scintilla/src/LexFlagship.cxx
-
-stcdll_LexForth.o: $(srcdir)/scintilla/src/LexForth.cxx
- $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $(srcdir)/scintilla/src/LexForth.cxx
-
-stcdll_LexFortran.o: $(srcdir)/scintilla/src/LexFortran.cxx
- $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $(srcdir)/scintilla/src/LexFortran.cxx
-
-stcdll_LexGui4Cli.o: $(srcdir)/scintilla/src/LexGui4Cli.cxx
- $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $(srcdir)/scintilla/src/LexGui4Cli.cxx
-
-stcdll_LexHTML.o: $(srcdir)/scintilla/src/LexHTML.cxx
- $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $(srcdir)/scintilla/src/LexHTML.cxx
-
-stcdll_LexHaskell.o: $(srcdir)/scintilla/src/LexHaskell.cxx
- $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $(srcdir)/scintilla/src/LexHaskell.cxx
-
-stcdll_LexInno.o: $(srcdir)/scintilla/src/LexInno.cxx
- $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $(srcdir)/scintilla/src/LexInno.cxx
-
-stcdll_LexKix.o: $(srcdir)/scintilla/src/LexKix.cxx
- $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $(srcdir)/scintilla/src/LexKix.cxx
-
-stcdll_LexLisp.o: $(srcdir)/scintilla/src/LexLisp.cxx
- $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $(srcdir)/scintilla/src/LexLisp.cxx
-
-stcdll_LexLout.o: $(srcdir)/scintilla/src/LexLout.cxx
- $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $(srcdir)/scintilla/src/LexLout.cxx
-
-stcdll_LexLua.o: $(srcdir)/scintilla/src/LexLua.cxx
- $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $(srcdir)/scintilla/src/LexLua.cxx
-
-stcdll_LexMMIXAL.o: $(srcdir)/scintilla/src/LexMMIXAL.cxx
- $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $(srcdir)/scintilla/src/LexMMIXAL.cxx
-
-stcdll_LexMPT.o: $(srcdir)/scintilla/src/LexMPT.cxx
- $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $(srcdir)/scintilla/src/LexMPT.cxx
-
-stcdll_LexMSSQL.o: $(srcdir)/scintilla/src/LexMSSQL.cxx
- $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $(srcdir)/scintilla/src/LexMSSQL.cxx
-
-stcdll_LexMatlab.o: $(srcdir)/scintilla/src/LexMatlab.cxx
- $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $(srcdir)/scintilla/src/LexMatlab.cxx
-
-stcdll_LexMetapost.o: $(srcdir)/scintilla/src/LexMetapost.cxx
- $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $(srcdir)/scintilla/src/LexMetapost.cxx
-
-stcdll_LexNsis.o: $(srcdir)/scintilla/src/LexNsis.cxx
- $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $(srcdir)/scintilla/src/LexNsis.cxx
-
-stcdll_LexOpal.o: $(srcdir)/scintilla/src/LexOpal.cxx
- $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $(srcdir)/scintilla/src/LexOpal.cxx
-
-stcdll_LexOthers.o: $(srcdir)/scintilla/src/LexOthers.cxx
- $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $(srcdir)/scintilla/src/LexOthers.cxx
-
-stcdll_LexPB.o: $(srcdir)/scintilla/src/LexPB.cxx
- $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $(srcdir)/scintilla/src/LexPB.cxx
-
-stcdll_LexPOV.o: $(srcdir)/scintilla/src/LexPOV.cxx
- $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $(srcdir)/scintilla/src/LexPOV.cxx
-
-stcdll_LexPS.o: $(srcdir)/scintilla/src/LexPS.cxx
- $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $(srcdir)/scintilla/src/LexPS.cxx
-
-stcdll_LexPascal.o: $(srcdir)/scintilla/src/LexPascal.cxx
- $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $(srcdir)/scintilla/src/LexPascal.cxx
-
-stcdll_LexPerl.o: $(srcdir)/scintilla/src/LexPerl.cxx
- $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $(srcdir)/scintilla/src/LexPerl.cxx
-
-stcdll_LexPython.o: $(srcdir)/scintilla/src/LexPython.cxx
- $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $(srcdir)/scintilla/src/LexPython.cxx
-
-stcdll_LexRebol.o: $(srcdir)/scintilla/src/LexRebol.cxx
- $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $(srcdir)/scintilla/src/LexRebol.cxx
-
-stcdll_LexRuby.o: $(srcdir)/scintilla/src/LexRuby.cxx
- $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $(srcdir)/scintilla/src/LexRuby.cxx
-
-stcdll_LexSQL.o: $(srcdir)/scintilla/src/LexSQL.cxx
- $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $(srcdir)/scintilla/src/LexSQL.cxx
-
-stcdll_LexSmalltalk.o: $(srcdir)/scintilla/src/LexSmalltalk.cxx
- $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $(srcdir)/scintilla/src/LexSmalltalk.cxx
-
-stcdll_LexTADS3.o: $(srcdir)/scintilla/src/LexTADS3.cxx
- $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $(srcdir)/scintilla/src/LexTADS3.cxx
-
-stcdll_LexScriptol.o: $(srcdir)/scintilla/src/LexScriptol.cxx
- $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $(srcdir)/scintilla/src/LexScriptol.cxx
-
-stcdll_LexSpecman.o: $(srcdir)/scintilla/src/LexSpecman.cxx
- $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $(srcdir)/scintilla/src/LexSpecman.cxx
-
-stcdll_LexSpice.o: $(srcdir)/scintilla/src/LexSpice.cxx
- $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $(srcdir)/scintilla/src/LexSpice.cxx
-
-stcdll_LexTCL.o: $(srcdir)/scintilla/src/LexTCL.cxx
- $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $(srcdir)/scintilla/src/LexTCL.cxx
-
-stcdll_LexTeX.o: $(srcdir)/scintilla/src/LexTeX.cxx
- $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $(srcdir)/scintilla/src/LexTeX.cxx
-
-stcdll_LexVB.o: $(srcdir)/scintilla/src/LexVB.cxx
- $(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) $(srcdir)/scintilla/src/LexVerilog.cxx
-
-stcdll_LexYAML.o: $(srcdir)/scintilla/src/LexYAML.cxx
- $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $(srcdir)/scintilla/src/LexYAML.cxx
-
-stcdll_LineMarker.o: $(srcdir)/scintilla/src/LineMarker.cxx
- $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $(srcdir)/scintilla/src/LineMarker.cxx
-
-stcdll_PropSet.o: $(srcdir)/scintilla/src/PropSet.cxx
- $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $(srcdir)/scintilla/src/PropSet.cxx
-
-stcdll_RESearch.o: $(srcdir)/scintilla/src/RESearch.cxx
- $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $(srcdir)/scintilla/src/RESearch.cxx
-
-stcdll_ScintillaBase.o: $(srcdir)/scintilla/src/ScintillaBase.cxx
- $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $(srcdir)/scintilla/src/ScintillaBase.cxx
-
-stcdll_Style.o: $(srcdir)/scintilla/src/Style.cxx
- $(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) $(srcdir)/scintilla/src/UniConversion.cxx
-
-stcdll_ViewStyle.o: $(srcdir)/scintilla/src/ViewStyle.cxx
- $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $(srcdir)/scintilla/src/ViewStyle.cxx
-
-stcdll_WindowAccessor.o: $(srcdir)/scintilla/src/WindowAccessor.cxx
- $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $(srcdir)/scintilla/src/WindowAccessor.cxx
-
-stcdll_XPM.o: $(srcdir)/scintilla/src/XPM.cxx
- $(CXXC) -c -o $@ $(STCDLL_CXXFLAGS) $(srcdir)/scintilla/src/XPM.cxx
-
-stcdll_version_rc.o: $(srcdir)/../../../src/msw/version.rc
- $(WINDRES) -i$< -o$@ --define __WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p_1) $(__EXCEPTIONS_DEFINE_p_1) $(__RTTI_DEFINE_p_1) $(__THREAD_DEFINE_p_1) --define WXBUILDING --define WXDLLNAME=$(WXDLLNAMEPREFIXGUI)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_stc$(WXCOMPILER)$(VENDORTAG)$(WXDLLVERSIONTAG) $(__RCDEFDIR_p) --include-dir $(top_srcdir)/include --include-dir $(srcdir)/../../include --include-dir $(srcdir)/scintilla/include --include-dir $(srcdir)/scintilla/src --define __WX__ --define SCI_LEXER --define LINK_LEXERS --define WXUSINGDLL --define WXMAKINGDLL_STC
-
-stclib_PlatWX.o: $(srcdir)/PlatWX.cpp
- $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $(srcdir)/PlatWX.cpp
-
-stclib_ScintillaWX.o: $(srcdir)/ScintillaWX.cpp
- $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $(srcdir)/ScintillaWX.cpp
-
-stclib_stc.o: $(srcdir)/stc.cpp
- $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $(srcdir)/stc.cpp
-
-stclib_AutoComplete.o: $(srcdir)/scintilla/src/AutoComplete.cxx
- $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $(srcdir)/scintilla/src/AutoComplete.cxx
-
-stclib_CallTip.o: $(srcdir)/scintilla/src/CallTip.cxx
- $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $(srcdir)/scintilla/src/CallTip.cxx
-
-stclib_CellBuffer.o: $(srcdir)/scintilla/src/CellBuffer.cxx
- $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $(srcdir)/scintilla/src/CellBuffer.cxx
-
-stclib_CharClassify.o: $(srcdir)/scintilla/src/CharClassify.cxx
- $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $(srcdir)/scintilla/src/CharClassify.cxx
-
-stclib_ContractionState.o: $(srcdir)/scintilla/src/ContractionState.cxx
- $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $(srcdir)/scintilla/src/ContractionState.cxx
-
-stclib_Document.o: $(srcdir)/scintilla/src/Document.cxx
- $(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) $(srcdir)/scintilla/src/Editor.cxx
-
-stclib_ExternalLexer.o: $(srcdir)/scintilla/src/ExternalLexer.cxx
- $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $(srcdir)/scintilla/src/ExternalLexer.cxx
-
-stclib_Indicator.o: $(srcdir)/scintilla/src/Indicator.cxx
- $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $(srcdir)/scintilla/src/Indicator.cxx
-
-stclib_KeyMap.o: $(srcdir)/scintilla/src/KeyMap.cxx
- $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $(srcdir)/scintilla/src/KeyMap.cxx
-
-stclib_KeyWords.o: $(srcdir)/scintilla/src/KeyWords.cxx
- $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $(srcdir)/scintilla/src/KeyWords.cxx
-
-stclib_LexAPDL.o: $(srcdir)/scintilla/src/LexAPDL.cxx
- $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $(srcdir)/scintilla/src/LexAPDL.cxx
-
-stclib_LexAU3.o: $(srcdir)/scintilla/src/LexAU3.cxx
- $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $(srcdir)/scintilla/src/LexAU3.cxx
-
-stclib_LexAVE.o: $(srcdir)/scintilla/src/LexAVE.cxx
- $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $(srcdir)/scintilla/src/LexAVE.cxx
-
-stclib_LexAda.o: $(srcdir)/scintilla/src/LexAda.cxx
- $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $(srcdir)/scintilla/src/LexAda.cxx
-
-stclib_LexAsm.o: $(srcdir)/scintilla/src/LexAsm.cxx
- $(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) $(srcdir)/scintilla/src/LexBaan.cxx
-
-stclib_LexBash.o: $(srcdir)/scintilla/src/LexBash.cxx
- $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $(srcdir)/scintilla/src/LexBash.cxx
-
-stclib_LexBasic.o: $(srcdir)/scintilla/src/LexBasic.cxx
- $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $(srcdir)/scintilla/src/LexBasic.cxx
-
-stclib_LexBullant.o: $(srcdir)/scintilla/src/LexBullant.cxx
- $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $(srcdir)/scintilla/src/LexBullant.cxx
-
-stclib_LexCLW.o: $(srcdir)/scintilla/src/LexCLW.cxx
- $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $(srcdir)/scintilla/src/LexCLW.cxx
-
-stclib_LexCPP.o: $(srcdir)/scintilla/src/LexCPP.cxx
- $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $(srcdir)/scintilla/src/LexCPP.cxx
-
-stclib_LexCSS.o: $(srcdir)/scintilla/src/LexCSS.cxx
- $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $(srcdir)/scintilla/src/LexCSS.cxx
-
-stclib_LexCaml.o: $(srcdir)/scintilla/src/LexCaml.cxx
- $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $(srcdir)/scintilla/src/LexCaml.cxx
-
-stclib_LexCsound.o: $(srcdir)/scintilla/src/LexCsound.cxx
- $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $(srcdir)/scintilla/src/LexCsound.cxx
-
-stclib_LexConf.o: $(srcdir)/scintilla/src/LexConf.cxx
- $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $(srcdir)/scintilla/src/LexConf.cxx
-
-stclib_LexCrontab.o: $(srcdir)/scintilla/src/LexCrontab.cxx
- $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $(srcdir)/scintilla/src/LexCrontab.cxx
-
-stclib_LexEScript.o: $(srcdir)/scintilla/src/LexEScript.cxx
- $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $(srcdir)/scintilla/src/LexEScript.cxx
-
-stclib_LexEiffel.o: $(srcdir)/scintilla/src/LexEiffel.cxx
- $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $(srcdir)/scintilla/src/LexEiffel.cxx
-
-stclib_LexErlang.o: $(srcdir)/scintilla/src/LexErlang.cxx
- $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $(srcdir)/scintilla/src/LexErlang.cxx
-
-stclib_LexFlagship.o: $(srcdir)/scintilla/src/LexFlagship.cxx
- $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $(srcdir)/scintilla/src/LexFlagship.cxx
-
-stclib_LexForth.o: $(srcdir)/scintilla/src/LexForth.cxx
- $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $(srcdir)/scintilla/src/LexForth.cxx
-
-stclib_LexFortran.o: $(srcdir)/scintilla/src/LexFortran.cxx
- $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $(srcdir)/scintilla/src/LexFortran.cxx
-
-stclib_LexGui4Cli.o: $(srcdir)/scintilla/src/LexGui4Cli.cxx
- $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $(srcdir)/scintilla/src/LexGui4Cli.cxx
-
-stclib_LexHTML.o: $(srcdir)/scintilla/src/LexHTML.cxx
- $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $(srcdir)/scintilla/src/LexHTML.cxx
-
-stclib_LexHaskell.o: $(srcdir)/scintilla/src/LexHaskell.cxx
- $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $(srcdir)/scintilla/src/LexHaskell.cxx
-
-stclib_LexInno.o: $(srcdir)/scintilla/src/LexInno.cxx
- $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $(srcdir)/scintilla/src/LexInno.cxx
-
-stclib_LexKix.o: $(srcdir)/scintilla/src/LexKix.cxx
- $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $(srcdir)/scintilla/src/LexKix.cxx
-
-stclib_LexLisp.o: $(srcdir)/scintilla/src/LexLisp.cxx
- $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $(srcdir)/scintilla/src/LexLisp.cxx
-
-stclib_LexLout.o: $(srcdir)/scintilla/src/LexLout.cxx
- $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $(srcdir)/scintilla/src/LexLout.cxx
-
-stclib_LexLua.o: $(srcdir)/scintilla/src/LexLua.cxx
- $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $(srcdir)/scintilla/src/LexLua.cxx
-
-stclib_LexMMIXAL.o: $(srcdir)/scintilla/src/LexMMIXAL.cxx
- $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $(srcdir)/scintilla/src/LexMMIXAL.cxx
-
-stclib_LexMPT.o: $(srcdir)/scintilla/src/LexMPT.cxx
- $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $(srcdir)/scintilla/src/LexMPT.cxx
-
-stclib_LexMSSQL.o: $(srcdir)/scintilla/src/LexMSSQL.cxx
- $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $(srcdir)/scintilla/src/LexMSSQL.cxx
-
-stclib_LexMatlab.o: $(srcdir)/scintilla/src/LexMatlab.cxx
- $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $(srcdir)/scintilla/src/LexMatlab.cxx
-
-stclib_LexMetapost.o: $(srcdir)/scintilla/src/LexMetapost.cxx
- $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $(srcdir)/scintilla/src/LexMetapost.cxx
-
-stclib_LexNsis.o: $(srcdir)/scintilla/src/LexNsis.cxx
- $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $(srcdir)/scintilla/src/LexNsis.cxx
-
-stclib_LexOpal.o: $(srcdir)/scintilla/src/LexOpal.cxx
- $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $(srcdir)/scintilla/src/LexOpal.cxx
-
-stclib_LexOthers.o: $(srcdir)/scintilla/src/LexOthers.cxx
- $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $(srcdir)/scintilla/src/LexOthers.cxx
-
-stclib_LexPB.o: $(srcdir)/scintilla/src/LexPB.cxx
- $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $(srcdir)/scintilla/src/LexPB.cxx
-
-stclib_LexPOV.o: $(srcdir)/scintilla/src/LexPOV.cxx
- $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $(srcdir)/scintilla/src/LexPOV.cxx
-
-stclib_LexPS.o: $(srcdir)/scintilla/src/LexPS.cxx
- $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $(srcdir)/scintilla/src/LexPS.cxx
-
-stclib_LexPascal.o: $(srcdir)/scintilla/src/LexPascal.cxx
- $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $(srcdir)/scintilla/src/LexPascal.cxx
-
-stclib_LexPerl.o: $(srcdir)/scintilla/src/LexPerl.cxx
- $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $(srcdir)/scintilla/src/LexPerl.cxx
-
-stclib_LexPython.o: $(srcdir)/scintilla/src/LexPython.cxx
- $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $(srcdir)/scintilla/src/LexPython.cxx
-
-stclib_LexRebol.o: $(srcdir)/scintilla/src/LexRebol.cxx
- $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $(srcdir)/scintilla/src/LexRebol.cxx
-
-stclib_LexRuby.o: $(srcdir)/scintilla/src/LexRuby.cxx
- $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $(srcdir)/scintilla/src/LexRuby.cxx
-
-stclib_LexSQL.o: $(srcdir)/scintilla/src/LexSQL.cxx
- $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $(srcdir)/scintilla/src/LexSQL.cxx
-
-stclib_LexSmalltalk.o: $(srcdir)/scintilla/src/LexSmalltalk.cxx
- $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $(srcdir)/scintilla/src/LexSmalltalk.cxx
-
-stclib_LexTADS3.o: $(srcdir)/scintilla/src/LexTADS3.cxx
- $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $(srcdir)/scintilla/src/LexTADS3.cxx
-
-stclib_LexScriptol.o: $(srcdir)/scintilla/src/LexScriptol.cxx
- $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $(srcdir)/scintilla/src/LexScriptol.cxx
-
-stclib_LexSpecman.o: $(srcdir)/scintilla/src/LexSpecman.cxx
- $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $(srcdir)/scintilla/src/LexSpecman.cxx
-
-stclib_LexSpice.o: $(srcdir)/scintilla/src/LexSpice.cxx
- $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $(srcdir)/scintilla/src/LexSpice.cxx
-
-stclib_LexTCL.o: $(srcdir)/scintilla/src/LexTCL.cxx
- $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $(srcdir)/scintilla/src/LexTCL.cxx
-
-stclib_LexTeX.o: $(srcdir)/scintilla/src/LexTeX.cxx
- $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $(srcdir)/scintilla/src/LexTeX.cxx
-
-stclib_LexVB.o: $(srcdir)/scintilla/src/LexVB.cxx
- $(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) $(srcdir)/scintilla/src/LexVerilog.cxx
-
-stclib_LexYAML.o: $(srcdir)/scintilla/src/LexYAML.cxx
- $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $(srcdir)/scintilla/src/LexYAML.cxx
-
-stclib_LineMarker.o: $(srcdir)/scintilla/src/LineMarker.cxx
- $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $(srcdir)/scintilla/src/LineMarker.cxx
-
-stclib_PropSet.o: $(srcdir)/scintilla/src/PropSet.cxx
- $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $(srcdir)/scintilla/src/PropSet.cxx
-
-stclib_RESearch.o: $(srcdir)/scintilla/src/RESearch.cxx
- $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $(srcdir)/scintilla/src/RESearch.cxx
-
-stclib_ScintillaBase.o: $(srcdir)/scintilla/src/ScintillaBase.cxx
- $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $(srcdir)/scintilla/src/ScintillaBase.cxx
-
-stclib_Style.o: $(srcdir)/scintilla/src/Style.cxx
- $(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) $(srcdir)/scintilla/src/UniConversion.cxx
-
-stclib_ViewStyle.o: $(srcdir)/scintilla/src/ViewStyle.cxx
- $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $(srcdir)/scintilla/src/ViewStyle.cxx
-
-stclib_WindowAccessor.o: $(srcdir)/scintilla/src/WindowAccessor.cxx
- $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $(srcdir)/scintilla/src/WindowAccessor.cxx
-
-stclib_XPM.o: $(srcdir)/scintilla/src/XPM.cxx
- $(CXXC) -c -o $@ $(STCLIB_CXXFLAGS) $(srcdir)/scintilla/src/XPM.cxx
-
-
-# Include dependency info, if present:
-@IF_GNU_MAKE@-include ./.deps/*.d
-
-.PHONY: all install uninstall clean distclean install_stcdll uninstall_stcdll \
- install_stclib uninstall_stclib
diff --git a/src/plugins/contrib/wxSmithSTC/stc/PlatWX.cpp b/src/plugins/contrib/wxSmithSTC/stc/PlatWX.cpp
deleted file mode 100644
index 18faa7ae1f..0000000000
--- a/src/plugins/contrib/wxSmithSTC/stc/PlatWX.cpp
+++ /dev/null
@@ -1,1581 +0,0 @@
-// Scintilla source code edit control
-// PlatWX.cxx - implementation of platform facilities on wxWidgets
-// Copyright 1998-1999 by Neil Hodgson
-// Robin Dunn
-// The License.txt file describes the conditions under which this software may be distributed.
-
-#include
-
-#include "wx/wx.h"
-#include "wx/encconv.h"
-#include "wx/listctrl.h"
-#include "wx/mstream.h"
-#include "wx/image.h"
-#include "wx/imaglist.h"
-#include "wx/tokenzr.h"
-
-#ifdef wxHAVE_RAW_BITMAP
-#include "wx/rawbmp.h"
-#endif
-#if wxUSE_GRAPHICS_CONTEXT
-#include "wx/dcgraph.h"
-#endif
-
-#include "Platform.h"
-#include "PlatWX.h"
-#include "wx/stc/stc.h"
-
-
-
-Point Point::FromLong(long lpoint) {
- return Point(lpoint & 0xFFFF, lpoint >> 16);
-}
-
-wxRect wxRectFromPRectangle(PRectangle prc) {
- wxRect r(prc.left, prc.top,
- prc.Width(), prc.Height());
- return r;
-}
-
-PRectangle PRectangleFromwxRect(wxRect rc) {
- return PRectangle(rc.GetLeft(), rc.GetTop(),
- rc.GetRight()+1, rc.GetBottom()+1);
-}
-
-wxColour wxColourFromCA(const ColourAllocated& ca) {
- ColourDesired cd(ca.AsLong());
- return wxColour((unsigned char)cd.GetRed(),
- (unsigned char)cd.GetGreen(),
- (unsigned char)cd.GetBlue());
-}
-
-wxColour wxColourFromCAandAlpha(const ColourAllocated& ca, int alpha) {
- ColourDesired cd(ca.AsLong());
- return wxColour((unsigned char)cd.GetRed(),
- (unsigned char)cd.GetGreen(),
- (unsigned char)cd.GetBlue(),
- (unsigned char)alpha);
-}
-
-//----------------------------------------------------------------------
-
-Palette::Palette() {
- used = 0;
- allowRealization = false;
- size = 100;
- entries = new ColourPair[size];
-}
-
-Palette::~Palette() {
- Release();
- delete [] entries;
- entries = 0;
-}
-
-void Palette::Release() {
- used = 0;
- delete [] entries;
- size = 100;
- entries = new ColourPair[size];
-}
-
-// This method either adds a colour to the list of wanted colours (want==true)
-// or retrieves the allocated colour back to the ColourPair.
-// This is one method to make it easier to keep the code for wanting and retrieving in sync.
-void Palette::WantFind(ColourPair &cp, bool want) {
- if (want) {
- for (int i=0; i < used; i++) {
- if (entries[i].desired == cp.desired)
- return;
- }
-
- if (used >= size) {
- int sizeNew = size * 2;
- ColourPair *entriesNew = new ColourPair[sizeNew];
- for (int j=0; jSetNoAntiAliasing(!extraFontFlag);
- id = font;
-}
-
-
-void Font::Release() {
- if (id)
- delete (wxFont*)id;
- id = 0;
-}
-
-//----------------------------------------------------------------------
-
-class SurfaceImpl : public Surface {
-private:
- wxDC* hdc;
- bool hdcOwned;
- wxBitmap* bitmap;
- int x;
- int y;
- bool unicodeMode;
-
-public:
- SurfaceImpl();
- ~SurfaceImpl();
-
- virtual void Init(WindowID wid);
- virtual void Init(SurfaceID sid, WindowID wid);
- virtual void InitPixMap(int width, int height, Surface *surface_, WindowID wid);
-
- virtual void Release();
- virtual bool Initialised();
- virtual void PenColour(ColourAllocated fore);
- virtual int LogPixelsY();
- virtual int DeviceHeightFont(int points);
- virtual void MoveTo(int x_, int y_);
- virtual void LineTo(int x_, int y_);
- virtual void Polygon(Point *pts, int npts, ColourAllocated fore, ColourAllocated back);
- virtual void RectangleDraw(PRectangle rc, ColourAllocated fore, ColourAllocated back);
- virtual void FillRectangle(PRectangle rc, ColourAllocated back);
- virtual void FillRectangle(PRectangle rc, Surface &surfacePattern);
- virtual void RoundedRectangle(PRectangle rc, ColourAllocated fore, ColourAllocated back);
- virtual void AlphaRectangle(PRectangle rc, int cornerSize, ColourAllocated fill, int alphaFill,
- ColourAllocated outline, int alphaOutline, int flags);
- virtual void Ellipse(PRectangle rc, ColourAllocated fore, ColourAllocated back);
- virtual void Copy(PRectangle rc, Point from, Surface &surfaceSource);
-
- virtual void DrawTextNoClip(PRectangle rc, Font &font_, int ybase, const char *s, int len, ColourAllocated fore, ColourAllocated back);
- virtual void DrawTextClipped(PRectangle rc, Font &font_, int ybase, const char *s, int len, ColourAllocated fore, ColourAllocated back);
- virtual void DrawTextTransparent(PRectangle rc, Font &font_, int ybase, const char *s, int len, ColourAllocated fore);
- virtual void MeasureWidths(Font &font_, const char *s, int len, int *positions);
- virtual int WidthText(Font &font_, const char *s, int len);
- virtual int WidthChar(Font &font_, char ch);
- virtual int Ascent(Font &font_);
- virtual int Descent(Font &font_);
- virtual int InternalLeading(Font &font_);
- virtual int ExternalLeading(Font &font_);
- virtual int Height(Font &font_);
- virtual int AverageCharWidth(Font &font_);
-
- virtual int SetPalette(Palette *pal, bool inBackGround);
- virtual void SetClip(PRectangle rc);
- virtual void FlushCachedState();
-
- virtual void SetUnicodeMode(bool unicodeMode_);
- virtual void SetDBCSMode(int codePage);
-
- void BrushColour(ColourAllocated back);
- void SetFont(Font &font_);
-};
-
-
-
-SurfaceImpl::SurfaceImpl() :
- hdc(0), hdcOwned(0), bitmap(0),
- x(0), y(0), unicodeMode(0)
-{}
-
-SurfaceImpl::~SurfaceImpl() {
- Release();
-}
-
-void SurfaceImpl::Init(WindowID wid) {
-#if 0
- Release();
- hdc = new wxMemoryDC();
- hdcOwned = true;
-#else
- // On Mac and GTK the DC is not really valid until it has a bitmap
- // selected into it. So instead of just creating the DC with no bitmap,
- // go ahead and give it one.
- InitPixMap(1,1,NULL,wid);
-#endif
-}
-
-void SurfaceImpl::Init(SurfaceID hdc_, WindowID) {
- Release();
- hdc = (wxDC*)hdc_;
-}
-
-void SurfaceImpl::InitPixMap(int width, int height, Surface *WXUNUSED(surface_), WindowID) {
- Release();
- hdc = new wxMemoryDC();
- hdcOwned = true;
- if (width < 1) width = 1;
- if (height < 1) height = 1;
- bitmap = new wxBitmap(width, height);
- ((wxMemoryDC*)hdc)->SelectObject(*bitmap);
-}
-
-
-void SurfaceImpl::Release() {
- if (bitmap) {
- ((wxMemoryDC*)hdc)->SelectObject(wxNullBitmap);
- delete bitmap;
- bitmap = 0;
- }
- if (hdcOwned) {
- delete hdc;
- hdc = 0;
- hdcOwned = false;
- }
-}
-
-
-bool SurfaceImpl::Initialised() {
- return hdc != 0;
-}
-
-
-void SurfaceImpl::PenColour(ColourAllocated fore) {
- hdc->SetPen(wxPen(wxColourFromCA(fore), 1, wxSOLID));
-}
-
-void SurfaceImpl::BrushColour(ColourAllocated back) {
- hdc->SetBrush(wxBrush(wxColourFromCA(back), wxSOLID));
-}
-
-void SurfaceImpl::SetFont(Font &font_) {
- if (font_.GetID()) {
- hdc->SetFont(*((wxFont*)font_.GetID()));
- }
-}
-
-int SurfaceImpl::LogPixelsY() {
- return hdc->GetPPI().y;
-}
-
-int SurfaceImpl::DeviceHeightFont(int points) {
- return points;
-}
-
-void SurfaceImpl::MoveTo(int x_, int y_) {
- x = x_;
- y = y_;
-}
-
-void SurfaceImpl::LineTo(int x_, int y_) {
- hdc->DrawLine(x,y, x_,y_);
- x = x_;
- y = y_;
-}
-
-void SurfaceImpl::Polygon(Point *pts, int npts, ColourAllocated fore, ColourAllocated back) {
- PenColour(fore);
- BrushColour(back);
- hdc->DrawPolygon(npts, (wxPoint*)pts);
-}
-
-void SurfaceImpl::RectangleDraw(PRectangle rc, ColourAllocated fore, ColourAllocated back) {
- PenColour(fore);
- BrushColour(back);
- hdc->DrawRectangle(wxRectFromPRectangle(rc));
-}
-
-void SurfaceImpl::FillRectangle(PRectangle rc, ColourAllocated back) {
- BrushColour(back);
- hdc->SetPen(*wxTRANSPARENT_PEN);
- hdc->DrawRectangle(wxRectFromPRectangle(rc));
-}
-
-void SurfaceImpl::FillRectangle(PRectangle rc, Surface &surfacePattern) {
- wxBrush br;
- if (((SurfaceImpl&)surfacePattern).bitmap)
- br = wxBrush(*((SurfaceImpl&)surfacePattern).bitmap);
- else // Something is wrong so display in red
- br = wxBrush(*wxRED, wxSOLID);
- hdc->SetPen(*wxTRANSPARENT_PEN);
- hdc->SetBrush(br);
- hdc->DrawRectangle(wxRectFromPRectangle(rc));
-}
-
-void SurfaceImpl::RoundedRectangle(PRectangle rc, ColourAllocated fore, ColourAllocated back) {
- PenColour(fore);
- BrushColour(back);
- hdc->DrawRoundedRectangle(wxRectFromPRectangle(rc), 4);
-}
-
-#ifdef __WXMSW__
-#define wxPy_premultiply(p, a) ((p) * (a) / 0xff)
-#else
-#define wxPy_premultiply(p, a) (p)
-#endif
-
-void SurfaceImpl::AlphaRectangle(PRectangle rc, int cornerSize,
- ColourAllocated fill, int alphaFill,
- ColourAllocated outline, int alphaOutline,
- int /*flags*/) {
-#if wxUSE_GRAPHICS_CONTEXT
- wxGCDC dc(*(wxMemoryDC*)hdc);
- wxColour penColour(wxColourFromCAandAlpha(outline, alphaOutline));
- wxColour brushColour(wxColourFromCAandAlpha(fill, alphaFill));
- dc.SetPen(wxPen(penColour));
- dc.SetBrush(wxBrush(brushColour));
- dc.DrawRoundedRectangle(wxRectFromPRectangle(rc), cornerSize);
- return;
-#else
-
-#ifdef wxHAVE_RAW_BITMAP
-
- // TODO: do something with cornerSize
- wxUnusedVar(cornerSize);
-
- int x, y;
- wxRect r = wxRectFromPRectangle(rc);
- wxBitmap bmp(r.width, r.height, 32);
- wxAlphaPixelData pixData(bmp);
- pixData.UseAlpha();
-
- // Set the fill pixels
- ColourDesired cdf(fill.AsLong());
- int red = cdf.GetRed();
- int green = cdf.GetGreen();
- int blue = cdf.GetBlue();
-
- wxAlphaPixelData::Iterator p(pixData);
- for (y=0; yDrawBitmap(bmp, r.x, r.y, true);
-
-#else
- wxUnusedVar(cornerSize);
- wxUnusedVar(alphaFill);
- wxUnusedVar(alphaOutline);
- RectangleDraw(rc, outline, fill);
-#endif
-#endif
-}
-
-void SurfaceImpl::Ellipse(PRectangle rc, ColourAllocated fore, ColourAllocated back) {
- PenColour(fore);
- BrushColour(back);
- hdc->DrawEllipse(wxRectFromPRectangle(rc));
-}
-
-void SurfaceImpl::Copy(PRectangle rc, Point from, Surface &surfaceSource) {
- wxRect r = wxRectFromPRectangle(rc);
- hdc->Blit(r.x, r.y, r.width, r.height,
- ((SurfaceImpl&)surfaceSource).hdc,
- from.x, from.y, wxCOPY);
-}
-
-void SurfaceImpl::DrawTextNoClip(PRectangle rc, Font &font, int ybase,
- const char *s, int len,
- ColourAllocated fore, ColourAllocated back) {
- SetFont(font);
- hdc->SetTextForeground(wxColourFromCA(fore));
- hdc->SetTextBackground(wxColourFromCA(back));
- FillRectangle(rc, back);
-
- // ybase is where the baseline should be, but wxWin uses the upper left
- // corner, so I need to calculate the real position for the text...
- hdc->DrawText(stc2wx(s, len), rc.left, ybase - font.ascent);
-}
-
-void SurfaceImpl::DrawTextClipped(PRectangle rc, Font &font, int ybase,
- const char *s, int len,
- ColourAllocated fore, ColourAllocated back) {
- SetFont(font);
- hdc->SetTextForeground(wxColourFromCA(fore));
- hdc->SetTextBackground(wxColourFromCA(back));
- FillRectangle(rc, back);
- hdc->SetClippingRegion(wxRectFromPRectangle(rc));
-
- // see comments above
- hdc->DrawText(stc2wx(s, len), rc.left, ybase - font.ascent);
- hdc->DestroyClippingRegion();
-}
-
-
-void SurfaceImpl::DrawTextTransparent(PRectangle rc, Font &font, int ybase,
- const char *s, int len,
- ColourAllocated fore) {
-
- SetFont(font);
- hdc->SetTextForeground(wxColourFromCA(fore));
- hdc->SetBackgroundMode(wxTRANSPARENT);
-
- // ybase is where the baseline should be, but wxWin uses the upper left
- // corner, so I need to calculate the real position for the text...
- hdc->DrawText(stc2wx(s, len), rc.left, ybase - font.ascent);
-
- hdc->SetBackgroundMode(wxSOLID);
-}
-
-
-void SurfaceImpl::MeasureWidths(Font &font, const char *s, int len, int *positions) {
-
- wxString str = stc2wx(s, len);
- wxArrayInt tpos;
-
- SetFont(font);
-
- hdc->GetPartialTextExtents(str, tpos);
-
-#if wxUSE_UNICODE
- // Map the widths for UCS-2 characters back to the UTF-8 input string
- // NOTE: I don't think this is right for when sizeof(wxChar) > 2, ie wxGTK2
- // so figure it out and fix it!
- size_t i = 0;
- size_t ui = 0;
- while ((int)i < len) {
- unsigned char uch = (unsigned char)s[i];
- positions[i++] = tpos[ui];
- if (uch >= 0x80) {
- if (uch < (0x80 + 0x40 + 0x20)) {
- positions[i++] = tpos[ui];
- } else {
- positions[i++] = tpos[ui];
- positions[i++] = tpos[ui];
- }
- }
- ui++;
- }
-#else
-
- // If not unicode then just use the widths we have
-#if wxUSE_STL
- std::copy(tpos.begin(), tpos.end(), positions);
-#else
- memcpy(positions, tpos.begin(), len * sizeof(int));
-#endif
-#endif
-}
-
-
-int SurfaceImpl::WidthText(Font &font, const char *s, int len) {
- SetFont(font);
- int w;
- int h;
-
- hdc->GetTextExtent(stc2wx(s, len), &w, &h);
- return w;
-}
-
-
-int SurfaceImpl::WidthChar(Font &font, char ch) {
- SetFont(font);
- int w;
- int h;
- char s[2] = { ch, 0 };
-
- hdc->GetTextExtent(stc2wx(s, 1), &w, &h);
- return w;
-}
-
-#define EXTENT_TEST wxT(" `~!@#$%^&*()-_=+\\|[]{};:\"\'<,>.?/1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ")
-
-int SurfaceImpl::Ascent(Font &font) {
- SetFont(font);
- int w, h, d, e;
- hdc->GetTextExtent(EXTENT_TEST, &w, &h, &d, &e);
- font.ascent = h - d;
- return font.ascent;
-}
-
-int SurfaceImpl::Descent(Font &font) {
- SetFont(font);
- int w, h, d, e;
- hdc->GetTextExtent(EXTENT_TEST, &w, &h, &d, &e);
- return d;
-}
-
-int SurfaceImpl::InternalLeading(Font &WXUNUSED(font)) {
- return 0;
-}
-
-int SurfaceImpl::ExternalLeading(Font &font) {
- SetFont(font);
- int w, h, d, e;
- hdc->GetTextExtent(EXTENT_TEST, &w, &h, &d, &e);
- return e;
-}
-
-int SurfaceImpl::Height(Font &font) {
- SetFont(font);
- return hdc->GetCharHeight() + 1;
-}
-
-int SurfaceImpl::AverageCharWidth(Font &font) {
- SetFont(font);
- return hdc->GetCharWidth();
-}
-
-int SurfaceImpl::SetPalette(Palette *WXUNUSED(pal), bool WXUNUSED(inBackGround)) {
- return 0;
-}
-
-void SurfaceImpl::SetClip(PRectangle rc) {
- hdc->SetClippingRegion(wxRectFromPRectangle(rc));
-}
-
-void SurfaceImpl::FlushCachedState() {
-}
-
-void SurfaceImpl::SetUnicodeMode(bool unicodeMode_) {
- unicodeMode=unicodeMode_;
-}
-
-void SurfaceImpl::SetDBCSMode(int WXUNUSED(codePage)) {
- // dbcsMode = codePage == SC_CP_DBCS;
-}
-
-
-Surface *Surface::Allocate() {
- return new SurfaceImpl;
-}
-
-
-//----------------------------------------------------------------------
-
-
-inline wxWindow* GETWIN(WindowID id) { return (wxWindow*)id; }
-
-Window::~Window() {
-}
-
-void Window::Destroy() {
- if (id) {
- Show(false);
- GETWIN(id)->Destroy();
- }
- id = 0;
-}
-
-bool Window::HasFocus() {
- return wxWindow::FindFocus() == GETWIN(id);
-}
-
-PRectangle Window::GetPosition() {
- if (! id) return PRectangle();
- wxRect rc(GETWIN(id)->GetPosition(), GETWIN(id)->GetSize());
- return PRectangleFromwxRect(rc);
-}
-
-void Window::SetPosition(PRectangle rc) {
- wxRect r = wxRectFromPRectangle(rc);
- GETWIN(id)->SetSize(r);
-}
-
-void Window::SetPositionRelative(PRectangle rc, Window) {
- SetPosition(rc); // ????
-}
-
-PRectangle Window::GetClientPosition() {
- if (! id) return PRectangle();
- wxSize sz = GETWIN(id)->GetClientSize();
- return PRectangle(0, 0, sz.x, sz.y);
-}
-
-void Window::Show(bool show) {
- GETWIN(id)->Show(show);
-}
-
-void Window::InvalidateAll() {
- GETWIN(id)->Refresh(false);
-}
-
-void Window::InvalidateRectangle(PRectangle rc) {
- wxRect r = wxRectFromPRectangle(rc);
- GETWIN(id)->Refresh(false, &r);
-}
-
-void Window::SetFont(Font &font) {
- GETWIN(id)->SetFont(*((wxFont*)font.GetID()));
-}
-
-void Window::SetCursor(Cursor curs) {
- int cursorId;
-
- switch (curs) {
- case cursorText:
- cursorId = wxCURSOR_IBEAM;
- break;
- case cursorArrow:
- cursorId = wxCURSOR_ARROW;
- break;
- case cursorUp:
- cursorId = wxCURSOR_ARROW; // ** no up arrow... wxCURSOR_UPARROW;
- break;
- case cursorWait:
- cursorId = wxCURSOR_WAIT;
- break;
- case cursorHoriz:
- cursorId = wxCURSOR_SIZEWE;
- break;
- case cursorVert:
- cursorId = wxCURSOR_SIZENS;
- break;
- case cursorReverseArrow:
- cursorId = wxCURSOR_RIGHT_ARROW;
- break;
- case cursorHand:
- cursorId = wxCURSOR_HAND;
- break;
- default:
- cursorId = wxCURSOR_ARROW;
- break;
- }
-#ifdef __WXMOTIF__
- wxCursor wc = wxStockCursor(cursorId) ;
-#else
- wxCursor wc = wxCursor(cursorId) ;
-#endif
- if(curs != cursorLast)
- {
- GETWIN(id)->SetCursor(wc);
- cursorLast = curs;
- }
-}
-
-
-void Window::SetTitle(const char *s) {
- GETWIN(id)->SetLabel(stc2wx(s));
-}
-
-
-//----------------------------------------------------------------------
-// Helper classes for ListBox
-
-
-// This is a simple subclass of wxListView that just resets focus to the
-// parent when it gets it.
-class wxSTCListBox : public wxListView {
-public:
- wxSTCListBox(wxWindow* parent, wxWindowID id,
- const wxPoint& pos, const wxSize& size,
- long style)
- : wxListView()
- {
-#ifdef __WXMSW__
- Hide(); // don't flicker as we move it around...
-#endif
- Create(parent, id, pos, size, style);
- }
-
-
- void OnFocus(wxFocusEvent& event) {
- GetParent()->SetFocus();
- event.Skip();
- }
-
- void OnKillFocus(wxFocusEvent& WXUNUSED(event)) {
- // Do nothing. Prevents base class from resetting the colors...
- }
-
-#ifdef __WXMAC__
- // For some reason I don't understand yet the focus doesn't really leave
- // the listbox like it should, so if we get any events feed them back to
- // the wxSTC
- void OnKeyDown(wxKeyEvent& event) {
- GetGrandParent()->GetEventHandler()->ProcessEvent(event);
- }
- void OnChar(wxKeyEvent& event) {
- GetGrandParent()->GetEventHandler()->ProcessEvent(event);
- }
-
- // And we need to force the focus back when being destroyed
- ~wxSTCListBox() {
- GetGrandParent()->SetFocus();
- }
-#endif
-
-private:
- DECLARE_EVENT_TABLE()
-};
-
-BEGIN_EVENT_TABLE(wxSTCListBox, wxListView)
- EVT_SET_FOCUS( wxSTCListBox::OnFocus)
- EVT_KILL_FOCUS(wxSTCListBox::OnKillFocus)
-#ifdef __WXMAC__
- EVT_KEY_DOWN( wxSTCListBox::OnKeyDown)
- EVT_CHAR( wxSTCListBox::OnChar)
-#endif
-END_EVENT_TABLE()
-
-
-
-#if wxUSE_POPUPWIN //-----------------------------------
-#include
-
-
-//
-// TODO: Refactor these two classes to have a common base (or a mix-in) to get
-// rid of the code duplication. (Either that or convince somebody to
-// implement wxPopupWindow for the Mac!!)
-//
-// In the meantime, be careful to duplicate any changes as needed...
-//
-
-// A popup window to place the wxSTCListBox upon
-class wxSTCListBoxWin : public wxPopupWindow
-{
-private:
- wxListView* lv;
- CallBackAction doubleClickAction;
- void* doubleClickActionData;
-public:
- wxSTCListBoxWin(wxWindow* parent, wxWindowID id, Point WXUNUSED(location)) :
- wxPopupWindow(parent, wxBORDER_NONE)
- {
-
- SetBackgroundColour(*wxBLACK); // for our simple border
-
- lv = new wxSTCListBox(parent, id, wxPoint(-50,-50), wxDefaultSize,
- wxLC_REPORT | wxLC_SINGLE_SEL | wxLC_NO_HEADER | wxBORDER_NONE);
- lv->SetCursor(wxCursor(wxCURSOR_ARROW));
- lv->InsertColumn(0, wxEmptyString);
- lv->InsertColumn(1, wxEmptyString);
-
- // NOTE: We need to fool the wxListView into thinking that it has the
- // focus so it will use the normal selection colour and will look
- // "right" to the user. But since the wxPopupWindow or its children
- // can't receive focus then we have to pull a fast one and temporarily
- // parent the listctrl on the STC window and then call SetFocus and
- // then reparent it back to the popup.
- lv->SetFocus();
- lv->Reparent(this);
-#ifdef __WXMSW__
- lv->Show();
-#endif
- }
-
-
- // Set position in client coords
- virtual void DoSetSize(int x, int y,
- int width, int height,
- int sizeFlags = wxSIZE_AUTO) {
- if (x != wxDefaultCoord) {
- GetParent()->ClientToScreen(&x, NULL);
- }
- if (y != wxDefaultCoord) {
- GetParent()->ClientToScreen(NULL, &y);
- }
- wxPopupWindow::DoSetSize(x, y, width, height, sizeFlags);
- }
-
- // return position as if it were in client coords
- virtual void DoGetPosition( int *x, int *y ) const {
- int sx, sy;
- wxPopupWindow::DoGetPosition(&sx, &sy);
- GetParent()->ScreenToClient(&sx, &sy);
- if (x) *x = sx;
- if (y) *y = sy;
- }
-
-
- bool Destroy() {
- if ( !wxPendingDelete.Member(this) )
- wxPendingDelete.Append(this);
- return true;
- }
-
-
- int IconWidth() {
- wxImageList* il = lv->GetImageList(wxIMAGE_LIST_SMALL);
- if (il != NULL) {
- int w, h;
- il->GetSize(0, w, h);
- return w;
- }
- return 0;
- }
-
-
- void SetDoubleClickAction(CallBackAction action, void *data) {
- doubleClickAction = action;
- doubleClickActionData = data;
- }
-
-
- void OnFocus(wxFocusEvent& event) {
- GetParent()->SetFocus();
- event.Skip();
- }
-
- void OnSize(wxSizeEvent& event) {
- // resize the child
- wxSize sz = GetSize();
- sz.x -= 2;
- sz.y -= 2;
- lv->SetSize(1, 1, sz.x, sz.y);
- // reset the column widths
- lv->SetColumnWidth(0, IconWidth()+4);
- lv->SetColumnWidth(1, sz.x - 2 - lv->GetColumnWidth(0) -
- wxSystemSettings::GetMetric(wxSYS_VSCROLL_X));
- event.Skip();
- }
-
- void OnActivate(wxListEvent& WXUNUSED(event)) {
- doubleClickAction(doubleClickActionData);
- }
-
- wxListView* GetLB() { return lv; }
-
-private:
- DECLARE_EVENT_TABLE()
-
-};
-
-BEGIN_EVENT_TABLE(wxSTCListBoxWin, wxPopupWindow)
- EVT_SET_FOCUS ( wxSTCListBoxWin::OnFocus)
- EVT_SIZE ( wxSTCListBoxWin::OnSize)
- EVT_LIST_ITEM_ACTIVATED(wxID_ANY, wxSTCListBoxWin::OnActivate)
-END_EVENT_TABLE()
-
-
-
-#else // !wxUSE_POPUPWIN -----------------------------------
-
-// A normal window to place the wxSTCListBox upon, but make it behave as much
-// like a wxPopupWindow as possible
-class wxSTCListBoxWin : public wxFrame {
-private:
- wxListView* lv;
- CallBackAction doubleClickAction;
- void* doubleClickActionData;
-public:
- wxSTCListBoxWin(wxWindow* parent, wxWindowID id, Point location) :
- wxFrame(parent, id, wxEmptyString, wxPoint(location.x, location.y), wxSize(0,0),
- wxFRAME_NO_TASKBAR
- | wxFRAME_FLOAT_ON_PARENT
-#ifdef __WXMAC__
- | wxPOPUP_WINDOW
- | wxNO_BORDER
-#else
- | wxSIMPLE_BORDER
-#endif
- )
- {
-
- lv = new wxSTCListBox(this, id, wxDefaultPosition, wxDefaultSize,
- wxLC_REPORT | wxLC_SINGLE_SEL | wxLC_NO_HEADER | wxNO_BORDER);
- lv->SetCursor(wxCursor(wxCURSOR_ARROW));
- lv->InsertColumn(0, wxEmptyString);
- lv->InsertColumn(1, wxEmptyString);
-
- // Eventhough we immediately reset the focus to the parent, this helps
- // things to look right...
- lv->SetFocus();
-
- Hide();
- }
-
-
- // On OSX and (possibly others) there can still be pending
- // messages/events for the list control when Scintilla wants to
- // close it, so do a pending delete of it instead of destroying
- // immediately.
- bool Destroy()
- {
-#ifdef __WXMAC__
- // The bottom edge of this window is not getting properly
- // refreshed upon deletion, so help it out...
- wxWindow* p = GetParent();
- wxRect r(GetPosition(), GetSize());
- r.SetHeight(r.GetHeight()+1);
- p->Refresh(false, &r);
-#endif
- if ( !wxPendingDelete.Member(this) )
- wxPendingDelete.Append(this);
- return true;
- }
-
-
- int IconWidth()
- {
- wxImageList* il = lv->GetImageList(wxIMAGE_LIST_SMALL);
- if (il != NULL) {
- int w, h;
- il->GetSize(0, w, h);
- return w;
- }
- return 0;
- }
-
-
- void SetDoubleClickAction(CallBackAction action, void *data)
- {
- doubleClickAction = action;
- doubleClickActionData = data;
- }
-
-
- void OnFocus(wxFocusEvent& event)
- {
- ActivateParent();
- GetParent()->SetFocus();
- event.Skip();
- }
-
- void OnSize(wxSizeEvent& event)
- {
- // resize the child
- wxSize sz = GetClientSize();
- lv->SetSize(sz);
- // reset the column widths
- lv->SetColumnWidth(0, IconWidth()+4);
- lv->SetColumnWidth(1, sz.x - 2 - lv->GetColumnWidth(0) -
- wxSystemSettings::GetMetric(wxSYS_VSCROLL_X));
- event.Skip();
- }
-
- void ActivateParent()
- {
- // Although we're a frame, we always want the parent to be active, so
- // raise it whenever we get shown, focused, etc.
- wxTopLevelWindow *frame = wxDynamicCast(
- wxGetTopLevelParent(GetParent()), wxTopLevelWindow);
- if (frame)
- frame->Raise();
- }
-
-
- virtual void DoSetSize(int x, int y,
- int width, int height,
- int sizeFlags = wxSIZE_AUTO)
- {
- // convert coords to screen coords since we're a top-level window
- if (x != wxDefaultCoord) {
- GetParent()->ClientToScreen(&x, NULL);
- }
- if (y != wxDefaultCoord) {
- GetParent()->ClientToScreen(NULL, &y);
- }
- wxFrame::DoSetSize(x, y, width, height, sizeFlags);
- }
-
- virtual bool Show(bool show = true)
- {
- bool rv = wxFrame::Show(show);
- if (rv && show)
- ActivateParent();
-#ifdef __WXMAC__
- GetParent()->Refresh(false);
-#endif
- return rv;
- }
-
- void OnActivate(wxListEvent& WXUNUSED(event))
- {
- doubleClickAction(doubleClickActionData);
- }
-
- wxListView* GetLB() { return lv; }
-
-private:
- DECLARE_EVENT_TABLE()
-};
-
-
-BEGIN_EVENT_TABLE(wxSTCListBoxWin, wxWindow)
- EVT_SET_FOCUS ( wxSTCListBoxWin::OnFocus)
- EVT_SIZE ( wxSTCListBoxWin::OnSize)
- EVT_LIST_ITEM_ACTIVATED(wxID_ANY, wxSTCListBoxWin::OnActivate)
-END_EVENT_TABLE()
-
-#endif // wxUSE_POPUPWIN -----------------------------------
-
-
-inline wxSTCListBoxWin* GETLBW(WindowID win) {
- return ((wxSTCListBoxWin*)win);
-}
-
-inline wxListView* GETLB(WindowID win) {
- return GETLBW(win)->GetLB();
-}
-
-//----------------------------------------------------------------------
-
-class ListBoxImpl : public ListBox {
-private:
- int lineHeight;
- bool unicodeMode;
- int desiredVisibleRows;
- int aveCharWidth;
- size_t maxStrWidth;
- Point location; // Caret location at which the list is opened
- wxImageList* imgList;
- wxArrayInt* imgTypeMap;
-
-public:
- ListBoxImpl();
- ~ListBoxImpl();
-
- virtual void SetFont(Font &font);
- virtual void Create(Window &parent, int ctrlID, Point location_, int lineHeight_, bool unicodeMode_);
- virtual void SetAverageCharWidth(int width);
- virtual void SetVisibleRows(int rows);
- virtual int GetVisibleRows() const;
- virtual PRectangle GetDesiredRect();
- virtual int CaretFromEdge();
- virtual void Clear();
- virtual void Append(char *s, int type = -1);
- void Append(const wxString& text, int type);
- virtual int Length();
- virtual void Select(int n);
- virtual int GetSelection();
- virtual int Find(const char *prefix);
- virtual void GetValue(int n, char *value, int len);
- virtual void RegisterImage(int type, const char *xpm_data);
- virtual void ClearRegisteredImages();
- virtual void SetDoubleClickAction(CallBackAction, void *);
- virtual void SetList(const char* list, char separator, char typesep);
-};
-
-
-ListBoxImpl::ListBoxImpl()
- : lineHeight(10), unicodeMode(false),
- desiredVisibleRows(5), aveCharWidth(8), maxStrWidth(0),
- imgList(NULL), imgTypeMap(NULL)
-{
-}
-
-ListBoxImpl::~ListBoxImpl() {
- if (imgList) {
- delete imgList;
- imgList = NULL;
- }
- if (imgTypeMap) {
- delete imgTypeMap;
- imgTypeMap = NULL;
- }
-}
-
-
-void ListBoxImpl::SetFont(Font &font) {
- GETLB(id)->SetFont(*((wxFont*)font.GetID()));
-}
-
-
-void ListBoxImpl::Create(Window &parent, int ctrlID, Point location_, int lineHeight_, bool unicodeMode_) {
- location = location_;
- lineHeight = lineHeight_;
- unicodeMode = unicodeMode_;
- maxStrWidth = 0;
- id = new wxSTCListBoxWin(GETWIN(parent.GetID()), ctrlID, location);
- if (imgList != NULL)
- GETLB(id)->SetImageList(imgList, wxIMAGE_LIST_SMALL);
-}
-
-
-void ListBoxImpl::SetAverageCharWidth(int width) {
- aveCharWidth = width;
-}
-
-
-void ListBoxImpl::SetVisibleRows(int rows) {
- desiredVisibleRows = rows;
-}
-
-
-int ListBoxImpl::GetVisibleRows() const {
- return desiredVisibleRows;
-}
-
-PRectangle ListBoxImpl::GetDesiredRect() {
- // wxListCtrl doesn't have a DoGetBestSize, so instead we kept track of
- // the max size in Append and calculate it here...
- int maxw = maxStrWidth * aveCharWidth;
- int maxh ;
-
- // give it a default if there are no lines, and/or add a bit more
- if (maxw == 0) maxw = 100;
- maxw += aveCharWidth * 3 +
- GETLBW(id)->IconWidth() + wxSystemSettings::GetMetric(wxSYS_VSCROLL_X);
- if (maxw > 350)
- maxw = 350;
-
- // estimate a desired height
- int count = GETLB(id)->GetItemCount();
- if (count) {
- wxRect rect;
- GETLB(id)->GetItemRect(0, rect);
- maxh = count * rect.GetHeight();
- if (maxh > 140) // TODO: Use desiredVisibleRows??
- maxh = 140;
-
- // Try to make the size an exact multiple of some number of lines
- int lines = maxh / rect.GetHeight();
- maxh = (lines + 1) * rect.GetHeight() + 2;
- }
- else
- maxh = 100;
-
- PRectangle rc;
- rc.top = 0;
- rc.left = 0;
- rc.right = maxw;
- rc.bottom = maxh;
- return rc;
-}
-
-
-int ListBoxImpl::CaretFromEdge() {
- return 4 + GETLBW(id)->IconWidth();
-}
-
-
-void ListBoxImpl::Clear() {
- GETLB(id)->DeleteAllItems();
-}
-
-
-void ListBoxImpl::Append(char *s, int type) {
- Append(stc2wx(s), type);
-}
-
-void ListBoxImpl::Append(const wxString& text, int type) {
- long count = GETLB(id)->GetItemCount();
- long itemID = GETLB(id)->InsertItem(count, wxEmptyString);
- long idx = -1;
- GETLB(id)->SetItem(itemID, 1, text);
- maxStrWidth = wxMax(maxStrWidth, text.length());
- if (type != -1) {
- wxCHECK_RET(imgTypeMap, wxT("Unexpected NULL imgTypeMap"));
- idx = imgTypeMap->Item(type);
- }
- GETLB(id)->SetItemImage(itemID, idx, idx);
-}
-
-void ListBoxImpl::SetList(const char* list, char separator, char typesep) {
- GETLB(id)->Freeze();
- Clear();
- wxStringTokenizer tkzr(stc2wx(list), (wxChar)separator);
- while ( tkzr.HasMoreTokens() ) {
- wxString token = tkzr.GetNextToken();
- long type = -1;
- int pos = token.Find(typesep);
- if (pos != -1) {
- token.Mid(pos+1).ToLong(&type);
- token.Truncate(pos);
- }
- Append(token, (int)type);
- }
- GETLB(id)->Thaw();
-}
-
-
-int ListBoxImpl::Length() {
- return GETLB(id)->GetItemCount();
-}
-
-
-void ListBoxImpl::Select(int n) {
- bool select = true;
- if (n == -1) {
- n = 0;
- select = false;
- }
- GETLB(id)->EnsureVisible(n);
- GETLB(id)->Select(n, select);
-}
-
-
-int ListBoxImpl::GetSelection() {
- return GETLB(id)->GetFirstSelected();
-}
-
-
-int ListBoxImpl::Find(const char *WXUNUSED(prefix)) {
- // No longer used
- return wxNOT_FOUND;
-}
-
-
-void ListBoxImpl::GetValue(int n, char *value, int len) {
- wxListItem item;
- item.SetId(n);
- item.SetColumn(1);
- item.SetMask(wxLIST_MASK_TEXT);
- GETLB(id)->GetItem(item);
- strncpy(value, wx2stc(item.GetText()), len);
- value[len-1] = '\0';
-}
-
-
-void ListBoxImpl::RegisterImage(int type, const char *xpm_data) {
- wxMemoryInputStream stream(xpm_data, strlen(xpm_data)+1);
- wxImage img(stream, wxBITMAP_TYPE_XPM);
- wxBitmap bmp(img);
-
- if (! imgList) {
- // assumes all images are the same size
- imgList = new wxImageList(bmp.GetWidth(), bmp.GetHeight(), true);
- imgTypeMap = new wxArrayInt;
- }
-
- int idx = imgList->Add(bmp);
-
- // do we need to extend the mapping array?
- wxArrayInt& itm = *imgTypeMap;
- if ( itm.GetCount() < (size_t)type+1)
- itm.Add(-1, type - itm.GetCount() + 1);
-
- // Add an item that maps type to the image index
- itm[type] = idx;
-}
-
-void ListBoxImpl::ClearRegisteredImages() {
- if (imgList) {
- delete imgList;
- imgList = NULL;
- }
- if (imgTypeMap) {
- delete imgTypeMap;
- imgTypeMap = NULL;
- }
- if (id)
- GETLB(id)->SetImageList(NULL, wxIMAGE_LIST_SMALL);
-}
-
-
-void ListBoxImpl::SetDoubleClickAction(CallBackAction action, void *data) {
- GETLBW(id)->SetDoubleClickAction(action, data);
-}
-
-
-ListBox::ListBox() {
-}
-
-ListBox::~ListBox() {
-}
-
-ListBox *ListBox::Allocate() {
- return new ListBoxImpl();
-}
-
-//----------------------------------------------------------------------
-
-Menu::Menu() : id(0) {
-}
-
-void Menu::CreatePopUp() {
- Destroy();
- id = new wxMenu();
-}
-
-void Menu::Destroy() {
- if (id)
- delete (wxMenu*)id;
- id = 0;
-}
-
-void Menu::Show(Point pt, Window &w) {
- GETWIN(w.GetID())->PopupMenu((wxMenu*)id, pt.x - 4, pt.y);
- Destroy();
-}
-
-//----------------------------------------------------------------------
-
-DynamicLibrary *DynamicLibrary::Load(const char *WXUNUSED(modulePath)) {
- wxFAIL_MSG(wxT("Dynamic lexer loading not implemented yet"));
- return NULL;
-}
-
-//----------------------------------------------------------------------
-
-ColourDesired Platform::Chrome() {
- wxColour c;
- c = wxSystemSettings::GetColour(wxSYS_COLOUR_3DFACE);
- return ColourDesired(c.Red(), c.Green(), c.Blue());
-}
-
-ColourDesired Platform::ChromeHighlight() {
- wxColour c;
- c = wxSystemSettings::GetColour(wxSYS_COLOUR_3DHIGHLIGHT);
- return ColourDesired(c.Red(), c.Green(), c.Blue());
-}
-
-const char *Platform::DefaultFont() {
- static char buf[128];
- strcpy(buf, wxNORMAL_FONT->GetFaceName().mbc_str());
- return buf;
-}
-
-int Platform::DefaultFontSize() {
- return wxNORMAL_FONT->GetPointSize();
-}
-
-unsigned int Platform::DoubleClickTime() {
- return 500; // **** ::GetDoubleClickTime();
-}
-
-bool Platform::MouseButtonBounce() {
- return false;
-}
-
-bool Platform::IsKeyDown(int WXUNUSED(key)) {
- return false; // I don't think we'll need this.
-}
-
-long Platform::SendScintilla(WindowID w,
- unsigned int msg,
- unsigned long wParam,
- long lParam) {
-
- wxStyledTextCtrl* stc = (wxStyledTextCtrl*)w;
- return stc->SendMsg(msg, wParam, lParam);
-}
-
-long Platform::SendScintillaPointer(WindowID w,
- unsigned int msg,
- unsigned long wParam,
- void *lParam) {
-
- wxStyledTextCtrl* stc = (wxStyledTextCtrl*)w;
- return stc->SendMsg(msg, wParam, (wxIntPtr)lParam);
-}
-
-
-// These are utility functions not really tied to a platform
-
-int Platform::Minimum(int a, int b) {
- if (a < b)
- return a;
- else
- return b;
-}
-
-int Platform::Maximum(int a, int b) {
- if (a > b)
- return a;
- else
- return b;
-}
-
-//#define TRACE
-
-void Platform::DebugDisplay(const char *s) {
-#ifdef TRACE
- wxLogDebug(stc2wx(s));
-#else
- wxUnusedVar(s);
-#endif
-}
-
-void Platform::DebugPrintf(const char *format, ...) {
-#ifdef TRACE
- char buffer[2000];
- va_list pArguments;
- va_start(pArguments, format);
- vsprintf(buffer,format,pArguments);
- va_end(pArguments);
- Platform::DebugDisplay(buffer);
-#endif
-}
-
-
-static bool assertionPopUps = true;
-
-bool Platform::ShowAssertionPopUps(bool assertionPopUps_) {
- bool ret = assertionPopUps;
- assertionPopUps = assertionPopUps_;
- return ret;
-}
-
-void Platform::Assert(const char *c, const char *file, int line) {
-#ifdef TRACE
- char buffer[2000];
- sprintf(buffer, "Assertion [%s] failed at %s %d", c, file, line);
- if (assertionPopUps) {
- /*int idButton = */
- wxMessageBox(stc2wx(buffer),
- wxT("Assertion failure"),
- wxICON_HAND | wxOK);
- } else {
- strcat(buffer, "\r\n");
- Platform::DebugDisplay(buffer);
- abort();
- }
-#else
- wxUnusedVar(c);
- wxUnusedVar(file);
- wxUnusedVar(line);
-#endif
-}
-
-
-int Platform::Clamp(int val, int minVal, int maxVal) {
- if (val > maxVal)
- val = maxVal;
- if (val < minVal)
- val = minVal;
- return val;
-}
-
-
-bool Platform::IsDBCSLeadByte(int WXUNUSED(codePage), char WXUNUSED(ch)) {
- return false;
-}
-
-int Platform::DBCSCharLength(int WXUNUSED(codePage), const char *WXUNUSED(s)) {
- return 1;
-}
-
-int Platform::DBCSCharMaxLength() {
- return 1;
-}
-
-
-//----------------------------------------------------------------------
-
-ElapsedTime::ElapsedTime() {
- wxLongLong localTime = wxGetLocalTimeMillis();
- littleBit = localTime.GetLo();
- bigBit = localTime.GetHi();
-}
-
-double ElapsedTime::Duration(bool reset) {
- wxLongLong prevTime(bigBit, littleBit);
- wxLongLong localTime = wxGetLocalTimeMillis();
- if(reset) {
- littleBit = localTime.GetLo();
- bigBit = localTime.GetHi();
- }
- wxLongLong duration = localTime - prevTime;
- double result = duration.ToDouble();
- result /= 1000.0;
- return result;
-}
-
-
-//----------------------------------------------------------------------
-
-#if wxUSE_UNICODE
-
-#include "UniConversion.h"
-
-// Convert using Scintilla's functions instead of wx's, Scintilla's are more
-// forgiving and won't assert...
-
-wxString stc2wx(const char* str, size_t len)
-{
- if (!len)
- return wxEmptyString;
-
- size_t wclen = UCS2Length(str, len);
- wxWCharBuffer buffer(wclen+1);
-
- size_t actualLen = UCS2FromUTF8(str, len, buffer.data(), wclen+1);
- return wxString(buffer.data(), actualLen);
-}
-
-
-
-wxString stc2wx(const char* str)
-{
- return stc2wx(str, strlen(str));
-}
-
-
-const wxWX2MBbuf wx2stc(const wxString& str)
-{
- const wchar_t* wcstr = str.c_str();
- size_t wclen = str.length();
- size_t len = UTF8Length(wcstr, wclen);
-
- wxCharBuffer buffer(len+1);
- UTF8FromUCS2(wcstr, wclen, buffer.data(), len);
-
- // TODO check NULL termination!!
-
- return buffer;
-}
-
-#endif
diff --git a/src/plugins/contrib/wxSmithSTC/stc/PlatWX.h b/src/plugins/contrib/wxSmithSTC/stc/PlatWX.h
deleted file mode 100644
index e658a67f65..0000000000
--- a/src/plugins/contrib/wxSmithSTC/stc/PlatWX.h
+++ /dev/null
@@ -1,8 +0,0 @@
-
-
-
-
-wxRect wxRectFromPRectangle(PRectangle prc);
-PRectangle PRectangleFromwxRect(wxRect rc);
-wxColour wxColourFromCA(const ColourAllocated& ca);
-
diff --git a/src/plugins/contrib/wxSmithSTC/stc/README.txt b/src/plugins/contrib/wxSmithSTC/stc/README.txt
deleted file mode 100644
index 4b66121e64..0000000000
--- a/src/plugins/contrib/wxSmithSTC/stc/README.txt
+++ /dev/null
@@ -1,55 +0,0 @@
-This contrib is the wxStyledTextCtrl, which is a wrapper around the
-Scintilla edit control. (See www.scintilla.org)
-
-There is still VERY MUCH to be done, most notable of which is a more
-advanced sample that exercises more of the code. (I havn't tested
-AutoComplete or CallTips, or most of the event types at all yet.) And
-also documentation, adding wrappers for some new scintilla
-functionality, building and testing on wxGTK, etc. Be patient, it all
-will get there soon.
-
-
-
-Let me describe a bit about the architecture I am implementing...
-Obviously there is the Platform layer which implements the varioius
-platform classes by using wxWindows classes and filling in where
-needed. Then there is a ScintillaWX class that is derived from
-ScintillaBase and implements the necessary virtual methods that
-Scintilla needs to fully funciton. This class however is not meant to
-ever be used directly by wx programmers. I call it one end of the
-bridge between the wx and Scintilla worlds. The other end of the
-bridge is a class called wxStyledTextCtrl that looks, feels and acts
-like other classes in wxWindows. Here is a diagram:
-
-
- +------------------+ +-------------------+
- | wxStyledTextCtrl |--bridge--| ScintillaWX |
- +------------------+ +-------------------+
- | ScintillaBase |
- +-------------------+
- | Editor |
- +-------------------+
- | PlatWX |
- +-------------------+
-
-
-wxStyledTextCtrl derives from wxControl so it has a window that can be
-drawn upon. When a wxStyledTextCtrl is constructed it constructs a
-ScintillaWX for itself and passes itself to the scintilla object to be
-set as the wMain and wDraw attributes. All method calls on the STC
-are sent over the bridge in the form of calls to ScintiallWX::WndProc.
-All notifications are sent back over the bridge and turned into
-wxEvents.
-
-
-Robin
-
-[SOLARIS NOTE - ellers@iinet.net.au - June 2002]
-
-On sunos5 (sparc) the stc code breaks if optimisation is turned on (the
-default). If your release build breaks but the debug build is fine,
-try reconfiguring with --disable-optimise and rebuilding. If you are using
-wxPython you will also need to disable optimised compiling. To do this I
-had to hand modify the python makefile in (prefix)/lib/python2.2/config/Makefile
-to remove optimisation flags.
-
diff --git a/src/plugins/contrib/wxSmithSTC/stc/ScintillaWX.cpp b/src/plugins/contrib/wxSmithSTC/stc/ScintillaWX.cpp
deleted file mode 100644
index 2a6f2936f8..0000000000
--- a/src/plugins/contrib/wxSmithSTC/stc/ScintillaWX.cpp
+++ /dev/null
@@ -1,1151 +0,0 @@
-////////////////////////////////////////////////////////////////////////////
-// Name: ScintillaWX.cxx
-// Purpose: A wxWidgets implementation of Scintilla. A class derived
-// from ScintillaBase that uses the "wx platform" defined in
-// PlatformWX.cxx This class is one end of a bridge between
-// the wx world and the Scintilla world. It needs a peer
-// object of type wxStyledTextCtrl to function.
-//
-// Author: Robin Dunn
-//
-// Created: 13-Jan-2000
-// RCS-ID: $Id$
-// Copyright: (c) 2000 by Total Control Software
-// Licence: wxWindows license
-/////////////////////////////////////////////////////////////////////////////
-
-#include "wx/wx.h"
-#include "wx/textbuf.h"
-#include "wx/dataobj.h"
-#include "wx/clipbrd.h"
-#include "wx/dnd.h"
-
-#include "ScintillaWX.h"
-#include "ExternalLexer.h"
-#include "wx/stc/stc.h"
-#include "PlatWX.h"
-
-#ifdef __WXMSW__
- // GetHwndOf()
- #include "wx/msw/private.h"
-#endif
-
-//----------------------------------------------------------------------
-// Helper classes
-
-class wxSTCTimer : public wxTimer {
-public:
- wxSTCTimer(ScintillaWX* swx) {
- this->swx = swx;
- }
-
- void Notify() {
- swx->DoTick();
- }
-
-private:
- ScintillaWX* swx;
-};
-
-
-#if wxUSE_DRAG_AND_DROP
-class wxStartDragTimer : public wxTimer {
-public:
- wxStartDragTimer(ScintillaWX* swx) {
- this->swx = swx;
- }
-
- void Notify() {
- swx->DoStartDrag();
- }
-
-private:
- ScintillaWX* swx;
-};
-
-
-bool wxSTCDropTarget::OnDropText(wxCoord x, wxCoord y, const wxString& data) {
- return swx->DoDropText(x, y, data);
-}
-
-wxDragResult wxSTCDropTarget::OnEnter(wxCoord x, wxCoord y, wxDragResult def) {
- return swx->DoDragEnter(x, y, def);
-}
-
-wxDragResult wxSTCDropTarget::OnDragOver(wxCoord x, wxCoord y, wxDragResult def) {
- return swx->DoDragOver(x, y, def);
-}
-
-void wxSTCDropTarget::OnLeave() {
- swx->DoDragLeave();
-}
-#endif // wxUSE_DRAG_AND_DROP
-
-
-#if wxUSE_POPUPWIN && wxSTC_USE_POPUP
-#include
-#define wxSTCCallTipBase wxPopupWindow
-#define param2 wxBORDER_NONE // popup's 2nd param is flags
-#else
-#define wxSTCCallTipBase wxFrame
-#define param2 -1 // wxWindow's 2nd param is ID
-#endif
-
-#include "wx/dcbuffer.h"
-
-class wxSTCCallTip : public wxSTCCallTipBase {
-public:
- wxSTCCallTip(wxWindow* parent, CallTip* ct, ScintillaWX* swx) :
-#if wxUSE_POPUPWIN && wxSTC_USE_POPUP
- wxSTCCallTipBase(parent, wxBORDER_NONE),
-#else
- wxSTCCallTipBase(parent, -1, wxEmptyString, wxDefaultPosition, wxDefaultSize,
- wxFRAME_NO_TASKBAR
- | wxFRAME_FLOAT_ON_PARENT
- | wxBORDER_NONE
-#ifdef __WXMAC__
- | wxPOPUP_WINDOW
-#endif
- ),
-#endif
- m_ct(ct), m_swx(swx), m_cx(wxDefaultCoord), m_cy(wxDefaultCoord)
- {
- }
-
- ~wxSTCCallTip() {
-#if wxUSE_POPUPWIN && wxSTC_USE_POPUP && defined(__WXGTK__)
- wxRect rect = GetRect();
- rect.x = m_cx;
- rect.y = m_cy;
- GetParent()->Refresh(false, &rect);
-#endif
- }
-
- bool AcceptsFocus() const { return false; }
-
- void OnPaint(wxPaintEvent& WXUNUSED(evt))
- {
- wxBufferedPaintDC dc(this);
- Surface* surfaceWindow = Surface::Allocate();
- surfaceWindow->Init(&dc, m_ct->wDraw.GetID());
- m_ct->PaintCT(surfaceWindow);
- surfaceWindow->Release();
- delete surfaceWindow;
- }
-
- void OnFocus(wxFocusEvent& event)
- {
- GetParent()->SetFocus();
- event.Skip();
- }
-
- void OnLeftDown(wxMouseEvent& event)
- {
- wxPoint pt = event.GetPosition();
- Point p(pt.x, pt.y);
- m_ct->MouseClick(p);
- m_swx->CallTipClick();
- }
-
- virtual void DoSetSize(int x, int y,
- int width, int height,
- int sizeFlags = wxSIZE_AUTO)
- {
- // convert coords to screen coords since we're a top-level window
- if (x != wxDefaultCoord) {
- m_cx = x;
- GetParent()->ClientToScreen(&x, NULL);
- }
- if (y != wxDefaultCoord) {
- m_cy = y;
- GetParent()->ClientToScreen(NULL, &y);
- }
- wxSTCCallTipBase::DoSetSize(x, y, width, height, sizeFlags);
- }
-
-#if wxUSE_POPUPWIN && wxSTC_USE_POPUP
-#else
- virtual bool Show( bool show = true )
- {
- // Although we're a frame, we always want the parent to be active, so
- // raise it whenever we get shown.
- bool rv = wxSTCCallTipBase::Show(show);
- if (rv && show)
- {
- wxTopLevelWindow *frame = wxDynamicCast(
- wxGetTopLevelParent(GetParent()), wxTopLevelWindow);
- if (frame)
- frame->Raise();
- }
- return rv;
- }
-#endif
-
- wxPoint GetMyPosition()
- {
- return wxPoint(m_cx, m_cy);
- }
-
-private:
- CallTip* m_ct;
- ScintillaWX* m_swx;
- int m_cx, m_cy;
- DECLARE_EVENT_TABLE()
-};
-
-BEGIN_EVENT_TABLE(wxSTCCallTip, wxSTCCallTipBase)
- EVT_PAINT(wxSTCCallTip::OnPaint)
- EVT_SET_FOCUS(wxSTCCallTip::OnFocus)
- EVT_LEFT_DOWN(wxSTCCallTip::OnLeftDown)
-END_EVENT_TABLE()
-
-
-//----------------------------------------------------------------------
-
-#if wxUSE_DATAOBJ
-static wxTextFileType wxConvertEOLMode(int scintillaMode)
-{
- wxTextFileType type;
-
- switch (scintillaMode) {
- case wxSTC_EOL_CRLF:
- type = wxTextFileType_Dos;
- break;
-
- case wxSTC_EOL_CR:
- type = wxTextFileType_Mac;
- break;
-
- case wxSTC_EOL_LF:
- type = wxTextFileType_Unix;
- break;
-
- default:
- type = wxTextBuffer::typeDefault;
- break;
- }
- return type;
-}
-#endif // wxUSE_DATAOBJ
-
-
-//----------------------------------------------------------------------
-// Constructor/Destructor
-
-
-ScintillaWX::ScintillaWX(wxStyledTextCtrl* win) {
- capturedMouse = false;
- focusEvent = false;
- wMain = win;
- stc = win;
- wheelRotation = 0;
- Initialise();
-#ifdef __WXMSW__
- sysCaretBitmap = 0;
- sysCaretWidth = 0;
- sysCaretHeight = 0;
-#endif
-#if wxUSE_DRAG_AND_DROP
- startDragTimer = new wxStartDragTimer(this);
-#endif // wxUSE_DRAG_AND_DROP
-}
-
-
-ScintillaWX::~ScintillaWX() {
-#if wxUSE_DRAG_AND_DROP
- delete startDragTimer;
-#endif // wxUSE_DRAG_AND_DROP
- Finalise();
-}
-
-//----------------------------------------------------------------------
-// base class virtuals
-
-
-void ScintillaWX::Initialise() {
- //ScintillaBase::Initialise();
-#if wxUSE_DRAG_AND_DROP
- dropTarget = new wxSTCDropTarget;
- dropTarget->SetScintilla(this);
- stc->SetDropTarget(dropTarget);
-#endif // wxUSE_DRAG_AND_DROP
-#ifdef __WXMAC__
- vs.extraFontFlag = false; // UseAntiAliasing
-#else
- vs.extraFontFlag = true; // UseAntiAliasing
-#endif
-}
-
-
-void ScintillaWX::Finalise() {
- ScintillaBase::Finalise();
- SetTicking(false);
- SetIdle(false);
- DestroySystemCaret();
-}
-
-
-void ScintillaWX::StartDrag() {
-#if wxUSE_DRAG_AND_DROP
- // We defer the starting of the DnD, otherwise the LeftUp of a normal
- // click could be lost and the STC will think it is doing a DnD when the
- // user just wanted a normal click.
- startDragTimer->Start(200, true);
-#endif // wxUSE_DRAG_AND_DROP
-}
-
-void ScintillaWX::DoStartDrag() {
-#if wxUSE_DRAG_AND_DROP
- wxString dragText = stc2wx(drag.s, drag.len);
-
- // Send an event to allow the drag text to be changed
- wxStyledTextEvent evt(wxEVT_STC_START_DRAG, stc->GetId());
- evt.SetEventObject(stc);
- evt.SetDragText(dragText);
- evt.SetDragAllowMove(true);
- evt.SetPosition(wxMin(stc->GetSelectionStart(),
- stc->GetSelectionEnd()));
- stc->GetEventHandler()->ProcessEvent(evt);
- dragText = evt.GetDragText();
-
- if (dragText.length()) {
- wxDropSource source(stc);
- wxTextDataObject data(dragText);
- wxDragResult result;
-
- source.SetData(data);
- dropWentOutside = true;
- result = source.DoDragDrop(evt.GetDragAllowMove());
- if (result == wxDragMove && dropWentOutside)
- ClearSelection();
- inDragDrop = false;
- SetDragPosition(invalidPosition);
- }
-#endif // wxUSE_DRAG_AND_DROP
-}
-
-
-bool ScintillaWX::SetIdle(bool on) {
- if (idler.state != on) {
- // connect or disconnect the EVT_IDLE handler
- if (on)
- stc->Connect(wxID_ANY, wxEVT_IDLE,
- (wxObjectEventFunction) (wxEventFunction) (wxIdleEventFunction) &wxStyledTextCtrl::OnIdle);
- else
- stc->Disconnect(wxID_ANY, wxEVT_IDLE,
- (wxObjectEventFunction) (wxEventFunction) (wxIdleEventFunction) &wxStyledTextCtrl::OnIdle);
- idler.state = on;
- }
- return idler.state;
-}
-
-
-void ScintillaWX::SetTicking(bool on) {
- wxSTCTimer* steTimer;
- if (timer.ticking != on) {
- timer.ticking = on;
- if (timer.ticking) {
- steTimer = new wxSTCTimer(this);
- steTimer->Start(timer.tickSize);
- timer.tickerID = steTimer;
- } else {
- steTimer = (wxSTCTimer*)timer.tickerID;
- steTimer->Stop();
- delete steTimer;
- timer.tickerID = 0;
- }
- }
- timer.ticksToWait = caret.period;
-}
-
-
-void ScintillaWX::SetMouseCapture(bool on) {
- if (mouseDownCaptures) {
- if (on && !capturedMouse)
- stc->CaptureMouse();
- else if (!on && capturedMouse && stc->HasCapture())
- stc->ReleaseMouse();
- capturedMouse = on;
- }
-}
-
-
-bool ScintillaWX::HaveMouseCapture() {
- return capturedMouse;
-}
-
-
-void ScintillaWX::ScrollText(int linesToMove) {
- int dy = vs.lineHeight * (linesToMove);
- stc->ScrollWindow(0, dy);
- stc->Update();
-}
-
-void ScintillaWX::SetVerticalScrollPos() {
- if (stc->m_vScrollBar == NULL) { // Use built-in scrollbar
- stc->SetScrollPos(wxVERTICAL, topLine);
- }
- else { // otherwise use the one that's been given to us
- stc->m_vScrollBar->SetThumbPosition(topLine);
- }
-}
-
-void ScintillaWX::SetHorizontalScrollPos() {
- if (stc->m_hScrollBar == NULL) { // Use built-in scrollbar
- stc->SetScrollPos(wxHORIZONTAL, xOffset);
- }
- else { // otherwise use the one that's been given to us
- stc->m_hScrollBar->SetThumbPosition(xOffset);
- }
-}
-
-
-const int H_SCROLL_STEP = 20;
-
-bool ScintillaWX::ModifyScrollBars(int nMax, int nPage) {
- bool modified = false;
-
- int vertEnd = nMax;
- if (!verticalScrollBarVisible)
- vertEnd = 0;
-
- // Check the vertical scrollbar
- if (stc->m_vScrollBar == NULL) { // Use built-in scrollbar
- int sbMax = stc->GetScrollRange(wxVERTICAL);
- int sbThumb = stc->GetScrollThumb(wxVERTICAL);
- int sbPos = stc->GetScrollPos(wxVERTICAL);
- if (sbMax != vertEnd || sbThumb != nPage) {
- stc->SetScrollbar(wxVERTICAL, sbPos, nPage, vertEnd+1);
- modified = true;
- }
- }
- else { // otherwise use the one that's been given to us
- int sbMax = stc->m_vScrollBar->GetRange();
- int sbPage = stc->m_vScrollBar->GetPageSize();
- int sbPos = stc->m_vScrollBar->GetThumbPosition();
- if (sbMax != vertEnd || sbPage != nPage) {
- stc->m_vScrollBar->SetScrollbar(sbPos, nPage, vertEnd+1, nPage);
- modified = true;
- }
- }
-
-
- // Check the horizontal scrollbar
- PRectangle rcText = GetTextRectangle();
- int horizEnd = scrollWidth;
- if (horizEnd < 0)
- horizEnd = 0;
- if (!horizontalScrollBarVisible || (wrapState != eWrapNone))
- horizEnd = 0;
- int pageWidth = rcText.Width();
-
- if (stc->m_hScrollBar == NULL) { // Use built-in scrollbar
- int sbMax = stc->GetScrollRange(wxHORIZONTAL);
- int sbThumb = stc->GetScrollThumb(wxHORIZONTAL);
- int sbPos = stc->GetScrollPos(wxHORIZONTAL);
- if ((sbMax != horizEnd) || (sbThumb != pageWidth) || (sbPos != 0)) {
- stc->SetScrollbar(wxHORIZONTAL, sbPos, pageWidth, horizEnd);
- modified = true;
- if (scrollWidth < pageWidth) {
- HorizontalScrollTo(0);
- }
- }
- }
- else { // otherwise use the one that's been given to us
- int sbMax = stc->m_hScrollBar->GetRange();
- int sbThumb = stc->m_hScrollBar->GetPageSize();
- int sbPos = stc->m_hScrollBar->GetThumbPosition();
- if ((sbMax != horizEnd) || (sbThumb != pageWidth) || (sbPos != 0)) {
- stc->m_hScrollBar->SetScrollbar(sbPos, pageWidth, horizEnd, pageWidth);
- modified = true;
- if (scrollWidth < pageWidth) {
- HorizontalScrollTo(0);
- }
- }
- }
-
- return modified;
-}
-
-
-void ScintillaWX::NotifyChange() {
- stc->NotifyChange();
-}
-
-
-void ScintillaWX::NotifyParent(SCNotification scn) {
- stc->NotifyParent(&scn);
-}
-
-
-// This method is overloaded from ScintillaBase in order to prevent the
-// AutoComplete window from being destroyed when it gets the focus. There is
-// a side effect that the AutoComp will also not be destroyed when switching
-// to another window, but I think that is okay.
-void ScintillaWX::CancelModes() {
- if (! focusEvent)
- AutoCompleteCancel();
- ct.CallTipCancel();
- Editor::CancelModes();
-}
-
-
-
-void ScintillaWX::Copy() {
- if (currentPos != anchor) {
- SelectionText st;
- CopySelectionRange(&st);
- CopyToClipboard(st);
- }
-}
-
-
-void ScintillaWX::Paste() {
- pdoc->BeginUndoAction();
- ClearSelection();
-
-#if wxUSE_DATAOBJ
- wxTextDataObject data;
- bool gotData = false;
-
- if (wxTheClipboard->Open()) {
- wxTheClipboard->UsePrimarySelection(false);
- gotData = wxTheClipboard->GetData(data);
- wxTheClipboard->Close();
- }
- if (gotData) {
- wxString text = wxTextBuffer::Translate(data.GetText(),
- wxConvertEOLMode(pdoc->eolMode));
- wxWX2MBbuf buf = (wxWX2MBbuf)wx2stc(text);
-
-#if wxUSE_UNICODE
- // free up the old character buffer in case the text is real big
- data.SetText(wxEmptyString);
- text = wxEmptyString;
-#endif
- int len = strlen(buf);
- pdoc->InsertString(currentPos, buf, len);
- SetEmptySelection(currentPos + len);
- }
-#endif // wxUSE_DATAOBJ
-
- pdoc->EndUndoAction();
- NotifyChange();
- Redraw();
-}
-
-
-void ScintillaWX::CopyToClipboard(const SelectionText& st) {
-#if wxUSE_CLIPBOARD
- if ( !st.len )
- return;
- if (wxTheClipboard->Open()) {
- wxTheClipboard->UsePrimarySelection(false);
- wxString text = wxTextBuffer::Translate(stc2wx(st.s, st.len-1));
- wxTheClipboard->SetData(new wxTextDataObject(text));
- wxTheClipboard->Close();
- }
-#else
- wxUnusedVar(st);
-#endif // wxUSE_CLIPBOARD
-}
-
-
-bool ScintillaWX::CanPaste() {
-#if wxUSE_CLIPBOARD
- bool canPaste = false;
- bool didOpen;
-
- if (Editor::CanPaste()) {
- didOpen = !wxTheClipboard->IsOpened();
- if ( didOpen )
- wxTheClipboard->Open();
-
- if (wxTheClipboard->IsOpened()) {
- wxTheClipboard->UsePrimarySelection(false);
- canPaste = wxTheClipboard->IsSupported(wxUSE_UNICODE ? wxDF_UNICODETEXT : wxDF_TEXT);
- if (didOpen)
- wxTheClipboard->Close();
- }
- }
- return canPaste;
-#else
- return false;
-#endif // wxUSE_CLIPBOARD
-}
-
-void ScintillaWX::CreateCallTipWindow(PRectangle) {
- if (! ct.wCallTip.Created() ) {
- ct.wCallTip = new wxSTCCallTip(stc, &ct, this);
- ct.wDraw = ct.wCallTip;
- }
-}
-
-
-void ScintillaWX::AddToPopUp(const char *label, int cmd, bool enabled) {
- if (!label[0])
- ((wxMenu*)popup.GetID())->AppendSeparator();
- else
- ((wxMenu*)popup.GetID())->Append(cmd, wxGetTranslation(stc2wx(label)));
-
- if (!enabled)
- ((wxMenu*)popup.GetID())->Enable(cmd, enabled);
-}
-
-
-// This is called by the Editor base class whenever something is selected
-void ScintillaWX::ClaimSelection() {
-#if 0
- // Until wxGTK is able to support using both the primary selection and the
- // clipboard at the same time I think it causes more problems than it is
- // worth to implement this method. Selecting text should not clear the
- // clipboard. --Robin
-#ifdef __WXGTK__
- // Put the selected text in the PRIMARY selection
- if (currentPos != anchor) {
- SelectionText st;
- CopySelectionRange(&st);
- if (wxTheClipboard->Open()) {
- wxTheClipboard->UsePrimarySelection(true);
- wxString text = stc2wx(st.s, st.len);
- wxTheClipboard->SetData(new wxTextDataObject(text));
- wxTheClipboard->UsePrimarySelection(false);
- wxTheClipboard->Close();
- }
- }
-#endif
-#endif
-}
-
-
-void ScintillaWX::UpdateSystemCaret() {
-#ifdef __WXMSW__
- if (hasFocus) {
- if (HasCaretSizeChanged()) {
- DestroySystemCaret();
- CreateSystemCaret();
- }
- Point pos = LocationFromPosition(currentPos);
- ::SetCaretPos(pos.x, pos.y);
- }
-#endif
-}
-
-
-bool ScintillaWX::HasCaretSizeChanged() {
-#ifdef __WXMSW__
- if (( (0 != vs.caretWidth) && (sysCaretWidth != vs.caretWidth) )
- || (0 != vs.lineHeight) && (sysCaretHeight != vs.lineHeight)) {
- return true;
- }
-#endif
- return false;
-}
-
-bool ScintillaWX::CreateSystemCaret() {
-#ifdef __WXMSW__
- sysCaretWidth = vs.caretWidth;
- if (0 == sysCaretWidth) {
- sysCaretWidth = 1;
- }
- sysCaretHeight = vs.lineHeight;
- int bitmapSize = (((sysCaretWidth + 15) & ~15) >> 3) * sysCaretHeight;
- char *bits = new char[bitmapSize];
- memset(bits, 0, bitmapSize);
- sysCaretBitmap = ::CreateBitmap(sysCaretWidth, sysCaretHeight, 1,
- 1, reinterpret_cast(bits));
- delete [] bits;
- BOOL retval = ::CreateCaret(GetHwndOf(stc), sysCaretBitmap,
- sysCaretWidth, sysCaretHeight);
- ::ShowCaret(GetHwndOf(stc));
- return retval != 0;
-#else
- return false;
-#endif
-}
-
-bool ScintillaWX::DestroySystemCaret() {
-#ifdef __WXMSW__
- ::HideCaret(GetHwndOf(stc));
- BOOL retval = ::DestroyCaret();
- if (sysCaretBitmap) {
- ::DeleteObject(sysCaretBitmap);
- sysCaretBitmap = 0;
- }
- return retval != 0;
-#else
- return false;
-#endif
-}
-
-
-//----------------------------------------------------------------------
-
-
-sptr_t ScintillaWX::DefWndProc(unsigned int /*iMessage*/,
- uptr_t /*wParam*/,
- sptr_t /*lParam*/) {
- return 0;
-}
-
-sptr_t ScintillaWX::WndProc(unsigned int iMessage,
- uptr_t wParam,
- sptr_t lParam) {
- switch (iMessage) {
- case SCI_CALLTIPSHOW: {
- // NOTE: This is copied here from scintilla/src/ScintillaBase.cxx
- // because of the little tweak that needs done below for wxGTK.
- // When updating new versions double check that this is still
- // needed, and that any new code there is copied here too.
- Point pt = LocationFromPosition(wParam);
- char* defn = reinterpret_cast(lParam);
- AutoCompleteCancel();
- pt.y += vs.lineHeight;
- int ctStyle = ct.UseStyleCallTip() ? STYLE_CALLTIP : STYLE_DEFAULT;
- if (ct.UseStyleCallTip())
- {
- ct.SetForeBack(vs.styles[STYLE_CALLTIP].fore, vs.styles[STYLE_CALLTIP].back);
-
- }
- PRectangle rc = ct.CallTipStart(currentPos, pt,
- defn,
- vs.styles[ctStyle].fontName,
- vs.styles[ctStyle].sizeZoomed,
- CodePage(),
- vs.styles[ctStyle].characterSet,
- wMain);
- // If the call-tip window would be out of the client
- // space, adjust so it displays above the text.
- PRectangle rcClient = GetClientRectangle();
- if (rc.bottom > rcClient.bottom) {
-#ifdef __WXGTK__
- int offset = int(vs.lineHeight * 1.25) + rc.Height();
-#else
- int offset = vs.lineHeight + rc.Height();
-#endif
- rc.top -= offset;
- rc.bottom -= offset;
- }
- // Now display the window.
- CreateCallTipWindow(rc);
- ct.wCallTip.SetPositionRelative(rc, wMain);
- ct.wCallTip.Show();
- break;
- }
-
-#ifdef SCI_LEXER
- case SCI_LOADLEXERLIBRARY:
- LexerManager::GetInstance()->Load((const char*)lParam);
- break;
-#endif
-
- default:
- return ScintillaBase::WndProc(iMessage, wParam, lParam);
- }
- return 0;
-}
-
-
-
-//----------------------------------------------------------------------
-// Event delegates
-
-void ScintillaWX::DoPaint(wxDC* dc, wxRect rect) {
-
- paintState = painting;
- Surface* surfaceWindow = Surface::Allocate();
- surfaceWindow->Init(dc, wMain.GetID());
- rcPaint = PRectangleFromwxRect(rect);
- PRectangle rcClient = GetClientRectangle();
- paintingAllText = rcPaint.Contains(rcClient);
-
- ClipChildren(*dc, rcPaint);
- Paint(surfaceWindow, rcPaint);
-
- delete surfaceWindow;
- if (paintState == paintAbandoned) {
- // Painting area was insufficient to cover new styling or brace
- // highlight positions
- FullPaint();
- }
- paintState = notPainting;
-}
-
-
-void ScintillaWX::DoHScroll(int type, int pos) {
- int xPos = xOffset;
- PRectangle rcText = GetTextRectangle();
- int pageWidth = rcText.Width() * 2 / 3;
- if (type == wxEVT_SCROLLWIN_LINEUP || type == wxEVT_SCROLL_LINEUP)
- xPos -= H_SCROLL_STEP;
- else if (type == wxEVT_SCROLLWIN_LINEDOWN || type == wxEVT_SCROLL_LINEDOWN)
- xPos += H_SCROLL_STEP;
- else if (type == wxEVT_SCROLLWIN_PAGEUP || type == wxEVT_SCROLL_PAGEUP)
- xPos -= pageWidth;
- else if (type == wxEVT_SCROLLWIN_PAGEDOWN || type == wxEVT_SCROLL_PAGEDOWN) {
- xPos += pageWidth;
- if (xPos > scrollWidth - rcText.Width()) {
- xPos = scrollWidth - rcText.Width();
- }
- }
- else if (type == wxEVT_SCROLLWIN_TOP || type == wxEVT_SCROLL_TOP)
- xPos = 0;
- else if (type == wxEVT_SCROLLWIN_BOTTOM || type == wxEVT_SCROLL_BOTTOM)
- xPos = scrollWidth;
- else if (type == wxEVT_SCROLLWIN_THUMBTRACK || type == wxEVT_SCROLL_THUMBTRACK)
- xPos = pos;
-
- HorizontalScrollTo(xPos);
-}
-
-void ScintillaWX::DoVScroll(int type, int pos) {
- int topLineNew = topLine;
- if (type == wxEVT_SCROLLWIN_LINEUP || type == wxEVT_SCROLL_LINEUP)
- topLineNew -= 1;
- else if (type == wxEVT_SCROLLWIN_LINEDOWN || type == wxEVT_SCROLL_LINEDOWN)
- topLineNew += 1;
- else if (type == wxEVT_SCROLLWIN_PAGEUP || type == wxEVT_SCROLL_PAGEUP)
- topLineNew -= LinesToScroll();
- else if (type == wxEVT_SCROLLWIN_PAGEDOWN || type == wxEVT_SCROLL_PAGEDOWN)
- topLineNew += LinesToScroll();
- else if (type == wxEVT_SCROLLWIN_TOP || type == wxEVT_SCROLL_TOP)
- topLineNew = 0;
- else if (type == wxEVT_SCROLLWIN_BOTTOM || type == wxEVT_SCROLL_BOTTOM)
- topLineNew = MaxScrollPos();
- else if (type == wxEVT_SCROLLWIN_THUMBTRACK || type == wxEVT_SCROLL_THUMBTRACK)
- topLineNew = pos;
-
- ScrollTo(topLineNew);
-}
-
-void ScintillaWX::DoMouseWheel(int rotation, int delta,
- int linesPerAction, int ctrlDown,
- bool isPageScroll ) {
- int topLineNew = topLine;
- int lines;
-
- if (ctrlDown) { // Zoom the fonts if Ctrl key down
- if (rotation < 0) {
- KeyCommand(SCI_ZOOMIN);
- }
- else {
- KeyCommand(SCI_ZOOMOUT);
- }
- }
- else { // otherwise just scroll the window
- if ( !delta )
- delta = 120;
- wheelRotation += rotation;
- lines = wheelRotation / delta;
- wheelRotation -= lines * delta;
- if (lines != 0) {
- if (isPageScroll)
- lines = lines * LinesOnScreen(); // lines is either +1 or -1
- else
- lines *= linesPerAction;
- topLineNew -= lines;
- ScrollTo(topLineNew);
- }
- }
-}
-
-
-void ScintillaWX::DoSize(int WXUNUSED(width), int WXUNUSED(height)) {
- ChangeSize();
-}
-
-void ScintillaWX::DoLoseFocus(){
- focusEvent = true;
- SetFocusState(false);
- focusEvent = false;
- DestroySystemCaret();
-}
-
-void ScintillaWX::DoGainFocus(){
- focusEvent = true;
- SetFocusState(true);
- focusEvent = false;
- DestroySystemCaret();
- CreateSystemCaret();
-}
-
-void ScintillaWX::DoSysColourChange() {
- InvalidateStyleData();
-}
-
-void ScintillaWX::DoLeftButtonDown(Point pt, unsigned int curTime, bool shift, bool ctrl, bool alt) {
- ButtonDown(pt, curTime, shift, ctrl, alt);
-}
-
-void ScintillaWX::DoLeftButtonUp(Point pt, unsigned int curTime, bool ctrl) {
- ButtonUp(pt, curTime, ctrl);
-#if wxUSE_DRAG_AND_DROP
- if (startDragTimer->IsRunning()) {
- startDragTimer->Stop();
- SetDragPosition(invalidPosition);
- SetEmptySelection(PositionFromLocation(pt));
- ShowCaretAtCurrentPosition();
- }
-#endif // wxUSE_DRAG_AND_DROP
-}
-
-void ScintillaWX::DoLeftButtonMove(Point pt) {
- ButtonMove(pt);
-}
-
-#ifdef __WXGTK__
-void ScintillaWX::DoMiddleButtonUp(Point pt) {
- // Set the current position to the mouse click point and
- // then paste in the PRIMARY selection, if any. wxGTK only.
- int newPos = PositionFromLocation(pt);
- MovePositionTo(newPos, noSel, true);
-
- pdoc->BeginUndoAction();
- wxTextDataObject data;
- bool gotData = false;
- if (wxTheClipboard->Open()) {
- wxTheClipboard->UsePrimarySelection(true);
- gotData = wxTheClipboard->GetData(data);
- wxTheClipboard->UsePrimarySelection(false);
- wxTheClipboard->Close();
- }
- if (gotData) {
- wxString text = wxTextBuffer::Translate(data.GetText(),
- wxConvertEOLMode(pdoc->eolMode));
- wxWX2MBbuf buf = (wxWX2MBbuf)wx2stc(text);
- int len = strlen(buf);
- pdoc->InsertString(currentPos, buf, len);
- SetEmptySelection(currentPos + len);
- }
- pdoc->EndUndoAction();
- NotifyChange();
- Redraw();
-
- ShowCaretAtCurrentPosition();
- EnsureCaretVisible();
-}
-#else
-void ScintillaWX::DoMiddleButtonUp(Point WXUNUSED(pt)) {
-}
-#endif
-
-
-void ScintillaWX::DoAddChar(int key) {
-#if wxUSE_UNICODE
- wxChar wszChars[2];
- wszChars[0] = (wxChar)key;
- wszChars[1] = 0;
- wxWX2MBbuf buf = (wxWX2MBbuf)wx2stc(wszChars);
- AddCharUTF((char*)buf.data(), strlen(buf));
-#else
- AddChar((char)key);
-#endif
-}
-
-
-int ScintillaWX::DoKeyDown(const wxKeyEvent& evt, bool* consumed)
-{
- int key = evt.GetKeyCode();
- bool shift = evt.ShiftDown(),
- ctrl = evt.ControlDown(),
- alt = evt.AltDown();
-
- if (ctrl && key >= 1 && key <= 26 && key != WXK_BACK)
- key += 'A' - 1;
-
- switch (key) {
- case WXK_DOWN: key = SCK_DOWN; break;
- case WXK_UP: key = SCK_UP; break;
- case WXK_LEFT: key = SCK_LEFT; break;
- case WXK_RIGHT: key = SCK_RIGHT; break;
- case WXK_HOME: key = SCK_HOME; break;
- case WXK_END: key = SCK_END; break;
- case WXK_PAGEUP: key = SCK_PRIOR; break;
- case WXK_PAGEDOWN: key = SCK_NEXT; break;
- case WXK_NUMPAD_DOWN: key = SCK_DOWN; break;
- case WXK_NUMPAD_UP: key = SCK_UP; break;
- case WXK_NUMPAD_LEFT: key = SCK_LEFT; break;
- case WXK_NUMPAD_RIGHT: key = SCK_RIGHT; break;
- case WXK_NUMPAD_HOME: key = SCK_HOME; break;
- case WXK_NUMPAD_END: key = SCK_END; break;
- case WXK_NUMPAD_PAGEUP: key = SCK_PRIOR; break;
- case WXK_NUMPAD_PAGEDOWN: key = SCK_NEXT; break;
- case WXK_NUMPAD_DELETE: key = SCK_DELETE; break;
- case WXK_NUMPAD_INSERT: key = SCK_INSERT; break;
- case WXK_DELETE: key = SCK_DELETE; break;
- case WXK_INSERT: key = SCK_INSERT; break;
- case WXK_ESCAPE: key = SCK_ESCAPE; break;
- case WXK_BACK: key = SCK_BACK; break;
- case WXK_TAB: key = SCK_TAB; break;
- case WXK_NUMPAD_ENTER: // fall through
- case WXK_RETURN: key = SCK_RETURN; break;
- case WXK_ADD: // fall through
- case WXK_NUMPAD_ADD: key = SCK_ADD; break;
- case WXK_SUBTRACT: // fall through
- case WXK_NUMPAD_SUBTRACT: key = SCK_SUBTRACT; break;
- case WXK_DIVIDE: // fall through
- case WXK_NUMPAD_DIVIDE: key = SCK_DIVIDE; break;
- case WXK_CONTROL: key = 0; break;
- case WXK_ALT: key = 0; break;
- case WXK_SHIFT: key = 0; break;
- case WXK_MENU: key = 0; break;
- }
-
-#ifdef __WXMAC__
- if ( evt.MetaDown() ) {
- // check for a few common Mac Meta-key combos and remap them to Ctrl
- // for Scintilla
- switch ( key ) {
- case 'Z': // Undo
- case 'X': // Cut
- case 'C': // Copy
- case 'V': // Paste
- case 'A': // Select All
- ctrl = true;
- break;
- }
- }
-#endif
-
- int rv = KeyDown(key, shift, ctrl, alt, consumed);
-
- if (key)
- return rv;
- else
- return 1;
-}
-
-
-void ScintillaWX::DoCommand(int ID) {
- Command(ID);
-}
-
-
-void ScintillaWX::DoContextMenu(Point pt) {
- if (displayPopupMenu)
- ContextMenu(pt);
-}
-
-void ScintillaWX::DoOnListBox() {
- AutoCompleteCompleted();
-}
-
-
-void ScintillaWX::DoOnIdle(wxIdleEvent& evt) {
-
- if ( Idle() )
- evt.RequestMore();
- else
- SetIdle(false);
-}
-
-//----------------------------------------------------------------------
-
-#if wxUSE_DRAG_AND_DROP
-bool ScintillaWX::DoDropText(long x, long y, const wxString& data) {
- SetDragPosition(invalidPosition);
-
- wxString text = wxTextBuffer::Translate(data,
- wxConvertEOLMode(pdoc->eolMode));
-
- // Send an event to allow the drag details to be changed
- wxStyledTextEvent evt(wxEVT_STC_DO_DROP, stc->GetId());
- evt.SetEventObject(stc);
- evt.SetDragResult(dragResult);
- evt.SetX(x);
- evt.SetY(y);
- evt.SetPosition(PositionFromLocation(Point(x,y)));
- evt.SetDragText(text);
- stc->GetEventHandler()->ProcessEvent(evt);
-
- dragResult = evt.GetDragResult();
- if (dragResult == wxDragMove || dragResult == wxDragCopy) {
- DropAt(evt.GetPosition(),
- wx2stc(evt.GetDragText()),
- dragResult == wxDragMove,
- false); // TODO: rectangular?
- return true;
- }
- return false;
-}
-
-
-wxDragResult ScintillaWX::DoDragEnter(wxCoord WXUNUSED(x), wxCoord WXUNUSED(y), wxDragResult def) {
- dragResult = def;
- return dragResult;
-}
-
-
-wxDragResult ScintillaWX::DoDragOver(wxCoord x, wxCoord y, wxDragResult def) {
- SetDragPosition(PositionFromLocation(Point(x, y)));
-
- // Send an event to allow the drag result to be changed
- wxStyledTextEvent evt(wxEVT_STC_DRAG_OVER, stc->GetId());
- evt.SetEventObject(stc);
- evt.SetDragResult(def);
- evt.SetX(x);
- evt.SetY(y);
- evt.SetPosition(PositionFromLocation(Point(x,y)));
- stc->GetEventHandler()->ProcessEvent(evt);
-
- dragResult = evt.GetDragResult();
- return dragResult;
-}
-
-
-void ScintillaWX::DoDragLeave() {
- SetDragPosition(invalidPosition);
-}
-#endif // wxUSE_DRAG_AND_DROP
-//----------------------------------------------------------------------
-
-// Force the whole window to be repainted
-void ScintillaWX::FullPaint() {
-#ifndef __WXMAC__
- stc->Refresh(false);
-#endif
- stc->Update();
-}
-
-
-void ScintillaWX::DoScrollToLine(int line) {
- ScrollTo(line);
-}
-
-
-void ScintillaWX::DoScrollToColumn(int column) {
- HorizontalScrollTo(column * vs.spaceWidth);
-}
-
-// wxGTK doesn't appear to need this explicit clipping code any longer, but I
-// will leave it here commented out for a while just in case...
-void ScintillaWX::ClipChildren(wxDC& WXUNUSED(dc), PRectangle WXUNUSED(rect))
-{
-// wxRegion rgn(wxRectFromPRectangle(rect));
-// if (ac.Active()) {
-// wxRect childRect = ((wxWindow*)ac.lb->GetID())->GetRect();
-// rgn.Subtract(childRect);
-// }
-// if (ct.inCallTipMode) {
-// wxSTCCallTip* tip = (wxSTCCallTip*)ct.wCallTip.GetID();
-// wxRect childRect = tip->GetRect();
-// #if wxUSE_POPUPWIN && wxSTC_USE_POPUP
-// childRect.SetPosition(tip->GetMyPosition());
-// #endif
-// rgn.Subtract(childRect);
-// }
-// dc.SetClippingRegion(rgn);
-}
-
-
-void ScintillaWX::SetUseAntiAliasing(bool useAA) {
- vs.extraFontFlag = useAA;
- InvalidateStyleRedraw();
-}
-
-bool ScintillaWX::GetUseAntiAliasing() {
- return vs.extraFontFlag;
-}
-
-//----------------------------------------------------------------------
-//----------------------------------------------------------------------
diff --git a/src/plugins/contrib/wxSmithSTC/stc/ScintillaWX.h b/src/plugins/contrib/wxSmithSTC/stc/ScintillaWX.h
deleted file mode 100644
index 8b1e1f82e7..0000000000
--- a/src/plugins/contrib/wxSmithSTC/stc/ScintillaWX.h
+++ /dev/null
@@ -1,196 +0,0 @@
-////////////////////////////////////////////////////////////////////////////
-// Name: ScintillaWX.h
-// Purpose: A wxWidgets implementation of Scintilla. A class derived
-// from ScintillaBase that uses the "wx platform" defined in
-// PlatWX.cpp. This class is one end of a bridge between
-// the wx world and the Scintilla world. It needs a peer
-// object of type wxStyledTextCtrl to function.
-//
-// Author: Robin Dunn
-//
-// Created: 13-Jan-2000
-// RCS-ID: $Id$
-// Copyright: (c) 2000 by Total Control Software
-// Licence: wxWindows license
-/////////////////////////////////////////////////////////////////////////////
-
-#ifndef __ScintillaWX_h__
-#define __ScintillaWX_h__
-
-//----------------------------------------------------------------------
-
-#include
-#include
-#include
-#include
-
-#include "Platform.h"
-
-#include "Scintilla.h"
-#include "CharClassify.h"
-#include "XPM.h"
-#ifdef SCI_LEXER
-#include "SciLexer.h"
-#include "PropSet.h"
-#include "Accessor.h"
-#include "KeyWords.h"
-#endif
-#include "ContractionState.h"
-#include "SVector.h"
-#include "CellBuffer.h"
-#include "CallTip.h"
-#include "KeyMap.h"
-#include "Indicator.h"
-#include "LineMarker.h"
-#include "Style.h"
-#include "ViewStyle.h"
-#include "AutoComplete.h"
-#include "Document.h"
-#include "Editor.h"
-#include "ScintillaBase.h"
-
-//----------------------------------------------------------------------
-
-#ifdef WXMAKINGDLL_STC
- #define WXDLLIMPEXP_STC WXEXPORT
-#elif defined(WXUSINGDLL)
- #define WXDLLIMPEXP_STC WXIMPORT
-#else // not making nor using DLL
- #define WXDLLIMPEXP_STC
-#endif
-
-class WXDLLIMPEXP_STC wxStyledTextCtrl; // forward
-class ScintillaWX;
-
-
-//----------------------------------------------------------------------
-// Helper classes
-
-#if wxUSE_DRAG_AND_DROP
-class wxSTCDropTarget : public wxTextDropTarget {
-public:
- void SetScintilla(ScintillaWX* swx) {
- this->swx = swx;
- }
-
- bool OnDropText(wxCoord x, wxCoord y, const wxString& data);
- wxDragResult OnEnter(wxCoord x, wxCoord y, wxDragResult def);
- wxDragResult OnDragOver(wxCoord x, wxCoord y, wxDragResult def);
- void OnLeave();
-
-private:
- ScintillaWX* swx;
-};
-#endif
-
-//----------------------------------------------------------------------
-
-class ScintillaWX : public ScintillaBase {
-public:
-
- ScintillaWX(wxStyledTextCtrl* win);
- ~ScintillaWX();
-
- // base class virtuals
- virtual void Initialise();
- virtual void Finalise();
- virtual void StartDrag();
- virtual bool SetIdle(bool on);
- virtual void SetTicking(bool on);
- virtual void SetMouseCapture(bool on);
- virtual bool HaveMouseCapture();
- virtual void ScrollText(int linesToMove);
- virtual void SetVerticalScrollPos();
- virtual void SetHorizontalScrollPos();
- virtual bool ModifyScrollBars(int nMax, int nPage);
- virtual void Copy();
- virtual void Paste();
- virtual void CopyToClipboard(const SelectionText &selectedText);
-
- virtual void CreateCallTipWindow(PRectangle rc);
- virtual void AddToPopUp(const char *label, int cmd = 0, bool enabled = true);
- virtual void ClaimSelection();
-
- virtual sptr_t DefWndProc(unsigned int iMessage,
- uptr_t wParam,
- sptr_t lParam);
- virtual sptr_t WndProc(unsigned int iMessage,
- uptr_t wParam,
- sptr_t lParam);
-
- virtual void NotifyChange();
- virtual void NotifyParent(SCNotification scn);
-
- virtual void CancelModes();
-
- virtual void UpdateSystemCaret();
-
- // Event delegates
- void DoPaint(wxDC* dc, wxRect rect);
- void DoHScroll(int type, int pos);
- void DoVScroll(int type, int pos);
- void DoSize(int width, int height);
- void DoLoseFocus();
- void DoGainFocus();
- void DoSysColourChange();
- void DoLeftButtonDown(Point pt, unsigned int curTime, bool shift, bool ctrl, bool alt);
- void DoLeftButtonUp(Point pt, unsigned int curTime, bool ctrl);
- void DoLeftButtonMove(Point pt);
- void DoMiddleButtonUp(Point pt);
- void DoMouseWheel(int rotation, int delta, int linesPerAction, int ctrlDown, bool isPageScroll);
- void DoAddChar(int key);
- int DoKeyDown(const wxKeyEvent& event, bool* consumed);
- void DoTick() { Tick(); }
- void DoOnIdle(wxIdleEvent& evt);
- void DoStartDrag();
-
-#if wxUSE_DRAG_AND_DROP
- bool DoDropText(long x, long y, const wxString& data);
- wxDragResult DoDragEnter(wxCoord x, wxCoord y, wxDragResult def);
- wxDragResult DoDragOver(wxCoord x, wxCoord y, wxDragResult def);
- void DoDragLeave();
-#endif
-
- void DoCommand(int ID);
- void DoContextMenu(Point pt);
- void DoOnListBox();
-
-
- // helpers
- void FullPaint();
- bool CanPaste();
- bool GetHideSelection() { return hideSelection; }
- void DoScrollToLine(int line);
- void DoScrollToColumn(int column);
- void ClipChildren(wxDC& dc, PRectangle rect);
- void SetUseAntiAliasing(bool useAA);
- bool GetUseAntiAliasing();
-
-private:
- bool capturedMouse;
- bool focusEvent;
- wxStyledTextCtrl* stc;
-
-#if wxUSE_DRAG_AND_DROP
- wxSTCDropTarget* dropTarget;
- wxDragResult dragResult;
- wxTimer* startDragTimer;
-#endif
-
- int wheelRotation;
-
- // For use in creating a system caret
- bool HasCaretSizeChanged();
- bool CreateSystemCaret();
- bool DestroySystemCaret();
-#ifdef __WXMSW__
- HBITMAP sysCaretBitmap;
- int sysCaretWidth;
- int sysCaretHeight;
-#endif
-
- friend class wxSTCCallTip;
-};
-
-//----------------------------------------------------------------------
-#endif
diff --git a/src/plugins/contrib/wxSmithSTC/stc/include/wx/stc/stc.h b/src/plugins/contrib/wxSmithSTC/stc/include/wx/stc/stc.h
deleted file mode 100644
index 5b5d509cca..0000000000
--- a/src/plugins/contrib/wxSmithSTC/stc/include/wx/stc/stc.h
+++ /dev/null
@@ -1,3621 +0,0 @@
-////////////////////////////////////////////////////////////////////////////
-// Name: stc.h
-// Purpose: A wxWidgets implementation of Scintilla. This class is the
-// one meant to be used directly by wx applications. It does not
-// derive directly from the Scintilla classes, and in fact there
-// is no mention of Scintilla classes at all in this header.
-// This class delegates all method calls and events to the
-// Scintilla objects and so forth. This allows the use of
-// Scintilla without polluting the namespace with all the
-// classes and itentifiers from Scintilla.
-//
-// Author: Robin Dunn
-//
-// Created: 13-Jan-2000
-// RCS-ID: $Id$
-// Copyright: (c) 2000 by Total Control Software
-// Licence: wxWindows license
-/////////////////////////////////////////////////////////////////////////////
-
-#ifndef __stc_h__
-#define __stc_h__
-
-
-#include "wx/wx.h"
-#include "wx/dnd.h"
-
-
-#ifdef WXMAKINGDLL_STC
- #define WXDLLIMPEXP_STC WXEXPORT
-#elif defined(WXUSINGDLL)
- #define WXDLLIMPEXP_STC WXIMPORT
-#else // not making nor using DLL
- #define WXDLLIMPEXP_STC
-#endif
-
-
-// SWIG can't handle "#if" type of conditionals, only "#ifdef"
-#ifdef SWIG
-#define STC_USE_DND 1
-#else
-#if wxUSE_DRAG_AND_DROP
-#define STC_USE_DND 1
-#endif
-#endif
-
-//----------------------------------------------------------------------
-
-// Should a wxPopupWindow be used for the call tips and autocomplete windows?
-#ifndef wxSTC_USE_POPUP
-#define wxSTC_USE_POPUP 1
-#endif
-
-//----------------------------------------------------------------------
-// BEGIN generated section. The following code is automatically generated
-// by gen_iface.py. Do not edit this file. Edit stc.h.in instead
-// and regenerate
-
-#define wxSTC_INVALID_POSITION -1
-
-// Define start of Scintilla messages to be greater than all Windows edit (EM_*) messages
-// as many EM_ messages can be used although that use is deprecated.
-#define wxSTC_START 2000
-#define wxSTC_OPTIONAL_START 3000
-#define wxSTC_LEXER_START 4000
-#define wxSTC_WS_INVISIBLE 0
-#define wxSTC_WS_VISIBLEALWAYS 1
-#define wxSTC_WS_VISIBLEAFTERINDENT 2
-#define wxSTC_EOL_CRLF 0
-#define wxSTC_EOL_CR 1
-#define wxSTC_EOL_LF 2
-
-// The SC_CP_UTF8 value can be used to enter Unicode mode.
-// This is the same value as CP_UTF8 in Windows
-#define wxSTC_CP_UTF8 65001
-
-// The SC_CP_DBCS value can be used to indicate a DBCS mode for GTK+.
-#define wxSTC_CP_DBCS 1
-#define wxSTC_MARKER_MAX 31
-#define wxSTC_MARK_CIRCLE 0
-#define wxSTC_MARK_ROUNDRECT 1
-#define wxSTC_MARK_ARROW 2
-#define wxSTC_MARK_SMALLRECT 3
-#define wxSTC_MARK_SHORTARROW 4
-#define wxSTC_MARK_EMPTY 5
-#define wxSTC_MARK_ARROWDOWN 6
-#define wxSTC_MARK_MINUS 7
-#define wxSTC_MARK_PLUS 8
-
-// Shapes used for outlining column.
-#define wxSTC_MARK_VLINE 9
-#define wxSTC_MARK_LCORNER 10
-#define wxSTC_MARK_TCORNER 11
-#define wxSTC_MARK_BOXPLUS 12
-#define wxSTC_MARK_BOXPLUSCONNECTED 13
-#define wxSTC_MARK_BOXMINUS 14
-#define wxSTC_MARK_BOXMINUSCONNECTED 15
-#define wxSTC_MARK_LCORNERCURVE 16
-#define wxSTC_MARK_TCORNERCURVE 17
-#define wxSTC_MARK_CIRCLEPLUS 18
-#define wxSTC_MARK_CIRCLEPLUSCONNECTED 19
-#define wxSTC_MARK_CIRCLEMINUS 20
-#define wxSTC_MARK_CIRCLEMINUSCONNECTED 21
-
-// Invisible mark that only sets the line background color.
-#define wxSTC_MARK_BACKGROUND 22
-#define wxSTC_MARK_DOTDOTDOT 23
-#define wxSTC_MARK_ARROWS 24
-#define wxSTC_MARK_PIXMAP 25
-#define wxSTC_MARK_FULLRECT 26
-#define wxSTC_MARK_CHARACTER 10000
-
-// Markers used for outlining column.
-#define wxSTC_MARKNUM_FOLDEREND 25
-#define wxSTC_MARKNUM_FOLDEROPENMID 26
-#define wxSTC_MARKNUM_FOLDERMIDTAIL 27
-#define wxSTC_MARKNUM_FOLDERTAIL 28
-#define wxSTC_MARKNUM_FOLDERSUB 29
-#define wxSTC_MARKNUM_FOLDER 30
-#define wxSTC_MARKNUM_FOLDEROPEN 31
-#define wxSTC_MASK_FOLDERS 0xFE000000
-#define wxSTC_MARGIN_SYMBOL 0
-#define wxSTC_MARGIN_NUMBER 1
-#define wxSTC_MARGIN_BACK 2
-#define wxSTC_MARGIN_FORE 3
-
-// Styles in range 32..38 are predefined for parts of the UI and are not used as normal styles.
-// Style 39 is for future use.
-#define wxSTC_STYLE_DEFAULT 32
-#define wxSTC_STYLE_LINENUMBER 33
-#define wxSTC_STYLE_BRACELIGHT 34
-#define wxSTC_STYLE_BRACEBAD 35
-#define wxSTC_STYLE_CONTROLCHAR 36
-#define wxSTC_STYLE_INDENTGUIDE 37
-#define wxSTC_STYLE_CALLTIP 38
-#define wxSTC_STYLE_LASTPREDEFINED 39
-#define wxSTC_STYLE_MAX 127
-
-// Character set identifiers are used in StyleSetCharacterSet.
-// The values are the same as the Windows *_CHARSET values.
-#define wxSTC_CHARSET_ANSI 0
-#define wxSTC_CHARSET_DEFAULT 1
-#define wxSTC_CHARSET_BALTIC 186
-#define wxSTC_CHARSET_CHINESEBIG5 136
-#define wxSTC_CHARSET_EASTEUROPE 238
-#define wxSTC_CHARSET_GB2312 134
-#define wxSTC_CHARSET_GREEK 161
-#define wxSTC_CHARSET_HANGUL 129
-#define wxSTC_CHARSET_MAC 77
-#define wxSTC_CHARSET_OEM 255
-#define wxSTC_CHARSET_RUSSIAN 204
-#define wxSTC_CHARSET_CYRILLIC 1251
-#define wxSTC_CHARSET_SHIFTJIS 128
-#define wxSTC_CHARSET_SYMBOL 2
-#define wxSTC_CHARSET_TURKISH 162
-#define wxSTC_CHARSET_JOHAB 130
-#define wxSTC_CHARSET_HEBREW 177
-#define wxSTC_CHARSET_ARABIC 178
-#define wxSTC_CHARSET_VIETNAMESE 163
-#define wxSTC_CHARSET_THAI 222
-#define wxSTC_CHARSET_8859_15 1000
-#define wxSTC_CASE_MIXED 0
-#define wxSTC_CASE_UPPER 1
-#define wxSTC_CASE_LOWER 2
-#define wxSTC_INDIC_MAX 7
-#define wxSTC_INDIC_PLAIN 0
-#define wxSTC_INDIC_SQUIGGLE 1
-#define wxSTC_INDIC_TT 2
-#define wxSTC_INDIC_DIAGONAL 3
-#define wxSTC_INDIC_STRIKE 4
-#define wxSTC_INDIC_HIDDEN 5
-#define wxSTC_INDIC_BOX 6
-#define wxSTC_INDIC_ROUNDBOX 7
-#define wxSTC_INDIC0_MASK 0x20
-#define wxSTC_INDIC1_MASK 0x40
-#define wxSTC_INDIC2_MASK 0x80
-#define wxSTC_INDICS_MASK 0xE0
-
-// PrintColourMode - use same colours as screen.
-#define wxSTC_PRINT_NORMAL 0
-
-// PrintColourMode - invert the light value of each style for printing.
-#define wxSTC_PRINT_INVERTLIGHT 1
-
-// PrintColourMode - force black text on white background for printing.
-#define wxSTC_PRINT_BLACKONWHITE 2
-
-// PrintColourMode - text stays coloured, but all background is forced to be white for printing.
-#define wxSTC_PRINT_COLOURONWHITE 3
-
-// PrintColourMode - only the default-background is forced to be white for printing.
-#define wxSTC_PRINT_COLOURONWHITEDEFAULTBG 4
-#define wxSTC_FIND_WHOLEWORD 2
-#define wxSTC_FIND_MATCHCASE 4
-#define wxSTC_FIND_WORDSTART 0x00100000
-#define wxSTC_FIND_REGEXP 0x00200000
-#define wxSTC_FIND_POSIX 0x00400000
-#define wxSTC_FOLDLEVELBASE 0x400
-#define wxSTC_FOLDLEVELWHITEFLAG 0x1000
-#define wxSTC_FOLDLEVELHEADERFLAG 0x2000
-#define wxSTC_FOLDLEVELBOXHEADERFLAG 0x4000
-#define wxSTC_FOLDLEVELBOXFOOTERFLAG 0x8000
-#define wxSTC_FOLDLEVELCONTRACTED 0x10000
-#define wxSTC_FOLDLEVELUNINDENT 0x20000
-#define wxSTC_FOLDLEVELNUMBERMASK 0x0FFF
-#define wxSTC_FOLDFLAG_LINEBEFORE_EXPANDED 0x0002
-#define wxSTC_FOLDFLAG_LINEBEFORE_CONTRACTED 0x0004
-#define wxSTC_FOLDFLAG_LINEAFTER_EXPANDED 0x0008
-#define wxSTC_FOLDFLAG_LINEAFTER_CONTRACTED 0x0010
-#define wxSTC_FOLDFLAG_LEVELNUMBERS 0x0040
-#define wxSTC_FOLDFLAG_BOX 0x0001
-#define wxSTC_TIME_FOREVER 10000000
-#define wxSTC_WRAP_NONE 0
-#define wxSTC_WRAP_WORD 1
-#define wxSTC_WRAP_CHAR 2
-#define wxSTC_WRAPVISUALFLAG_NONE 0x0000
-#define wxSTC_WRAPVISUALFLAG_END 0x0001
-#define wxSTC_WRAPVISUALFLAG_START 0x0002
-#define wxSTC_WRAPVISUALFLAGLOC_DEFAULT 0x0000
-#define wxSTC_WRAPVISUALFLAGLOC_END_BY_TEXT 0x0001
-#define wxSTC_WRAPVISUALFLAGLOC_START_BY_TEXT 0x0002
-#define wxSTC_CACHE_NONE 0
-#define wxSTC_CACHE_CARET 1
-#define wxSTC_CACHE_PAGE 2
-#define wxSTC_CACHE_DOCUMENT 3
-#define wxSTC_EDGE_NONE 0
-#define wxSTC_EDGE_LINE 1
-#define wxSTC_EDGE_BACKGROUND 2
-#define wxSTC_CURSORNORMAL -1
-#define wxSTC_CURSORWAIT 4
-
-// Constants for use with SetVisiblePolicy, similar to SetCaretPolicy.
-#define wxSTC_VISIBLE_SLOP 0x01
-#define wxSTC_VISIBLE_STRICT 0x04
-
-// Caret policy, used by SetXCaretPolicy and SetYCaretPolicy.
-// If CARET_SLOP is set, we can define a slop value: caretSlop.
-// This value defines an unwanted zone (UZ) where the caret is... unwanted.
-// This zone is defined as a number of pixels near the vertical margins,
-// and as a number of lines near the horizontal margins.
-// By keeping the caret away from the edges, it is seen within its context,
-// so it is likely that the identifier that the caret is on can be completely seen,
-// and that the current line is seen with some of the lines following it which are
-// often dependent on that line.
-#define wxSTC_CARET_SLOP 0x01
-
-// If CARET_STRICT is set, the policy is enforced... strictly.
-// The caret is centred on the display if slop is not set,
-// and cannot go in the UZ if slop is set.
-#define wxSTC_CARET_STRICT 0x04
-
-// If CARET_JUMPS is set, the display is moved more energetically
-// so the caret can move in the same direction longer before the policy is applied again.
-#define wxSTC_CARET_JUMPS 0x10
-
-// If CARET_EVEN is not set, instead of having symmetrical UZs,
-// the left and bottom UZs are extended up to right and top UZs respectively.
-// This way, we favour the displaying of useful information: the begining of lines,
-// where most code reside, and the lines after the caret, eg. the body of a function.
-#define wxSTC_CARET_EVEN 0x08
-
-// Selection modes
-#define wxSTC_SEL_STREAM 0
-#define wxSTC_SEL_RECTANGLE 1
-#define wxSTC_SEL_LINES 2
-#define wxSTC_ALPHA_TRANSPARENT 0
-#define wxSTC_ALPHA_OPAQUE 255
-#define wxSTC_ALPHA_NOALPHA 256
-
-// Maximum value of keywordSet parameter of SetKeyWords.
-#define wxSTC_KEYWORDSET_MAX 8
-
-// Notifications
-// Type of modification and the action which caused the modification.
-// These are defined as a bit mask to make it easy to specify which notifications are wanted.
-// One bit is set from each of SC_MOD_* and SC_PERFORMED_*.
-#define wxSTC_MOD_INSERTTEXT 0x1
-#define wxSTC_MOD_DELETETEXT 0x2
-#define wxSTC_MOD_CHANGESTYLE 0x4
-#define wxSTC_MOD_CHANGEFOLD 0x8
-#define wxSTC_PERFORMED_USER 0x10
-#define wxSTC_PERFORMED_UNDO 0x20
-#define wxSTC_PERFORMED_REDO 0x40
-#define wxSTC_MULTISTEPUNDOREDO 0x80
-#define wxSTC_LASTSTEPINUNDOREDO 0x100
-#define wxSTC_MOD_CHANGEMARKER 0x200
-#define wxSTC_MOD_BEFOREINSERT 0x400
-#define wxSTC_MOD_BEFOREDELETE 0x800
-#define wxSTC_MULTILINEUNDOREDO 0x1000
-#define wxSTC_MODEVENTMASKALL 0x1FFF
-
-// Symbolic key codes and modifier flags.
-// ASCII and other printable characters below 256.
-// Extended keys above 300.
-#define wxSTC_KEY_DOWN 300
-#define wxSTC_KEY_UP 301
-#define wxSTC_KEY_LEFT 302
-#define wxSTC_KEY_RIGHT 303
-#define wxSTC_KEY_HOME 304
-#define wxSTC_KEY_END 305
-#define wxSTC_KEY_PRIOR 306
-#define wxSTC_KEY_NEXT 307
-#define wxSTC_KEY_DELETE 308
-#define wxSTC_KEY_INSERT 309
-#define wxSTC_KEY_ESCAPE 7
-#define wxSTC_KEY_BACK 8
-#define wxSTC_KEY_TAB 9
-#define wxSTC_KEY_RETURN 13
-#define wxSTC_KEY_ADD 310
-#define wxSTC_KEY_SUBTRACT 311
-#define wxSTC_KEY_DIVIDE 312
-#define wxSTC_SCMOD_NORM 0
-#define wxSTC_SCMOD_SHIFT 1
-#define wxSTC_SCMOD_CTRL 2
-#define wxSTC_SCMOD_ALT 4
-
-// For SciLexer.h
-#define wxSTC_LEX_CONTAINER 0
-#define wxSTC_LEX_NULL 1
-#define wxSTC_LEX_PYTHON 2
-#define wxSTC_LEX_CPP 3
-#define wxSTC_LEX_HTML 4
-#define wxSTC_LEX_XML 5
-#define wxSTC_LEX_PERL 6
-#define wxSTC_LEX_SQL 7
-#define wxSTC_LEX_VB 8
-#define wxSTC_LEX_PROPERTIES 9
-#define wxSTC_LEX_ERRORLIST 10
-#define wxSTC_LEX_MAKEFILE 11
-#define wxSTC_LEX_BATCH 12
-#define wxSTC_LEX_XCODE 13
-#define wxSTC_LEX_LATEX 14
-#define wxSTC_LEX_LUA 15
-#define wxSTC_LEX_DIFF 16
-#define wxSTC_LEX_CONF 17
-#define wxSTC_LEX_PASCAL 18
-#define wxSTC_LEX_AVE 19
-#define wxSTC_LEX_ADA 20
-#define wxSTC_LEX_LISP 21
-#define wxSTC_LEX_RUBY 22
-#define wxSTC_LEX_EIFFEL 23
-#define wxSTC_LEX_EIFFELKW 24
-#define wxSTC_LEX_TCL 25
-#define wxSTC_LEX_NNCRONTAB 26
-#define wxSTC_LEX_BULLANT 27
-#define wxSTC_LEX_VBSCRIPT 28
-#define wxSTC_LEX_BAAN 31
-#define wxSTC_LEX_MATLAB 32
-#define wxSTC_LEX_SCRIPTOL 33
-#define wxSTC_LEX_ASM 34
-#define wxSTC_LEX_CPPNOCASE 35
-#define wxSTC_LEX_FORTRAN 36
-#define wxSTC_LEX_F77 37
-#define wxSTC_LEX_CSS 38
-#define wxSTC_LEX_POV 39
-#define wxSTC_LEX_LOUT 40
-#define wxSTC_LEX_ESCRIPT 41
-#define wxSTC_LEX_PS 42
-#define wxSTC_LEX_NSIS 43
-#define wxSTC_LEX_MMIXAL 44
-#define wxSTC_LEX_CLW 45
-#define wxSTC_LEX_CLWNOCASE 46
-#define wxSTC_LEX_LOT 47
-#define wxSTC_LEX_YAML 48
-#define wxSTC_LEX_TEX 49
-#define wxSTC_LEX_METAPOST 50
-#define wxSTC_LEX_POWERBASIC 51
-#define wxSTC_LEX_FORTH 52
-#define wxSTC_LEX_ERLANG 53
-#define wxSTC_LEX_OCTAVE 54
-#define wxSTC_LEX_MSSQL 55
-#define wxSTC_LEX_VERILOG 56
-#define wxSTC_LEX_KIX 57
-#define wxSTC_LEX_GUI4CLI 58
-#define wxSTC_LEX_SPECMAN 59
-#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
-#define wxSTC_LEX_CAML 65
-#define wxSTC_LEX_BLITZBASIC 66
-#define wxSTC_LEX_PUREBASIC 67
-#define wxSTC_LEX_HASKELL 68
-#define wxSTC_LEX_PHPSCRIPT 69
-#define wxSTC_LEX_TADS3 70
-#define wxSTC_LEX_REBOL 71
-#define wxSTC_LEX_SMALLTALK 72
-#define wxSTC_LEX_FLAGSHIP 73
-#define wxSTC_LEX_CSOUND 74
-#define wxSTC_LEX_FREEBASIC 75
-#define wxSTC_LEX_INNOSETUP 76
-#define wxSTC_LEX_OPAL 77
-#define wxSTC_LEX_SPICE 78
-
-// When a lexer specifies its language as SCLEX_AUTOMATIC it receives a
-// value assigned in sequence from SCLEX_AUTOMATIC+1.
-#define wxSTC_LEX_AUTOMATIC 1000
-
-// Lexical states for SCLEX_PYTHON
-#define wxSTC_P_DEFAULT 0
-#define wxSTC_P_COMMENTLINE 1
-#define wxSTC_P_NUMBER 2
-#define wxSTC_P_STRING 3
-#define wxSTC_P_CHARACTER 4
-#define wxSTC_P_WORD 5
-#define wxSTC_P_TRIPLE 6
-#define wxSTC_P_TRIPLEDOUBLE 7
-#define wxSTC_P_CLASSNAME 8
-#define wxSTC_P_DEFNAME 9
-#define wxSTC_P_OPERATOR 10
-#define wxSTC_P_IDENTIFIER 11
-#define wxSTC_P_COMMENTBLOCK 12
-#define wxSTC_P_STRINGEOL 13
-#define wxSTC_P_WORD2 14
-#define wxSTC_P_DECORATOR 15
-
-// Lexical states for SCLEX_CPP
-#define wxSTC_C_DEFAULT 0
-#define wxSTC_C_COMMENT 1
-#define wxSTC_C_COMMENTLINE 2
-#define wxSTC_C_COMMENTDOC 3
-#define wxSTC_C_NUMBER 4
-#define wxSTC_C_WORD 5
-#define wxSTC_C_STRING 6
-#define wxSTC_C_CHARACTER 7
-#define wxSTC_C_UUID 8
-#define wxSTC_C_PREPROCESSOR 9
-#define wxSTC_C_OPERATOR 10
-#define wxSTC_C_IDENTIFIER 11
-#define wxSTC_C_STRINGEOL 12
-#define wxSTC_C_VERBATIM 13
-#define wxSTC_C_REGEX 14
-#define wxSTC_C_COMMENTLINEDOC 15
-#define wxSTC_C_WORD2 16
-#define wxSTC_C_COMMENTDOCKEYWORD 17
-#define wxSTC_C_COMMENTDOCKEYWORDERROR 18
-#define wxSTC_C_GLOBALCLASS 19
-
-// Lexical states for SCLEX_TCL
-#define wxSTC_TCL_DEFAULT 0
-#define wxSTC_TCL_COMMENT 1
-#define wxSTC_TCL_COMMENTLINE 2
-#define wxSTC_TCL_NUMBER 3
-#define wxSTC_TCL_WORD_IN_QUOTE 4
-#define wxSTC_TCL_IN_QUOTE 5
-#define wxSTC_TCL_OPERATOR 6
-#define wxSTC_TCL_IDENTIFIER 7
-#define wxSTC_TCL_SUBSTITUTION 8
-#define wxSTC_TCL_SUB_BRACE 9
-#define wxSTC_TCL_MODIFIER 10
-#define wxSTC_TCL_EXPAND 11
-#define wxSTC_TCL_WORD 12
-#define wxSTC_TCL_WORD2 13
-#define wxSTC_TCL_WORD3 14
-#define wxSTC_TCL_WORD4 15
-#define wxSTC_TCL_WORD5 16
-#define wxSTC_TCL_WORD6 17
-#define wxSTC_TCL_WORD7 18
-#define wxSTC_TCL_WORD8 19
-#define wxSTC_TCL_COMMENT_BOX 20
-#define wxSTC_TCL_BLOCK_COMMENT 21
-
-// Lexical states for SCLEX_HTML, SCLEX_XML
-#define wxSTC_H_DEFAULT 0
-#define wxSTC_H_TAG 1
-#define wxSTC_H_TAGUNKNOWN 2
-#define wxSTC_H_ATTRIBUTE 3
-#define wxSTC_H_ATTRIBUTEUNKNOWN 4
-#define wxSTC_H_NUMBER 5
-#define wxSTC_H_DOUBLESTRING 6
-#define wxSTC_H_SINGLESTRING 7
-#define wxSTC_H_OTHER 8
-#define wxSTC_H_COMMENT 9
-#define wxSTC_H_ENTITY 10
-
-// XML and ASP
-#define wxSTC_H_TAGEND 11
-#define wxSTC_H_XMLSTART 12
-#define wxSTC_H_XMLEND 13
-#define wxSTC_H_SCRIPT 14
-#define wxSTC_H_ASP 15
-#define wxSTC_H_ASPAT 16
-#define wxSTC_H_CDATA 17
-#define wxSTC_H_QUESTION 18
-
-// More HTML
-#define wxSTC_H_VALUE 19
-
-// X-Code
-#define wxSTC_H_XCCOMMENT 20
-
-// SGML
-#define wxSTC_H_SGML_DEFAULT 21
-#define wxSTC_H_SGML_COMMAND 22
-#define wxSTC_H_SGML_1ST_PARAM 23
-#define wxSTC_H_SGML_DOUBLESTRING 24
-#define wxSTC_H_SGML_SIMPLESTRING 25
-#define wxSTC_H_SGML_ERROR 26
-#define wxSTC_H_SGML_SPECIAL 27
-#define wxSTC_H_SGML_ENTITY 28
-#define wxSTC_H_SGML_COMMENT 29
-#define wxSTC_H_SGML_1ST_PARAM_COMMENT 30
-#define wxSTC_H_SGML_BLOCK_DEFAULT 31
-
-// Embedded Javascript
-#define wxSTC_HJ_START 40
-#define wxSTC_HJ_DEFAULT 41
-#define wxSTC_HJ_COMMENT 42
-#define wxSTC_HJ_COMMENTLINE 43
-#define wxSTC_HJ_COMMENTDOC 44
-#define wxSTC_HJ_NUMBER 45
-#define wxSTC_HJ_WORD 46
-#define wxSTC_HJ_KEYWORD 47
-#define wxSTC_HJ_DOUBLESTRING 48
-#define wxSTC_HJ_SINGLESTRING 49
-#define wxSTC_HJ_SYMBOLS 50
-#define wxSTC_HJ_STRINGEOL 51
-#define wxSTC_HJ_REGEX 52
-
-// ASP Javascript
-#define wxSTC_HJA_START 55
-#define wxSTC_HJA_DEFAULT 56
-#define wxSTC_HJA_COMMENT 57
-#define wxSTC_HJA_COMMENTLINE 58
-#define wxSTC_HJA_COMMENTDOC 59
-#define wxSTC_HJA_NUMBER 60
-#define wxSTC_HJA_WORD 61
-#define wxSTC_HJA_KEYWORD 62
-#define wxSTC_HJA_DOUBLESTRING 63
-#define wxSTC_HJA_SINGLESTRING 64
-#define wxSTC_HJA_SYMBOLS 65
-#define wxSTC_HJA_STRINGEOL 66
-#define wxSTC_HJA_REGEX 67
-
-// Embedded VBScript
-#define wxSTC_HB_START 70
-#define wxSTC_HB_DEFAULT 71
-#define wxSTC_HB_COMMENTLINE 72
-#define wxSTC_HB_NUMBER 73
-#define wxSTC_HB_WORD 74
-#define wxSTC_HB_STRING 75
-#define wxSTC_HB_IDENTIFIER 76
-#define wxSTC_HB_STRINGEOL 77
-
-// ASP VBScript
-#define wxSTC_HBA_START 80
-#define wxSTC_HBA_DEFAULT 81
-#define wxSTC_HBA_COMMENTLINE 82
-#define wxSTC_HBA_NUMBER 83
-#define wxSTC_HBA_WORD 84
-#define wxSTC_HBA_STRING 85
-#define wxSTC_HBA_IDENTIFIER 86
-#define wxSTC_HBA_STRINGEOL 87
-
-// Embedded Python
-#define wxSTC_HP_START 90
-#define wxSTC_HP_DEFAULT 91
-#define wxSTC_HP_COMMENTLINE 92
-#define wxSTC_HP_NUMBER 93
-#define wxSTC_HP_STRING 94
-#define wxSTC_HP_CHARACTER 95
-#define wxSTC_HP_WORD 96
-#define wxSTC_HP_TRIPLE 97
-#define wxSTC_HP_TRIPLEDOUBLE 98
-#define wxSTC_HP_CLASSNAME 99
-#define wxSTC_HP_DEFNAME 100
-#define wxSTC_HP_OPERATOR 101
-#define wxSTC_HP_IDENTIFIER 102
-
-// PHP
-#define wxSTC_HPHP_COMPLEX_VARIABLE 104
-
-// ASP Python
-#define wxSTC_HPA_START 105
-#define wxSTC_HPA_DEFAULT 106
-#define wxSTC_HPA_COMMENTLINE 107
-#define wxSTC_HPA_NUMBER 108
-#define wxSTC_HPA_STRING 109
-#define wxSTC_HPA_CHARACTER 110
-#define wxSTC_HPA_WORD 111
-#define wxSTC_HPA_TRIPLE 112
-#define wxSTC_HPA_TRIPLEDOUBLE 113
-#define wxSTC_HPA_CLASSNAME 114
-#define wxSTC_HPA_DEFNAME 115
-#define wxSTC_HPA_OPERATOR 116
-#define wxSTC_HPA_IDENTIFIER 117
-
-// PHP
-#define wxSTC_HPHP_DEFAULT 118
-#define wxSTC_HPHP_HSTRING 119
-#define wxSTC_HPHP_SIMPLESTRING 120
-#define wxSTC_HPHP_WORD 121
-#define wxSTC_HPHP_NUMBER 122
-#define wxSTC_HPHP_VARIABLE 123
-#define wxSTC_HPHP_COMMENT 124
-#define wxSTC_HPHP_COMMENTLINE 125
-#define wxSTC_HPHP_HSTRING_VARIABLE 126
-#define wxSTC_HPHP_OPERATOR 127
-
-// Lexical states for SCLEX_PERL
-#define wxSTC_PL_DEFAULT 0
-#define wxSTC_PL_ERROR 1
-#define wxSTC_PL_COMMENTLINE 2
-#define wxSTC_PL_POD 3
-#define wxSTC_PL_NUMBER 4
-#define wxSTC_PL_WORD 5
-#define wxSTC_PL_STRING 6
-#define wxSTC_PL_CHARACTER 7
-#define wxSTC_PL_PUNCTUATION 8
-#define wxSTC_PL_PREPROCESSOR 9
-#define wxSTC_PL_OPERATOR 10
-#define wxSTC_PL_IDENTIFIER 11
-#define wxSTC_PL_SCALAR 12
-#define wxSTC_PL_ARRAY 13
-#define wxSTC_PL_HASH 14
-#define wxSTC_PL_SYMBOLTABLE 15
-#define wxSTC_PL_VARIABLE_INDEXER 16
-#define wxSTC_PL_REGEX 17
-#define wxSTC_PL_REGSUBST 18
-#define wxSTC_PL_LONGQUOTE 19
-#define wxSTC_PL_BACKTICKS 20
-#define wxSTC_PL_DATASECTION 21
-#define wxSTC_PL_HERE_DELIM 22
-#define wxSTC_PL_HERE_Q 23
-#define wxSTC_PL_HERE_QQ 24
-#define wxSTC_PL_HERE_QX 25
-#define wxSTC_PL_STRING_Q 26
-#define wxSTC_PL_STRING_QQ 27
-#define wxSTC_PL_STRING_QX 28
-#define wxSTC_PL_STRING_QR 29
-#define wxSTC_PL_STRING_QW 30
-#define wxSTC_PL_POD_VERB 31
-
-// Lexical states for SCLEX_RUBY
-#define wxSTC_RB_DEFAULT 0
-#define wxSTC_RB_ERROR 1
-#define wxSTC_RB_COMMENTLINE 2
-#define wxSTC_RB_POD 3
-#define wxSTC_RB_NUMBER 4
-#define wxSTC_RB_WORD 5
-#define wxSTC_RB_STRING 6
-#define wxSTC_RB_CHARACTER 7
-#define wxSTC_RB_CLASSNAME 8
-#define wxSTC_RB_DEFNAME 9
-#define wxSTC_RB_OPERATOR 10
-#define wxSTC_RB_IDENTIFIER 11
-#define wxSTC_RB_REGEX 12
-#define wxSTC_RB_GLOBAL 13
-#define wxSTC_RB_SYMBOL 14
-#define wxSTC_RB_MODULE_NAME 15
-#define wxSTC_RB_INSTANCE_VAR 16
-#define wxSTC_RB_CLASS_VAR 17
-#define wxSTC_RB_BACKTICKS 18
-#define wxSTC_RB_DATASECTION 19
-#define wxSTC_RB_HERE_DELIM 20
-#define wxSTC_RB_HERE_Q 21
-#define wxSTC_RB_HERE_QQ 22
-#define wxSTC_RB_HERE_QX 23
-#define wxSTC_RB_STRING_Q 24
-#define wxSTC_RB_STRING_QQ 25
-#define wxSTC_RB_STRING_QX 26
-#define wxSTC_RB_STRING_QR 27
-#define wxSTC_RB_STRING_QW 28
-#define wxSTC_RB_WORD_DEMOTED 29
-#define wxSTC_RB_STDIN 30
-#define wxSTC_RB_STDOUT 31
-#define wxSTC_RB_STDERR 40
-#define wxSTC_RB_UPPER_BOUND 41
-
-// Lexical states for SCLEX_VB, SCLEX_VBSCRIPT, SCLEX_POWERBASIC
-#define wxSTC_B_DEFAULT 0
-#define wxSTC_B_COMMENT 1
-#define wxSTC_B_NUMBER 2
-#define wxSTC_B_KEYWORD 3
-#define wxSTC_B_STRING 4
-#define wxSTC_B_PREPROCESSOR 5
-#define wxSTC_B_OPERATOR 6
-#define wxSTC_B_IDENTIFIER 7
-#define wxSTC_B_DATE 8
-#define wxSTC_B_STRINGEOL 9
-#define wxSTC_B_KEYWORD2 10
-#define wxSTC_B_KEYWORD3 11
-#define wxSTC_B_KEYWORD4 12
-#define wxSTC_B_CONSTANT 13
-#define wxSTC_B_ASM 14
-#define wxSTC_B_LABEL 15
-#define wxSTC_B_ERROR 16
-#define wxSTC_B_HEXNUMBER 17
-#define wxSTC_B_BINNUMBER 18
-
-// Lexical states for SCLEX_PROPERTIES
-#define wxSTC_PROPS_DEFAULT 0
-#define wxSTC_PROPS_COMMENT 1
-#define wxSTC_PROPS_SECTION 2
-#define wxSTC_PROPS_ASSIGNMENT 3
-#define wxSTC_PROPS_DEFVAL 4
-#define wxSTC_PROPS_KEY 5
-
-// Lexical states for SCLEX_LATEX
-#define wxSTC_L_DEFAULT 0
-#define wxSTC_L_COMMAND 1
-#define wxSTC_L_TAG 2
-#define wxSTC_L_MATH 3
-#define wxSTC_L_COMMENT 4
-
-// Lexical states for SCLEX_LUA
-#define wxSTC_LUA_DEFAULT 0
-#define wxSTC_LUA_COMMENT 1
-#define wxSTC_LUA_COMMENTLINE 2
-#define wxSTC_LUA_COMMENTDOC 3
-#define wxSTC_LUA_NUMBER 4
-#define wxSTC_LUA_WORD 5
-#define wxSTC_LUA_STRING 6
-#define wxSTC_LUA_CHARACTER 7
-#define wxSTC_LUA_LITERALSTRING 8
-#define wxSTC_LUA_PREPROCESSOR 9
-#define wxSTC_LUA_OPERATOR 10
-#define wxSTC_LUA_IDENTIFIER 11
-#define wxSTC_LUA_STRINGEOL 12
-#define wxSTC_LUA_WORD2 13
-#define wxSTC_LUA_WORD3 14
-#define wxSTC_LUA_WORD4 15
-#define wxSTC_LUA_WORD5 16
-#define wxSTC_LUA_WORD6 17
-#define wxSTC_LUA_WORD7 18
-#define wxSTC_LUA_WORD8 19
-
-// Lexical states for SCLEX_ERRORLIST
-#define wxSTC_ERR_DEFAULT 0
-#define wxSTC_ERR_PYTHON 1
-#define wxSTC_ERR_GCC 2
-#define wxSTC_ERR_MS 3
-#define wxSTC_ERR_CMD 4
-#define wxSTC_ERR_BORLAND 5
-#define wxSTC_ERR_PERL 6
-#define wxSTC_ERR_NET 7
-#define wxSTC_ERR_LUA 8
-#define wxSTC_ERR_CTAG 9
-#define wxSTC_ERR_DIFF_CHANGED 10
-#define wxSTC_ERR_DIFF_ADDITION 11
-#define wxSTC_ERR_DIFF_DELETION 12
-#define wxSTC_ERR_DIFF_MESSAGE 13
-#define wxSTC_ERR_PHP 14
-#define wxSTC_ERR_ELF 15
-#define wxSTC_ERR_IFC 16
-#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_BAT_COMMENT 1
-#define wxSTC_BAT_WORD 2
-#define wxSTC_BAT_LABEL 3
-#define wxSTC_BAT_HIDE 4
-#define wxSTC_BAT_COMMAND 5
-#define wxSTC_BAT_IDENTIFIER 6
-#define wxSTC_BAT_OPERATOR 7
-
-// Lexical states for SCLEX_MAKEFILE
-#define wxSTC_MAKE_DEFAULT 0
-#define wxSTC_MAKE_COMMENT 1
-#define wxSTC_MAKE_PREPROCESSOR 2
-#define wxSTC_MAKE_IDENTIFIER 3
-#define wxSTC_MAKE_OPERATOR 4
-#define wxSTC_MAKE_TARGET 5
-#define wxSTC_MAKE_IDEOL 9
-
-// Lexical states for SCLEX_DIFF
-#define wxSTC_DIFF_DEFAULT 0
-#define wxSTC_DIFF_COMMENT 1
-#define wxSTC_DIFF_COMMAND 2
-#define wxSTC_DIFF_HEADER 3
-#define wxSTC_DIFF_POSITION 4
-#define wxSTC_DIFF_DELETED 5
-#define wxSTC_DIFF_ADDED 6
-
-// Lexical states for SCLEX_CONF (Apache Configuration Files Lexer)
-#define wxSTC_CONF_DEFAULT 0
-#define wxSTC_CONF_COMMENT 1
-#define wxSTC_CONF_NUMBER 2
-#define wxSTC_CONF_IDENTIFIER 3
-#define wxSTC_CONF_EXTENSION 4
-#define wxSTC_CONF_PARAMETER 5
-#define wxSTC_CONF_STRING 6
-#define wxSTC_CONF_OPERATOR 7
-#define wxSTC_CONF_IP 8
-#define wxSTC_CONF_DIRECTIVE 9
-
-// Lexical states for SCLEX_AVE, Avenue
-#define wxSTC_AVE_DEFAULT 0
-#define wxSTC_AVE_COMMENT 1
-#define wxSTC_AVE_NUMBER 2
-#define wxSTC_AVE_WORD 3
-#define wxSTC_AVE_STRING 6
-#define wxSTC_AVE_ENUM 7
-#define wxSTC_AVE_STRINGEOL 8
-#define wxSTC_AVE_IDENTIFIER 9
-#define wxSTC_AVE_OPERATOR 10
-#define wxSTC_AVE_WORD1 11
-#define wxSTC_AVE_WORD2 12
-#define wxSTC_AVE_WORD3 13
-#define wxSTC_AVE_WORD4 14
-#define wxSTC_AVE_WORD5 15
-#define wxSTC_AVE_WORD6 16
-
-// Lexical states for SCLEX_ADA
-#define wxSTC_ADA_DEFAULT 0
-#define wxSTC_ADA_WORD 1
-#define wxSTC_ADA_IDENTIFIER 2
-#define wxSTC_ADA_NUMBER 3
-#define wxSTC_ADA_DELIMITER 4
-#define wxSTC_ADA_CHARACTER 5
-#define wxSTC_ADA_CHARACTEREOL 6
-#define wxSTC_ADA_STRING 7
-#define wxSTC_ADA_STRINGEOL 8
-#define wxSTC_ADA_LABEL 9
-#define wxSTC_ADA_COMMENTLINE 10
-#define wxSTC_ADA_ILLEGAL 11
-
-// Lexical states for SCLEX_BAAN
-#define wxSTC_BAAN_DEFAULT 0
-#define wxSTC_BAAN_COMMENT 1
-#define wxSTC_BAAN_COMMENTDOC 2
-#define wxSTC_BAAN_NUMBER 3
-#define wxSTC_BAAN_WORD 4
-#define wxSTC_BAAN_STRING 5
-#define wxSTC_BAAN_PREPROCESSOR 6
-#define wxSTC_BAAN_OPERATOR 7
-#define wxSTC_BAAN_IDENTIFIER 8
-#define wxSTC_BAAN_STRINGEOL 9
-#define wxSTC_BAAN_WORD2 10
-
-// Lexical states for SCLEX_LISP
-#define wxSTC_LISP_DEFAULT 0
-#define wxSTC_LISP_COMMENT 1
-#define wxSTC_LISP_NUMBER 2
-#define wxSTC_LISP_KEYWORD 3
-#define wxSTC_LISP_KEYWORD_KW 4
-#define wxSTC_LISP_SYMBOL 5
-#define wxSTC_LISP_STRING 6
-#define wxSTC_LISP_STRINGEOL 8
-#define wxSTC_LISP_IDENTIFIER 9
-#define wxSTC_LISP_OPERATOR 10
-#define wxSTC_LISP_SPECIAL 11
-#define wxSTC_LISP_MULTI_COMMENT 12
-
-// Lexical states for SCLEX_EIFFEL and SCLEX_EIFFELKW
-#define wxSTC_EIFFEL_DEFAULT 0
-#define wxSTC_EIFFEL_COMMENTLINE 1
-#define wxSTC_EIFFEL_NUMBER 2
-#define wxSTC_EIFFEL_WORD 3
-#define wxSTC_EIFFEL_STRING 4
-#define wxSTC_EIFFEL_CHARACTER 5
-#define wxSTC_EIFFEL_OPERATOR 6
-#define wxSTC_EIFFEL_IDENTIFIER 7
-#define wxSTC_EIFFEL_STRINGEOL 8
-
-// Lexical states for SCLEX_NNCRONTAB (nnCron crontab Lexer)
-#define wxSTC_NNCRONTAB_DEFAULT 0
-#define wxSTC_NNCRONTAB_COMMENT 1
-#define wxSTC_NNCRONTAB_TASK 2
-#define wxSTC_NNCRONTAB_SECTION 3
-#define wxSTC_NNCRONTAB_KEYWORD 4
-#define wxSTC_NNCRONTAB_MODIFIER 5
-#define wxSTC_NNCRONTAB_ASTERISK 6
-#define wxSTC_NNCRONTAB_NUMBER 7
-#define wxSTC_NNCRONTAB_STRING 8
-#define wxSTC_NNCRONTAB_ENVIRONMENT 9
-#define wxSTC_NNCRONTAB_IDENTIFIER 10
-
-// Lexical states for SCLEX_FORTH (Forth Lexer)
-#define wxSTC_FORTH_DEFAULT 0
-#define wxSTC_FORTH_COMMENT 1
-#define wxSTC_FORTH_COMMENT_ML 2
-#define wxSTC_FORTH_IDENTIFIER 3
-#define wxSTC_FORTH_CONTROL 4
-#define wxSTC_FORTH_KEYWORD 5
-#define wxSTC_FORTH_DEFWORD 6
-#define wxSTC_FORTH_PREWORD1 7
-#define wxSTC_FORTH_PREWORD2 8
-#define wxSTC_FORTH_NUMBER 9
-#define wxSTC_FORTH_STRING 10
-#define wxSTC_FORTH_LOCALE 11
-
-// Lexical states for SCLEX_MATLAB
-#define wxSTC_MATLAB_DEFAULT 0
-#define wxSTC_MATLAB_COMMENT 1
-#define wxSTC_MATLAB_COMMAND 2
-#define wxSTC_MATLAB_NUMBER 3
-#define wxSTC_MATLAB_KEYWORD 4
-
-// single quoted string
-#define wxSTC_MATLAB_STRING 5
-#define wxSTC_MATLAB_OPERATOR 6
-#define wxSTC_MATLAB_IDENTIFIER 7
-#define wxSTC_MATLAB_DOUBLEQUOTESTRING 8
-
-// Lexical states for SCLEX_SCRIPTOL
-#define wxSTC_SCRIPTOL_DEFAULT 0
-#define wxSTC_SCRIPTOL_WHITE 1
-#define wxSTC_SCRIPTOL_COMMENTLINE 2
-#define wxSTC_SCRIPTOL_PERSISTENT 3
-#define wxSTC_SCRIPTOL_CSTYLE 4
-#define wxSTC_SCRIPTOL_COMMENTBLOCK 5
-#define wxSTC_SCRIPTOL_NUMBER 6
-#define wxSTC_SCRIPTOL_STRING 7
-#define wxSTC_SCRIPTOL_CHARACTER 8
-#define wxSTC_SCRIPTOL_STRINGEOL 9
-#define wxSTC_SCRIPTOL_KEYWORD 10
-#define wxSTC_SCRIPTOL_OPERATOR 11
-#define wxSTC_SCRIPTOL_IDENTIFIER 12
-#define wxSTC_SCRIPTOL_TRIPLE 13
-#define wxSTC_SCRIPTOL_CLASSNAME 14
-#define wxSTC_SCRIPTOL_PREPROCESSOR 15
-
-// Lexical states for SCLEX_ASM
-#define wxSTC_ASM_DEFAULT 0
-#define wxSTC_ASM_COMMENT 1
-#define wxSTC_ASM_NUMBER 2
-#define wxSTC_ASM_STRING 3
-#define wxSTC_ASM_OPERATOR 4
-#define wxSTC_ASM_IDENTIFIER 5
-#define wxSTC_ASM_CPUINSTRUCTION 6
-#define wxSTC_ASM_MATHINSTRUCTION 7
-#define wxSTC_ASM_REGISTER 8
-#define wxSTC_ASM_DIRECTIVE 9
-#define wxSTC_ASM_DIRECTIVEOPERAND 10
-#define wxSTC_ASM_COMMENTBLOCK 11
-#define wxSTC_ASM_CHARACTER 12
-#define wxSTC_ASM_STRINGEOL 13
-#define wxSTC_ASM_EXTINSTRUCTION 14
-
-// Lexical states for SCLEX_FORTRAN
-#define wxSTC_F_DEFAULT 0
-#define wxSTC_F_COMMENT 1
-#define wxSTC_F_NUMBER 2
-#define wxSTC_F_STRING1 3
-#define wxSTC_F_STRING2 4
-#define wxSTC_F_STRINGEOL 5
-#define wxSTC_F_OPERATOR 6
-#define wxSTC_F_IDENTIFIER 7
-#define wxSTC_F_WORD 8
-#define wxSTC_F_WORD2 9
-#define wxSTC_F_WORD3 10
-#define wxSTC_F_PREPROCESSOR 11
-#define wxSTC_F_OPERATOR2 12
-#define wxSTC_F_LABEL 13
-#define wxSTC_F_CONTINUATION 14
-
-// Lexical states for SCLEX_CSS
-#define wxSTC_CSS_DEFAULT 0
-#define wxSTC_CSS_TAG 1
-#define wxSTC_CSS_CLASS 2
-#define wxSTC_CSS_PSEUDOCLASS 3
-#define wxSTC_CSS_UNKNOWN_PSEUDOCLASS 4
-#define wxSTC_CSS_OPERATOR 5
-#define wxSTC_CSS_IDENTIFIER 6
-#define wxSTC_CSS_UNKNOWN_IDENTIFIER 7
-#define wxSTC_CSS_VALUE 8
-#define wxSTC_CSS_COMMENT 9
-#define wxSTC_CSS_ID 10
-#define wxSTC_CSS_IMPORTANT 11
-#define wxSTC_CSS_DIRECTIVE 12
-#define wxSTC_CSS_DOUBLESTRING 13
-#define wxSTC_CSS_SINGLESTRING 14
-#define wxSTC_CSS_IDENTIFIER2 15
-#define wxSTC_CSS_ATTRIBUTE 16
-
-// Lexical states for SCLEX_POV
-#define wxSTC_POV_DEFAULT 0
-#define wxSTC_POV_COMMENT 1
-#define wxSTC_POV_COMMENTLINE 2
-#define wxSTC_POV_NUMBER 3
-#define wxSTC_POV_OPERATOR 4
-#define wxSTC_POV_IDENTIFIER 5
-#define wxSTC_POV_STRING 6
-#define wxSTC_POV_STRINGEOL 7
-#define wxSTC_POV_DIRECTIVE 8
-#define wxSTC_POV_BADDIRECTIVE 9
-#define wxSTC_POV_WORD2 10
-#define wxSTC_POV_WORD3 11
-#define wxSTC_POV_WORD4 12
-#define wxSTC_POV_WORD5 13
-#define wxSTC_POV_WORD6 14
-#define wxSTC_POV_WORD7 15
-#define wxSTC_POV_WORD8 16
-
-// Lexical states for SCLEX_LOUT
-#define wxSTC_LOUT_DEFAULT 0
-#define wxSTC_LOUT_COMMENT 1
-#define wxSTC_LOUT_NUMBER 2
-#define wxSTC_LOUT_WORD 3
-#define wxSTC_LOUT_WORD2 4
-#define wxSTC_LOUT_WORD3 5
-#define wxSTC_LOUT_WORD4 6
-#define wxSTC_LOUT_STRING 7
-#define wxSTC_LOUT_OPERATOR 8
-#define wxSTC_LOUT_IDENTIFIER 9
-#define wxSTC_LOUT_STRINGEOL 10
-
-// Lexical states for SCLEX_ESCRIPT
-#define wxSTC_ESCRIPT_DEFAULT 0
-#define wxSTC_ESCRIPT_COMMENT 1
-#define wxSTC_ESCRIPT_COMMENTLINE 2
-#define wxSTC_ESCRIPT_COMMENTDOC 3
-#define wxSTC_ESCRIPT_NUMBER 4
-#define wxSTC_ESCRIPT_WORD 5
-#define wxSTC_ESCRIPT_STRING 6
-#define wxSTC_ESCRIPT_OPERATOR 7
-#define wxSTC_ESCRIPT_IDENTIFIER 8
-#define wxSTC_ESCRIPT_BRACE 9
-#define wxSTC_ESCRIPT_WORD2 10
-#define wxSTC_ESCRIPT_WORD3 11
-
-// Lexical states for SCLEX_PS
-#define wxSTC_PS_DEFAULT 0
-#define wxSTC_PS_COMMENT 1
-#define wxSTC_PS_DSC_COMMENT 2
-#define wxSTC_PS_DSC_VALUE 3
-#define wxSTC_PS_NUMBER 4
-#define wxSTC_PS_NAME 5
-#define wxSTC_PS_KEYWORD 6
-#define wxSTC_PS_LITERAL 7
-#define wxSTC_PS_IMMEVAL 8
-#define wxSTC_PS_PAREN_ARRAY 9
-#define wxSTC_PS_PAREN_DICT 10
-#define wxSTC_PS_PAREN_PROC 11
-#define wxSTC_PS_TEXT 12
-#define wxSTC_PS_HEXSTRING 13
-#define wxSTC_PS_BASE85STRING 14
-#define wxSTC_PS_BADSTRINGCHAR 15
-
-// Lexical states for SCLEX_NSIS
-#define wxSTC_NSIS_DEFAULT 0
-#define wxSTC_NSIS_COMMENT 1
-#define wxSTC_NSIS_STRINGDQ 2
-#define wxSTC_NSIS_STRINGLQ 3
-#define wxSTC_NSIS_STRINGRQ 4
-#define wxSTC_NSIS_FUNCTION 5
-#define wxSTC_NSIS_VARIABLE 6
-#define wxSTC_NSIS_LABEL 7
-#define wxSTC_NSIS_USERDEFINED 8
-#define wxSTC_NSIS_SECTIONDEF 9
-#define wxSTC_NSIS_SUBSECTIONDEF 10
-#define wxSTC_NSIS_IFDEFINEDEF 11
-#define wxSTC_NSIS_MACRODEF 12
-#define wxSTC_NSIS_STRINGVAR 13
-#define wxSTC_NSIS_NUMBER 14
-#define wxSTC_NSIS_SECTIONGROUP 15
-#define wxSTC_NSIS_PAGEEX 16
-#define wxSTC_NSIS_FUNCTIONDEF 17
-#define wxSTC_NSIS_COMMENTBOX 18
-
-// Lexical states for SCLEX_MMIXAL
-#define wxSTC_MMIXAL_LEADWS 0
-#define wxSTC_MMIXAL_COMMENT 1
-#define wxSTC_MMIXAL_LABEL 2
-#define wxSTC_MMIXAL_OPCODE 3
-#define wxSTC_MMIXAL_OPCODE_PRE 4
-#define wxSTC_MMIXAL_OPCODE_VALID 5
-#define wxSTC_MMIXAL_OPCODE_UNKNOWN 6
-#define wxSTC_MMIXAL_OPCODE_POST 7
-#define wxSTC_MMIXAL_OPERANDS 8
-#define wxSTC_MMIXAL_NUMBER 9
-#define wxSTC_MMIXAL_REF 10
-#define wxSTC_MMIXAL_CHAR 11
-#define wxSTC_MMIXAL_STRING 12
-#define wxSTC_MMIXAL_REGISTER 13
-#define wxSTC_MMIXAL_HEX 14
-#define wxSTC_MMIXAL_OPERATOR 15
-#define wxSTC_MMIXAL_SYMBOL 16
-#define wxSTC_MMIXAL_INCLUDE 17
-
-// Lexical states for SCLEX_CLW
-#define wxSTC_CLW_DEFAULT 0
-#define wxSTC_CLW_LABEL 1
-#define wxSTC_CLW_COMMENT 2
-#define wxSTC_CLW_STRING 3
-#define wxSTC_CLW_USER_IDENTIFIER 4
-#define wxSTC_CLW_INTEGER_CONSTANT 5
-#define wxSTC_CLW_REAL_CONSTANT 6
-#define wxSTC_CLW_PICTURE_STRING 7
-#define wxSTC_CLW_KEYWORD 8
-#define wxSTC_CLW_COMPILER_DIRECTIVE 9
-#define wxSTC_CLW_RUNTIME_EXPRESSIONS 10
-#define wxSTC_CLW_BUILTIN_PROCEDURES_FUNCTION 11
-#define wxSTC_CLW_STRUCTURE_DATA_TYPE 12
-#define wxSTC_CLW_ATTRIBUTE 13
-#define wxSTC_CLW_STANDARD_EQUATE 14
-#define wxSTC_CLW_ERROR 15
-#define wxSTC_CLW_DEPRECATED 16
-
-// Lexical states for SCLEX_LOT
-#define wxSTC_LOT_DEFAULT 0
-#define wxSTC_LOT_HEADER 1
-#define wxSTC_LOT_BREAK 2
-#define wxSTC_LOT_SET 3
-#define wxSTC_LOT_PASS 4
-#define wxSTC_LOT_FAIL 5
-#define wxSTC_LOT_ABORT 6
-
-// Lexical states for SCLEX_YAML
-#define wxSTC_YAML_DEFAULT 0
-#define wxSTC_YAML_COMMENT 1
-#define wxSTC_YAML_IDENTIFIER 2
-#define wxSTC_YAML_KEYWORD 3
-#define wxSTC_YAML_NUMBER 4
-#define wxSTC_YAML_REFERENCE 5
-#define wxSTC_YAML_DOCUMENT 6
-#define wxSTC_YAML_TEXT 7
-#define wxSTC_YAML_ERROR 8
-
-// Lexical states for SCLEX_TEX
-#define wxSTC_TEX_DEFAULT 0
-#define wxSTC_TEX_SPECIAL 1
-#define wxSTC_TEX_GROUP 2
-#define wxSTC_TEX_SYMBOL 3
-#define wxSTC_TEX_COMMAND 4
-#define wxSTC_TEX_TEXT 5
-#define wxSTC_METAPOST_DEFAULT 0
-#define wxSTC_METAPOST_SPECIAL 1
-#define wxSTC_METAPOST_GROUP 2
-#define wxSTC_METAPOST_SYMBOL 3
-#define wxSTC_METAPOST_COMMAND 4
-#define wxSTC_METAPOST_TEXT 5
-#define wxSTC_METAPOST_EXTRA 6
-
-// Lexical states for SCLEX_ERLANG
-#define wxSTC_ERLANG_DEFAULT 0
-#define wxSTC_ERLANG_COMMENT 1
-#define wxSTC_ERLANG_VARIABLE 2
-#define wxSTC_ERLANG_NUMBER 3
-#define wxSTC_ERLANG_KEYWORD 4
-#define wxSTC_ERLANG_STRING 5
-#define wxSTC_ERLANG_OPERATOR 6
-#define wxSTC_ERLANG_ATOM 7
-#define wxSTC_ERLANG_FUNCTION_NAME 8
-#define wxSTC_ERLANG_CHARACTER 9
-#define wxSTC_ERLANG_MACRO 10
-#define wxSTC_ERLANG_RECORD 11
-#define wxSTC_ERLANG_SEPARATOR 12
-#define wxSTC_ERLANG_NODE_NAME 13
-#define wxSTC_ERLANG_UNKNOWN 31
-
-// Lexical states for SCLEX_OCTAVE are identical to MatLab
-// Lexical states for SCLEX_MSSQL
-#define wxSTC_MSSQL_DEFAULT 0
-#define wxSTC_MSSQL_COMMENT 1
-#define wxSTC_MSSQL_LINE_COMMENT 2
-#define wxSTC_MSSQL_NUMBER 3
-#define wxSTC_MSSQL_STRING 4
-#define wxSTC_MSSQL_OPERATOR 5
-#define wxSTC_MSSQL_IDENTIFIER 6
-#define wxSTC_MSSQL_VARIABLE 7
-#define wxSTC_MSSQL_COLUMN_NAME 8
-#define wxSTC_MSSQL_STATEMENT 9
-#define wxSTC_MSSQL_DATATYPE 10
-#define wxSTC_MSSQL_SYSTABLE 11
-#define wxSTC_MSSQL_GLOBAL_VARIABLE 12
-#define wxSTC_MSSQL_FUNCTION 13
-#define wxSTC_MSSQL_STORED_PROCEDURE 14
-#define wxSTC_MSSQL_DEFAULT_PREF_DATATYPE 15
-#define wxSTC_MSSQL_COLUMN_NAME_2 16
-
-// Lexical states for SCLEX_VERILOG
-#define wxSTC_V_DEFAULT 0
-#define wxSTC_V_COMMENT 1
-#define wxSTC_V_COMMENTLINE 2
-#define wxSTC_V_COMMENTLINEBANG 3
-#define wxSTC_V_NUMBER 4
-#define wxSTC_V_WORD 5
-#define wxSTC_V_STRING 6
-#define wxSTC_V_WORD2 7
-#define wxSTC_V_WORD3 8
-#define wxSTC_V_PREPROCESSOR 9
-#define wxSTC_V_OPERATOR 10
-#define wxSTC_V_IDENTIFIER 11
-#define wxSTC_V_STRINGEOL 12
-#define wxSTC_V_USER 19
-
-// Lexical states for SCLEX_KIX
-#define wxSTC_KIX_DEFAULT 0
-#define wxSTC_KIX_COMMENT 1
-#define wxSTC_KIX_STRING1 2
-#define wxSTC_KIX_STRING2 3
-#define wxSTC_KIX_NUMBER 4
-#define wxSTC_KIX_VAR 5
-#define wxSTC_KIX_MACRO 6
-#define wxSTC_KIX_KEYWORD 7
-#define wxSTC_KIX_FUNCTIONS 8
-#define wxSTC_KIX_OPERATOR 9
-#define wxSTC_KIX_IDENTIFIER 31
-
-// Lexical states for SCLEX_GUI4CLI
-#define wxSTC_GC_DEFAULT 0
-#define wxSTC_GC_COMMENTLINE 1
-#define wxSTC_GC_COMMENTBLOCK 2
-#define wxSTC_GC_GLOBAL 3
-#define wxSTC_GC_EVENT 4
-#define wxSTC_GC_ATTRIBUTE 5
-#define wxSTC_GC_CONTROL 6
-#define wxSTC_GC_COMMAND 7
-#define wxSTC_GC_STRING 8
-#define wxSTC_GC_OPERATOR 9
-
-// Lexical states for SCLEX_SPECMAN
-#define wxSTC_SN_DEFAULT 0
-#define wxSTC_SN_CODE 1
-#define wxSTC_SN_COMMENTLINE 2
-#define wxSTC_SN_COMMENTLINEBANG 3
-#define wxSTC_SN_NUMBER 4
-#define wxSTC_SN_WORD 5
-#define wxSTC_SN_STRING 6
-#define wxSTC_SN_WORD2 7
-#define wxSTC_SN_WORD3 8
-#define wxSTC_SN_PREPROCESSOR 9
-#define wxSTC_SN_OPERATOR 10
-#define wxSTC_SN_IDENTIFIER 11
-#define wxSTC_SN_STRINGEOL 12
-#define wxSTC_SN_REGEXTAG 13
-#define wxSTC_SN_SIGNAL 14
-#define wxSTC_SN_USER 19
-
-// Lexical states for SCLEX_AU3
-#define wxSTC_AU3_DEFAULT 0
-#define wxSTC_AU3_COMMENT 1
-#define wxSTC_AU3_COMMENTBLOCK 2
-#define wxSTC_AU3_NUMBER 3
-#define wxSTC_AU3_FUNCTION 4
-#define wxSTC_AU3_KEYWORD 5
-#define wxSTC_AU3_MACRO 6
-#define wxSTC_AU3_STRING 7
-#define wxSTC_AU3_OPERATOR 8
-#define wxSTC_AU3_VARIABLE 9
-#define wxSTC_AU3_SENT 10
-#define wxSTC_AU3_PREPROCESSOR 11
-#define wxSTC_AU3_SPECIAL 12
-#define wxSTC_AU3_EXPAND 13
-#define wxSTC_AU3_COMOBJ 14
-#define wxSTC_AU3_UDF 15
-
-// Lexical states for SCLEX_APDL
-#define wxSTC_APDL_DEFAULT 0
-#define wxSTC_APDL_COMMENT 1
-#define wxSTC_APDL_COMMENTBLOCK 2
-#define wxSTC_APDL_NUMBER 3
-#define wxSTC_APDL_STRING 4
-#define wxSTC_APDL_OPERATOR 5
-#define wxSTC_APDL_WORD 6
-#define wxSTC_APDL_PROCESSOR 7
-#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_ERROR 1
-#define wxSTC_SH_COMMENTLINE 2
-#define wxSTC_SH_NUMBER 3
-#define wxSTC_SH_WORD 4
-#define wxSTC_SH_STRING 5
-#define wxSTC_SH_CHARACTER 6
-#define wxSTC_SH_OPERATOR 7
-#define wxSTC_SH_IDENTIFIER 8
-#define wxSTC_SH_SCALAR 9
-#define wxSTC_SH_PARAM 10
-#define wxSTC_SH_BACKTICKS 11
-#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
-
-// Lexical states for SCLEX_CAML
-#define wxSTC_CAML_DEFAULT 0
-#define wxSTC_CAML_IDENTIFIER 1
-#define wxSTC_CAML_TAGNAME 2
-#define wxSTC_CAML_KEYWORD 3
-#define wxSTC_CAML_KEYWORD2 4
-#define wxSTC_CAML_KEYWORD3 5
-#define wxSTC_CAML_LINENUM 6
-#define wxSTC_CAML_OPERATOR 7
-#define wxSTC_CAML_NUMBER 8
-#define wxSTC_CAML_CHAR 9
-#define wxSTC_CAML_STRING 11
-#define wxSTC_CAML_COMMENT 12
-#define wxSTC_CAML_COMMENT1 13
-#define wxSTC_CAML_COMMENT2 14
-#define wxSTC_CAML_COMMENT3 15
-
-// Lexical states for SCLEX_HASKELL
-#define wxSTC_HA_DEFAULT 0
-#define wxSTC_HA_IDENTIFIER 1
-#define wxSTC_HA_KEYWORD 2
-#define wxSTC_HA_NUMBER 3
-#define wxSTC_HA_STRING 4
-#define wxSTC_HA_CHARACTER 5
-#define wxSTC_HA_CLASS 6
-#define wxSTC_HA_MODULE 7
-#define wxSTC_HA_CAPITAL 8
-#define wxSTC_HA_DATA 9
-#define wxSTC_HA_IMPORT 10
-#define wxSTC_HA_OPERATOR 11
-#define wxSTC_HA_INSTANCE 12
-#define wxSTC_HA_COMMENTLINE 13
-#define wxSTC_HA_COMMENTBLOCK 14
-#define wxSTC_HA_COMMENTBLOCK2 15
-#define wxSTC_HA_COMMENTBLOCK3 16
-
-// Lexical states of SCLEX_TADS3
-#define wxSTC_T3_DEFAULT 0
-#define wxSTC_T3_X_DEFAULT 1
-#define wxSTC_T3_PREPROCESSOR 2
-#define wxSTC_T3_BLOCK_COMMENT 3
-#define wxSTC_T3_LINE_COMMENT 4
-#define wxSTC_T3_OPERATOR 5
-#define wxSTC_T3_KEYWORD 6
-#define wxSTC_T3_NUMBER 7
-#define wxSTC_T3_IDENTIFIER 8
-#define wxSTC_T3_S_STRING 9
-#define wxSTC_T3_D_STRING 10
-#define wxSTC_T3_X_STRING 11
-#define wxSTC_T3_LIB_DIRECTIVE 12
-#define wxSTC_T3_MSG_PARAM 13
-#define wxSTC_T3_HTML_TAG 14
-#define wxSTC_T3_HTML_DEFAULT 15
-#define wxSTC_T3_HTML_STRING 16
-#define wxSTC_T3_USER1 17
-#define wxSTC_T3_USER2 18
-#define wxSTC_T3_USER3 19
-
-// Lexical states for SCLEX_REBOL
-#define wxSTC_REBOL_DEFAULT 0
-#define wxSTC_REBOL_COMMENTLINE 1
-#define wxSTC_REBOL_COMMENTBLOCK 2
-#define wxSTC_REBOL_PREFACE 3
-#define wxSTC_REBOL_OPERATOR 4
-#define wxSTC_REBOL_CHARACTER 5
-#define wxSTC_REBOL_QUOTEDSTRING 6
-#define wxSTC_REBOL_BRACEDSTRING 7
-#define wxSTC_REBOL_NUMBER 8
-#define wxSTC_REBOL_PAIR 9
-#define wxSTC_REBOL_TUPLE 10
-#define wxSTC_REBOL_BINARY 11
-#define wxSTC_REBOL_MONEY 12
-#define wxSTC_REBOL_ISSUE 13
-#define wxSTC_REBOL_TAG 14
-#define wxSTC_REBOL_FILE 15
-#define wxSTC_REBOL_EMAIL 16
-#define wxSTC_REBOL_URL 17
-#define wxSTC_REBOL_DATE 18
-#define wxSTC_REBOL_TIME 19
-#define wxSTC_REBOL_IDENTIFIER 20
-#define wxSTC_REBOL_WORD 21
-#define wxSTC_REBOL_WORD2 22
-#define wxSTC_REBOL_WORD3 23
-#define wxSTC_REBOL_WORD4 24
-#define wxSTC_REBOL_WORD5 25
-#define wxSTC_REBOL_WORD6 26
-#define wxSTC_REBOL_WORD7 27
-#define wxSTC_REBOL_WORD8 28
-
-// Lexical states for SCLEX_SQL
-#define wxSTC_SQL_DEFAULT 0
-#define wxSTC_SQL_COMMENT 1
-#define wxSTC_SQL_COMMENTLINE 2
-#define wxSTC_SQL_COMMENTDOC 3
-#define wxSTC_SQL_NUMBER 4
-#define wxSTC_SQL_WORD 5
-#define wxSTC_SQL_STRING 6
-#define wxSTC_SQL_CHARACTER 7
-#define wxSTC_SQL_SQLPLUS 8
-#define wxSTC_SQL_SQLPLUS_PROMPT 9
-#define wxSTC_SQL_OPERATOR 10
-#define wxSTC_SQL_IDENTIFIER 11
-#define wxSTC_SQL_SQLPLUS_COMMENT 13
-#define wxSTC_SQL_COMMENTLINEDOC 15
-#define wxSTC_SQL_WORD2 16
-#define wxSTC_SQL_COMMENTDOCKEYWORD 17
-#define wxSTC_SQL_COMMENTDOCKEYWORDERROR 18
-#define wxSTC_SQL_USER1 19
-#define wxSTC_SQL_USER2 20
-#define wxSTC_SQL_USER3 21
-#define wxSTC_SQL_USER4 22
-#define wxSTC_SQL_QUOTEDIDENTIFIER 23
-
-// Lexical states for SCLEX_SMALLTALK
-#define wxSTC_ST_DEFAULT 0
-#define wxSTC_ST_STRING 1
-#define wxSTC_ST_NUMBER 2
-#define wxSTC_ST_COMMENT 3
-#define wxSTC_ST_SYMBOL 4
-#define wxSTC_ST_BINARY 5
-#define wxSTC_ST_BOOL 6
-#define wxSTC_ST_SELF 7
-#define wxSTC_ST_SUPER 8
-#define wxSTC_ST_NIL 9
-#define wxSTC_ST_GLOBAL 10
-#define wxSTC_ST_RETURN 11
-#define wxSTC_ST_SPECIAL 12
-#define wxSTC_ST_KWSEND 13
-#define wxSTC_ST_ASSIGN 14
-#define wxSTC_ST_CHARACTER 15
-#define wxSTC_ST_SPEC_SEL 16
-
-// Lexical states for SCLEX_FLAGSHIP (clipper)
-#define wxSTC_FS_DEFAULT 0
-#define wxSTC_FS_COMMENT 1
-#define wxSTC_FS_COMMENTLINE 2
-#define wxSTC_FS_COMMENTDOC 3
-#define wxSTC_FS_COMMENTLINEDOC 4
-#define wxSTC_FS_COMMENTDOCKEYWORD 5
-#define wxSTC_FS_COMMENTDOCKEYWORDERROR 6
-#define wxSTC_FS_KEYWORD 7
-#define wxSTC_FS_KEYWORD2 8
-#define wxSTC_FS_KEYWORD3 9
-#define wxSTC_FS_KEYWORD4 10
-#define wxSTC_FS_NUMBER 11
-#define wxSTC_FS_STRING 12
-#define wxSTC_FS_PREPROCESSOR 13
-#define wxSTC_FS_OPERATOR 14
-#define wxSTC_FS_IDENTIFIER 15
-#define wxSTC_FS_DATE 16
-#define wxSTC_FS_STRINGEOL 17
-#define wxSTC_FS_CONSTANT 18
-#define wxSTC_FS_ASM 19
-#define wxSTC_FS_LABEL 20
-#define wxSTC_FS_ERROR 21
-#define wxSTC_FS_HEXNUMBER 22
-#define wxSTC_FS_BINNUMBER 23
-
-// Lexical states for SCLEX_CSOUND
-#define wxSTC_CSOUND_DEFAULT 0
-#define wxSTC_CSOUND_COMMENT 1
-#define wxSTC_CSOUND_NUMBER 2
-#define wxSTC_CSOUND_OPERATOR 3
-#define wxSTC_CSOUND_INSTR 4
-#define wxSTC_CSOUND_IDENTIFIER 5
-#define wxSTC_CSOUND_OPCODE 6
-#define wxSTC_CSOUND_HEADERSTMT 7
-#define wxSTC_CSOUND_USERKEYWORD 8
-#define wxSTC_CSOUND_COMMENTBLOCK 9
-#define wxSTC_CSOUND_PARAM 10
-#define wxSTC_CSOUND_ARATE_VAR 11
-#define wxSTC_CSOUND_KRATE_VAR 12
-#define wxSTC_CSOUND_IRATE_VAR 13
-#define wxSTC_CSOUND_GLOBAL_VAR 14
-#define wxSTC_CSOUND_STRINGEOL 15
-
-// Lexical states for SCLEX_INNOSETUP
-#define wxSTC_INNO_DEFAULT 0
-#define wxSTC_INNO_COMMENT 1
-#define wxSTC_INNO_KEYWORD 2
-#define wxSTC_INNO_PARAMETER 3
-#define wxSTC_INNO_SECTION 4
-#define wxSTC_INNO_PREPROC 5
-#define wxSTC_INNO_PREPROC_INLINE 6
-#define wxSTC_INNO_COMMENT_PASCAL 7
-#define wxSTC_INNO_KEYWORD_PASCAL 8
-#define wxSTC_INNO_KEYWORD_USER 9
-#define wxSTC_INNO_STRING_DOUBLE 10
-#define wxSTC_INNO_STRING_SINGLE 11
-#define wxSTC_INNO_IDENTIFIER 12
-
-// Lexical states for SCLEX_OPAL
-#define wxSTC_OPAL_SPACE 0
-#define wxSTC_OPAL_COMMENT_BLOCK 1
-#define wxSTC_OPAL_COMMENT_LINE 2
-#define wxSTC_OPAL_INTEGER 3
-#define wxSTC_OPAL_KEYWORD 4
-#define wxSTC_OPAL_SORT 5
-#define wxSTC_OPAL_STRING 6
-#define wxSTC_OPAL_PAR 7
-#define wxSTC_OPAL_BOOL_CONST 8
-#define wxSTC_OPAL_DEFAULT 32
-
-// Lexical states for SCLEX_SPICE
-#define wxSTC_SPICE_DEFAULT 0
-#define wxSTC_SPICE_IDENTIFIER 1
-#define wxSTC_SPICE_KEYWORD 2
-#define wxSTC_SPICE_KEYWORD2 3
-#define wxSTC_SPICE_KEYWORD3 4
-#define wxSTC_SPICE_NUMBER 5
-#define wxSTC_SPICE_DELIMITER 6
-#define wxSTC_SPICE_VALUE 7
-#define wxSTC_SPICE_COMMENTLINE 8
-
-
-//-----------------------------------------
-// Commands that can be bound to keystrokes
-
-
-// Redoes the next action on the undo history.
-#define wxSTC_CMD_REDO 2011
-
-// Select all the text in the document.
-#define wxSTC_CMD_SELECTALL 2013
-
-// Undo one action in the undo history.
-#define wxSTC_CMD_UNDO 2176
-
-// Cut the selection to the clipboard.
-#define wxSTC_CMD_CUT 2177
-
-// Copy the selection to the clipboard.
-#define wxSTC_CMD_COPY 2178
-
-// Paste the contents of the clipboard into the document replacing the selection.
-#define wxSTC_CMD_PASTE 2179
-
-// Clear the selection.
-#define wxSTC_CMD_CLEAR 2180
-
-// Move caret down one line.
-#define wxSTC_CMD_LINEDOWN 2300
-
-// Move caret down one line extending selection to new caret position.
-#define wxSTC_CMD_LINEDOWNEXTEND 2301
-
-// Move caret up one line.
-#define wxSTC_CMD_LINEUP 2302
-
-// Move caret up one line extending selection to new caret position.
-#define wxSTC_CMD_LINEUPEXTEND 2303
-
-// Move caret left one character.
-#define wxSTC_CMD_CHARLEFT 2304
-
-// Move caret left one character extending selection to new caret position.
-#define wxSTC_CMD_CHARLEFTEXTEND 2305
-
-// Move caret right one character.
-#define wxSTC_CMD_CHARRIGHT 2306
-
-// Move caret right one character extending selection to new caret position.
-#define wxSTC_CMD_CHARRIGHTEXTEND 2307
-
-// Move caret left one word.
-#define wxSTC_CMD_WORDLEFT 2308
-
-// Move caret left one word extending selection to new caret position.
-#define wxSTC_CMD_WORDLEFTEXTEND 2309
-
-// Move caret right one word.
-#define wxSTC_CMD_WORDRIGHT 2310
-
-// Move caret right one word extending selection to new caret position.
-#define wxSTC_CMD_WORDRIGHTEXTEND 2311
-
-// Move caret to first position on line.
-#define wxSTC_CMD_HOME 2312
-
-// Move caret to first position on line extending selection to new caret position.
-#define wxSTC_CMD_HOMEEXTEND 2313
-
-// Move caret to last position on line.
-#define wxSTC_CMD_LINEEND 2314
-
-// Move caret to last position on line extending selection to new caret position.
-#define wxSTC_CMD_LINEENDEXTEND 2315
-
-// Move caret to first position in document.
-#define wxSTC_CMD_DOCUMENTSTART 2316
-
-// Move caret to first position in document extending selection to new caret position.
-#define wxSTC_CMD_DOCUMENTSTARTEXTEND 2317
-
-// Move caret to last position in document.
-#define wxSTC_CMD_DOCUMENTEND 2318
-
-// Move caret to last position in document extending selection to new caret position.
-#define wxSTC_CMD_DOCUMENTENDEXTEND 2319
-
-// Move caret one page up.
-#define wxSTC_CMD_PAGEUP 2320
-
-// Move caret one page up extending selection to new caret position.
-#define wxSTC_CMD_PAGEUPEXTEND 2321
-
-// Move caret one page down.
-#define wxSTC_CMD_PAGEDOWN 2322
-
-// Move caret one page down extending selection to new caret position.
-#define wxSTC_CMD_PAGEDOWNEXTEND 2323
-
-// Switch from insert to overtype mode or the reverse.
-#define wxSTC_CMD_EDITTOGGLEOVERTYPE 2324
-
-// Cancel any modes such as call tip or auto-completion list display.
-#define wxSTC_CMD_CANCEL 2325
-
-// Delete the selection or if no selection, the character before the caret.
-#define wxSTC_CMD_DELETEBACK 2326
-
-// If selection is empty or all on one line replace the selection with a tab character.
-// If more than one line selected, indent the lines.
-#define wxSTC_CMD_TAB 2327
-
-// Dedent the selected lines.
-#define wxSTC_CMD_BACKTAB 2328
-
-// Insert a new line, may use a CRLF, CR or LF depending on EOL mode.
-#define wxSTC_CMD_NEWLINE 2329
-
-// Insert a Form Feed character.
-#define wxSTC_CMD_FORMFEED 2330
-
-// Move caret to before first visible character on line.
-// If already there move to first character on line.
-#define wxSTC_CMD_VCHOME 2331
-
-// Like VCHome but extending selection to new caret position.
-#define wxSTC_CMD_VCHOMEEXTEND 2332
-
-// Magnify the displayed text by increasing the sizes by 1 point.
-#define wxSTC_CMD_ZOOMIN 2333
-
-// Make the displayed text smaller by decreasing the sizes by 1 point.
-#define wxSTC_CMD_ZOOMOUT 2334
-
-// Delete the word to the left of the caret.
-#define wxSTC_CMD_DELWORDLEFT 2335
-
-// Delete the word to the right of the caret.
-#define wxSTC_CMD_DELWORDRIGHT 2336
-
-// Cut the line containing the caret.
-#define wxSTC_CMD_LINECUT 2337
-
-// Delete the line containing the caret.
-#define wxSTC_CMD_LINEDELETE 2338
-
-// Switch the current line with the previous.
-#define wxSTC_CMD_LINETRANSPOSE 2339
-
-// Duplicate the current line.
-#define wxSTC_CMD_LINEDUPLICATE 2404
-
-// Transform the selection to lower case.
-#define wxSTC_CMD_LOWERCASE 2340
-
-// Transform the selection to upper case.
-#define wxSTC_CMD_UPPERCASE 2341
-
-// Scroll the document down, keeping the caret visible.
-#define wxSTC_CMD_LINESCROLLDOWN 2342
-
-// Scroll the document up, keeping the caret visible.
-#define wxSTC_CMD_LINESCROLLUP 2343
-
-// Delete the selection or if no selection, the character before the caret.
-// Will not delete the character before at the start of a line.
-#define wxSTC_CMD_DELETEBACKNOTLINE 2344
-
-// Move caret to first position on display line.
-#define wxSTC_CMD_HOMEDISPLAY 2345
-
-// Move caret to first position on display line extending selection to
-// new caret position.
-#define wxSTC_CMD_HOMEDISPLAYEXTEND 2346
-
-// Move caret to last position on display line.
-#define wxSTC_CMD_LINEENDDISPLAY 2347
-
-// Move caret to last position on display line extending selection to new
-// caret position.
-#define wxSTC_CMD_LINEENDDISPLAYEXTEND 2348
-
-// These are like their namesakes Home(Extend)?, LineEnd(Extend)?, VCHome(Extend)?
-// except they behave differently when word-wrap is enabled:
-// They go first to the start / end of the display line, like (Home|LineEnd)Display
-// The difference is that, the cursor is already at the point, it goes on to the start
-// or end of the document line, as appropriate for (Home|LineEnd|VCHome)(Extend)?.
-#define wxSTC_CMD_HOMEWRAP 2349
-#define wxSTC_CMD_HOMEWRAPEXTEND 2450
-#define wxSTC_CMD_LINEENDWRAP 2451
-#define wxSTC_CMD_LINEENDWRAPEXTEND 2452
-#define wxSTC_CMD_VCHOMEWRAP 2453
-#define wxSTC_CMD_VCHOMEWRAPEXTEND 2454
-
-// Copy the line containing the caret.
-#define wxSTC_CMD_LINECOPY 2455
-
-// Move to the previous change in capitalisation.
-#define wxSTC_CMD_WORDPARTLEFT 2390
-
-// Move to the previous change in capitalisation extending selection
-// to new caret position.
-#define wxSTC_CMD_WORDPARTLEFTEXTEND 2391
-
-// Move to the change next in capitalisation.
-#define wxSTC_CMD_WORDPARTRIGHT 2392
-
-// Move to the next change in capitalisation extending selection
-// to new caret position.
-#define wxSTC_CMD_WORDPARTRIGHTEXTEND 2393
-
-// Delete back from the current position to the start of the line.
-#define wxSTC_CMD_DELLINELEFT 2395
-
-// Delete forwards from the current position to the end of the line.
-#define wxSTC_CMD_DELLINERIGHT 2396
-
-// Move caret between paragraphs (delimited by empty lines).
-#define wxSTC_CMD_PARADOWN 2413
-#define wxSTC_CMD_PARADOWNEXTEND 2414
-#define wxSTC_CMD_PARAUP 2415
-#define wxSTC_CMD_PARAUPEXTEND 2416
-
-// Move caret down one line, extending rectangular selection to new caret position.
-#define wxSTC_CMD_LINEDOWNRECTEXTEND 2426
-
-// Move caret up one line, extending rectangular selection to new caret position.
-#define wxSTC_CMD_LINEUPRECTEXTEND 2427
-
-// Move caret left one character, extending rectangular selection to new caret position.
-#define wxSTC_CMD_CHARLEFTRECTEXTEND 2428
-
-// Move caret right one character, extending rectangular selection to new caret position.
-#define wxSTC_CMD_CHARRIGHTRECTEXTEND 2429
-
-// Move caret to first position on line, extending rectangular selection to new caret position.
-#define wxSTC_CMD_HOMERECTEXTEND 2430
-
-// Move caret to before first visible character on line.
-// If already there move to first character on line.
-// In either case, extend rectangular selection to new caret position.
-#define wxSTC_CMD_VCHOMERECTEXTEND 2431
-
-// Move caret to last position on line, extending rectangular selection to new caret position.
-#define wxSTC_CMD_LINEENDRECTEXTEND 2432
-
-// Move caret one page up, extending rectangular selection to new caret position.
-#define wxSTC_CMD_PAGEUPRECTEXTEND 2433
-
-// Move caret one page down, extending rectangular selection to new caret position.
-#define wxSTC_CMD_PAGEDOWNRECTEXTEND 2434
-
-// Move caret to top of page, or one page up if already at top of page.
-#define wxSTC_CMD_STUTTEREDPAGEUP 2435
-
-// Move caret to top of page, or one page up if already at top of page, extending selection to new caret position.
-#define wxSTC_CMD_STUTTEREDPAGEUPEXTEND 2436
-
-// Move caret to bottom of page, or one page down if already at bottom of page.
-#define wxSTC_CMD_STUTTEREDPAGEDOWN 2437
-
-// Move caret to bottom of page, or one page down if already at bottom of page, extending selection to new caret position.
-#define wxSTC_CMD_STUTTEREDPAGEDOWNEXTEND 2438
-
-// Move caret left one word, position cursor at end of word.
-#define wxSTC_CMD_WORDLEFTEND 2439
-
-// Move caret left one word, position cursor at end of word, extending selection to new caret position.
-#define wxSTC_CMD_WORDLEFTENDEXTEND 2440
-
-// Move caret right one word, position cursor at end of word.
-#define wxSTC_CMD_WORDRIGHTEND 2441
-
-// Move caret right one word, position cursor at end of word, extending selection to new caret position.
-#define wxSTC_CMD_WORDRIGHTENDEXTEND 2442
-
-
-// END of generated section
-//----------------------------------------------------------------------
-
-class ScintillaWX; // forward declare
-class WordList;
-struct SCNotification;
-
-#ifndef SWIG
-extern WXDLLIMPEXP_STC const wxChar* wxSTCNameStr;
-class WXDLLIMPEXP_STC wxStyledTextCtrl;
-class WXDLLIMPEXP_STC wxStyledTextEvent;
-#endif
-
-//----------------------------------------------------------------------
-
-class WXDLLIMPEXP_STC wxStyledTextCtrl : public wxControl {
-public:
-
-#ifdef SWIG
- %pythonAppend wxStyledTextCtrl "self._setOORInfo(self)"
- %pythonAppend wxStyledTextCtrl() ""
-
- wxStyledTextCtrl(wxWindow *parent, wxWindowID id=wxID_ANY,
- const wxPoint& pos = wxDefaultPosition,
- const wxSize& size = wxDefaultSize, long style = 0,
- const wxString& name = wxPySTCNameStr);
- %RenameCtor(PreStyledTextCtrl, wxStyledTextCtrl());
-
-#else
- wxStyledTextCtrl(wxWindow *parent, wxWindowID id=wxID_ANY,
- const wxPoint& pos = wxDefaultPosition,
- const wxSize& size = wxDefaultSize, long style = 0,
- const wxString& name = wxSTCNameStr);
- wxStyledTextCtrl() { m_swx = NULL; }
- ~wxStyledTextCtrl();
-
-#endif
-
- bool Create(wxWindow *parent, wxWindowID id=wxID_ANY,
- const wxPoint& pos = wxDefaultPosition,
- const wxSize& size = wxDefaultSize, long style = 0,
- const wxString& name = wxSTCNameStr);
-
-
-//----------------------------------------------------------------------
-// BEGIN generated section. The following code is automatically generated
-// by gen_iface.py. Do not edit this file. Edit stc.h.in instead
-// and regenerate
-
-
- // Add text to the document at current position.
- void AddText(const wxString& text);
-
- // Add array of cells to document.
- void AddStyledText(const wxMemoryBuffer& data);
-
- // Insert string at a position.
- void InsertText(int pos, const wxString& text);
-
- // Delete all text in the document.
- void ClearAll();
-
- // Set all style bytes to 0, remove all folding information.
- void ClearDocumentStyle();
-
- // Returns the number of characters in the document.
- int GetLength();
-
- // Returns the character byte at the position.
- int GetCharAt(int pos);
-
- // Returns the position of the caret.
- int GetCurrentPos();
-
- // Returns the position of the opposite end of the selection to the caret.
- int GetAnchor();
-
- // Returns the style byte at the position.
- int GetStyleAt(int pos);
-
- // Redoes the next action on the undo history.
- void Redo();
-
- // Choose between collecting actions into the undo
- // history and discarding them.
- void SetUndoCollection(bool collectUndo);
-
- // Select all the text in the document.
- void SelectAll();
-
- // Remember the current position in the undo history as the position
- // at which the document was saved.
- void SetSavePoint();
-
- // Retrieve a buffer of cells.
- wxMemoryBuffer GetStyledText(int startPos, int endPos);
-
- // Are there any redoable actions in the undo history?
- bool CanRedo();
-
- // Retrieve the line number at which a particular marker is located.
- int MarkerLineFromHandle(int handle);
-
- // Delete a marker.
- void MarkerDeleteHandle(int handle);
-
- // Is undo history being collected?
- bool GetUndoCollection();
-
- // Are white space characters currently visible?
- // Returns one of SCWS_* constants.
- int GetViewWhiteSpace();
-
- // Make white space characters invisible, always visible or visible outside indentation.
- void SetViewWhiteSpace(int viewWS);
-
- // Find the position from a point within the window.
- int PositionFromPoint(wxPoint pt);
-
- // Find the position from a point within the window but return
- // INVALID_POSITION if not close to text.
- int PositionFromPointClose(int x, int y);
-
- // Set caret to start of a line and ensure it is visible.
- void GotoLine(int line);
-
- // Set caret to a position and ensure it is visible.
- void GotoPos(int pos);
-
- // Set the selection anchor to a position. The anchor is the opposite
- // end of the selection from the caret.
- void SetAnchor(int posAnchor);
-
- // Retrieve the text of the line containing the caret.
- // Returns the index of the caret on the line.
- #ifdef SWIG
- wxString GetCurLine(int* OUTPUT);
-#else
- wxString GetCurLine(int* linePos=NULL);
-#endif
-
- // Retrieve the position of the last correctly styled character.
- int GetEndStyled();
-
- // Convert all line endings in the document to one mode.
- void ConvertEOLs(int eolMode);
-
- // Retrieve the current end of line mode - one of CRLF, CR, or LF.
- int GetEOLMode();
-
- // Set the current end of line mode.
- void SetEOLMode(int eolMode);
-
- // Set the current styling position to pos and the styling mask to mask.
- // The styling mask can be used to protect some bits in each styling byte from modification.
- void StartStyling(int pos, int mask);
-
- // Change style from current styling position for length characters to a style
- // and move the current styling position to after this newly styled segment.
- void SetStyling(int length, int style);
-
- // Is drawing done first into a buffer or direct to the screen?
- bool GetBufferedDraw();
-
- // If drawing is buffered then each line of text is drawn into a bitmap buffer
- // before drawing it to the screen to avoid flicker.
- void SetBufferedDraw(bool buffered);
-
- // Change the visible size of a tab to be a multiple of the width of a space character.
- void SetTabWidth(int tabWidth);
-
- // Retrieve the visible size of a tab.
- int GetTabWidth();
-
- // Set the code page used to interpret the bytes of the document as characters.
- void SetCodePage(int codePage);
-
- // Set the symbol used for a particular marker number,
- // and optionally the fore and background colours.
- void MarkerDefine(int markerNumber, int markerSymbol,
- const wxColour& foreground = wxNullColour,
- const wxColour& background = wxNullColour);
-
- // Set the foreground colour used for a particular marker number.
- void MarkerSetForeground(int markerNumber, const wxColour& fore);
-
- // Set the background colour used for a particular marker number.
- void MarkerSetBackground(int markerNumber, const wxColour& back);
-
- // Add a marker to a line, returning an ID which can be used to find or delete the marker.
- int MarkerAdd(int line, int markerNumber);
-
- // Delete a marker from a line.
- void MarkerDelete(int line, int markerNumber);
-
- // Delete all markers with a particular number from all lines.
- void MarkerDeleteAll(int markerNumber);
-
- // Get a bit mask of all the markers set on a line.
- int MarkerGet(int line);
-
- // Find the next line after lineStart that includes a marker in mask.
- int MarkerNext(int lineStart, int markerMask);
-
- // Find the previous line before lineStart that includes a marker in mask.
- int MarkerPrevious(int lineStart, int markerMask);
-
- // Define a marker from a bitmap
- void MarkerDefineBitmap(int markerNumber, const wxBitmap& bmp);
-
- // Add a set of markers to a line.
- void MarkerAddSet(int line, int set);
-
- // Set the alpha used for a marker that is drawn in the text area, not the margin.
- void MarkerSetAlpha(int markerNumber, int alpha);
-
- // Set a margin to be either numeric or symbolic.
- void SetMarginType(int margin, int marginType);
-
- // Retrieve the type of a margin.
- int GetMarginType(int margin);
-
- // Set the width of a margin to a width expressed in pixels.
- void SetMarginWidth(int margin, int pixelWidth);
-
- // Retrieve the width of a margin in pixels.
- int GetMarginWidth(int margin);
-
- // Set a mask that determines which markers are displayed in a margin.
- void SetMarginMask(int margin, int mask);
-
- // Retrieve the marker mask of a margin.
- int GetMarginMask(int margin);
-
- // Make a margin sensitive or insensitive to mouse clicks.
- void SetMarginSensitive(int margin, bool sensitive);
-
- // Retrieve the mouse click sensitivity of a margin.
- bool GetMarginSensitive(int margin);
-
- // Clear all the styles and make equivalent to the global default style.
- void StyleClearAll();
-
- // Set the foreground colour of a style.
- void StyleSetForeground(int style, const wxColour& fore);
-
- // Set the background colour of a style.
- void StyleSetBackground(int style, const wxColour& back);
-
- // Set a style to be bold or not.
- void StyleSetBold(int style, bool bold);
-
- // Set a style to be italic or not.
- void StyleSetItalic(int style, bool italic);
-
- // Set the size of characters of a style.
- void StyleSetSize(int style, int sizePoints);
-
- // Set the font of a style.
- void StyleSetFaceName(int style, const wxString& fontName);
-
- // Set a style to have its end of line filled or not.
- void StyleSetEOLFilled(int style, bool filled);
-
- // Reset the default style to its state at startup
- void StyleResetDefault();
-
- // Set a style to be underlined or not.
- void StyleSetUnderline(int style, bool underline);
-
- // Set a style to be mixed case, or to force upper or lower case.
- void StyleSetCase(int style, int caseForce);
-
- // Set a style to be a hotspot or not.
- void StyleSetHotSpot(int style, bool hotspot);
-
- // Set the foreground colour of the selection and whether to use this setting.
- void SetSelForeground(bool useSetting, const wxColour& fore);
-
- // Set the background colour of the selection and whether to use this setting.
- void SetSelBackground(bool useSetting, const wxColour& back);
-
- // Get the alpha of the selection.
- int GetSelAlpha();
-
- // Set the alpha of the selection.
- void SetSelAlpha(int alpha);
-
- // Set the foreground colour of the caret.
- void SetCaretForeground(const wxColour& fore);
-
- // When key+modifier combination km is pressed perform msg.
- void CmdKeyAssign(int key, int modifiers, int cmd);
-
- // When key+modifier combination km is pressed do nothing.
- void CmdKeyClear(int key, int modifiers);
-
- // Drop all key mappings.
- void CmdKeyClearAll();
-
- // Set the styles for a segment of the document.
- void SetStyleBytes(int length, char* styleBytes);
-
- // Set a style to be visible or not.
- void StyleSetVisible(int style, bool visible);
-
- // Get the time in milliseconds that the caret is on and off.
- int GetCaretPeriod();
-
- // Get the time in milliseconds that the caret is on and off. 0 = steady on.
- void SetCaretPeriod(int periodMilliseconds);
-
- // Set the set of characters making up words for when moving or selecting by word.
- // First sets deaults like SetCharsDefault.
- void SetWordChars(const wxString& characters);
-
- // Start a sequence of actions that is undone and redone as a unit.
- // May be nested.
- void BeginUndoAction();
-
- // End a sequence of actions that is undone and redone as a unit.
- void EndUndoAction();
-
- // Set an indicator to plain, squiggle or TT.
- void IndicatorSetStyle(int indic, int style);
-
- // Retrieve the style of an indicator.
- int IndicatorGetStyle(int indic);
-
- // Set the foreground colour of an indicator.
- void IndicatorSetForeground(int indic, const wxColour& fore);
-
- // Retrieve the foreground colour of an indicator.
- wxColour IndicatorGetForeground(int indic);
-
- // Set the foreground colour of all whitespace and whether to use this setting.
- void SetWhitespaceForeground(bool useSetting, const wxColour& fore);
-
- // Set the background colour of all whitespace and whether to use this setting.
- void SetWhitespaceBackground(bool useSetting, const wxColour& back);
-
- // Divide each styling byte into lexical class bits (default: 5) and indicator
- // bits (default: 3). If a lexer requires more than 32 lexical states, then this
- // is used to expand the possible states.
- void SetStyleBits(int bits);
-
- // Retrieve number of bits in style bytes used to hold the lexical state.
- int GetStyleBits();
-
- // Used to hold extra styling information for each line.
- void SetLineState(int line, int state);
-
- // Retrieve the extra styling information for a line.
- int GetLineState(int line);
-
- // Retrieve the last line number that has line state.
- int GetMaxLineState();
-
- // Is the background of the line containing the caret in a different colour?
- bool GetCaretLineVisible();
-
- // Display the background of the line containing the caret in a different colour.
- void SetCaretLineVisible(bool show);
-
- // Get the colour of the background of the line containing the caret.
- wxColour GetCaretLineBackground();
-
- // Set the colour of the background of the line containing the caret.
- void SetCaretLineBackground(const wxColour& back);
-
- // Set a style to be changeable or not (read only).
- // Experimental feature, currently buggy.
- void StyleSetChangeable(int style, bool changeable);
-
- // Display a auto-completion list.
- // The lenEntered parameter indicates how many characters before
- // the caret should be used to provide context.
- void AutoCompShow(int lenEntered, const wxString& itemList);
-
- // Remove the auto-completion list from the screen.
- void AutoCompCancel();
-
- // Is there an auto-completion list visible?
- bool AutoCompActive();
-
- // Retrieve the position of the caret when the auto-completion list was displayed.
- int AutoCompPosStart();
-
- // User has selected an item so remove the list and insert the selection.
- void AutoCompComplete();
-
- // Define a set of character that when typed cancel the auto-completion list.
- void AutoCompStops(const wxString& characterSet);
-
- // Change the separator character in the string setting up an auto-completion list.
- // Default is space but can be changed if items contain space.
- void AutoCompSetSeparator(int separatorCharacter);
-
- // Retrieve the auto-completion list separator character.
- int AutoCompGetSeparator();
-
- // Select the item in the auto-completion list that starts with a string.
- void AutoCompSelect(const wxString& text);
-
- // Should the auto-completion list be cancelled if the user backspaces to a
- // position before where the box was created.
- void AutoCompSetCancelAtStart(bool cancel);
-
- // Retrieve whether auto-completion cancelled by backspacing before start.
- bool AutoCompGetCancelAtStart();
-
- // Define a set of characters that when typed will cause the autocompletion to
- // choose the selected item.
- void AutoCompSetFillUps(const wxString& characterSet);
-
- // Should a single item auto-completion list automatically choose the item.
- void AutoCompSetChooseSingle(bool chooseSingle);
-
- // Retrieve whether a single item auto-completion list automatically choose the item.
- bool AutoCompGetChooseSingle();
-
- // Set whether case is significant when performing auto-completion searches.
- void AutoCompSetIgnoreCase(bool ignoreCase);
-
- // Retrieve state of ignore case flag.
- bool AutoCompGetIgnoreCase();
-
- // Display a list of strings and send notification when user chooses one.
- void UserListShow(int listType, const wxString& itemList);
-
- // Set whether or not autocompletion is hidden automatically when nothing matches.
- void AutoCompSetAutoHide(bool autoHide);
-
- // Retrieve whether or not autocompletion is hidden automatically when nothing matches.
- bool AutoCompGetAutoHide();
-
- // Set whether or not autocompletion deletes any word characters
- // after the inserted text upon completion.
- void AutoCompSetDropRestOfWord(bool dropRestOfWord);
-
- // Retrieve whether or not autocompletion deletes any word characters
- // after the inserted text upon completion.
- bool AutoCompGetDropRestOfWord();
-
- // Register an image for use in autocompletion lists.
- void RegisterImage(int type, const wxBitmap& bmp);
-
- // Clear all the registered images.
- void ClearRegisteredImages();
-
- // Retrieve the auto-completion list type-separator character.
- int AutoCompGetTypeSeparator();
-
- // Change the type-separator character in the string setting up an auto-completion list.
- // Default is '?' but can be changed if items contain '?'.
- void AutoCompSetTypeSeparator(int separatorCharacter);
-
- // Set the maximum width, in characters, of auto-completion and user lists.
- // Set to 0 to autosize to fit longest item, which is the default.
- void AutoCompSetMaxWidth(int characterCount);
-
- // Get the maximum width, in characters, of auto-completion and user lists.
- int AutoCompGetMaxWidth();
-
- // Set the maximum height, in rows, of auto-completion and user lists.
- // The default is 5 rows.
- void AutoCompSetMaxHeight(int rowCount);
-
- // Set the maximum height, in rows, of auto-completion and user lists.
- int AutoCompGetMaxHeight();
-
- // Set the number of spaces used for one level of indentation.
- void SetIndent(int indentSize);
-
- // Retrieve indentation size.
- int GetIndent();
-
- // Indentation will only use space characters if useTabs is false, otherwise
- // it will use a combination of tabs and spaces.
- void SetUseTabs(bool useTabs);
-
- // Retrieve whether tabs will be used in indentation.
- bool GetUseTabs();
-
- // Change the indentation of a line to a number of columns.
- void SetLineIndentation(int line, int indentSize);
-
- // Retrieve the number of columns that a line is indented.
- int GetLineIndentation(int line);
-
- // Retrieve the position before the first non indentation character on a line.
- int GetLineIndentPosition(int line);
-
- // Retrieve the column number of a position, taking tab width into account.
- int GetColumn(int pos);
-
- // Show or hide the horizontal scroll bar.
- void SetUseHorizontalScrollBar(bool show);
-
- // Is the horizontal scroll bar visible?
- bool GetUseHorizontalScrollBar();
-
- // Show or hide indentation guides.
- void SetIndentationGuides(bool show);
-
- // Are the indentation guides visible?
- bool GetIndentationGuides();
-
- // Set the highlighted indentation guide column.
- // 0 = no highlighted guide.
- void SetHighlightGuide(int column);
-
- // Get the highlighted indentation guide column.
- int GetHighlightGuide();
-
- // Get the position after the last visible characters on a line.
- int GetLineEndPosition(int line);
-
- // Get the code page used to interpret the bytes of the document as characters.
- int GetCodePage();
-
- // Get the foreground colour of the caret.
- wxColour GetCaretForeground();
-
- // In read-only mode?
- bool GetReadOnly();
-
- // Sets the position of the caret.
- void SetCurrentPos(int pos);
-
- // Sets the position that starts the selection - this becomes the anchor.
- void SetSelectionStart(int pos);
-
- // Returns the position at the start of the selection.
- int GetSelectionStart();
-
- // Sets the position that ends the selection - this becomes the currentPosition.
- void SetSelectionEnd(int pos);
-
- // Returns the position at the end of the selection.
- int GetSelectionEnd();
-
- // Sets the print magnification added to the point size of each style for printing.
- void SetPrintMagnification(int magnification);
-
- // Returns the print magnification.
- int GetPrintMagnification();
-
- // Modify colours when printing for clearer printed text.
- void SetPrintColourMode(int mode);
-
- // Returns the print colour mode.
- int GetPrintColourMode();
-
- // Find some text in the document.
- int FindText(int minPos, int maxPos, const wxString& text, int flags=0);
-
- // On Windows, will draw the document into a display context such as a printer.
- int FormatRange(bool doDraw,
- int startPos,
- int endPos,
- wxDC* draw,
- wxDC* target,
- wxRect renderRect,
- wxRect pageRect);
-
- // Retrieve the display line at the top of the display.
- int GetFirstVisibleLine();
-
- // Retrieve the contents of a line.
- wxString GetLine(int line);
-
- // Returns the number of lines in the document. There is always at least one.
- int GetLineCount();
-
- // Sets the size in pixels of the left margin.
- void SetMarginLeft(int pixelWidth);
-
- // Returns the size in pixels of the left margin.
- int GetMarginLeft();
-
- // Sets the size in pixels of the right margin.
- void SetMarginRight(int pixelWidth);
-
- // Returns the size in pixels of the right margin.
- int GetMarginRight();
-
- // Is the document different from when it was last saved?
- bool GetModify();
-
- // Select a range of text.
- void SetSelection(int start, int end);
-
- // Retrieve the selected text.
- wxString GetSelectedText();
-
- // Retrieve a range of text.
- wxString GetTextRange(int startPos, int endPos);
-
- // Draw the selection in normal style or with selection highlighted.
- void HideSelection(bool normal);
-
- // Retrieve the line containing a position.
- int LineFromPosition(int pos);
-
- // Retrieve the position at the start of a line.
- int PositionFromLine(int line);
-
- // Scroll horizontally and vertically.
- void LineScroll(int columns, int lines);
-
- // Ensure the caret is visible.
- void EnsureCaretVisible();
-
- // Replace the selected text with the argument text.
- void ReplaceSelection(const wxString& text);
-
- // Set to read only or read write.
- void SetReadOnly(bool readOnly);
-
- // Will a paste succeed?
- bool CanPaste();
-
- // Are there any undoable actions in the undo history?
- bool CanUndo();
-
- // Delete the undo history.
- void EmptyUndoBuffer();
-
- // Undo one action in the undo history.
- void Undo();
-
- // Cut the selection to the clipboard.
- void Cut();
-
- // Copy the selection to the clipboard.
- void Copy();
-
- // Paste the contents of the clipboard into the document replacing the selection.
- void Paste();
-
- // Clear the selection.
- void Clear();
-
- // Replace the contents of the document with the argument text.
- void SetText(const wxString& text);
-
- // Retrieve all the text in the document.
- wxString GetText();
-
- // Retrieve the number of characters in the document.
- int GetTextLength();
-
- // Set to overtype (true) or insert mode.
- void SetOvertype(bool overtype);
-
- // Returns true if overtype mode is active otherwise false is returned.
- bool GetOvertype();
-
- // Set the width of the insert mode caret.
- void SetCaretWidth(int pixelWidth);
-
- // Returns the width of the insert mode caret.
- int GetCaretWidth();
-
- // Sets the position that starts the target which is used for updating the
- // document without affecting the scroll position.
- void SetTargetStart(int pos);
-
- // Get the position that starts the target.
- int GetTargetStart();
-
- // Sets the position that ends the target which is used for updating the
- // document without affecting the scroll position.
- void SetTargetEnd(int pos);
-
- // Get the position that ends the target.
- int GetTargetEnd();
-
- // Replace the target text with the argument text.
- // Text is counted so it can contain NULs.
- // Returns the length of the replacement text.
- int ReplaceTarget(const wxString& text);
-
- // Replace the target text with the argument text after \d processing.
- // Text is counted so it can contain NULs.
- // Looks for \d where d is between 1 and 9 and replaces these with the strings
- // matched in the last search operation which were surrounded by \( and \).
- // Returns the length of the replacement text including any change
- // caused by processing the \d patterns.
- int ReplaceTargetRE(const wxString& text);
-
- // Search for a counted string in the target and set the target to the found
- // range. Text is counted so it can contain NULs.
- // Returns length of range or -1 for failure in which case target is not moved.
- int SearchInTarget(const wxString& text);
-
- // Set the search flags used by SearchInTarget.
- void SetSearchFlags(int flags);
-
- // Get the search flags used by SearchInTarget.
- int GetSearchFlags();
-
- // Show a call tip containing a definition near position pos.
- void CallTipShow(int pos, const wxString& definition);
-
- // Remove the call tip from the screen.
- void CallTipCancel();
-
- // Is there an active call tip?
- bool CallTipActive();
-
- // Retrieve the position where the caret was before displaying the call tip.
- int CallTipPosAtStart();
-
- // Highlight a segment of the definition.
- void CallTipSetHighlight(int start, int end);
-
- // Set the background colour for the call tip.
- void CallTipSetBackground(const wxColour& back);
-
- // Set the foreground colour for the call tip.
- void CallTipSetForeground(const wxColour& fore);
-
- // Set the foreground colour for the highlighted part of the call tip.
- void CallTipSetForegroundHighlight(const wxColour& fore);
-
- // Enable use of STYLE_CALLTIP and set call tip tab size in pixels.
- void CallTipUseStyle(int tabSize);
-
- // Find the display line of a document line taking hidden lines into account.
- int VisibleFromDocLine(int line);
-
- // Find the document line of a display line taking hidden lines into account.
- int DocLineFromVisible(int lineDisplay);
-
- // The number of display lines needed to wrap a document line
- int WrapCount(int line);
-
- // Set the fold level of a line.
- // This encodes an integer level along with flags indicating whether the
- // line is a header and whether it is effectively white space.
- void SetFoldLevel(int line, int level);
-
- // Retrieve the fold level of a line.
- int GetFoldLevel(int line);
-
- // Find the last child line of a header line.
- int GetLastChild(int line, int level);
-
- // Find the parent line of a child line.
- int GetFoldParent(int line);
-
- // Make a range of lines visible.
- void ShowLines(int lineStart, int lineEnd);
-
- // Make a range of lines invisible.
- void HideLines(int lineStart, int lineEnd);
-
- // Is a line visible?
- bool GetLineVisible(int line);
-
- // Show the children of a header line.
- void SetFoldExpanded(int line, bool expanded);
-
- // Is a header line expanded?
- bool GetFoldExpanded(int line);
-
- // Switch a header line between expanded and contracted.
- void ToggleFold(int line);
-
- // Ensure a particular line is visible by expanding any header line hiding it.
- void EnsureVisible(int line);
-
- // Set some style options for folding.
- void SetFoldFlags(int flags);
-
- // Ensure a particular line is visible by expanding any header line hiding it.
- // Use the currently set visibility policy to determine which range to display.
- void EnsureVisibleEnforcePolicy(int line);
-
- // Sets whether a tab pressed when caret is within indentation indents.
- void SetTabIndents(bool tabIndents);
-
- // Does a tab pressed when caret is within indentation indent?
- bool GetTabIndents();
-
- // Sets whether a backspace pressed when caret is within indentation unindents.
- void SetBackSpaceUnIndents(bool bsUnIndents);
-
- // Does a backspace pressed when caret is within indentation unindent?
- bool GetBackSpaceUnIndents();
-
- // Sets the time the mouse must sit still to generate a mouse dwell event.
- void SetMouseDwellTime(int periodMilliseconds);
-
- // Retrieve the time the mouse must sit still to generate a mouse dwell event.
- int GetMouseDwellTime();
-
- // Get position of start of word.
- int WordStartPosition(int pos, bool onlyWordCharacters);
-
- // Get position of end of word.
- int WordEndPosition(int pos, bool onlyWordCharacters);
-
- // Sets whether text is word wrapped.
- void SetWrapMode(int mode);
-
- // Retrieve whether text is word wrapped.
- int GetWrapMode();
-
- // Set the display mode of visual flags for wrapped lines.
- void SetWrapVisualFlags(int wrapVisualFlags);
-
- // Retrive the display mode of visual flags for wrapped lines.
- int GetWrapVisualFlags();
-
- // Set the location of visual flags for wrapped lines.
- void SetWrapVisualFlagsLocation(int wrapVisualFlagsLocation);
-
- // Retrive the location of visual flags for wrapped lines.
- int GetWrapVisualFlagsLocation();
-
- // Set the start indent for wrapped lines.
- void SetWrapStartIndent(int indent);
-
- // Retrive the start indent for wrapped lines.
- int GetWrapStartIndent();
-
- // Sets the degree of caching of layout information.
- void SetLayoutCache(int mode);
-
- // Retrieve the degree of caching of layout information.
- int GetLayoutCache();
-
- // Sets the document width assumed for scrolling.
- void SetScrollWidth(int pixelWidth);
-
- // Retrieve the document width assumed for scrolling.
- int GetScrollWidth();
-
- // Measure the pixel width of some text in a particular style.
- // NUL terminated text argument.
- // Does not handle tab or control characters.
- int TextWidth(int style, const wxString& text);
-
- // Sets the scroll range so that maximum scroll position has
- // the last line at the bottom of the view (default).
- // Setting this to false allows scrolling one page below the last line.
- void SetEndAtLastLine(bool endAtLastLine);
-
- // Retrieve whether the maximum scroll position has the last
- // line at the bottom of the view.
- bool GetEndAtLastLine();
-
- // Retrieve the height of a particular line of text in pixels.
- int TextHeight(int line);
-
- // Show or hide the vertical scroll bar.
- void SetUseVerticalScrollBar(bool show);
-
- // Is the vertical scroll bar visible?
- bool GetUseVerticalScrollBar();
-
- // Append a string to the end of the document without changing the selection.
- void AppendText(const wxString& text);
-
- // Is drawing done in two phases with backgrounds drawn before foregrounds?
- bool GetTwoPhaseDraw();
-
- // In twoPhaseDraw mode, drawing is performed in two phases, first the background
- // and then the foreground. This avoids chopping off characters that overlap the next run.
- void SetTwoPhaseDraw(bool twoPhase);
-
- // Make the target range start and end be the same as the selection range start and end.
- void TargetFromSelection();
-
- // Join the lines in the target.
- void LinesJoin();
-
- // Split the lines in the target into lines that are less wide than pixelWidth
- // where possible.
- void LinesSplit(int pixelWidth);
-
- // Set the colours used as a chequerboard pattern in the fold margin
- void SetFoldMarginColour(bool useSetting, const wxColour& back);
- void SetFoldMarginHiColour(bool useSetting, const wxColour& fore);
-
- // Move caret down one line.
- void LineDown();
-
- // Move caret down one line extending selection to new caret position.
- void LineDownExtend();
-
- // Move caret up one line.
- void LineUp();
-
- // Move caret up one line extending selection to new caret position.
- void LineUpExtend();
-
- // Move caret left one character.
- void CharLeft();
-
- // Move caret left one character extending selection to new caret position.
- void CharLeftExtend();
-
- // Move caret right one character.
- void CharRight();
-
- // Move caret right one character extending selection to new caret position.
- void CharRightExtend();
-
- // Move caret left one word.
- void WordLeft();
-
- // Move caret left one word extending selection to new caret position.
- void WordLeftExtend();
-
- // Move caret right one word.
- void WordRight();
-
- // Move caret right one word extending selection to new caret position.
- void WordRightExtend();
-
- // Move caret to first position on line.
- void Home();
-
- // Move caret to first position on line extending selection to new caret position.
- void HomeExtend();
-
- // Move caret to last position on line.
- void LineEnd();
-
- // Move caret to last position on line extending selection to new caret position.
- void LineEndExtend();
-
- // Move caret to first position in document.
- void DocumentStart();
-
- // Move caret to first position in document extending selection to new caret position.
- void DocumentStartExtend();
-
- // Move caret to last position in document.
- void DocumentEnd();
-
- // Move caret to last position in document extending selection to new caret position.
- void DocumentEndExtend();
-
- // Move caret one page up.
- void PageUp();
-
- // Move caret one page up extending selection to new caret position.
- void PageUpExtend();
-
- // Move caret one page down.
- void PageDown();
-
- // Move caret one page down extending selection to new caret position.
- void PageDownExtend();
-
- // Switch from insert to overtype mode or the reverse.
- void EditToggleOvertype();
-
- // Cancel any modes such as call tip or auto-completion list display.
- void Cancel();
-
- // Delete the selection or if no selection, the character before the caret.
- void DeleteBack();
-
- // If selection is empty or all on one line replace the selection with a tab character.
- // If more than one line selected, indent the lines.
- void Tab();
-
- // Dedent the selected lines.
- void BackTab();
-
- // Insert a new line, may use a CRLF, CR or LF depending on EOL mode.
- void NewLine();
-
- // Insert a Form Feed character.
- void FormFeed();
-
- // Move caret to before first visible character on line.
- // If already there move to first character on line.
- void VCHome();
-
- // Like VCHome but extending selection to new caret position.
- void VCHomeExtend();
-
- // Magnify the displayed text by increasing the sizes by 1 point.
- void ZoomIn();
-
- // Make the displayed text smaller by decreasing the sizes by 1 point.
- void ZoomOut();
-
- // Delete the word to the left of the caret.
- void DelWordLeft();
-
- // Delete the word to the right of the caret.
- void DelWordRight();
-
- // Cut the line containing the caret.
- void LineCut();
-
- // Delete the line containing the caret.
- void LineDelete();
-
- // Switch the current line with the previous.
- void LineTranspose();
-
- // Duplicate the current line.
- void LineDuplicate();
-
- // Transform the selection to lower case.
- void LowerCase();
-
- // Transform the selection to upper case.
- void UpperCase();
-
- // Scroll the document down, keeping the caret visible.
- void LineScrollDown();
-
- // Scroll the document up, keeping the caret visible.
- void LineScrollUp();
-
- // Delete the selection or if no selection, the character before the caret.
- // Will not delete the character before at the start of a line.
- void DeleteBackNotLine();
-
- // Move caret to first position on display line.
- void HomeDisplay();
-
- // Move caret to first position on display line extending selection to
- // new caret position.
- void HomeDisplayExtend();
-
- // Move caret to last position on display line.
- void LineEndDisplay();
-
- // Move caret to last position on display line extending selection to new
- // caret position.
- void LineEndDisplayExtend();
-
- // These are like their namesakes Home(Extend)?, LineEnd(Extend)?, VCHome(Extend)?
- // except they behave differently when word-wrap is enabled:
- // They go first to the start / end of the display line, like (Home|LineEnd)Display
- // The difference is that, the cursor is already at the point, it goes on to the start
- // or end of the document line, as appropriate for (Home|LineEnd|VCHome)(Extend)?.
- void HomeWrap();
- void HomeWrapExtend();
- void LineEndWrap();
- void LineEndWrapExtend();
- void VCHomeWrap();
- void VCHomeWrapExtend();
-
- // Copy the line containing the caret.
- void LineCopy();
-
- // Move the caret inside current view if it's not there already.
- void MoveCaretInsideView();
-
- // How many characters are on a line, not including end of line characters?
- int LineLength(int line);
-
- // Highlight the characters at two positions.
- void BraceHighlight(int pos1, int pos2);
-
- // Highlight the character at a position indicating there is no matching brace.
- void BraceBadLight(int pos);
-
- // Find the position of a matching brace or INVALID_POSITION if no match.
- int BraceMatch(int pos);
-
- // Are the end of line characters visible?
- bool GetViewEOL();
-
- // Make the end of line characters visible or invisible.
- void SetViewEOL(bool visible);
-
- // Retrieve a pointer to the document object.
- void* GetDocPointer();
-
- // Change the document object used.
- void SetDocPointer(void* docPointer);
-
- // Set which document modification events are sent to the container.
- void SetModEventMask(int mask);
-
- // Retrieve the column number which text should be kept within.
- int GetEdgeColumn();
-
- // Set the column number of the edge.
- // If text goes past the edge then it is highlighted.
- void SetEdgeColumn(int column);
-
- // Retrieve the edge highlight mode.
- int GetEdgeMode();
-
- // The edge may be displayed by a line (EDGE_LINE) or by highlighting text that
- // goes beyond it (EDGE_BACKGROUND) or not displayed at all (EDGE_NONE).
- void SetEdgeMode(int mode);
-
- // Retrieve the colour used in edge indication.
- wxColour GetEdgeColour();
-
- // Change the colour used in edge indication.
- void SetEdgeColour(const wxColour& edgeColour);
-
- // Sets the current caret position to be the search anchor.
- void SearchAnchor();
-
- // Find some text starting at the search anchor.
- // Does not ensure the selection is visible.
- int SearchNext(int flags, const wxString& text);
-
- // Find some text starting at the search anchor and moving backwards.
- // Does not ensure the selection is visible.
- int SearchPrev(int flags, const wxString& text);
-
- // Retrieves the number of lines completely visible.
- int LinesOnScreen();
-
- // Set whether a pop up menu is displayed automatically when the user presses
- // the wrong mouse button.
- void UsePopUp(bool allowPopUp);
-
- // Is the selection rectangular? The alternative is the more common stream selection.
- bool SelectionIsRectangle();
-
- // Set the zoom level. This number of points is added to the size of all fonts.
- // It may be positive to magnify or negative to reduce.
- void SetZoom(int zoom);
-
- // Retrieve the zoom level.
- int GetZoom();
-
- // Create a new document object.
- // Starts with reference count of 1 and not selected into editor.
- void* CreateDocument();
-
- // Extend life of document.
- void AddRefDocument(void* docPointer);
-
- // Release a reference to the document, deleting document if it fades to black.
- void ReleaseDocument(void* docPointer);
-
- // Get which document modification events are sent to the container.
- int GetModEventMask();
-
- // Change internal focus flag.
- void SetSTCFocus(bool focus);
-
- // Get internal focus flag.
- bool GetSTCFocus();
-
- // Change error status - 0 = OK.
- void SetStatus(int statusCode);
-
- // Get error status.
- int GetStatus();
-
- // Set whether the mouse is captured when its button is pressed.
- void SetMouseDownCaptures(bool captures);
-
- // Get whether mouse gets captured.
- bool GetMouseDownCaptures();
-
- // Sets the cursor to one of the SC_CURSOR* values.
- void SetSTCCursor(int cursorType);
-
- // Get cursor type.
- int GetSTCCursor();
-
- // Change the way control characters are displayed:
- // If symbol is < 32, keep the drawn way, else, use the given character.
- void SetControlCharSymbol(int symbol);
-
- // Get the way control characters are displayed.
- int GetControlCharSymbol();
-
- // Move to the previous change in capitalisation.
- void WordPartLeft();
-
- // Move to the previous change in capitalisation extending selection
- // to new caret position.
- void WordPartLeftExtend();
-
- // Move to the change next in capitalisation.
- void WordPartRight();
-
- // Move to the next change in capitalisation extending selection
- // to new caret position.
- void WordPartRightExtend();
-
- // Set the way the display area is determined when a particular line
- // is to be moved to by Find, FindNext, GotoLine, etc.
- void SetVisiblePolicy(int visiblePolicy, int visibleSlop);
-
- // Delete back from the current position to the start of the line.
- void DelLineLeft();
-
- // Delete forwards from the current position to the end of the line.
- void DelLineRight();
-
- // Get and Set the xOffset (ie, horizonal scroll position).
- void SetXOffset(int newOffset);
- int GetXOffset();
-
- // Set the last x chosen value to be the caret x position.
- void ChooseCaretX();
-
- // Set the way the caret is kept visible when going sideway.
- // The exclusion zone is given in pixels.
- void SetXCaretPolicy(int caretPolicy, int caretSlop);
-
- // Set the way the line the caret is on is kept visible.
- // The exclusion zone is given in lines.
- void SetYCaretPolicy(int caretPolicy, int caretSlop);
-
- // Set printing to line wrapped (SC_WRAP_WORD) or not line wrapped (SC_WRAP_NONE).
- void SetPrintWrapMode(int mode);
-
- // Is printing line wrapped?
- int GetPrintWrapMode();
-
- // Set a fore colour for active hotspots.
- void SetHotspotActiveForeground(bool useSetting, const wxColour& fore);
-
- // Set a back colour for active hotspots.
- void SetHotspotActiveBackground(bool useSetting, const wxColour& back);
-
- // Enable / Disable underlining active hotspots.
- void SetHotspotActiveUnderline(bool underline);
-
- // Limit hotspots to single line so hotspots on two lines don't merge.
- void SetHotspotSingleLine(bool singleLine);
-
- // Move caret between paragraphs (delimited by empty lines).
- void ParaDown();
- void ParaDownExtend();
- void ParaUp();
- void ParaUpExtend();
-
- // Given a valid document position, return the previous position taking code
- // page into account. Returns 0 if passed 0.
- int PositionBefore(int pos);
-
- // Given a valid document position, return the next position taking code
- // page into account. Maximum value returned is the last position in the document.
- int PositionAfter(int pos);
-
- // Copy a range of text to the clipboard. Positions are clipped into the document.
- void CopyRange(int start, int end);
-
- // Copy argument text to the clipboard.
- void CopyText(int length, const wxString& text);
-
- // Set the selection mode to stream (SC_SEL_STREAM) or rectangular (SC_SEL_RECTANGLE) or
- // by lines (SC_SEL_LINES).
- void SetSelectionMode(int mode);
-
- // Get the mode of the current selection.
- int GetSelectionMode();
-
- // Retrieve the position of the start of the selection at the given line (INVALID_POSITION if no selection on this line).
- int GetLineSelStartPosition(int line);
-
- // Retrieve the position of the end of the selection at the given line (INVALID_POSITION if no selection on this line).
- int GetLineSelEndPosition(int line);
-
- // Move caret down one line, extending rectangular selection to new caret position.
- void LineDownRectExtend();
-
- // Move caret up one line, extending rectangular selection to new caret position.
- void LineUpRectExtend();
-
- // Move caret left one character, extending rectangular selection to new caret position.
- void CharLeftRectExtend();
-
- // Move caret right one character, extending rectangular selection to new caret position.
- void CharRightRectExtend();
-
- // Move caret to first position on line, extending rectangular selection to new caret position.
- void HomeRectExtend();
-
- // Move caret to before first visible character on line.
- // If already there move to first character on line.
- // In either case, extend rectangular selection to new caret position.
- void VCHomeRectExtend();
-
- // Move caret to last position on line, extending rectangular selection to new caret position.
- void LineEndRectExtend();
-
- // Move caret one page up, extending rectangular selection to new caret position.
- void PageUpRectExtend();
-
- // Move caret one page down, extending rectangular selection to new caret position.
- void PageDownRectExtend();
-
- // Move caret to top of page, or one page up if already at top of page.
- void StutteredPageUp();
-
- // Move caret to top of page, or one page up if already at top of page, extending selection to new caret position.
- void StutteredPageUpExtend();
-
- // Move caret to bottom of page, or one page down if already at bottom of page.
- void StutteredPageDown();
-
- // Move caret to bottom of page, or one page down if already at bottom of page, extending selection to new caret position.
- void StutteredPageDownExtend();
-
- // Move caret left one word, position cursor at end of word.
- void WordLeftEnd();
-
- // Move caret left one word, position cursor at end of word, extending selection to new caret position.
- void WordLeftEndExtend();
-
- // Move caret right one word, position cursor at end of word.
- void WordRightEnd();
-
- // Move caret right one word, position cursor at end of word, extending selection to new caret position.
- void WordRightEndExtend();
-
- // Set the set of characters making up whitespace for when moving or selecting by word.
- // Should be called after SetWordChars.
- void SetWhitespaceChars(const wxString& characters);
-
- // Reset the set of characters for whitespace and word characters to the defaults.
- void SetCharsDefault();
-
- // Get currently selected item position in the auto-completion list
- int AutoCompGetCurrent();
-
- // 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);
-
- // Can the caret preferred x position only be changed by explicit movement commands?
- bool GetCaretSticky();
-
- // Stop the caret preferred x position changing when the user types.
- void SetCaretSticky(bool useCaretStickyBehaviour);
-
- // Switch between sticky and non-sticky: meant to be bound to a key.
- void ToggleCaretSticky();
-
- // Enable/Disable convert-on-paste for line endings
- void SetPasteConvertEndings(bool convert);
-
- // Get convert-on-paste setting
- bool GetPasteConvertEndings();
-
- // Duplicate the selection. If selection empty duplicate the line containing the caret.
- void SelectionDuplicate();
-
- // Set background alpha of the caret line.
- void SetCaretLineBackAlpha(int alpha);
-
- // Get the background alpha of the caret line.
- int GetCaretLineBackAlpha();
-
- // Start notifying the container of all key presses and commands.
- void StartRecord();
-
- // Stop notifying the container of all key presses and commands.
- void StopRecord();
-
- // Set the lexing language of the document.
- void SetLexer(int lexer);
-
- // Retrieve the lexing language of the document.
- int GetLexer();
-
- // Colourise a segment of the document using the current lexing language.
- void Colourise(int start, int end);
-
- // Set up a value that may be used by a lexer for some optional feature.
- void SetProperty(const wxString& key, const wxString& value);
-
- // Set up the key words used by the lexer.
- void SetKeyWords(int keywordSet, const wxString& keyWords);
-
- // Set the lexing language of the document based on string name.
- void SetLexerLanguage(const wxString& language);
-
- // Retrieve a 'property' value previously set with SetProperty.
- wxString GetProperty(const wxString& key);
-
- // Retrieve a 'property' value previously set with SetProperty,
- // with '$()' variable replacement on returned buffer.
- wxString GetPropertyExpanded(const wxString& key);
-
- // Retrieve a 'property' value previously set with SetProperty,
- // interpreted as an int AFTER any '$()' variable replacement.
- int GetPropertyInt(const wxString& key);
-
- // Retrieve the number of bits the current lexer needs for styling.
- int GetStyleBitsNeeded();
-
-// END of generated section
-//----------------------------------------------------------------------
-// Others...
-
-
- // Returns the line number of the line with the caret.
- int GetCurrentLine();
-
- // Extract style settings from a spec-string which is composed of one or
- // more of the following comma separated elements:
- //
- // bold turns on bold
- // italic turns on italics
- // fore:[name or #RRGGBB] sets the foreground colour
- // back:[name or #RRGGBB] sets the background colour
- // face:[facename] sets the font face name to use
- // size:[num] sets the font size in points
- // eol turns on eol filling
- // underline turns on underlining
- //
- void StyleSetSpec(int styleNum, const wxString& spec);
-
-
-
- // Set style size, face, bold, italic, and underline attributes from
- // a wxFont's attributes.
- void StyleSetFont(int styleNum, wxFont& font);
-
-
-
- // Set all font style attributes at once.
- void StyleSetFontAttr(int styleNum, int size,
- const wxString& faceName,
- bool bold, bool italic,
- bool underline,
- wxFontEncoding encoding=wxFONTENCODING_DEFAULT);
-
-
- // Set the character set of the font in a style. Converts the Scintilla
- // character set values to a wxFontEncoding.
- void StyleSetCharacterSet(int style, int characterSet);
-
- // Set the font encoding to be used by a style.
- void StyleSetFontEncoding(int style, wxFontEncoding encoding);
-
-
- // Perform one of the operations defined by the wxSTC_CMD_* constants.
- void CmdKeyExecute(int cmd);
-
-
- // Set the left and right margin in the edit area, measured in pixels.
- void SetMargins(int left, int right);
-
-
- // Retrieve the start and end positions of the current selection.
-#ifdef SWIG
- void GetSelection(int* OUTPUT, int* OUTPUT);
-#else
- void GetSelection(int* startPos, int* endPos);
-#endif
-
- // Retrieve the point in the window where a position is displayed.
- wxPoint PointFromPosition(int pos);
-
-
- // Scroll enough to make the given line visible
- void ScrollToLine(int line);
-
-
- // Scroll enough to make the given column visible
- void ScrollToColumn(int column);
-
-
- // Send a message to Scintilla
- wxIntPtr SendMsg(int msg, wxUIntPtr wp=0, wxIntPtr lp=0);
-
-
- // Set the vertical scrollbar to use instead of the ont that's built-in.
- void SetVScrollBar(wxScrollBar* bar);
-
-
- // Set the horizontal scrollbar to use instead of the ont that's built-in.
- void SetHScrollBar(wxScrollBar* bar);
-
- // Can be used to prevent the EVT_CHAR handler from adding the char
- bool GetLastKeydownProcessed() { return m_lastKeyDownConsumed; }
- void SetLastKeydownProcessed(bool val) { m_lastKeyDownConsumed = val; }
-
- // Write the contents of the editor to filename
- bool SaveFile(const wxString& filename);
-
- // Load the contents of filename into the editor
- bool LoadFile(const wxString& filename);
-
-#ifdef STC_USE_DND
- // Allow for simulating a DnD DragOver
- wxDragResult DoDragOver(wxCoord x, wxCoord y, wxDragResult def);
-
- // Allow for simulating a DnD DropText
- bool DoDropText(long x, long y, const wxString& data);
-#endif
-
- // Specify whether anti-aliased fonts should be used. Will have no effect
- // on some platforms, but on some (wxMac for example) can greatly improve
- // performance.
- void SetUseAntiAliasing(bool useAA);
-
- // Returns the current UseAntiAliasing setting.
- bool GetUseAntiAliasing();
-
-
-
- // The following methods are nearly equivallent to their similarly named
- // cousins above. The difference is that these methods bypass wxString
- // and always use a char* even if used in a unicode build of wxWidgets.
- // In that case the character data will be utf-8 encoded since that is
- // what is used internally by Scintilla in unicode builds.
-
- // Add text to the document at current position.
- void AddTextRaw(const char* text);
-
- // Insert string at a position.
- void InsertTextRaw(int pos, const char* text);
-
- // Retrieve the text of the line containing the caret.
- // Returns the index of the caret on the line.
-#ifdef SWIG
- wxCharBuffer GetCurLineRaw(int* OUTPUT);
-#else
- wxCharBuffer GetCurLineRaw(int* linePos=NULL);
-#endif
-
- // Retrieve the contents of a line.
- wxCharBuffer GetLineRaw(int line);
-
- // Retrieve the selected text.
- wxCharBuffer GetSelectedTextRaw();
-
- // Retrieve a range of text.
- wxCharBuffer GetTextRangeRaw(int startPos, int endPos);
-
- // Replace the contents of the document with the argument text.
- void SetTextRaw(const char* text);
-
- // Retrieve all the text in the document.
- wxCharBuffer GetTextRaw();
-
- // Append a string to the end of the document without changing the selection.
- void AppendTextRaw(const char* text);
-
-#ifdef SWIG
- %pythoncode "_stc_utf8_methods.py"
-#endif
-//----------------------------------------------------------------------
-
-
-#ifndef SWIG
-protected:
- // Event handlers
- void OnPaint(wxPaintEvent& evt);
- void OnScrollWin(wxScrollWinEvent& evt);
- void OnScroll(wxScrollEvent& evt);
- void OnSize(wxSizeEvent& evt);
- void OnMouseLeftDown(wxMouseEvent& evt);
- void OnMouseMove(wxMouseEvent& evt);
- void OnMouseLeftUp(wxMouseEvent& evt);
- void OnMouseRightUp(wxMouseEvent& evt);
- void OnMouseMiddleUp(wxMouseEvent& evt);
- void OnContextMenu(wxContextMenuEvent& evt);
- void OnMouseWheel(wxMouseEvent& evt);
- void OnChar(wxKeyEvent& evt);
- void OnKeyDown(wxKeyEvent& evt);
- void OnLoseFocus(wxFocusEvent& evt);
- void OnGainFocus(wxFocusEvent& evt);
- void OnSysColourChanged(wxSysColourChangedEvent& evt);
- void OnEraseBackground(wxEraseEvent& evt);
- void OnMenu(wxCommandEvent& evt);
- void OnListBox(wxCommandEvent& evt);
- void OnIdle(wxIdleEvent& evt);
-
- virtual wxSize DoGetBestSize() const;
-
- // Turn notifications from Scintilla into events
- void NotifyChange();
- void NotifyParent(SCNotification* scn);
-
-private:
- DECLARE_EVENT_TABLE()
- DECLARE_DYNAMIC_CLASS(wxStyledTextCtrl)
-
-protected:
-
- ScintillaWX* m_swx;
- wxStopWatch m_stopWatch;
- wxScrollBar* m_vScrollBar;
- wxScrollBar* m_hScrollBar;
-
- bool m_lastKeyDownConsumed;
-
- friend class ScintillaWX;
- friend class Platform;
-#endif
-};
-
-//----------------------------------------------------------------------
-
-class WXDLLIMPEXP_STC wxStyledTextEvent : public wxCommandEvent {
-public:
- wxStyledTextEvent(wxEventType commandType=0, int id=0);
-#ifndef SWIG
- wxStyledTextEvent(const wxStyledTextEvent& event);
-#endif
- ~wxStyledTextEvent() {}
-
- void SetPosition(int pos) { m_position = pos; }
- void SetKey(int k) { m_key = k; }
- void SetModifiers(int m) { m_modifiers = m; }
- void SetModificationType(int t) { m_modificationType = t; }
- void SetText(const wxString& t) { m_text = t; }
- void SetLength(int len) { m_length = len; }
- void SetLinesAdded(int num) { m_linesAdded = num; }
- void SetLine(int val) { m_line = val; }
- void SetFoldLevelNow(int val) { m_foldLevelNow = val; }
- void SetFoldLevelPrev(int val) { m_foldLevelPrev = val; }
- void SetMargin(int val) { m_margin = val; }
- void SetMessage(int val) { m_message = val; }
- void SetWParam(int val) { m_wParam = val; }
- void SetLParam(int val) { m_lParam = val; }
- void SetListType(int val) { m_listType = val; }
- void SetX(int val) { m_x = val; }
- void SetY(int val) { m_y = val; }
- void SetDragText(const wxString& val) { m_dragText = val; }
- void SetDragAllowMove(bool val) { m_dragAllowMove = val; }
-#ifdef STC_USE_DND
- void SetDragResult(wxDragResult val) { m_dragResult = val; }
-#endif
-
- int GetPosition() const { return m_position; }
- int GetKey() const { return m_key; }
- int GetModifiers() const { return m_modifiers; }
- int GetModificationType() const { return m_modificationType; }
- wxString GetText() const { return m_text; }
- int GetLength() const { return m_length; }
- int GetLinesAdded() const { return m_linesAdded; }
- int GetLine() const { return m_line; }
- int GetFoldLevelNow() const { return m_foldLevelNow; }
- int GetFoldLevelPrev() const { return m_foldLevelPrev; }
- int GetMargin() const { return m_margin; }
- int GetMessage() const { return m_message; }
- int GetWParam() const { return m_wParam; }
- int GetLParam() const { return m_lParam; }
- int GetListType() const { return m_listType; }
- int GetX() const { return m_x; }
- int GetY() const { return m_y; }
- wxString GetDragText() { return m_dragText; }
- bool GetDragAllowMove() { return m_dragAllowMove; }
-#ifdef STC_USE_DND
- wxDragResult GetDragResult() { return m_dragResult; }
-#endif
-
- bool GetShift() const;
- bool GetControl() const;
- bool GetAlt() const;
-
- virtual wxEvent* Clone() const { return new wxStyledTextEvent(*this); }
-
-#ifndef SWIG
-private:
- DECLARE_DYNAMIC_CLASS(wxStyledTextEvent)
-
- int m_position;
- int m_key;
- int m_modifiers;
-
- int m_modificationType; // wxEVT_STC_MODIFIED
- wxString m_text;
- int m_length;
- int m_linesAdded;
- int m_line;
- int m_foldLevelNow;
- int m_foldLevelPrev;
-
- int m_margin; // wxEVT_STC_MARGINCLICK
-
- int m_message; // wxEVT_STC_MACRORECORD
- int m_wParam;
- int m_lParam;
-
- int m_listType;
- int m_x;
- int m_y;
-
- wxString m_dragText; // wxEVT_STC_START_DRAG, wxEVT_STC_DO_DROP
- bool m_dragAllowMove; // wxEVT_STC_START_DRAG
-
-#if wxUSE_DRAG_AND_DROP
- wxDragResult m_dragResult; // wxEVT_STC_DRAG_OVER,wxEVT_STC_DO_DROP
-#endif
-#endif
-};
-
-
-
-#ifndef SWIG
-BEGIN_DECLARE_EVENT_TYPES()
- DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_STC, wxEVT_STC_CHANGE, 1650)
- DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_STC, wxEVT_STC_STYLENEEDED, 1651)
- DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_STC, wxEVT_STC_CHARADDED, 1652)
- DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_STC, wxEVT_STC_SAVEPOINTREACHED, 1653)
- DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_STC, wxEVT_STC_SAVEPOINTLEFT, 1654)
- DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_STC, wxEVT_STC_ROMODIFYATTEMPT, 1655)
- DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_STC, wxEVT_STC_KEY, 1656)
- DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_STC, wxEVT_STC_DOUBLECLICK, 1657)
- DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_STC, wxEVT_STC_UPDATEUI, 1658)
- DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_STC, wxEVT_STC_MODIFIED, 1659)
- DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_STC, wxEVT_STC_MACRORECORD, 1660)
- DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_STC, wxEVT_STC_MARGINCLICK, 1661)
- DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_STC, wxEVT_STC_NEEDSHOWN, 1662)
- DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_STC, wxEVT_STC_PAINTED, 1664)
- DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_STC, wxEVT_STC_USERLISTSELECTION, 1665)
- DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_STC, wxEVT_STC_URIDROPPED, 1666)
- DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_STC, wxEVT_STC_DWELLSTART, 1667)
- DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_STC, wxEVT_STC_DWELLEND, 1668)
- DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_STC, wxEVT_STC_START_DRAG, 1669)
- DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_STC, wxEVT_STC_DRAG_OVER, 1670)
- DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_STC, wxEVT_STC_DO_DROP, 1671)
- DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_STC, wxEVT_STC_ZOOM, 1672)
- DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_STC, wxEVT_STC_HOTSPOT_CLICK, 1673)
- DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_STC, wxEVT_STC_HOTSPOT_DCLICK, 1674)
- DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_STC, wxEVT_STC_CALLTIP_CLICK, 1675)
- DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_STC, wxEVT_STC_AUTOCOMP_SELECTION, 1676)
-END_DECLARE_EVENT_TYPES()
-#else
- enum {
- wxEVT_STC_CHANGE,
- wxEVT_STC_STYLENEEDED,
- wxEVT_STC_CHARADDED,
- wxEVT_STC_SAVEPOINTREACHED,
- wxEVT_STC_SAVEPOINTLEFT,
- wxEVT_STC_ROMODIFYATTEMPT,
- wxEVT_STC_KEY,
- wxEVT_STC_DOUBLECLICK,
- wxEVT_STC_UPDATEUI,
- wxEVT_STC_MODIFIED,
- wxEVT_STC_MACRORECORD,
- wxEVT_STC_MARGINCLICK,
- wxEVT_STC_NEEDSHOWN,
- wxEVT_STC_PAINTED,
- wxEVT_STC_USERLISTSELECTION,
- wxEVT_STC_URIDROPPED,
- wxEVT_STC_DWELLSTART,
- wxEVT_STC_DWELLEND,
- wxEVT_STC_START_DRAG,
- wxEVT_STC_DRAG_OVER,
- wxEVT_STC_DO_DROP,
- wxEVT_STC_ZOOM,
- wxEVT_STC_HOTSPOT_CLICK,
- wxEVT_STC_HOTSPOT_DCLICK,
- wxEVT_STC_CALLTIP_CLICK,
- wxEVT_STC_AUTOCOMP_SELECTION
- };
-#endif
-
-
-
-#ifndef SWIG
-typedef void (wxEvtHandler::*wxStyledTextEventFunction)(wxStyledTextEvent&);
-
-#define EVT_STC_CHANGE(id, fn) DECLARE_EVENT_TABLE_ENTRY( wxEVT_STC_CHANGE, id, wxID_ANY, (wxObjectEventFunction) (wxEventFunction) wxStaticCastEvent( wxStyledTextEventFunction, & fn ), (wxObject *) NULL ),
-#define EVT_STC_STYLENEEDED(id, fn) DECLARE_EVENT_TABLE_ENTRY( wxEVT_STC_STYLENEEDED, id, wxID_ANY, (wxObjectEventFunction) (wxEventFunction) wxStaticCastEvent( wxStyledTextEventFunction, & fn ), (wxObject *) NULL ),
-#define EVT_STC_CHARADDED(id, fn) DECLARE_EVENT_TABLE_ENTRY( wxEVT_STC_CHARADDED, id, wxID_ANY, (wxObjectEventFunction) (wxEventFunction) wxStaticCastEvent( wxStyledTextEventFunction, & fn ), (wxObject *) NULL ),
-#define EVT_STC_SAVEPOINTREACHED(id, fn) DECLARE_EVENT_TABLE_ENTRY( wxEVT_STC_SAVEPOINTREACHED, id, wxID_ANY, (wxObjectEventFunction) (wxEventFunction) wxStaticCastEvent( wxStyledTextEventFunction, & fn ), (wxObject *) NULL ),
-#define EVT_STC_SAVEPOINTLEFT(id, fn) DECLARE_EVENT_TABLE_ENTRY( wxEVT_STC_SAVEPOINTLEFT, id, wxID_ANY, (wxObjectEventFunction) (wxEventFunction) wxStaticCastEvent( wxStyledTextEventFunction, & fn ), (wxObject *) NULL ),
-#define EVT_STC_ROMODIFYATTEMPT(id, fn) DECLARE_EVENT_TABLE_ENTRY( wxEVT_STC_ROMODIFYATTEMPT, id, wxID_ANY, (wxObjectEventFunction) (wxEventFunction) wxStaticCastEvent( wxStyledTextEventFunction, & fn ), (wxObject *) NULL ),
-#define EVT_STC_KEY(id, fn) DECLARE_EVENT_TABLE_ENTRY( wxEVT_STC_KEY, id, wxID_ANY, (wxObjectEventFunction) (wxEventFunction) wxStaticCastEvent( wxStyledTextEventFunction, & fn ), (wxObject *) NULL ),
-#define EVT_STC_DOUBLECLICK(id, fn) DECLARE_EVENT_TABLE_ENTRY( wxEVT_STC_DOUBLECLICK, id, wxID_ANY, (wxObjectEventFunction) (wxEventFunction) wxStaticCastEvent( wxStyledTextEventFunction, & fn ), (wxObject *) NULL ),
-#define EVT_STC_UPDATEUI(id, fn) DECLARE_EVENT_TABLE_ENTRY( wxEVT_STC_UPDATEUI, id, wxID_ANY, (wxObjectEventFunction) (wxEventFunction) wxStaticCastEvent( wxStyledTextEventFunction, & fn ), (wxObject *) NULL ),
-#define EVT_STC_MODIFIED(id, fn) DECLARE_EVENT_TABLE_ENTRY( wxEVT_STC_MODIFIED, id, wxID_ANY, (wxObjectEventFunction) (wxEventFunction) wxStaticCastEvent( wxStyledTextEventFunction, & fn ), (wxObject *) NULL ),
-#define EVT_STC_MACRORECORD(id, fn) DECLARE_EVENT_TABLE_ENTRY( wxEVT_STC_MACRORECORD, id, wxID_ANY, (wxObjectEventFunction) (wxEventFunction) wxStaticCastEvent( wxStyledTextEventFunction, & fn ), (wxObject *) NULL ),
-#define EVT_STC_MARGINCLICK(id, fn) DECLARE_EVENT_TABLE_ENTRY( wxEVT_STC_MARGINCLICK, id, wxID_ANY, (wxObjectEventFunction) (wxEventFunction) wxStaticCastEvent( wxStyledTextEventFunction, & fn ), (wxObject *) NULL ),
-#define EVT_STC_NEEDSHOWN(id, fn) DECLARE_EVENT_TABLE_ENTRY( wxEVT_STC_NEEDSHOWN, id, wxID_ANY, (wxObjectEventFunction) (wxEventFunction) wxStaticCastEvent( wxStyledTextEventFunction, & fn ), (wxObject *) NULL ),
-#define EVT_STC_PAINTED(id, fn) DECLARE_EVENT_TABLE_ENTRY( wxEVT_STC_PAINTED, id, wxID_ANY, (wxObjectEventFunction) (wxEventFunction) wxStaticCastEvent( wxStyledTextEventFunction, & fn ), (wxObject *) NULL ),
-#define EVT_STC_USERLISTSELECTION(id, fn) DECLARE_EVENT_TABLE_ENTRY( wxEVT_STC_USERLISTSELECTION, id, wxID_ANY, (wxObjectEventFunction) (wxEventFunction) wxStaticCastEvent( wxStyledTextEventFunction, & fn ), (wxObject *) NULL ),
-#define EVT_STC_URIDROPPED(id, fn) DECLARE_EVENT_TABLE_ENTRY( wxEVT_STC_URIDROPPED, id, wxID_ANY, (wxObjectEventFunction) (wxEventFunction) wxStaticCastEvent( wxStyledTextEventFunction, & fn ), (wxObject *) NULL ),
-#define EVT_STC_DWELLSTART(id, fn) DECLARE_EVENT_TABLE_ENTRY( wxEVT_STC_DWELLSTART, id, wxID_ANY, (wxObjectEventFunction) (wxEventFunction) wxStaticCastEvent( wxStyledTextEventFunction, & fn ), (wxObject *) NULL ),
-#define EVT_STC_DWELLEND(id, fn) DECLARE_EVENT_TABLE_ENTRY( wxEVT_STC_DWELLEND, id, wxID_ANY, (wxObjectEventFunction) (wxEventFunction) wxStaticCastEvent( wxStyledTextEventFunction, & fn ), (wxObject *) NULL ),
-#define EVT_STC_START_DRAG(id, fn) DECLARE_EVENT_TABLE_ENTRY( wxEVT_STC_START_DRAG, id, wxID_ANY, (wxObjectEventFunction) (wxEventFunction) wxStaticCastEvent( wxStyledTextEventFunction, & fn ), (wxObject *) NULL ),
-#define EVT_STC_DRAG_OVER(id, fn) DECLARE_EVENT_TABLE_ENTRY( wxEVT_STC_DRAG_OVER, id, wxID_ANY, (wxObjectEventFunction) (wxEventFunction) wxStaticCastEvent( wxStyledTextEventFunction, & fn ), (wxObject *) NULL ),
-#define EVT_STC_DO_DROP(id, fn) DECLARE_EVENT_TABLE_ENTRY( wxEVT_STC_DO_DROP, id, wxID_ANY, (wxObjectEventFunction) (wxEventFunction) wxStaticCastEvent( wxStyledTextEventFunction, & fn ), (wxObject *) NULL ),
-#define EVT_STC_ZOOM(id, fn) DECLARE_EVENT_TABLE_ENTRY( wxEVT_STC_ZOOM, id, wxID_ANY, (wxObjectEventFunction) (wxEventFunction) wxStaticCastEvent( wxStyledTextEventFunction, & fn ), (wxObject *) NULL ),
-#define EVT_STC_HOTSPOT_CLICK(id, fn) DECLARE_EVENT_TABLE_ENTRY( wxEVT_STC_HOTSPOT_CLICK, id, wxID_ANY, (wxObjectEventFunction) (wxEventFunction) wxStaticCastEvent( wxStyledTextEventFunction, & fn ), (wxObject *) NULL ),
-#define EVT_STC_HOTSPOT_DCLICK(id, fn) DECLARE_EVENT_TABLE_ENTRY( wxEVT_STC_HOTSPOT_DCLICK, id, wxID_ANY, (wxObjectEventFunction) (wxEventFunction) wxStaticCastEvent( wxStyledTextEventFunction, & fn ), (wxObject *) NULL ),
-#define EVT_STC_CALLTIP_CLICK(id, fn)) DECLARE_EVENT_TABLE_ENTRY( wxEVT_STC_CALLTIP_CLICK, id, wxID_ANY, (wxObjectEventFunction) (wxEventFunction) wxStaticCastEvent( wxStyledTextEventFunction, & fn ), (wxObject *) NULL ),
-#define EVT_STC_AUTOCOMP_SELECTION(id, fn) DECLARE_EVENT_TABLE_ENTRY( wxEVT_STC_AUTOCOMP_SELECTION, id, wxID_ANY, (wxObjectEventFunction) (wxEventFunction) wxStaticCastEvent( wxStyledTextEventFunction, & fn ), (wxObject *) NULL ),
-#endif
-
-//----------------------------------------------------------------------
-// Utility functions used within wxSTC
-
-#ifndef SWIG
-#if wxUSE_UNICODE
-
-WXDLLIMPEXP_STC wxString stc2wx(const char* str);
-WXDLLIMPEXP_STC wxString stc2wx(const char* str, size_t len);
-WXDLLIMPEXP_STC const wxWX2MBbuf wx2stc(const wxString& str);
-
-#else // not UNICODE
-
-inline wxString stc2wx(const char* str) {
- return wxString(str);
-}
-inline wxString stc2wx(const char* str, size_t len) {
- return wxString(str, len);
-}
-inline const wxWX2MBbuf wx2stc(const wxString& str) {
- return str.mbc_str();
-}
-
-#endif // UNICODE
-#endif // SWIG
-
-//----------------------------------------------------------------------
-#endif
-
-
diff --git a/src/plugins/contrib/wxSmithSTC/stc/scintilla/README.txt b/src/plugins/contrib/wxSmithSTC/stc/scintilla/README.txt
deleted file mode 100644
index 89ff867d44..0000000000
--- a/src/plugins/contrib/wxSmithSTC/stc/scintilla/README.txt
+++ /dev/null
@@ -1,7 +0,0 @@
-This directory contains copies of the scintilla/src and
-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.70
-
diff --git a/src/plugins/contrib/wxSmithSTC/stc/scintilla/include/Accessor.h b/src/plugins/contrib/wxSmithSTC/stc/scintilla/include/Accessor.h
deleted file mode 100644
index 0b2c4baee2..0000000000
--- a/src/plugins/contrib/wxSmithSTC/stc/scintilla/include/Accessor.h
+++ /dev/null
@@ -1,78 +0,0 @@
-// Scintilla source code edit control
-/** @file Accessor.h
- ** Rapid easy access to contents of a Scintilla.
- **/
-// Copyright 1998-2001 by Neil Hodgson
-// The License.txt file describes the conditions under which this software may be distributed.
-
-enum { wsSpace = 1, wsTab = 2, wsSpaceTab = 4, wsInconsistent=8};
-
-class Accessor;
-
-typedef bool (*PFNIsCommentLeader)(Accessor &styler, int pos, int len);
-
-/**
- * Interface to data in a Scintilla.
- */
-class Accessor {
-protected:
- enum {extremePosition=0x7FFFFFFF};
- /** @a bufferSize is a trade off between time taken to copy the characters
- * and retrieval overhead.
- * @a slopSize positions the buffer before the desired position
- * in case there is some backtracking. */
- enum {bufferSize=4000, slopSize=bufferSize/8};
- char buf[bufferSize+1];
- int startPos;
- int endPos;
- int codePage;
-
- virtual bool InternalIsLeadByte(char ch)=0;
- virtual void Fill(int position)=0;
-
-public:
- Accessor() : startPos(extremePosition), endPos(0), codePage(0) {}
- virtual ~Accessor() {}
- char operator[](int position) {
- if (position < startPos || position >= endPos) {
- Fill(position);
- }
- return buf[position - startPos];
- }
- /** Safe version of operator[], returning a defined value for invalid position. */
- char SafeGetCharAt(int position, char chDefault=' ') {
- if (position < startPos || position >= endPos) {
- Fill(position);
- if (position < startPos || position >= endPos) {
- // Position is outside range of document
- return chDefault;
- }
- }
- return buf[position - startPos];
- }
- bool IsLeadByte(char ch) {
- return codePage && InternalIsLeadByte(ch);
- }
- void SetCodePage(int codePage_) { codePage = codePage_; }
-
- virtual bool Match(int pos, const char *s)=0;
- virtual char StyleAt(int position)=0;
- virtual int GetLine(int position)=0;
- virtual int LineStart(int line)=0;
- virtual int LevelAt(int line)=0;
- virtual int Length()=0;
- virtual void Flush()=0;
- virtual int GetLineState(int line)=0;
- virtual int SetLineState(int line, int state)=0;
- virtual int GetPropertyInt(const char *key, int defaultValue=0)=0;
- virtual char *GetProperties()=0;
-
- // Style setting
- virtual void StartAt(unsigned int start, char chMask=31)=0;
- virtual void SetFlags(char chFlags_, char chWhile_)=0;
- virtual unsigned int GetStartSegment()=0;
- virtual void StartSegment(unsigned int pos)=0;
- virtual void ColourTo(unsigned int pos, int chAttr)=0;
- virtual void SetLevel(int line, int level)=0;
- virtual int IndentAmount(int line, int *flags, PFNIsCommentLeader pfnIsCommentLeader = 0)=0;
-};
diff --git a/src/plugins/contrib/wxSmithSTC/stc/scintilla/include/KeyWords.h b/src/plugins/contrib/wxSmithSTC/stc/scintilla/include/KeyWords.h
deleted file mode 100644
index 059ac0da0f..0000000000
--- a/src/plugins/contrib/wxSmithSTC/stc/scintilla/include/KeyWords.h
+++ /dev/null
@@ -1,82 +0,0 @@
-// Scintilla source code edit control
-/** @file KeyWords.h
- ** Colourise for particular languages.
- **/
-// Copyright 1998-2001 by Neil Hodgson
-// The License.txt file describes the conditions under which this software may be distributed.
-
-typedef void (*LexerFunction)(unsigned int startPos, int lengthDoc, int initStyle,
- WordList *keywordlists[], Accessor &styler);
-
-/**
- * A LexerModule is responsible for lexing and folding a particular language.
- * The class maintains a list of LexerModules which can be searched to find a
- * module appropriate to a particular language.
- */
-class LexerModule {
-protected:
- const LexerModule *next;
- int language;
- LexerFunction fnLexer;
- LexerFunction fnFolder;
- const char * const * wordListDescriptions;
- int styleBits;
-
- static const LexerModule *base;
- static int nextLanguage;
-
-public:
- const char *languageName;
- LexerModule(int language_,
- LexerFunction fnLexer_,
- const char *languageName_=0,
- LexerFunction fnFolder_=0,
- const char * const wordListDescriptions_[] = NULL,
- int styleBits_=5);
- virtual ~LexerModule() {
- }
- int GetLanguage() const { return language; }
-
- // -1 is returned if no WordList information is available
- int GetNumWordLists() const;
- const char *GetWordListDescription(int index) const;
-
- int GetStyleBitsNeeded() const;
-
- virtual void Lex(unsigned int startPos, int lengthDoc, int initStyle,
- WordList *keywordlists[], Accessor &styler) const;
- virtual void Fold(unsigned int startPos, int lengthDoc, int initStyle,
- WordList *keywordlists[], Accessor &styler) const;
- static const LexerModule *Find(int language);
- static const LexerModule *Find(const char *languageName);
-};
-
-/**
- * Check if a character is a space.
- * This is ASCII specific but is safe with chars >= 0x80.
- */
-inline bool isspacechar(unsigned char ch) {
- return (ch == ' ') || ((ch >= 0x09) && (ch <= 0x0d));
-}
-
-inline bool iswordchar(char ch) {
- return isascii(ch) && (isalnum(ch) || ch == '.' || ch == '_');
-}
-
-inline bool iswordstart(char ch) {
- return isascii(ch) && (isalnum(ch) || ch == '_');
-}
-
-inline bool isoperator(char ch) {
- if (isascii(ch) && isalnum(ch))
- return false;
- // '.' 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 == ',' || ch == '/' ||
- ch == '?' || ch == '!' || ch == '.' || ch == '~')
- return true;
- return false;
-}
diff --git a/src/plugins/contrib/wxSmithSTC/stc/scintilla/include/Platform.h b/src/plugins/contrib/wxSmithSTC/stc/scintilla/include/Platform.h
deleted file mode 100644
index 9dafa9f7d6..0000000000
--- a/src/plugins/contrib/wxSmithSTC/stc/scintilla/include/Platform.h
+++ /dev/null
@@ -1,517 +0,0 @@
-// Scintilla source code edit control
-/** @file Platform.h
- ** Interface to platform facilities. Also includes some basic utilities.
- ** Implemented in PlatGTK.cxx for GTK+/Linux, PlatWin.cxx for Windows, and PlatWX.cxx for wxWidgets.
- **/
-// Copyright 1998-2003 by Neil Hodgson
-// The License.txt file describes the conditions under which this software may be distributed.
-
-#ifndef PLATFORM_H
-#define PLATFORM_H
-
-// PLAT_GTK = GTK+ on Linux or Win32
-// PLAT_GTK_WIN32 is defined additionally when running PLAT_GTK under Win32
-// PLAT_WIN = Win32 API on Win32 OS
-// PLAT_WX is wxWidgets on any supported platform
-
-#define PLAT_GTK 0
-#define PLAT_GTK_WIN32 0
-#define PLAT_WIN 0
-#define PLAT_WX 0
-#define PLAT_FOX 0
-
-#if defined(FOX)
-#undef PLAT_FOX
-#define PLAT_FOX 1
-
-#elif defined(__WX__)
-#undef PLAT_WX
-#define PLAT_WX 1
-
-#elif defined(GTK)
-#undef PLAT_GTK
-#define PLAT_GTK 1
-
-#ifdef _MSC_VER
-#undef PLAT_GTK_WIN32
-#define PLAT_GTK_WIN32 1
-#endif
-
-#else
-#undef PLAT_WIN
-#define PLAT_WIN 1
-
-#endif
-
-
-// Underlying the implementation of the platform classes are platform specific types.
-// Sometimes these need to be passed around by client code so they are defined here
-
-typedef void *FontID;
-typedef void *SurfaceID;
-typedef void *WindowID;
-typedef void *MenuID;
-typedef void *TickerID;
-typedef void *Function;
-typedef void *IdlerID;
-
-/**
- * A geometric point class.
- * Point is exactly the same as the Win32 POINT and GTK+ GdkPoint so can be used interchangeably.
- */
-class Point {
-public:
- int x;
- int y;
-
- explicit Point(int x_=0, int y_=0) : x(x_), y(y_) {
- }
-
- // Other automatically defined methods (assignment, copy constructor, destructor) are fine
-
- static Point FromLong(long lpoint);
-};
-
-/**
- * A geometric rectangle class.
- * PRectangle is exactly the same as the Win32 RECT so can be used interchangeably.
- * PRectangles contain their top and left sides, but not their right and bottom sides.
- */
-class PRectangle {
-public:
- int left;
- int top;
- int right;
- int bottom;
-
- PRectangle(int left_=0, int top_=0, int right_=0, int bottom_ = 0) :
- left(left_), top(top_), right(right_), bottom(bottom_) {
- }
-
- // Other automatically defined methods (assignment, copy constructor, destructor) are fine
-
- bool operator==(PRectangle &rc) {
- return (rc.left == left) && (rc.right == right) &&
- (rc.top == top) && (rc.bottom == bottom);
- }
- bool Contains(Point pt) {
- return (pt.x >= left) && (pt.x <= right) &&
- (pt.y >= top) && (pt.y <= bottom);
- }
- bool Contains(PRectangle rc) {
- return (rc.left >= left) && (rc.right <= right) &&
- (rc.top >= top) && (rc.bottom <= bottom);
- }
- bool Intersects(PRectangle other) {
- return (right > other.left) && (left < other.right) &&
- (bottom > other.top) && (top < other.bottom);
- }
- void Move(int xDelta, int yDelta) {
- left += xDelta;
- top += yDelta;
- right += xDelta;
- bottom += yDelta;
- }
- int Width() { return right - left; }
- int Height() { return bottom - top; }
-};
-
-/**
- * In some circumstances, including Win32 in paletted mode and GTK+, each colour
- * must be allocated before use. The desired colours are held in the ColourDesired class,
- * and after allocation the allocation entry is stored in the ColourAllocated class. In other
- * circumstances, such as Win32 in true colour mode, the allocation process just copies
- * the RGB values from the desired to the allocated class.
- * As each desired colour requires allocation before it can be used, the ColourPair class
- * holds both a ColourDesired and a ColourAllocated
- * The Palette class is responsible for managing the palette of colours which contains a
- * list of ColourPair objects and performs the allocation.
- */
-
-/**
- * Holds a desired RGB colour.
- */
-class ColourDesired {
- long co;
-public:
- ColourDesired(long lcol=0) {
- co = lcol;
- }
-
- ColourDesired(unsigned int red, unsigned int green, unsigned int blue) {
- Set(red, green, blue);
- }
-
- bool operator==(const ColourDesired &other) const {
- return co == other.co;
- }
-
- void Set(long lcol) {
- co = lcol;
- }
-
- void Set(unsigned int red, unsigned int green, unsigned int blue) {
- co = red | (green << 8) | (blue << 16);
- }
-
- static inline unsigned int ValueOfHex(const char ch) {
- if (ch >= '0' && ch <= '9')
- return ch - '0';
- else if (ch >= 'A' && ch <= 'F')
- return ch - 'A' + 10;
- else if (ch >= 'a' && ch <= 'f')
- return ch - 'a' + 10;
- else
- return 0;
- }
-
- void Set(const char *val) {
- if (*val == '#') {
- val++;
- }
- unsigned int r = ValueOfHex(val[0]) * 16 + ValueOfHex(val[1]);
- unsigned int g = ValueOfHex(val[2]) * 16 + ValueOfHex(val[3]);
- unsigned int b = ValueOfHex(val[4]) * 16 + ValueOfHex(val[5]);
- Set(r, g, b);
- }
-
- long AsLong() const {
- return co;
- }
-
- unsigned int GetRed() {
- return co & 0xff;
- }
-
- unsigned int GetGreen() {
- return (co >> 8) & 0xff;
- }
-
- unsigned int GetBlue() {
- return (co >> 16) & 0xff;
- }
-};
-
-/**
- * Holds an allocated RGB colour which may be an approximation to the desired colour.
- */
-class ColourAllocated {
- long coAllocated;
-
-public:
-
- ColourAllocated(long lcol=0) {
- coAllocated = lcol;
- }
-
- void Set(long lcol) {
- coAllocated = lcol;
- }
-
- long AsLong() const {
- return coAllocated;
- }
-};
-
-/**
- * Colour pairs hold a desired colour and an allocated colour.
- */
-struct ColourPair {
- ColourDesired desired;
- ColourAllocated allocated;
-
- ColourPair(ColourDesired desired_=ColourDesired(0,0,0)) {
- desired = desired_;
- allocated.Set(desired.AsLong());
- }
- void Copy() {
- allocated.Set(desired.AsLong());
- }
-};
-
-class Window; // Forward declaration for Palette
-
-/**
- * Colour palette management.
- */
-class Palette {
- int used;
- int size;
- ColourPair *entries;
-#if PLAT_GTK
- void *allocatedPalette; // GdkColor *
- int allocatedLen;
-#endif
- // Private so Palette objects can not be copied
- Palette(const Palette &) {}
- Palette &operator=(const Palette &) { return *this; }
-public:
-#if PLAT_WIN
- void *hpal;
-#endif
- bool allowRealization;
-
- Palette();
- ~Palette();
-
- void Release();
-
- /**
- * This method either adds a colour to the list of wanted colours (want==true)
- * or retrieves the allocated colour back to the ColourPair.
- * This is one method to make it easier to keep the code for wanting and retrieving in sync.
- */
- void WantFind(ColourPair &cp, bool want);
-
- void Allocate(Window &w);
-};
-
-/**
- * Font management.
- */
-class Font {
-protected:
- FontID id;
-#if PLAT_WX
- int ascent;
-#endif
- // Private so Font objects can not be copied
- Font(const Font &) {}
- Font &operator=(const Font &) { id=0; return *this; }
-public:
- Font();
- virtual ~Font();
-
- virtual void Create(const char *faceName, int characterSet, int size,
- bool bold, bool italic, bool extraFontFlag=false);
- virtual void Release();
-
- FontID GetID() { return id; }
- // Alias another font - caller guarantees not to Release
- void SetID(FontID id_) { id = id_; }
- friend class Surface;
- friend class SurfaceImpl;
-};
-
-/**
- * A surface abstracts a place to draw.
- */
-class Surface {
-private:
- // Private so Surface objects can not be copied
- Surface(const Surface &) {}
- Surface &operator=(const Surface &) { return *this; }
-public:
- Surface() {};
- virtual ~Surface() {};
- static Surface *Allocate();
-
- virtual void Init(WindowID wid)=0;
- virtual void Init(SurfaceID sid, WindowID wid)=0;
- virtual void InitPixMap(int width, int height, Surface *surface_, WindowID wid)=0;
-
- virtual void Release()=0;
- virtual bool Initialised()=0;
- virtual void PenColour(ColourAllocated fore)=0;
- virtual int LogPixelsY()=0;
- virtual int DeviceHeightFont(int points)=0;
- virtual void MoveTo(int x_, int y_)=0;
- virtual void LineTo(int x_, int y_)=0;
- virtual void Polygon(Point *pts, int npts, ColourAllocated fore, ColourAllocated back)=0;
- virtual void RectangleDraw(PRectangle rc, ColourAllocated fore, ColourAllocated back)=0;
- virtual void FillRectangle(PRectangle rc, ColourAllocated back)=0;
- virtual void FillRectangle(PRectangle rc, Surface &surfacePattern)=0;
- virtual void RoundedRectangle(PRectangle rc, ColourAllocated fore, ColourAllocated back)=0;
- virtual void AlphaRectangle(PRectangle rc, int cornerSize, ColourAllocated fill, int alphaFill,
- ColourAllocated outline, int alphaOutline, int flags)=0;
- virtual void Ellipse(PRectangle rc, ColourAllocated fore, ColourAllocated back)=0;
- virtual void Copy(PRectangle rc, Point from, Surface &surfaceSource)=0;
-
- virtual void DrawTextNoClip(PRectangle rc, Font &font_, int ybase, const char *s, int len, ColourAllocated fore, ColourAllocated back)=0;
- virtual void DrawTextClipped(PRectangle rc, Font &font_, int ybase, const char *s, int len, ColourAllocated fore, ColourAllocated back)=0;
- virtual void DrawTextTransparent(PRectangle rc, Font &font_, int ybase, const char *s, int len, ColourAllocated fore)=0;
- virtual void MeasureWidths(Font &font_, const char *s, int len, int *positions)=0;
- virtual int WidthText(Font &font_, const char *s, int len)=0;
- virtual int WidthChar(Font &font_, char ch)=0;
- virtual int Ascent(Font &font_)=0;
- virtual int Descent(Font &font_)=0;
- virtual int InternalLeading(Font &font_)=0;
- virtual int ExternalLeading(Font &font_)=0;
- virtual int Height(Font &font_)=0;
- virtual int AverageCharWidth(Font &font_)=0;
-
- virtual int SetPalette(Palette *pal, bool inBackGround)=0;
- virtual void SetClip(PRectangle rc)=0;
- virtual void FlushCachedState()=0;
-
- virtual void SetUnicodeMode(bool unicodeMode_)=0;
- virtual void SetDBCSMode(int codePage)=0;
-};
-
-/**
- * A simple callback action passing one piece of untyped user data.
- */
-typedef void (*CallBackAction)(void*);
-
-/**
- * Class to hide the details of window manipulation.
- * Does not own the window which will normally have a longer life than this object.
- */
-class Window {
-protected:
- WindowID id;
-public:
- Window() : id(0), cursorLast(cursorInvalid) {}
- Window(const Window &source) : id(source.id), cursorLast(cursorInvalid) {}
- virtual ~Window();
- Window &operator=(WindowID id_) {
- id = id_;
- return *this;
- }
- WindowID GetID() const { return id; }
- bool Created() const { return id != 0; }
- void Destroy();
- bool HasFocus();
- PRectangle GetPosition();
- void SetPosition(PRectangle rc);
- void SetPositionRelative(PRectangle rc, Window relativeTo);
- PRectangle GetClientPosition();
- void Show(bool show=true);
- void InvalidateAll();
- void InvalidateRectangle(PRectangle rc);
- virtual void SetFont(Font &font);
- enum Cursor { cursorInvalid, cursorText, cursorArrow, cursorUp, cursorWait, cursorHoriz, cursorVert, cursorReverseArrow, cursorHand };
- void SetCursor(Cursor curs);
- void SetTitle(const char *s);
-private:
- Cursor cursorLast;
-};
-
-/**
- * Listbox management.
- */
-
-class ListBox : public Window {
-public:
- ListBox();
- virtual ~ListBox();
- static ListBox *Allocate();
-
- virtual void SetFont(Font &font)=0;
- virtual void Create(Window &parent, int ctrlID, Point location, int lineHeight_, bool unicodeMode_)=0;
- virtual void SetAverageCharWidth(int width)=0;
- virtual void SetVisibleRows(int rows)=0;
- virtual int GetVisibleRows() const=0;
- virtual PRectangle GetDesiredRect()=0;
- virtual int CaretFromEdge()=0;
- virtual void Clear()=0;
- virtual void Append(char *s, int type = -1)=0;
- virtual int Length()=0;
- virtual void Select(int n)=0;
- virtual int GetSelection()=0;
- virtual int Find(const char *prefix)=0;
- virtual void GetValue(int n, char *value, int len)=0;
- virtual void RegisterImage(int type, const char *xpm_data)=0;
- virtual void ClearRegisteredImages()=0;
- virtual void SetDoubleClickAction(CallBackAction, void *)=0;
- virtual void SetList(const char* list, char separator, char typesep)=0;
-};
-
-/**
- * Menu management.
- */
-class Menu {
- MenuID id;
-public:
- Menu();
- MenuID GetID() { return id; }
- void CreatePopUp();
- void Destroy();
- void Show(Point pt, Window &w);
-};
-
-class ElapsedTime {
- long bigBit;
- long littleBit;
-public:
- ElapsedTime();
- double Duration(bool reset=false);
-};
-
-/**
- * Dynamic Library (DLL/SO/...) loading
- */
-class DynamicLibrary {
-public:
- virtual ~DynamicLibrary() {};
-
- /// @return Pointer to function "name", or NULL on failure.
- virtual Function FindFunction(const char *name) = 0;
-
- /// @return true if the library was loaded successfully.
- virtual bool IsValid() = 0;
-
- /// @return An instance of a DynamicLibrary subclass with "modulePath" loaded.
- static DynamicLibrary *Load(const char *modulePath);
-};
-
-/**
- * Platform class used to retrieve system wide parameters such as double click speed
- * and chrome colour. Not a creatable object, more of a module with several functions.
- */
-class Platform {
- // Private so Platform objects can not be copied
- Platform(const Platform &) {}
- Platform &operator=(const Platform &) { return *this; }
-public:
- // Should be private because no new Platforms are ever created
- // but gcc warns about this
- Platform() {}
- ~Platform() {}
- static ColourDesired Chrome();
- static ColourDesired ChromeHighlight();
- static const char *DefaultFont();
- static int DefaultFontSize();
- static unsigned int DoubleClickTime();
- static bool MouseButtonBounce();
- static void DebugDisplay(const char *s);
- static bool IsKeyDown(int key);
- static long SendScintilla(
- WindowID w, unsigned int msg, unsigned long wParam=0, long lParam=0);
- static long SendScintillaPointer(
- WindowID w, unsigned int msg, unsigned long wParam=0, void *lParam=0);
- static bool IsDBCSLeadByte(int codePage, char ch);
- static int DBCSCharLength(int codePage, const char *s);
- static int DBCSCharMaxLength();
-
- // These are utility functions not really tied to a platform
- static int Minimum(int a, int b);
- static int Maximum(int a, int b);
- // Next three assume 16 bit shorts and 32 bit longs
- static long LongFromTwoShorts(short a,short b) {
- return (a) | ((b) << 16);
- }
- static short HighShortFromLong(long x) {
- return static_cast(x >> 16);
- }
- static short LowShortFromLong(long x) {
- return static_cast(x & 0xffff);
- }
- static void DebugPrintf(const char *format, ...);
- static bool ShowAssertionPopUps(bool assertionPopUps_);
- static void Assert(const char *c, const char *file, int line);
- static int Clamp(int val, int minVal, int maxVal);
-};
-
-#ifdef NDEBUG
-#define PLATFORM_ASSERT(c) ((void)0)
-#else
-#define PLATFORM_ASSERT(c) ((c) ? (void)(0) : Platform::Assert(#c, __FILE__, __LINE__))
-#endif
-
-// Shut up annoying Visual C++ warnings:
-#ifdef _MSC_VER
-#pragma warning(disable: 4244 4309 4514 4710)
-#endif
-
-#endif
diff --git a/src/plugins/contrib/wxSmithSTC/stc/scintilla/include/PropSet.h b/src/plugins/contrib/wxSmithSTC/stc/scintilla/include/PropSet.h
deleted file mode 100644
index e38de7dc40..0000000000
--- a/src/plugins/contrib/wxSmithSTC/stc/scintilla/include/PropSet.h
+++ /dev/null
@@ -1,114 +0,0 @@
-// Scintilla source code edit control
-/** @file PropSet.h
- ** A Java style properties file module.
- **/
-// Copyright 1998-2002 by Neil Hodgson
-// The License.txt file describes the conditions under which this software may be distributed.
-
-#ifndef PROPSET_H
-#define PROPSET_H
-#include "SString.h"
-
-bool EqualCaseInsensitive(const char *a, const char *b);
-
-bool isprefix(const char *target, const char *prefix);
-
-struct Property {
- unsigned int hash;
- char *key;
- char *val;
- Property *next;
- Property() : hash(0), key(0), val(0), next(0) {}
-};
-
-/**
- */
-class PropSet {
-protected:
- enum { hashRoots=31 };
- Property *props[hashRoots];
- Property *enumnext;
- int enumhash;
- static bool caseSensitiveFilenames;
- static unsigned int HashString(const char *s, size_t len) {
- unsigned int ret = 0;
- while (len--) {
- ret <<= 4;
- ret ^= *s;
- s++;
- }
- 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);
- SString Expand(const char *withVars, int maxExpands=100);
- int GetInt(const char *key, int defaultValue=0);
- SString GetWild(const char *keybase, const char *filename);
- SString GetNewExpand(const char *keybase, const char *filename="");
- void Clear();
- char *ToString(); // Caller must delete[] the return value
- bool GetFirst(char **key, char **val);
- bool GetNext(char **key, char **val);
- static void SetCaseSensitiveFilenames(bool caseSensitiveFilenames_) {
- caseSensitiveFilenames = caseSensitiveFilenames_;
- }
-
-private:
- // copy-value semantics not implemented
- PropSet(const PropSet ©);
- void operator=(const PropSet &assign);
-};
-
-/**
- */
-class WordList {
-public:
- // Each word contains at least one character - a empty word acts as sentinel at the end.
- char **words;
- char **wordsNoCase;
- char *list;
- int len;
- bool onlyLineEnds; ///< Delimited by any white space or only line ends
- bool sorted;
- bool sortedNoCase;
- int starts[256];
- WordList(bool onlyLineEnds_ = false) :
- words(0), wordsNoCase(0), list(0), len(0), onlyLineEnds(onlyLineEnds_),
- sorted(false), sortedNoCase(false) {}
- ~WordList() { Clear(); }
- operator bool() { return len ? true : false; }
- char *operator[](int ind) { return words[ind]; }
- void Clear();
- void Set(const char *s);
- char *Allocate(int size);
- void SetFromAllocated();
- bool InList(const char *s);
- bool InListAbbreviated(const char *s, const char marker);
- const char *GetNearestWord(const char *wordStart, int searchLen,
- bool ignoreCase = false, SString wordCharacters="", int wordIndex = -1);
- char *GetNearestWords(const char *wordStart, int searchLen,
- bool ignoreCase=false, char otherSeparator='\0', bool exactLen=false);
-};
-
-inline bool IsAlphabetic(unsigned int ch) {
- return ((ch >= 'A') && (ch <= 'Z')) || ((ch >= 'a') && (ch <= 'z'));
-}
-
-
-#ifdef _MSC_VER
-// Visual C++ doesn't like the private copy idiom for disabling
-// the default copy constructor and operator=, but it's fine.
-#pragma warning(disable: 4511 4512)
-#endif
-
-#endif
diff --git a/src/plugins/contrib/wxSmithSTC/stc/scintilla/include/SString.h b/src/plugins/contrib/wxSmithSTC/stc/scintilla/include/SString.h
deleted file mode 100644
index 38a206ccf2..0000000000
--- a/src/plugins/contrib/wxSmithSTC/stc/scintilla/include/SString.h
+++ /dev/null
@@ -1,280 +0,0 @@
-// SciTE - Scintilla based Text Editor
-/** @file SString.h
- ** A simple string class.
- **/
-// Copyright 1998-2004 by Neil Hodgson
-// The License.txt file describes the conditions under which this software may be distributed.
-
-#ifndef SSTRING_H
-#define SSTRING_H
-
-// These functions are implemented because each platform calls them something different.
-int CompareCaseInsensitive(const char *a, const char *b);
-int CompareNCaseInsensitive(const char *a, const char *b, size_t len);
-bool EqualCaseInsensitive(const char *a, const char *b);
-
-// Define another string class.
-// While it would be 'better' to use std::string, that doubles the executable size.
-// An SString may contain embedded nul characters.
-
-/**
- * Base class from which the two other classes (SBuffer & SString)
- * are derived.
- */
-class SContainer {
-public:
- /** Type of string lengths (sizes) and positions (indexes). */
- typedef size_t lenpos_t;
- /** Out of bounds value indicating that the string argument should be measured. */
- enum { measure_length=0xffffffffU};
-
-protected:
- char *s; ///< The C string
- lenpos_t sSize; ///< The size of the buffer, less 1: ie. the maximum size of the string
-
- SContainer() : s(0), sSize(0) {}
- ~SContainer() {
- delete []s; // Suppose it was allocated using StringAllocate
- s = 0;
- sSize = 0;
- }
- /** Size of buffer. */
- lenpos_t size() const {
- if (s) {
- return sSize;
- } else {
- return 0;
- }
- }
-public:
- /**
- * Allocate uninitialized memory big enough to fit a string of the given length.
- * @return the pointer to the new string
- */
- static char *StringAllocate(lenpos_t len);
- /**
- * Duplicate a buffer/C string.
- * Allocate memory of the given size, or big enough to fit the string if length isn't given;
- * then copy the given string in the allocated memory.
- * @return the pointer to the new string
- */
- static char *StringAllocate(
- const char *s, ///< The string to duplicate
- lenpos_t len=measure_length); ///< The length of memory to allocate. Optional.
-};
-
-
-/**
- * @brief A string buffer class.
- *
- * Main use is to ask an API the length of a string it can provide,
- * then to allocate a buffer of the given size, and to provide this buffer
- * to the API to put the string.
- * This class is intended to be shortlived, to be transformed as SString
- * as soon as it holds the string, so it has little members.
- * Note: we assume the buffer is filled by the API. If the length can be shorter,
- * we should set sLen to strlen(sb.ptr()) in related SString constructor and assignment.
- */
-class SBuffer : protected SContainer {
-public:
- SBuffer(lenpos_t len) {
- s = StringAllocate(len);
- if (s) {
- *s = '\0';
- sSize = len;
- } else {
- sSize = 0;
- }
- }
-private:
- /// Copy constructor
- // Here only to be on the safe size, user should avoid returning SBuffer values.
- SBuffer(const SBuffer &source) : SContainer() {
- s = StringAllocate(source.s, source.sSize);
- sSize = (s) ? source.sSize : 0;
- }
- /// Default assignment operator
- // Same here, shouldn't be used
- SBuffer &operator=(const SBuffer &source) {
- if (this != &source) {
- delete []s;
- s = StringAllocate(source.s, source.sSize);
- sSize = (s) ? source.sSize : 0;
- }
- return *this;
- }
-public:
- /** Provide direct read/write access to buffer. */
- char *ptr() {
- return s;
- }
- /** Ownership of the buffer have been taken, so release it. */
- void reset() {
- s = 0;
- sSize = 0;
- }
- /** Size of buffer. */
- lenpos_t size() const {
- return SContainer::size();
- }
-};
-
-
-/**
- * @brief A simple string class.
- *
- * Hold the length of the string for quick operations,
- * can have a buffer bigger than the string to avoid too many memory allocations and copies.
- * May have embedded zeroes as a result of @a substitute, but relies too heavily on C string
- * functions to allow reliable manipulations of these strings, other than simple appends, etc.
- */
-class SString : protected SContainer {
- lenpos_t sLen; ///< The size of the string in s
- lenpos_t sizeGrowth; ///< Minimum growth size when appending strings
- enum { sizeGrowthDefault = 64 };
-
- bool grow(lenpos_t lenNew);
- SString &assign(const char *sOther, lenpos_t sSize_=measure_length);
-
-public:
- SString() : sLen(0), sizeGrowth(sizeGrowthDefault) {}
- SString(const SString &source) : SContainer(), sizeGrowth(sizeGrowthDefault) {
- s = StringAllocate(source.s, source.sLen);
- sSize = sLen = (s) ? source.sLen : 0;
- }
- SString(const char *s_) : sizeGrowth(sizeGrowthDefault) {
- s = StringAllocate(s_);
- sSize = sLen = (s) ? strlen(s) : 0;
- }
- SString(SBuffer &buf) : sizeGrowth(sizeGrowthDefault) {
- s = buf.ptr();
- sSize = sLen = buf.size();
- // Consumes the given buffer!
- buf.reset();
- }
- SString(const char *s_, lenpos_t first, lenpos_t last) : sizeGrowth(sizeGrowthDefault) {
- // note: expects the "last" argument to point one beyond the range end (a la STL iterators)
- s = StringAllocate(s_ + first, last - first);
- sSize = sLen = (s) ? last - first : 0;
- }
- SString(int i);
- SString(double d, int precision);
- ~SString() {
- sLen = 0;
- }
- void clear() {
- if (s) {
- *s = '\0';
- }
- sLen = 0;
- }
- /** Size of buffer. */
- lenpos_t size() const {
- return SContainer::size();
- }
- /** Size of string in buffer. */
- lenpos_t length() const {
- return sLen;
- }
- /** Read access to a character of the string. */
- char operator[](lenpos_t i) const {
- return (s && i < sSize) ? s[i] : '\0';
- }
- SString &operator=(const char *source) {
- return assign(source);
- }
- SString &operator=(const SString &source) {
- if (this != &source) {
- assign(source.s, source.sLen);
- }
- return *this;
- }
- bool operator==(const SString &sOther) const;
- bool operator!=(const SString &sOther) const {
- return !operator==(sOther);
- }
- bool operator==(const char *sOther) const;
- bool operator!=(const char *sOther) const {
- return !operator==(sOther);
- }
- bool contains(char ch) const {
- return (s && *s) ? strchr(s, ch) != 0 : false;
- }
- void setsizegrowth(lenpos_t sizeGrowth_) {
- sizeGrowth = sizeGrowth_;
- }
- const char *c_str() const {
- return s ? s : "";
- }
- /** Give ownership of buffer to caller which must use delete[] to free buffer. */
- char *detach() {
- char *sRet = s;
- s = 0;
- sSize = 0;
- sLen = 0;
- return sRet;
- }
- SString substr(lenpos_t subPos, lenpos_t subLen=measure_length) const;
- SString &lowercase(lenpos_t subPos = 0, lenpos_t subLen=measure_length);
- SString &uppercase(lenpos_t subPos = 0, lenpos_t subLen=measure_length);
- SString &append(const char *sOther, lenpos_t sLenOther=measure_length, char sep = '\0');
- SString &operator+=(const char *sOther) {
- return append(sOther, static_cast(measure_length));
- }
- SString &operator+=(const SString &sOther) {
- return append(sOther.s, sOther.sLen);
- }
- SString &operator+=(char ch) {
- return append(&ch, 1);
- }
- SString &appendwithseparator(const char *sOther, char sep) {
- return append(sOther, strlen(sOther), sep);
- }
- SString &insert(lenpos_t pos, const char *sOther, lenpos_t sLenOther=measure_length);
-
- /**
- * Remove @a len characters from the @a pos position, included.
- * Characters at pos + len and beyond replace characters at pos.
- * If @a len is 0, or greater than the length of the string
- * starting at @a pos, the string is just truncated at @a pos.
- */
- void remove(lenpos_t pos, lenpos_t len);
-
- SString &change(lenpos_t pos, char ch) {
- if (pos < sLen) { // character changed must be in string bounds
- *(s + pos) = ch;
- }
- return *this;
- }
- /** Read an integral numeric value from the string. */
- int value() const {
- return s ? atoi(s) : 0;
- }
- bool startswith(const char *prefix);
- bool endswith(const char *suffix);
- int search(const char *sFind, lenpos_t start=0) const;
- bool contains(const char *sFind) const {
- return search(sFind) >= 0;
- }
- int substitute(char chFind, char chReplace);
- int substitute(const char *sFind, const char *sReplace);
- int remove(const char *sFind) {
- return substitute(sFind, "");
- }
-};
-
-
-/**
- * Duplicate a C string.
- * Allocate memory of the given size, or big enough to fit the string if length isn't given;
- * then copy the given string in the allocated memory.
- * @return the pointer to the new string
- */
-inline char *StringDup(
- const char *s, ///< The string to duplicate
- SContainer::lenpos_t len=SContainer::measure_length) ///< The length of memory to allocate. Optional.
-{
- return SContainer::StringAllocate(s, len);
-}
-
-#endif
diff --git a/src/plugins/contrib/wxSmithSTC/stc/scintilla/include/SciLexer.h b/src/plugins/contrib/wxSmithSTC/stc/scintilla/include/SciLexer.h
deleted file mode 100644
index 22d016d21c..0000000000
--- a/src/plugins/contrib/wxSmithSTC/stc/scintilla/include/SciLexer.h
+++ /dev/null
@@ -1,1074 +0,0 @@
-// Scintilla source code edit control
-/** @file SciLexer.h
- ** Interface to the added lexer functions in the SciLexer version of the edit control.
- **/
-// Copyright 1998-2002 by Neil Hodgson
-// The License.txt file describes the conditions under which this software may be distributed.
-
-// Most of this file is automatically generated from the Scintilla.iface interface definition
-// file which contains any comments about the definitions. HFacer.py does the generation.
-
-#ifndef SCILEXER_H
-#define SCILEXER_H
-
-// SciLexer features - not in standard Scintilla
-
-//++Autogenerated -- start of section automatically generated from Scintilla.iface
-#define SCLEX_CONTAINER 0
-#define SCLEX_NULL 1
-#define SCLEX_PYTHON 2
-#define SCLEX_CPP 3
-#define SCLEX_HTML 4
-#define SCLEX_XML 5
-#define SCLEX_PERL 6
-#define SCLEX_SQL 7
-#define SCLEX_VB 8
-#define SCLEX_PROPERTIES 9
-#define SCLEX_ERRORLIST 10
-#define SCLEX_MAKEFILE 11
-#define SCLEX_BATCH 12
-#define SCLEX_XCODE 13
-#define SCLEX_LATEX 14
-#define SCLEX_LUA 15
-#define SCLEX_DIFF 16
-#define SCLEX_CONF 17
-#define SCLEX_PASCAL 18
-#define SCLEX_AVE 19
-#define SCLEX_ADA 20
-#define SCLEX_LISP 21
-#define SCLEX_RUBY 22
-#define SCLEX_EIFFEL 23
-#define SCLEX_EIFFELKW 24
-#define SCLEX_TCL 25
-#define SCLEX_NNCRONTAB 26
-#define SCLEX_BULLANT 27
-#define SCLEX_VBSCRIPT 28
-#define SCLEX_BAAN 31
-#define SCLEX_MATLAB 32
-#define SCLEX_SCRIPTOL 33
-#define SCLEX_ASM 34
-#define SCLEX_CPPNOCASE 35
-#define SCLEX_FORTRAN 36
-#define SCLEX_F77 37
-#define SCLEX_CSS 38
-#define SCLEX_POV 39
-#define SCLEX_LOUT 40
-#define SCLEX_ESCRIPT 41
-#define SCLEX_PS 42
-#define SCLEX_NSIS 43
-#define SCLEX_MMIXAL 44
-#define SCLEX_CLW 45
-#define SCLEX_CLWNOCASE 46
-#define SCLEX_LOT 47
-#define SCLEX_YAML 48
-#define SCLEX_TEX 49
-#define SCLEX_METAPOST 50
-#define SCLEX_POWERBASIC 51
-#define SCLEX_FORTH 52
-#define SCLEX_ERLANG 53
-#define SCLEX_OCTAVE 54
-#define SCLEX_MSSQL 55
-#define SCLEX_VERILOG 56
-#define SCLEX_KIX 57
-#define SCLEX_GUI4CLI 58
-#define SCLEX_SPECMAN 59
-#define SCLEX_AU3 60
-#define SCLEX_APDL 61
-#define SCLEX_BASH 62
-#define SCLEX_ASN1 63
-#define SCLEX_VHDL 64
-#define SCLEX_CAML 65
-#define SCLEX_BLITZBASIC 66
-#define SCLEX_PUREBASIC 67
-#define SCLEX_HASKELL 68
-#define SCLEX_PHPSCRIPT 69
-#define SCLEX_TADS3 70
-#define SCLEX_REBOL 71
-#define SCLEX_SMALLTALK 72
-#define SCLEX_FLAGSHIP 73
-#define SCLEX_CSOUND 74
-#define SCLEX_FREEBASIC 75
-#define SCLEX_INNOSETUP 76
-#define SCLEX_OPAL 77
-#define SCLEX_SPICE 78
-#define SCLEX_AUTOMATIC 1000
-#define SCE_P_DEFAULT 0
-#define SCE_P_COMMENTLINE 1
-#define SCE_P_NUMBER 2
-#define SCE_P_STRING 3
-#define SCE_P_CHARACTER 4
-#define SCE_P_WORD 5
-#define SCE_P_TRIPLE 6
-#define SCE_P_TRIPLEDOUBLE 7
-#define SCE_P_CLASSNAME 8
-#define SCE_P_DEFNAME 9
-#define SCE_P_OPERATOR 10
-#define SCE_P_IDENTIFIER 11
-#define SCE_P_COMMENTBLOCK 12
-#define SCE_P_STRINGEOL 13
-#define SCE_P_WORD2 14
-#define SCE_P_DECORATOR 15
-#define SCE_C_DEFAULT 0
-#define SCE_C_COMMENT 1
-#define SCE_C_COMMENTLINE 2
-#define SCE_C_COMMENTDOC 3
-#define SCE_C_NUMBER 4
-#define SCE_C_WORD 5
-#define SCE_C_STRING 6
-#define SCE_C_CHARACTER 7
-#define SCE_C_UUID 8
-#define SCE_C_PREPROCESSOR 9
-#define SCE_C_OPERATOR 10
-#define SCE_C_IDENTIFIER 11
-#define SCE_C_STRINGEOL 12
-#define SCE_C_VERBATIM 13
-#define SCE_C_REGEX 14
-#define SCE_C_COMMENTLINEDOC 15
-#define SCE_C_WORD2 16
-#define SCE_C_COMMENTDOCKEYWORD 17
-#define SCE_C_COMMENTDOCKEYWORDERROR 18
-#define SCE_C_GLOBALCLASS 19
-#define SCE_TCL_DEFAULT 0
-#define SCE_TCL_COMMENT 1
-#define SCE_TCL_COMMENTLINE 2
-#define SCE_TCL_NUMBER 3
-#define SCE_TCL_WORD_IN_QUOTE 4
-#define SCE_TCL_IN_QUOTE 5
-#define SCE_TCL_OPERATOR 6
-#define SCE_TCL_IDENTIFIER 7
-#define SCE_TCL_SUBSTITUTION 8
-#define SCE_TCL_SUB_BRACE 9
-#define SCE_TCL_MODIFIER 10
-#define SCE_TCL_EXPAND 11
-#define SCE_TCL_WORD 12
-#define SCE_TCL_WORD2 13
-#define SCE_TCL_WORD3 14
-#define SCE_TCL_WORD4 15
-#define SCE_TCL_WORD5 16
-#define SCE_TCL_WORD6 17
-#define SCE_TCL_WORD7 18
-#define SCE_TCL_WORD8 19
-#define SCE_TCL_COMMENT_BOX 20
-#define SCE_TCL_BLOCK_COMMENT 21
-#define SCE_H_DEFAULT 0
-#define SCE_H_TAG 1
-#define SCE_H_TAGUNKNOWN 2
-#define SCE_H_ATTRIBUTE 3
-#define SCE_H_ATTRIBUTEUNKNOWN 4
-#define SCE_H_NUMBER 5
-#define SCE_H_DOUBLESTRING 6
-#define SCE_H_SINGLESTRING 7
-#define SCE_H_OTHER 8
-#define SCE_H_COMMENT 9
-#define SCE_H_ENTITY 10
-#define SCE_H_TAGEND 11
-#define SCE_H_XMLSTART 12
-#define SCE_H_XMLEND 13
-#define SCE_H_SCRIPT 14
-#define SCE_H_ASP 15
-#define SCE_H_ASPAT 16
-#define SCE_H_CDATA 17
-#define SCE_H_QUESTION 18
-#define SCE_H_VALUE 19
-#define SCE_H_XCCOMMENT 20
-#define SCE_H_SGML_DEFAULT 21
-#define SCE_H_SGML_COMMAND 22
-#define SCE_H_SGML_1ST_PARAM 23
-#define SCE_H_SGML_DOUBLESTRING 24
-#define SCE_H_SGML_SIMPLESTRING 25
-#define SCE_H_SGML_ERROR 26
-#define SCE_H_SGML_SPECIAL 27
-#define SCE_H_SGML_ENTITY 28
-#define SCE_H_SGML_COMMENT 29
-#define SCE_H_SGML_1ST_PARAM_COMMENT 30
-#define SCE_H_SGML_BLOCK_DEFAULT 31
-#define SCE_HJ_START 40
-#define SCE_HJ_DEFAULT 41
-#define SCE_HJ_COMMENT 42
-#define SCE_HJ_COMMENTLINE 43
-#define SCE_HJ_COMMENTDOC 44
-#define SCE_HJ_NUMBER 45
-#define SCE_HJ_WORD 46
-#define SCE_HJ_KEYWORD 47
-#define SCE_HJ_DOUBLESTRING 48
-#define SCE_HJ_SINGLESTRING 49
-#define SCE_HJ_SYMBOLS 50
-#define SCE_HJ_STRINGEOL 51
-#define SCE_HJ_REGEX 52
-#define SCE_HJA_START 55
-#define SCE_HJA_DEFAULT 56
-#define SCE_HJA_COMMENT 57
-#define SCE_HJA_COMMENTLINE 58
-#define SCE_HJA_COMMENTDOC 59
-#define SCE_HJA_NUMBER 60
-#define SCE_HJA_WORD 61
-#define SCE_HJA_KEYWORD 62
-#define SCE_HJA_DOUBLESTRING 63
-#define SCE_HJA_SINGLESTRING 64
-#define SCE_HJA_SYMBOLS 65
-#define SCE_HJA_STRINGEOL 66
-#define SCE_HJA_REGEX 67
-#define SCE_HB_START 70
-#define SCE_HB_DEFAULT 71
-#define SCE_HB_COMMENTLINE 72
-#define SCE_HB_NUMBER 73
-#define SCE_HB_WORD 74
-#define SCE_HB_STRING 75
-#define SCE_HB_IDENTIFIER 76
-#define SCE_HB_STRINGEOL 77
-#define SCE_HBA_START 80
-#define SCE_HBA_DEFAULT 81
-#define SCE_HBA_COMMENTLINE 82
-#define SCE_HBA_NUMBER 83
-#define SCE_HBA_WORD 84
-#define SCE_HBA_STRING 85
-#define SCE_HBA_IDENTIFIER 86
-#define SCE_HBA_STRINGEOL 87
-#define SCE_HP_START 90
-#define SCE_HP_DEFAULT 91
-#define SCE_HP_COMMENTLINE 92
-#define SCE_HP_NUMBER 93
-#define SCE_HP_STRING 94
-#define SCE_HP_CHARACTER 95
-#define SCE_HP_WORD 96
-#define SCE_HP_TRIPLE 97
-#define SCE_HP_TRIPLEDOUBLE 98
-#define SCE_HP_CLASSNAME 99
-#define SCE_HP_DEFNAME 100
-#define SCE_HP_OPERATOR 101
-#define SCE_HP_IDENTIFIER 102
-#define SCE_HPHP_COMPLEX_VARIABLE 104
-#define SCE_HPA_START 105
-#define SCE_HPA_DEFAULT 106
-#define SCE_HPA_COMMENTLINE 107
-#define SCE_HPA_NUMBER 108
-#define SCE_HPA_STRING 109
-#define SCE_HPA_CHARACTER 110
-#define SCE_HPA_WORD 111
-#define SCE_HPA_TRIPLE 112
-#define SCE_HPA_TRIPLEDOUBLE 113
-#define SCE_HPA_CLASSNAME 114
-#define SCE_HPA_DEFNAME 115
-#define SCE_HPA_OPERATOR 116
-#define SCE_HPA_IDENTIFIER 117
-#define SCE_HPHP_DEFAULT 118
-#define SCE_HPHP_HSTRING 119
-#define SCE_HPHP_SIMPLESTRING 120
-#define SCE_HPHP_WORD 121
-#define SCE_HPHP_NUMBER 122
-#define SCE_HPHP_VARIABLE 123
-#define SCE_HPHP_COMMENT 124
-#define SCE_HPHP_COMMENTLINE 125
-#define SCE_HPHP_HSTRING_VARIABLE 126
-#define SCE_HPHP_OPERATOR 127
-#define SCE_PL_DEFAULT 0
-#define SCE_PL_ERROR 1
-#define SCE_PL_COMMENTLINE 2
-#define SCE_PL_POD 3
-#define SCE_PL_NUMBER 4
-#define SCE_PL_WORD 5
-#define SCE_PL_STRING 6
-#define SCE_PL_CHARACTER 7
-#define SCE_PL_PUNCTUATION 8
-#define SCE_PL_PREPROCESSOR 9
-#define SCE_PL_OPERATOR 10
-#define SCE_PL_IDENTIFIER 11
-#define SCE_PL_SCALAR 12
-#define SCE_PL_ARRAY 13
-#define SCE_PL_HASH 14
-#define SCE_PL_SYMBOLTABLE 15
-#define SCE_PL_VARIABLE_INDEXER 16
-#define SCE_PL_REGEX 17
-#define SCE_PL_REGSUBST 18
-#define SCE_PL_LONGQUOTE 19
-#define SCE_PL_BACKTICKS 20
-#define SCE_PL_DATASECTION 21
-#define SCE_PL_HERE_DELIM 22
-#define SCE_PL_HERE_Q 23
-#define SCE_PL_HERE_QQ 24
-#define SCE_PL_HERE_QX 25
-#define SCE_PL_STRING_Q 26
-#define SCE_PL_STRING_QQ 27
-#define SCE_PL_STRING_QX 28
-#define SCE_PL_STRING_QR 29
-#define SCE_PL_STRING_QW 30
-#define SCE_PL_POD_VERB 31
-#define SCE_RB_DEFAULT 0
-#define SCE_RB_ERROR 1
-#define SCE_RB_COMMENTLINE 2
-#define SCE_RB_POD 3
-#define SCE_RB_NUMBER 4
-#define SCE_RB_WORD 5
-#define SCE_RB_STRING 6
-#define SCE_RB_CHARACTER 7
-#define SCE_RB_CLASSNAME 8
-#define SCE_RB_DEFNAME 9
-#define SCE_RB_OPERATOR 10
-#define SCE_RB_IDENTIFIER 11
-#define SCE_RB_REGEX 12
-#define SCE_RB_GLOBAL 13
-#define SCE_RB_SYMBOL 14
-#define SCE_RB_MODULE_NAME 15
-#define SCE_RB_INSTANCE_VAR 16
-#define SCE_RB_CLASS_VAR 17
-#define SCE_RB_BACKTICKS 18
-#define SCE_RB_DATASECTION 19
-#define SCE_RB_HERE_DELIM 20
-#define SCE_RB_HERE_Q 21
-#define SCE_RB_HERE_QQ 22
-#define SCE_RB_HERE_QX 23
-#define SCE_RB_STRING_Q 24
-#define SCE_RB_STRING_QQ 25
-#define SCE_RB_STRING_QX 26
-#define SCE_RB_STRING_QR 27
-#define SCE_RB_STRING_QW 28
-#define SCE_RB_WORD_DEMOTED 29
-#define SCE_RB_STDIN 30
-#define SCE_RB_STDOUT 31
-#define SCE_RB_STDERR 40
-#define SCE_RB_UPPER_BOUND 41
-#define SCE_B_DEFAULT 0
-#define SCE_B_COMMENT 1
-#define SCE_B_NUMBER 2
-#define SCE_B_KEYWORD 3
-#define SCE_B_STRING 4
-#define SCE_B_PREPROCESSOR 5
-#define SCE_B_OPERATOR 6
-#define SCE_B_IDENTIFIER 7
-#define SCE_B_DATE 8
-#define SCE_B_STRINGEOL 9
-#define SCE_B_KEYWORD2 10
-#define SCE_B_KEYWORD3 11
-#define SCE_B_KEYWORD4 12
-#define SCE_B_CONSTANT 13
-#define SCE_B_ASM 14
-#define SCE_B_LABEL 15
-#define SCE_B_ERROR 16
-#define SCE_B_HEXNUMBER 17
-#define SCE_B_BINNUMBER 18
-#define SCE_PROPS_DEFAULT 0
-#define SCE_PROPS_COMMENT 1
-#define SCE_PROPS_SECTION 2
-#define SCE_PROPS_ASSIGNMENT 3
-#define SCE_PROPS_DEFVAL 4
-#define SCE_PROPS_KEY 5
-#define SCE_L_DEFAULT 0
-#define SCE_L_COMMAND 1
-#define SCE_L_TAG 2
-#define SCE_L_MATH 3
-#define SCE_L_COMMENT 4
-#define SCE_LUA_DEFAULT 0
-#define SCE_LUA_COMMENT 1
-#define SCE_LUA_COMMENTLINE 2
-#define SCE_LUA_COMMENTDOC 3
-#define SCE_LUA_NUMBER 4
-#define SCE_LUA_WORD 5
-#define SCE_LUA_STRING 6
-#define SCE_LUA_CHARACTER 7
-#define SCE_LUA_LITERALSTRING 8
-#define SCE_LUA_PREPROCESSOR 9
-#define SCE_LUA_OPERATOR 10
-#define SCE_LUA_IDENTIFIER 11
-#define SCE_LUA_STRINGEOL 12
-#define SCE_LUA_WORD2 13
-#define SCE_LUA_WORD3 14
-#define SCE_LUA_WORD4 15
-#define SCE_LUA_WORD5 16
-#define SCE_LUA_WORD6 17
-#define SCE_LUA_WORD7 18
-#define SCE_LUA_WORD8 19
-#define SCE_ERR_DEFAULT 0
-#define SCE_ERR_PYTHON 1
-#define SCE_ERR_GCC 2
-#define SCE_ERR_MS 3
-#define SCE_ERR_CMD 4
-#define SCE_ERR_BORLAND 5
-#define SCE_ERR_PERL 6
-#define SCE_ERR_NET 7
-#define SCE_ERR_LUA 8
-#define SCE_ERR_CTAG 9
-#define SCE_ERR_DIFF_CHANGED 10
-#define SCE_ERR_DIFF_ADDITION 11
-#define SCE_ERR_DIFF_DELETION 12
-#define SCE_ERR_DIFF_MESSAGE 13
-#define SCE_ERR_PHP 14
-#define SCE_ERR_ELF 15
-#define SCE_ERR_IFC 16
-#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_BAT_LABEL 3
-#define SCE_BAT_HIDE 4
-#define SCE_BAT_COMMAND 5
-#define SCE_BAT_IDENTIFIER 6
-#define SCE_BAT_OPERATOR 7
-#define SCE_MAKE_DEFAULT 0
-#define SCE_MAKE_COMMENT 1
-#define SCE_MAKE_PREPROCESSOR 2
-#define SCE_MAKE_IDENTIFIER 3
-#define SCE_MAKE_OPERATOR 4
-#define SCE_MAKE_TARGET 5
-#define SCE_MAKE_IDEOL 9
-#define SCE_DIFF_DEFAULT 0
-#define SCE_DIFF_COMMENT 1
-#define SCE_DIFF_COMMAND 2
-#define SCE_DIFF_HEADER 3
-#define SCE_DIFF_POSITION 4
-#define SCE_DIFF_DELETED 5
-#define SCE_DIFF_ADDED 6
-#define SCE_CONF_DEFAULT 0
-#define SCE_CONF_COMMENT 1
-#define SCE_CONF_NUMBER 2
-#define SCE_CONF_IDENTIFIER 3
-#define SCE_CONF_EXTENSION 4
-#define SCE_CONF_PARAMETER 5
-#define SCE_CONF_STRING 6
-#define SCE_CONF_OPERATOR 7
-#define SCE_CONF_IP 8
-#define SCE_CONF_DIRECTIVE 9
-#define SCE_AVE_DEFAULT 0
-#define SCE_AVE_COMMENT 1
-#define SCE_AVE_NUMBER 2
-#define SCE_AVE_WORD 3
-#define SCE_AVE_STRING 6
-#define SCE_AVE_ENUM 7
-#define SCE_AVE_STRINGEOL 8
-#define SCE_AVE_IDENTIFIER 9
-#define SCE_AVE_OPERATOR 10
-#define SCE_AVE_WORD1 11
-#define SCE_AVE_WORD2 12
-#define SCE_AVE_WORD3 13
-#define SCE_AVE_WORD4 14
-#define SCE_AVE_WORD5 15
-#define SCE_AVE_WORD6 16
-#define SCE_ADA_DEFAULT 0
-#define SCE_ADA_WORD 1
-#define SCE_ADA_IDENTIFIER 2
-#define SCE_ADA_NUMBER 3
-#define SCE_ADA_DELIMITER 4
-#define SCE_ADA_CHARACTER 5
-#define SCE_ADA_CHARACTEREOL 6
-#define SCE_ADA_STRING 7
-#define SCE_ADA_STRINGEOL 8
-#define SCE_ADA_LABEL 9
-#define SCE_ADA_COMMENTLINE 10
-#define SCE_ADA_ILLEGAL 11
-#define SCE_BAAN_DEFAULT 0
-#define SCE_BAAN_COMMENT 1
-#define SCE_BAAN_COMMENTDOC 2
-#define SCE_BAAN_NUMBER 3
-#define SCE_BAAN_WORD 4
-#define SCE_BAAN_STRING 5
-#define SCE_BAAN_PREPROCESSOR 6
-#define SCE_BAAN_OPERATOR 7
-#define SCE_BAAN_IDENTIFIER 8
-#define SCE_BAAN_STRINGEOL 9
-#define SCE_BAAN_WORD2 10
-#define SCE_LISP_DEFAULT 0
-#define SCE_LISP_COMMENT 1
-#define SCE_LISP_NUMBER 2
-#define SCE_LISP_KEYWORD 3
-#define SCE_LISP_KEYWORD_KW 4
-#define SCE_LISP_SYMBOL 5
-#define SCE_LISP_STRING 6
-#define SCE_LISP_STRINGEOL 8
-#define SCE_LISP_IDENTIFIER 9
-#define SCE_LISP_OPERATOR 10
-#define SCE_LISP_SPECIAL 11
-#define SCE_LISP_MULTI_COMMENT 12
-#define SCE_EIFFEL_DEFAULT 0
-#define SCE_EIFFEL_COMMENTLINE 1
-#define SCE_EIFFEL_NUMBER 2
-#define SCE_EIFFEL_WORD 3
-#define SCE_EIFFEL_STRING 4
-#define SCE_EIFFEL_CHARACTER 5
-#define SCE_EIFFEL_OPERATOR 6
-#define SCE_EIFFEL_IDENTIFIER 7
-#define SCE_EIFFEL_STRINGEOL 8
-#define SCE_NNCRONTAB_DEFAULT 0
-#define SCE_NNCRONTAB_COMMENT 1
-#define SCE_NNCRONTAB_TASK 2
-#define SCE_NNCRONTAB_SECTION 3
-#define SCE_NNCRONTAB_KEYWORD 4
-#define SCE_NNCRONTAB_MODIFIER 5
-#define SCE_NNCRONTAB_ASTERISK 6
-#define SCE_NNCRONTAB_NUMBER 7
-#define SCE_NNCRONTAB_STRING 8
-#define SCE_NNCRONTAB_ENVIRONMENT 9
-#define SCE_NNCRONTAB_IDENTIFIER 10
-#define SCE_FORTH_DEFAULT 0
-#define SCE_FORTH_COMMENT 1
-#define SCE_FORTH_COMMENT_ML 2
-#define SCE_FORTH_IDENTIFIER 3
-#define SCE_FORTH_CONTROL 4
-#define SCE_FORTH_KEYWORD 5
-#define SCE_FORTH_DEFWORD 6
-#define SCE_FORTH_PREWORD1 7
-#define SCE_FORTH_PREWORD2 8
-#define SCE_FORTH_NUMBER 9
-#define SCE_FORTH_STRING 10
-#define SCE_FORTH_LOCALE 11
-#define SCE_MATLAB_DEFAULT 0
-#define SCE_MATLAB_COMMENT 1
-#define SCE_MATLAB_COMMAND 2
-#define SCE_MATLAB_NUMBER 3
-#define SCE_MATLAB_KEYWORD 4
-#define SCE_MATLAB_STRING 5
-#define SCE_MATLAB_OPERATOR 6
-#define SCE_MATLAB_IDENTIFIER 7
-#define SCE_MATLAB_DOUBLEQUOTESTRING 8
-#define SCE_SCRIPTOL_DEFAULT 0
-#define SCE_SCRIPTOL_WHITE 1
-#define SCE_SCRIPTOL_COMMENTLINE 2
-#define SCE_SCRIPTOL_PERSISTENT 3
-#define SCE_SCRIPTOL_CSTYLE 4
-#define SCE_SCRIPTOL_COMMENTBLOCK 5
-#define SCE_SCRIPTOL_NUMBER 6
-#define SCE_SCRIPTOL_STRING 7
-#define SCE_SCRIPTOL_CHARACTER 8
-#define SCE_SCRIPTOL_STRINGEOL 9
-#define SCE_SCRIPTOL_KEYWORD 10
-#define SCE_SCRIPTOL_OPERATOR 11
-#define SCE_SCRIPTOL_IDENTIFIER 12
-#define SCE_SCRIPTOL_TRIPLE 13
-#define SCE_SCRIPTOL_CLASSNAME 14
-#define SCE_SCRIPTOL_PREPROCESSOR 15
-#define SCE_ASM_DEFAULT 0
-#define SCE_ASM_COMMENT 1
-#define SCE_ASM_NUMBER 2
-#define SCE_ASM_STRING 3
-#define SCE_ASM_OPERATOR 4
-#define SCE_ASM_IDENTIFIER 5
-#define SCE_ASM_CPUINSTRUCTION 6
-#define SCE_ASM_MATHINSTRUCTION 7
-#define SCE_ASM_REGISTER 8
-#define SCE_ASM_DIRECTIVE 9
-#define SCE_ASM_DIRECTIVEOPERAND 10
-#define SCE_ASM_COMMENTBLOCK 11
-#define SCE_ASM_CHARACTER 12
-#define SCE_ASM_STRINGEOL 13
-#define SCE_ASM_EXTINSTRUCTION 14
-#define SCE_F_DEFAULT 0
-#define SCE_F_COMMENT 1
-#define SCE_F_NUMBER 2
-#define SCE_F_STRING1 3
-#define SCE_F_STRING2 4
-#define SCE_F_STRINGEOL 5
-#define SCE_F_OPERATOR 6
-#define SCE_F_IDENTIFIER 7
-#define SCE_F_WORD 8
-#define SCE_F_WORD2 9
-#define SCE_F_WORD3 10
-#define SCE_F_PREPROCESSOR 11
-#define SCE_F_OPERATOR2 12
-#define SCE_F_LABEL 13
-#define SCE_F_CONTINUATION 14
-#define SCE_CSS_DEFAULT 0
-#define SCE_CSS_TAG 1
-#define SCE_CSS_CLASS 2
-#define SCE_CSS_PSEUDOCLASS 3
-#define SCE_CSS_UNKNOWN_PSEUDOCLASS 4
-#define SCE_CSS_OPERATOR 5
-#define SCE_CSS_IDENTIFIER 6
-#define SCE_CSS_UNKNOWN_IDENTIFIER 7
-#define SCE_CSS_VALUE 8
-#define SCE_CSS_COMMENT 9
-#define SCE_CSS_ID 10
-#define SCE_CSS_IMPORTANT 11
-#define SCE_CSS_DIRECTIVE 12
-#define SCE_CSS_DOUBLESTRING 13
-#define SCE_CSS_SINGLESTRING 14
-#define SCE_CSS_IDENTIFIER2 15
-#define SCE_CSS_ATTRIBUTE 16
-#define SCE_POV_DEFAULT 0
-#define SCE_POV_COMMENT 1
-#define SCE_POV_COMMENTLINE 2
-#define SCE_POV_NUMBER 3
-#define SCE_POV_OPERATOR 4
-#define SCE_POV_IDENTIFIER 5
-#define SCE_POV_STRING 6
-#define SCE_POV_STRINGEOL 7
-#define SCE_POV_DIRECTIVE 8
-#define SCE_POV_BADDIRECTIVE 9
-#define SCE_POV_WORD2 10
-#define SCE_POV_WORD3 11
-#define SCE_POV_WORD4 12
-#define SCE_POV_WORD5 13
-#define SCE_POV_WORD6 14
-#define SCE_POV_WORD7 15
-#define SCE_POV_WORD8 16
-#define SCE_LOUT_DEFAULT 0
-#define SCE_LOUT_COMMENT 1
-#define SCE_LOUT_NUMBER 2
-#define SCE_LOUT_WORD 3
-#define SCE_LOUT_WORD2 4
-#define SCE_LOUT_WORD3 5
-#define SCE_LOUT_WORD4 6
-#define SCE_LOUT_STRING 7
-#define SCE_LOUT_OPERATOR 8
-#define SCE_LOUT_IDENTIFIER 9
-#define SCE_LOUT_STRINGEOL 10
-#define SCE_ESCRIPT_DEFAULT 0
-#define SCE_ESCRIPT_COMMENT 1
-#define SCE_ESCRIPT_COMMENTLINE 2
-#define SCE_ESCRIPT_COMMENTDOC 3
-#define SCE_ESCRIPT_NUMBER 4
-#define SCE_ESCRIPT_WORD 5
-#define SCE_ESCRIPT_STRING 6
-#define SCE_ESCRIPT_OPERATOR 7
-#define SCE_ESCRIPT_IDENTIFIER 8
-#define SCE_ESCRIPT_BRACE 9
-#define SCE_ESCRIPT_WORD2 10
-#define SCE_ESCRIPT_WORD3 11
-#define SCE_PS_DEFAULT 0
-#define SCE_PS_COMMENT 1
-#define SCE_PS_DSC_COMMENT 2
-#define SCE_PS_DSC_VALUE 3
-#define SCE_PS_NUMBER 4
-#define SCE_PS_NAME 5
-#define SCE_PS_KEYWORD 6
-#define SCE_PS_LITERAL 7
-#define SCE_PS_IMMEVAL 8
-#define SCE_PS_PAREN_ARRAY 9
-#define SCE_PS_PAREN_DICT 10
-#define SCE_PS_PAREN_PROC 11
-#define SCE_PS_TEXT 12
-#define SCE_PS_HEXSTRING 13
-#define SCE_PS_BASE85STRING 14
-#define SCE_PS_BADSTRINGCHAR 15
-#define SCE_NSIS_DEFAULT 0
-#define SCE_NSIS_COMMENT 1
-#define SCE_NSIS_STRINGDQ 2
-#define SCE_NSIS_STRINGLQ 3
-#define SCE_NSIS_STRINGRQ 4
-#define SCE_NSIS_FUNCTION 5
-#define SCE_NSIS_VARIABLE 6
-#define SCE_NSIS_LABEL 7
-#define SCE_NSIS_USERDEFINED 8
-#define SCE_NSIS_SECTIONDEF 9
-#define SCE_NSIS_SUBSECTIONDEF 10
-#define SCE_NSIS_IFDEFINEDEF 11
-#define SCE_NSIS_MACRODEF 12
-#define SCE_NSIS_STRINGVAR 13
-#define SCE_NSIS_NUMBER 14
-#define SCE_NSIS_SECTIONGROUP 15
-#define SCE_NSIS_PAGEEX 16
-#define SCE_NSIS_FUNCTIONDEF 17
-#define SCE_NSIS_COMMENTBOX 18
-#define SCE_MMIXAL_LEADWS 0
-#define SCE_MMIXAL_COMMENT 1
-#define SCE_MMIXAL_LABEL 2
-#define SCE_MMIXAL_OPCODE 3
-#define SCE_MMIXAL_OPCODE_PRE 4
-#define SCE_MMIXAL_OPCODE_VALID 5
-#define SCE_MMIXAL_OPCODE_UNKNOWN 6
-#define SCE_MMIXAL_OPCODE_POST 7
-#define SCE_MMIXAL_OPERANDS 8
-#define SCE_MMIXAL_NUMBER 9
-#define SCE_MMIXAL_REF 10
-#define SCE_MMIXAL_CHAR 11
-#define SCE_MMIXAL_STRING 12
-#define SCE_MMIXAL_REGISTER 13
-#define SCE_MMIXAL_HEX 14
-#define SCE_MMIXAL_OPERATOR 15
-#define SCE_MMIXAL_SYMBOL 16
-#define SCE_MMIXAL_INCLUDE 17
-#define SCE_CLW_DEFAULT 0
-#define SCE_CLW_LABEL 1
-#define SCE_CLW_COMMENT 2
-#define SCE_CLW_STRING 3
-#define SCE_CLW_USER_IDENTIFIER 4
-#define SCE_CLW_INTEGER_CONSTANT 5
-#define SCE_CLW_REAL_CONSTANT 6
-#define SCE_CLW_PICTURE_STRING 7
-#define SCE_CLW_KEYWORD 8
-#define SCE_CLW_COMPILER_DIRECTIVE 9
-#define SCE_CLW_RUNTIME_EXPRESSIONS 10
-#define SCE_CLW_BUILTIN_PROCEDURES_FUNCTION 11
-#define SCE_CLW_STRUCTURE_DATA_TYPE 12
-#define SCE_CLW_ATTRIBUTE 13
-#define SCE_CLW_STANDARD_EQUATE 14
-#define SCE_CLW_ERROR 15
-#define SCE_CLW_DEPRECATED 16
-#define SCE_LOT_DEFAULT 0
-#define SCE_LOT_HEADER 1
-#define SCE_LOT_BREAK 2
-#define SCE_LOT_SET 3
-#define SCE_LOT_PASS 4
-#define SCE_LOT_FAIL 5
-#define SCE_LOT_ABORT 6
-#define SCE_YAML_DEFAULT 0
-#define SCE_YAML_COMMENT 1
-#define SCE_YAML_IDENTIFIER 2
-#define SCE_YAML_KEYWORD 3
-#define SCE_YAML_NUMBER 4
-#define SCE_YAML_REFERENCE 5
-#define SCE_YAML_DOCUMENT 6
-#define SCE_YAML_TEXT 7
-#define SCE_YAML_ERROR 8
-#define SCE_TEX_DEFAULT 0
-#define SCE_TEX_SPECIAL 1
-#define SCE_TEX_GROUP 2
-#define SCE_TEX_SYMBOL 3
-#define SCE_TEX_COMMAND 4
-#define SCE_TEX_TEXT 5
-#define SCE_METAPOST_DEFAULT 0
-#define SCE_METAPOST_SPECIAL 1
-#define SCE_METAPOST_GROUP 2
-#define SCE_METAPOST_SYMBOL 3
-#define SCE_METAPOST_COMMAND 4
-#define SCE_METAPOST_TEXT 5
-#define SCE_METAPOST_EXTRA 6
-#define SCE_ERLANG_DEFAULT 0
-#define SCE_ERLANG_COMMENT 1
-#define SCE_ERLANG_VARIABLE 2
-#define SCE_ERLANG_NUMBER 3
-#define SCE_ERLANG_KEYWORD 4
-#define SCE_ERLANG_STRING 5
-#define SCE_ERLANG_OPERATOR 6
-#define SCE_ERLANG_ATOM 7
-#define SCE_ERLANG_FUNCTION_NAME 8
-#define SCE_ERLANG_CHARACTER 9
-#define SCE_ERLANG_MACRO 10
-#define SCE_ERLANG_RECORD 11
-#define SCE_ERLANG_SEPARATOR 12
-#define SCE_ERLANG_NODE_NAME 13
-#define SCE_ERLANG_UNKNOWN 31
-#define SCE_MSSQL_DEFAULT 0
-#define SCE_MSSQL_COMMENT 1
-#define SCE_MSSQL_LINE_COMMENT 2
-#define SCE_MSSQL_NUMBER 3
-#define SCE_MSSQL_STRING 4
-#define SCE_MSSQL_OPERATOR 5
-#define SCE_MSSQL_IDENTIFIER 6
-#define SCE_MSSQL_VARIABLE 7
-#define SCE_MSSQL_COLUMN_NAME 8
-#define SCE_MSSQL_STATEMENT 9
-#define SCE_MSSQL_DATATYPE 10
-#define SCE_MSSQL_SYSTABLE 11
-#define SCE_MSSQL_GLOBAL_VARIABLE 12
-#define SCE_MSSQL_FUNCTION 13
-#define SCE_MSSQL_STORED_PROCEDURE 14
-#define SCE_MSSQL_DEFAULT_PREF_DATATYPE 15
-#define SCE_MSSQL_COLUMN_NAME_2 16
-#define SCE_V_DEFAULT 0
-#define SCE_V_COMMENT 1
-#define SCE_V_COMMENTLINE 2
-#define SCE_V_COMMENTLINEBANG 3
-#define SCE_V_NUMBER 4
-#define SCE_V_WORD 5
-#define SCE_V_STRING 6
-#define SCE_V_WORD2 7
-#define SCE_V_WORD3 8
-#define SCE_V_PREPROCESSOR 9
-#define SCE_V_OPERATOR 10
-#define SCE_V_IDENTIFIER 11
-#define SCE_V_STRINGEOL 12
-#define SCE_V_USER 19
-#define SCE_KIX_DEFAULT 0
-#define SCE_KIX_COMMENT 1
-#define SCE_KIX_STRING1 2
-#define SCE_KIX_STRING2 3
-#define SCE_KIX_NUMBER 4
-#define SCE_KIX_VAR 5
-#define SCE_KIX_MACRO 6
-#define SCE_KIX_KEYWORD 7
-#define SCE_KIX_FUNCTIONS 8
-#define SCE_KIX_OPERATOR 9
-#define SCE_KIX_IDENTIFIER 31
-#define SCE_GC_DEFAULT 0
-#define SCE_GC_COMMENTLINE 1
-#define SCE_GC_COMMENTBLOCK 2
-#define SCE_GC_GLOBAL 3
-#define SCE_GC_EVENT 4
-#define SCE_GC_ATTRIBUTE 5
-#define SCE_GC_CONTROL 6
-#define SCE_GC_COMMAND 7
-#define SCE_GC_STRING 8
-#define SCE_GC_OPERATOR 9
-#define SCE_SN_DEFAULT 0
-#define SCE_SN_CODE 1
-#define SCE_SN_COMMENTLINE 2
-#define SCE_SN_COMMENTLINEBANG 3
-#define SCE_SN_NUMBER 4
-#define SCE_SN_WORD 5
-#define SCE_SN_STRING 6
-#define SCE_SN_WORD2 7
-#define SCE_SN_WORD3 8
-#define SCE_SN_PREPROCESSOR 9
-#define SCE_SN_OPERATOR 10
-#define SCE_SN_IDENTIFIER 11
-#define SCE_SN_STRINGEOL 12
-#define SCE_SN_REGEXTAG 13
-#define SCE_SN_SIGNAL 14
-#define SCE_SN_USER 19
-#define SCE_AU3_DEFAULT 0
-#define SCE_AU3_COMMENT 1
-#define SCE_AU3_COMMENTBLOCK 2
-#define SCE_AU3_NUMBER 3
-#define SCE_AU3_FUNCTION 4
-#define SCE_AU3_KEYWORD 5
-#define SCE_AU3_MACRO 6
-#define SCE_AU3_STRING 7
-#define SCE_AU3_OPERATOR 8
-#define SCE_AU3_VARIABLE 9
-#define SCE_AU3_SENT 10
-#define SCE_AU3_PREPROCESSOR 11
-#define SCE_AU3_SPECIAL 12
-#define SCE_AU3_EXPAND 13
-#define SCE_AU3_COMOBJ 14
-#define SCE_AU3_UDF 15
-#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_OPERATOR 5
-#define SCE_APDL_WORD 6
-#define SCE_APDL_PROCESSOR 7
-#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_NUMBER 3
-#define SCE_SH_WORD 4
-#define SCE_SH_STRING 5
-#define SCE_SH_CHARACTER 6
-#define SCE_SH_OPERATOR 7
-#define SCE_SH_IDENTIFIER 8
-#define SCE_SH_SCALAR 9
-#define SCE_SH_PARAM 10
-#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
-#define SCE_CAML_DEFAULT 0
-#define SCE_CAML_IDENTIFIER 1
-#define SCE_CAML_TAGNAME 2
-#define SCE_CAML_KEYWORD 3
-#define SCE_CAML_KEYWORD2 4
-#define SCE_CAML_KEYWORD3 5
-#define SCE_CAML_LINENUM 6
-#define SCE_CAML_OPERATOR 7
-#define SCE_CAML_NUMBER 8
-#define SCE_CAML_CHAR 9
-#define SCE_CAML_STRING 11
-#define SCE_CAML_COMMENT 12
-#define SCE_CAML_COMMENT1 13
-#define SCE_CAML_COMMENT2 14
-#define SCE_CAML_COMMENT3 15
-#define SCE_HA_DEFAULT 0
-#define SCE_HA_IDENTIFIER 1
-#define SCE_HA_KEYWORD 2
-#define SCE_HA_NUMBER 3
-#define SCE_HA_STRING 4
-#define SCE_HA_CHARACTER 5
-#define SCE_HA_CLASS 6
-#define SCE_HA_MODULE 7
-#define SCE_HA_CAPITAL 8
-#define SCE_HA_DATA 9
-#define SCE_HA_IMPORT 10
-#define SCE_HA_OPERATOR 11
-#define SCE_HA_INSTANCE 12
-#define SCE_HA_COMMENTLINE 13
-#define SCE_HA_COMMENTBLOCK 14
-#define SCE_HA_COMMENTBLOCK2 15
-#define SCE_HA_COMMENTBLOCK3 16
-#define SCE_T3_DEFAULT 0
-#define SCE_T3_X_DEFAULT 1
-#define SCE_T3_PREPROCESSOR 2
-#define SCE_T3_BLOCK_COMMENT 3
-#define SCE_T3_LINE_COMMENT 4
-#define SCE_T3_OPERATOR 5
-#define SCE_T3_KEYWORD 6
-#define SCE_T3_NUMBER 7
-#define SCE_T3_IDENTIFIER 8
-#define SCE_T3_S_STRING 9
-#define SCE_T3_D_STRING 10
-#define SCE_T3_X_STRING 11
-#define SCE_T3_LIB_DIRECTIVE 12
-#define SCE_T3_MSG_PARAM 13
-#define SCE_T3_HTML_TAG 14
-#define SCE_T3_HTML_DEFAULT 15
-#define SCE_T3_HTML_STRING 16
-#define SCE_T3_USER1 17
-#define SCE_T3_USER2 18
-#define SCE_T3_USER3 19
-#define SCE_REBOL_DEFAULT 0
-#define SCE_REBOL_COMMENTLINE 1
-#define SCE_REBOL_COMMENTBLOCK 2
-#define SCE_REBOL_PREFACE 3
-#define SCE_REBOL_OPERATOR 4
-#define SCE_REBOL_CHARACTER 5
-#define SCE_REBOL_QUOTEDSTRING 6
-#define SCE_REBOL_BRACEDSTRING 7
-#define SCE_REBOL_NUMBER 8
-#define SCE_REBOL_PAIR 9
-#define SCE_REBOL_TUPLE 10
-#define SCE_REBOL_BINARY 11
-#define SCE_REBOL_MONEY 12
-#define SCE_REBOL_ISSUE 13
-#define SCE_REBOL_TAG 14
-#define SCE_REBOL_FILE 15
-#define SCE_REBOL_EMAIL 16
-#define SCE_REBOL_URL 17
-#define SCE_REBOL_DATE 18
-#define SCE_REBOL_TIME 19
-#define SCE_REBOL_IDENTIFIER 20
-#define SCE_REBOL_WORD 21
-#define SCE_REBOL_WORD2 22
-#define SCE_REBOL_WORD3 23
-#define SCE_REBOL_WORD4 24
-#define SCE_REBOL_WORD5 25
-#define SCE_REBOL_WORD6 26
-#define SCE_REBOL_WORD7 27
-#define SCE_REBOL_WORD8 28
-#define SCE_SQL_DEFAULT 0
-#define SCE_SQL_COMMENT 1
-#define SCE_SQL_COMMENTLINE 2
-#define SCE_SQL_COMMENTDOC 3
-#define SCE_SQL_NUMBER 4
-#define SCE_SQL_WORD 5
-#define SCE_SQL_STRING 6
-#define SCE_SQL_CHARACTER 7
-#define SCE_SQL_SQLPLUS 8
-#define SCE_SQL_SQLPLUS_PROMPT 9
-#define SCE_SQL_OPERATOR 10
-#define SCE_SQL_IDENTIFIER 11
-#define SCE_SQL_SQLPLUS_COMMENT 13
-#define SCE_SQL_COMMENTLINEDOC 15
-#define SCE_SQL_WORD2 16
-#define SCE_SQL_COMMENTDOCKEYWORD 17
-#define SCE_SQL_COMMENTDOCKEYWORDERROR 18
-#define SCE_SQL_USER1 19
-#define SCE_SQL_USER2 20
-#define SCE_SQL_USER3 21
-#define SCE_SQL_USER4 22
-#define SCE_SQL_QUOTEDIDENTIFIER 23
-#define SCE_ST_DEFAULT 0
-#define SCE_ST_STRING 1
-#define SCE_ST_NUMBER 2
-#define SCE_ST_COMMENT 3
-#define SCE_ST_SYMBOL 4
-#define SCE_ST_BINARY 5
-#define SCE_ST_BOOL 6
-#define SCE_ST_SELF 7
-#define SCE_ST_SUPER 8
-#define SCE_ST_NIL 9
-#define SCE_ST_GLOBAL 10
-#define SCE_ST_RETURN 11
-#define SCE_ST_SPECIAL 12
-#define SCE_ST_KWSEND 13
-#define SCE_ST_ASSIGN 14
-#define SCE_ST_CHARACTER 15
-#define SCE_ST_SPEC_SEL 16
-#define SCE_FS_DEFAULT 0
-#define SCE_FS_COMMENT 1
-#define SCE_FS_COMMENTLINE 2
-#define SCE_FS_COMMENTDOC 3
-#define SCE_FS_COMMENTLINEDOC 4
-#define SCE_FS_COMMENTDOCKEYWORD 5
-#define SCE_FS_COMMENTDOCKEYWORDERROR 6
-#define SCE_FS_KEYWORD 7
-#define SCE_FS_KEYWORD2 8
-#define SCE_FS_KEYWORD3 9
-#define SCE_FS_KEYWORD4 10
-#define SCE_FS_NUMBER 11
-#define SCE_FS_STRING 12
-#define SCE_FS_PREPROCESSOR 13
-#define SCE_FS_OPERATOR 14
-#define SCE_FS_IDENTIFIER 15
-#define SCE_FS_DATE 16
-#define SCE_FS_STRINGEOL 17
-#define SCE_FS_CONSTANT 18
-#define SCE_FS_ASM 19
-#define SCE_FS_LABEL 20
-#define SCE_FS_ERROR 21
-#define SCE_FS_HEXNUMBER 22
-#define SCE_FS_BINNUMBER 23
-#define SCE_CSOUND_DEFAULT 0
-#define SCE_CSOUND_COMMENT 1
-#define SCE_CSOUND_NUMBER 2
-#define SCE_CSOUND_OPERATOR 3
-#define SCE_CSOUND_INSTR 4
-#define SCE_CSOUND_IDENTIFIER 5
-#define SCE_CSOUND_OPCODE 6
-#define SCE_CSOUND_HEADERSTMT 7
-#define SCE_CSOUND_USERKEYWORD 8
-#define SCE_CSOUND_COMMENTBLOCK 9
-#define SCE_CSOUND_PARAM 10
-#define SCE_CSOUND_ARATE_VAR 11
-#define SCE_CSOUND_KRATE_VAR 12
-#define SCE_CSOUND_IRATE_VAR 13
-#define SCE_CSOUND_GLOBAL_VAR 14
-#define SCE_CSOUND_STRINGEOL 15
-#define SCE_INNO_DEFAULT 0
-#define SCE_INNO_COMMENT 1
-#define SCE_INNO_KEYWORD 2
-#define SCE_INNO_PARAMETER 3
-#define SCE_INNO_SECTION 4
-#define SCE_INNO_PREPROC 5
-#define SCE_INNO_PREPROC_INLINE 6
-#define SCE_INNO_COMMENT_PASCAL 7
-#define SCE_INNO_KEYWORD_PASCAL 8
-#define SCE_INNO_KEYWORD_USER 9
-#define SCE_INNO_STRING_DOUBLE 10
-#define SCE_INNO_STRING_SINGLE 11
-#define SCE_INNO_IDENTIFIER 12
-#define SCE_OPAL_SPACE 0
-#define SCE_OPAL_COMMENT_BLOCK 1
-#define SCE_OPAL_COMMENT_LINE 2
-#define SCE_OPAL_INTEGER 3
-#define SCE_OPAL_KEYWORD 4
-#define SCE_OPAL_SORT 5
-#define SCE_OPAL_STRING 6
-#define SCE_OPAL_PAR 7
-#define SCE_OPAL_BOOL_CONST 8
-#define SCE_OPAL_DEFAULT 32
-#define SCE_SPICE_DEFAULT 0
-#define SCE_SPICE_IDENTIFIER 1
-#define SCE_SPICE_KEYWORD 2
-#define SCE_SPICE_KEYWORD2 3
-#define SCE_SPICE_KEYWORD3 4
-#define SCE_SPICE_NUMBER 5
-#define SCE_SPICE_DELIMITER 6
-#define SCE_SPICE_VALUE 7
-#define SCE_SPICE_COMMENTLINE 8
-#define SCLEX_ASP 29
-#define SCLEX_PHP 30
-//--Autogenerated -- end of section automatically generated from Scintilla.iface
-
-#endif
diff --git a/src/plugins/contrib/wxSmithSTC/stc/scintilla/include/Scintilla.h b/src/plugins/contrib/wxSmithSTC/stc/scintilla/include/Scintilla.h
deleted file mode 100644
index 3a57da6ae2..0000000000
--- a/src/plugins/contrib/wxSmithSTC/stc/scintilla/include/Scintilla.h
+++ /dev/null
@@ -1,780 +0,0 @@
-// Scintilla source code edit control
-/** @file Scintilla.h
- ** Interface to the edit control.
- **/
-// Copyright 1998-2003 by Neil Hodgson
-// The License.txt file describes the conditions under which this software may be distributed.
-
-// Most of this file is automatically generated from the Scintilla.iface interface definition
-// file which contains any comments about the definitions. HFacer.py does the generation.
-
-#ifndef SCINTILLA_H
-#define SCINTILLA_H
-
-#if defined(LCCWIN) && LCCWIN
-typedef BOOL bool;
-#endif
-
-#if PLAT_WIN
-// Return false on failure:
-bool Scintilla_RegisterClasses(void *hInstance);
-bool Scintilla_ReleaseResources();
-#endif
-int Scintilla_LinkLexers();
-
-// Here should be placed typedefs for uptr_t, an unsigned integer type large enough to
-// hold a pointer and sptr_t, a signed integer large enough to hold a pointer.
-// May need to be changed for 64 bit platforms.
-#if defined(_MSC_VER) && _MSC_VER >= 1300
-#include
-#endif
-#ifdef MAXULONG_PTR
-typedef ULONG_PTR uptr_t;
-typedef LONG_PTR sptr_t;
-#else
-typedef unsigned long uptr_t;
-typedef long sptr_t;
-#endif
-
-typedef sptr_t (*SciFnDirect)(sptr_t ptr, unsigned int iMessage, uptr_t wParam, sptr_t lParam);
-
-//++Autogenerated -- start of section automatically generated from Scintilla.iface
-#define INVALID_POSITION -1
-#define SCI_START 2000
-#define SCI_OPTIONAL_START 3000
-#define SCI_LEXER_START 4000
-#define SCI_ADDTEXT 2001
-#define SCI_ADDSTYLEDTEXT 2002
-#define SCI_INSERTTEXT 2003
-#define SCI_CLEARALL 2004
-#define SCI_CLEARDOCUMENTSTYLE 2005
-#define SCI_GETLENGTH 2006
-#define SCI_GETCHARAT 2007
-#define SCI_GETCURRENTPOS 2008
-#define SCI_GETANCHOR 2009
-#define SCI_GETSTYLEAT 2010
-#define SCI_REDO 2011
-#define SCI_SETUNDOCOLLECTION 2012
-#define SCI_SELECTALL 2013
-#define SCI_SETSAVEPOINT 2014
-#define SCI_GETSTYLEDTEXT 2015
-#define SCI_CANREDO 2016
-#define SCI_MARKERLINEFROMHANDLE 2017
-#define SCI_MARKERDELETEHANDLE 2018
-#define SCI_GETUNDOCOLLECTION 2019
-#define SCWS_INVISIBLE 0
-#define SCWS_VISIBLEALWAYS 1
-#define SCWS_VISIBLEAFTERINDENT 2
-#define SCI_GETVIEWWS 2020
-#define SCI_SETVIEWWS 2021
-#define SCI_POSITIONFROMPOINT 2022
-#define SCI_POSITIONFROMPOINTCLOSE 2023
-#define SCI_GOTOLINE 2024
-#define SCI_GOTOPOS 2025
-#define SCI_SETANCHOR 2026
-#define SCI_GETCURLINE 2027
-#define SCI_GETENDSTYLED 2028
-#define SC_EOL_CRLF 0
-#define SC_EOL_CR 1
-#define SC_EOL_LF 2
-#define SCI_CONVERTEOLS 2029
-#define SCI_GETEOLMODE 2030
-#define SCI_SETEOLMODE 2031
-#define SCI_STARTSTYLING 2032
-#define SCI_SETSTYLING 2033
-#define SCI_GETBUFFEREDDRAW 2034
-#define SCI_SETBUFFEREDDRAW 2035
-#define SCI_SETTABWIDTH 2036
-#define SCI_GETTABWIDTH 2121
-#define SC_CP_UTF8 65001
-#define SC_CP_DBCS 1
-#define SCI_SETCODEPAGE 2037
-#define SCI_SETUSEPALETTE 2039
-#define MARKER_MAX 31
-#define SC_MARK_CIRCLE 0
-#define SC_MARK_ROUNDRECT 1
-#define SC_MARK_ARROW 2
-#define SC_MARK_SMALLRECT 3
-#define SC_MARK_SHORTARROW 4
-#define SC_MARK_EMPTY 5
-#define SC_MARK_ARROWDOWN 6
-#define SC_MARK_MINUS 7
-#define SC_MARK_PLUS 8
-#define SC_MARK_VLINE 9
-#define SC_MARK_LCORNER 10
-#define SC_MARK_TCORNER 11
-#define SC_MARK_BOXPLUS 12
-#define SC_MARK_BOXPLUSCONNECTED 13
-#define SC_MARK_BOXMINUS 14
-#define SC_MARK_BOXMINUSCONNECTED 15
-#define SC_MARK_LCORNERCURVE 16
-#define SC_MARK_TCORNERCURVE 17
-#define SC_MARK_CIRCLEPLUS 18
-#define SC_MARK_CIRCLEPLUSCONNECTED 19
-#define SC_MARK_CIRCLEMINUS 20
-#define SC_MARK_CIRCLEMINUSCONNECTED 21
-#define SC_MARK_BACKGROUND 22
-#define SC_MARK_DOTDOTDOT 23
-#define SC_MARK_ARROWS 24
-#define SC_MARK_PIXMAP 25
-#define SC_MARK_FULLRECT 26
-#define SC_MARK_CHARACTER 10000
-#define SC_MARKNUM_FOLDEREND 25
-#define SC_MARKNUM_FOLDEROPENMID 26
-#define SC_MARKNUM_FOLDERMIDTAIL 27
-#define SC_MARKNUM_FOLDERTAIL 28
-#define SC_MARKNUM_FOLDERSUB 29
-#define SC_MARKNUM_FOLDER 30
-#define SC_MARKNUM_FOLDEROPEN 31
-#define SC_MASK_FOLDERS 0xFE000000
-#define SCI_MARKERDEFINE 2040
-#define SCI_MARKERSETFORE 2041
-#define SCI_MARKERSETBACK 2042
-#define SCI_MARKERADD 2043
-#define SCI_MARKERDELETE 2044
-#define SCI_MARKERDELETEALL 2045
-#define SCI_MARKERGET 2046
-#define SCI_MARKERNEXT 2047
-#define SCI_MARKERPREVIOUS 2048
-#define SCI_MARKERDEFINEPIXMAP 2049
-#define SCI_MARKERADDSET 2466
-#define SCI_MARKERSETALPHA 2476
-#define SC_MARGIN_SYMBOL 0
-#define SC_MARGIN_NUMBER 1
-#define SC_MARGIN_BACK 2
-#define SC_MARGIN_FORE 3
-#define SCI_SETMARGINTYPEN 2240
-#define SCI_GETMARGINTYPEN 2241
-#define SCI_SETMARGINWIDTHN 2242
-#define SCI_GETMARGINWIDTHN 2243
-#define SCI_SETMARGINMASKN 2244
-#define SCI_GETMARGINMASKN 2245
-#define SCI_SETMARGINSENSITIVEN 2246
-#define SCI_GETMARGINSENSITIVEN 2247
-#define STYLE_DEFAULT 32
-#define STYLE_LINENUMBER 33
-#define STYLE_BRACELIGHT 34
-#define STYLE_BRACEBAD 35
-#define STYLE_CONTROLCHAR 36
-#define STYLE_INDENTGUIDE 37
-#define STYLE_CALLTIP 38
-#define STYLE_LASTPREDEFINED 39
-#define STYLE_MAX 127
-#define SC_CHARSET_ANSI 0
-#define SC_CHARSET_DEFAULT 1
-#define SC_CHARSET_BALTIC 186
-#define SC_CHARSET_CHINESEBIG5 136
-#define SC_CHARSET_EASTEUROPE 238
-#define SC_CHARSET_GB2312 134
-#define SC_CHARSET_GREEK 161
-#define SC_CHARSET_HANGUL 129
-#define SC_CHARSET_MAC 77
-#define SC_CHARSET_OEM 255
-#define SC_CHARSET_RUSSIAN 204
-#define SC_CHARSET_CYRILLIC 1251
-#define SC_CHARSET_SHIFTJIS 128
-#define SC_CHARSET_SYMBOL 2
-#define SC_CHARSET_TURKISH 162
-#define SC_CHARSET_JOHAB 130
-#define SC_CHARSET_HEBREW 177
-#define SC_CHARSET_ARABIC 178
-#define SC_CHARSET_VIETNAMESE 163
-#define SC_CHARSET_THAI 222
-#define SC_CHARSET_8859_15 1000
-#define SCI_STYLECLEARALL 2050
-#define SCI_STYLESETFORE 2051
-#define SCI_STYLESETBACK 2052
-#define SCI_STYLESETBOLD 2053
-#define SCI_STYLESETITALIC 2054
-#define SCI_STYLESETSIZE 2055
-#define SCI_STYLESETFONT 2056
-#define SCI_STYLESETEOLFILLED 2057
-#define SCI_STYLERESETDEFAULT 2058
-#define SCI_STYLESETUNDERLINE 2059
-#define SC_CASE_MIXED 0
-#define SC_CASE_UPPER 1
-#define SC_CASE_LOWER 2
-#define SCI_STYLESETCASE 2060
-#define SCI_STYLESETCHARACTERSET 2066
-#define SCI_STYLESETHOTSPOT 2409
-#define SCI_SETSELFORE 2067
-#define SCI_SETSELBACK 2068
-#define SCI_GETSELALPHA 2477
-#define SCI_SETSELALPHA 2478
-#define SCI_SETCARETFORE 2069
-#define SCI_ASSIGNCMDKEY 2070
-#define SCI_CLEARCMDKEY 2071
-#define SCI_CLEARALLCMDKEYS 2072
-#define SCI_SETSTYLINGEX 2073
-#define SCI_STYLESETVISIBLE 2074
-#define SCI_GETCARETPERIOD 2075
-#define SCI_SETCARETPERIOD 2076
-#define SCI_SETWORDCHARS 2077
-#define SCI_BEGINUNDOACTION 2078
-#define SCI_ENDUNDOACTION 2079
-#define INDIC_MAX 7
-#define INDIC_PLAIN 0
-#define INDIC_SQUIGGLE 1
-#define INDIC_TT 2
-#define INDIC_DIAGONAL 3
-#define INDIC_STRIKE 4
-#define INDIC_HIDDEN 5
-#define INDIC_BOX 6
-#define INDIC_ROUNDBOX 7
-#define INDIC0_MASK 0x20
-#define INDIC1_MASK 0x40
-#define INDIC2_MASK 0x80
-#define INDICS_MASK 0xE0
-#define SCI_INDICSETSTYLE 2080
-#define SCI_INDICGETSTYLE 2081
-#define SCI_INDICSETFORE 2082
-#define SCI_INDICGETFORE 2083
-#define SCI_SETWHITESPACEFORE 2084
-#define SCI_SETWHITESPACEBACK 2085
-#define SCI_SETSTYLEBITS 2090
-#define SCI_GETSTYLEBITS 2091
-#define SCI_SETLINESTATE 2092
-#define SCI_GETLINESTATE 2093
-#define SCI_GETMAXLINESTATE 2094
-#define SCI_GETCARETLINEVISIBLE 2095
-#define SCI_SETCARETLINEVISIBLE 2096
-#define SCI_GETCARETLINEBACK 2097
-#define SCI_SETCARETLINEBACK 2098
-#define SCI_STYLESETCHANGEABLE 2099
-#define SCI_AUTOCSHOW 2100
-#define SCI_AUTOCCANCEL 2101
-#define SCI_AUTOCACTIVE 2102
-#define SCI_AUTOCPOSSTART 2103
-#define SCI_AUTOCCOMPLETE 2104
-#define SCI_AUTOCSTOPS 2105
-#define SCI_AUTOCSETSEPARATOR 2106
-#define SCI_AUTOCGETSEPARATOR 2107
-#define SCI_AUTOCSELECT 2108
-#define SCI_AUTOCSETCANCELATSTART 2110
-#define SCI_AUTOCGETCANCELATSTART 2111
-#define SCI_AUTOCSETFILLUPS 2112
-#define SCI_AUTOCSETCHOOSESINGLE 2113
-#define SCI_AUTOCGETCHOOSESINGLE 2114
-#define SCI_AUTOCSETIGNORECASE 2115
-#define SCI_AUTOCGETIGNORECASE 2116
-#define SCI_USERLISTSHOW 2117
-#define SCI_AUTOCSETAUTOHIDE 2118
-#define SCI_AUTOCGETAUTOHIDE 2119
-#define SCI_AUTOCSETDROPRESTOFWORD 2270
-#define SCI_AUTOCGETDROPRESTOFWORD 2271
-#define SCI_REGISTERIMAGE 2405
-#define SCI_CLEARREGISTEREDIMAGES 2408
-#define SCI_AUTOCGETTYPESEPARATOR 2285
-#define SCI_AUTOCSETTYPESEPARATOR 2286
-#define SCI_AUTOCSETMAXWIDTH 2208
-#define SCI_AUTOCGETMAXWIDTH 2209
-#define SCI_AUTOCSETMAXHEIGHT 2210
-#define SCI_AUTOCGETMAXHEIGHT 2211
-#define SCI_SETINDENT 2122
-#define SCI_GETINDENT 2123
-#define SCI_SETUSETABS 2124
-#define SCI_GETUSETABS 2125
-#define SCI_SETLINEINDENTATION 2126
-#define SCI_GETLINEINDENTATION 2127
-#define SCI_GETLINEINDENTPOSITION 2128
-#define SCI_GETCOLUMN 2129
-#define SCI_SETHSCROLLBAR 2130
-#define SCI_GETHSCROLLBAR 2131
-#define SCI_SETINDENTATIONGUIDES 2132
-#define SCI_GETINDENTATIONGUIDES 2133
-#define SCI_SETHIGHLIGHTGUIDE 2134
-#define SCI_GETHIGHLIGHTGUIDE 2135
-#define SCI_GETLINEENDPOSITION 2136
-#define SCI_GETCODEPAGE 2137
-#define SCI_GETCARETFORE 2138
-#define SCI_GETUSEPALETTE 2139
-#define SCI_GETREADONLY 2140
-#define SCI_SETCURRENTPOS 2141
-#define SCI_SETSELECTIONSTART 2142
-#define SCI_GETSELECTIONSTART 2143
-#define SCI_SETSELECTIONEND 2144
-#define SCI_GETSELECTIONEND 2145
-#define SCI_SETPRINTMAGNIFICATION 2146
-#define SCI_GETPRINTMAGNIFICATION 2147
-#define SC_PRINT_NORMAL 0
-#define SC_PRINT_INVERTLIGHT 1
-#define SC_PRINT_BLACKONWHITE 2
-#define SC_PRINT_COLOURONWHITE 3
-#define SC_PRINT_COLOURONWHITEDEFAULTBG 4
-#define SCI_SETPRINTCOLOURMODE 2148
-#define SCI_GETPRINTCOLOURMODE 2149
-#define SCFIND_WHOLEWORD 2
-#define SCFIND_MATCHCASE 4
-#define SCFIND_WORDSTART 0x00100000
-#define SCFIND_REGEXP 0x00200000
-#define SCFIND_POSIX 0x00400000
-#define SCI_FINDTEXT 2150
-#define SCI_FORMATRANGE 2151
-#define SCI_GETFIRSTVISIBLELINE 2152
-#define SCI_GETLINE 2153
-#define SCI_GETLINECOUNT 2154
-#define SCI_SETMARGINLEFT 2155
-#define SCI_GETMARGINLEFT 2156
-#define SCI_SETMARGINRIGHT 2157
-#define SCI_GETMARGINRIGHT 2158
-#define SCI_GETMODIFY 2159
-#define SCI_SETSEL 2160
-#define SCI_GETSELTEXT 2161
-#define SCI_GETTEXTRANGE 2162
-#define SCI_HIDESELECTION 2163
-#define SCI_POINTXFROMPOSITION 2164
-#define SCI_POINTYFROMPOSITION 2165
-#define SCI_LINEFROMPOSITION 2166
-#define SCI_POSITIONFROMLINE 2167
-#define SCI_LINESCROLL 2168
-#define SCI_SCROLLCARET 2169
-#define SCI_REPLACESEL 2170
-#define SCI_SETREADONLY 2171
-#define SCI_NULL 2172
-#define SCI_CANPASTE 2173
-#define SCI_CANUNDO 2174
-#define SCI_EMPTYUNDOBUFFER 2175
-#define SCI_UNDO 2176
-#define SCI_CUT 2177
-#define SCI_COPY 2178
-#define SCI_PASTE 2179
-#define SCI_CLEAR 2180
-#define SCI_SETTEXT 2181
-#define SCI_GETTEXT 2182
-#define SCI_GETTEXTLENGTH 2183
-#define SCI_GETDIRECTFUNCTION 2184
-#define SCI_GETDIRECTPOINTER 2185
-#define SCI_SETOVERTYPE 2186
-#define SCI_GETOVERTYPE 2187
-#define SCI_SETCARETWIDTH 2188
-#define SCI_GETCARETWIDTH 2189
-#define SCI_SETTARGETSTART 2190
-#define SCI_GETTARGETSTART 2191
-#define SCI_SETTARGETEND 2192
-#define SCI_GETTARGETEND 2193
-#define SCI_REPLACETARGET 2194
-#define SCI_REPLACETARGETRE 2195
-#define SCI_SEARCHINTARGET 2197
-#define SCI_SETSEARCHFLAGS 2198
-#define SCI_GETSEARCHFLAGS 2199
-#define SCI_CALLTIPSHOW 2200
-#define SCI_CALLTIPCANCEL 2201
-#define SCI_CALLTIPACTIVE 2202
-#define SCI_CALLTIPPOSSTART 2203
-#define SCI_CALLTIPSETHLT 2204
-#define SCI_CALLTIPSETBACK 2205
-#define SCI_CALLTIPSETFORE 2206
-#define SCI_CALLTIPSETFOREHLT 2207
-#define SCI_CALLTIPUSESTYLE 2212
-#define SCI_VISIBLEFROMDOCLINE 2220
-#define SCI_DOCLINEFROMVISIBLE 2221
-#define SCI_WRAPCOUNT 2235
-#define SC_FOLDLEVELBASE 0x400
-#define SC_FOLDLEVELWHITEFLAG 0x1000
-#define SC_FOLDLEVELHEADERFLAG 0x2000
-#define SC_FOLDLEVELBOXHEADERFLAG 0x4000
-#define SC_FOLDLEVELBOXFOOTERFLAG 0x8000
-#define SC_FOLDLEVELCONTRACTED 0x10000
-#define SC_FOLDLEVELUNINDENT 0x20000
-#define SC_FOLDLEVELNUMBERMASK 0x0FFF
-#define SCI_SETFOLDLEVEL 2222
-#define SCI_GETFOLDLEVEL 2223
-#define SCI_GETLASTCHILD 2224
-#define SCI_GETFOLDPARENT 2225
-#define SCI_SHOWLINES 2226
-#define SCI_HIDELINES 2227
-#define SCI_GETLINEVISIBLE 2228
-#define SCI_SETFOLDEXPANDED 2229
-#define SCI_GETFOLDEXPANDED 2230
-#define SCI_TOGGLEFOLD 2231
-#define SCI_ENSUREVISIBLE 2232
-#define SC_FOLDFLAG_LINEBEFORE_EXPANDED 0x0002
-#define SC_FOLDFLAG_LINEBEFORE_CONTRACTED 0x0004
-#define SC_FOLDFLAG_LINEAFTER_EXPANDED 0x0008
-#define SC_FOLDFLAG_LINEAFTER_CONTRACTED 0x0010
-#define SC_FOLDFLAG_LEVELNUMBERS 0x0040
-#define SC_FOLDFLAG_BOX 0x0001
-#define SCI_SETFOLDFLAGS 2233
-#define SCI_ENSUREVISIBLEENFORCEPOLICY 2234
-#define SCI_SETTABINDENTS 2260
-#define SCI_GETTABINDENTS 2261
-#define SCI_SETBACKSPACEUNINDENTS 2262
-#define SCI_GETBACKSPACEUNINDENTS 2263
-#define SC_TIME_FOREVER 10000000
-#define SCI_SETMOUSEDWELLTIME 2264
-#define SCI_GETMOUSEDWELLTIME 2265
-#define SCI_WORDSTARTPOSITION 2266
-#define SCI_WORDENDPOSITION 2267
-#define SC_WRAP_NONE 0
-#define SC_WRAP_WORD 1
-#define SC_WRAP_CHAR 2
-#define SCI_SETWRAPMODE 2268
-#define SCI_GETWRAPMODE 2269
-#define SC_WRAPVISUALFLAG_NONE 0x0000
-#define SC_WRAPVISUALFLAG_END 0x0001
-#define SC_WRAPVISUALFLAG_START 0x0002
-#define SCI_SETWRAPVISUALFLAGS 2460
-#define SCI_GETWRAPVISUALFLAGS 2461
-#define SC_WRAPVISUALFLAGLOC_DEFAULT 0x0000
-#define SC_WRAPVISUALFLAGLOC_END_BY_TEXT 0x0001
-#define SC_WRAPVISUALFLAGLOC_START_BY_TEXT 0x0002
-#define SCI_SETWRAPVISUALFLAGSLOCATION 2462
-#define SCI_GETWRAPVISUALFLAGSLOCATION 2463
-#define SCI_SETWRAPSTARTINDENT 2464
-#define SCI_GETWRAPSTARTINDENT 2465
-#define SC_CACHE_NONE 0
-#define SC_CACHE_CARET 1
-#define SC_CACHE_PAGE 2
-#define SC_CACHE_DOCUMENT 3
-#define SCI_SETLAYOUTCACHE 2272
-#define SCI_GETLAYOUTCACHE 2273
-#define SCI_SETSCROLLWIDTH 2274
-#define SCI_GETSCROLLWIDTH 2275
-#define SCI_TEXTWIDTH 2276
-#define SCI_SETENDATLASTLINE 2277
-#define SCI_GETENDATLASTLINE 2278
-#define SCI_TEXTHEIGHT 2279
-#define SCI_SETVSCROLLBAR 2280
-#define SCI_GETVSCROLLBAR 2281
-#define SCI_APPENDTEXT 2282
-#define SCI_GETTWOPHASEDRAW 2283
-#define SCI_SETTWOPHASEDRAW 2284
-#define SCI_TARGETFROMSELECTION 2287
-#define SCI_LINESJOIN 2288
-#define SCI_LINESSPLIT 2289
-#define SCI_SETFOLDMARGINCOLOUR 2290
-#define SCI_SETFOLDMARGINHICOLOUR 2291
-#define SCI_LINEDOWN 2300
-#define SCI_LINEDOWNEXTEND 2301
-#define SCI_LINEUP 2302
-#define SCI_LINEUPEXTEND 2303
-#define SCI_CHARLEFT 2304
-#define SCI_CHARLEFTEXTEND 2305
-#define SCI_CHARRIGHT 2306
-#define SCI_CHARRIGHTEXTEND 2307
-#define SCI_WORDLEFT 2308
-#define SCI_WORDLEFTEXTEND 2309
-#define SCI_WORDRIGHT 2310
-#define SCI_WORDRIGHTEXTEND 2311
-#define SCI_HOME 2312
-#define SCI_HOMEEXTEND 2313
-#define SCI_LINEEND 2314
-#define SCI_LINEENDEXTEND 2315
-#define SCI_DOCUMENTSTART 2316
-#define SCI_DOCUMENTSTARTEXTEND 2317
-#define SCI_DOCUMENTEND 2318
-#define SCI_DOCUMENTENDEXTEND 2319
-#define SCI_PAGEUP 2320
-#define SCI_PAGEUPEXTEND 2321
-#define SCI_PAGEDOWN 2322
-#define SCI_PAGEDOWNEXTEND 2323
-#define SCI_EDITTOGGLEOVERTYPE 2324
-#define SCI_CANCEL 2325
-#define SCI_DELETEBACK 2326
-#define SCI_TAB 2327
-#define SCI_BACKTAB 2328
-#define SCI_NEWLINE 2329
-#define SCI_FORMFEED 2330
-#define SCI_VCHOME 2331
-#define SCI_VCHOMEEXTEND 2332
-#define SCI_ZOOMIN 2333
-#define SCI_ZOOMOUT 2334
-#define SCI_DELWORDLEFT 2335
-#define SCI_DELWORDRIGHT 2336
-#define SCI_LINECUT 2337
-#define SCI_LINEDELETE 2338
-#define SCI_LINETRANSPOSE 2339
-#define SCI_LINEDUPLICATE 2404
-#define SCI_LOWERCASE 2340
-#define SCI_UPPERCASE 2341
-#define SCI_LINESCROLLDOWN 2342
-#define SCI_LINESCROLLUP 2343
-#define SCI_DELETEBACKNOTLINE 2344
-#define SCI_HOMEDISPLAY 2345
-#define SCI_HOMEDISPLAYEXTEND 2346
-#define SCI_LINEENDDISPLAY 2347
-#define SCI_LINEENDDISPLAYEXTEND 2348
-#define SCI_HOMEWRAP 2349
-#define SCI_HOMEWRAPEXTEND 2450
-#define SCI_LINEENDWRAP 2451
-#define SCI_LINEENDWRAPEXTEND 2452
-#define SCI_VCHOMEWRAP 2453
-#define SCI_VCHOMEWRAPEXTEND 2454
-#define SCI_LINECOPY 2455
-#define SCI_MOVECARETINSIDEVIEW 2401
-#define SCI_LINELENGTH 2350
-#define SCI_BRACEHIGHLIGHT 2351
-#define SCI_BRACEBADLIGHT 2352
-#define SCI_BRACEMATCH 2353
-#define SCI_GETVIEWEOL 2355
-#define SCI_SETVIEWEOL 2356
-#define SCI_GETDOCPOINTER 2357
-#define SCI_SETDOCPOINTER 2358
-#define SCI_SETMODEVENTMASK 2359
-#define EDGE_NONE 0
-#define EDGE_LINE 1
-#define EDGE_BACKGROUND 2
-#define SCI_GETEDGECOLUMN 2360
-#define SCI_SETEDGECOLUMN 2361
-#define SCI_GETEDGEMODE 2362
-#define SCI_SETEDGEMODE 2363
-#define SCI_GETEDGECOLOUR 2364
-#define SCI_SETEDGECOLOUR 2365
-#define SCI_SEARCHANCHOR 2366
-#define SCI_SEARCHNEXT 2367
-#define SCI_SEARCHPREV 2368
-#define SCI_LINESONSCREEN 2370
-#define SCI_USEPOPUP 2371
-#define SCI_SELECTIONISRECTANGLE 2372
-#define SCI_SETZOOM 2373
-#define SCI_GETZOOM 2374
-#define SCI_CREATEDOCUMENT 2375
-#define SCI_ADDREFDOCUMENT 2376
-#define SCI_RELEASEDOCUMENT 2377
-#define SCI_GETMODEVENTMASK 2378
-#define SCI_SETFOCUS 2380
-#define SCI_GETFOCUS 2381
-#define SCI_SETSTATUS 2382
-#define SCI_GETSTATUS 2383
-#define SCI_SETMOUSEDOWNCAPTURES 2384
-#define SCI_GETMOUSEDOWNCAPTURES 2385
-#define SC_CURSORNORMAL -1
-#define SC_CURSORWAIT 4
-#define SCI_SETCURSOR 2386
-#define SCI_GETCURSOR 2387
-#define SCI_SETCONTROLCHARSYMBOL 2388
-#define SCI_GETCONTROLCHARSYMBOL 2389
-#define SCI_WORDPARTLEFT 2390
-#define SCI_WORDPARTLEFTEXTEND 2391
-#define SCI_WORDPARTRIGHT 2392
-#define SCI_WORDPARTRIGHTEXTEND 2393
-#define VISIBLE_SLOP 0x01
-#define VISIBLE_STRICT 0x04
-#define SCI_SETVISIBLEPOLICY 2394
-#define SCI_DELLINELEFT 2395
-#define SCI_DELLINERIGHT 2396
-#define SCI_SETXOFFSET 2397
-#define SCI_GETXOFFSET 2398
-#define SCI_CHOOSECARETX 2399
-#define SCI_GRABFOCUS 2400
-#define CARET_SLOP 0x01
-#define CARET_STRICT 0x04
-#define CARET_JUMPS 0x10
-#define CARET_EVEN 0x08
-#define SCI_SETXCARETPOLICY 2402
-#define SCI_SETYCARETPOLICY 2403
-#define SCI_SETPRINTWRAPMODE 2406
-#define SCI_GETPRINTWRAPMODE 2407
-#define SCI_SETHOTSPOTACTIVEFORE 2410
-#define SCI_SETHOTSPOTACTIVEBACK 2411
-#define SCI_SETHOTSPOTACTIVEUNDERLINE 2412
-#define SCI_SETHOTSPOTSINGLELINE 2421
-#define SCI_PARADOWN 2413
-#define SCI_PARADOWNEXTEND 2414
-#define SCI_PARAUP 2415
-#define SCI_PARAUPEXTEND 2416
-#define SCI_POSITIONBEFORE 2417
-#define SCI_POSITIONAFTER 2418
-#define SCI_COPYRANGE 2419
-#define SCI_COPYTEXT 2420
-#define SC_SEL_STREAM 0
-#define SC_SEL_RECTANGLE 1
-#define SC_SEL_LINES 2
-#define SCI_SETSELECTIONMODE 2422
-#define SCI_GETSELECTIONMODE 2423
-#define SCI_GETLINESELSTARTPOSITION 2424
-#define SCI_GETLINESELENDPOSITION 2425
-#define SCI_LINEDOWNRECTEXTEND 2426
-#define SCI_LINEUPRECTEXTEND 2427
-#define SCI_CHARLEFTRECTEXTEND 2428
-#define SCI_CHARRIGHTRECTEXTEND 2429
-#define SCI_HOMERECTEXTEND 2430
-#define SCI_VCHOMERECTEXTEND 2431
-#define SCI_LINEENDRECTEXTEND 2432
-#define SCI_PAGEUPRECTEXTEND 2433
-#define SCI_PAGEDOWNRECTEXTEND 2434
-#define SCI_STUTTEREDPAGEUP 2435
-#define SCI_STUTTEREDPAGEUPEXTEND 2436
-#define SCI_STUTTEREDPAGEDOWN 2437
-#define SCI_STUTTEREDPAGEDOWNEXTEND 2438
-#define SCI_WORDLEFTEND 2439
-#define SCI_WORDLEFTENDEXTEND 2440
-#define SCI_WORDRIGHTEND 2441
-#define SCI_WORDRIGHTENDEXTEND 2442
-#define SCI_SETWHITESPACECHARS 2443
-#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_GETCARETSTICKY 2457
-#define SCI_SETCARETSTICKY 2458
-#define SCI_TOGGLECARETSTICKY 2459
-#define SCI_SETPASTECONVERTENDINGS 2467
-#define SCI_GETPASTECONVERTENDINGS 2468
-#define SCI_SELECTIONDUPLICATE 2469
-#define SC_ALPHA_TRANSPARENT 0
-#define SC_ALPHA_OPAQUE 255
-#define SC_ALPHA_NOALPHA 256
-#define SCI_SETCARETLINEBACKALPHA 2470
-#define SCI_GETCARETLINEBACKALPHA 2471
-#define SCI_STARTRECORD 3001
-#define SCI_STOPRECORD 3002
-#define SCI_SETLEXER 4001
-#define SCI_GETLEXER 4002
-#define SCI_COLOURISE 4003
-#define SCI_SETPROPERTY 4004
-#define KEYWORDSET_MAX 8
-#define SCI_SETKEYWORDS 4005
-#define SCI_SETLEXERLANGUAGE 4006
-#define SCI_LOADLEXERLIBRARY 4007
-#define SCI_GETPROPERTY 4008
-#define SCI_GETPROPERTYEXPANDED 4009
-#define SCI_GETPROPERTYINT 4010
-#define SCI_GETSTYLEBITSNEEDED 4011
-#define SC_MOD_INSERTTEXT 0x1
-#define SC_MOD_DELETETEXT 0x2
-#define SC_MOD_CHANGESTYLE 0x4
-#define SC_MOD_CHANGEFOLD 0x8
-#define SC_PERFORMED_USER 0x10
-#define SC_PERFORMED_UNDO 0x20
-#define SC_PERFORMED_REDO 0x40
-#define SC_MULTISTEPUNDOREDO 0x80
-#define SC_LASTSTEPINUNDOREDO 0x100
-#define SC_MOD_CHANGEMARKER 0x200
-#define SC_MOD_BEFOREINSERT 0x400
-#define SC_MOD_BEFOREDELETE 0x800
-#define SC_MULTILINEUNDOREDO 0x1000
-#define SC_MODEVENTMASKALL 0x1FFF
-#define SCEN_CHANGE 768
-#define SCEN_SETFOCUS 512
-#define SCEN_KILLFOCUS 256
-#define SCK_DOWN 300
-#define SCK_UP 301
-#define SCK_LEFT 302
-#define SCK_RIGHT 303
-#define SCK_HOME 304
-#define SCK_END 305
-#define SCK_PRIOR 306
-#define SCK_NEXT 307
-#define SCK_DELETE 308
-#define SCK_INSERT 309
-#define SCK_ESCAPE 7
-#define SCK_BACK 8
-#define SCK_TAB 9
-#define SCK_RETURN 13
-#define SCK_ADD 310
-#define SCK_SUBTRACT 311
-#define SCK_DIVIDE 312
-#define SCMOD_NORM 0
-#define SCMOD_SHIFT 1
-#define SCMOD_CTRL 2
-#define SCMOD_ALT 4
-#define SCN_STYLENEEDED 2000
-#define SCN_CHARADDED 2001
-#define SCN_SAVEPOINTREACHED 2002
-#define SCN_SAVEPOINTLEFT 2003
-#define SCN_MODIFYATTEMPTRO 2004
-#define SCN_KEY 2005
-#define SCN_DOUBLECLICK 2006
-#define SCN_UPDATEUI 2007
-#define SCN_MODIFIED 2008
-#define SCN_MACRORECORD 2009
-#define SCN_MARGINCLICK 2010
-#define SCN_NEEDSHOWN 2011
-#define SCN_PAINTED 2013
-#define SCN_USERLISTSELECTION 2014
-#define SCN_URIDROPPED 2015
-#define SCN_DWELLSTART 2016
-#define SCN_DWELLEND 2017
-#define SCN_ZOOM 2018
-#define SCN_HOTSPOTCLICK 2019
-#define SCN_HOTSPOTDOUBLECLICK 2020
-#define SCN_CALLTIPCLICK 2021
-#define SCN_AUTOCSELECTION 2022
-//--Autogenerated -- end of section automatically generated from Scintilla.iface
-
-// These structures are defined to be exactly the same shape as the Win32
-// CHARRANGE, TEXTRANGE, FINDTEXTEX, FORMATRANGE, and NMHDR structs.
-// So older code that treats Scintilla as a RichEdit will work.
-
-struct CharacterRange {
- long cpMin;
- long cpMax;
-};
-
-struct TextRange {
- struct CharacterRange chrg;
- char *lpstrText;
-};
-
-struct TextToFind {
- struct CharacterRange chrg;
- char *lpstrText;
- struct CharacterRange chrgText;
-};
-
-#ifdef PLATFORM_H
-
-// This structure is used in printing and requires some of the graphics types
-// from Platform.h. Not needed by most client code.
-
-struct RangeToFormat {
- SurfaceID hdc;
- SurfaceID hdcTarget;
- PRectangle rc;
- PRectangle rcPage;
- CharacterRange chrg;
-};
-
-#endif
-
-struct NotifyHeader {
- // Compatible with Windows NMHDR.
- // hwndFrom is really an environment specific window handle or pointer
- // but most clients of Scintilla.h do not have this type visible.
- void *hwndFrom;
- uptr_t idFrom;
- unsigned int code;
-};
-
-struct SCNotification {
- struct NotifyHeader nmhdr;
- int position; // SCN_STYLENEEDED, SCN_MODIFIED, SCN_DWELLSTART, SCN_DWELLEND
- int ch; // SCN_CHARADDED, SCN_KEY
- int modifiers; // SCN_KEY
- int modificationType; // SCN_MODIFIED
- const char *text; // SCN_MODIFIED, SCN_USERLISTSELECTION, SCN_AUTOCSELECTION
- int length; // SCN_MODIFIED
- int linesAdded; // SCN_MODIFIED
- int message; // SCN_MACRORECORD
- uptr_t wParam; // SCN_MACRORECORD
- sptr_t lParam; // SCN_MACRORECORD
- int line; // SCN_MODIFIED
- int foldLevelNow; // SCN_MODIFIED
- int foldLevelPrev; // SCN_MODIFIED
- int margin; // SCN_MARGINCLICK
- int listType; // SCN_USERLISTSELECTION
- int x; // SCN_DWELLSTART, SCN_DWELLEND
- int y; // SCN_DWELLSTART, SCN_DWELLEND
-};
-
-// Deprecation section listing all API features that are deprecated and will
-// will be removed completely in a future version.
-// To enable these features define INCLUDE_DEPRECATED_FEATURES
-
-#ifdef INCLUDE_DEPRECATED_FEATURES
-
-#define SCI_SETCARETPOLICY 2369
-#define CARET_CENTER 0x02
-#define CARET_XEVEN 0x08
-#define CARET_XJUMPS 0x10
-
-#define SCN_POSCHANGED 2012
-#define SCN_CHECKBRACE 2007
-
-#endif
-
-#endif
diff --git a/src/plugins/contrib/wxSmithSTC/stc/scintilla/include/ScintillaWidget.h b/src/plugins/contrib/wxSmithSTC/stc/scintilla/include/ScintillaWidget.h
deleted file mode 100644
index 9d23ce2a91..0000000000
--- a/src/plugins/contrib/wxSmithSTC/stc/scintilla/include/ScintillaWidget.h
+++ /dev/null
@@ -1,59 +0,0 @@
-// Scintilla source code edit control
-/** @file ScintillaWidget.h
- ** Definition of Scintilla widget for GTK+.
- ** Only needed by GTK+ code but is harmless on other platforms.
- **/
-// Copyright 1998-2001 by Neil Hodgson
-// The License.txt file describes the conditions under which this software may be distributed.
-
-#ifndef SCINTILLAWIDGET_H
-#define SCINTILLAWIDGET_H
-
-#if PLAT_GTK
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#define SCINTILLA(obj) GTK_CHECK_CAST (obj, scintilla_get_type (), ScintillaObject)
-#define SCINTILLA_CLASS(klass) GTK_CHECK_CLASS_CAST (klass, scintilla_get_type (), ScintillaClass)
-#define IS_SCINTILLA(obj) GTK_CHECK_TYPE (obj, scintilla_get_type ())
-
-typedef struct _ScintillaObject ScintillaObject;
-typedef struct _ScintillaClass ScintillaClass;
-
-struct _ScintillaObject {
- GtkContainer cont;
- void *pscin;
-};
-
-struct _ScintillaClass {
- GtkContainerClass parent_class;
-
- void (* command) (ScintillaObject *ttt);
- void (* notify) (ScintillaObject *ttt);
-};
-
-#if GLIB_MAJOR_VERSION < 2
-GtkType scintilla_get_type (void);
-#else
-GType scintilla_get_type (void);
-#endif
-GtkWidget* scintilla_new (void);
-void scintilla_set_id (ScintillaObject *sci, uptr_t id);
-sptr_t scintilla_send_message (ScintillaObject *sci,unsigned int iMessage, uptr_t wParam, sptr_t lParam);
-void scintilla_release_resources(void);
-
-#if GTK_MAJOR_VERSION < 2
-#define SCINTILLA_NOTIFY "notify"
-#else
-#define SCINTILLA_NOTIFY "sci-notify"
-#endif
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
-
-#endif
diff --git a/src/plugins/contrib/wxSmithSTC/stc/scintilla/include/WindowAccessor.h b/src/plugins/contrib/wxSmithSTC/stc/scintilla/include/WindowAccessor.h
deleted file mode 100644
index 6c16b150f2..0000000000
--- a/src/plugins/contrib/wxSmithSTC/stc/scintilla/include/WindowAccessor.h
+++ /dev/null
@@ -1,57 +0,0 @@
-// Scintilla source code edit control
-/** @file WindowAccessor.h
- ** Implementation of BufferAccess and StylingAccess on a Scintilla
- ** rapid easy access to contents of a Scintilla.
- **/
-// Copyright 1998-2001 by Neil Hodgson
-// The License.txt file describes the conditions under which this software may be distributed.
-
-/**
- */
-class WindowAccessor : public Accessor {
- // Private so WindowAccessor objects can not be copied
- WindowAccessor(const WindowAccessor &source) : Accessor(), props(source.props) {}
- WindowAccessor &operator=(const WindowAccessor &) { return *this; }
-protected:
- WindowID id;
- PropSet &props;
- int lenDoc;
-
- char styleBuf[bufferSize];
- int validLen;
- char chFlags;
- char chWhile;
- unsigned int startSeg;
-
- bool InternalIsLeadByte(char ch);
- void Fill(int position);
-public:
- WindowAccessor(WindowID id_, PropSet &props_) :
- Accessor(), id(id_), props(props_),
- lenDoc(-1), validLen(0), chFlags(0), chWhile(0) {
- }
- ~WindowAccessor();
- bool Match(int pos, const char *s);
- char StyleAt(int position);
- int GetLine(int position);
- int LineStart(int line);
- int LevelAt(int line);
- int Length();
- void Flush();
- int GetLineState(int line);
- int SetLineState(int line, int state);
- int GetPropertyInt(const char *key, int defaultValue=0) {
- return props.GetInt(key, defaultValue);
- }
- char *GetProperties() {
- return props.ToString();
- }
-
- void StartAt(unsigned int start, char chMask=31);
- void SetFlags(char chFlags_, char chWhile_) {chFlags = chFlags_; chWhile = chWhile_; };
- unsigned int GetStartSegment() { return startSeg; }
- void StartSegment(unsigned int pos);
- void ColourTo(unsigned int pos, int chAttr);
- void SetLevel(int line, int level);
- int IndentAmount(int line, int *flags, PFNIsCommentLeader pfnIsCommentLeader = 0);
-};
diff --git a/src/plugins/contrib/wxSmithSTC/stc/scintilla/src/AutoComplete.cxx b/src/plugins/contrib/wxSmithSTC/stc/scintilla/src/AutoComplete.cxx
deleted file mode 100644
index 753adca779..0000000000
--- a/src/plugins/contrib/wxSmithSTC/stc/scintilla/src/AutoComplete.cxx
+++ /dev/null
@@ -1,174 +0,0 @@
-// Scintilla source code edit control
-/** @file AutoComplete.cxx
- ** Defines the auto completion list box.
- **/
-// Copyright 1998-2003 by Neil Hodgson
-// The License.txt file describes the conditions under which this software may be distributed.
-
-#include
-#include
-#include
-
-#include "Platform.h"
-
-#include "PropSet.h"
-#include "AutoComplete.h"
-
-AutoComplete::AutoComplete() :
- active(false),
- separator(' '),
- typesep('?'),
- ignoreCase(false),
- chooseSingle(false),
- lb(0),
- posStart(0),
- startLen(0),
- cancelAtStartPos(true),
- autoHide(true),
- dropRestOfWord(false) {
- lb = ListBox::Allocate();
- stopChars[0] = '\0';
- fillUpChars[0] = '\0';
-}
-
-AutoComplete::~AutoComplete() {
- if (lb) {
- lb->Destroy();
- delete lb;
- lb = 0;
- }
-}
-
-bool AutoComplete::Active() {
- return active;
-}
-
-void AutoComplete::Start(Window &parent, int ctrlID,
- int position, Point location, int startLen_,
- int lineHeight, bool unicodeMode) {
- if (active) {
- Cancel();
- }
- lb->Create(parent, ctrlID, location, lineHeight, unicodeMode);
- lb->Clear();
- active = true;
- startLen = startLen_;
- posStart = position;
-}
-
-void AutoComplete::SetStopChars(const char *stopChars_) {
- strncpy(stopChars, stopChars_, sizeof(stopChars));
- stopChars[sizeof(stopChars) - 1] = '\0';
-}
-
-bool AutoComplete::IsStopChar(char ch) {
- return ch && strchr(stopChars, ch);
-}
-
-void AutoComplete::SetFillUpChars(const char *fillUpChars_) {
- strncpy(fillUpChars, fillUpChars_, sizeof(fillUpChars));
- fillUpChars[sizeof(fillUpChars) - 1] = '\0';
-}
-
-bool AutoComplete::IsFillUpChar(char ch) {
- return ch && strchr(fillUpChars, ch);
-}
-
-void AutoComplete::SetSeparator(char separator_) {
- separator = separator_;
-}
-
-char AutoComplete::GetSeparator() {
- return separator;
-}
-
-void AutoComplete::SetTypesep(char separator_) {
- typesep = separator_;
-}
-
-char AutoComplete::GetTypesep() {
- return typesep;
-}
-
-void AutoComplete::SetList(const char *list) {
- lb->SetList(list, separator, typesep);
-}
-
-void AutoComplete::Show(bool show) {
- lb->Show(show);
- if (show)
- lb->Select(0);
-}
-
-void AutoComplete::Cancel() {
- if (lb->Created()) {
- lb->Clear();
- lb->Destroy();
- active = false;
- }
-}
-
-
-void AutoComplete::Move(int delta) {
- int count = lb->Length();
- int current = lb->GetSelection();
- current += delta;
- if (current >= count)
- current = count - 1;
- if (current < 0)
- current = 0;
- lb->Select(current);
-}
-
-void AutoComplete::Select(const char *word) {
- size_t lenWord = strlen(word);
- int location = -1;
- const int maxItemLen=1000;
- char item[maxItemLen];
- int start = 0; // lower bound of the api array block to search
- int end = lb->Length() - 1; // upper bound of the api array block to search
- while ((start <= end) && (location == -1)) { // Binary searching loop
- int pivot = (start + end) / 2;
- lb->GetValue(pivot, item, maxItemLen);
- int cond;
- if (ignoreCase)
- cond = CompareNCaseInsensitive(word, item, lenWord);
- else
- cond = strncmp(word, item, lenWord);
- if (!cond) {
- // Find first match
- while (pivot > start) {
- lb->GetValue(pivot-1, item, maxItemLen);
- if (ignoreCase)
- cond = CompareNCaseInsensitive(word, item, lenWord);
- else
- cond = strncmp(word, item, lenWord);
- if (0 != cond)
- break;
- --pivot;
- }
- location = pivot;
- if (ignoreCase) {
- // Check for exact-case match
- for (; pivot <= end; pivot++) {
- lb->GetValue(pivot, item, maxItemLen);
- if (!strncmp(word, item, lenWord)) {
- location = pivot;
- break;
- }
- if (CompareNCaseInsensitive(word, item, lenWord))
- break;
- }
- }
- } else if (cond < 0) {
- end = pivot - 1;
- } else if (cond > 0) {
- start = pivot + 1;
- }
- }
- if (location == -1 && autoHide)
- Cancel();
- else
- lb->Select(location);
-}
-
diff --git a/src/plugins/contrib/wxSmithSTC/stc/scintilla/src/AutoComplete.h b/src/plugins/contrib/wxSmithSTC/stc/scintilla/src/AutoComplete.h
deleted file mode 100644
index 10577ca380..0000000000
--- a/src/plugins/contrib/wxSmithSTC/stc/scintilla/src/AutoComplete.h
+++ /dev/null
@@ -1,70 +0,0 @@
-// Scintilla source code edit control
-/** @file AutoComplete.h
- ** Defines the auto completion list box.
- **/
-// Copyright 1998-2003 by Neil Hodgson
-// The License.txt file describes the conditions under which this software may be distributed.
-
-#ifndef AUTOCOMPLETE_H
-#define AUTOCOMPLETE_H
-
-/**
- */
-class AutoComplete {
- bool active;
- char stopChars[256];
- char fillUpChars[256];
- char separator;
- char typesep; // Type seperator
-
-public:
- bool ignoreCase;
- bool chooseSingle;
- ListBox *lb;
- int posStart;
- int startLen;
- /// Should autocompletion be canceled if editor's currentPos <= startPos?
- bool cancelAtStartPos;
- bool autoHide;
- bool dropRestOfWord;
-
- AutoComplete();
- ~AutoComplete();
-
- /// Is the auto completion list displayed?
- bool Active();
-
- /// Display the auto completion list positioned to be near a character position
- void Start(Window &parent, int ctrlID, int position, Point location,
- int startLen_, int lineHeight, bool unicodeMode);
-
- /// The stop chars are characters which, when typed, cause the auto completion list to disappear
- void SetStopChars(const char *stopChars_);
- bool IsStopChar(char ch);
-
- /// The fillup chars are characters which, when typed, fill up the selected word
- void SetFillUpChars(const char *fillUpChars_);
- bool IsFillUpChar(char ch);
-
- /// The separator character is used when interpreting the list in SetList
- void SetSeparator(char separator_);
- char GetSeparator();
-
- /// The typesep character is used for seperating the word from the type
- void SetTypesep(char separator_);
- char GetTypesep();
-
- /// The list string contains a sequence of words separated by the separator character
- void SetList(const char *list);
-
- void Show(bool show);
- void Cancel();
-
- /// Move the current list element by delta, scrolling appropriately
- void Move(int delta);
-
- /// Select a list element that starts with word as the current element
- void Select(const char *word);
-};
-
-#endif
diff --git a/src/plugins/contrib/wxSmithSTC/stc/scintilla/src/CallTip.cxx b/src/plugins/contrib/wxSmithSTC/stc/scintilla/src/CallTip.cxx
deleted file mode 100644
index f4bc5f83c4..0000000000
--- a/src/plugins/contrib/wxSmithSTC/stc/scintilla/src/CallTip.cxx
+++ /dev/null
@@ -1,314 +0,0 @@
-// Scintilla source code edit control
-/** @file CallTip.cxx
- ** Code for displaying call tips.
- **/
-// Copyright 1998-2001 by Neil Hodgson
-// The License.txt file describes the conditions under which this software may be distributed.
-
-#include
-#include
-
-#include "Platform.h"
-
-#include "Scintilla.h"
-#include "CallTip.h"
-
-static const int insetX = 5; // text inset in x from calltip border
-static const int widthArrow = 14;
-
-CallTip::CallTip() {
- wCallTip = 0;
- inCallTipMode = false;
- posStartCallTip = 0;
- val = 0;
- rectUp = PRectangle(0,0,0,0);
- rectDown = PRectangle(0,0,0,0);
- lineHeight = 1;
- startHighlight = 0;
- endHighlight = 0;
- tabSize = 0;
- useStyleCallTip = false; // for backwards compatibility
-
- colourBG.desired = ColourDesired(0xff, 0xff, 0xff);
- colourUnSel.desired = ColourDesired(0x80, 0x80, 0x80);
- colourSel.desired = ColourDesired(0, 0, 0x80);
- colourShade.desired = ColourDesired(0, 0, 0);
- colourLight.desired = ColourDesired(0xc0, 0xc0, 0xc0);
-}
-
-CallTip::~CallTip() {
- font.Release();
- wCallTip.Destroy();
- delete []val;
- val = 0;
-}
-
-void CallTip::RefreshColourPalette(Palette &pal, bool want) {
- pal.WantFind(colourBG, want);
- pal.WantFind(colourUnSel, want);
- pal.WantFind(colourSel, want);
- pal.WantFind(colourShade, want);
- pal.WantFind(colourLight, want);
-}
-
-// Although this test includes 0, we should never see a \0 character.
-static bool IsArrowCharacter(char ch) {
- return (ch == 0) || (ch == '\001') || (ch == '\002');
-}
-
-// We ignore tabs unless a tab width has been set.
-bool CallTip::IsTabCharacter(char ch) {
- return (tabSize > 0) && (ch == '\t');
-}
-
-int CallTip::NextTabPos(int x) {
- if (tabSize > 0) { // paranoia... not called unless this is true
- x -= insetX; // position relative to text
- x = (x + tabSize) / tabSize; // tab "number"
- return tabSize*x + insetX; // position of next tab
- } else {
- return x + 1; // arbitrary
- }
-}
-
-// Draw a section of the call tip that does not include \n in one colour.
-// The text may include up to numEnds tabs or arrow characters.
-void CallTip::DrawChunk(Surface *surface, int &x, const char *s,
- int posStart, int posEnd, int ytext, PRectangle rcClient,
- bool highlight, bool draw) {
- s += posStart;
- int len = posEnd - posStart;
-
- // Divide the text into sections that are all text, or that are
- // single arrows or single tab characters (if tabSize > 0).
- int maxEnd = 0;
- const int numEnds = 10;
- int ends[numEnds + 2];
- for (int i=0;i 0)
- ends[maxEnd++] = i;
- ends[maxEnd++] = i+1;
- }
- }
- ends[maxEnd++] = len;
- int startSeg = 0;
- int xEnd;
- for (int seg = 0; seg startSeg) {
- if (IsArrowCharacter(s[startSeg])) {
- bool upArrow = s[startSeg] == '\001';
- rcClient.left = x;
- rcClient.right = rcClient.left + widthArrow;
- if (draw) {
- const int halfWidth = widthArrow / 2 - 3;
- const int centreX = rcClient.left + widthArrow / 2 - 1;
- const int centreY = (rcClient.top + rcClient.bottom) / 2;
- surface->FillRectangle(rcClient, colourBG.allocated);
- PRectangle rcClientInner(rcClient.left + 1, rcClient.top + 1,
- rcClient.right - 2, rcClient.bottom - 1);
- surface->FillRectangle(rcClientInner, colourUnSel.allocated);
-
- if (upArrow) { // Up arrow
- Point pts[] = {
- Point(centreX - halfWidth, centreY + halfWidth / 2),
- Point(centreX + halfWidth, centreY + halfWidth / 2),
- Point(centreX, centreY - halfWidth + halfWidth / 2),
- };
- surface->Polygon(pts, sizeof(pts) / sizeof(pts[0]),
- colourBG.allocated, colourBG.allocated);
- } else { // Down arrow
- Point pts[] = {
- Point(centreX - halfWidth, centreY - halfWidth / 2),
- Point(centreX + halfWidth, centreY - halfWidth / 2),
- Point(centreX, centreY + halfWidth - halfWidth / 2),
- };
- surface->Polygon(pts, sizeof(pts) / sizeof(pts[0]),
- colourBG.allocated, colourBG.allocated);
- }
- }
- xEnd = rcClient.right;
- offsetMain = xEnd;
- if (upArrow) {
- rectUp = rcClient;
- } else {
- rectDown = rcClient;
- }
- } else if (IsTabCharacter(s[startSeg])) {
- xEnd = NextTabPos(x);
- } else {
- xEnd = x + surface->WidthText(font, s + startSeg, endSeg - startSeg);
- if (draw) {
- rcClient.left = x;
- rcClient.right = xEnd;
- surface->DrawTextTransparent(rcClient, font, ytext,
- s+startSeg, endSeg - startSeg,
- highlight ? colourSel.allocated : colourUnSel.allocated);
- }
- }
- x = xEnd;
- startSeg = endSeg;
- }
- }
-}
-
-int CallTip::PaintContents(Surface *surfaceWindow, bool draw) {
- PRectangle rcClientPos = wCallTip.GetClientPosition();
- PRectangle rcClientSize(0, 0, rcClientPos.right - rcClientPos.left,
- rcClientPos.bottom - rcClientPos.top);
- PRectangle rcClient(1, 1, rcClientSize.right - 1, rcClientSize.bottom - 1);
-
- // To make a nice small call tip window, it is only sized to fit most normal characters without accents
- int ascent = surfaceWindow->Ascent(font) - surfaceWindow->InternalLeading(font);
-
- // For each line...
- // Draw the definition in three parts: before highlight, highlighted, after highlight
- int ytext = rcClient.top + ascent + 1;
- rcClient.bottom = ytext + surfaceWindow->Descent(font) + 1;
- char *chunkVal = val;
- bool moreChunks = true;
- int maxWidth = 0;
- while (moreChunks) {
- char *chunkEnd = strchr(chunkVal, '\n');
- if (chunkEnd == NULL) {
- chunkEnd = chunkVal + strlen(chunkVal);
- moreChunks = false;
- }
- int chunkOffset = chunkVal - val;
- int chunkLength = chunkEnd - chunkVal;
- int chunkEndOffset = chunkOffset + chunkLength;
- int thisStartHighlight = Platform::Maximum(startHighlight, chunkOffset);
- thisStartHighlight = Platform::Minimum(thisStartHighlight, chunkEndOffset);
- thisStartHighlight -= chunkOffset;
- int thisEndHighlight = Platform::Maximum(endHighlight, chunkOffset);
- thisEndHighlight = Platform::Minimum(thisEndHighlight, chunkEndOffset);
- thisEndHighlight -= chunkOffset;
- rcClient.top = ytext - ascent - 1;
-
- int x = insetX; // start each line at this inset
-
- DrawChunk(surfaceWindow, x, chunkVal, 0, thisStartHighlight,
- ytext, rcClient, false, draw);
- DrawChunk(surfaceWindow, x, chunkVal, thisStartHighlight, thisEndHighlight,
- ytext, rcClient, true, draw);
- DrawChunk(surfaceWindow, x, chunkVal, thisEndHighlight, chunkLength,
- ytext, rcClient, false, draw);
-
- chunkVal = chunkEnd + 1;
- ytext += lineHeight;
- rcClient.bottom += lineHeight;
- maxWidth = Platform::Maximum(maxWidth, x);
- }
- return maxWidth;
-}
-
-void CallTip::PaintCT(Surface *surfaceWindow) {
- if (!val)
- return;
- PRectangle rcClientPos = wCallTip.GetClientPosition();
- PRectangle rcClientSize(0, 0, rcClientPos.right - rcClientPos.left,
- rcClientPos.bottom - rcClientPos.top);
- PRectangle rcClient(1, 1, rcClientSize.right - 1, rcClientSize.bottom - 1);
-
- surfaceWindow->FillRectangle(rcClient, colourBG.allocated);
-
- offsetMain = insetX; // initial alignment assuming no arrows
- PaintContents(surfaceWindow, true);
-
- // Draw a raised border around the edges of the window
- surfaceWindow->MoveTo(0, rcClientSize.bottom - 1);
- surfaceWindow->PenColour(colourShade.allocated);
- surfaceWindow->LineTo(rcClientSize.right - 1, rcClientSize.bottom - 1);
- surfaceWindow->LineTo(rcClientSize.right - 1, 0);
- surfaceWindow->PenColour(colourLight.allocated);
- surfaceWindow->LineTo(0, 0);
- surfaceWindow->LineTo(0, rcClientSize.bottom - 1);
-}
-
-void CallTip::MouseClick(Point pt) {
- clickPlace = 0;
- if (rectUp.Contains(pt))
- clickPlace = 1;
- if (rectDown.Contains(pt))
- clickPlace = 2;
-}
-
-PRectangle CallTip::CallTipStart(int pos, Point pt, const char *defn,
- const char *faceName, int size,
- int codePage_, int characterSet, Window &wParent) {
- clickPlace = 0;
- if (val)
- delete []val;
- val = new char[strlen(defn) + 1];
- if (!val)
- return PRectangle();
- strcpy(val, defn);
- codePage = codePage_;
- Surface *surfaceMeasure = Surface::Allocate();
- if (!surfaceMeasure)
- return PRectangle();
- surfaceMeasure->Init(wParent.GetID());
- surfaceMeasure->SetUnicodeMode(SC_CP_UTF8 == codePage);
- surfaceMeasure->SetDBCSMode(codePage);
- startHighlight = 0;
- endHighlight = 0;
- inCallTipMode = true;
- posStartCallTip = pos;
- int deviceHeight = surfaceMeasure->DeviceHeightFont(size);
- 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;
- const char *newline;
- const char *look = val;
- rectUp = PRectangle(0,0,0,0);
- rectDown = PRectangle(0,0,0,0);
- offsetMain = insetX; // changed to right edge of any arrows
- int width = PaintContents(surfaceMeasure, false) + insetX;
- while ((newline = strchr(look, '\n')) != NULL) {
- look = newline + 1;
- numLines++;
- }
- lineHeight = surfaceMeasure->Height(font);
-
- // Extra line for border and an empty line at top and bottom. The returned
- // rectangle is aligned to the right edge of the last arrow encountered in
- // the tip text, else to the tip text left edge.
- int height = lineHeight * numLines - surfaceMeasure->InternalLeading(font) + 2 + 2;
- delete surfaceMeasure;
- return PRectangle(pt.x - offsetMain, pt.y + 1, pt.x + width - offsetMain, pt.y + 1 + height);
-}
-
-void CallTip::CallTipCancel() {
- inCallTipMode = false;
- if (wCallTip.Created()) {
- wCallTip.Destroy();
- }
-}
-
-void CallTip::SetHighlight(int start, int end) {
- // Avoid flashing by checking something has really changed
- if ((start != startHighlight) || (end != endHighlight)) {
- startHighlight = start;
- endHighlight = end;
- if (wCallTip.Created()) {
- wCallTip.InvalidateAll();
- }
- }
-}
-
-// Set the tab size (sizes > 0 enable the use of tabs). This also enables the
-// use of the STYLE_CALLTIP.
-void CallTip::SetTabSize(int tabSz) {
- tabSize = tabSz;
- useStyleCallTip = true;
-}
-
-// It might be better to have two access functions for this and to use
-// them for all settings of colours.
-void CallTip::SetForeBack(const ColourPair &fore, const ColourPair &back) {
- colourBG = back;
- colourUnSel = fore;
-}
diff --git a/src/plugins/contrib/wxSmithSTC/stc/scintilla/src/CallTip.h b/src/plugins/contrib/wxSmithSTC/stc/scintilla/src/CallTip.h
deleted file mode 100644
index 9848a10af9..0000000000
--- a/src/plugins/contrib/wxSmithSTC/stc/scintilla/src/CallTip.h
+++ /dev/null
@@ -1,79 +0,0 @@
-// Scintilla source code edit control
-/** @file CallTip.h
- ** Interface to the call tip control.
- **/
-// Copyright 1998-2001 by Neil Hodgson
-// The License.txt file describes the conditions under which this software may be distributed.
-
-#ifndef CALLTIP_H
-#define CALLTIP_H
-
-/**
- */
-class CallTip {
- int startHighlight; // character offset to start and...
- int endHighlight; // ...end of highlighted text
- char *val;
- Font font;
- PRectangle rectUp; // rectangle of last up angle in the tip
- PRectangle rectDown; // rectangle of last down arrow in the tip
- int lineHeight; // vertical line spacing
- int offsetMain; // The alignment point of the call tip
- int tabSize; // Tab size in pixels, <=0 no TAB expand
- bool useStyleCallTip; // if true, STYLE_CALLTIP should be used
-
- // Private so CallTip objects can not be copied
- CallTip(const CallTip &) {}
- CallTip &operator=(const CallTip &) { return *this; }
- void DrawChunk(Surface *surface, int &x, const char *s,
- int posStart, int posEnd, int ytext, PRectangle rcClient,
- bool highlight, bool draw);
- int PaintContents(Surface *surfaceWindow, bool draw);
- bool IsTabCharacter(char c);
- int NextTabPos(int x);
-
-public:
- Window wCallTip;
- Window wDraw;
- bool inCallTipMode;
- int posStartCallTip;
- ColourPair colourBG;
- ColourPair colourUnSel;
- ColourPair colourSel;
- ColourPair colourShade;
- ColourPair colourLight;
- int codePage;
- int clickPlace;
-
- CallTip();
- ~CallTip();
-
- /// Claim or accept palette entries for the colours required to paint a calltip.
- void RefreshColourPalette(Palette &pal, bool want);
-
- void PaintCT(Surface *surfaceWindow);
-
- void MouseClick(Point pt);
-
- /// 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_,
- int characterSet, Window &wParent);
-
- void CallTipCancel();
-
- /// Set a range of characters to be displayed in a highlight style.
- /// Commonly used to highlight the current parameter.
- void SetHighlight(int start, int end);
-
- /// Set the tab size in pixels for the call tip. 0 or -ve means no tab expand.
- void SetTabSize(int tabSz);
-
- /// Used to determine which STYLE_xxxx to use for call tip information
- bool UseStyleCallTip() const { return useStyleCallTip;}
-
- // Modify foreground and background colours
- void SetForeBack(const ColourPair &fore, const ColourPair &back);
-};
-
-#endif
diff --git a/src/plugins/contrib/wxSmithSTC/stc/scintilla/src/CellBuffer.cxx b/src/plugins/contrib/wxSmithSTC/stc/scintilla/src/CellBuffer.cxx
deleted file mode 100644
index 1109a17fbe..0000000000
--- a/src/plugins/contrib/wxSmithSTC/stc/scintilla/src/CellBuffer.cxx
+++ /dev/null
@@ -1,1120 +0,0 @@
-// Scintilla source code edit control
-/** @file CellBuffer.cxx
- ** Manages a buffer of cells.
- **/
-// Copyright 1998-2001 by Neil Hodgson
-// The License.txt file describes the conditions under which this software may be distributed.
-
-#include
-#include
-#include
-#include
-
-#include "Platform.h"
-
-#include "Scintilla.h"
-#include "SVector.h"
-#include "CellBuffer.h"
-
-MarkerHandleSet::MarkerHandleSet() {
- root = 0;
-}
-
-MarkerHandleSet::~MarkerHandleSet() {
- MarkerHandleNumber *mhn = root;
- while (mhn) {
- MarkerHandleNumber *mhnToFree = mhn;
- mhn = mhn->next;
- delete mhnToFree;
- }
- root = 0;
-}
-
-int MarkerHandleSet::Length() {
- int c = 0;
- MarkerHandleNumber *mhn = root;
- while (mhn) {
- c++;
- mhn = mhn->next;
- }
- return c;
-}
-
-int MarkerHandleSet::NumberFromHandle(int handle) {
- MarkerHandleNumber *mhn = root;
- while (mhn) {
- if (mhn->handle == handle) {
- return mhn->number;
- }
- mhn = mhn->next;
- }
- return - 1;
-}
-
-int MarkerHandleSet::MarkValue() {
- unsigned int m = 0;
- MarkerHandleNumber *mhn = root;
- while (mhn) {
- m |= (1 << mhn->number);
- mhn = mhn->next;
- }
- return m;
-}
-
-bool MarkerHandleSet::Contains(int handle) {
- MarkerHandleNumber *mhn = root;
- while (mhn) {
- if (mhn->handle == handle) {
- return true;
- }
- mhn = mhn->next;
- }
- return false;
-}
-
-bool MarkerHandleSet::InsertHandle(int handle, int markerNum) {
- MarkerHandleNumber *mhn = new MarkerHandleNumber;
- if (!mhn)
- return false;
- mhn->handle = handle;
- mhn->number = markerNum;
- mhn->next = root;
- root = mhn;
- return true;
-}
-
-void MarkerHandleSet::RemoveHandle(int handle) {
- MarkerHandleNumber **pmhn = &root;
- while (*pmhn) {
- MarkerHandleNumber *mhn = *pmhn;
- if (mhn->handle == handle) {
- *pmhn = mhn->next;
- delete mhn;
- return ;
- }
- pmhn = &((*pmhn)->next);
- }
-}
-
-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) {
- MarkerHandleNumber **pmhn = &root;
- while (*pmhn) {
- pmhn = &((*pmhn)->next);
- }
- *pmhn = other->root;
- other->root = 0;
-}
-
-LineVector::LineVector() {
- linesData = 0;
- lines = 0;
- size = 0;
- levels = 0;
- sizeLevels = 0;
- handleCurrent = 1;
- growSize = 1000;
-
- Init();
-}
-
-LineVector::~LineVector() {
- for (int line = 0; line < lines; line++) {
- delete linesData[line].handleSet;
- linesData[line].handleSet = 0;
- }
- delete []linesData;
- linesData = 0;
- delete []levels;
- levels = 0;
-}
-
-void LineVector::Init() {
- for (int line = 0; line < lines; line++) {
- delete linesData[line].handleSet;
- linesData[line].handleSet = 0;
- }
- delete []linesData;
- linesData = new LineData[static_cast(growSize)];
- size = growSize;
- lines = 1;
- delete []levels;
- levels = 0;
- sizeLevels = 0;
-}
-
-void LineVector::Expand(int sizeNew) {
- LineData *linesDataNew = new LineData[sizeNew];
- if (linesDataNew) {
- for (int i = 0; i < size; i++)
- linesDataNew[i] = linesData[i];
- // Do not delete handleSets here as they are transferred to new linesData
- delete []linesData;
- linesData = linesDataNew;
- size = sizeNew;
- } else {
- Platform::DebugPrintf("No memory available\n");
- // TODO: Blow up
- }
-
-}
-
-void LineVector::ExpandLevels(int sizeNew) {
- if (sizeNew == -1)
- sizeNew = size;
- int *levelsNew = new int[sizeNew];
- if (levelsNew) {
- int i = 0;
- for (; i < sizeLevels; i++)
- levelsNew[i] = levels[i];
- for (; i < sizeNew; i++)
- levelsNew[i] = SC_FOLDLEVELBASE;
- delete []levels;
- levels = levelsNew;
- sizeLevels = sizeNew;
- } else {
- Platform::DebugPrintf("No memory available\n");
- // TODO: Blow up
- }
-
-}
-
-void LineVector::ClearLevels() {
- delete []levels;
- levels = 0;
- sizeLevels = 0;
-}
-
-void LineVector::InsertValue(int pos, int value) {
- //Platform::DebugPrintf("InsertValue[%d] = %d\n", pos, value);
- if ((lines + 2) >= size) {
- if (growSize * 6 < size)
- growSize *= 2;
- Expand(size + growSize);
- if (levels) {
- ExpandLevels(size + growSize);
- }
- }
- lines++;
- for (int i = lines; i > pos; i--) {
- linesData[i] = linesData[i - 1];
- }
- linesData[pos].startPosition = value;
- linesData[pos].handleSet = 0;
- if (levels) {
- for (int j = lines; j > pos; j--) {
- levels[j] = levels[j - 1];
- }
- if (pos == 0) {
- levels[pos] = SC_FOLDLEVELBASE;
- } else if (pos == (lines - 1)) { // Last line will not be a folder
- levels[pos] = SC_FOLDLEVELBASE;
- } else {
- levels[pos] = levels[pos - 1];
- }
- }
-}
-
-void LineVector::SetValue(int pos, int value) {
- //Platform::DebugPrintf("SetValue[%d] = %d\n", pos, value);
- if ((pos + 2) >= size) {
- //Platform::DebugPrintf("Resize %d %d\n", size,pos);
- Expand(pos + growSize);
- //Platform::DebugPrintf("end Resize %d %d\n", size,pos);
- lines = pos;
- if (levels) {
- ExpandLevels(pos + growSize);
- }
- }
- linesData[pos].startPosition = value;
-}
-
-void LineVector::Remove(int pos) {
- //Platform::DebugPrintf("Remove %d\n", pos);
- // Retain the markers from the deleted line by oring them into the previous line
- if (pos > 0) {
- MergeMarkers(pos - 1);
- }
- for (int i = pos; i < lines; i++) {
- linesData[i] = linesData[i + 1];
- }
- if (levels) {
- // Move up following lines but merge header flag from this line
- // to line before to avoid a temporary disappearence causing expansion.
- int firstHeader = levels[pos] & SC_FOLDLEVELHEADERFLAG;
- for (int j = pos; j < lines; j++) {
- levels[j] = levels[j + 1];
- }
- if (pos > 0)
- levels[pos-1] |= firstHeader;
- }
- lines--;
-}
-
-int LineVector::LineFromPosition(int pos) {
- //Platform::DebugPrintf("LineFromPostion %d lines=%d end = %d\n", pos, lines, linesData[lines].startPosition);
- if (lines == 0)
- return 0;
- //Platform::DebugPrintf("LineFromPosition %d\n", pos);
- if (pos >= linesData[lines].startPosition)
- return lines - 1;
- int lower = 0;
- int upper = lines;
- do {
- int middle = (upper + lower + 1) / 2; // Round high
- if (pos < linesData[middle].startPosition) {
- upper = middle - 1;
- } else {
- lower = middle;
- }
- } while (lower < upper);
- //Platform::DebugPrintf("LineFromPostion %d %d %d\n", pos, lower, linesData[lower].startPosition, linesData[lower > 1 ? lower - 1 : 0].startPosition);
- return lower;
-}
-
-int LineVector::AddMark(int line, int markerNum) {
- handleCurrent++;
- if (!linesData[line].handleSet) {
- // Need new structure to hold marker handle
- linesData[line].handleSet = new MarkerHandleSet;
- if (!linesData[line].handleSet)
- return - 1;
- }
- linesData[line].handleSet->InsertHandle(handleCurrent, markerNum);
-
- return handleCurrent;
-}
-
-void LineVector::MergeMarkers(int pos) {
- if (linesData[pos + 1].handleSet != NULL) {
- if (linesData[pos].handleSet == NULL )
- linesData[pos].handleSet = new MarkerHandleSet;
- linesData[pos].handleSet->CombineWith(linesData[pos + 1].handleSet);
- delete linesData[pos + 1].handleSet;
- linesData[pos + 1].handleSet = NULL;
- }
-}
-
-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 {
- 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;
- }
- }
- }
-}
-
-void LineVector::DeleteMarkFromHandle(int markerHandle) {
- int line = LineFromHandle(markerHandle);
- if (line >= 0) {
- linesData[line].handleSet->RemoveHandle(markerHandle);
- if (linesData[line].handleSet->Length() == 0) {
- delete linesData[line].handleSet;
- linesData[line].handleSet = 0;
- }
- }
-}
-
-int LineVector::LineFromHandle(int markerHandle) {
- for (int line = 0; line < lines; line++) {
- if (linesData[line].handleSet) {
- if (linesData[line].handleSet->Contains(markerHandle)) {
- return line;
- }
- }
- }
- return - 1;
-}
-
-Action::Action() {
- at = startAction;
- position = 0;
- data = 0;
- lenData = 0;
-}
-
-Action::~Action() {
- Destroy();
-}
-
-void Action::Create(actionType at_, int position_, char *data_, int lenData_, bool mayCoalesce_) {
- delete []data;
- position = position_;
- at = at_;
- data = data_;
- lenData = lenData_;
- mayCoalesce = mayCoalesce_;
-}
-
-void Action::Destroy() {
- delete []data;
- data = 0;
-}
-
-void Action::Grab(Action *source) {
- delete []data;
-
- position = source->position;
- at = source->at;
- data = source->data;
- lenData = source->lenData;
- mayCoalesce = source->mayCoalesce;
-
- // Ownership of source data transferred to this
- source->position = 0;
- source->at = startAction;
- source->data = 0;
- source->lenData = 0;
- source->mayCoalesce = true;
-}
-
-// The undo history stores a sequence of user operations that represent the user's view of the
-// commands executed on the text.
-// Each user operation contains a sequence of text insertion and text deletion actions.
-// All the user operations are stored in a list of individual actions with 'start' actions used
-// as delimiters between user operations.
-// Initially there is one start action in the history.
-// As each action is performed, it is recorded in the history. The action may either become
-// part of the current user operation or may start a new user operation. If it is to be part of the
-// current operation, then it overwrites the current last action. If it is to be part of a new
-// operation, it is appended after the current last action.
-// After writing the new action, a new start action is appended at the end of the history.
-// The decision of whether to start a new user operation is based upon two factors. If a
-// compound operation has been explicitly started by calling BeginUndoAction and no matching
-// EndUndoAction (these calls nest) has been called, then the action is coalesced into the current
-// operation. If there is no outstanding BeginUndoAction call then a new operation is started
-// unless it looks as if the new action is caused by the user typing or deleting a stream of text.
-// Sequences that look like typing or deletion are coalesced into a single user operation.
-
-UndoHistory::UndoHistory() {
-
- lenActions = 100;
- actions = new Action[lenActions];
- maxAction = 0;
- currentAction = 0;
- undoSequenceDepth = 0;
- savePoint = 0;
-
- actions[currentAction].Create(startAction);
-}
-
-UndoHistory::~UndoHistory() {
- delete []actions;
- actions = 0;
-}
-
-void UndoHistory::EnsureUndoRoom() {
- // Have to test that there is room for 2 more actions in the array
- // as two actions may be created by the calling function
- if (currentAction >= (lenActions - 2)) {
- // Run out of undo nodes so extend the array
- int lenActionsNew = lenActions * 2;
- Action *actionsNew = new Action[lenActionsNew];
- if (!actionsNew)
- return ;
- for (int act = 0; act <= currentAction; act++)
- actionsNew[act].Grab(&actions[act]);
- delete []actions;
- lenActions = lenActionsNew;
- actions = actionsNew;
- }
-}
-
-void UndoHistory::AppendAction(actionType at, int position, char *data, int lengthData) {
- EnsureUndoRoom();
- //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
- Action &actPrevious = actions[currentAction - 1];
- // See if current action can be coalesced into previous action
- // Will work if both are inserts or deletes and position is same
- if (at != actPrevious.at) {
- currentAction++;
- } else if (currentAction == savePoint) {
- currentAction++;
- } else if ((at == insertAction) &&
- (position != (actPrevious.position + actPrevious.lenData))) {
- // Insertions must be immediately after to coalesce
- currentAction++;
- } else if (!actions[currentAction].mayCoalesce) {
- // Not allowed to coalesce if this set
- currentAction++;
- } else if (at == removeAction) {
- if ((lengthData == 1) || (lengthData == 2)){
- if ((position + lengthData) == actPrevious.position) {
- ; // Backspace -> OK
- } else if (position == actPrevious.position) {
- ; // Delete -> OK
- } else {
- // Removals must be at same position to coalesce
- currentAction++;
- }
- } else {
- // Removals must be of one character to coalesce
- currentAction++;
- }
- } else {
- //Platform::DebugPrintf("action coalesced\n");
- }
-
- } else {
- // Actions not at top level are always coalesced unless this is after return to top level
- if (!actions[currentAction].mayCoalesce)
- currentAction++;
- }
- } else {
- currentAction++;
- }
- actions[currentAction].Create(at, position, data, lengthData);
- currentAction++;
- actions[currentAction].Create(startAction);
- maxAction = currentAction;
-}
-
-void UndoHistory::BeginUndoAction() {
- EnsureUndoRoom();
- if (undoSequenceDepth == 0) {
- if (actions[currentAction].at != startAction) {
- currentAction++;
- actions[currentAction].Create(startAction);
- maxAction = currentAction;
- }
- actions[currentAction].mayCoalesce = false;
- }
- undoSequenceDepth++;
-}
-
-void UndoHistory::EndUndoAction() {
- EnsureUndoRoom();
- undoSequenceDepth--;
- if (0 == undoSequenceDepth) {
- if (actions[currentAction].at != startAction) {
- currentAction++;
- actions[currentAction].Create(startAction);
- maxAction = currentAction;
- }
- actions[currentAction].mayCoalesce = false;
- }
-}
-
-void UndoHistory::DropUndoSequence() {
- undoSequenceDepth = 0;
-}
-
-void UndoHistory::DeleteUndoHistory() {
- for (int i = 1; i < maxAction; i++)
- actions[i].Destroy();
- maxAction = 0;
- currentAction = 0;
- actions[currentAction].Create(startAction);
- savePoint = 0;
-}
-
-void UndoHistory::SetSavePoint() {
- savePoint = currentAction;
-}
-
-bool UndoHistory::IsSavePoint() const {
- return savePoint == currentAction;
-}
-
-bool UndoHistory::CanUndo() const {
- return (currentAction > 0) && (maxAction > 0);
-}
-
-int UndoHistory::StartUndo() {
- // Drop any trailing startAction
- if (actions[currentAction].at == startAction && currentAction > 0)
- currentAction--;
-
- // Count the steps in this action
- int act = currentAction;
- while (actions[act].at != startAction && act > 0) {
- act--;
- }
- return currentAction - act;
-}
-
-const Action &UndoHistory::GetUndoStep() const {
- return actions[currentAction];
-}
-
-void UndoHistory::CompletedUndoStep() {
- currentAction--;
-}
-
-bool UndoHistory::CanRedo() const {
- return maxAction > currentAction;
-}
-
-int UndoHistory::StartRedo() {
- // Drop any leading startAction
- if (actions[currentAction].at == startAction && currentAction < maxAction)
- currentAction++;
-
- // Count the steps in this action
- int act = currentAction;
- while (actions[act].at != startAction && act < maxAction) {
- act++;
- }
- return act - currentAction;
-}
-
-const Action &UndoHistory::GetRedoStep() const {
- return actions[currentAction];
-}
-
-void UndoHistory::CompletedRedoStep() {
- currentAction++;
-}
-
-CellBuffer::CellBuffer(int initialLength) {
- body = new char[initialLength];
- size = initialLength;
- length = 0;
- part1len = 0;
- gaplen = initialLength;
- part2body = body + gaplen;
- readOnly = false;
- collectingUndo = true;
- growSize = 4000;
-}
-
-CellBuffer::~CellBuffer() {
- delete []body;
- body = 0;
-}
-
-void CellBuffer::GapTo(int position) {
- if (position == part1len)
- return ;
- if (position < part1len) {
- int diff = part1len - position;
- //Platform::DebugPrintf("Move gap backwards to %d diff = %d part1len=%d length=%d \n", position,diff, part1len, length);
- for (int i = 0; i < diff; i++)
- body[part1len + gaplen - i - 1] = body[part1len - i - 1];
- } else { // position > part1len
- int diff = position - part1len;
- //Platform::DebugPrintf("Move gap forwards to %d diff =%d\n", position,diff);
- for (int i = 0; i < diff; i++)
- body[part1len + i] = body[part1len + gaplen + i];
- }
- part1len = position;
- part2body = body + gaplen;
-}
-
-void CellBuffer::RoomFor(int insertionLength) {
- //Platform::DebugPrintf("need room %d %d\n", gaplen, insertionLength);
- if (gaplen <= insertionLength) {
- //Platform::DebugPrintf("need room %d %d\n", gaplen, insertionLength);
- if (growSize * 6 < size)
- growSize *= 2;
- int newSize = size + insertionLength + growSize;
- Allocate(newSize);
- }
-}
-
-// To make it easier to write code that uses ByteAt, a position outside the range of the buffer
-// can be retrieved. All characters outside the range have the value '\0'.
-char CellBuffer::ByteAt(int position) {
- if (position < part1len) {
- if (position < 0) {
- return '\0';
- } else {
- return body[position];
- }
- } else {
- if (position >= length) {
- return '\0';
- } else {
- return part2body[position];
- }
- }
-}
-
-void CellBuffer::SetByteAt(int position, char ch) {
-
- if (position < 0) {
- //Platform::DebugPrintf("Bad position %d\n",position);
- return ;
- }
- if (position >= length + 11) {
- Platform::DebugPrintf("Very Bad position %d of %d\n", position, length);
- //exit(2);
- return ;
- }
- if (position >= length) {
- //Platform::DebugPrintf("Bad position %d of %d\n",position,length);
- return ;
- }
-
- if (position < part1len) {
- body[position] = ch;
- } else {
- part2body[position] = ch;
- }
-}
-
-char CellBuffer::CharAt(int position) {
- return ByteAt(position*2);
-}
-
-void CellBuffer::GetCharRange(char *buffer, int position, int lengthRetrieve) {
- if (lengthRetrieve < 0)
- return ;
- if (position < 0)
- return ;
- int bytePos = position * 2;
- if ((bytePos + lengthRetrieve * 2) > length) {
- Platform::DebugPrintf("Bad GetCharRange %d for %d of %d\n", bytePos,
- lengthRetrieve, length);
- return ;
- }
- GapTo(0); // Move the buffer so its easy to subscript into it
- char *pb = part2body + bytePos;
- while (lengthRetrieve--) {
- *buffer++ = *pb;
- pb += 2;
- }
-}
-
-char CellBuffer::StyleAt(int position) {
- return ByteAt(position*2 + 1);
-}
-
-const char *CellBuffer::InsertString(int position, char *s, int insertLength) {
- char *data = 0;
- // InsertString and DeleteChars are the bottleneck though which all changes occur
- if (!readOnly) {
- if (collectingUndo) {
- // Save into the undo/redo stack, but only the characters - not the formatting
- // This takes up about half load time
- data = new char[insertLength / 2];
- for (int i = 0; i < insertLength / 2; i++) {
- data[i] = s[i * 2];
- }
- uh.AppendAction(insertAction, position / 2, data, insertLength / 2);
- }
-
- BasicInsertString(position, s, insertLength);
- }
- return data;
-}
-
-bool CellBuffer::SetStyleAt(int position, char style, char mask) {
- style &= mask;
- char curVal = ByteAt(position * 2 + 1);
- if ((curVal & mask) != style) {
- SetByteAt(position*2 + 1, static_cast((curVal & ~mask) | style));
- return true;
- } else {
- return false;
- }
-}
-
-bool CellBuffer::SetStyleFor(int position, int lengthStyle, char style, char mask) {
- int bytePos = position * 2 + 1;
- bool changed = false;
- PLATFORM_ASSERT(lengthStyle == 0 ||
- (lengthStyle > 0 && lengthStyle + position < length));
- while (lengthStyle--) {
- char curVal = ByteAt(bytePos);
- if ((curVal & mask) != style) {
- SetByteAt(bytePos, static_cast((curVal & ~mask) | style));
- changed = true;
- }
- bytePos += 2;
- }
- return changed;
-}
-
-const char *CellBuffer::DeleteChars(int position, int deleteLength) {
- // InsertString and DeleteChars are the bottleneck though which all changes occur
- PLATFORM_ASSERT(deleteLength > 0);
- char *data = 0;
- if (!readOnly) {
- if (collectingUndo) {
- // Save into the undo/redo stack, but only the characters - not the formatting
- data = new char[deleteLength / 2];
- for (int i = 0; i < deleteLength / 2; i++) {
- data[i] = ByteAt(position + i * 2);
- }
- uh.AppendAction(removeAction, position / 2, data, deleteLength / 2);
- }
-
- BasicDeleteChars(position, deleteLength);
- }
- return data;
-}
-
-int CellBuffer::ByteLength() {
- return length;
-}
-
-int CellBuffer::Length() {
- return ByteLength() / 2;
-}
-
-void CellBuffer::Allocate(int newSize) {
- if (newSize > length) {
- GapTo(length);
- char *newBody = new char[newSize];
- memcpy(newBody, body, length);
- delete []body;
- body = newBody;
- gaplen += newSize - size;
- part2body = body + gaplen;
- size = newSize;
- }
-}
-
-int CellBuffer::Lines() {
- //Platform::DebugPrintf("Lines = %d\n", lv.lines);
- return lv.lines;
-}
-
-int CellBuffer::LineStart(int line) {
- if (line < 0)
- return 0;
- else if (line > lv.lines)
- return Length();
- else
- return lv.linesData[line].startPosition;
-}
-
-bool CellBuffer::IsReadOnly() {
- return readOnly;
-}
-
-void CellBuffer::SetReadOnly(bool set) {
- readOnly = set;
-}
-
-void CellBuffer::SetSavePoint() {
- uh.SetSavePoint();
-}
-
-bool CellBuffer::IsSavePoint() {
- return uh.IsSavePoint();
-}
-
-int CellBuffer::AddMark(int line, int markerNum) {
- if ((line >= 0) && (line < lv.lines)) {
- return lv.AddMark(line, markerNum);
- }
- return - 1;
-}
-
-void CellBuffer::DeleteMark(int line, int markerNum) {
- if ((line >= 0) && (line < lv.lines)) {
- lv.DeleteMark(line, markerNum, false);
- }
-}
-
-void CellBuffer::DeleteMarkFromHandle(int markerHandle) {
- lv.DeleteMarkFromHandle(markerHandle);
-}
-
-int CellBuffer::GetMark(int line) {
- if ((line >= 0) && (line < lv.lines) && (lv.linesData[line].handleSet))
- return lv.linesData[line].handleSet->MarkValue();
- return 0;
-}
-
-void CellBuffer::DeleteAllMarks(int markerNum) {
- for (int line = 0; line < lv.lines; line++) {
- lv.DeleteMark(line, markerNum, true);
- }
-}
-
-int CellBuffer::LineFromHandle(int markerHandle) {
- return lv.LineFromHandle(markerHandle);
-}
-
-// Without undo
-
-void CellBuffer::BasicInsertString(int position, char *s, int insertLength) {
- //Platform::DebugPrintf("Inserting at %d for %d\n", position, insertLength);
- if (insertLength == 0)
- return ;
- PLATFORM_ASSERT(insertLength > 0);
- RoomFor(insertLength);
- GapTo(position);
-
- memcpy(body + part1len, s, insertLength);
- length += insertLength;
- part1len += insertLength;
- gaplen -= insertLength;
- part2body = body + gaplen;
-
- int lineInsert = lv.LineFromPosition(position / 2) + 1;
- // Point all the lines after the insertion point further along in the buffer
- for (int lineAfter = lineInsert; lineAfter <= lv.lines; lineAfter++) {
- lv.linesData[lineAfter].startPosition += insertLength / 2;
- }
- char chPrev = ' ';
- if ((position - 2) >= 0)
- chPrev = ByteAt(position - 2);
- char chAfter = ' ';
- if ((position + insertLength) < length)
- chAfter = ByteAt(position + insertLength);
- if (chPrev == '\r' && chAfter == '\n') {
- //Platform::DebugPrintf("Splitting a crlf pair at %d\n", lineInsert);
- // Splitting up a crlf pair at position
- lv.InsertValue(lineInsert, position / 2);
- lineInsert++;
- }
- char ch = ' ';
- for (int i = 0; i < insertLength; i += 2) {
- ch = s[i];
- if (ch == '\r') {
- //Platform::DebugPrintf("Inserting cr at %d\n", lineInsert);
- lv.InsertValue(lineInsert, (position + i) / 2 + 1);
- lineInsert++;
- } else if (ch == '\n') {
- if (chPrev == '\r') {
- //Platform::DebugPrintf("Patching cr before lf at %d\n", lineInsert-1);
- // Patch up what was end of line
- lv.SetValue(lineInsert - 1, (position + i) / 2 + 1);
- } else {
- //Platform::DebugPrintf("Inserting lf at %d\n", lineInsert);
- lv.InsertValue(lineInsert, (position + i) / 2 + 1);
- lineInsert++;
- }
- }
- chPrev = ch;
- }
- // Joining two lines where last insertion is cr and following text starts with lf
- if (chAfter == '\n') {
- if (ch == '\r') {
- //Platform::DebugPrintf("Joining cr before lf at %d\n", lineInsert-1);
- // End of line already in buffer so drop the newly created one
- lv.Remove(lineInsert - 1);
- }
- }
-}
-
-void CellBuffer::BasicDeleteChars(int position, int deleteLength) {
- //Platform::DebugPrintf("Deleting at %d for %d\n", position, deleteLength);
- if (deleteLength == 0)
- return ;
-
- if ((position == 0) && (deleteLength == length)) {
- // If whole buffer is being deleted, faster to reinitialise lines data
- // than to delete each line.
- //printf("Whole buffer being deleted\n");
- lv.Init();
- } else {
- // Have to fix up line positions before doing deletion as looking at text in buffer
- // to work out which lines have been removed
-
- int lineRemove = lv.LineFromPosition(position / 2) + 1;
- // Point all the lines after the insertion point further along in the buffer
- for (int lineAfter = lineRemove; lineAfter <= lv.lines; lineAfter++) {
- lv.linesData[lineAfter].startPosition -= deleteLength / 2;
- }
- char chPrev = ' ';
- if (position >= 2)
- chPrev = ByteAt(position - 2);
- char chBefore = chPrev;
- char chNext = ' ';
- if (position < length)
- chNext = ByteAt(position);
- bool ignoreNL = false;
- if (chPrev == '\r' && chNext == '\n') {
- //Platform::DebugPrintf("Deleting lf after cr, move line end to cr at %d\n", lineRemove);
- // Move back one
- lv.SetValue(lineRemove, position / 2);
- lineRemove++;
- ignoreNL = true; // First \n is not real deletion
- }
-
- char ch = chNext;
- for (int i = 0; i < deleteLength; i += 2) {
- chNext = ' ';
- if ((position + i + 2) < length)
- chNext = ByteAt(position + i + 2);
- //Platform::DebugPrintf("Deleting %d %x\n", i, ch);
- if (ch == '\r') {
- if (chNext != '\n') {
- //Platform::DebugPrintf("Removing cr end of line\n");
- lv.Remove(lineRemove);
- }
- } else if (ch == '\n') {
- if (ignoreNL) {
- ignoreNL = false; // Further \n are real deletions
- } else {
- //Platform::DebugPrintf("Removing lf end of line\n");
- lv.Remove(lineRemove);
- }
- }
-
- ch = chNext;
- }
- // May have to fix up end if last deletion causes cr to be next to lf
- // or removes one of a crlf pair
- char chAfter = ' ';
- if ((position + deleteLength) < length)
- chAfter = ByteAt(position + deleteLength);
- if (chBefore == '\r' && chAfter == '\n') {
- //d.printf("Joining cr before lf at %d\n", lineRemove);
- // Using lineRemove-1 as cr ended line before start of deletion
- lv.Remove(lineRemove - 1);
- lv.SetValue(lineRemove - 1, position / 2 + 1);
- }
- }
- GapTo(position);
- length -= deleteLength;
- gaplen += deleteLength;
- part2body = body + gaplen;
-}
-
-bool CellBuffer::SetUndoCollection(bool collectUndo) {
- collectingUndo = collectUndo;
- uh.DropUndoSequence();
- return collectingUndo;
-}
-
-bool CellBuffer::IsCollectingUndo() {
- return collectingUndo;
-}
-
-void CellBuffer::BeginUndoAction() {
- uh.BeginUndoAction();
-}
-
-void CellBuffer::EndUndoAction() {
- uh.EndUndoAction();
-}
-
-void CellBuffer::DeleteUndoHistory() {
- uh.DeleteUndoHistory();
-}
-
-bool CellBuffer::CanUndo() {
- return uh.CanUndo();
-}
-
-int CellBuffer::StartUndo() {
- return uh.StartUndo();
-}
-
-const Action &CellBuffer::GetUndoStep() const {
- return uh.GetUndoStep();
-}
-
-void CellBuffer::PerformUndoStep() {
- const Action &actionStep = uh.GetUndoStep();
- if (actionStep.at == insertAction) {
- BasicDeleteChars(actionStep.position*2, actionStep.lenData*2);
- } else if (actionStep.at == removeAction) {
- char *styledData = new char[actionStep.lenData * 2];
- for (int i = 0; i < actionStep.lenData; i++) {
- styledData[i*2] = actionStep.data[i];
- styledData[i*2 + 1] = 0;
- }
- BasicInsertString(actionStep.position*2, styledData, actionStep.lenData*2);
- delete []styledData;
- }
- uh.CompletedUndoStep();
-}
-
-bool CellBuffer::CanRedo() {
- return uh.CanRedo();
-}
-
-int CellBuffer::StartRedo() {
- return uh.StartRedo();
-}
-
-const Action &CellBuffer::GetRedoStep() const {
- return uh.GetRedoStep();
-}
-
-void CellBuffer::PerformRedoStep() {
- const Action &actionStep = uh.GetRedoStep();
- if (actionStep.at == insertAction) {
- char *styledData = new char[actionStep.lenData * 2];
- for (int i = 0; i < actionStep.lenData; i++) {
- styledData[i*2] = actionStep.data[i];
- styledData[i*2 + 1] = 0;
- }
- BasicInsertString(actionStep.position*2, styledData, actionStep.lenData*2);
- delete []styledData;
- } else if (actionStep.at == removeAction) {
- BasicDeleteChars(actionStep.position*2, actionStep.lenData*2);
- }
- uh.CompletedRedoStep();
-}
-
-int CellBuffer::SetLineState(int line, int state) {
- int stateOld = lineStates[line];
- lineStates[line] = state;
- return stateOld;
-}
-
-int CellBuffer::GetLineState(int line) {
- return lineStates[line];
-}
-
-int CellBuffer::GetMaxLineState() {
- return lineStates.Length();
-}
-
-int CellBuffer::SetLevel(int line, int level) {
- int prev = 0;
- if ((line >= 0) && (line < lv.lines)) {
- if (!lv.levels) {
- lv.ExpandLevels();
- }
- prev = lv.levels[line];
- if (lv.levels[line] != level) {
- lv.levels[line] = level;
- }
- }
- return prev;
-}
-
-int CellBuffer::GetLevel(int line) {
- if (lv.levels && (line >= 0) && (line < lv.lines)) {
- return lv.levels[line];
- } else {
- return SC_FOLDLEVELBASE;
- }
-}
-
-void CellBuffer::ClearLevels() {
- lv.ClearLevels();
-}
diff --git a/src/plugins/contrib/wxSmithSTC/stc/scintilla/src/CellBuffer.h b/src/plugins/contrib/wxSmithSTC/stc/scintilla/src/CellBuffer.h
deleted file mode 100644
index bb81fd5722..0000000000
--- a/src/plugins/contrib/wxSmithSTC/stc/scintilla/src/CellBuffer.h
+++ /dev/null
@@ -1,250 +0,0 @@
-// Scintilla source code edit control
-/** @file CellBuffer.h
- ** Manages the text of the document.
- **/
-// Copyright 1998-2004 by Neil Hodgson
-// The License.txt file describes the conditions under which this software may be distributed.
-
-#ifndef CELLBUFFER_H
-#define CELLBUFFER_H
-
-/**
- * This holds the marker identifier and the marker type to display.
- * MarkerHandleNumbers are members of lists.
- */
-struct MarkerHandleNumber {
- int handle;
- int number;
- MarkerHandleNumber *next;
-};
-
-/**
- * A marker handle set contains any number of MarkerHandleNumbers.
- */
-class MarkerHandleSet {
- MarkerHandleNumber *root;
-
-public:
- MarkerHandleSet();
- ~MarkerHandleSet();
- int Length();
- int NumberFromHandle(int handle);
- int MarkValue(); ///< Bit set of marker numbers.
- bool Contains(int handle);
- bool InsertHandle(int handle, int markerNum);
- void RemoveHandle(int handle);
- bool RemoveNumber(int markerNum);
- void CombineWith(MarkerHandleSet *other);
-};
-
-/**
- * Each line stores the starting position of the first character of the line in the cell buffer
- * and potentially a marker handle set. Often a line will not have any attached markers.
- */
-struct LineData {
- int startPosition;
- MarkerHandleSet *handleSet;
- LineData() : startPosition(0), handleSet(0) {
- }
-};
-
-/**
- * The line vector contains information about each of the lines in a cell buffer.
- */
-class LineVector {
-public:
- int growSize;
- int lines;
- LineData *linesData;
- int size;
- int *levels;
- int sizeLevels;
-
- /// Handles are allocated sequentially and should never have to be reused as 32 bit ints are very big.
- int handleCurrent;
-
- LineVector();
- ~LineVector();
- void Init();
-
- void Expand(int sizeNew);
- void ExpandLevels(int sizeNew=-1);
- void ClearLevels();
- void InsertValue(int pos, int value);
- void SetValue(int pos, int value);
- void Remove(int pos);
- int LineFromPosition(int pos);
-
- int AddMark(int line, int marker);
- void MergeMarkers(int pos);
- void DeleteMark(int line, int markerNum, bool all);
- void DeleteMarkFromHandle(int markerHandle);
- int LineFromHandle(int markerHandle);
-};
-
-enum actionType { insertAction, removeAction, startAction };
-
-/**
- * Actions are used to store all the information required to perform one undo/redo step.
- */
-class Action {
-public:
- actionType at;
- int position;
- char *data;
- int lenData;
- bool mayCoalesce;
-
- Action();
- ~Action();
- void Create(actionType at_, int position_=0, char *data_=0, int lenData_=0, bool mayCoalesce_=true);
- void Destroy();
- void Grab(Action *source);
-};
-
-/**
- *
- */
-class UndoHistory {
- Action *actions;
- int lenActions;
- int maxAction;
- int currentAction;
- int undoSequenceDepth;
- int savePoint;
-
- void EnsureUndoRoom();
-
-public:
- UndoHistory();
- ~UndoHistory();
-
- void AppendAction(actionType at, int position, char *data, int length);
-
- void BeginUndoAction();
- void EndUndoAction();
- void DropUndoSequence();
- void DeleteUndoHistory();
-
- /// The save point is a marker in the undo stack where the container has stated that
- /// the buffer was saved. Undo and redo can move over the save point.
- void SetSavePoint();
- bool IsSavePoint() const;
-
- /// To perform an undo, StartUndo is called to retrieve the number of steps, then UndoStep is
- /// called that many times. Similarly for redo.
- bool CanUndo() const;
- int StartUndo();
- const Action &GetUndoStep() const;
- void CompletedUndoStep();
- bool CanRedo() const;
- int StartRedo();
- const Action &GetRedoStep() const;
- void CompletedRedoStep();
-};
-
-/**
- * Holder for an expandable array of characters that supports undo and line markers.
- * Based on article "Data Structures in a Bit-Mapped Text Editor"
- * by Wilfred J. Hansen, Byte January 1987, page 183.
- */
-class CellBuffer {
-private:
- char *body; ///< The cell buffer itself.
- int size; ///< Allocated size of the buffer.
- int length; ///< Total length of the data.
- int part1len; ///< Length of the first part.
- int gaplen; ///< Length of the gap between the two parts.
- char *part2body; ///< The second part of the cell buffer.
- ///< Doesn't point after the gap but set so that
- ///< part2body[position] is consistent with body[position].
- bool readOnly;
- int growSize;
-
- bool collectingUndo;
- UndoHistory uh;
-
- LineVector lv;
-
- SVector lineStates;
-
- void GapTo(int position);
- void RoomFor(int insertionLength);
-
- inline char ByteAt(int position);
- void SetByteAt(int position, char ch);
-
-public:
-
- CellBuffer(int initialLength = 4000);
- ~CellBuffer();
-
- /// Retrieving positions outside the range of the buffer works and returns 0
- char CharAt(int position);
- void GetCharRange(char *buffer, int position, int lengthRetrieve);
- char StyleAt(int position);
-
- int ByteLength();
- int Length();
- void Allocate(int newSize);
- int Lines();
- int LineStart(int line);
- int LineFromPosition(int pos) { return lv.LineFromPosition(pos); }
- const char *InsertString(int position, char *s, int insertLength);
-
- /// Setting styles for positions outside the range of the buffer is safe and has no effect.
- /// @return true if the style of a character is changed.
- bool SetStyleAt(int position, char style, char mask='\377');
- bool SetStyleFor(int position, int length, char style, char mask);
-
- const char *DeleteChars(int position, int deleteLength);
-
- bool IsReadOnly();
- void SetReadOnly(bool set);
-
- /// The save point is a marker in the undo stack where the container has stated that
- /// the buffer was saved. Undo and redo can move over the save point.
- void SetSavePoint();
- bool IsSavePoint();
-
- /// Line marker functions
- int AddMark(int line, int markerNum);
- void DeleteMark(int line, int markerNum);
- void DeleteMarkFromHandle(int markerHandle);
- int GetMark(int line);
- void DeleteAllMarks(int markerNum);
- int LineFromHandle(int markerHandle);
-
- /// Actions without undo
- void BasicInsertString(int position, char *s, int insertLength);
- void BasicDeleteChars(int position, int deleteLength);
-
- bool SetUndoCollection(bool collectUndo);
- bool IsCollectingUndo();
- void BeginUndoAction();
- void EndUndoAction();
- void DeleteUndoHistory();
-
- /// To perform an undo, StartUndo is called to retrieve the number of steps, then UndoStep is
- /// called that many times. Similarly for redo.
- bool CanUndo();
- int StartUndo();
- const Action &GetUndoStep() const;
- void PerformUndoStep();
- bool CanRedo();
- int StartRedo();
- const Action &GetRedoStep() const;
- void PerformRedoStep();
-
- int SetLineState(int line, int state);
- int GetLineState(int line);
- int GetMaxLineState();
-
- int SetLevel(int line, int level);
- int GetLevel(int line);
- void ClearLevels();
-};
-
-#define CELL_SIZE 2
-
-#endif
diff --git a/src/plugins/contrib/wxSmithSTC/stc/scintilla/src/CharClassify.cxx b/src/plugins/contrib/wxSmithSTC/stc/scintilla/src/CharClassify.cxx
deleted file mode 100644
index acab4b2295..0000000000
--- a/src/plugins/contrib/wxSmithSTC/stc/scintilla/src/CharClassify.cxx
+++ /dev/null
@@ -1,43 +0,0 @@
-// Scintilla source code edit control
-/** @file CharClassify.cxx
- ** Character classifications used by Document and RESearch.
- **/
-// Copyright 2006 by Neil Hodgson
-// The License.txt file describes the conditions under which this software may be distributed.
-
-#include
-
-#include "CharClassify.h"
-
-// Shut up annoying Visual C++ warnings:
-#ifdef _MSC_VER
-#pragma warning(disable: 4514)
-#endif
-
-CharClassify::CharClassify() {
- SetDefaultCharClasses(true);
-}
-
-void CharClassify::SetDefaultCharClasses(bool includeWordClass) {
- // Initialize all char classes to default values
- for (int ch = 0; ch < 256; ch++) {
- if (ch == '\r' || ch == '\n')
- charClass[ch] = ccNewLine;
- else if (ch < 0x20 || ch == ' ')
- charClass[ch] = ccSpace;
- else if (includeWordClass && (ch >= 0x80 || isalnum(ch) || ch == '_'))
- charClass[ch] = ccWord;
- else
- charClass[ch] = ccPunctuation;
- }
-}
-
-void CharClassify::SetCharClasses(const unsigned char *chars, cc newCharClass) {
- // Apply the newCharClass to the specifed chars
- if (chars) {
- while (*chars) {
- charClass[*chars] = static_cast(newCharClass);
- chars++;
- }
- }
-}
diff --git a/src/plugins/contrib/wxSmithSTC/stc/scintilla/src/CharClassify.h b/src/plugins/contrib/wxSmithSTC/stc/scintilla/src/CharClassify.h
deleted file mode 100644
index 881d3a114b..0000000000
--- a/src/plugins/contrib/wxSmithSTC/stc/scintilla/src/CharClassify.h
+++ /dev/null
@@ -1,25 +0,0 @@
-// Scintilla source code edit control
-/** @file CharClassify.h
- ** Character classifications used by Document and RESearch.
- **/
-// Copyright 2006 by Neil Hodgson
-// The License.txt file describes the conditions under which this software may be distributed.
-
-#ifndef CHARCLASSIFY_H
-#define CHARCLASSIFY_H
-
-class CharClassify {
-public:
- CharClassify();
-
- enum cc { ccSpace, ccNewLine, ccWord, ccPunctuation };
- void SetDefaultCharClasses(bool includeWordClass);
- void SetCharClasses(const unsigned char *chars, cc newCharClass);
- cc GetClass(unsigned char ch) const { return static_cast(charClass[ch]);}
- bool IsWord(unsigned char ch) const { return static_cast(charClass[ch]) == ccWord;}
-
-private:
- enum { maxChar=256 };
- unsigned char charClass[maxChar]; // not type cc to save space
-};
-#endif
diff --git a/src/plugins/contrib/wxSmithSTC/stc/scintilla/src/ContractionState.cxx b/src/plugins/contrib/wxSmithSTC/stc/scintilla/src/ContractionState.cxx
deleted file mode 100644
index 3d021b080b..0000000000
--- a/src/plugins/contrib/wxSmithSTC/stc/scintilla/src/ContractionState.cxx
+++ /dev/null
@@ -1,289 +0,0 @@
-// Scintilla source code edit control
-/** @file ContractionState.cxx
- ** Manages visibility of lines for folding.
- **/
-// Copyright 1998-2001 by Neil Hodgson
-// The License.txt file describes the conditions under which this software may be distributed.
-
-#include "Platform.h"
-
-#include "ContractionState.h"
-
-OneLine::OneLine() {
- displayLine = 0;
- //docLine = 0;
- visible = true;
- height = 1;
- expanded = true;
-}
-
-ContractionState::ContractionState() {
- lines = 0;
- size = 0;
- linesInDoc = 1;
- linesInDisplay = 1;
- valid = false;
- docLines = 0;
- sizeDocLines = 0;
-}
-
-ContractionState::~ContractionState() {
- Clear();
-}
-
-void ContractionState::MakeValid() const {
- if (!valid) {
- // Could be cleverer by keeping the index of the last still valid entry
- // rather than invalidating all.
- linesInDisplay = 0;
- for (int lineInDoc=0; lineInDoc= 0) && (lineDoc < linesInDoc)) {
- return lines[lineDoc].displayLine;
- }
- return -1;
-}
-
-int ContractionState::DocFromDisplay(int lineDisplay) const {
- if (lineDisplay <= 0)
- return 0;
- if (lineDisplay >= linesInDisplay)
- return linesInDoc;
- if (size == 0)
- return lineDisplay;
- MakeValid();
- if (docLines) { // Valid allocation
- return docLines[lineDisplay];
- } else {
- return 0;
- }
-}
-
-void ContractionState::Grow(int sizeNew) {
- OneLine *linesNew = new OneLine[sizeNew];
- if (linesNew) {
- int i = 0;
- for (; i < size; i++) {
- linesNew[i] = lines[i];
- }
- for (; i < sizeNew; i++) {
- linesNew[i].displayLine = i;
- }
- delete []lines;
- lines = linesNew;
- size = sizeNew;
- valid = false;
- } else {
- Platform::DebugPrintf("No memory available\n");
- // TODO: Blow up
- }
-}
-
-void ContractionState::InsertLines(int lineDoc, int lineCount) {
- if (size == 0) {
- linesInDoc += lineCount;
- linesInDisplay += lineCount;
- return;
- }
- //Platform::DebugPrintf("InsertLine[%d] = %d\n", lineDoc);
- if ((linesInDoc + lineCount + 2) >= size) {
- Grow(linesInDoc + lineCount + growSize);
- }
- linesInDoc += lineCount;
- for (int i = linesInDoc; i >= lineDoc + lineCount; i--) {
- lines[i].visible = lines[i - lineCount].visible;
- lines[i].height = lines[i - lineCount].height;
- linesInDisplay += lines[i].height;
- lines[i].expanded = lines[i - lineCount].expanded;
- }
- for (int d=0;d= 0) && (lineDoc < linesInDoc)) {
- return lines[lineDoc].visible;
- } else {
- return false;
- }
-}
-
-bool ContractionState::SetVisible(int lineDocStart, int lineDocEnd, bool visible) {
- if (lineDocStart == 0)
- lineDocStart++;
- if (lineDocStart > lineDocEnd)
- return false;
- if (size == 0) {
- Grow(linesInDoc + growSize);
- }
- // TODO: modify docLine members to mirror displayLine
- int delta = 0;
- // Change lineDocs
- if ((lineDocStart <= lineDocEnd) && (lineDocStart >= 0) && (lineDocEnd < linesInDoc)) {
- for (int line=lineDocStart; line <= lineDocEnd; line++) {
- if (lines[line].visible != visible) {
- delta += visible ? lines[line].height : -lines[line].height;
- lines[line].visible = visible;
- }
- }
- }
- linesInDisplay += delta;
- valid = false;
- return delta != 0;
-}
-
-bool ContractionState::GetExpanded(int lineDoc) const {
- if (size == 0)
- return true;
- if ((lineDoc >= 0) && (lineDoc < linesInDoc)) {
- return lines[lineDoc].expanded;
- } else {
- return false;
- }
-}
-
-bool ContractionState::SetExpanded(int lineDoc, bool expanded) {
- if (size == 0) {
- if (expanded) {
- // If in completely expanded state then setting
- // one line to expanded has no effect.
- return false;
- }
- Grow(linesInDoc + growSize);
- }
- if ((lineDoc >= 0) && (lineDoc < linesInDoc)) {
- if (lines[lineDoc].expanded != expanded) {
- lines[lineDoc].expanded = expanded;
- return true;
- }
- }
- return false;
-}
-
-int ContractionState::GetHeight(int lineDoc) const {
- if (size == 0)
- return 1;
- if ((lineDoc >= 0) && (lineDoc < linesInDoc)) {
- return lines[lineDoc].height;
- } else {
- return 1;
- }
-}
-
-// Set the number of display lines needed for this line.
-// Return true if this is a change.
-bool ContractionState::SetHeight(int lineDoc, int height) {
- if (lineDoc > linesInDoc)
- return false;
- if (size == 0) {
- if (height == 1) {
- // If in completely expanded state then all lines
- // assumed to have height of one so no effect here.
- return false;
- }
- Grow(linesInDoc + growSize);
- }
- if (lines[lineDoc].height != height) {
- lines[lineDoc].height = height;
- valid = false;
- return true;
- } else {
- return false;
- }
-}
-
-void ContractionState::ShowAll() {
- delete []lines;
- lines = 0;
- size = 0;
-
- delete []docLines;
- docLines = 0;
- sizeDocLines = 0;
-
- linesInDisplay = linesInDoc;
-}
diff --git a/src/plugins/contrib/wxSmithSTC/stc/scintilla/src/ContractionState.h b/src/plugins/contrib/wxSmithSTC/stc/scintilla/src/ContractionState.h
deleted file mode 100644
index e15ee3bbe6..0000000000
--- a/src/plugins/contrib/wxSmithSTC/stc/scintilla/src/ContractionState.h
+++ /dev/null
@@ -1,65 +0,0 @@
-// Scintilla source code edit control
-/** @file ContractionState.h
- ** Manages visibility of lines for folding.
- **/
-// Copyright 1998-2001 by Neil Hodgson
-// The License.txt file describes the conditions under which this software may be distributed.
-
-#ifndef CONTRACTIONSTATE_H
-#define CONTRACTIONSTATE_H
-
-/**
- */
-class OneLine {
-public:
- int displayLine; ///< Position within set of visible lines
- //int docLine; ///< Inverse of @a displayLine
- int height; ///< Number of display lines needed to show all of the line
- bool visible;
- bool expanded;
-
- OneLine();
- virtual ~OneLine() {}
-};
-
-/**
- */
-class ContractionState {
- void Grow(int sizeNew);
- enum { growSize = 4000 };
- int linesInDoc;
- mutable int linesInDisplay;
- mutable OneLine *lines;
- int size;
- mutable int *docLines;
- mutable int sizeDocLines;
- mutable bool valid;
- void MakeValid() const;
-
-public:
- ContractionState();
- virtual ~ContractionState();
-
- void Clear();
-
- int LinesInDoc() const;
- int LinesDisplayed() const;
- int DisplayFromDoc(int lineDoc) const;
- int DocFromDisplay(int lineDisplay) const;
-
- void InsertLines(int lineDoc, int lineCount);
- void DeleteLines(int lineDoc, int lineCount);
-
- bool GetVisible(int lineDoc) const;
- bool SetVisible(int lineDocStart, int lineDocEnd, bool visible);
-
- bool GetExpanded(int lineDoc) const;
- bool SetExpanded(int lineDoc, bool expanded);
-
- int GetHeight(int lineDoc) const;
- bool SetHeight(int lineDoc, int height);
-
- void ShowAll();
-};
-
-#endif
diff --git a/src/plugins/contrib/wxSmithSTC/stc/scintilla/src/Document.cxx b/src/plugins/contrib/wxSmithSTC/stc/scintilla/src/Document.cxx
deleted file mode 100644
index 92be92691c..0000000000
--- a/src/plugins/contrib/wxSmithSTC/stc/scintilla/src/Document.cxx
+++ /dev/null
@@ -1,1577 +0,0 @@
-// Scintilla source code edit control
-/** @file Document.cxx
- ** Text document that handles notifications, DBCS, styling, words and end of line.
- **/
-// Copyright 1998-2003 by Neil Hodgson
-// The License.txt file describes the conditions under which this software may be distributed.
-
-#include
-#include
-#include
-#include
-
-#include "Platform.h"
-
-#include "Scintilla.h"
-#include "SVector.h"
-#include "CellBuffer.h"
-#include "CharClassify.h"
-#include "Document.h"
-#include "RESearch.h"
-
-// This is ASCII specific but is safe with chars >= 0x80
-static inline bool isspacechar(unsigned char ch) {
- return (ch == ' ') || ((ch >= 0x09) && (ch <= 0x0d));
-}
-
-static inline bool IsPunctuation(char ch) {
- return isascii(ch) && ispunct(ch);
-}
-
-static inline bool IsADigit(char ch) {
- return isascii(ch) && isdigit(ch);
-}
-
-static inline bool IsLowerCase(char ch) {
- return isascii(ch) && islower(ch);
-}
-
-static inline bool IsUpperCase(char ch) {
- return isascii(ch) && isupper(ch);
-}
-
-Document::Document() {
- refCount = 0;
-#ifdef unix
- eolMode = SC_EOL_LF;
-#else
- eolMode = SC_EOL_CRLF;
-#endif
- dbcsCodePage = 0;
- stylingBits = 5;
- stylingBitsMask = 0x1F;
- stylingMask = 0;
- endStyled = 0;
- styleClock = 0;
- enteredCount = 0;
- enteredReadOnlyCount = 0;
- tabInChars = 8;
- indentInChars = 0;
- actualIndentInChars = 8;
- useTabs = true;
- tabIndents = true;
- backspaceUnindents = false;
- watchers = 0;
- lenWatchers = 0;
-
- matchesValid = false;
- pre = 0;
- substituted = 0;
-}
-
-Document::~Document() {
- for (int i = 0; i < lenWatchers; i++) {
- watchers[i].watcher->NotifyDeleted(this, watchers[i].userData);
- }
- delete []watchers;
- watchers = 0;
- lenWatchers = 0;
- delete pre;
- pre = 0;
- delete []substituted;
- substituted = 0;
-}
-
-// Increase reference count and return its previous value.
-int Document::AddRef() {
- return refCount++;
-}
-
-// Decrease reference count and return its previous value.
-// Delete the document if reference count reaches zero.
-int Document::Release() {
- int curRefCount = --refCount;
- if (curRefCount == 0)
- delete this;
- return curRefCount;
-}
-
-void Document::SetSavePoint() {
- cb.SetSavePoint();
- NotifySavePoint(true);
-}
-
-int Document::AddMark(int line, int markerNum) {
- int prev = cb.AddMark(line, markerNum);
- DocModification mh(SC_MOD_CHANGEMARKER, LineStart(line), 0, 0, 0, line);
- mh.line = line;
- NotifyModified(mh);
- return prev;
-}
-
-void Document::AddMarkSet(int line, int valueSet) {
- unsigned int m = valueSet;
- for (int i = 0; m; i++, m >>= 1)
- if (m & 1)
- cb.AddMark(line, i);
- DocModification mh(SC_MOD_CHANGEMARKER, LineStart(line), 0, 0, 0, line);
- mh.line = line;
- NotifyModified(mh);
-}
-
-void Document::DeleteMark(int line, int markerNum) {
- cb.DeleteMark(line, markerNum);
- DocModification mh(SC_MOD_CHANGEMARKER, LineStart(line), 0, 0, 0, line);
- mh.line = line;
- NotifyModified(mh);
-}
-
-void Document::DeleteMarkFromHandle(int markerHandle) {
- cb.DeleteMarkFromHandle(markerHandle);
- DocModification mh(SC_MOD_CHANGEMARKER, 0, 0, 0, 0);
- mh.line = -1;
- NotifyModified(mh);
-}
-
-void Document::DeleteAllMarks(int markerNum) {
- cb.DeleteAllMarks(markerNum);
- DocModification mh(SC_MOD_CHANGEMARKER, 0, 0, 0, 0);
- mh.line = -1;
- NotifyModified(mh);
-}
-
-int Document::LineStart(int line) {
- return cb.LineStart(line);
-}
-
-int Document::LineEnd(int line) {
- if (line == LinesTotal() - 1) {
- return LineStart(line + 1);
- } else {
- int position = LineStart(line + 1) - 1;
- // When line terminator is CR+LF, may need to go back one more
- if ((position > LineStart(line)) && (cb.CharAt(position - 1) == '\r')) {
- position--;
- }
- return position;
- }
-}
-
-int Document::LineFromPosition(int pos) {
- return cb.LineFromPosition(pos);
-}
-
-int Document::LineEndPosition(int position) {
- return LineEnd(LineFromPosition(position));
-}
-
-int Document::VCHomePosition(int position) {
- int line = LineFromPosition(position);
- int startPosition = LineStart(line);
- int endLine = LineStart(line + 1) - 1;
- int startText = startPosition;
- while (startText < endLine && (cb.CharAt(startText) == ' ' || cb.CharAt(startText) == '\t' ) )
- startText++;
- if (position == startText)
- return startPosition;
- else
- return startText;
-}
-
-int Document::SetLevel(int line, int level) {
- int prev = cb.SetLevel(line, level);
- if (prev != level) {
- DocModification mh(SC_MOD_CHANGEFOLD | SC_MOD_CHANGEMARKER,
- LineStart(line), 0, 0, 0);
- mh.line = line;
- mh.foldLevelNow = level;
- mh.foldLevelPrev = prev;
- NotifyModified(mh);
- }
- return prev;
-}
-
-static bool IsSubordinate(int levelStart, int levelTry) {
- if (levelTry & SC_FOLDLEVELWHITEFLAG)
- return true;
- else
- return (levelStart & SC_FOLDLEVELNUMBERMASK) < (levelTry & SC_FOLDLEVELNUMBERMASK);
-}
-
-int Document::GetLastChild(int lineParent, int level) {
- if (level == -1)
- level = GetLevel(lineParent) & SC_FOLDLEVELNUMBERMASK;
- int maxLine = LinesTotal();
- int lineMaxSubord = lineParent;
- while (lineMaxSubord < maxLine - 1) {
- EnsureStyledTo(LineStart(lineMaxSubord + 2));
- if (!IsSubordinate(level, GetLevel(lineMaxSubord + 1)))
- break;
- lineMaxSubord++;
- }
- if (lineMaxSubord > lineParent) {
- if (level > (GetLevel(lineMaxSubord + 1) & SC_FOLDLEVELNUMBERMASK)) {
- // Have chewed up some whitespace that belongs to a parent so seek back
- if (GetLevel(lineMaxSubord) & SC_FOLDLEVELWHITEFLAG) {
- lineMaxSubord--;
- }
- }
- }
- return lineMaxSubord;
-}
-
-int Document::GetFoldParent(int line) {
- int level = GetLevel(line) & SC_FOLDLEVELNUMBERMASK;
- int lineLook = line - 1;
- while ((lineLook > 0) && (
- (!(GetLevel(lineLook) & SC_FOLDLEVELHEADERFLAG)) ||
- ((GetLevel(lineLook) & SC_FOLDLEVELNUMBERMASK) >= level))
- ) {
- lineLook--;
- }
- if ((GetLevel(lineLook) & SC_FOLDLEVELHEADERFLAG) &&
- ((GetLevel(lineLook) & SC_FOLDLEVELNUMBERMASK) < level)) {
- return lineLook;
- } else {
- return -1;
- }
-}
-
-int Document::ClampPositionIntoDocument(int pos) {
- return Platform::Clamp(pos, 0, Length());
-}
-
-bool Document::IsCrLf(int pos) {
- if (pos < 0)
- return false;
- if (pos >= (Length() - 1))
- return false;
- return (cb.CharAt(pos) == '\r') && (cb.CharAt(pos + 1) == '\n');
-}
-
-static const int maxBytesInDBCSCharacter=5;
-
-int Document::LenChar(int pos) {
- if (pos < 0) {
- return 1;
- } else if (IsCrLf(pos)) {
- return 2;
- } else if (SC_CP_UTF8 == dbcsCodePage) {
- unsigned char ch = static_cast(cb.CharAt(pos));
- if (ch < 0x80)
- return 1;
- int len = 2;
- if (ch >= (0x80 + 0x40 + 0x20))
- len = 3;
- int lengthDoc = Length();
- if ((pos + len) > lengthDoc)
- return lengthDoc -pos;
- else
- return len;
- } else if (dbcsCodePage) {
- char mbstr[maxBytesInDBCSCharacter+1];
- int i;
- for (i=0; i= Length())
- return Length();
-
- // PLATFORM_ASSERT(pos > 0 && pos < Length());
- if (checkLineEnd && IsCrLf(pos - 1)) {
- if (moveDir > 0)
- return pos + 1;
- else
- return pos - 1;
- }
-
- // Not between CR and LF
-
- if (dbcsCodePage) {
- if (SC_CP_UTF8 == dbcsCodePage) {
- unsigned char ch = static_cast(cb.CharAt(pos));
- while ((pos > 0) && (pos < Length()) && (ch >= 0x80) && (ch < (0x80 + 0x40))) {
- // ch is a trail byte
- if (moveDir > 0)
- pos++;
- else
- pos--;
- ch = static_cast(cb.CharAt(pos));
- }
- } else {
- // Anchor DBCS calculations at start of line because start of line can
- // not be a DBCS trail byte.
- int posCheck = LineStart(LineFromPosition(pos));
- while (posCheck < pos) {
- char mbstr[maxBytesInDBCSCharacter+1];
- int i;
- for(i=0;i pos) {
- if (moveDir > 0) {
- return posCheck + mbsize;
- } else {
- return posCheck;
- }
- }
- posCheck += mbsize;
- }
- }
- }
-
- return pos;
-}
-
-void Document::ModifiedAt(int pos) {
- if (endStyled > pos)
- endStyled = pos;
-}
-
-void Document::CheckReadOnly() {
- if (cb.IsReadOnly() && enteredReadOnlyCount == 0) {
- enteredReadOnlyCount++;
- NotifyModifyAttempt();
- enteredReadOnlyCount--;
- }
-}
-
-// Document only modified by gateways DeleteChars, InsertStyledString, Undo, Redo, and SetStyleAt.
-// SetStyleAt does not change the persistent state of a document
-
-// Unlike Undo, Redo, and InsertStyledString, the pos argument is a cell number not a char number
-bool Document::DeleteChars(int pos, int len) {
- if (len == 0)
- return false;
- if ((pos + len) > Length())
- return false;
- CheckReadOnly();
- if (enteredCount != 0) {
- return false;
- } else {
- enteredCount++;
- if (!cb.IsReadOnly()) {
- NotifyModified(
- DocModification(
- SC_MOD_BEFOREDELETE | SC_PERFORMED_USER,
- pos, len,
- 0, 0));
- int prevLinesTotal = LinesTotal();
- bool startSavePoint = cb.IsSavePoint();
- const char *text = cb.DeleteChars(pos * 2, len * 2);
- if (startSavePoint && cb.IsCollectingUndo())
- NotifySavePoint(!startSavePoint);
- if ((pos < Length()) || (pos == 0))
- ModifiedAt(pos);
- else
- ModifiedAt(pos-1);
- NotifyModified(
- DocModification(
- SC_MOD_DELETETEXT | SC_PERFORMED_USER,
- pos, len,
- LinesTotal() - prevLinesTotal, text));
- }
- enteredCount--;
- }
- return !cb.IsReadOnly();
-}
-
-/**
- * Insert a styled string (char/style pairs) with a length.
- */
-bool Document::InsertStyledString(int position, char *s, int insertLength) {
- CheckReadOnly();
- if (enteredCount != 0) {
- return false;
- } else {
- enteredCount++;
- if (!cb.IsReadOnly()) {
- NotifyModified(
- DocModification(
- SC_MOD_BEFOREINSERT | SC_PERFORMED_USER,
- position / 2, insertLength / 2,
- 0, s));
- int prevLinesTotal = LinesTotal();
- bool startSavePoint = cb.IsSavePoint();
- const char *text = cb.InsertString(position, s, insertLength);
- if (startSavePoint && cb.IsCollectingUndo())
- NotifySavePoint(!startSavePoint);
- ModifiedAt(position / 2);
- NotifyModified(
- DocModification(
- SC_MOD_INSERTTEXT | SC_PERFORMED_USER,
- position / 2, insertLength / 2,
- LinesTotal() - prevLinesTotal, text));
- }
- enteredCount--;
- }
- return !cb.IsReadOnly();
-}
-
-int Document::Undo() {
- int newPos = -1;
- CheckReadOnly();
- if (enteredCount == 0) {
- enteredCount++;
- if (!cb.IsReadOnly()) {
- bool startSavePoint = cb.IsSavePoint();
- bool multiLine = false;
- int steps = cb.StartUndo();
- //Platform::DebugPrintf("Steps=%d\n", steps);
- for (int step = 0; step < steps; step++) {
- const int prevLinesTotal = LinesTotal();
- const Action &action = cb.GetUndoStep();
- if (action.at == removeAction) {
- NotifyModified(DocModification(
- SC_MOD_BEFOREINSERT | SC_PERFORMED_UNDO, action));
- } else {
- NotifyModified(DocModification(
- SC_MOD_BEFOREDELETE | SC_PERFORMED_UNDO, action));
- }
- cb.PerformUndoStep();
- int cellPosition = action.position;
- ModifiedAt(cellPosition);
- newPos = cellPosition;
-
- int modFlags = SC_PERFORMED_UNDO;
- // With undo, an insertion action becomes a deletion notification
- if (action.at == removeAction) {
- newPos += action.lenData;
- modFlags |= SC_MOD_INSERTTEXT;
- } else {
- modFlags |= SC_MOD_DELETETEXT;
- }
- if (steps > 1)
- modFlags |= SC_MULTISTEPUNDOREDO;
- const int linesAdded = LinesTotal() - prevLinesTotal;
- if (linesAdded != 0)
- multiLine = true;
- if (step == steps - 1) {
- modFlags |= SC_LASTSTEPINUNDOREDO;
- if (multiLine)
- modFlags |= SC_MULTILINEUNDOREDO;
- }
- NotifyModified(DocModification(modFlags, cellPosition, action.lenData,
- linesAdded, action.data));
- }
-
- bool endSavePoint = cb.IsSavePoint();
- if (startSavePoint != endSavePoint)
- NotifySavePoint(endSavePoint);
- }
- enteredCount--;
- }
- return newPos;
-}
-
-int Document::Redo() {
- int newPos = -1;
- CheckReadOnly();
- if (enteredCount == 0) {
- enteredCount++;
- if (!cb.IsReadOnly()) {
- bool startSavePoint = cb.IsSavePoint();
- bool multiLine = false;
- int steps = cb.StartRedo();
- for (int step = 0; step < steps; step++) {
- const int prevLinesTotal = LinesTotal();
- const Action &action = cb.GetRedoStep();
- if (action.at == insertAction) {
- NotifyModified(DocModification(
- SC_MOD_BEFOREINSERT | SC_PERFORMED_REDO, action));
- } else {
- NotifyModified(DocModification(
- SC_MOD_BEFOREDELETE | SC_PERFORMED_REDO, action));
- }
- cb.PerformRedoStep();
- ModifiedAt(action.position);
- newPos = action.position;
-
- int modFlags = SC_PERFORMED_REDO;
- if (action.at == insertAction) {
- newPos += action.lenData;
- modFlags |= SC_MOD_INSERTTEXT;
- } else {
- modFlags |= SC_MOD_DELETETEXT;
- }
- if (steps > 1)
- modFlags |= SC_MULTISTEPUNDOREDO;
- const int linesAdded = LinesTotal() - prevLinesTotal;
- if (linesAdded != 0)
- multiLine = true;
- if (step == steps - 1) {
- modFlags |= SC_LASTSTEPINUNDOREDO;
- if (multiLine)
- modFlags |= SC_MULTILINEUNDOREDO;
- }
- NotifyModified(
- DocModification(modFlags, action.position, action.lenData,
- linesAdded, action.data));
- }
-
- bool endSavePoint = cb.IsSavePoint();
- if (startSavePoint != endSavePoint)
- NotifySavePoint(endSavePoint);
- }
- enteredCount--;
- }
- return newPos;
-}
-
-/**
- * Insert a single character.
- */
-bool Document::InsertChar(int pos, char ch) {
- char chs[2];
- chs[0] = ch;
- chs[1] = 0;
- return InsertStyledString(pos*2, chs, 2);
-}
-
-/**
- * Insert a null terminated string.
- */
-bool Document::InsertString(int position, const char *s) {
- return InsertString(position, s, strlen(s));
-}
-
-/**
- * Insert a string with a length.
- */
-bool Document::InsertString(int position, const char *s, size_t insertLength) {
- bool changed = false;
- if (insertLength > 0) {
- char *sWithStyle = new char[insertLength * 2];
- if (sWithStyle) {
- for (size_t i = 0; i < insertLength; i++) {
- sWithStyle[i*2] = s[i];
- sWithStyle[i*2 + 1] = 0;
- }
- changed = InsertStyledString(position*2, sWithStyle,
- static_cast(insertLength*2));
- delete []sWithStyle;
- }
- }
- return changed;
-}
-
-void Document::ChangeChar(int pos, char ch) {
- DeleteChars(pos, 1);
- InsertChar(pos, ch);
-}
-
-void Document::DelChar(int pos) {
- DeleteChars(pos, LenChar(pos));
-}
-
-void Document::DelCharBack(int pos) {
- if (pos <= 0) {
- return;
- } else if (IsCrLf(pos - 2)) {
- DeleteChars(pos - 2, 2);
- } else if (dbcsCodePage) {
- int startChar = MovePositionOutsideChar(pos - 1, -1, false);
- DeleteChars(startChar, pos - startChar);
- } else {
- DeleteChars(pos - 1, 1);
- }
-}
-
-static bool isindentchar(char ch) {
- return (ch == ' ') || (ch == '\t');
-}
-
-static int NextTab(int pos, int tabSize) {
- return ((pos / tabSize) + 1) * tabSize;
-}
-
-static void CreateIndentation(char *linebuf, int length, int indent, int tabSize, bool insertSpaces) {
- length--; // ensure space for \0
- if (!insertSpaces) {
- while ((indent >= tabSize) && (length > 0)) {
- *linebuf++ = '\t';
- indent -= tabSize;
- length--;
- }
- }
- while ((indent > 0) && (length > 0)) {
- *linebuf++ = ' ';
- indent--;
- length--;
- }
- *linebuf = '\0';
-}
-
-int Document::GetLineIndentation(int line) {
- int indent = 0;
- if ((line >= 0) && (line < LinesTotal())) {
- int lineStart = LineStart(line);
- int length = Length();
- for (int i = lineStart;i < length;i++) {
- char ch = cb.CharAt(i);
- if (ch == ' ')
- indent++;
- else if (ch == '\t')
- indent = NextTab(indent, tabInChars);
- else
- return indent;
- }
- }
- return indent;
-}
-
-void Document::SetLineIndentation(int line, int indent) {
- int indentOfLine = GetLineIndentation(line);
- if (indent < 0)
- indent = 0;
- if (indent != indentOfLine) {
- char linebuf[1000];
- CreateIndentation(linebuf, sizeof(linebuf), indent, tabInChars, !useTabs);
- int thisLineStart = LineStart(line);
- int indentPos = GetLineIndentPosition(line);
- BeginUndoAction();
- DeleteChars(thisLineStart, indentPos - thisLineStart);
- InsertString(thisLineStart, linebuf);
- EndUndoAction();
- }
-}
-
-int Document::GetLineIndentPosition(int line) {
- if (line < 0)
- return 0;
- int pos = LineStart(line);
- int length = Length();
- while ((pos < length) && isindentchar(cb.CharAt(pos))) {
- pos++;
- }
- return pos;
-}
-
-int Document::GetColumn(int pos) {
- int column = 0;
- int line = LineFromPosition(pos);
- if ((line >= 0) && (line < LinesTotal())) {
- for (int i = LineStart(line);i < pos;) {
- char ch = cb.CharAt(i);
- if (ch == '\t') {
- column = NextTab(column, tabInChars);
- i++;
- } else if (ch == '\r') {
- return column;
- } else if (ch == '\n') {
- return column;
- } else {
- column++;
- i = MovePositionOutsideChar(i + 1, 1);
- }
- }
- }
- return column;
-}
-
-int Document::FindColumn(int line, int column) {
- int position = LineStart(line);
- int columnCurrent = 0;
- if ((line >= 0) && (line < LinesTotal())) {
- while ((columnCurrent < column) && (position < Length())) {
- char ch = cb.CharAt(position);
- if (ch == '\t') {
- columnCurrent = NextTab(columnCurrent, tabInChars);
- position++;
- } else if (ch == '\r') {
- return position;
- } else if (ch == '\n') {
- return position;
- } else {
- columnCurrent++;
- position = MovePositionOutsideChar(position + 1, 1);
- }
- }
- }
- return position;
-}
-
-void Document::Indent(bool forwards, int lineBottom, int lineTop) {
- // Dedent - suck white space off the front of the line to dedent by equivalent of a tab
- for (int line = lineBottom; line >= lineTop; line--) {
- int indentOfLine = GetLineIndentation(line);
- if (forwards) {
- if (LineStart(line) < LineEnd(line)) {
- SetLineIndentation(line, indentOfLine + IndentSize());
- }
- } else {
- SetLineIndentation(line, indentOfLine - IndentSize());
- }
- }
-}
-
-// 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') {
- // 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 {
- // CR
- if (eolModeSet == SC_EOL_CRLF) {
- InsertString(pos + 1, "\n", 1); // Insert LF
- pos++;
- } 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();
-}
-
-bool Document::IsWhiteLine(int line) {
- int currentChar = LineStart(line);
- int endLine = LineEnd(line);
- while (currentChar < endLine) {
- if (cb.CharAt(currentChar) != ' ' && cb.CharAt(currentChar) != '\t') {
- return false;
- }
- ++currentChar;
- }
- return true;
-}
-
-int Document::ParaUp(int pos) {
- int line = LineFromPosition(pos);
- line--;
- while (line >= 0 && IsWhiteLine(line)) { // skip empty lines
- line--;
- }
- while (line >= 0 && !IsWhiteLine(line)) { // skip non-empty lines
- line--;
- }
- line++;
- return LineStart(line);
-}
-
-int Document::ParaDown(int pos) {
- int line = LineFromPosition(pos);
- while (line < LinesTotal() && !IsWhiteLine(line)) { // skip non-empty lines
- line++;
- }
- while (line < LinesTotal() && IsWhiteLine(line)) { // skip empty lines
- line++;
- }
- if (line < LinesTotal())
- return LineStart(line);
- else // end of a document
- return LineEnd(line-1);
-}
-
-CharClassify::cc Document::WordCharClass(unsigned char ch) {
- if ((SC_CP_UTF8 == dbcsCodePage) && (ch >= 0x80))
- return CharClassify::ccWord;
- return charClass.GetClass(ch);
-}
-
-/**
- * Used by commmands that want to select whole words.
- * Finds the start of word at pos when delta < 0 or the end of the word when delta >= 0.
- */
-int Document::ExtendWordSelect(int pos, int delta, bool onlyWordCharacters) {
- CharClassify::cc ccStart = CharClassify::ccWord;
- if (delta < 0) {
- if (!onlyWordCharacters)
- ccStart = WordCharClass(cb.CharAt(pos-1));
- while (pos > 0 && (WordCharClass(cb.CharAt(pos - 1)) == ccStart))
- pos--;
- } else {
- if (!onlyWordCharacters)
- ccStart = WordCharClass(cb.CharAt(pos));
- while (pos < (Length()) && (WordCharClass(cb.CharAt(pos)) == ccStart))
- pos++;
- }
- return MovePositionOutsideChar(pos, delta);
-}
-
-/**
- * Find the start of the next word in either a forward (delta >= 0) or backwards direction
- * (delta < 0).
- * This is looking for a transition between character classes although there is also some
- * additional movement to transit white space.
- * Used by cursor movement by word commands.
- */
-int Document::NextWordStart(int pos, int delta) {
- if (delta < 0) {
- while (pos > 0 && (WordCharClass(cb.CharAt(pos - 1)) == CharClassify::ccSpace))
- pos--;
- if (pos > 0) {
- CharClassify::cc ccStart = WordCharClass(cb.CharAt(pos-1));
- while (pos > 0 && (WordCharClass(cb.CharAt(pos - 1)) == ccStart)) {
- pos--;
- }
- }
- } else {
- CharClassify::cc ccStart = WordCharClass(cb.CharAt(pos));
- while (pos < (Length()) && (WordCharClass(cb.CharAt(pos)) == ccStart))
- pos++;
- while (pos < (Length()) && (WordCharClass(cb.CharAt(pos)) == CharClassify::ccSpace))
- pos++;
- }
- return pos;
-}
-
-/**
- * Find the end of the next word in either a forward (delta >= 0) or backwards direction
- * (delta < 0).
- * This is looking for a transition between character classes although there is also some
- * additional movement to transit white space.
- * Used by cursor movement by word commands.
- */
-int Document::NextWordEnd(int pos, int delta) {
- if (delta < 0) {
- if (pos > 0) {
- CharClassify::cc ccStart = WordCharClass(cb.CharAt(pos-1));
- if (ccStart != CharClassify::ccSpace) {
- while (pos > 0 && WordCharClass(cb.CharAt(pos - 1)) == ccStart) {
- pos--;
- }
- }
- while (pos > 0 && WordCharClass(cb.CharAt(pos - 1)) == CharClassify::ccSpace) {
- pos--;
- }
- }
- } else {
- while (pos < Length() && WordCharClass(cb.CharAt(pos)) == CharClassify::ccSpace) {
- pos++;
- }
- if (pos < Length()) {
- CharClassify::cc ccStart = WordCharClass(cb.CharAt(pos));
- while (pos < Length() && WordCharClass(cb.CharAt(pos)) == ccStart) {
- pos++;
- }
- }
- }
- return pos;
-}
-
-/**
- * Check that the character at the given position is a word or punctuation character and that
- * the previous character is of a different character class.
- */
-bool Document::IsWordStartAt(int pos) {
- if (pos > 0) {
- CharClassify::cc ccPos = WordCharClass(CharAt(pos));
- return (ccPos == CharClassify::ccWord || ccPos == CharClassify::ccPunctuation) &&
- (ccPos != WordCharClass(CharAt(pos - 1)));
- }
- return true;
-}
-
-/**
- * Check that the character at the given position is a word or punctuation character and that
- * the next character is of a different character class.
- */
-bool Document::IsWordEndAt(int pos) {
- if (pos < Length()) {
- CharClassify::cc ccPrev = WordCharClass(CharAt(pos-1));
- return (ccPrev == CharClassify::ccWord || ccPrev == CharClassify::ccPunctuation) &&
- (ccPrev != WordCharClass(CharAt(pos)));
- }
- return true;
-}
-
-/**
- * Check that the given range is has transitions between character classes at both
- * ends and where the characters on the inside are word or punctuation characters.
- */
-bool Document::IsWordAt(int start, int end) {
- return IsWordStartAt(start) && IsWordEndAt(end);
-}
-
-// The comparison and case changing functions here assume ASCII
-// or extended ASCII such as the normal Windows code page.
-
-static inline char MakeUpperCase(char ch) {
- if (ch < 'a' || ch > 'z')
- return ch;
- else
- return static_cast(ch - 'a' + 'A');
-}
-
-static inline char MakeLowerCase(char ch) {
- if (ch < 'A' || ch > 'Z')
- return ch;
- else
- return static_cast(ch - 'A' + 'a');
-}
-
-// Define a way for the Regular Expression code to access the document
-class DocumentIndexer : public CharacterIndexer {
- Document *pdoc;
- int end;
-public:
- DocumentIndexer(Document *pdoc_, int end_) :
- pdoc(pdoc_), end(end_) {
- }
-
- virtual ~DocumentIndexer() {
- }
-
- virtual char CharAt(int index) {
- if (index < 0 || index >= end)
- return 0;
- else
- return pdoc->CharAt(index);
- }
-};
-
-/**
- * Find text in document, supporting both forward and backward
- * searches (just pass minPos > maxPos to do a backward search)
- * Has not been tested with backwards DBCS searches yet.
- */
-long Document::FindText(int minPos, int maxPos, const char *s,
- bool caseSensitive, bool word, bool wordStart, bool regExp, bool posix,
- int *length) {
- if (regExp) {
- if (!pre)
- pre = new RESearch(&charClass);
- if (!pre)
- return -1;
-
- int increment = (minPos <= maxPos) ? 1 : -1;
-
- int startPos = minPos;
- int endPos = maxPos;
-
- // Range endpoints should not be inside DBCS characters, but just in case, move them.
- startPos = MovePositionOutsideChar(startPos, 1, false);
- endPos = MovePositionOutsideChar(endPos, 1, false);
-
- const char *errmsg = pre->Compile(s, *length, caseSensitive, posix);
- if (errmsg) {
- return -1;
- }
- // Find a variable in a property file: \$(\([A-Za-z0-9_.]+\))
- // Replace first '.' with '-' in each property file variable reference:
- // Search: \$(\([A-Za-z0-9_-]+\)\.\([A-Za-z0-9_.]+\))
- // Replace: $(\1-\2)
- int lineRangeStart = LineFromPosition(startPos);
- int lineRangeEnd = LineFromPosition(endPos);
- if ((increment == 1) &&
- (startPos >= LineEnd(lineRangeStart)) &&
- (lineRangeStart < lineRangeEnd)) {
- // the start position is at end of line or between line end characters.
- lineRangeStart++;
- startPos = LineStart(lineRangeStart);
- }
- int pos = -1;
- int lenRet = 0;
- char searchEnd = s[*length - 1];
- int lineRangeBreak = lineRangeEnd + increment;
- for (int line = lineRangeStart; line != lineRangeBreak; line += increment) {
- int startOfLine = LineStart(line);
- int endOfLine = LineEnd(line);
- if (increment == 1) {
- if (line == lineRangeStart) {
- if ((startPos != startOfLine) && (s[0] == '^'))
- continue; // Can't match start of line if start position after start of line
- startOfLine = startPos;
- }
- if (line == lineRangeEnd) {
- if ((endPos != endOfLine) && (searchEnd == '$'))
- continue; // Can't match end of line if end position before end of line
- endOfLine = endPos;
- }
- } else {
- if (line == lineRangeEnd) {
- if ((endPos != startOfLine) && (s[0] == '^'))
- continue; // Can't match start of line if end position after start of line
- startOfLine = endPos;
- }
- if (line == lineRangeStart) {
- if ((startPos != endOfLine) && (searchEnd == '$'))
- continue; // Can't match end of line if start position before end of line
- endOfLine = startPos;
- }
- }
-
- DocumentIndexer di(this, endOfLine);
- int success = pre->Execute(di, startOfLine, endOfLine);
- if (success) {
- pos = pre->bopat[0];
- lenRet = pre->eopat[0] - pre->bopat[0];
- if (increment == -1) {
- // Check for the last match on this line.
- int repetitions = 1000; // Break out of infinite loop
- while (success && (pre->eopat[0] <= endOfLine) && (repetitions--)) {
- success = pre->Execute(di, pos+1, endOfLine);
- if (success) {
- if (pre->eopat[0] <= minPos) {
- pos = pre->bopat[0];
- lenRet = pre->eopat[0] - pre->bopat[0];
- } else {
- success = 0;
- }
- }
- }
- }
- break;
- }
- }
- *length = lenRet;
- return pos;
-
- } else {
-
- bool forward = minPos <= maxPos;
- int increment = forward ? 1 : -1;
-
- // Range endpoints should not be inside DBCS characters, but just in case, move them.
- int startPos = MovePositionOutsideChar(minPos, increment, false);
- int endPos = MovePositionOutsideChar(maxPos, increment, false);
-
- // Compute actual search ranges needed
- int lengthFind = *length;
- if (lengthFind == -1)
- lengthFind = static_cast(strlen(s));
- int endSearch = endPos;
- if (startPos <= endPos) {
- endSearch = endPos - lengthFind + 1;
- }
- //Platform::DebugPrintf("Find %d %d %s %d\n", startPos, endPos, ft->lpstrText, lengthFind);
- char firstChar = s[0];
- if (!caseSensitive)
- firstChar = static_cast(MakeUpperCase(firstChar));
- int pos = forward ? startPos : (startPos - 1);
- while (forward ? (pos < endSearch) : (pos >= endSearch)) {
- char ch = CharAt(pos);
- if (caseSensitive) {
- if (ch == firstChar) {
- bool found = true;
- if (pos + lengthFind > Platform::Maximum(startPos, endPos)) found = false;
- for (int posMatch = 1; posMatch < lengthFind && found; posMatch++) {
- ch = CharAt(pos + posMatch);
- if (ch != s[posMatch])
- found = false;
- }
- if (found) {
- if ((!word && !wordStart) ||
- word && IsWordAt(pos, pos + lengthFind) ||
- wordStart && IsWordStartAt(pos))
- return pos;
- }
- }
- } else {
- if (MakeUpperCase(ch) == firstChar) {
- bool found = true;
- if (pos + lengthFind > Platform::Maximum(startPos, endPos)) found = false;
- for (int posMatch = 1; posMatch < lengthFind && found; posMatch++) {
- ch = CharAt(pos + posMatch);
- if (MakeUpperCase(ch) != MakeUpperCase(s[posMatch]))
- found = false;
- }
- if (found) {
- if ((!word && !wordStart) ||
- word && IsWordAt(pos, pos + lengthFind) ||
- wordStart && IsWordStartAt(pos))
- return pos;
- }
- }
- }
- pos += increment;
- if (dbcsCodePage && (pos >= 0)) {
- // Ensure trying to match from start of character
- pos = MovePositionOutsideChar(pos, increment, false);
- }
- }
- }
- //Platform::DebugPrintf("Not found\n");
- return -1;
-}
-
-const char *Document::SubstituteByPosition(const char *text, int *length) {
- if (!pre)
- return 0;
- delete []substituted;
- substituted = 0;
- DocumentIndexer di(this, Length());
- if (!pre->GrabMatches(di))
- return 0;
- unsigned int lenResult = 0;
- for (int i = 0; i < *length; i++) {
- if (text[i] == '\\') {
- if (text[i + 1] >= '1' && text[i + 1] <= '9') {
- unsigned int patNum = text[i + 1] - '0';
- lenResult += pre->eopat[patNum] - pre->bopat[patNum];
- i++;
- } else {
- switch (text[i + 1]) {
- case 'a':
- case 'b':
- case 'f':
- case 'n':
- case 'r':
- case 't':
- case 'v':
- i++;
- }
- lenResult++;
- }
- } else {
- lenResult++;
- }
- }
- substituted = new char[lenResult + 1];
- if (!substituted)
- return 0;
- char *o = substituted;
- for (int j = 0; j < *length; j++) {
- if (text[j] == '\\') {
- if (text[j + 1] >= '1' && text[j + 1] <= '9') {
- unsigned int patNum = text[j + 1] - '0';
- unsigned int len = pre->eopat[patNum] - pre->bopat[patNum];
- if (pre->pat[patNum]) // Will be null if try for a match that did not occur
- memcpy(o, pre->pat[patNum], len);
- o += len;
- j++;
- } else {
- j++;
- switch (text[j]) {
- case 'a':
- *o++ = '\a';
- break;
- case 'b':
- *o++ = '\b';
- break;
- case 'f':
- *o++ = '\f';
- break;
- case 'n':
- *o++ = '\n';
- break;
- case 'r':
- *o++ = '\r';
- break;
- case 't':
- *o++ = '\t';
- break;
- case 'v':
- *o++ = '\v';
- break;
- default:
- *o++ = '\\';
- j--;
- }
- }
- } else {
- *o++ = text[j];
- }
- }
- *o = '\0';
- *length = lenResult;
- return substituted;
-}
-
-int Document::LinesTotal() {
- return cb.Lines();
-}
-
-void Document::ChangeCase(Range r, bool makeUpperCase) {
- for (int pos = r.start; pos < r.end;) {
- int len = LenChar(pos);
- if (len == 1) {
- char ch = CharAt(pos);
- if (makeUpperCase) {
- if (IsLowerCase(ch)) {
- ChangeChar(pos, static_cast(MakeUpperCase(ch)));
- }
- } else {
- if (IsUpperCase(ch)) {
- ChangeChar(pos, static_cast(MakeLowerCase(ch)));
- }
- }
- }
- pos += len;
- }
-}
-
-void Document::SetDefaultCharClasses(bool includeWordClass) {
- charClass.SetDefaultCharClasses(includeWordClass);
-}
-
-void Document::SetCharClasses(const unsigned char *chars, CharClassify::cc newCharClass) {
- charClass.SetCharClasses(chars, newCharClass);
-}
-
-void Document::SetStylingBits(int bits) {
- stylingBits = bits;
- stylingBitsMask = 0;
- for (int bit = 0; bit < stylingBits; bit++) {
- stylingBitsMask <<= 1;
- stylingBitsMask |= 1;
- }
-}
-
-void Document::StartStyling(int position, char mask) {
- stylingMask = mask;
- endStyled = position;
-}
-
-bool Document::SetStyleFor(int length, char style) {
- if (enteredCount != 0) {
- return false;
- } else {
- enteredCount++;
- style &= stylingMask;
- int prevEndStyled = endStyled;
- if (cb.SetStyleFor(endStyled, length, style, stylingMask)) {
- DocModification mh(SC_MOD_CHANGESTYLE | SC_PERFORMED_USER,
- prevEndStyled, length);
- NotifyModified(mh);
- }
- endStyled += length;
- enteredCount--;
- return true;
- }
-}
-
-bool Document::SetStyles(int length, char *styles) {
- if (enteredCount != 0) {
- return false;
- } else {
- enteredCount++;
- bool didChange = false;
- int startMod = 0;
- int endMod = 0;
- for (int iPos = 0; iPos < length; iPos++, endStyled++) {
- PLATFORM_ASSERT(endStyled < Length());
- if (cb.SetStyleAt(endStyled, styles[iPos], stylingMask)) {
- if (!didChange) {
- startMod = endStyled;
- }
- didChange = true;
- endMod = endStyled;
- }
- }
- if (didChange) {
- DocModification mh(SC_MOD_CHANGESTYLE | SC_PERFORMED_USER,
- startMod, endMod - startMod + 1);
- NotifyModified(mh);
- }
- enteredCount--;
- return true;
- }
-}
-
-bool Document::EnsureStyledTo(int pos) {
- if (pos > GetEndStyled()) {
- IncrementStyleClock();
- // Ask the watchers to style, and stop as soon as one responds.
- for (int i = 0; pos > GetEndStyled() && i < lenWatchers; i++) {
- watchers[i].watcher->NotifyStyleNeeded(this, watchers[i].userData, pos);
- }
- }
- return pos <= GetEndStyled();
-}
-
-void Document::IncrementStyleClock() {
- styleClock++;
- if (styleClock > 0x100000) {
- styleClock = 0;
- }
-}
-
-bool Document::AddWatcher(DocWatcher *watcher, void *userData) {
- for (int i = 0; i < lenWatchers; i++) {
- if ((watchers[i].watcher == watcher) &&
- (watchers[i].userData == userData))
- return false;
- }
- WatcherWithUserData *pwNew = new WatcherWithUserData[lenWatchers + 1];
- if (!pwNew)
- return false;
- for (int j = 0; j < lenWatchers; j++)
- pwNew[j] = watchers[j];
- pwNew[lenWatchers].watcher = watcher;
- pwNew[lenWatchers].userData = userData;
- delete []watchers;
- watchers = pwNew;
- lenWatchers++;
- return true;
-}
-
-bool Document::RemoveWatcher(DocWatcher *watcher, void *userData) {
- for (int i = 0; i < lenWatchers; i++) {
- if ((watchers[i].watcher == watcher) &&
- (watchers[i].userData == userData)) {
- if (lenWatchers == 1) {
- delete []watchers;
- watchers = 0;
- lenWatchers = 0;
- } else {
- WatcherWithUserData *pwNew = new WatcherWithUserData[lenWatchers];
- if (!pwNew)
- return false;
- for (int j = 0; j < lenWatchers - 1; j++) {
- pwNew[j] = (j < i) ? watchers[j] : watchers[j + 1];
- }
- delete []watchers;
- watchers = pwNew;
- lenWatchers--;
- }
- return true;
- }
- }
- return false;
-}
-
-void Document::NotifyModifyAttempt() {
- for (int i = 0; i < lenWatchers; i++) {
- watchers[i].watcher->NotifyModifyAttempt(this, watchers[i].userData);
- }
-}
-
-void Document::NotifySavePoint(bool atSavePoint) {
- for (int i = 0; i < lenWatchers; i++) {
- watchers[i].watcher->NotifySavePoint(this, watchers[i].userData, atSavePoint);
- }
-}
-
-void Document::NotifyModified(DocModification mh) {
- for (int i = 0; i < lenWatchers; i++) {
- watchers[i].watcher->NotifyModified(this, mh, watchers[i].userData);
- }
-}
-
-bool Document::IsWordPartSeparator(char ch) {
- return (WordCharClass(ch) == CharClassify::ccWord) && IsPunctuation(ch);
-}
-
-int Document::WordPartLeft(int pos) {
- if (pos > 0) {
- --pos;
- char startChar = cb.CharAt(pos);
- if (IsWordPartSeparator(startChar)) {
- while (pos > 0 && IsWordPartSeparator(cb.CharAt(pos))) {
- --pos;
- }
- }
- if (pos > 0) {
- startChar = cb.CharAt(pos);
- --pos;
- if (IsLowerCase(startChar)) {
- while (pos > 0 && IsLowerCase(cb.CharAt(pos)))
- --pos;
- if (!IsUpperCase(cb.CharAt(pos)) && !IsLowerCase(cb.CharAt(pos)))
- ++pos;
- } else if (IsUpperCase(startChar)) {
- while (pos > 0 && IsUpperCase(cb.CharAt(pos)))
- --pos;
- if (!IsUpperCase(cb.CharAt(pos)))
- ++pos;
- } else if (IsADigit(startChar)) {
- while (pos > 0 && IsADigit(cb.CharAt(pos)))
- --pos;
- if (!IsADigit(cb.CharAt(pos)))
- ++pos;
- } else if (IsPunctuation(startChar)) {
- while (pos > 0 && IsPunctuation(cb.CharAt(pos)))
- --pos;
- if (!IsPunctuation(cb.CharAt(pos)))
- ++pos;
- } else if (isspacechar(startChar)) {
- while (pos > 0 && isspacechar(cb.CharAt(pos)))
- --pos;
- if (!isspacechar(cb.CharAt(pos)))
- ++pos;
- } else if (!isascii(startChar)) {
- while (pos > 0 && !isascii(cb.CharAt(pos)))
- --pos;
- if (isascii(cb.CharAt(pos)))
- ++pos;
- } else {
- ++pos;
- }
- }
- }
- return pos;
-}
-
-int Document::WordPartRight(int pos) {
- char startChar = cb.CharAt(pos);
- int length = Length();
- if (IsWordPartSeparator(startChar)) {
- while (pos < length && IsWordPartSeparator(cb.CharAt(pos)))
- ++pos;
- startChar = cb.CharAt(pos);
- }
- if (!isascii(startChar)) {
- while (pos < length && !isascii(cb.CharAt(pos)))
- ++pos;
- } else if (IsLowerCase(startChar)) {
- while (pos < length && IsLowerCase(cb.CharAt(pos)))
- ++pos;
- } else if (IsUpperCase(startChar)) {
- if (IsLowerCase(cb.CharAt(pos + 1))) {
- ++pos;
- while (pos < length && IsLowerCase(cb.CharAt(pos)))
- ++pos;
- } else {
- while (pos < length && IsUpperCase(cb.CharAt(pos)))
- ++pos;
- }
- if (IsLowerCase(cb.CharAt(pos)) && IsUpperCase(cb.CharAt(pos - 1)))
- --pos;
- } else if (IsADigit(startChar)) {
- while (pos < length && IsADigit(cb.CharAt(pos)))
- ++pos;
- } else if (IsPunctuation(startChar)) {
- while (pos < length && IsPunctuation(cb.CharAt(pos)))
- ++pos;
- } else if (isspacechar(startChar)) {
- while (pos < length && isspacechar(cb.CharAt(pos)))
- ++pos;
- } else {
- ++pos;
- }
- return pos;
-}
-
-bool IsLineEndChar(char c) {
- return (c == '\n' || c == '\r');
-}
-
-int Document::ExtendStyleRange(int pos, int delta, bool singleLine) {
- int sStart = cb.StyleAt(pos);
- if (delta < 0) {
- while (pos > 0 && (cb.StyleAt(pos) == sStart) && (!singleLine || !IsLineEndChar(cb.CharAt(pos))) )
- pos--;
- pos++;
- } else {
- while (pos < (Length()) && (cb.StyleAt(pos) == sStart) && (!singleLine || !IsLineEndChar(cb.CharAt(pos))) )
- pos++;
- }
- return pos;
-}
-
-static char BraceOpposite(char ch) {
- switch (ch) {
- case '(':
- return ')';
- case ')':
- return '(';
- case '[':
- return ']';
- case ']':
- return '[';
- case '{':
- return '}';
- case '}':
- return '{';
- case '<':
- return '>';
- case '>':
- return '<';
- default:
- return '\0';
- }
-}
-
-// TODO: should be able to extend styled region to find matching brace
-int Document::BraceMatch(int position, int /*maxReStyle*/) {
- char chBrace = CharAt(position);
- char chSeek = BraceOpposite(chBrace);
- if (chSeek == '\0')
- return - 1;
- char styBrace = static_cast(StyleAt(position) & stylingBitsMask);
- int direction = -1;
- if (chBrace == '(' || chBrace == '[' || chBrace == '{' || chBrace == '<')
- direction = 1;
- int depth = 1;
- position = position + direction;
- while ((position >= 0) && (position < Length())) {
- position = MovePositionOutsideChar(position, direction);
- char chAtPos = CharAt(position);
- char styAtPos = static_cast(StyleAt(position) & stylingBitsMask);
- if ((position > GetEndStyled()) || (styAtPos == styBrace)) {
- if (chAtPos == chBrace)
- depth++;
- if (chAtPos == chSeek)
- depth--;
- if (depth == 0)
- return position;
- }
- position = position + direction;
- }
- return - 1;
-}
diff --git a/src/plugins/contrib/wxSmithSTC/stc/scintilla/src/Document.h b/src/plugins/contrib/wxSmithSTC/stc/scintilla/src/Document.h
deleted file mode 100644
index d774d5664e..0000000000
--- a/src/plugins/contrib/wxSmithSTC/stc/scintilla/src/Document.h
+++ /dev/null
@@ -1,305 +0,0 @@
-// Scintilla source code edit control
-/** @file Document.h
- ** Text document that handles notifications, DBCS, styling, words and end of line.
- **/
-// Copyright 1998-2003 by Neil Hodgson
-// The License.txt file describes the conditions under which this software may be distributed.
-
-#ifndef DOCUMENT_H
-#define DOCUMENT_H
-
-/**
- * A Position is a position within a document between two characters or at the beginning or end.
- * Sometimes used as a character index where it identifies the character after the position.
- */
-typedef int Position;
-const Position invalidPosition = -1;
-
-/**
- * The range class represents a range of text in a document.
- * The two values are not sorted as one end may be more significant than the other
- * as is the case for the selection where the end position is the position of the caret.
- * If either position is invalidPosition then the range is invalid and most operations will fail.
- */
-class Range {
-public:
- Position start;
- Position end;
-
- Range(Position pos=0) :
- start(pos), end(pos) {
- };
- Range(Position start_, Position end_) :
- start(start_), end(end_) {
- };
-
- bool Valid() const {
- return (start != invalidPosition) && (end != invalidPosition);
- }
-
- // Is the position within the range?
- bool Contains(Position pos) const {
- if (start < end) {
- return (pos >= start && pos <= end);
- } else {
- return (pos <= start && pos >= end);
- }
- }
-
- // Is the character after pos within the range?
- bool ContainsCharacter(Position pos) const {
- if (start < end) {
- return (pos >= start && pos < end);
- } else {
- return (pos < start && pos >= end);
- }
- }
-
- bool Contains(Range other) const {
- return Contains(other.start) && Contains(other.end);
- }
-
- bool Overlaps(Range other) const {
- return
- Contains(other.start) ||
- Contains(other.end) ||
- other.Contains(start) ||
- other.Contains(end);
- }
-};
-
-class DocWatcher;
-class DocModification;
-class RESearch;
-
-/**
- */
-class Document {
-
-public:
- /** Used to pair watcher pointer with user data. */
- class WatcherWithUserData {
- public:
- DocWatcher *watcher;
- void *userData;
- WatcherWithUserData() {
- watcher = 0;
- userData = 0;
- }
- };
-
- enum charClassification { ccSpace, ccNewLine, ccWord, ccPunctuation };
-
-private:
- int refCount;
- CellBuffer cb;
- CharClassify charClass;
- char stylingMask;
- int endStyled;
- int styleClock;
- int enteredCount;
- int enteredReadOnlyCount;
-
- WatcherWithUserData *watchers;
- int lenWatchers;
-
- bool matchesValid;
- RESearch *pre;
- char *substituted;
-
-public:
- int stylingBits;
- int stylingBitsMask;
-
- int eolMode;
- /// Can also be SC_CP_UTF8 to enable UTF-8 mode
- int dbcsCodePage;
- int tabInChars;
- int indentInChars;
- int actualIndentInChars;
- bool useTabs;
- bool tabIndents;
- bool backspaceUnindents;
-
- Document();
- virtual ~Document();
-
- int AddRef();
- int Release();
-
- int LineFromPosition(int pos);
- int ClampPositionIntoDocument(int pos);
- bool IsCrLf(int pos);
- int LenChar(int pos);
- int MovePositionOutsideChar(int pos, int moveDir, bool checkLineEnd=true);
-
- // Gateways to modifying document
- void ModifiedAt(int pos);
- bool DeleteChars(int pos, int len);
- bool InsertStyledString(int position, char *s, int insertLength);
- int Undo();
- int Redo();
- bool CanUndo() { return cb.CanUndo(); }
- bool CanRedo() { return cb.CanRedo(); }
- void DeleteUndoHistory() { cb.DeleteUndoHistory(); }
- bool SetUndoCollection(bool collectUndo) {
- return cb.SetUndoCollection(collectUndo);
- }
- bool IsCollectingUndo() { return cb.IsCollectingUndo(); }
- void BeginUndoAction() { cb.BeginUndoAction(); }
- void EndUndoAction() { cb.EndUndoAction(); }
- void SetSavePoint();
- bool IsSavePoint() { return cb.IsSavePoint(); }
-
- int GetLineIndentation(int line);
- void SetLineIndentation(int line, int indent);
- int GetLineIndentPosition(int line);
- 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(); }
-
- bool InsertChar(int pos, char ch);
- bool InsertString(int position, const char *s);
- bool InsertString(int position, const char *s, size_t insertLength);
- void ChangeChar(int pos, char ch);
- void DelChar(int pos);
- void DelCharBack(int pos);
-
- char CharAt(int position) { return cb.CharAt(position); }
- void GetCharRange(char *buffer, int position, int lengthRetrieve) {
- cb.GetCharRange(buffer, position, lengthRetrieve);
- }
- char StyleAt(int position) { return cb.StyleAt(position); }
- int GetMark(int line) { return cb.GetMark(line); }
- int AddMark(int line, int markerNum);
- void AddMarkSet(int line, int valueSet);
- void DeleteMark(int line, int markerNum);
- void DeleteMarkFromHandle(int markerHandle);
- void DeleteAllMarks(int markerNum);
- int LineFromHandle(int markerHandle) { return cb.LineFromHandle(markerHandle); }
- int LineStart(int line);
- int LineEnd(int line);
- int LineEndPosition(int position);
- int VCHomePosition(int position);
-
- int SetLevel(int line, int level);
- int GetLevel(int line) { return cb.GetLevel(line); }
- void ClearLevels() { cb.ClearLevels(); }
- int GetLastChild(int lineParent, int level=-1);
- int GetFoldParent(int line);
-
- void Indent(bool forwards);
- int ExtendWordSelect(int pos, int delta, bool onlyWordCharacters=false);
- int NextWordStart(int pos, int delta);
- int NextWordEnd(int pos, int delta);
- int Length() { return cb.Length(); }
- void Allocate(int newSize) { cb.Allocate(newSize*2); }
- long FindText(int minPos, int maxPos, const char *s,
- bool caseSensitive, bool word, bool wordStart, bool regExp, bool posix, int *length);
- long FindText(int iMessage, unsigned long wParam, long lParam);
- const char *SubstituteByPosition(const char *text, int *length);
- int LinesTotal();
-
- void ChangeCase(Range r, bool makeUpperCase);
-
- void SetDefaultCharClasses(bool includeWordClass);
- void SetCharClasses(const unsigned char *chars, CharClassify::cc newCharClass);
- void SetStylingBits(int bits);
- void StartStyling(int position, char mask);
- bool SetStyleFor(int length, char style);
- bool SetStyles(int length, char *styles);
- int GetEndStyled() { return endStyled; }
- bool EnsureStyledTo(int pos);
- int GetStyleClock() { return styleClock; }
- void IncrementStyleClock();
-
- int SetLineState(int line, int state) { return cb.SetLineState(line, state); }
- int GetLineState(int line) { return cb.GetLineState(line); }
- int GetMaxLineState() { return cb.GetMaxLineState(); }
-
- bool AddWatcher(DocWatcher *watcher, void *userData);
- bool RemoveWatcher(DocWatcher *watcher, void *userData);
- const WatcherWithUserData *GetWatchers() const { return watchers; }
- int GetLenWatchers() const { return lenWatchers; }
-
- bool IsWordPartSeparator(char ch);
- int WordPartLeft(int pos);
- int WordPartRight(int pos);
- int ExtendStyleRange(int pos, int delta, bool singleLine = false);
- bool IsWhiteLine(int line);
- int ParaUp(int pos);
- int ParaDown(int pos);
- int IndentSize() { return actualIndentInChars; }
- int BraceMatch(int position, int maxReStyle);
-
-private:
- void CheckReadOnly();
-
- CharClassify::cc WordCharClass(unsigned char ch);
- bool IsWordStartAt(int pos);
- bool IsWordEndAt(int pos);
- bool IsWordAt(int start, int end);
-
- void NotifyModifyAttempt();
- void NotifySavePoint(bool atSavePoint);
- void NotifyModified(DocModification mh);
-};
-
-/**
- * To optimise processing of document modifications by DocWatchers, a hint is passed indicating the
- * scope of the change.
- * If the DocWatcher is a document view then this can be used to optimise screen updating.
- */
-class DocModification {
-public:
- int modificationType;
- int position;
- int length;
- int linesAdded; /**< Negative if lines deleted. */
- const char *text; /**< Only valid for changes to text, not for changes to style. */
- int line;
- int foldLevelNow;
- int foldLevelPrev;
-
- DocModification(int modificationType_, int position_=0, int length_=0,
- int linesAdded_=0, const char *text_=0, int line_=0) :
- modificationType(modificationType_),
- position(position_),
- length(length_),
- linesAdded(linesAdded_),
- text(text_),
- line(line_),
- foldLevelNow(0),
- foldLevelPrev(0) {}
-
- DocModification(int modificationType_, const Action &act, int linesAdded_=0) :
- modificationType(modificationType_),
- position(act.position),
- length(act.lenData),
- linesAdded(linesAdded_),
- text(act.data),
- line(0),
- foldLevelNow(0),
- foldLevelPrev(0) {}
-};
-
-/**
- * A class that wants to receive notifications from a Document must be derived from DocWatcher
- * and implement the notification methods. It can then be added to the watcher list with AddWatcher.
- */
-class DocWatcher {
-public:
- virtual ~DocWatcher() {}
-
- virtual void NotifyModifyAttempt(Document *doc, void *userData) = 0;
- virtual void NotifySavePoint(Document *doc, void *userData, bool atSavePoint) = 0;
- virtual void NotifyModified(Document *doc, DocModification mh, void *userData) = 0;
- virtual void NotifyDeleted(Document *doc, void *userData) = 0;
- virtual void NotifyStyleNeeded(Document *doc, void *userData, int endPos) = 0;
-};
-
-#endif
diff --git a/src/plugins/contrib/wxSmithSTC/stc/scintilla/src/DocumentAccessor.cxx b/src/plugins/contrib/wxSmithSTC/stc/scintilla/src/DocumentAccessor.cxx
deleted file mode 100644
index c695c5f510..0000000000
--- a/src/plugins/contrib/wxSmithSTC/stc/scintilla/src/DocumentAccessor.cxx
+++ /dev/null
@@ -1,187 +0,0 @@
-// Scintilla source code edit control
-/** @file DocumentAccessor.cxx
- ** Rapid easy access to contents of a Scintilla.
- **/
-// Copyright 1998-2001 by Neil Hodgson
-// The License.txt file describes the conditions under which this software may be distributed.
-
-#include
-#include
-#include
-#include
-
-#include "Platform.h"
-
-#include "PropSet.h"
-#include "SVector.h"
-#include "Accessor.h"
-#include "DocumentAccessor.h"
-#include "CellBuffer.h"
-#include "Scintilla.h"
-#include "CharClassify.h"
-#include "Document.h"
-
-DocumentAccessor::~DocumentAccessor() {
-}
-
-bool DocumentAccessor::InternalIsLeadByte(char ch) {
- if (SC_CP_UTF8 == codePage)
- // For lexing, all characters >= 0x80 are treated the
- // same so none is considered a lead byte.
- return false;
- else
- return Platform::IsDBCSLeadByte(codePage, ch);
-}
-
-void DocumentAccessor::Fill(int position) {
- if (lenDoc == -1)
- lenDoc = pdoc->Length();
- startPos = position - slopSize;
- if (startPos + bufferSize > lenDoc)
- startPos = lenDoc - bufferSize;
- if (startPos < 0)
- startPos = 0;
- endPos = startPos + bufferSize;
- if (endPos > lenDoc)
- endPos = lenDoc;
-
- pdoc->GetCharRange(buf, startPos, endPos-startPos);
- buf[endPos-startPos] = '\0';
-}
-
-bool DocumentAccessor::Match(int pos, const char *s) {
- for (int i=0; *s; i++) {
- if (*s != SafeGetCharAt(pos+i))
- return false;
- s++;
- }
- return true;
-}
-
-char DocumentAccessor::StyleAt(int position) {
- // Mask off all bits which aren't in the 'mask'.
- return static_cast(pdoc->StyleAt(position) & mask);
-}
-
-int DocumentAccessor::GetLine(int position) {
- return pdoc->LineFromPosition(position);
-}
-
-int DocumentAccessor::LineStart(int line) {
- return pdoc->LineStart(line);
-}
-
-int DocumentAccessor::LevelAt(int line) {
- return pdoc->GetLevel(line);
-}
-
-int DocumentAccessor::Length() {
- if (lenDoc == -1)
- lenDoc = pdoc->Length();
- return lenDoc;
-}
-
-int DocumentAccessor::GetLineState(int line) {
- return pdoc->GetLineState(line);
-}
-
-int DocumentAccessor::SetLineState(int line, int state) {
- return pdoc->SetLineState(line, state);
-}
-
-void DocumentAccessor::StartAt(unsigned int start, char chMask) {
- // Store the mask specified for use with StyleAt.
- mask = chMask;
- pdoc->StartStyling(start, chMask);
- startPosStyling = start;
-}
-
-void DocumentAccessor::StartSegment(unsigned int pos) {
- startSeg = pos;
-}
-
-void DocumentAccessor::ColourTo(unsigned int pos, int chAttr) {
- // Only perform styling if non empty range
- if (pos != startSeg - 1) {
- if (pos < startSeg) {
- Platform::DebugPrintf("Bad colour positions %d - %d\n", startSeg, pos);
- }
-
- if (validLen + (pos - startSeg + 1) >= bufferSize)
- Flush();
- if (validLen + (pos - startSeg + 1) >= bufferSize) {
- // Too big for buffer so send directly
- pdoc->SetStyleFor(pos - startSeg + 1, static_cast(chAttr));
- } else {
- if (chAttr != chWhile)
- chFlags = 0;
- chAttr |= chFlags;
- for (unsigned int i = startSeg; i <= pos; i++) {
- PLATFORM_ASSERT((startPosStyling + validLen) < Length());
- styleBuf[validLen++] = static_cast(chAttr);
- }
- }
- }
- startSeg = pos+1;
-}
-
-void DocumentAccessor::SetLevel(int line, int level) {
- pdoc->SetLevel(line, level);
-}
-
-void DocumentAccessor::Flush() {
- startPos = extremePosition;
- lenDoc = -1;
- if (validLen > 0) {
- pdoc->SetStyles(validLen, styleBuf);
- startPosStyling += validLen;
- validLen = 0;
- }
-}
-
-int DocumentAccessor::IndentAmount(int line, int *flags, PFNIsCommentLeader pfnIsCommentLeader) {
- int end = Length();
- int spaceFlags = 0;
-
- // Determines the indentation level of the current line and also checks for consistent
- // indentation compared to the previous line.
- // Indentation is judged consistent when the indentation whitespace of each line lines
- // the same or the indentation of one line is a prefix of the other.
-
- int pos = LineStart(line);
- char ch = (*this)[pos];
- int indent = 0;
- bool inPrevPrefix = line > 0;
- int posPrev = inPrevPrefix ? LineStart(line-1) : 0;
- while ((ch == ' ' || ch == '\t') && (pos < end)) {
- if (inPrevPrefix) {
- char chPrev = (*this)[posPrev++];
- if (chPrev == ' ' || chPrev == '\t') {
- if (chPrev != ch)
- spaceFlags |= wsInconsistent;
- } else {
- inPrevPrefix = false;
- }
- }
- if (ch == ' ') {
- spaceFlags |= wsSpace;
- indent++;
- } else { // Tab
- spaceFlags |= wsTab;
- if (spaceFlags & wsSpace)
- spaceFlags |= wsSpaceTab;
- indent = (indent / 8 + 1) * 8;
- }
- ch = (*this)[++pos];
- }
-
- *flags = spaceFlags;
- indent += SC_FOLDLEVELBASE;
- // if completely empty line or the start of a comment...
- if ((ch == ' ' || ch == '\t' || ch == '\n' || ch == '\r') ||
- (pfnIsCommentLeader && (*pfnIsCommentLeader)(*this, pos, end-pos)) )
- return indent | SC_FOLDLEVELWHITEFLAG;
- else
- return indent;
-}
-
diff --git a/src/plugins/contrib/wxSmithSTC/stc/scintilla/src/DocumentAccessor.h b/src/plugins/contrib/wxSmithSTC/stc/scintilla/src/DocumentAccessor.h
deleted file mode 100644
index 7406520452..0000000000
--- a/src/plugins/contrib/wxSmithSTC/stc/scintilla/src/DocumentAccessor.h
+++ /dev/null
@@ -1,67 +0,0 @@
-// Scintilla source code edit control
-/** @file DocumentAccessor.h
- ** Implementation of BufferAccess and StylingAccess on a Scintilla
- ** rapid easy access to contents of a Scintilla.
- **/
-// Copyright 1998-2001 by Neil Hodgson
-// The License.txt file describes the conditions under which this software may be distributed.
-
-class Document;
-
-/**
- */
-class DocumentAccessor : public Accessor {
- // Private so DocumentAccessor objects can not be copied
- DocumentAccessor(const DocumentAccessor &source) : Accessor(), props(source.props) {}
- DocumentAccessor &operator=(const DocumentAccessor &) { return *this; }
-
-protected:
- Document *pdoc;
- PropSet &props;
- WindowID id;
- int lenDoc;
-
- char styleBuf[bufferSize];
- int validLen;
- char chFlags;
- char chWhile;
- unsigned int startSeg;
- int startPosStyling;
- int mask;
-
- bool InternalIsLeadByte(char ch);
- void Fill(int position);
-
-public:
- DocumentAccessor(Document *pdoc_, PropSet &props_, WindowID id_=0) :
- Accessor(), pdoc(pdoc_), props(props_), id(id_),
- lenDoc(-1), validLen(0), chFlags(0), chWhile(0),
- startSeg(0), startPosStyling(0),
- mask(127) { // Initialize the mask to be big enough for any lexer.
- }
- ~DocumentAccessor();
- bool Match(int pos, const char *s);
- char StyleAt(int position);
- int GetLine(int position);
- int LineStart(int line);
- int LevelAt(int line);
- int Length();
- void Flush();
- int GetLineState(int line);
- int SetLineState(int line, int state);
- int GetPropertyInt(const char *key, int defaultValue=0) {
- return props.GetInt(key, defaultValue);
- }
- char *GetProperties() {
- return props.ToString();
- }
- WindowID GetWindow() { return id; }
-
- void StartAt(unsigned int start, char chMask=31);
- void SetFlags(char chFlags_, char chWhile_) {chFlags = chFlags_; chWhile = chWhile_; };
- unsigned int GetStartSegment() { return startSeg; }
- void StartSegment(unsigned int pos);
- void ColourTo(unsigned int pos, int chAttr);
- void SetLevel(int line, int level);
- int IndentAmount(int line, int *flags, PFNIsCommentLeader pfnIsCommentLeader = 0);
-};
diff --git a/src/plugins/contrib/wxSmithSTC/stc/scintilla/src/Editor.cxx b/src/plugins/contrib/wxSmithSTC/stc/scintilla/src/Editor.cxx
deleted file mode 100644
index a69194f97e..0000000000
--- a/src/plugins/contrib/wxSmithSTC/stc/scintilla/src/Editor.cxx
+++ /dev/null
@@ -1,7298 +0,0 @@
-// Scintilla source code edit control
-/** @file Editor.cxx
- ** Main code for the edit control.
- **/
-// Copyright 1998-2004 by Neil Hodgson
-// The License.txt file describes the conditions under which this software may be distributed.
-
-#include
-#include
-#include
-#include
-
-#include "Platform.h"
-
-#ifndef PLAT_QT
-#define INCLUDE_DEPRECATED_FEATURES
-#endif
-#include "Scintilla.h"
-
-#include "ContractionState.h"
-#include "SVector.h"
-#include "CellBuffer.h"
-#include "KeyMap.h"
-#include "Indicator.h"
-#include "XPM.h"
-#include "LineMarker.h"
-#include "Style.h"
-#include "ViewStyle.h"
-#include "CharClassify.h"
-#include "Document.h"
-#include "Editor.h"
-
-/*
- return whether this modification represents an operation that
- may reasonably be deferred (not done now OR [possibly] at all)
-*/
-static bool CanDeferToLastStep(const DocModification& mh) {
- if (mh.modificationType & (SC_MOD_BEFOREINSERT|SC_MOD_BEFOREDELETE))
- return true; // CAN skip
- if (!(mh.modificationType & (SC_PERFORMED_UNDO|SC_PERFORMED_REDO)))
- return false; // MUST do
- if (mh.modificationType & SC_MULTISTEPUNDOREDO)
- return true; // CAN skip
- return false; // PRESUMABLY must do
-}
-
-static bool CanEliminate(const DocModification& mh) {
- return
- (mh.modificationType & (SC_MOD_BEFOREINSERT|SC_MOD_BEFOREDELETE)) != 0;
-}
-
-/*
- return whether this modification represents the FINAL step
- in a [possibly lengthy] multi-step Undo/Redo sequence
-*/
-static bool IsLastStep(const DocModification& mh) {
- return
- (mh.modificationType & (SC_PERFORMED_UNDO|SC_PERFORMED_REDO)) != 0
- && (mh.modificationType & SC_MULTISTEPUNDOREDO) != 0
- && (mh.modificationType & SC_LASTSTEPINUNDOREDO) != 0
- && (mh.modificationType & SC_MULTILINEUNDOREDO) != 0;
-}
-
-Caret::Caret() :
-active(false), on(false), period(500) {}
-
-Timer::Timer() :
-ticking(false), ticksToWait(0), tickerID(0) {}
-
-Idler::Idler() :
-state(false), idlerID(0) {}
-
-LineLayout::LineLayout(int maxLineLength_) :
- lineStarts(0),
- lenLineStarts(0),
- lineNumber(-1),
- inCache(false),
- maxLineLength(-1),
- numCharsInLine(0),
- validity(llInvalid),
- xHighlightGuide(0),
- highlightColumn(0),
- selStart(0),
- selEnd(0),
- containsCaret(false),
- edgeColumn(0),
- chars(0),
- styles(0),
- styleBitsSet(0),
- indicators(0),
- positions(0),
- hsStart(0),
- hsEnd(0),
- widthLine(wrapWidthInfinite),
- lines(1) {
- Resize(maxLineLength_);
-}
-
-LineLayout::~LineLayout() {
- Free();
-}
-
-void LineLayout::Resize(int maxLineLength_) {
- if (maxLineLength_ > maxLineLength) {
- Free();
- chars = new char[maxLineLength_ + 1];
- styles = new unsigned char[maxLineLength_ + 1];
- indicators = new char[maxLineLength_ + 1];
- // Extra position allocated as sometimes the Windows
- // GetTextExtentExPoint API writes an extra element.
- positions = new int[maxLineLength_ + 1 + 1];
- maxLineLength = maxLineLength_;
- }
-}
-
-void LineLayout::Free() {
- delete []chars;
- chars = 0;
- delete []styles;
- styles = 0;
- delete []indicators;
- indicators = 0;
- delete []positions;
- positions = 0;
- delete []lineStarts;
- lineStarts = 0;
-}
-
-void LineLayout::Invalidate(validLevel validity_) {
- if (validity > validity_)
- validity = validity_;
-}
-
-void LineLayout::SetLineStart(int line, int start) {
- if ((line >= lenLineStarts) && (line != 0)) {
- int newMaxLines = line + 20;
- int *newLineStarts = new int[newMaxLines];
- if (!newLineStarts)
- return;
- for (int i = 0; i < newMaxLines; i++) {
- if (i < lenLineStarts)
- newLineStarts[i] = lineStarts[i];
- else
- newLineStarts[i] = 0;
- }
- delete []lineStarts;
- lineStarts = newLineStarts;
- lenLineStarts = newMaxLines;
- }
- lineStarts[line] = start;
-}
-
-void LineLayout::SetBracesHighlight(Range rangeLine, Position braces[],
- char bracesMatchStyle, int xHighlight) {
- if (rangeLine.ContainsCharacter(braces[0])) {
- int braceOffset = braces[0] - rangeLine.start;
- if (braceOffset < numCharsInLine) {
- bracePreviousStyles[0] = styles[braceOffset];
- styles[braceOffset] = bracesMatchStyle;
- }
- }
- if (rangeLine.ContainsCharacter(braces[1])) {
- int braceOffset = braces[1] - rangeLine.start;
- if (braceOffset < numCharsInLine) {
- bracePreviousStyles[1] = styles[braceOffset];
- styles[braceOffset] = bracesMatchStyle;
- }
- }
- if ((braces[0] >= rangeLine.start && braces[1] <= rangeLine.end) ||
- (braces[1] >= rangeLine.start && braces[0] <= rangeLine.end)) {
- xHighlightGuide = xHighlight;
- }
-}
-
-void LineLayout::RestoreBracesHighlight(Range rangeLine, Position braces[]) {
- if (rangeLine.ContainsCharacter(braces[0])) {
- int braceOffset = braces[0] - rangeLine.start;
- if (braceOffset < numCharsInLine) {
- styles[braceOffset] = bracePreviousStyles[0];
- }
- }
- if (rangeLine.ContainsCharacter(braces[1])) {
- int braceOffset = braces[1] - rangeLine.start;
- if (braceOffset < numCharsInLine) {
- styles[braceOffset] = bracePreviousStyles[1];
- }
- }
- xHighlightGuide = 0;
-}
-
-LineLayoutCache::LineLayoutCache() :
- level(0), length(0), size(0), cache(0),
- allInvalidated(false), styleClock(-1), useCount(0) {
- Allocate(0);
-}
-
-LineLayoutCache::~LineLayoutCache() {
- Deallocate();
-}
-
-void LineLayoutCache::Allocate(int length_) {
- PLATFORM_ASSERT(cache == NULL);
- allInvalidated = false;
- length = length_;
- size = length;
- if (size > 1) {
- size = (size / 16 + 1) * 16;
- }
- if (size > 0) {
- cache = new LineLayout * [size];
- }
- for (int i = 0; i < size; i++)
- cache[i] = 0;
-}
-
-void LineLayoutCache::AllocateForLevel(int linesOnScreen, int linesInDoc) {
- PLATFORM_ASSERT(useCount == 0);
- int lengthForLevel = 0;
- if (level == llcCaret) {
- lengthForLevel = 1;
- } else if (level == llcPage) {
- lengthForLevel = linesOnScreen + 1;
- } else if (level == llcDocument) {
- lengthForLevel = linesInDoc;
- }
- if (lengthForLevel > size) {
- Deallocate();
- Allocate(lengthForLevel);
- } else {
- if (lengthForLevel < length) {
- for (int i = lengthForLevel; i < length; i++) {
- delete cache[i];
- cache[i] = 0;
- }
- }
- length = lengthForLevel;
- }
- PLATFORM_ASSERT(length == lengthForLevel);
- PLATFORM_ASSERT(cache != NULL || length == 0);
-}
-
-void LineLayoutCache::Deallocate() {
- PLATFORM_ASSERT(useCount == 0);
- for (int i = 0; i < length; i++)
- delete cache[i];
- delete []cache;
- cache = 0;
- length = 0;
- size = 0;
-}
-
-void LineLayoutCache::Invalidate(LineLayout::validLevel validity_) {
- if (cache && !allInvalidated) {
- for (int i = 0; i < length; i++) {
- if (cache[i]) {
- cache[i]->Invalidate(validity_);
- }
- }
- if (validity_ == LineLayout::llInvalid) {
- allInvalidated = true;
- }
- }
-}
-
-void LineLayoutCache::SetLevel(int level_) {
- allInvalidated = false;
- if ((level_ != -1) && (level != level_)) {
- level = level_;
- Deallocate();
- }
-}
-
-LineLayout *LineLayoutCache::Retrieve(int lineNumber, int lineCaret, int maxChars, int styleClock_,
- int linesOnScreen, int linesInDoc) {
- AllocateForLevel(linesOnScreen, linesInDoc);
- if (styleClock != styleClock_) {
- Invalidate(LineLayout::llCheckTextAndStyle);
- styleClock = styleClock_;
- }
- allInvalidated = false;
- int pos = -1;
- LineLayout *ret = 0;
- if (level == llcCaret) {
- pos = 0;
- } else if (level == llcPage) {
- if (lineNumber == lineCaret) {
- pos = 0;
- } else if (length > 1) {
- pos = 1 + (lineNumber % (length - 1));
- }
- } else if (level == llcDocument) {
- pos = lineNumber;
- }
- if (pos >= 0) {
- PLATFORM_ASSERT(useCount == 0);
- if (cache && (pos < length)) {
- if (cache[pos]) {
- if ((cache[pos]->lineNumber != lineNumber) ||
- (cache[pos]->maxLineLength < maxChars)) {
- delete cache[pos];
- cache[pos] = 0;
- }
- }
- if (!cache[pos]) {
- cache[pos] = new LineLayout(maxChars);
- }
- if (cache[pos]) {
- cache[pos]->lineNumber = lineNumber;
- cache[pos]->inCache = true;
- ret = cache[pos];
- useCount++;
- }
- }
- }
-
- if (!ret) {
- ret = new LineLayout(maxChars);
- ret->lineNumber = lineNumber;
- }
-
- return ret;
-}
-
-void LineLayoutCache::Dispose(LineLayout *ll) {
- allInvalidated = false;
- if (ll) {
- if (!ll->inCache) {
- delete ll;
- } else {
- useCount--;
- }
- }
-}
-
-Editor::Editor() {
- ctrlID = 0;
-
- stylesValid = false;
-
- printMagnification = 0;
- printColourMode = SC_PRINT_NORMAL;
- printWrapState = eWrapWord;
- cursorMode = SC_CURSORNORMAL;
- controlCharSymbol = 0; /* Draw the control characters */
-
- hasFocus = false;
- hideSelection = false;
- inOverstrike = false;
- errorStatus = 0;
- mouseDownCaptures = true;
-
- bufferedDraw = true;
- twoPhaseDraw = true;
-
- lastClickTime = 0;
- dwellDelay = SC_TIME_FOREVER;
- ticksToDwell = SC_TIME_FOREVER;
- dwelling = false;
- ptMouseLast.x = 0;
- ptMouseLast.y = 0;
- inDragDrop = false;
- dropWentOutside = false;
- posDrag = invalidPosition;
- posDrop = invalidPosition;
- selectionType = selChar;
-
- lastXChosen = 0;
- lineAnchor = 0;
- originalAnchorPos = 0;
-
- selType = selStream;
- moveExtendsSelection = false;
- xStartSelect = 0;
- xEndSelect = 0;
- primarySelection = true;
-
- caretXPolicy = CARET_SLOP | CARET_EVEN;
- caretXSlop = 50;
-
- caretYPolicy = CARET_EVEN;
- caretYSlop = 0;
-
- searchAnchor = 0;
-
- xOffset = 0;
- xCaretMargin = 50;
- horizontalScrollBarVisible = true;
- scrollWidth = 2000;
- verticalScrollBarVisible = true;
- endAtLastLine = true;
- caretSticky = false;
-
- pixmapLine = Surface::Allocate();
- pixmapSelMargin = Surface::Allocate();
- pixmapSelPattern = Surface::Allocate();
- pixmapIndentGuide = Surface::Allocate();
- pixmapIndentGuideHighlight = Surface::Allocate();
-
- currentPos = 0;
- anchor = 0;
-
- targetStart = 0;
- targetEnd = 0;
- searchFlags = 0;
-
- topLine = 0;
- posTopLine = 0;
-
- lengthForEncode = -1;
-
- needUpdateUI = true;
- braces[0] = invalidPosition;
- braces[1] = invalidPosition;
- bracesMatchStyle = STYLE_BRACEBAD;
- highlightGuideColumn = 0;
-
- theEdge = 0;
-
- paintState = notPainting;
-
- modEventMask = SC_MODEVENTMASKALL;
-
- pdoc = new Document();
- pdoc->AddRef();
- pdoc->AddWatcher(this, 0);
-
- recordingMacro = false;
- foldFlags = 0;
-
- wrapState = eWrapNone;
- wrapWidth = LineLayout::wrapWidthInfinite;
- wrapStart = wrapLineLarge;
- wrapEnd = wrapLineLarge;
- wrapVisualFlags = 0;
- wrapVisualFlagsLocation = 0;
- wrapVisualStartIndent = 0;
- actualWrapVisualStartIndent = 0;
-
- convertPastes = true;
-
- hsStart = -1;
- hsEnd = -1;
-
- llc.SetLevel(LineLayoutCache::llcCaret);
-}
-
-Editor::~Editor() {
- pdoc->RemoveWatcher(this, 0);
- pdoc->Release();
- pdoc = 0;
- DropGraphics();
- delete pixmapLine;
- delete pixmapSelMargin;
- delete pixmapSelPattern;
- delete pixmapIndentGuide;
- delete pixmapIndentGuideHighlight;
-}
-
-void Editor::Finalise() {
- SetIdle(false);
- CancelModes();
-}
-
-void Editor::DropGraphics() {
- pixmapLine->Release();
- pixmapSelMargin->Release();
- pixmapSelPattern->Release();
- pixmapIndentGuide->Release();
- pixmapIndentGuideHighlight->Release();
-}
-
-void Editor::InvalidateStyleData() {
- stylesValid = false;
- palette.Release();
- DropGraphics();
- llc.Invalidate(LineLayout::llInvalid);
- if (selType == selRectangle) {
- xStartSelect = XFromPosition(anchor);
- xEndSelect = XFromPosition(currentPos);
- }
-}
-
-void Editor::InvalidateStyleRedraw() {
- NeedWrapping();
- InvalidateStyleData();
- Redraw();
-}
-
-void Editor::RefreshColourPalette(Palette &pal, bool want) {
- vs.RefreshColourPalette(pal, want);
-}
-
-void Editor::RefreshStyleData() {
- if (!stylesValid) {
- stylesValid = true;
- AutoSurface surface(this);
- if (surface) {
- vs.Refresh(*surface);
- RefreshColourPalette(palette, true);
- palette.Allocate(wMain);
- RefreshColourPalette(palette, false);
- }
- SetScrollBars();
- }
-}
-
-PRectangle Editor::GetClientRectangle() {
- return wMain.GetClientPosition();
-}
-
-PRectangle Editor::GetTextRectangle() {
- PRectangle rc = GetClientRectangle();
- rc.left += vs.fixedColumnWidth;
- rc.right -= vs.rightMarginWidth;
- return rc;
-}
-
-int Editor::LinesOnScreen() {
- PRectangle rcClient = GetClientRectangle();
- int htClient = rcClient.bottom - rcClient.top;
- //Platform::DebugPrintf("lines on screen = %d\n", htClient / lineHeight + 1);
- int n = htClient / vs.lineHeight;
- if (n < 0)
- n = 0;
- return n;
-}
-
-int Editor::LinesToScroll() {
- int retVal = LinesOnScreen() - 1;
- if (retVal < 1)
- return 1;
- else
- return retVal;
-}
-
-int Editor::MaxScrollPos() {
- //Platform::DebugPrintf("Lines %d screen = %d maxScroll = %d\n",
- //LinesTotal(), LinesOnScreen(), LinesTotal() - LinesOnScreen() + 1);
- int retVal = cs.LinesDisplayed();
- if (endAtLastLine) {
- retVal -= LinesOnScreen();
- } else {
- retVal--;
- }
- if (retVal < 0) {
- return 0;
- } else {
- return retVal;
- }
-}
-
-static inline bool IsControlCharacter(int ch) {
- // iscntrl returns true for lots of chars > 127 which are displayable
- return ch >= 0 && ch < ' ';
-}
-
-const char *ControlCharacterString(unsigned char ch) {
- const char *reps[] = {
- "NUL", "SOH", "STX", "ETX", "EOT", "ENQ", "ACK", "BEL",
- "BS", "HT", "LF", "VT", "FF", "CR", "SO", "SI",
- "DLE", "DC1", "DC2", "DC3", "DC4", "NAK", "SYN", "ETB",
- "CAN", "EM", "SUB", "ESC", "FS", "GS", "RS", "US"
- };
- if (ch < (sizeof(reps) / sizeof(reps[0]))) {
- return reps[ch];
- } else {
- return "BAD";
- }
-}
-
-/**
- * Convenience class to ensure LineLayout objects are always disposed.
- */
-class AutoLineLayout {
- LineLayoutCache &llc;
- LineLayout *ll;
- AutoLineLayout &operator=(const AutoLineLayout &) { return * this; }
-public:
- AutoLineLayout(LineLayoutCache &llc_, LineLayout *ll_) : llc(llc_), ll(ll_) {}
- ~AutoLineLayout() {
- llc.Dispose(ll);
- ll = 0;
- }
- LineLayout *operator->() const {
- return ll;
- }
- operator LineLayout *() const {
- return ll;
- }
- void Set(LineLayout *ll_) {
- llc.Dispose(ll);
- ll = ll_;
- }
-};
-
-/**
- * Allows to iterate through the lines of a selection.
- * Althought it can be called for a stream selection, in most cases
- * it is inefficient and it should be used only for
- * a rectangular or a line selection.
- */
-class SelectionLineIterator {
-private:
- Editor *ed;
- int line; ///< Current line within the iteration.
- bool forward; ///< True if iterating by increasing line number, false otherwise.
- int selStart, selEnd; ///< Positions of the start and end of the selection relative to the start of the document.
- int minX, maxX; ///< Left and right of selection rectangle.
-
-public:
- int lineStart, lineEnd; ///< Line numbers, first and last lines of the selection.
- int startPos, endPos; ///< Positions of the beginning and end of the selection on the current line.
-
- void Reset() {
- if (forward) {
- line = lineStart;
- } else {
- line = lineEnd;
- }
- }
-
- SelectionLineIterator(Editor *ed_, bool forward_ = true) : line(0), startPos(0), endPos(0) {
- ed = ed_;
- forward = forward_;
- selStart = ed->SelectionStart();
- selEnd = ed->SelectionEnd();
- lineStart = ed->pdoc->LineFromPosition(selStart);
- lineEnd = ed->pdoc->LineFromPosition(selEnd);
- // Left of rectangle
- minX = Platform::Minimum(ed->xStartSelect, ed->xEndSelect);
- // Right of rectangle
- maxX = Platform::Maximum(ed->xStartSelect, ed->xEndSelect);
- Reset();
- }
- ~SelectionLineIterator() {}
-
- void SetAt(int line) {
- if (line < lineStart || line > lineEnd) {
- startPos = endPos = INVALID_POSITION;
- } else {
- if (ed->selType == ed->selRectangle) {
- // Measure line and return character closest to minX
- startPos = ed->PositionFromLineX(line, minX);
- // Measure line and return character closest to maxX
- endPos = ed->PositionFromLineX(line, maxX);
- } else if (ed->selType == ed->selLines) {
- startPos = ed->pdoc->LineStart(line);
- endPos = ed->pdoc->LineStart(line + 1);
- } else { // Stream selection, here only for completion
- if (line == lineStart) {
- startPos = selStart;
- } else {
- startPos = ed->pdoc->LineStart(line);
- }
- if (line == lineEnd) {
- endPos = selEnd;
- } else {
- endPos = ed->pdoc->LineStart(line + 1);
- }
- }
- }
- }
- bool Iterate() {
- SetAt(line);
- if (forward) {
- line++;
- } else {
- line--;
- }
- return startPos != INVALID_POSITION;
- }
-};
-
-Point Editor::LocationFromPosition(int pos) {
- Point pt;
- RefreshStyleData();
- if (pos == INVALID_POSITION)
- return pt;
- int line = pdoc->LineFromPosition(pos);
- int lineVisible = cs.DisplayFromDoc(line);
- //Platform::DebugPrintf("line=%d\n", line);
- AutoSurface surface(this);
- AutoLineLayout ll(llc, RetrieveLineLayout(line));
- if (surface && ll) {
- // -1 because of adding in for visible lines in following loop.
- pt.y = (lineVisible - topLine - 1) * vs.lineHeight;
- pt.x = 0;
- unsigned int posLineStart = pdoc->LineStart(line);
- LayoutLine(line, surface, vs, ll, wrapWidth);
- int posInLine = pos - posLineStart;
- // In case of very long line put x at arbitrary large position
- if (posInLine > ll->maxLineLength) {
- pt.x = ll->positions[ll->maxLineLength] - ll->positions[ll->LineStart(ll->lines)];
- }
-
- for (int subLine = 0; subLine < ll->lines; subLine++) {
- if ((posInLine >= ll->LineStart(subLine)) && (posInLine <= ll->LineStart(subLine + 1))) {
- pt.x = ll->positions[posInLine] - ll->positions[ll->LineStart(subLine)];
- if (actualWrapVisualStartIndent != 0) {
- int lineStart = ll->LineStart(subLine);
- if (lineStart != 0) // Wrapped
- pt.x += actualWrapVisualStartIndent * vs.aveCharWidth;
- }
- }
- if (posInLine >= ll->LineStart(subLine)) {
- pt.y += vs.lineHeight;
- }
- }
- pt.x += vs.fixedColumnWidth - xOffset;
- }
- return pt;
-}
-
-int Editor::XFromPosition(int pos) {
- Point pt = LocationFromPosition(pos);
- return pt.x - vs.fixedColumnWidth + xOffset;
-}
-
-int Editor::LineFromLocation(Point pt) {
- return cs.DocFromDisplay(pt.y / vs.lineHeight + topLine);
-}
-
-void Editor::SetTopLine(int topLineNew) {
- topLine = topLineNew;
- posTopLine = pdoc->LineStart(cs.DocFromDisplay(topLine));
-}
-
-static inline bool IsEOLChar(char ch) {
- return (ch == '\r') || (ch == '\n');
-}
-
-int Editor::PositionFromLocation(Point pt) {
- RefreshStyleData();
- pt.x = pt.x - vs.fixedColumnWidth + xOffset;
- int visibleLine = pt.y / vs.lineHeight + topLine;
- if (pt.y < 0) { // Division rounds towards 0
- visibleLine = (pt.y - (vs.lineHeight - 1)) / vs.lineHeight + topLine;
- }
- if (visibleLine < 0)
- visibleLine = 0;
- int lineDoc = cs.DocFromDisplay(visibleLine);
- if (lineDoc >= pdoc->LinesTotal())
- return pdoc->Length();
- unsigned int posLineStart = pdoc->LineStart(lineDoc);
- int retVal = posLineStart;
- AutoSurface surface(this);
- AutoLineLayout ll(llc, RetrieveLineLayout(lineDoc));
- if (surface && ll) {
- LayoutLine(lineDoc, surface, vs, ll, wrapWidth);
- int lineStartSet = cs.DisplayFromDoc(lineDoc);
- int subLine = visibleLine - lineStartSet;
- if (subLine < ll->lines) {
- int lineStart = ll->LineStart(subLine);
- int lineEnd = ll->LineStart(subLine + 1);
- int subLineStart = ll->positions[lineStart];
-
- if (actualWrapVisualStartIndent != 0) {
- if (lineStart != 0) // Wrapped
- pt.x -= actualWrapVisualStartIndent * vs.aveCharWidth;
- }
- for (int i = lineStart; i < lineEnd; i++) {
- if (pt.x < (((ll->positions[i] + ll->positions[i + 1]) / 2) - subLineStart) ||
- IsEOLChar(ll->chars[i])) {
- return pdoc->MovePositionOutsideChar(i + posLineStart, 1);
- }
- }
- return lineEnd + posLineStart;
- }
- retVal = ll->numCharsInLine + posLineStart;
- }
- return retVal;
-}
-
-// Like PositionFromLocation but INVALID_POSITION returned when not near any text.
-int Editor::PositionFromLocationClose(Point pt) {
- RefreshStyleData();
- PRectangle rcClient = GetTextRectangle();
- if (!rcClient.Contains(pt))
- return INVALID_POSITION;
- if (pt.x < vs.fixedColumnWidth)
- return INVALID_POSITION;
- if (pt.y < 0)
- return INVALID_POSITION;
- pt.x = pt.x - vs.fixedColumnWidth + xOffset;
- int visibleLine = pt.y / vs.lineHeight + topLine;
- if (pt.y < 0) { // Division rounds towards 0
- visibleLine = (pt.y - (vs.lineHeight - 1)) / vs.lineHeight + topLine;
- }
- int lineDoc = cs.DocFromDisplay(visibleLine);
- if (lineDoc < 0)
- return INVALID_POSITION;
- if (lineDoc >= pdoc->LinesTotal())
- return INVALID_POSITION;
- AutoSurface surface(this);
- AutoLineLayout ll(llc, RetrieveLineLayout(lineDoc));
- if (surface && ll) {
- LayoutLine(lineDoc, surface, vs, ll, wrapWidth);
- unsigned int posLineStart = pdoc->LineStart(lineDoc);
- int lineStartSet = cs.DisplayFromDoc(lineDoc);
- int subLine = visibleLine - lineStartSet;
- if (subLine < ll->lines) {
- int lineStart = ll->LineStart(subLine);
- int lineEnd = ll->LineStart(subLine + 1);
- int subLineStart = ll->positions[lineStart];
-
- if (actualWrapVisualStartIndent != 0) {
- if (lineStart != 0) // Wrapped
- pt.x -= actualWrapVisualStartIndent * vs.aveCharWidth;
- }
- for (int i = lineStart; i < lineEnd; i++) {
- if (pt.x < (((ll->positions[i] + ll->positions[i + 1]) / 2) - subLineStart) ||
- IsEOLChar(ll->chars[i])) {
- return pdoc->MovePositionOutsideChar(i + posLineStart, 1);
- }
- }
- if (pt.x < (ll->positions[lineEnd] - subLineStart)) {
- return pdoc->MovePositionOutsideChar(lineEnd + posLineStart, 1);
- }
- }
- }
-
- return INVALID_POSITION;
-}
-
-/**
- * Find the document position corresponding to an x coordinate on a particular document line.
- * Ensure is between whole characters when document is in multi-byte or UTF-8 mode.
- */
-int Editor::PositionFromLineX(int lineDoc, int x) {
- RefreshStyleData();
- if (lineDoc >= pdoc->LinesTotal())
- return pdoc->Length();
- //Platform::DebugPrintf("Position of (%d,%d) line = %d top=%d\n", pt.x, pt.y, line, topLine);
- AutoSurface surface(this);
- AutoLineLayout ll(llc, RetrieveLineLayout(lineDoc));
- int retVal = 0;
- if (surface && ll) {
- unsigned int posLineStart = pdoc->LineStart(lineDoc);
- LayoutLine(lineDoc, surface, vs, ll, wrapWidth);
- retVal = ll->numCharsInLine + posLineStart;
- int subLine = 0;
- int lineStart = ll->LineStart(subLine);
- int lineEnd = ll->LineStart(subLine + 1);
- int subLineStart = ll->positions[lineStart];
-
- if (actualWrapVisualStartIndent != 0) {
- if (lineStart != 0) // Wrapped
- x -= actualWrapVisualStartIndent * vs.aveCharWidth;
- }
- for (int i = lineStart; i < lineEnd; i++) {
- if (x < (((ll->positions[i] + ll->positions[i + 1]) / 2) - subLineStart) ||
- IsEOLChar(ll->chars[i])) {
- retVal = pdoc->MovePositionOutsideChar(i + posLineStart, 1);
- break;
- }
- }
- }
- return retVal;
-}
-
-/**
- * If painting then abandon the painting because a wider redraw is needed.
- * @return true if calling code should stop drawing.
- */
-bool Editor::AbandonPaint() {
- if ((paintState == painting) && !paintingAllText) {
- paintState = paintAbandoned;
- }
- return paintState == paintAbandoned;
-}
-
-void Editor::RedrawRect(PRectangle rc) {
- //Platform::DebugPrintf("Redraw %0d,%0d - %0d,%0d\n", rc.left, rc.top, rc.right, rc.bottom);
-
- // Clip the redraw rectangle into the client area
- PRectangle rcClient = GetClientRectangle();
- if (rc.top < rcClient.top)
- rc.top = rcClient.top;
- if (rc.bottom > rcClient.bottom)
- rc.bottom = rcClient.bottom;
- if (rc.left < rcClient.left)
- rc.left = rcClient.left;
- if (rc.right > rcClient.right)
- rc.right = rcClient.right;
-
- if ((rc.bottom > rc.top) && (rc.right > rc.left)) {
- wMain.InvalidateRectangle(rc);
- }
-}
-
-void Editor::Redraw() {
- //Platform::DebugPrintf("Redraw all\n");
- PRectangle rcClient = GetClientRectangle();
- wMain.InvalidateRectangle(rcClient);
- //wMain.InvalidateAll();
-}
-
-void Editor::RedrawSelMargin(int line) {
- if (!AbandonPaint()) {
- if (vs.maskInLine) {
- Redraw();
- } else {
- PRectangle rcSelMargin = GetClientRectangle();
- rcSelMargin.right = vs.fixedColumnWidth;
- if (line != -1) {
- int position = pdoc->LineStart(line);
- PRectangle rcLine = RectangleFromRange(position, position);
- rcSelMargin.top = rcLine.top;
- rcSelMargin.bottom = rcLine.bottom;
- }
- wMain.InvalidateRectangle(rcSelMargin);
- }
- }
-}
-
-PRectangle Editor::RectangleFromRange(int start, int end) {
- int minPos = start;
- if (minPos > end)
- minPos = end;
- int maxPos = start;
- if (maxPos < end)
- maxPos = end;
- int minLine = cs.DisplayFromDoc(pdoc->LineFromPosition(minPos));
- int lineDocMax = pdoc->LineFromPosition(maxPos);
- int maxLine = cs.DisplayFromDoc(lineDocMax) + cs.GetHeight(lineDocMax) - 1;
- PRectangle rcClient = GetTextRectangle();
- PRectangle rc;
- rc.left = vs.fixedColumnWidth;
- rc.top = (minLine - topLine) * vs.lineHeight;
- if (rc.top < 0)
- rc.top = 0;
- rc.right = rcClient.right;
- rc.bottom = (maxLine - topLine + 1) * vs.lineHeight;
- // Ensure PRectangle is within 16 bit space
- rc.top = Platform::Clamp(rc.top, -32000, 32000);
- rc.bottom = Platform::Clamp(rc.bottom, -32000, 32000);
-
- return rc;
-}
-
-void Editor::InvalidateRange(int start, int end) {
- RedrawRect(RectangleFromRange(start, end));
-}
-
-int Editor::CurrentPosition() {
- return currentPos;
-}
-
-bool Editor::SelectionEmpty() {
- return anchor == currentPos;
-}
-
-int Editor::SelectionStart() {
- return Platform::Minimum(currentPos, anchor);
-}
-
-int Editor::SelectionEnd() {
- return Platform::Maximum(currentPos, anchor);
-}
-
-void Editor::SetRectangularRange() {
- if (selType == selRectangle) {
- xStartSelect = XFromPosition(anchor);
- xEndSelect = XFromPosition(currentPos);
- }
-}
-
-void Editor::InvalidateSelection(int currentPos_, int anchor_) {
- int firstAffected = anchor;
- if (firstAffected > currentPos)
- firstAffected = currentPos;
- if (firstAffected > anchor_)
- firstAffected = anchor_;
- if (firstAffected > currentPos_)
- firstAffected = currentPos_;
- int lastAffected = anchor;
- if (lastAffected < currentPos)
- lastAffected = currentPos;
- if (lastAffected < anchor_)
- lastAffected = anchor_;
- if (lastAffected < (currentPos_ + 1)) // +1 ensures caret repainted
- lastAffected = (currentPos_ + 1);
- needUpdateUI = true;
- InvalidateRange(firstAffected, lastAffected);
-}
-
-void Editor::SetSelection(int currentPos_, int anchor_) {
- currentPos_ = pdoc->ClampPositionIntoDocument(currentPos_);
- anchor_ = pdoc->ClampPositionIntoDocument(anchor_);
- if ((currentPos != currentPos_) || (anchor != anchor_)) {
- InvalidateSelection(currentPos_, anchor_);
- currentPos = currentPos_;
- anchor = anchor_;
- }
- SetRectangularRange();
- ClaimSelection();
-}
-
-void Editor::SetSelection(int currentPos_) {
- currentPos_ = pdoc->ClampPositionIntoDocument(currentPos_);
- if (currentPos != currentPos_) {
- InvalidateSelection(currentPos_, currentPos_);
- currentPos = currentPos_;
- }
- SetRectangularRange();
- ClaimSelection();
-}
-
-void Editor::SetEmptySelection(int currentPos_) {
- selType = selStream;
- moveExtendsSelection = false;
- SetSelection(currentPos_, currentPos_);
-}
-
-bool Editor::RangeContainsProtected(int start, int end) const {
- if (vs.ProtectionActive()) {
- if (start > end) {
- int t = start;
- start = end;
- end = t;
- }
- int mask = pdoc->stylingBitsMask;
- for (int pos = start; pos < end; pos++) {
- if (vs.styles[pdoc->StyleAt(pos) & mask].IsProtected())
- return true;
- }
- }
- return false;
-}
-
-bool Editor::SelectionContainsProtected() {
- // DONE, but untested...: make support rectangular selection
- bool scp = false;
- if (selType == selStream) {
- scp = RangeContainsProtected(anchor, currentPos);
- } else {
- SelectionLineIterator lineIterator(this);
- while (lineIterator.Iterate()) {
- if (RangeContainsProtected(lineIterator.startPos, lineIterator.endPos)) {
- scp = true;
- break;
- }
- }
- }
- return scp;
-}
-
-/**
- * Asks document to find a good position and then moves out of any invisible positions.
- */
-int Editor::MovePositionOutsideChar(int pos, int moveDir, bool checkLineEnd) {
- pos = pdoc->MovePositionOutsideChar(pos, moveDir, checkLineEnd);
- if (vs.ProtectionActive()) {
- int mask = pdoc->stylingBitsMask;
- if (moveDir > 0) {
- if ((pos > 0) && vs.styles[pdoc->StyleAt(pos - 1) & mask].IsProtected()) {
- while ((pos < pdoc->Length()) &&
- (vs.styles[pdoc->StyleAt(pos) & mask].IsProtected()))
- pos++;
- }
- } else if (moveDir < 0) {
- if (vs.styles[pdoc->StyleAt(pos) & mask].IsProtected()) {
- while ((pos > 0) &&
- (vs.styles[pdoc->StyleAt(pos - 1) & mask].IsProtected()))
- pos--;
- }
- }
- }
- return pos;
-}
-
-int Editor::MovePositionTo(int newPos, selTypes sel, bool ensureVisible) {
- int delta = newPos - currentPos;
- newPos = pdoc->ClampPositionIntoDocument(newPos);
- newPos = MovePositionOutsideChar(newPos, delta);
- if (sel != noSel) {
- selType = sel;
- }
- if (sel != noSel || moveExtendsSelection) {
- SetSelection(newPos);
- } else {
- SetEmptySelection(newPos);
- }
- ShowCaretAtCurrentPosition();
- if (ensureVisible) {
- EnsureCaretVisible();
- }
- NotifyMove(newPos);
- return 0;
-}
-
-int Editor::MovePositionSoVisible(int pos, int moveDir) {
- pos = pdoc->ClampPositionIntoDocument(pos);
- pos = MovePositionOutsideChar(pos, moveDir);
- int lineDoc = pdoc->LineFromPosition(pos);
- if (cs.GetVisible(lineDoc)) {
- return pos;
- } else {
- int lineDisplay = cs.DisplayFromDoc(lineDoc);
- if (moveDir > 0) {
- // lineDisplay is already line before fold as lines in fold use display line of line after fold
- lineDisplay = Platform::Clamp(lineDisplay, 0, cs.LinesDisplayed());
- return pdoc->LineStart(cs.DocFromDisplay(lineDisplay));
- } else {
- lineDisplay = Platform::Clamp(lineDisplay - 1, 0, cs.LinesDisplayed());
- return pdoc->LineEnd(cs.DocFromDisplay(lineDisplay));
- }
- }
-}
-
-/**
- * Choose the x position that the caret will try to stick to
- * as it moves up and down.
- */
-void Editor::SetLastXChosen() {
- Point pt = LocationFromPosition(currentPos);
- lastXChosen = pt.x;
-}
-
-void Editor::ScrollTo(int line, bool moveThumb) {
- int topLineNew = Platform::Clamp(line, 0, MaxScrollPos());
- if (topLineNew != topLine) {
- // Try to optimise small scrolls
- int linesToMove = topLine - topLineNew;
- SetTopLine(topLineNew);
- ShowCaretAtCurrentPosition();
- // Perform redraw rather than scroll if many lines would be redrawn anyway.
-#ifndef UNDER_CE
- if (abs(linesToMove) <= 10) {
- ScrollText(linesToMove);
- } else {
- Redraw();
- }
-#else
- Redraw();
-#endif
- if (moveThumb) {
- SetVerticalScrollPos();
- }
- }
-}
-
-void Editor::ScrollText(int /* linesToMove */) {
- //Platform::DebugPrintf("Editor::ScrollText %d\n", linesToMove);
- Redraw();
-}
-
-void Editor::HorizontalScrollTo(int xPos) {
- //Platform::DebugPrintf("HorizontalScroll %d\n", xPos);
- if (xPos < 0)
- xPos = 0;
- if ((wrapState == eWrapNone) && (xOffset != xPos)) {
- xOffset = xPos;
- SetHorizontalScrollPos();
- RedrawRect(GetClientRectangle());
- }
-}
-
-void Editor::MoveCaretInsideView(bool ensureVisible) {
- PRectangle rcClient = GetTextRectangle();
- Point pt = LocationFromPosition(currentPos);
- if (pt.y < rcClient.top) {
- MovePositionTo(PositionFromLocation(
- Point(lastXChosen, rcClient.top)),
- noSel, ensureVisible);
- } else if ((pt.y + vs.lineHeight - 1) > rcClient.bottom) {
- int yOfLastLineFullyDisplayed = rcClient.top + (LinesOnScreen() - 1) * vs.lineHeight;
- MovePositionTo(PositionFromLocation(
- Point(lastXChosen, rcClient.top + yOfLastLineFullyDisplayed)),
- noSel, ensureVisible);
- }
-}
-
-int Editor::DisplayFromPosition(int pos) {
- int lineDoc = pdoc->LineFromPosition(pos);
- int lineDisplay = cs.DisplayFromDoc(lineDoc);
- AutoSurface surface(this);
- AutoLineLayout ll(llc, RetrieveLineLayout(lineDoc));
- if (surface && ll) {
- LayoutLine(lineDoc, surface, vs, ll, wrapWidth);
- unsigned int posLineStart = pdoc->LineStart(lineDoc);
- int posInLine = pos - posLineStart;
- lineDisplay--; // To make up for first increment ahead.
- for (int subLine = 0; subLine < ll->lines; subLine++) {
- if (posInLine >= ll->LineStart(subLine)) {
- lineDisplay++;
- }
- }
- }
- return lineDisplay;
-}
-
-/**
- * Ensure the caret is reasonably visible in context.
- *
-Caret policy in SciTE
-
-If slop is set, we can define a slop value.
-This value defines an unwanted zone (UZ) where the caret is... unwanted.
-This zone is defined as a number of pixels near the vertical margins,
-and as a number of lines near the horizontal margins.
-By keeping the caret away from the edges, it is seen within its context,
-so it is likely that the identifier that the caret is on can be completely seen,
-and that the current line is seen with some of the lines following it which are
-often dependent on that line.
-
-If strict is set, the policy is enforced... strictly.
-The caret is centred on the display if slop is not set,
-and cannot go in the UZ if slop is set.
-
-If jumps is set, the display is moved more energetically
-so the caret can move in the same direction longer before the policy is applied again.
-'3UZ' notation is used to indicate three time the size of the UZ as a distance to the margin.
-
-If even is not set, instead of having symmetrical UZs,
-the left and bottom UZs are extended up to right and top UZs respectively.
-This way, we favour the displaying of useful information: the begining of lines,
-where most code reside, and the lines after the caret, eg. the body of a function.
-
- | | | | |
-slop | strict | jumps | even | Caret can go to the margin | When reaching limitÝ(caret going out of
- | | | | | visibility or going into the UZ) display is...
------+--------+-------+------+--------------------------------------------+--------------------------------------------------------------
- 0 | 0 | 0 | 0 | Yes | moved to put caret on top/on right
- 0 | 0 | 0 | 1 | Yes | moved by one position
- 0 | 0 | 1 | 0 | Yes | moved to put caret on top/on right
- 0 | 0 | 1 | 1 | Yes | centred on the caret
- 0 | 1 | - | 0 | Caret is always on top/on right of display | -
- 0 | 1 | - | 1 | No, caret is always centred | -
- 1 | 0 | 0 | 0 | Yes | moved to put caret out of the asymmetrical UZ
- 1 | 0 | 0 | 1 | Yes | moved to put caret out of the UZ
- 1 | 0 | 1 | 0 | Yes | moved to put caret at 3UZ of the top or right margin
- 1 | 0 | 1 | 1 | Yes | moved to put caret at 3UZ of the margin
- 1 | 1 | - | 0 | Caret is always at UZ of top/right margin | -
- 1 | 1 | 0 | 1 | No, kept out of UZ | moved by one position
- 1 | 1 | 1 | 1 | No, kept out of UZ | moved to put caret at 3UZ of the margin
-*/
-void Editor::EnsureCaretVisible(bool useMargin, bool vert, bool horiz) {
- //Platform::DebugPrintf("EnsureCaretVisible %d %s\n", xOffset, useMargin ? " margin" : " ");
- PRectangle rcClient = GetTextRectangle();
- //int rcClientFullWidth = rcClient.Width();
- int posCaret = currentPos;
- if (posDrag >= 0) {
- posCaret = posDrag;
- }
- Point pt = LocationFromPosition(posCaret);
- Point ptBottomCaret = pt;
- ptBottomCaret.y += vs.lineHeight - 1;
- int lineCaret = DisplayFromPosition(posCaret);
- bool bSlop, bStrict, bJump, bEven;
-
- // Vertical positioning
- if (vert && (pt.y < rcClient.top || ptBottomCaret.y > rcClient.bottom || (caretYPolicy & CARET_STRICT) != 0)) {
- int linesOnScreen = LinesOnScreen();
- int halfScreen = Platform::Maximum(linesOnScreen - 1, 2) / 2;
- int newTopLine = topLine;
- bSlop = (caretYPolicy & CARET_SLOP) != 0;
- bStrict = (caretYPolicy & CARET_STRICT) != 0;
- bJump = (caretYPolicy & CARET_JUMPS) != 0;
- bEven = (caretYPolicy & CARET_EVEN) != 0;
-
- // It should be possible to scroll the window to show the caret,
- // but this fails to remove the caret on GTK+
- if (bSlop) { // A margin is defined
- int yMoveT, yMoveB;
- if (bStrict) {
- int yMarginT, yMarginB;
- if (!useMargin) {
- // In drag mode, avoid moves
- // otherwise, a double click will select several lines.
- yMarginT = yMarginB = 0;
- } else {
- // yMarginT must equal to caretYSlop, with a minimum of 1 and
- // a maximum of slightly less than half the heigth of the text area.
- yMarginT = Platform::Clamp(caretYSlop, 1, halfScreen);
- if (bEven) {
- yMarginB = yMarginT;
- } else {
- yMarginB = linesOnScreen - yMarginT - 1;
- }
- }
- yMoveT = yMarginT;
- if (bEven) {
- if (bJump) {
- yMoveT = Platform::Clamp(caretYSlop * 3, 1, halfScreen);
- }
- yMoveB = yMoveT;
- } else {
- yMoveB = linesOnScreen - yMoveT - 1;
- }
- if (lineCaret < topLine + yMarginT) {
- // Caret goes too high
- newTopLine = lineCaret - yMoveT;
- } else if (lineCaret > topLine + linesOnScreen - 1 - yMarginB) {
- // Caret goes too low
- newTopLine = lineCaret - linesOnScreen + 1 + yMoveB;
- }
- } else { // Not strict
- yMoveT = bJump ? caretYSlop * 3 : caretYSlop;
- yMoveT = Platform::Clamp(yMoveT, 1, halfScreen);
- if (bEven) {
- yMoveB = yMoveT;
- } else {
- yMoveB = linesOnScreen - yMoveT - 1;
- }
- if (lineCaret < topLine) {
- // Caret goes too high
- newTopLine = lineCaret - yMoveT;
- } else if (lineCaret > topLine + linesOnScreen - 1) {
- // Caret goes too low
- newTopLine = lineCaret - linesOnScreen + 1 + yMoveB;
- }
- }
- } else { // No slop
- if (!bStrict && !bJump) {
- // Minimal move
- if (lineCaret < topLine) {
- // Caret goes too high
- newTopLine = lineCaret;
- } else if (lineCaret > topLine + linesOnScreen - 1) {
- // Caret goes too low
- if (bEven) {
- newTopLine = lineCaret - linesOnScreen + 1;
- } else {
- newTopLine = lineCaret;
- }
- }
- } else { // Strict or going out of display
- if (bEven) {
- // Always center caret
- newTopLine = lineCaret - halfScreen;
- } else {
- // Always put caret on top of display
- newTopLine = lineCaret;
- }
- }
- }
- newTopLine = Platform::Clamp(newTopLine, 0, MaxScrollPos());
- if (newTopLine != topLine) {
- Redraw();
- SetTopLine(newTopLine);
- SetVerticalScrollPos();
- }
- }
-
- // Horizontal positioning
- if (horiz && (wrapState == eWrapNone)) {
- int halfScreen = Platform::Maximum(rcClient.Width() - 4, 4) / 2;
- int xOffsetNew = xOffset;
- bSlop = (caretXPolicy & CARET_SLOP) != 0;
- bStrict = (caretXPolicy & CARET_STRICT) != 0;
- bJump = (caretXPolicy & CARET_JUMPS) != 0;
- bEven = (caretXPolicy & CARET_EVEN) != 0;
-
- if (bSlop) { // A margin is defined
- int xMoveL, xMoveR;
- if (bStrict) {
- int xMarginL, xMarginR;
- if (!useMargin) {
- // In drag mode, avoid moves unless very near of the margin
- // otherwise, a simple click will select text.
- xMarginL = xMarginR = 2;
- } else {
- // xMargin must equal to caretXSlop, with a minimum of 2 and
- // a maximum of slightly less than half the width of the text area.
- xMarginR = Platform::Clamp(caretXSlop, 2, halfScreen);
- if (bEven) {
- xMarginL = xMarginR;
- } else {
- xMarginL = rcClient.Width() - xMarginR - 4;
- }
- }
- if (bJump && bEven) {
- // Jump is used only in even mode
- xMoveL = xMoveR = Platform::Clamp(caretXSlop * 3, 1, halfScreen);
- } else {
- xMoveL = xMoveR = 0; // Not used, avoid a warning
- }
- if (pt.x < rcClient.left + xMarginL) {
- // Caret is on the left of the display
- if (bJump && bEven) {
- xOffsetNew -= xMoveL;
- } else {
- // Move just enough to allow to display the caret
- xOffsetNew -= (rcClient.left + xMarginL) - pt.x;
- }
- } else if (pt.x >= rcClient.right - xMarginR) {
- // Caret is on the right of the display
- if (bJump && bEven) {
- xOffsetNew += xMoveR;
- } else {
- // Move just enough to allow to display the caret
- xOffsetNew += pt.x - (rcClient.right - xMarginR) + 1;
- }
- }
- } else { // Not strict
- xMoveR = bJump ? caretXSlop * 3 : caretXSlop;
- xMoveR = Platform::Clamp(xMoveR, 1, halfScreen);
- if (bEven) {
- xMoveL = xMoveR;
- } else {
- xMoveL = rcClient.Width() - xMoveR - 4;
- }
- if (pt.x < rcClient.left) {
- // Caret is on the left of the display
- xOffsetNew -= xMoveL;
- } else if (pt.x >= rcClient.right) {
- // Caret is on the right of the display
- xOffsetNew += xMoveR;
- }
- }
- } else { // No slop
- if (bStrict ||
- (bJump && (pt.x < rcClient.left || pt.x >= rcClient.right))) {
- // Strict or going out of display
- if (bEven) {
- // Center caret
- xOffsetNew += pt.x - rcClient.left - halfScreen;
- } else {
- // Put caret on right
- xOffsetNew += pt.x - rcClient.right + 1;
- }
- } else {
- // Move just enough to allow to display the caret
- if (pt.x < rcClient.left) {
- // Caret is on the left of the display
- if (bEven) {
- xOffsetNew -= rcClient.left - pt.x;
- } else {
- xOffsetNew += pt.x - rcClient.right + 1;
- }
- } else if (pt.x >= rcClient.right) {
- // Caret is on the right of the display
- xOffsetNew += pt.x - rcClient.right + 1;
- }
- }
- }
- // In case of a jump (find result) largely out of display, adjust the offset to display the caret
- if (pt.x + xOffset < rcClient.left + xOffsetNew) {
- xOffsetNew = pt.x + xOffset - rcClient.left;
- } else if (pt.x + xOffset >= rcClient.right + xOffsetNew) {
- xOffsetNew = pt.x + xOffset - rcClient.right + 1;
- }
- if (xOffsetNew < 0) {
- xOffsetNew = 0;
- }
- if (xOffset != xOffsetNew) {
- xOffset = xOffsetNew;
- if (xOffsetNew > 0) {
- PRectangle rcText = GetTextRectangle();
- if (horizontalScrollBarVisible == true &&
- rcText.Width() + xOffset > scrollWidth) {
- scrollWidth = xOffset + rcText.Width();
- SetScrollBars();
- }
- }
- SetHorizontalScrollPos();
- Redraw();
- }
- }
- UpdateSystemCaret();
-}
-
-void Editor::ShowCaretAtCurrentPosition() {
- if (hasFocus) {
- caret.active = true;
- caret.on = true;
- SetTicking(true);
- } else {
- caret.active = false;
- caret.on = false;
- }
- InvalidateCaret();
-}
-
-void Editor::DropCaret() {
- caret.active = false;
- InvalidateCaret();
-}
-
-void Editor::InvalidateCaret() {
- if (posDrag >= 0)
- InvalidateRange(posDrag, posDrag + 1);
- else
- InvalidateRange(currentPos, currentPos + 1);
- UpdateSystemCaret();
-}
-
-void Editor::UpdateSystemCaret() {
-}
-
-void Editor::NeedWrapping(int docLineStart, int docLineEnd) {
- docLineStart = Platform::Clamp(docLineStart, 0, pdoc->LinesTotal());
- if (wrapStart > docLineStart) {
- wrapStart = docLineStart;
- llc.Invalidate(LineLayout::llPositions);
- }
- if (wrapEnd < docLineEnd) {
- wrapEnd = docLineEnd;
- }
- wrapEnd = Platform::Clamp(wrapEnd, 0, pdoc->LinesTotal());
- // Wrap lines during idle.
- if ((wrapState != eWrapNone) && (wrapEnd != wrapStart)) {
- SetIdle(true);
- }
-}
-
-// Check if wrapping needed and perform any needed wrapping.
-// fullwrap: if true, all lines which need wrapping will be done,
-// in this single call.
-// priorityWrapLineStart: If greater than zero, all lines starting from
-// here to 1 page + 100 lines past will be wrapped (even if there are
-// more lines under wrapping process in idle).
-// If it is neither fullwrap, nor priorityWrap, then 1 page + 100 lines will be
-// wrapped, if there are any wrapping going on in idle. (Generally this
-// condition is called only from idler).
-// Return true if wrapping occurred.
-bool Editor::WrapLines(bool fullWrap, int priorityWrapLineStart) {
- // If there are any pending wraps, do them during idle if possible.
- int linesInOneCall = LinesOnScreen() + 100;
- if (wrapState != eWrapNone) {
- if (wrapStart < wrapEnd) {
- if (!SetIdle(true)) {
- // Idle processing not supported so full wrap required.
- fullWrap = true;
- }
- }
- if (!fullWrap && priorityWrapLineStart >= 0 &&
- // .. and if the paint window is outside pending wraps
- (((priorityWrapLineStart + linesInOneCall) < wrapStart) ||
- (priorityWrapLineStart > wrapEnd))) {
- // No priority wrap pending
- return false;
- }
- }
- int goodTopLine = topLine;
- bool wrapOccurred = false;
- if (wrapStart <= pdoc->LinesTotal()) {
- if (wrapState == eWrapNone) {
- if (wrapWidth != LineLayout::wrapWidthInfinite) {
- wrapWidth = LineLayout::wrapWidthInfinite;
- for (int lineDoc = 0; lineDoc < pdoc->LinesTotal(); lineDoc++) {
- cs.SetHeight(lineDoc, 1);
- }
- wrapOccurred = true;
- }
- wrapStart = wrapLineLarge;
- wrapEnd = wrapLineLarge;
- } else {
- if (wrapEnd >= pdoc->LinesTotal())
- wrapEnd = pdoc->LinesTotal();
- //ElapsedTime et;
- int lineDocTop = cs.DocFromDisplay(topLine);
- int subLineTop = topLine - cs.DisplayFromDoc(lineDocTop);
- PRectangle rcTextArea = GetClientRectangle();
- rcTextArea.left = vs.fixedColumnWidth;
- rcTextArea.right -= vs.rightMarginWidth;
- wrapWidth = rcTextArea.Width();
- // Ensure all of the document is styled.
- pdoc->EnsureStyledTo(pdoc->Length());
- RefreshStyleData();
- AutoSurface surface(this);
- if (surface) {
- bool priorityWrap = false;
- int lastLineToWrap = wrapEnd;
- int lineToWrap = wrapStart;
- if (!fullWrap) {
- if (priorityWrapLineStart >= 0) {
- // This is a priority wrap.
- lineToWrap = priorityWrapLineStart;
- lastLineToWrap = priorityWrapLineStart + linesInOneCall;
- priorityWrap = true;
- } else {
- // This is idle wrap.
- lastLineToWrap = wrapStart + linesInOneCall;
- }
- if (lastLineToWrap >= wrapEnd)
- lastLineToWrap = wrapEnd;
- } // else do a fullWrap.
-
- // Platform::DebugPrintf("Wraplines: full = %d, priorityStart = %d (wrapping: %d to %d)\n", fullWrap, priorityWrapLineStart, lineToWrap, lastLineToWrap);
- // Platform::DebugPrintf("Pending wraps: %d to %d\n", wrapStart, wrapEnd);
- while (lineToWrap < lastLineToWrap) {
- AutoLineLayout ll(llc, RetrieveLineLayout(lineToWrap));
- int linesWrapped = 1;
- if (ll) {
- LayoutLine(lineToWrap, surface, vs, ll, wrapWidth);
- linesWrapped = ll->lines;
- }
- if (cs.SetHeight(lineToWrap, linesWrapped)) {
- wrapOccurred = true;
- }
- lineToWrap++;
- }
- if (!priorityWrap)
- wrapStart = lineToWrap;
- // If wrapping is done, bring it to resting position
- if (wrapStart >= wrapEnd) {
- wrapStart = wrapLineLarge;
- wrapEnd = wrapLineLarge;
- }
- }
- goodTopLine = cs.DisplayFromDoc(lineDocTop);
- if (subLineTop < cs.GetHeight(lineDocTop))
- goodTopLine += subLineTop;
- else
- goodTopLine += cs.GetHeight(lineDocTop);
- //double durWrap = et.Duration(true);
- //Platform::DebugPrintf("Wrap:%9.6g \n", durWrap);
- }
- }
- if (wrapOccurred) {
- SetScrollBars();
- SetTopLine(Platform::Clamp(goodTopLine, 0, MaxScrollPos()));
- SetVerticalScrollPos();
- }
- return wrapOccurred;
-}
-
-void Editor::LinesJoin() {
- if (!RangeContainsProtected(targetStart, targetEnd)) {
- pdoc->BeginUndoAction();
- bool prevNonWS = true;
- for (int pos = targetStart; pos < targetEnd; pos++) {
- if (IsEOLChar(pdoc->CharAt(pos))) {
- targetEnd -= pdoc->LenChar(pos);
- pdoc->DelChar(pos);
- if (prevNonWS) {
- // Ensure at least one space separating previous lines
- pdoc->InsertChar(pos, ' ');
- }
- } else {
- prevNonWS = pdoc->CharAt(pos) != ' ';
- }
- }
- pdoc->EndUndoAction();
- }
-}
-
-const char *StringFromEOLMode(int eolMode) {
- if (eolMode == SC_EOL_CRLF) {
- return "\r\n";
- } else if (eolMode == SC_EOL_CR) {
- return "\r";
- } else {
- return "\n";
- }
-}
-
-void Editor::LinesSplit(int pixelWidth) {
- if (!RangeContainsProtected(targetStart, targetEnd)) {
- if (pixelWidth == 0) {
- PRectangle rcText = GetTextRectangle();
- pixelWidth = rcText.Width();
- }
- int lineStart = pdoc->LineFromPosition(targetStart);
- int lineEnd = pdoc->LineFromPosition(targetEnd);
- const char *eol = StringFromEOLMode(pdoc->eolMode);
- pdoc->BeginUndoAction();
- for (int line = lineStart; line <= lineEnd; line++) {
- AutoSurface surface(this);
- AutoLineLayout ll(llc, RetrieveLineLayout(line));
- if (surface && ll) {
- unsigned int posLineStart = pdoc->LineStart(line);
- LayoutLine(line, surface, vs, ll, pixelWidth);
- for (int subLine = 1; subLine < ll->lines; subLine++) {
- pdoc->InsertString(posLineStart + (subLine - 1) * strlen(eol) +
- ll->LineStart(subLine), eol);
- targetEnd += static_cast(strlen(eol));
- }
- }
- lineEnd = pdoc->LineFromPosition(targetEnd);
- }
- pdoc->EndUndoAction();
- }
-}
-
-int Editor::SubstituteMarkerIfEmpty(int markerCheck, int markerDefault) {
- if (vs.markers[markerCheck].markType == SC_MARK_EMPTY)
- return markerDefault;
- return markerCheck;
-}
-
-// Avoid 64 bit compiler warnings.
-// Scintilla does not support text buffers larger than 2**31
-static int istrlen(const char *s) {
- return static_cast(strlen(s));
-}
-
-void Editor::PaintSelMargin(Surface *surfWindow, PRectangle &rc) {
- if (vs.fixedColumnWidth == 0)
- return;
-
- PRectangle rcMargin = GetClientRectangle();
- rcMargin.right = vs.fixedColumnWidth;
-
- if (!rc.Intersects(rcMargin))
- return;
-
- Surface *surface;
- if (bufferedDraw) {
- surface = pixmapSelMargin;
- } else {
- surface = surfWindow;
- }
-
- PRectangle rcSelMargin = rcMargin;
- rcSelMargin.right = rcMargin.left;
-
- for (int margin = 0; margin < vs.margins; margin++) {
- if (vs.ms[margin].width > 0) {
-
- rcSelMargin.left = rcSelMargin.right;
- rcSelMargin.right = rcSelMargin.left + vs.ms[margin].width;
-
- if (vs.ms[margin].style != SC_MARGIN_NUMBER) {
- /* alternate scheme:
- if (vs.ms[margin].mask & SC_MASK_FOLDERS)
- surface->FillRectangle(rcSelMargin, vs.styles[STYLE_DEFAULT].back.allocated);
- else
- // Required because of special way brush is created for selection margin
- surface->FillRectangle(rcSelMargin, pixmapSelPattern);
- */
- if (vs.ms[margin].mask & SC_MASK_FOLDERS)
- // Required because of special way brush is created for selection margin
- surface->FillRectangle(rcSelMargin, *pixmapSelPattern);
- else {
- ColourAllocated colour;
- switch (vs.ms[margin].style) {
- case SC_MARGIN_BACK:
- colour = vs.styles[STYLE_DEFAULT].back.allocated;
- break;
- case SC_MARGIN_FORE:
- colour = vs.styles[STYLE_DEFAULT].fore.allocated;
- break;
- default:
- colour = vs.styles[STYLE_LINENUMBER].back.allocated;
- break;
- }
- surface->FillRectangle(rcSelMargin, colour);
- }
- } else {
- surface->FillRectangle(rcSelMargin, vs.styles[STYLE_LINENUMBER].back.allocated);
- }
-
- int visibleLine = topLine;
- int yposScreen = 0;
-
- // Work out whether the top line is whitespace located after a
- // lessening of fold level which implies a 'fold tail' but which should not
- // be displayed until the last of a sequence of whitespace.
- bool needWhiteClosure = false;
- int level = pdoc->GetLevel(cs.DocFromDisplay(topLine));
- if (level & SC_FOLDLEVELWHITEFLAG) {
- int lineBack = cs.DocFromDisplay(topLine);
- int levelPrev = level;
- while ((lineBack > 0) && (levelPrev & SC_FOLDLEVELWHITEFLAG)) {
- lineBack--;
- levelPrev = pdoc->GetLevel(lineBack);
- }
- if (!(levelPrev & SC_FOLDLEVELHEADERFLAG)) {
- if ((level & SC_FOLDLEVELNUMBERMASK) < (levelPrev & SC_FOLDLEVELNUMBERMASK))
- needWhiteClosure = true;
- }
- }
-
- // Old code does not know about new markers needed to distinguish all cases
- int folderOpenMid = SubstituteMarkerIfEmpty(SC_MARKNUM_FOLDEROPENMID,
- SC_MARKNUM_FOLDEROPEN);
- int folderEnd = SubstituteMarkerIfEmpty(SC_MARKNUM_FOLDEREND,
- SC_MARKNUM_FOLDER);
-
- while ((visibleLine < cs.LinesDisplayed()) && yposScreen < rcMargin.bottom) {
-
- PLATFORM_ASSERT(visibleLine < cs.LinesDisplayed());
-
- int lineDoc = cs.DocFromDisplay(visibleLine);
- PLATFORM_ASSERT(cs.GetVisible(lineDoc));
- bool firstSubLine = visibleLine == cs.DisplayFromDoc(lineDoc);
-
- // Decide which fold indicator should be displayed
- level = pdoc->GetLevel(lineDoc);
- int levelNext = pdoc->GetLevel(lineDoc + 1);
- int marks = pdoc->GetMark(lineDoc);
- if (!firstSubLine)
- marks = 0;
- int levelNum = level & SC_FOLDLEVELNUMBERMASK;
- int levelNextNum = levelNext & SC_FOLDLEVELNUMBERMASK;
- if (level & SC_FOLDLEVELHEADERFLAG) {
- if (firstSubLine) {
- if (cs.GetExpanded(lineDoc)) {
- if (levelNum == SC_FOLDLEVELBASE)
- marks |= 1 << SC_MARKNUM_FOLDEROPEN;
- else
- marks |= 1 << folderOpenMid;
- } else {
- if (levelNum == SC_FOLDLEVELBASE)
- marks |= 1 << SC_MARKNUM_FOLDER;
- else
- marks |= 1 << folderEnd;
- }
- } else {
- marks |= 1 << SC_MARKNUM_FOLDERSUB;
- }
- needWhiteClosure = false;
- } else if (level & SC_FOLDLEVELWHITEFLAG) {
- if (needWhiteClosure) {
- if (levelNext & SC_FOLDLEVELWHITEFLAG) {
- marks |= 1 << SC_MARKNUM_FOLDERSUB;
- } else if (levelNum > SC_FOLDLEVELBASE) {
- marks |= 1 << SC_MARKNUM_FOLDERMIDTAIL;
- needWhiteClosure = false;
- } else {
- marks |= 1 << SC_MARKNUM_FOLDERTAIL;
- needWhiteClosure = false;
- }
- } else if (levelNum > SC_FOLDLEVELBASE) {
- if (levelNextNum < levelNum) {
- if (levelNextNum > SC_FOLDLEVELBASE) {
- marks |= 1 << SC_MARKNUM_FOLDERMIDTAIL;
- } else {
- marks |= 1 << SC_MARKNUM_FOLDERTAIL;
- }
- } else {
- marks |= 1 << SC_MARKNUM_FOLDERSUB;
- }
- }
- } else if (levelNum > SC_FOLDLEVELBASE) {
- if (levelNextNum < levelNum) {
- needWhiteClosure = false;
- if (levelNext & SC_FOLDLEVELWHITEFLAG) {
- marks |= 1 << SC_MARKNUM_FOLDERSUB;
- needWhiteClosure = true;
- } else if (levelNextNum > SC_FOLDLEVELBASE) {
- marks |= 1 << SC_MARKNUM_FOLDERMIDTAIL;
- } else {
- marks |= 1 << SC_MARKNUM_FOLDERTAIL;
- }
- } else {
- marks |= 1 << SC_MARKNUM_FOLDERSUB;
- }
- }
-
- marks &= vs.ms[margin].mask;
- PRectangle rcMarker = rcSelMargin;
- rcMarker.top = yposScreen;
- rcMarker.bottom = yposScreen + vs.lineHeight;
- if (vs.ms[margin].style == SC_MARGIN_NUMBER) {
- char number[100];
- number[0] = '\0';
- if (firstSubLine)
- sprintf(number, "%d", lineDoc + 1);
- if (foldFlags & SC_FOLDFLAG_LEVELNUMBERS) {
- int lev = pdoc->GetLevel(lineDoc);
- sprintf(number, "%c%c %03X %03X",
- (lev & SC_FOLDLEVELHEADERFLAG) ? 'H' : '_',
- (lev & SC_FOLDLEVELWHITEFLAG) ? 'W' : '_',
- lev & SC_FOLDLEVELNUMBERMASK,
- lev >> 16
- );
- }
- PRectangle rcNumber = rcMarker;
- // Right justify
- int width = surface->WidthText(vs.styles[STYLE_LINENUMBER].font, number, istrlen(number));
- int xpos = rcNumber.right - width - 3;
- rcNumber.left = xpos;
- surface->DrawTextNoClip(rcNumber, vs.styles[STYLE_LINENUMBER].font,
- rcNumber.top + vs.maxAscent, number, istrlen(number),
- vs.styles[STYLE_LINENUMBER].fore.allocated,
- vs.styles[STYLE_LINENUMBER].back.allocated);
- }
-
- if (marks) {
- for (int markBit = 0; (markBit < 32) && marks; markBit++) {
- if (marks & 1) {
- vs.markers[markBit].Draw(surface, rcMarker, vs.styles[STYLE_LINENUMBER].font);
- }
- marks >>= 1;
- }
- }
-
- visibleLine++;
- yposScreen += vs.lineHeight;
- }
- }
- }
-
- PRectangle rcBlankMargin = rcMargin;
- rcBlankMargin.left = rcSelMargin.right;
- surface->FillRectangle(rcBlankMargin, vs.styles[STYLE_DEFAULT].back.allocated);
-
- if (bufferedDraw) {
- surfWindow->Copy(rcMargin, Point(), *pixmapSelMargin);
- }
-}
-
-void DrawTabArrow(Surface *surface, PRectangle rcTab, int ymid) {
- int ydiff = (rcTab.bottom - rcTab.top) / 2;
- int xhead = rcTab.right - 1 - ydiff;
- if (xhead <= rcTab.left) {
- ydiff -= rcTab.left - xhead - 1;
- xhead = rcTab.left - 1;
- }
- if ((rcTab.left + 2) < (rcTab.right - 1))
- surface->MoveTo(rcTab.left + 2, ymid);
- else
- surface->MoveTo(rcTab.right - 1, ymid);
- surface->LineTo(rcTab.right - 1, ymid);
- surface->LineTo(xhead, ymid - ydiff);
- surface->MoveTo(rcTab.right - 1, ymid);
- surface->LineTo(xhead, ymid + ydiff);
-}
-
-static bool IsSpaceOrTab(char ch) {
- return ch == ' ' || ch == '\t';
-}
-
-LineLayout *Editor::RetrieveLineLayout(int lineNumber) {
- int posLineStart = pdoc->LineStart(lineNumber);
- int posLineEnd = pdoc->LineStart(lineNumber + 1);
- int lineCaret = pdoc->LineFromPosition(currentPos);
- return llc.Retrieve(lineNumber, lineCaret,
- posLineEnd - posLineStart, pdoc->GetStyleClock(),
- LinesOnScreen() + 1, pdoc->LinesTotal());
-}
-
-/**
- * Fill in the LineLayout data for the given line.
- * Copy the given @a line and its styles from the document into local arrays.
- * Also determine the x position at which each character starts.
- */
-void Editor::LayoutLine(int line, Surface *surface, ViewStyle &vstyle, LineLayout *ll, int width) {
- if (!ll)
- return;
- PLATFORM_ASSERT(line < pdoc->LinesTotal());
- int posLineStart = pdoc->LineStart(line);
- int posLineEnd = pdoc->LineStart(line + 1);
- // If the line is very long, limit the treatment to a length that should fit in the viewport
- if (posLineEnd > (posLineStart + ll->maxLineLength)) {
- posLineEnd = posLineStart + ll->maxLineLength;
- }
- if (ll->validity == LineLayout::llCheckTextAndStyle) {
- int lineLength = posLineEnd - posLineStart;
- if (!vstyle.viewEOL) {
- int cid = posLineEnd - 1;
- while ((cid > posLineStart) && IsEOLChar(pdoc->CharAt(cid))) {
- cid--;
- lineLength--;
- }
- }
- if (lineLength == ll->numCharsInLine) {
- // See if chars, styles, indicators, are all the same
- bool allSame = true;
- const int styleMask = pdoc->stylingBitsMask;
- // Check base line layout
- char styleByte = 0;
- int numCharsInLine = 0;
- while (numCharsInLine < lineLength) {
- int charInDoc = numCharsInLine + posLineStart;
- char chDoc = pdoc->CharAt(charInDoc);
- styleByte = pdoc->StyleAt(charInDoc);
- allSame = allSame &&
- (ll->styles[numCharsInLine] == static_cast(styleByte & styleMask));
- allSame = allSame &&
- (ll->indicators[numCharsInLine] == static_cast(styleByte & ~styleMask));
- if (vstyle.styles[ll->styles[numCharsInLine]].caseForce == Style::caseMixed)
- allSame = allSame &&
- (ll->chars[numCharsInLine] == chDoc);
- else if (vstyle.styles[ll->styles[numCharsInLine]].caseForce == Style::caseLower)
- allSame = allSame &&
- (ll->chars[numCharsInLine] == static_cast(tolower(chDoc)));
- else // Style::caseUpper
- allSame = allSame &&
- (ll->chars[numCharsInLine] == static_cast(toupper(chDoc)));
- numCharsInLine++;
- }
- allSame = allSame && (ll->styles[numCharsInLine] == styleByte); // For eolFilled
- if (allSame) {
- ll->validity = LineLayout::llPositions;
- } else {
- ll->validity = LineLayout::llInvalid;
- }
- } else {
- ll->validity = LineLayout::llInvalid;
- }
- }
- if (ll->validity == LineLayout::llInvalid) {
- ll->widthLine = LineLayout::wrapWidthInfinite;
- ll->lines = 1;
- int numCharsInLine = 0;
- if (vstyle.edgeState == EDGE_BACKGROUND) {
- ll->edgeColumn = pdoc->FindColumn(line, theEdge);
- if (ll->edgeColumn >= posLineStart) {
- ll->edgeColumn -= posLineStart;
- }
- } else {
- ll->edgeColumn = -1;
- }
-
- char styleByte = 0;
- int styleMask = pdoc->stylingBitsMask;
- ll->styleBitsSet = 0;
- // Fill base line layout
- for (int charInDoc = posLineStart; charInDoc < posLineEnd; charInDoc++) {
- char chDoc = pdoc->CharAt(charInDoc);
- styleByte = pdoc->StyleAt(charInDoc);
- ll->styleBitsSet |= styleByte;
- if (vstyle.viewEOL || (!IsEOLChar(chDoc))) {
- ll->chars[numCharsInLine] = chDoc;
- ll->styles[numCharsInLine] = static_cast(styleByte & styleMask);
- ll->indicators[numCharsInLine] = static_cast(styleByte & ~styleMask);
- if (vstyle.styles[ll->styles[numCharsInLine]].caseForce == Style::caseUpper)
- ll->chars[numCharsInLine] = static_cast(toupper(chDoc));
- else if (vstyle.styles[ll->styles[numCharsInLine]].caseForce == Style::caseLower)
- ll->chars[numCharsInLine] = static_cast(tolower(chDoc));
- numCharsInLine++;
- }
- }
- ll->xHighlightGuide = 0;
- // Extra element at the end of the line to hold end x position and act as
- ll->chars[numCharsInLine] = 0; // Also triggers processing in the loops as this is a control character
- ll->styles[numCharsInLine] = styleByte; // For eolFilled
- ll->indicators[numCharsInLine] = 0;
-
- // Layout the line, determining the position of each character,
- // with an extra element at the end for the end of the line.
- int startseg = 0; // Start of the current segment, in char. number
- int startsegx = 0; // Start of the current segment, in pixels
- ll->positions[0] = 0;
- unsigned int tabWidth = vstyle.spaceWidth * pdoc->tabInChars;
- bool lastSegItalics = false;
- Font &ctrlCharsFont = vstyle.styles[STYLE_CONTROLCHAR].font;
-
- int ctrlCharWidth[32] = {0};
- bool isControlNext = IsControlCharacter(ll->chars[0]);
- for (int charInLine = 0; charInLine < numCharsInLine; charInLine++) {
- bool isControl = isControlNext;
- isControlNext = IsControlCharacter(ll->chars[charInLine + 1]);
- if ((ll->styles[charInLine] != ll->styles[charInLine + 1]) ||
- isControl || isControlNext) {
- ll->positions[startseg] = 0;
- if (vstyle.styles[ll->styles[charInLine]].visible) {
- if (isControl) {
- if (ll->chars[charInLine] == '\t') {
- ll->positions[charInLine + 1] = ((((startsegx + 2) /
- tabWidth) + 1) * tabWidth) - startsegx;
- } else if (controlCharSymbol < 32) {
- if (ctrlCharWidth[ll->chars[charInLine]] == 0) {
- const char *ctrlChar = ControlCharacterString(ll->chars[charInLine]);
- // +3 For a blank on front and rounded edge each side:
- ctrlCharWidth[ll->chars[charInLine]] =
- surface->WidthText(ctrlCharsFont, ctrlChar, istrlen(ctrlChar)) + 3;
- }
- ll->positions[charInLine + 1] = ctrlCharWidth[ll->chars[charInLine]];
- } else {
- char cc[2] = { static_cast(controlCharSymbol), '\0' };
- surface->MeasureWidths(ctrlCharsFont, cc, 1,
- ll->positions + startseg + 1);
- }
- lastSegItalics = false;
- } else { // Regular character
- int lenSeg = charInLine - startseg + 1;
- if ((lenSeg == 1) && (' ' == ll->chars[startseg])) {
- lastSegItalics = false;
- // Over half the segments are single characters and of these about half are space characters.
- ll->positions[charInLine + 1] = vstyle.styles[ll->styles[charInLine]].spaceWidth;
- } else {
- lastSegItalics = vstyle.styles[ll->styles[charInLine]].italic;
- surface->MeasureWidths(vstyle.styles[ll->styles[charInLine]].font, ll->chars + startseg,
- lenSeg, ll->positions + startseg + 1);
- }
- }
- } else { // invisible
- for (int posToZero = startseg; posToZero <= (charInLine + 1); posToZero++) {
- ll->positions[posToZero] = 0;
- }
- }
- for (int posToIncrease = startseg; posToIncrease <= (charInLine + 1); posToIncrease++) {
- ll->positions[posToIncrease] += startsegx;
- }
- startsegx = ll->positions[charInLine + 1];
- startseg = charInLine + 1;
- }
- }
- // Small hack to make lines that end with italics not cut off the edge of the last character
- if ((startseg > 0) && lastSegItalics) {
- ll->positions[startseg] += 2;
- }
- ll->numCharsInLine = numCharsInLine;
- ll->validity = LineLayout::llPositions;
- }
- // Hard to cope when too narrow, so just assume there is space
- if (width < 20) {
- width = 20;
- }
- if ((ll->validity == LineLayout::llPositions) || (ll->widthLine != width)) {
- ll->widthLine = width;
- if (width == LineLayout::wrapWidthInfinite) {
- ll->lines = 1;
- } else if (width > ll->positions[ll->numCharsInLine]) {
- // Simple common case where line does not need wrapping.
- ll->lines = 1;
- } else {
- if (wrapVisualFlags & SC_WRAPVISUALFLAG_END) {
- width -= vstyle.aveCharWidth; // take into account the space for end wrap mark
- }
- ll->lines = 0;
- // Calculate line start positions based upon width.
- // For now this is simplistic - wraps on byte rather than character and
- // in the middle of words. Should search for spaces or style changes.
- int lastGoodBreak = 0;
- int lastLineStart = 0;
- int startOffset = 0;
- int p = 0;
- while (p < ll->numCharsInLine) {
- if ((ll->positions[p + 1] - startOffset) >= width) {
- if (lastGoodBreak == lastLineStart) {
- // Try moving to start of last character
- if (p > 0) {
- lastGoodBreak = pdoc->MovePositionOutsideChar(p + posLineStart, -1)
- - posLineStart;
- }
- if (lastGoodBreak == lastLineStart) {
- // Ensure at least one character on line.
- lastGoodBreak = pdoc->MovePositionOutsideChar(lastGoodBreak + posLineStart + 1, 1)
- - posLineStart;
- }
- }
- lastLineStart = lastGoodBreak;
- ll->lines++;
- ll->SetLineStart(ll->lines, lastGoodBreak);
- startOffset = ll->positions[lastGoodBreak];
- // take into account the space for start wrap mark and indent
- startOffset -= actualWrapVisualStartIndent * vstyle.aveCharWidth;
- p = lastGoodBreak + 1;
- continue;
- }
- if (p > 0) {
- if (wrapState == eWrapChar) {
- lastGoodBreak = pdoc->MovePositionOutsideChar(p + posLineStart, -1)
- - posLineStart;
- p = pdoc->MovePositionOutsideChar(p + 1 + posLineStart, 1) - posLineStart;
- continue;
- } else if (ll->styles[p] != ll->styles[p - 1]) {
- lastGoodBreak = p;
- } else if (IsSpaceOrTab(ll->chars[p - 1]) && !IsSpaceOrTab(ll->chars[p])) {
- lastGoodBreak = p;
- }
- }
- p++;
- }
- ll->lines++;
- }
- ll->validity = LineLayout::llLines;
- }
-}
-
-ColourAllocated Editor::SelectionBackground(ViewStyle &vsDraw) {
- return primarySelection ? vsDraw.selbackground.allocated : vsDraw.selbackground2.allocated;
-}
-
-ColourAllocated Editor::TextBackground(ViewStyle &vsDraw, bool overrideBackground,
- ColourAllocated background, bool inSelection, bool inHotspot, int styleMain, int i, LineLayout *ll) {
- if (inSelection) {
- if (vsDraw.selbackset && (vsDraw.selAlpha == SC_ALPHA_NOALPHA)) {
- return SelectionBackground(vsDraw);
- }
- } else {
- if ((vsDraw.edgeState == EDGE_BACKGROUND) &&
- (i >= ll->edgeColumn) &&
- !IsEOLChar(ll->chars[i]))
- return vsDraw.edgecolour.allocated;
- if (inHotspot && vsDraw.hotspotBackgroundSet)
- return vsDraw.hotspotBackground.allocated;
- if (overrideBackground)
- return background;
- }
- return vsDraw.styles[styleMain].back.allocated;
-}
-
-void Editor::DrawIndentGuide(Surface *surface, int lineVisible, int lineHeight, int start, PRectangle rcSegment, bool highlight) {
- Point from(0, ((lineVisible & 1) && (lineHeight & 1)) ? 1 : 0);
- PRectangle rcCopyArea(start + 1, rcSegment.top, start + 2, rcSegment.bottom);
- surface->Copy(rcCopyArea, from,
- highlight ? *pixmapIndentGuideHighlight : *pixmapIndentGuide);
-}
-
-void Editor::DrawWrapMarker(Surface *surface, PRectangle rcPlace,
- bool isEndMarker, ColourAllocated wrapColour) {
- surface->PenColour(wrapColour);
-
- enum { xa = 1 }; // gap before start
- int w = rcPlace.right - rcPlace.left - xa - 1;
-
- bool xStraight = isEndMarker; // x-mirrored symbol for start marker
- bool yStraight = true;
- //bool yStraight= isEndMarker; // comment in for start marker y-mirrowed
-
- int x0 = xStraight ? rcPlace.left : rcPlace.right - 1;
- int y0 = yStraight ? rcPlace.top : rcPlace.bottom - 1;
-
- int dy = (rcPlace.bottom - rcPlace.top) / 5;
- int y = (rcPlace.bottom - rcPlace.top) / 2 + dy;
-
- struct Relative {
- Surface *surface;
- int xBase;
- int xDir;
- int yBase;
- int yDir;
- void MoveTo(int xRelative, int yRelative) {
- surface->MoveTo(xBase + xDir * xRelative, yBase + yDir * yRelative);
- }
- void LineTo(int xRelative, int yRelative) {
- surface->LineTo(xBase + xDir * xRelative, yBase + yDir * yRelative);
- }
- };
- Relative rel = {surface, x0, xStraight ? 1 : -1, y0, yStraight ? 1 : -1};
-
- // arrow head
- rel.MoveTo(xa, y);
- rel.LineTo(xa + 2*w / 3, y - dy);
- rel.MoveTo(xa, y);
- rel.LineTo(xa + 2*w / 3, y + dy);
-
- // arrow body
- rel.MoveTo(xa, y);
- rel.LineTo(xa + w, y);
- rel.LineTo(xa + w, y - 2 * dy);
- rel.LineTo(xa - 1, // on windows lineto is exclusive endpoint, perhaps GTK not...
- y - 2 * dy);
-}
-
-static void SimpleAlphaRectangle(Surface *surface, PRectangle rc, ColourAllocated fill, int alpha) {
- if (alpha != SC_ALPHA_NOALPHA) {
- surface->AlphaRectangle(rc, 0, fill, alpha, fill, alpha, 0);
- }
-}
-
-void Editor::DrawEOL(Surface *surface, ViewStyle &vsDraw, PRectangle rcLine, LineLayout *ll,
- int line, int lineEnd, int xStart, int subLine, int subLineStart,
- bool overrideBackground, ColourAllocated background,
- bool drawWrapMarkEnd, ColourAllocated wrapColour) {
-
- int styleMask = pdoc->stylingBitsMask;
- PRectangle rcSegment = rcLine;
-
- // Fill in a PRectangle representing the end of line characters
- int xEol = ll->positions[lineEnd] - subLineStart;
- rcSegment.left = xEol + xStart;
- rcSegment.right = xEol + vsDraw.aveCharWidth + xStart;
- int posLineEnd = pdoc->LineStart(line + 1);
- bool eolInSelection = (subLine == (ll->lines - 1)) &&
- (posLineEnd > ll->selStart) && (posLineEnd <= ll->selEnd) && (ll->selStart != ll->selEnd);
-
- if (eolInSelection && vsDraw.selbackset && (line < pdoc->LinesTotal() - 1) && (vsDraw.selAlpha == SC_ALPHA_NOALPHA)) {
- surface->FillRectangle(rcSegment, SelectionBackground(vsDraw));
- } else {
- if (overrideBackground) {
- surface->FillRectangle(rcSegment, background);
- } else {
- surface->FillRectangle(rcSegment, vsDraw.styles[ll->styles[ll->numCharsInLine] & styleMask].back.allocated);
- }
- if (eolInSelection && vsDraw.selbackset && (line < pdoc->LinesTotal() - 1) && (vsDraw.selAlpha != SC_ALPHA_NOALPHA)) {
- SimpleAlphaRectangle(surface, rcSegment, SelectionBackground(vsDraw), vsDraw.selAlpha);
- }
- }
-
- rcSegment.left = xEol + vsDraw.aveCharWidth + xStart;
- rcSegment.right = rcLine.right;
- if (overrideBackground) {
- surface->FillRectangle(rcSegment, background);
- } else if (vsDraw.styles[ll->styles[ll->numCharsInLine] & styleMask].eolFilled) {
- surface->FillRectangle(rcSegment, vsDraw.styles[ll->styles[ll->numCharsInLine] & styleMask].back.allocated);
- } else {
- surface->FillRectangle(rcSegment, vsDraw.styles[STYLE_DEFAULT].back.allocated);
- }
-
- if (drawWrapMarkEnd) {
- PRectangle rcPlace = rcSegment;
-
- if (wrapVisualFlagsLocation & SC_WRAPVISUALFLAGLOC_END_BY_TEXT) {
- rcPlace.left = xEol + xStart;
- rcPlace.right = rcPlace.left + vsDraw.aveCharWidth;
- } else {
- // draw left of the right text margin, to avoid clipping by the current clip rect
- rcPlace.right = rcLine.right - vs.rightMarginWidth;
- rcPlace.left = rcPlace.right - vsDraw.aveCharWidth;
- }
- DrawWrapMarker(surface, rcPlace, true, wrapColour);
- }
-}
-
-void Editor::DrawLine(Surface *surface, ViewStyle &vsDraw, int line, int lineVisible, int xStart,
- PRectangle rcLine, LineLayout *ll, int subLine) {
-
- PRectangle rcSegment = rcLine;
-
- // Using one font for all control characters so it can be controlled independently to ensure
- // the box goes around the characters tightly. Seems to be no way to work out what height
- // is taken by an individual character - internal leading gives varying results.
- Font &ctrlCharsFont = vsDraw.styles[STYLE_CONTROLCHAR].font;
-
- // 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 (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 && (vsDraw.caretLineAlpha == SC_ALPHA_NOALPHA) && ll->containsCaret) {
- overrideBackground = true;
- background = vsDraw.caretLineBackground.allocated;
- }
- if (!overrideBackground) {
- int marks = pdoc->GetMark(line);
- for (int markBit = 0; (markBit < 32) && marks; markBit++) {
- if ((marks & 1) && (vsDraw.markers[markBit].markType == SC_MARK_BACKGROUND) &&
- (vsDraw.markers[markBit].alpha == SC_ALPHA_NOALPHA)) {
- background = vsDraw.markers[markBit].back.allocated;
- overrideBackground = true;
- }
- marks >>= 1;
- }
- }
- if (!overrideBackground) {
- if (vsDraw.maskInLine) {
- int marksMasked = pdoc->GetMark(line) & vsDraw.maskInLine;
- if (marksMasked) {
- for (int markBit = 0; (markBit < 32) && marksMasked; markBit++) {
- if ((marksMasked & 1) && (vsDraw.markers[markBit].markType != SC_MARK_EMPTY) &&
- (vsDraw.markers[markBit].alpha == SC_ALPHA_NOALPHA)) {
- overrideBackground = true;
- background = vsDraw.markers[markBit].back.allocated;
- }
- marksMasked >>= 1;
- }
- }
- }
- }
-
- bool drawWhitespaceBackground = (vsDraw.viewWhitespace != wsInvisible) &&
- (!overrideBackground) && (vsDraw.whitespaceBackgroundSet);
-
- bool inIndentation = subLine == 0; // Do not handle indentation except on first subline.
- int indentWidth = pdoc->IndentSize() * vsDraw.spaceWidth;
-
- int posLineStart = pdoc->LineStart(line);
-
- int startseg = ll->LineStart(subLine);
- int subLineStart = ll->positions[startseg];
- int lineStart = 0;
- int lineEnd = 0;
- if (subLine < ll->lines) {
- lineStart = ll->LineStart(subLine);
- lineEnd = ll->LineStart(subLine + 1);
- }
-
- bool drawWrapMarkEnd = false;
-
- if (wrapVisualFlags & SC_WRAPVISUALFLAG_END) {
- if (subLine + 1 < ll->lines) {
- drawWrapMarkEnd = ll->LineStart(subLine + 1) != 0;
- }
- }
-
- if (actualWrapVisualStartIndent != 0) {
-
- bool continuedWrapLine = false;
- if (subLine < ll->lines) {
- continuedWrapLine = ll->LineStart(subLine) != 0;
- }
-
- if (continuedWrapLine) {
- // draw continuation rect
- PRectangle rcPlace = rcSegment;
-
- rcPlace.left = ll->positions[startseg] + xStart - subLineStart;
- rcPlace.right = rcPlace.left + actualWrapVisualStartIndent * vsDraw.aveCharWidth;
-
- // default bgnd here..
- surface->FillRectangle(rcSegment, vsDraw.styles[STYLE_DEFAULT].back.allocated);
-
- // main line style would be below but this would be inconsistent with end markers
- // also would possibly not be the style at wrap point
- //int styleMain = ll->styles[lineStart];
- //surface->FillRectangle(rcPlace, vsDraw.styles[styleMain].back.allocated);
-
- if (wrapVisualFlags & SC_WRAPVISUALFLAG_START) {
-
- if (wrapVisualFlagsLocation & SC_WRAPVISUALFLAGLOC_START_BY_TEXT)
- rcPlace.left = rcPlace.right - vsDraw.aveCharWidth;
- else
- rcPlace.right = rcPlace.left + vsDraw.aveCharWidth;
-
- DrawWrapMarker(surface, rcPlace, false, vsDraw.whitespaceForeground.allocated);
- }
-
- xStart += actualWrapVisualStartIndent * vsDraw.aveCharWidth;
- }
- }
-
- int i;
-
- // Background drawing loop
- for (i = lineStart; twoPhaseDraw && (i < lineEnd); i++) {
-
- int iDoc = i + posLineStart;
- // If there is the end of a style run for any reason
- if ((ll->styles[i] != ll->styles[i + 1]) ||
- i == (lineEnd - 1) ||
- IsControlCharacter(ll->chars[i]) || IsControlCharacter(ll->chars[i + 1]) ||
- ((ll->selStart != ll->selEnd) && ((iDoc + 1 == ll->selStart) || (iDoc + 1 == ll->selEnd))) ||
- (i == (ll->edgeColumn - 1))) {
- rcSegment.left = ll->positions[startseg] + xStart - subLineStart;
- rcSegment.right = ll->positions[i + 1] + xStart - subLineStart;
- // Only try to draw if really visible - enhances performance by not calling environment to
- // draw strings that are completely past the right side of the window.
- if ((rcSegment.left <= rcLine.right) && (rcSegment.right >= rcLine.left)) {
- int styleMain = ll->styles[i];
- bool inSelection = (iDoc >= ll->selStart) && (iDoc < ll->selEnd) && (ll->selStart != ll->selEnd);
- bool inHotspot = (ll->hsStart != -1) && (iDoc >= ll->hsStart) && (iDoc < ll->hsEnd);
- ColourAllocated textBack = TextBackground(vsDraw, overrideBackground, background, inSelection, inHotspot, styleMain, i, ll);
- if (ll->chars[i] == '\t') {
- // Tab display
- if (drawWhitespaceBackground &&
- (!inIndentation || vsDraw.viewWhitespace == wsVisibleAlways))
- textBack = vsDraw.whitespaceBackground.allocated;
- surface->FillRectangle(rcSegment, textBack);
- } else if (IsControlCharacter(ll->chars[i])) {
- // Control character display
- inIndentation = false;
- surface->FillRectangle(rcSegment, textBack);
- } else {
- // Normal text display
- surface->FillRectangle(rcSegment, textBack);
- if (vsDraw.viewWhitespace != wsInvisible ||
- (inIndentation && vsDraw.viewIndentationGuides)) {
- for (int cpos = 0; cpos <= i - startseg; cpos++) {
- if (ll->chars[cpos + startseg] == ' ') {
- if (drawWhitespaceBackground &&
- (!inIndentation || vsDraw.viewWhitespace == wsVisibleAlways)) {
- PRectangle rcSpace(ll->positions[cpos + startseg] + xStart, rcSegment.top,
- ll->positions[cpos + startseg + 1] + xStart, rcSegment.bottom);
- surface->FillRectangle(rcSpace, vsDraw.whitespaceBackground.allocated);
- }
- } else {
- inIndentation = false;
- }
- }
- }
- }
- } else if (rcSegment.left > rcLine.right) {
- break;
- }
- startseg = i + 1;
- }
- }
-
- if (twoPhaseDraw) {
- DrawEOL(surface, vsDraw, rcLine, ll, line, lineEnd,
- xStart, subLine, subLineStart, overrideBackground, background,
- drawWrapMarkEnd, vsDraw.whitespaceForeground.allocated);
- }
-
- inIndentation = subLine == 0; // Do not handle indentation except on first subline.
- startseg = ll->LineStart(subLine);
- // Foreground drawing loop
- for (i = lineStart; i < lineEnd; i++) {
-
- int iDoc = i + posLineStart;
- // If there is the end of a style run for any reason
- if ((ll->styles[i] != ll->styles[i + 1]) ||
- i == (lineEnd - 1) ||
- IsControlCharacter(ll->chars[i]) || IsControlCharacter(ll->chars[i + 1]) ||
- ((ll->selStart != ll->selEnd) && ((iDoc + 1 == ll->selStart) || (iDoc + 1 == ll->selEnd))) ||
- (i == (ll->edgeColumn - 1))) {
- rcSegment.left = ll->positions[startseg] + xStart - subLineStart;
- rcSegment.right = ll->positions[i + 1] + xStart - subLineStart;
- // Only try to draw if really visible - enhances performance by not calling environment to
- // draw strings that are completely past the right side of the window.
- if ((rcSegment.left <= rcLine.right) && (rcSegment.right >= rcLine.left)) {
- int styleMain = ll->styles[i];
- ColourAllocated textFore = vsDraw.styles[styleMain].fore.allocated;
- Font &textFont = vsDraw.styles[styleMain].font;
- //hotspot foreground
- if (ll->hsStart != -1 && iDoc >= ll->hsStart && iDoc < hsEnd) {
- if (vsDraw.hotspotForegroundSet)
- textFore = vsDraw.hotspotForeground.allocated;
- }
- bool inSelection = (iDoc >= ll->selStart) && (iDoc < ll->selEnd) && (ll->selStart != ll->selEnd);
- if (inSelection && (vsDraw.selforeset)) {
- textFore = vsDraw.selforeground.allocated;
- }
- bool inHotspot = (ll->hsStart != -1) && (iDoc >= ll->hsStart) && (iDoc < ll->hsEnd);
- ColourAllocated textBack = TextBackground(vsDraw, overrideBackground, background, inSelection, inHotspot, styleMain, i, ll);
- if (ll->chars[i] == '\t') {
- // Tab display
- if (!twoPhaseDraw) {
- if (drawWhitespaceBackground &&
- (!inIndentation || vsDraw.viewWhitespace == wsVisibleAlways))
- textBack = vsDraw.whitespaceBackground.allocated;
- surface->FillRectangle(rcSegment, textBack);
- }
- if ((vsDraw.viewWhitespace != wsInvisible) || ((inIndentation && vsDraw.viewIndentationGuides))) {
- if (vsDraw.whitespaceForegroundSet)
- textFore = vsDraw.whitespaceForeground.allocated;
- surface->PenColour(textFore);
- }
- if (inIndentation && vsDraw.viewIndentationGuides) {
- for (int xIG = ll->positions[i] / indentWidth * indentWidth; xIG < ll->positions[i + 1]; xIG += indentWidth) {
- if (xIG >= ll->positions[i] && xIG > 0) {
- DrawIndentGuide(surface, lineVisible, vsDraw.lineHeight, xIG + xStart, rcSegment,
- (ll->xHighlightGuide == xIG));
- }
- }
- }
- if (vsDraw.viewWhitespace != wsInvisible) {
- if (!inIndentation || vsDraw.viewWhitespace == wsVisibleAlways) {
- PRectangle rcTab(rcSegment.left + 1, rcSegment.top + 4,
- rcSegment.right - 1, rcSegment.bottom - vsDraw.maxDescent);
- DrawTabArrow(surface, rcTab, rcSegment.top + vsDraw.lineHeight / 2);
- }
- }
- } else if (IsControlCharacter(ll->chars[i])) {
- // Control character display
- inIndentation = false;
- if (controlCharSymbol < 32) {
- // Draw the character
- const char *ctrlChar = ControlCharacterString(ll->chars[i]);
- if (!twoPhaseDraw) {
- surface->FillRectangle(rcSegment, textBack);
- }
- int normalCharHeight = surface->Ascent(ctrlCharsFont) -
- surface->InternalLeading(ctrlCharsFont);
- PRectangle rcCChar = rcSegment;
- rcCChar.left = rcCChar.left + 1;
- rcCChar.top = rcSegment.top + vsDraw.maxAscent - normalCharHeight;
- rcCChar.bottom = rcSegment.top + vsDraw.maxAscent + 1;
- PRectangle rcCentral = rcCChar;
- rcCentral.top++;
- rcCentral.bottom--;
- surface->FillRectangle(rcCentral, textFore);
- PRectangle rcChar = rcCChar;
- rcChar.left++;
- rcChar.right--;
- surface->DrawTextClipped(rcChar, ctrlCharsFont,
- rcSegment.top + vsDraw.maxAscent, ctrlChar, istrlen(ctrlChar),
- textBack, textFore);
- } else {
- char cc[2] = { static_cast(controlCharSymbol), '\0' };
- surface->DrawTextNoClip(rcSegment, ctrlCharsFont,
- rcSegment.top + vsDraw.maxAscent,
- cc, 1, textBack, textFore);
- }
- } else {
- // Normal text display
- if (vsDraw.styles[styleMain].visible) {
- if (twoPhaseDraw) {
- surface->DrawTextTransparent(rcSegment, textFont,
- rcSegment.top + vsDraw.maxAscent, ll->chars + startseg,
- i - startseg + 1, textFore);
- } else {
- surface->DrawTextNoClip(rcSegment, textFont,
- rcSegment.top + vsDraw.maxAscent, ll->chars + startseg,
- i - startseg + 1, textFore, textBack);
- }
- }
- if (vsDraw.viewWhitespace != wsInvisible ||
- (inIndentation && vsDraw.viewIndentationGuides)) {
- for (int cpos = 0; cpos <= i - startseg; cpos++) {
- if (ll->chars[cpos + startseg] == ' ') {
- if (vsDraw.viewWhitespace != wsInvisible) {
- if (vsDraw.whitespaceForegroundSet)
- textFore = vsDraw.whitespaceForeground.allocated;
- if (!inIndentation || vsDraw.viewWhitespace == wsVisibleAlways) {
- int xmid = (ll->positions[cpos + startseg] + ll->positions[cpos + startseg + 1]) / 2;
- if (!twoPhaseDraw && drawWhitespaceBackground &&
- (!inIndentation || vsDraw.viewWhitespace == wsVisibleAlways)) {
- textBack = vsDraw.whitespaceBackground.allocated;
- PRectangle rcSpace(ll->positions[cpos + startseg] + xStart, rcSegment.top, ll->positions[cpos + startseg + 1] + xStart, rcSegment.bottom);
- surface->FillRectangle(rcSpace, textBack);
- }
- PRectangle rcDot(xmid + xStart - subLineStart, rcSegment.top + vsDraw.lineHeight / 2, 0, 0);
- rcDot.right = rcDot.left + 1;
- rcDot.bottom = rcDot.top + 1;
- surface->FillRectangle(rcDot, textFore);
- }
- }
- if (inIndentation && vsDraw.viewIndentationGuides) {
- int startSpace = ll->positions[cpos + startseg];
- if (startSpace > 0 && (startSpace % indentWidth == 0)) {
- DrawIndentGuide(surface, lineVisible, vsDraw.lineHeight, startSpace + xStart, rcSegment,
- (ll->xHighlightGuide == ll->positions[cpos + startseg]));
- }
- }
- } else {
- inIndentation = false;
- }
- }
- }
- }
- if (ll->hsStart != -1 && vsDraw.hotspotUnderline && iDoc >= ll->hsStart && iDoc < ll->hsEnd ) {
- PRectangle rcUL = rcSegment;
- rcUL.top = rcUL.top + vsDraw.maxAscent + 1;
- rcUL.bottom = rcUL.top + 1;
- if (vsDraw.hotspotForegroundSet)
- surface->FillRectangle(rcUL, vsDraw.hotspotForeground.allocated);
- else
- surface->FillRectangle(rcUL, textFore);
- } else if (vsDraw.styles[styleMain].underline) {
- PRectangle rcUL = rcSegment;
- rcUL.top = rcUL.top + vsDraw.maxAscent + 1;
- rcUL.bottom = rcUL.top + 1;
- surface->FillRectangle(rcUL, textFore);
- }
- } else if (rcSegment.left > rcLine.right) {
- break;
- }
- startseg = i + 1;
- }
- }
-
- // Draw indicators
- // foreach indicator...
- for (int indicnum = 0, mask = 1 << pdoc->stylingBits; mask < 0x100; indicnum++) {
- if (!(mask & ll->styleBitsSet)) {
- mask <<= 1;
- continue;
- }
- int startPos = -1;
- // foreach style pos in line...
- for (int indicPos = lineStart; indicPos <= lineEnd; indicPos++) {
- // look for starts...
- if (startPos < 0) {
- // NOT in indicator run, looking for START
- if (indicPos < lineEnd && (ll->indicators[indicPos] & mask))
- startPos = indicPos;
- }
- // ... or ends
- if (startPos >= 0) {
- // IN indicator run, looking for END
- if (indicPos >= lineEnd || !(ll->indicators[indicPos] & mask)) {
- // AT end of indicator run, DRAW it!
- PRectangle rcIndic(
- ll->positions[startPos] + xStart - subLineStart,
- rcLine.top + vsDraw.maxAscent,
- ll->positions[indicPos] + xStart - subLineStart,
- rcLine.top + vsDraw.maxAscent + 3);
- vsDraw.indicators[indicnum].Draw(surface, rcIndic, rcLine);
- // RESET control var
- startPos = -1;
- }
- }
- }
- mask <<= 1;
- }
- // End of the drawing of the current line
- if (!twoPhaseDraw) {
- DrawEOL(surface, vsDraw, rcLine, ll, line, lineEnd,
- xStart, subLine, subLineStart, overrideBackground, background,
- drawWrapMarkEnd, vsDraw.whitespaceForeground.allocated);
- }
- if ((vsDraw.selAlpha != SC_ALPHA_NOALPHA) && (ll->selStart >= 0) && (ll->selEnd >= 0)) {
- int startPosSel = (ll->selStart < posLineStart) ? posLineStart : ll->selStart;
- int endPosSel = (ll->selEnd < (lineEnd + posLineStart)) ? ll->selEnd : (lineEnd + posLineStart);
- if (startPosSel < endPosSel) {
- rcSegment.left = xStart + ll->positions[startPosSel - posLineStart] - subLineStart;
- rcSegment.right = xStart + ll->positions[endPosSel - posLineStart] - subLineStart;
- SimpleAlphaRectangle(surface, rcSegment, SelectionBackground(vsDraw), vsDraw.selAlpha);
- }
- }
-
- if (vsDraw.edgeState == EDGE_LINE) {
- int edgeX = theEdge * vsDraw.spaceWidth;
- rcSegment.left = edgeX + xStart;
- rcSegment.right = rcSegment.left + 1;
- surface->FillRectangle(rcSegment, vsDraw.edgecolour.allocated);
- }
-
- // Draw any translucent whole line states
- rcSegment.left = xStart;
- rcSegment.right = rcLine.right - 1;
- if (caret.active && vsDraw.showCaretLineBackground && ll->containsCaret) {
- SimpleAlphaRectangle(surface, rcSegment, vsDraw.caretLineBackground.allocated, vsDraw.caretLineAlpha);
- }
- int marks = pdoc->GetMark(line);
- for (int markBit = 0; (markBit < 32) && marks; markBit++) {
- if ((marks & 1) && (vsDraw.markers[markBit].markType == SC_MARK_BACKGROUND)) {
- SimpleAlphaRectangle(surface, rcSegment, vsDraw.markers[markBit].back.allocated, vsDraw.markers[markBit].alpha);
- }
- marks >>= 1;
- }
- if (vsDraw.maskInLine) {
- int marksMasked = pdoc->GetMark(line) & vsDraw.maskInLine;
- if (marksMasked) {
- for (int markBit = 0; (markBit < 32) && marksMasked; markBit++) {
- if ((marksMasked & 1) && (vsDraw.markers[markBit].markType != SC_MARK_EMPTY)) {
- SimpleAlphaRectangle(surface, rcSegment, vsDraw.markers[markBit].back.allocated, vsDraw.markers[markBit].alpha);
- }
- marksMasked >>= 1;
- }
- }
- }
-}
-
-void Editor::RefreshPixMaps(Surface *surfaceWindow) {
- if (!pixmapSelPattern->Initialised()) {
- const int patternSize = 8;
- pixmapSelPattern->InitPixMap(patternSize, patternSize, surfaceWindow, wMain.GetID());
- // This complex procedure is to reproduce the checkerboard dithered pattern used by windows
- // for scroll bars and Visual Studio for its selection margin. The colour of this pattern is half
- // way between the chrome colour and the chrome highlight colour making a nice transition
- // between the window chrome and the content area. And it works in low colour depths.
- PRectangle rcPattern(0, 0, patternSize, patternSize);
-
- // Initialize default colours based on the chrome colour scheme. Typically the highlight is white.
- ColourAllocated colourFMFill = vs.selbar.allocated;
- ColourAllocated colourFMStripes = vs.selbarlight.allocated;
-
- if (!(vs.selbarlight.desired == ColourDesired(0xff, 0xff, 0xff))) {
- // User has chosen an unusual chrome colour scheme so just use the highlight edge colour.
- // (Typically, the highlight colour is white.)
- colourFMFill = vs.selbarlight.allocated;
- }
-
- if (vs.foldmarginColourSet) {
- // override default fold margin colour
- colourFMFill = vs.foldmarginColour.allocated;
- }
- if (vs.foldmarginHighlightColourSet) {
- // override default fold margin highlight colour
- colourFMStripes = vs.foldmarginHighlightColour.allocated;
- }
-
- pixmapSelPattern->FillRectangle(rcPattern, colourFMFill);
- pixmapSelPattern->PenColour(colourFMStripes);
- for (int stripe = 0; stripe < patternSize; stripe++) {
- // Alternating 1 pixel stripes is same as checkerboard.
- pixmapSelPattern->MoveTo(0, stripe * 2);
- pixmapSelPattern->LineTo(patternSize, stripe * 2 - patternSize);
- }
- }
-
- if (!pixmapIndentGuide->Initialised()) {
- // 1 extra pixel in height so can handle odd/even positions and so produce a continuous line
- pixmapIndentGuide->InitPixMap(1, vs.lineHeight + 1, surfaceWindow, wMain.GetID());
- pixmapIndentGuideHighlight->InitPixMap(1, vs.lineHeight + 1, surfaceWindow, wMain.GetID());
- PRectangle rcIG(0, 0, 1, vs.lineHeight);
- pixmapIndentGuide->FillRectangle(rcIG, vs.styles[STYLE_INDENTGUIDE].back.allocated);
- pixmapIndentGuide->PenColour(vs.styles[STYLE_INDENTGUIDE].fore.allocated);
- pixmapIndentGuideHighlight->FillRectangle(rcIG, vs.styles[STYLE_BRACELIGHT].back.allocated);
- pixmapIndentGuideHighlight->PenColour(vs.styles[STYLE_BRACELIGHT].fore.allocated);
- for (int stripe = 1; stripe < vs.lineHeight + 1; stripe += 2) {
- pixmapIndentGuide->MoveTo(0, stripe);
- pixmapIndentGuide->LineTo(2, stripe);
- pixmapIndentGuideHighlight->MoveTo(0, stripe);
- pixmapIndentGuideHighlight->LineTo(2, stripe);
- }
- }
-
- if (bufferedDraw) {
- if (!pixmapLine->Initialised()) {
- PRectangle rcClient = GetClientRectangle();
- pixmapLine->InitPixMap(rcClient.Width(), vs.lineHeight,
- surfaceWindow, wMain.GetID());
- pixmapSelMargin->InitPixMap(vs.fixedColumnWidth,
- rcClient.Height(), surfaceWindow, wMain.GetID());
- }
- }
-}
-
-void Editor::Paint(Surface *surfaceWindow, PRectangle rcArea) {
- //Platform::DebugPrintf("Paint:%1d (%3d,%3d) ... (%3d,%3d)\n",
- // paintingAllText, rcArea.left, rcArea.top, rcArea.right, rcArea.bottom);
-
- RefreshStyleData();
- RefreshPixMaps(surfaceWindow);
-
- PRectangle rcClient = GetClientRectangle();
- //Platform::DebugPrintf("Client: (%3d,%3d) ... (%3d,%3d) %d\n",
- // rcClient.left, rcClient.top, rcClient.right, rcClient.bottom);
-
- surfaceWindow->SetPalette(&palette, true);
- pixmapLine->SetPalette(&palette, !hasFocus);
-
- int screenLinePaintFirst = rcArea.top / vs.lineHeight;
- // The area to be painted plus one extra line is styled.
- // The extra line is to determine when a style change, such as starting a comment flows on to other lines.
- int lineStyleLast = topLine + (rcArea.bottom - 1) / vs.lineHeight + 1;
- //Platform::DebugPrintf("Paint lines = %d .. %d\n", topLine + screenLinePaintFirst, lineStyleLast);
- int endPosPaint = pdoc->Length();
- if (lineStyleLast < cs.LinesDisplayed())
- endPosPaint = pdoc->LineStart(cs.DocFromDisplay(lineStyleLast + 1));
-
- int xStart = vs.fixedColumnWidth - xOffset;
- int ypos = 0;
- if (!bufferedDraw)
- ypos += screenLinePaintFirst * vs.lineHeight;
- int yposScreen = screenLinePaintFirst * vs.lineHeight;
-
- // Ensure we are styled as far as we are painting.
- pdoc->EnsureStyledTo(endPosPaint);
- bool paintAbandonedByStyling = paintState == paintAbandoned;
- if (needUpdateUI) {
- NotifyUpdateUI();
- needUpdateUI = false;
- RefreshStyleData();
- RefreshPixMaps(surfaceWindow);
- }
-
- // Call priority lines wrap on a window of lines which are likely
- // to rendered with the following paint (that is wrap the visible
- // lines first).
- int startLineToWrap = cs.DocFromDisplay(topLine) - 5;
- if (startLineToWrap < 0)
- startLineToWrap = -1;
- if (WrapLines(false, startLineToWrap)) {
- // The wrapping process has changed the height of some lines so
- // abandon this paint for a complete repaint.
- if (AbandonPaint()) {
- return;
- }
- RefreshPixMaps(surfaceWindow); // In case pixmaps invalidated by scrollbar change
- }
- PLATFORM_ASSERT(pixmapSelPattern->Initialised());
-
- PaintSelMargin(surfaceWindow, rcArea);
-
- PRectangle rcRightMargin = rcClient;
- rcRightMargin.left = rcRightMargin.right - vs.rightMarginWidth;
- if (rcArea.Intersects(rcRightMargin)) {
- surfaceWindow->FillRectangle(rcRightMargin, vs.styles[STYLE_DEFAULT].back.allocated);
- }
-
- if (paintState == paintAbandoned) {
- // Either styling or NotifyUpdateUI noticed that painting is needed
- // outside the current painting rectangle
- //Platform::DebugPrintf("Abandoning paint\n");
- if (wrapState != eWrapNone) {
- if (paintAbandonedByStyling) {
- // Styling has spilled over a line end, such as occurs by starting a multiline
- // comment. The width of subsequent text may have changed, so rewrap.
- NeedWrapping(cs.DocFromDisplay(topLine));
- }
- }
- return;
- }
- //Platform::DebugPrintf("start display %d, offset = %d\n", pdoc->Length(), xOffset);
-
- // Do the painting
- if (rcArea.right > vs.fixedColumnWidth) {
-
- Surface *surface = surfaceWindow;
- if (bufferedDraw) {
- surface = pixmapLine;
- PLATFORM_ASSERT(pixmapLine->Initialised());
- }
- surface->SetUnicodeMode(IsUnicodeMode());
- surface->SetDBCSMode(CodePage());
-
- int visibleLine = topLine + screenLinePaintFirst;
-
- int posCaret = currentPos;
- if (posDrag >= 0)
- posCaret = posDrag;
- int lineCaret = pdoc->LineFromPosition(posCaret);
-
- // Remove selection margin from drawing area so text will not be drawn
- // on it in unbuffered mode.
- PRectangle rcTextArea = rcClient;
- rcTextArea.left = vs.fixedColumnWidth;
- rcTextArea.right -= vs.rightMarginWidth;
- surfaceWindow->SetClip(rcTextArea);
-
- // Loop on visible lines
- //double durLayout = 0.0;
- //double durPaint = 0.0;
- //double durCopy = 0.0;
- //ElapsedTime etWhole;
- int lineDocPrevious = -1; // Used to avoid laying out one document line multiple times
- AutoLineLayout ll(llc, 0);
- SelectionLineIterator lineIterator(this);
- while (visibleLine < cs.LinesDisplayed() && yposScreen < rcArea.bottom) {
-
- int lineDoc = cs.DocFromDisplay(visibleLine);
- // Only visible lines should be handled by the code within the loop
- PLATFORM_ASSERT(cs.GetVisible(lineDoc));
- int lineStartSet = cs.DisplayFromDoc(lineDoc);
- int subLine = visibleLine - lineStartSet;
-
- // Copy this line and its styles from the document into local arrays
- // and determine the x position at which each character starts.
- //ElapsedTime et;
- if (lineDoc != lineDocPrevious) {
- ll.Set(0);
- // For rectangular selection this accesses the layout cache so should be after layout returned.
- lineIterator.SetAt(lineDoc);
- ll.Set(RetrieveLineLayout(lineDoc));
- LayoutLine(lineDoc, surface, vs, ll, wrapWidth);
- lineDocPrevious = lineDoc;
- }
- //durLayout += et.Duration(true);
-
- if (ll) {
- if (selType == selStream) {
- ll->selStart = SelectionStart();
- ll->selEnd = SelectionEnd();
- } else {
- ll->selStart = lineIterator.startPos;
- ll->selEnd = lineIterator.endPos;
- }
- ll->containsCaret = lineDoc == lineCaret;
- if (hideSelection) {
- ll->selStart = -1;
- ll->selEnd = -1;
- ll->containsCaret = false;
- }
-
- GetHotSpotRange(ll->hsStart, ll->hsEnd);
-
- PRectangle rcLine = rcClient;
- rcLine.top = ypos;
- rcLine.bottom = ypos + vs.lineHeight;
-
- Range rangeLine(pdoc->LineStart(lineDoc), pdoc->LineStart(lineDoc + 1));
- // Highlight the current braces if any
- ll->SetBracesHighlight(rangeLine, braces, static_cast(bracesMatchStyle),
- highlightGuideColumn * vs.spaceWidth);
-
- // Draw the line
- DrawLine(surface, vs, lineDoc, visibleLine, xStart, rcLine, ll, subLine);
- //durPaint += et.Duration(true);
-
- // Restore the previous styles for the brace highlights in case layout is in cache.
- ll->RestoreBracesHighlight(rangeLine, braces);
-
- bool expanded = cs.GetExpanded(lineDoc);
- if ((foldFlags & SC_FOLDFLAG_BOX) == 0) {
- // Paint the line above the fold
- if ((expanded && (foldFlags & SC_FOLDFLAG_LINEBEFORE_EXPANDED))
- ||
- (!expanded && (foldFlags & SC_FOLDFLAG_LINEBEFORE_CONTRACTED))) {
- if (pdoc->GetLevel(lineDoc) & SC_FOLDLEVELHEADERFLAG) {
- PRectangle rcFoldLine = rcLine;
- rcFoldLine.bottom = rcFoldLine.top + 1;
- surface->FillRectangle(rcFoldLine, vs.styles[STYLE_DEFAULT].fore.allocated);
- }
- }
- // Paint the line below the fold
- if ((expanded && (foldFlags & SC_FOLDFLAG_LINEAFTER_EXPANDED))
- ||
- (!expanded && (foldFlags & SC_FOLDFLAG_LINEAFTER_CONTRACTED))) {
- if (pdoc->GetLevel(lineDoc) & SC_FOLDLEVELHEADERFLAG) {
- PRectangle rcFoldLine = rcLine;
- rcFoldLine.top = rcFoldLine.bottom - 1;
- surface->FillRectangle(rcFoldLine, vs.styles[STYLE_DEFAULT].fore.allocated);
- }
- }
- } else {
- int FoldLevelCurr = (pdoc->GetLevel(lineDoc) & SC_FOLDLEVELNUMBERMASK) - SC_FOLDLEVELBASE;
- int FoldLevelPrev = (pdoc->GetLevel(lineDoc - 1) & SC_FOLDLEVELNUMBERMASK) - SC_FOLDLEVELBASE;
- int FoldLevelFlags = (pdoc->GetLevel(lineDoc) & ~SC_FOLDLEVELNUMBERMASK) & ~(0xFFF0000);
- int indentationStep = pdoc->IndentSize();
- // Draw line above fold
- if ((FoldLevelPrev < FoldLevelCurr)
- ||
- (FoldLevelFlags & SC_FOLDLEVELBOXHEADERFLAG
- &&
- (pdoc->GetLevel(lineDoc - 1) & SC_FOLDLEVELBOXFOOTERFLAG) == 0)) {
- PRectangle rcFoldLine = rcLine;
- rcFoldLine.bottom = rcFoldLine.top + 1;
- rcFoldLine.left += xStart + FoldLevelCurr * vs.spaceWidth * indentationStep - 1;
- surface->FillRectangle(rcFoldLine, vs.styles[STYLE_DEFAULT].fore.allocated);
- }
-
- // Line below the fold (or below a contracted fold)
- if (FoldLevelFlags & SC_FOLDLEVELBOXFOOTERFLAG
- ||
- (!expanded && (foldFlags & SC_FOLDFLAG_LINEAFTER_CONTRACTED))) {
- PRectangle rcFoldLine = rcLine;
- rcFoldLine.top = rcFoldLine.bottom - 1;
- rcFoldLine.left += xStart + (FoldLevelCurr) * vs.spaceWidth * indentationStep - 1;
- surface->FillRectangle(rcFoldLine, vs.styles[STYLE_DEFAULT].fore.allocated);
- }
-
- PRectangle rcBoxLine = rcLine;
- // Draw vertical line for every fold level
- for (int i = 0; i <= FoldLevelCurr; i++) {
- rcBoxLine.left = xStart + i * vs.spaceWidth * indentationStep - 1;
- rcBoxLine.right = rcBoxLine.left + 1;
- surface->FillRectangle(rcBoxLine, vs.styles[STYLE_DEFAULT].fore.allocated);
- }
- }
-
- // Draw the Caret
- if (lineDoc == lineCaret) {
- int offset = Platform::Minimum(posCaret - rangeLine.start, ll->maxLineLength);
- if ((offset >= ll->LineStart(subLine)) &&
- ((offset < ll->LineStart(subLine + 1)) || offset == ll->numCharsInLine)) {
- int xposCaret = ll->positions[offset] - ll->positions[ll->LineStart(subLine)] + xStart;
-
- if (actualWrapVisualStartIndent != 0) {
- int lineStart = ll->LineStart(subLine);
- if (lineStart != 0) // Wrapped
- xposCaret += actualWrapVisualStartIndent * vs.aveCharWidth;
- }
- int widthOverstrikeCaret;
- if (posCaret == pdoc->Length()) { // At end of document
- widthOverstrikeCaret = vs.aveCharWidth;
- } else if ((posCaret - rangeLine.start) >= ll->numCharsInLine) { // At end of line
- widthOverstrikeCaret = vs.aveCharWidth;
- } else {
- widthOverstrikeCaret = ll->positions[offset + 1] - ll->positions[offset];
- }
- if (widthOverstrikeCaret < 3) // Make sure its visible
- widthOverstrikeCaret = 3;
- if (((caret.active && caret.on) || (posDrag >= 0)) && xposCaret >= 0) {
- PRectangle rcCaret = rcLine;
- int caretWidthOffset = 0;
- if ((offset > 0) && (vs.caretWidth > 1))
- caretWidthOffset = 1; // Move back so overlaps both character cells.
- if (posDrag >= 0) {
- rcCaret.left = xposCaret - caretWidthOffset;
- rcCaret.right = rcCaret.left + vs.caretWidth;
- } else {
- if (inOverstrike) {
- rcCaret.top = rcCaret.bottom - 2;
- rcCaret.left = xposCaret + 1;
- rcCaret.right = rcCaret.left + widthOverstrikeCaret - 1;
- } else {
- rcCaret.left = xposCaret - caretWidthOffset;
- rcCaret.right = rcCaret.left + vs.caretWidth;
- }
- }
- surface->FillRectangle(rcCaret, vs.caretcolour.allocated);
- }
- }
- }
-
- if (bufferedDraw) {
- Point from(vs.fixedColumnWidth, 0);
- PRectangle rcCopyArea(vs.fixedColumnWidth, yposScreen,
- rcClient.right, yposScreen + vs.lineHeight);
- surfaceWindow->Copy(rcCopyArea, from, *pixmapLine);
- }
- //durCopy += et.Duration(true);
- }
-
- if (!bufferedDraw) {
- ypos += vs.lineHeight;
- }
-
- yposScreen += vs.lineHeight;
- visibleLine++;
- //gdk_flush();
- }
- ll.Set(0);
- //if (durPaint < 0.00000001)
- // durPaint = 0.00000001;
-
- // Right column limit indicator
- PRectangle rcBeyondEOF = rcClient;
- rcBeyondEOF.left = vs.fixedColumnWidth;
- rcBeyondEOF.right = rcBeyondEOF.right;
- rcBeyondEOF.top = (cs.LinesDisplayed() - topLine) * vs.lineHeight;
- if (rcBeyondEOF.top < rcBeyondEOF.bottom) {
- surfaceWindow->FillRectangle(rcBeyondEOF, vs.styles[STYLE_DEFAULT].back.allocated);
- if (vs.edgeState == EDGE_LINE) {
- int edgeX = theEdge * vs.spaceWidth;
- rcBeyondEOF.left = edgeX + xStart;
- rcBeyondEOF.right = rcBeyondEOF.left + 1;
- surfaceWindow->FillRectangle(rcBeyondEOF, vs.edgecolour.allocated);
- }
- }
- //Platform::DebugPrintf(
- //"Layout:%9.6g Paint:%9.6g Ratio:%9.6g Copy:%9.6g Total:%9.6g\n",
- //durLayout, durPaint, durLayout / durPaint, durCopy, etWhole.Duration());
- NotifyPainted();
- }
-}
-
-// Space (3 space characters) between line numbers and text when printing.
-#define lineNumberPrintSpace " "
-
-ColourDesired InvertedLight(ColourDesired orig) {
- unsigned int r = orig.GetRed();
- unsigned int g = orig.GetGreen();
- unsigned int b = orig.GetBlue();
- unsigned int l = (r + g + b) / 3; // There is a better calculation for this that matches human eye
- unsigned int il = 0xff - l;
- if (l == 0)
- return ColourDesired(0xff, 0xff, 0xff);
- r = r * il / l;
- g = g * il / l;
- b = b * il / l;
- return ColourDesired(Platform::Minimum(r, 0xff), Platform::Minimum(g, 0xff), Platform::Minimum(b, 0xff));
-}
-
-// This is mostly copied from the Paint method but with some things omitted
-// such as the margin markers, line numbers, selection and caret
-// Should be merged back into a combined Draw method.
-long Editor::FormatRange(bool draw, RangeToFormat *pfr) {
- if (!pfr)
- return 0;
-
- AutoSurface surface(pfr->hdc, this);
- if (!surface)
- return 0;
- AutoSurface surfaceMeasure(pfr->hdcTarget, this);
- if (!surfaceMeasure) {
- return 0;
- }
-
- ViewStyle vsPrint(vs);
-
- // Modify the view style for printing as do not normally want any of the transient features to be printed
- // Printing supports only the line number margin.
- int lineNumberIndex = -1;
- for (int margin = 0; margin < ViewStyle::margins; margin++) {
- if ((vsPrint.ms[margin].style == SC_MARGIN_NUMBER) && (vsPrint.ms[margin].width > 0)) {
- lineNumberIndex = margin;
- } else {
- vsPrint.ms[margin].width = 0;
- }
- }
- vsPrint.showMarkedLines = false;
- vsPrint.fixedColumnWidth = 0;
- vsPrint.zoomLevel = printMagnification;
- vsPrint.viewIndentationGuides = false;
- // Don't show the selection when printing
- vsPrint.selbackset = false;
- vsPrint.selforeset = false;
- vsPrint.selAlpha = SC_ALPHA_NOALPHA;
- vsPrint.whitespaceBackgroundSet = false;
- vsPrint.whitespaceForegroundSet = false;
- vsPrint.showCaretLineBackground = false;
-
- // Set colours for printing according to users settings
- for (int sty = 0;sty <= STYLE_MAX;sty++) {
- if (printColourMode == SC_PRINT_INVERTLIGHT) {
- vsPrint.styles[sty].fore.desired = InvertedLight(vsPrint.styles[sty].fore.desired);
- vsPrint.styles[sty].back.desired = InvertedLight(vsPrint.styles[sty].back.desired);
- } else if (printColourMode == SC_PRINT_BLACKONWHITE) {
- vsPrint.styles[sty].fore.desired = ColourDesired(0, 0, 0);
- vsPrint.styles[sty].back.desired = ColourDesired(0xff, 0xff, 0xff);
- } else if (printColourMode == SC_PRINT_COLOURONWHITE) {
- vsPrint.styles[sty].back.desired = ColourDesired(0xff, 0xff, 0xff);
- } else if (printColourMode == SC_PRINT_COLOURONWHITEDEFAULTBG) {
- if (sty <= STYLE_DEFAULT) {
- vsPrint.styles[sty].back.desired = ColourDesired(0xff, 0xff, 0xff);
- }
- }
- }
- // White background for the line numbers
- vsPrint.styles[STYLE_LINENUMBER].back.desired = ColourDesired(0xff, 0xff, 0xff);
-
- vsPrint.Refresh(*surfaceMeasure);
- // Ensure colours are set up
- vsPrint.RefreshColourPalette(palette, true);
- vsPrint.RefreshColourPalette(palette, false);
- // Determining width must hapen after fonts have been realised in Refresh
- int lineNumberWidth = 0;
- if (lineNumberIndex >= 0) {
- lineNumberWidth = surfaceMeasure->WidthText(vsPrint.styles[STYLE_LINENUMBER].font,
- "99999" lineNumberPrintSpace, 5 + istrlen(lineNumberPrintSpace));
- vsPrint.ms[lineNumberIndex].width = lineNumberWidth;
- }
-
- int linePrintStart = pdoc->LineFromPosition(pfr->chrg.cpMin);
- int linePrintLast = linePrintStart + (pfr->rc.bottom - pfr->rc.top) / vsPrint.lineHeight - 1;
- if (linePrintLast < linePrintStart)
- linePrintLast = linePrintStart;
- int linePrintMax = pdoc->LineFromPosition(pfr->chrg.cpMax);
- if (linePrintLast > linePrintMax)
- linePrintLast = linePrintMax;
- //Platform::DebugPrintf("Formatting lines=[%0d,%0d,%0d] top=%0d bottom=%0d line=%0d %0d\n",
- // linePrintStart, linePrintLast, linePrintMax, pfr->rc.top, pfr->rc.bottom, vsPrint.lineHeight,
- // surfaceMeasure->Height(vsPrint.styles[STYLE_LINENUMBER].font));
- int endPosPrint = pdoc->Length();
- if (linePrintLast < pdoc->LinesTotal())
- endPosPrint = pdoc->LineStart(linePrintLast + 1);
-
- // Ensure we are styled to where we are formatting.
- pdoc->EnsureStyledTo(endPosPrint);
-
- int xStart = vsPrint.fixedColumnWidth + pfr->rc.left + lineNumberWidth;
- int ypos = pfr->rc.top;
-
- int lineDoc = linePrintStart;
-
- int nPrintPos = pfr->chrg.cpMin;
- int visibleLine = 0;
- int widthPrint = pfr->rc.Width() - lineNumberWidth;
- if (printWrapState == eWrapNone)
- widthPrint = LineLayout::wrapWidthInfinite;
-
- while (lineDoc <= linePrintLast && ypos < pfr->rc.bottom) {
-
- // When printing, the hdc and hdcTarget may be the same, so
- // changing the state of surfaceMeasure may change the underlying
- // state of surface. Therefore, any cached state is discarded before
- // using each surface.
- surfaceMeasure->FlushCachedState();
-
- // Copy this line and its styles from the document into local arrays
- // and determine the x position at which each character starts.
- LineLayout ll(8000);
- LayoutLine(lineDoc, surfaceMeasure, vsPrint, &ll, widthPrint);
-
- ll.selStart = -1;
- ll.selEnd = -1;
- ll.containsCaret = false;
-
- PRectangle rcLine;
- rcLine.left = pfr->rc.left + lineNumberWidth;
- rcLine.top = ypos;
- rcLine.right = pfr->rc.right - 1;
- rcLine.bottom = ypos + vsPrint.lineHeight;
-
- // When document line is wrapped over multiple display lines, find where
- // to start printing from to ensure a particular position is on the first
- // line of the page.
- if (visibleLine == 0) {
- int startWithinLine = nPrintPos - pdoc->LineStart(lineDoc);
- for (int iwl = 0; iwl < ll.lines - 1; iwl++) {
- if (ll.LineStart(iwl) <= startWithinLine && ll.LineStart(iwl + 1) >= startWithinLine) {
- visibleLine = -iwl;
- }
- }
-
- if (ll.lines > 1 && startWithinLine >= ll.LineStart(ll.lines - 1)) {
- visibleLine = -(ll.lines - 1);
- }
- }
-
- if (draw && lineNumberWidth &&
- (ypos + vsPrint.lineHeight <= pfr->rc.bottom) &&
- (visibleLine >= 0)) {
- char number[100];
- sprintf(number, "%d" lineNumberPrintSpace, lineDoc + 1);
- PRectangle rcNumber = rcLine;
- rcNumber.right = rcNumber.left + lineNumberWidth;
- // Right justify
- rcNumber.left -= surfaceMeasure->WidthText(
- vsPrint.styles[STYLE_LINENUMBER].font, number, istrlen(number));
- surface->FlushCachedState();
- surface->DrawTextNoClip(rcNumber, vsPrint.styles[STYLE_LINENUMBER].font,
- ypos + vsPrint.maxAscent, number, istrlen(number),
- vsPrint.styles[STYLE_LINENUMBER].fore.allocated,
- vsPrint.styles[STYLE_LINENUMBER].back.allocated);
- }
-
- // Draw the line
- surface->FlushCachedState();
-
- for (int iwl = 0; iwl < ll.lines; iwl++) {
- if (ypos + vsPrint.lineHeight <= pfr->rc.bottom) {
- if (visibleLine >= 0) {
- if (draw) {
- rcLine.top = ypos;
- rcLine.bottom = ypos + vsPrint.lineHeight;
- DrawLine(surface, vsPrint, lineDoc, visibleLine, xStart, rcLine, &ll, iwl);
- }
- ypos += vsPrint.lineHeight;
- }
- visibleLine++;
- if (iwl == ll.lines - 1)
- nPrintPos = pdoc->LineStart(lineDoc + 1);
- else
- nPrintPos += ll.LineStart(iwl + 1) - ll.LineStart(iwl);
- }
- }
-
- ++lineDoc;
- }
-
- return nPrintPos;
-}
-
-int Editor::TextWidth(int style, const char *text) {
- RefreshStyleData();
- AutoSurface surface(this);
- if (surface) {
- return surface->WidthText(vs.styles[style].font, text, istrlen(text));
- } else {
- return 1;
- }
-}
-
-// Empty method is overridden on GTK+ to show / hide scrollbars
-void Editor::ReconfigureScrollBars() {}
-
-void Editor::SetScrollBars() {
- RefreshStyleData();
-
- int nMax = MaxScrollPos();
- int nPage = LinesOnScreen();
- bool modified = ModifyScrollBars(nMax + nPage - 1, nPage);
- if (modified) {
- DwellEnd(true);
- }
-
- // TODO: ensure always showing as many lines as possible
- // May not be, if, for example, window made larger
- if (topLine > MaxScrollPos()) {
- SetTopLine(Platform::Clamp(topLine, 0, MaxScrollPos()));
- SetVerticalScrollPos();
- Redraw();
- }
- if (modified) {
- if (!AbandonPaint())
- Redraw();
- }
- //Platform::DebugPrintf("end max = %d page = %d\n", nMax, nPage);
-}
-
-void Editor::ChangeSize() {
- DropGraphics();
- SetScrollBars();
- if (wrapState != eWrapNone) {
- PRectangle rcTextArea = GetClientRectangle();
- rcTextArea.left = vs.fixedColumnWidth;
- rcTextArea.right -= vs.rightMarginWidth;
- if (wrapWidth != rcTextArea.Width()) {
- NeedWrapping();
- Redraw();
- }
- }
-}
-
-void Editor::AddChar(char ch) {
- char s[2];
- s[0] = ch;
- s[1] = '\0';
- AddCharUTF(s, 1);
-}
-
-void Editor::AddCharUTF(char *s, unsigned int len, bool treatAsDBCS) {
- bool wasSelection = currentPos != anchor;
- ClearSelection();
- bool charReplaceAction = false;
- if (inOverstrike && !wasSelection && !RangeContainsProtected(currentPos, currentPos + 1)) {
- if (currentPos < (pdoc->Length())) {
- if (!IsEOLChar(pdoc->CharAt(currentPos))) {
- charReplaceAction = true;
- pdoc->BeginUndoAction();
- pdoc->DelChar(currentPos);
- }
- }
- }
- if (pdoc->InsertString(currentPos, s, len)) {
- SetEmptySelection(currentPos + len);
- }
- if (charReplaceAction) {
- pdoc->EndUndoAction();
- }
- EnsureCaretVisible();
- // Avoid blinking during rapid typing:
- ShowCaretAtCurrentPosition();
- if (!caretSticky) {
- SetLastXChosen();
- }
-
- if (treatAsDBCS) {
- NotifyChar((static_cast(s[0]) << 8) |
- static_cast(s[1]));
- } else {
- int byte = static_cast(s[0]);
- if ((byte < 0xC0) || (1 == len)) {
- // Handles UTF-8 characters between 0x01 and 0x7F and single byte
- // characters when not in UTF-8 mode.
- // Also treats \0 and naked trail bytes 0x80 to 0xBF as valid
- // characters representing themselves.
- } else {
- // Unroll 1 to 3 byte UTF-8 sequences. See reference data at:
- // http://www.cl.cam.ac.uk/~mgk25/unicode.html
- // http://www.cl.cam.ac.uk/~mgk25/ucs/examples/UTF-8-test.txt
- if (byte < 0xE0) {
- int byte2 = static_cast(s[1]);
- if ((byte2 & 0xC0) == 0x80) {
- // Two-byte-character lead-byte followed by a trail-byte.
- byte = (((byte & 0x1F) << 6) | (byte2 & 0x3F));
- }
- // A two-byte-character lead-byte not followed by trail-byte
- // represents itself.
- } else if (byte < 0xF0) {
- int byte2 = static_cast(s[1]);
- int byte3 = static_cast(s[2]);
- if (((byte2 & 0xC0) == 0x80) && ((byte3 & 0xC0) == 0x80)) {
- // Three-byte-character lead byte followed by two trail bytes.
- byte = (((byte & 0x0F) << 12) | ((byte2 & 0x3F) << 6) |
- (byte3 & 0x3F));
- }
- // A three-byte-character lead-byte not followed by two trail-bytes
- // represents itself.
- }
- }
- NotifyChar(byte);
- }
-}
-
-void Editor::ClearSelection() {
- if (!SelectionContainsProtected()) {
- int startPos = SelectionStart();
- if (selType == selStream) {
- unsigned int chars = SelectionEnd() - startPos;
- if (0 != chars) {
- pdoc->BeginUndoAction();
- pdoc->DeleteChars(startPos, chars);
- pdoc->EndUndoAction();
- }
- } else {
- pdoc->BeginUndoAction();
- SelectionLineIterator lineIterator(this, false);
- while (lineIterator.Iterate()) {
- startPos = lineIterator.startPos;
- unsigned int chars = lineIterator.endPos - startPos;
- if (0 != chars) {
- pdoc->DeleteChars(startPos, chars);
- }
- }
- pdoc->EndUndoAction();
- selType = selStream;
- }
- SetEmptySelection(startPos);
- }
-}
-
-void Editor::ClearAll() {
- pdoc->BeginUndoAction();
- if (0 != pdoc->Length()) {
- pdoc->DeleteChars(0, pdoc->Length());
- }
- if (!pdoc->IsReadOnly()) {
- cs.Clear();
- }
- pdoc->EndUndoAction();
- anchor = 0;
- currentPos = 0;
- SetTopLine(0);
- SetVerticalScrollPos();
- InvalidateStyleRedraw();
-}
-
-void Editor::ClearDocumentStyle() {
- pdoc->StartStyling(0, '\377');
- pdoc->SetStyleFor(pdoc->Length(), 0);
- cs.ShowAll();
- pdoc->ClearLevels();
-}
-
-void Editor::Cut() {
- if (!pdoc->IsReadOnly() && !SelectionContainsProtected()) {
- Copy();
- ClearSelection();
- }
-}
-
-void Editor::PasteRectangular(int pos, const char *ptr, int len) {
- if (pdoc->IsReadOnly() || SelectionContainsProtected()) {
- return;
- }
- currentPos = pos;
- int xInsert = XFromPosition(currentPos);
- int line = pdoc->LineFromPosition(currentPos);
- bool prevCr = false;
- pdoc->BeginUndoAction();
- for (int i = 0; i < len; i++) {
- if (IsEOLChar(ptr[i])) {
- if ((ptr[i] == '\r') || (!prevCr))
- line++;
- if (line >= pdoc->LinesTotal()) {
- if (pdoc->eolMode != SC_EOL_LF)
- pdoc->InsertChar(pdoc->Length(), '\r');
- if (pdoc->eolMode != SC_EOL_CR)
- pdoc->InsertChar(pdoc->Length(), '\n');
- }
- // Pad the end of lines with spaces if required
- currentPos = PositionFromLineX(line, xInsert);
- if ((XFromPosition(currentPos) < xInsert) && (i + 1 < len)) {
- for (int i = 0; i < xInsert - XFromPosition(currentPos); i++) {
- pdoc->InsertChar(currentPos, ' ');
- currentPos++;
- }
- }
- prevCr = ptr[i] == '\r';
- } else {
- pdoc->InsertString(currentPos, ptr + i, 1);
- currentPos++;
- prevCr = false;
- }
- }
- pdoc->EndUndoAction();
- SetEmptySelection(pos);
-}
-
-bool Editor::CanPaste() {
- return !pdoc->IsReadOnly() && !SelectionContainsProtected();
-}
-
-void Editor::Clear() {
- if (currentPos == anchor) {
- if (!RangeContainsProtected(currentPos, currentPos + 1)) {
- DelChar();
- }
- } else {
- ClearSelection();
- }
- SetEmptySelection(currentPos);
-}
-
-void Editor::SelectAll() {
- SetSelection(0, pdoc->Length());
- Redraw();
-}
-
-void Editor::Undo() {
- if (pdoc->CanUndo()) {
- InvalidateCaret();
- int newPos = pdoc->Undo();
- if (newPos >= 0)
- SetEmptySelection(newPos);
- EnsureCaretVisible();
- }
-}
-
-void Editor::Redo() {
- if (pdoc->CanRedo()) {
- int newPos = pdoc->Redo();
- if (newPos >= 0)
- SetEmptySelection(newPos);
- EnsureCaretVisible();
- }
-}
-
-void Editor::DelChar() {
- if (!RangeContainsProtected(currentPos, currentPos + 1)) {
- pdoc->DelChar(currentPos);
- }
- // Avoid blinking during rapid typing:
- ShowCaretAtCurrentPosition();
-}
-
-void Editor::DelCharBack(bool allowLineStartDeletion) {
- if (currentPos == anchor) {
- if (!RangeContainsProtected(currentPos - 1, currentPos)) {
- int lineCurrentPos = pdoc->LineFromPosition(currentPos);
- if (allowLineStartDeletion || (pdoc->LineStart(lineCurrentPos) != currentPos)) {
- if (pdoc->GetColumn(currentPos) <= pdoc->GetLineIndentation(lineCurrentPos) &&
- pdoc->GetColumn(currentPos) > 0 && pdoc->backspaceUnindents) {
- pdoc->BeginUndoAction();
- int indentation = pdoc->GetLineIndentation(lineCurrentPos);
- int indentationStep = pdoc->IndentSize();
- if (indentation % indentationStep == 0) {
- pdoc->SetLineIndentation(lineCurrentPos, indentation - indentationStep);
- } else {
- pdoc->SetLineIndentation(lineCurrentPos, indentation - (indentation % indentationStep));
- }
- SetEmptySelection(pdoc->GetLineIndentPosition(lineCurrentPos));
- pdoc->EndUndoAction();
- } else {
- pdoc->DelCharBack(currentPos);
- }
- }
- }
- } else {
- ClearSelection();
- SetEmptySelection(currentPos);
- }
- // Avoid blinking during rapid typing:
- ShowCaretAtCurrentPosition();
-}
-
-void Editor::NotifyFocus(bool) {}
-
-void Editor::NotifyStyleToNeeded(int endStyleNeeded) {
- SCNotification scn = {0};
- scn.nmhdr.code = SCN_STYLENEEDED;
- scn.position = endStyleNeeded;
- NotifyParent(scn);
-}
-
-void Editor::NotifyStyleNeeded(Document*, void *, int endStyleNeeded) {
- NotifyStyleToNeeded(endStyleNeeded);
-}
-
-void Editor::NotifyChar(int ch) {
- SCNotification scn = {0};
- scn.nmhdr.code = SCN_CHARADDED;
- scn.ch = ch;
- NotifyParent(scn);
- if (recordingMacro) {
- char txt[2];
- txt[0] = static_cast(ch);
- txt[1] = '\0';
- NotifyMacroRecord(SCI_REPLACESEL, 0, reinterpret_cast(txt));
- }
-}
-
-void Editor::NotifySavePoint(bool isSavePoint) {
- SCNotification scn = {0};
- if (isSavePoint) {
- scn.nmhdr.code = SCN_SAVEPOINTREACHED;
- } else {
- scn.nmhdr.code = SCN_SAVEPOINTLEFT;
- }
- NotifyParent(scn);
-}
-
-void Editor::NotifyModifyAttempt() {
- SCNotification scn = {0};
- scn.nmhdr.code = SCN_MODIFYATTEMPTRO;
- NotifyParent(scn);
-}
-
-void Editor::NotifyDoubleClick(Point, bool) {
- SCNotification scn = {0};
- scn.nmhdr.code = SCN_DOUBLECLICK;
- NotifyParent(scn);
-}
-
-void Editor::NotifyHotSpotDoubleClicked(int position, bool shift, bool ctrl, bool alt) {
- SCNotification scn = {0};
- scn.nmhdr.code = SCN_HOTSPOTDOUBLECLICK;
- scn.position = position;
- scn.modifiers = (shift ? SCI_SHIFT : 0) | (ctrl ? SCI_CTRL : 0) |
- (alt ? SCI_ALT : 0);
- NotifyParent(scn);
-}
-
-void Editor::NotifyHotSpotClicked(int position, bool shift, bool ctrl, bool alt) {
- SCNotification scn = {0};
- scn.nmhdr.code = SCN_HOTSPOTCLICK;
- scn.position = position;
- scn.modifiers = (shift ? SCI_SHIFT : 0) | (ctrl ? SCI_CTRL : 0) |
- (alt ? SCI_ALT : 0);
- NotifyParent(scn);
-}
-
-void Editor::NotifyUpdateUI() {
- SCNotification scn = {0};
- scn.nmhdr.code = SCN_UPDATEUI;
- NotifyParent(scn);
-}
-
-void Editor::NotifyPainted() {
- SCNotification scn = {0};
- scn.nmhdr.code = SCN_PAINTED;
- NotifyParent(scn);
-}
-
-bool Editor::NotifyMarginClick(Point pt, bool shift, bool ctrl, bool alt) {
- int marginClicked = -1;
- int x = 0;
- for (int margin = 0; margin < ViewStyle::margins; margin++) {
- if ((pt.x > x) && (pt.x < x + vs.ms[margin].width))
- marginClicked = margin;
- x += vs.ms[margin].width;
- }
- if ((marginClicked >= 0) && vs.ms[marginClicked].sensitive) {
- SCNotification scn = {0};
- scn.nmhdr.code = SCN_MARGINCLICK;
- scn.modifiers = (shift ? SCI_SHIFT : 0) | (ctrl ? SCI_CTRL : 0) |
- (alt ? SCI_ALT : 0);
- scn.position = pdoc->LineStart(LineFromLocation(pt));
- scn.margin = marginClicked;
- NotifyParent(scn);
- return true;
- } else {
- return false;
- }
-}
-
-void Editor::NotifyNeedShown(int pos, int len) {
- SCNotification scn = {0};
- scn.nmhdr.code = SCN_NEEDSHOWN;
- scn.position = pos;
- scn.length = len;
- NotifyParent(scn);
-}
-
-void Editor::NotifyDwelling(Point pt, bool state) {
- SCNotification scn = {0};
- scn.nmhdr.code = state ? SCN_DWELLSTART : SCN_DWELLEND;
- scn.position = PositionFromLocationClose(pt);
- scn.x = pt.x;
- scn.y = pt.y;
- NotifyParent(scn);
-}
-
-void Editor::NotifyZoom() {
- SCNotification scn = {0};
- scn.nmhdr.code = SCN_ZOOM;
- NotifyParent(scn);
-}
-
-// Notifications from document
-void Editor::NotifyModifyAttempt(Document*, void *) {
- //Platform::DebugPrintf("** Modify Attempt\n");
- NotifyModifyAttempt();
-}
-
-void Editor::NotifyMove(int position) {
- SCNotification scn = {0};
- scn.nmhdr.code = SCN_POSCHANGED;
- scn.position = position;
- NotifyParent(scn);
-}
-
-void Editor::NotifySavePoint(Document*, void *, bool atSavePoint) {
- //Platform::DebugPrintf("** Save Point %s\n", atSavePoint ? "On" : "Off");
- NotifySavePoint(atSavePoint);
-}
-
-void Editor::CheckModificationForWrap(DocModification mh) {
- if (mh.modificationType & (SC_MOD_INSERTTEXT|SC_MOD_DELETETEXT)) {
- llc.Invalidate(LineLayout::llCheckTextAndStyle);
- if (wrapState != eWrapNone) {
- int lineDoc = pdoc->LineFromPosition(mh.position);
- int lines = Platform::Maximum(0, mh.linesAdded);
- NeedWrapping(lineDoc, lineDoc + lines + 1);
- }
- }
-}
-
-// Move a position so it is still after the same character as before the insertion.
-static inline int MovePositionForInsertion(int position, int startInsertion, int length) {
- if (position > startInsertion) {
- return position + length;
- }
- return position;
-}
-
-// Move a position so it is still after the same character as before the deletion if that
-// character is still present else after the previous surviving character.
-static inline int MovePositionForDeletion(int position, int startDeletion, int length) {
- if (position > startDeletion) {
- int endDeletion = startDeletion + length;
- if (position > endDeletion) {
- return position - length;
- } else {
- return startDeletion;
- }
- } else {
- return position;
- }
-}
-
-void Editor::NotifyModified(Document*, DocModification mh, void *) {
- needUpdateUI = true;
- if (paintState == painting) {
- CheckForChangeOutsidePaint(Range(mh.position, mh.position + mh.length));
- }
- if (mh.modificationType & SC_MOD_CHANGESTYLE) {
- pdoc->IncrementStyleClock();
- if (paintState == notPainting) {
- if (mh.position < pdoc->LineStart(topLine)) {
- // Styling performed before this view
- Redraw();
- } else {
- InvalidateRange(mh.position, mh.position + mh.length);
- }
- }
- llc.Invalidate(LineLayout::llCheckTextAndStyle);
- } else {
- // Move selection and brace highlights
- if (mh.modificationType & SC_MOD_INSERTTEXT) {
- currentPos = MovePositionForInsertion(currentPos, mh.position, mh.length);
- anchor = MovePositionForInsertion(anchor, mh.position, mh.length);
- braces[0] = MovePositionForInsertion(braces[0], mh.position, mh.length);
- braces[1] = MovePositionForInsertion(braces[1], mh.position, mh.length);
- } else if (mh.modificationType & SC_MOD_DELETETEXT) {
- currentPos = MovePositionForDeletion(currentPos, mh.position, mh.length);
- anchor = MovePositionForDeletion(anchor, mh.position, mh.length);
- braces[0] = MovePositionForDeletion(braces[0], mh.position, mh.length);
- braces[1] = MovePositionForDeletion(braces[1], mh.position, mh.length);
- }
- if (cs.LinesDisplayed() < cs.LinesInDoc()) {
- // Some lines are hidden so may need shown.
- // TODO: check if the modified area is hidden.
- if (mh.modificationType & SC_MOD_BEFOREINSERT) {
- NotifyNeedShown(mh.position, 0);
- } else if (mh.modificationType & SC_MOD_BEFOREDELETE) {
- NotifyNeedShown(mh.position, mh.length);
- }
- }
- if (mh.linesAdded != 0) {
- // Update contraction state for inserted and removed lines
- // lineOfPos should be calculated in context of state before modification, shouldn't it
- int lineOfPos = pdoc->LineFromPosition(mh.position);
- if (mh.linesAdded > 0) {
- cs.InsertLines(lineOfPos, mh.linesAdded);
- } else {
- cs.DeleteLines(lineOfPos, -mh.linesAdded);
- }
- }
- CheckModificationForWrap(mh);
- if (mh.linesAdded != 0) {
- // Avoid scrolling of display if change before current display
- if (mh.position < posTopLine && !CanDeferToLastStep(mh)) {
- int newTop = Platform::Clamp(topLine + mh.linesAdded, 0, MaxScrollPos());
- if (newTop != topLine) {
- SetTopLine(newTop);
- SetVerticalScrollPos();
- }
- }
-
- //Platform::DebugPrintf("** %x Doc Changed\n", this);
- // TODO: could invalidate from mh.startModification to end of screen
- //InvalidateRange(mh.position, mh.position + mh.length);
- if (paintState == notPainting && !CanDeferToLastStep(mh)) {
- Redraw();
- }
- } else {
- //Platform::DebugPrintf("** %x Line Changed %d .. %d\n", this,
- // mh.position, mh.position + mh.length);
- if (paintState == notPainting && mh.length && !CanEliminate(mh)) {
- InvalidateRange(mh.position, mh.position + mh.length);
- }
- }
- }
-
- if (mh.linesAdded != 0 && !CanDeferToLastStep(mh)) {
- SetScrollBars();
- }
-
- if (mh.modificationType & SC_MOD_CHANGEMARKER) {
- if ((paintState == notPainting) || !PaintContainsMargin()) {
- if (mh.modificationType & SC_MOD_CHANGEFOLD) {
- // Fold changes can affect the drawing of following lines so redraw whole margin
- RedrawSelMargin();
- } else {
- RedrawSelMargin(mh.line);
- }
- }
- }
-
- // NOW pay the piper WRT "deferred" visual updates
- if (IsLastStep(mh)) {
- SetScrollBars();
- Redraw();
- }
-
- // If client wants to see this modification
- if (mh.modificationType & modEventMask) {
- if ((mh.modificationType & SC_MOD_CHANGESTYLE) == 0) {
- // Real modification made to text of document.
- NotifyChange(); // Send EN_CHANGE
- }
-
- SCNotification scn = {0};
- scn.nmhdr.code = SCN_MODIFIED;
- scn.position = mh.position;
- scn.modificationType = mh.modificationType;
- scn.text = mh.text;
- scn.length = mh.length;
- scn.linesAdded = mh.linesAdded;
- scn.line = mh.line;
- scn.foldLevelNow = mh.foldLevelNow;
- scn.foldLevelPrev = mh.foldLevelPrev;
- NotifyParent(scn);
- }
-}
-
-void Editor::NotifyDeleted(Document *, void *) {
- /* Do nothing */
-}
-
-void Editor::NotifyMacroRecord(unsigned int iMessage, uptr_t wParam, sptr_t lParam) {
-
- // Enumerates all macroable messages
- switch (iMessage) {
- case SCI_CUT:
- case SCI_COPY:
- case SCI_PASTE:
- case SCI_CLEAR:
- case SCI_REPLACESEL:
- case SCI_ADDTEXT:
- case SCI_INSERTTEXT:
- case SCI_APPENDTEXT:
- case SCI_CLEARALL:
- case SCI_SELECTALL:
- case SCI_GOTOLINE:
- case SCI_GOTOPOS:
- case SCI_SEARCHANCHOR:
- case SCI_SEARCHNEXT:
- case SCI_SEARCHPREV:
- case SCI_LINEDOWN:
- case SCI_LINEDOWNEXTEND:
- case SCI_PARADOWN:
- case SCI_PARADOWNEXTEND:
- case SCI_LINEUP:
- case SCI_LINEUPEXTEND:
- case SCI_PARAUP:
- case SCI_PARAUPEXTEND:
- case SCI_CHARLEFT:
- case SCI_CHARLEFTEXTEND:
- case SCI_CHARRIGHT:
- case SCI_CHARRIGHTEXTEND:
- case SCI_WORDLEFT:
- case SCI_WORDLEFTEXTEND:
- case SCI_WORDRIGHT:
- case SCI_WORDRIGHTEXTEND:
- case SCI_WORDPARTLEFT:
- case SCI_WORDPARTLEFTEXTEND:
- case SCI_WORDPARTRIGHT:
- case SCI_WORDPARTRIGHTEXTEND:
- case SCI_WORDLEFTEND:
- case SCI_WORDLEFTENDEXTEND:
- case SCI_WORDRIGHTEND:
- case SCI_WORDRIGHTENDEXTEND:
- case SCI_HOME:
- case SCI_HOMEEXTEND:
- case SCI_LINEEND:
- case SCI_LINEENDEXTEND:
- case SCI_HOMEWRAP:
- case SCI_HOMEWRAPEXTEND:
- case SCI_LINEENDWRAP:
- case SCI_LINEENDWRAPEXTEND:
- case SCI_DOCUMENTSTART:
- case SCI_DOCUMENTSTARTEXTEND:
- case SCI_DOCUMENTEND:
- case SCI_DOCUMENTENDEXTEND:
- case SCI_STUTTEREDPAGEUP:
- case SCI_STUTTEREDPAGEUPEXTEND:
- case SCI_STUTTEREDPAGEDOWN:
- case SCI_STUTTEREDPAGEDOWNEXTEND:
- case SCI_PAGEUP:
- case SCI_PAGEUPEXTEND:
- case SCI_PAGEDOWN:
- case SCI_PAGEDOWNEXTEND:
- case SCI_EDITTOGGLEOVERTYPE:
- case SCI_CANCEL:
- case SCI_DELETEBACK:
- case SCI_TAB:
- case SCI_BACKTAB:
- case SCI_FORMFEED:
- case SCI_VCHOME:
- case SCI_VCHOMEEXTEND:
- case SCI_VCHOMEWRAP:
- case SCI_VCHOMEWRAPEXTEND:
- case SCI_DELWORDLEFT:
- case SCI_DELWORDRIGHT:
- case SCI_DELLINELEFT:
- case SCI_DELLINERIGHT:
- case SCI_LINECOPY:
- case SCI_LINECUT:
- case SCI_LINEDELETE:
- case SCI_LINETRANSPOSE:
- case SCI_LINEDUPLICATE:
- case SCI_LOWERCASE:
- case SCI_UPPERCASE:
- case SCI_LINESCROLLDOWN:
- case SCI_LINESCROLLUP:
- case SCI_DELETEBACKNOTLINE:
- case SCI_HOMEDISPLAY:
- case SCI_HOMEDISPLAYEXTEND:
- case SCI_LINEENDDISPLAY:
- case SCI_LINEENDDISPLAYEXTEND:
- case SCI_SETSELECTIONMODE:
- case SCI_LINEDOWNRECTEXTEND:
- case SCI_LINEUPRECTEXTEND:
- case SCI_CHARLEFTRECTEXTEND:
- case SCI_CHARRIGHTRECTEXTEND:
- case SCI_HOMERECTEXTEND:
- case SCI_VCHOMERECTEXTEND:
- case SCI_LINEENDRECTEXTEND:
- case SCI_PAGEUPRECTEXTEND:
- case SCI_PAGEDOWNRECTEXTEND:
- case SCI_SELECTIONDUPLICATE:
- break;
-
- // Filter out all others like display changes. Also, newlines are redundant
- // with char insert messages.
- case SCI_NEWLINE:
- default:
- // printf("Filtered out %ld of macro recording\n", iMessage);
- return ;
- }
-
- // Send notification
- SCNotification scn = {0};
- scn.nmhdr.code = SCN_MACRORECORD;
- scn.message = iMessage;
- scn.wParam = wParam;
- scn.lParam = lParam;
- NotifyParent(scn);
-}
-
-/**
- * Force scroll and keep position relative to top of window.
- *
- * If stuttered = true and not already at first/last row, move to first/last row of window.
- * If stuttered = true and already at first/last row, scroll as normal.
- */
-void Editor::PageMove(int direction, selTypes sel, bool stuttered) {
- int topLineNew, newPos;
-
- // I consider only the caretYSlop, and ignore the caretYPolicy-- is that a problem?
- int currentLine = pdoc->LineFromPosition(currentPos);
- int topStutterLine = topLine + caretYSlop;
- int bottomStutterLine = topLine + LinesToScroll() - caretYSlop;
-
- if (stuttered && (direction < 0 && currentLine > topStutterLine)) {
- topLineNew = topLine;
- newPos = PositionFromLocation(Point(lastXChosen, vs.lineHeight * caretYSlop));
-
- } else if (stuttered && (direction > 0 && currentLine < bottomStutterLine)) {
- topLineNew = topLine;
- newPos = PositionFromLocation(Point(lastXChosen, vs.lineHeight * (LinesToScroll() - caretYSlop)));
-
- } else {
- Point pt = LocationFromPosition(currentPos);
-
- topLineNew = Platform::Clamp(
- topLine + direction * LinesToScroll(), 0, MaxScrollPos());
- newPos = PositionFromLocation(
- Point(lastXChosen, pt.y + direction * (vs.lineHeight * LinesToScroll())));
- }
-
- if (topLineNew != topLine) {
- SetTopLine(topLineNew);
- MovePositionTo(newPos, sel);
- Redraw();
- SetVerticalScrollPos();
- } else {
- MovePositionTo(newPos, sel);
- }
-}
-
-void Editor::ChangeCaseOfSelection(bool makeUpperCase) {
- pdoc->BeginUndoAction();
- int startCurrent = currentPos;
- int startAnchor = anchor;
- if (selType == selStream) {
- pdoc->ChangeCase(Range(SelectionStart(), SelectionEnd()),
- makeUpperCase);
- SetSelection(startCurrent, startAnchor);
- } else {
- SelectionLineIterator lineIterator(this, false);
- while (lineIterator.Iterate()) {
- pdoc->ChangeCase(
- Range(lineIterator.startPos, lineIterator.endPos),
- makeUpperCase);
- }
- // Would be nicer to keep the rectangular selection but this is complex
- SetEmptySelection(startCurrent);
- }
- pdoc->EndUndoAction();
-}
-
-void Editor::LineTranspose() {
- int line = pdoc->LineFromPosition(currentPos);
- if (line > 0) {
- int startPrev = pdoc->LineStart(line - 1);
- int endPrev = pdoc->LineEnd(line - 1);
- int start = pdoc->LineStart(line);
- int end = pdoc->LineEnd(line);
- int startNext = pdoc->LineStart(line + 1);
- if (end < pdoc->Length()) {
- end = startNext;
- char *thisLine = CopyRange(start, end);
- pdoc->DeleteChars(start, end - start);
- if (pdoc->InsertString(startPrev, thisLine, end - start)) {
- MovePositionTo(startPrev + end - start);
- }
- delete []thisLine;
- } else {
- // Last line so line has no line end
- char *thisLine = CopyRange(start, end);
- char *prevEnd = CopyRange(endPrev, start);
- pdoc->DeleteChars(endPrev, end - endPrev);
- pdoc->InsertString(startPrev, thisLine, end - start);
- if (pdoc->InsertString(startPrev + end - start, prevEnd, start - endPrev)) {
- MovePositionTo(startPrev + end - endPrev);
- }
- delete []thisLine;
- delete []prevEnd;
- }
-
- }
-}
-
-void Editor::Duplicate(bool forLine) {
- int start = SelectionStart();
- int end = SelectionEnd();
- if (start == end) {
- forLine = true;
- }
- if (forLine) {
- int line = pdoc->LineFromPosition(currentPos);
- start = pdoc->LineStart(line);
- end = pdoc->LineEnd(line);
- }
- char *text = CopyRange(start, end);
- if (forLine) {
- const char *eol = StringFromEOLMode(pdoc->eolMode);
- pdoc->InsertString(end, eol);
- pdoc->InsertString(end + istrlen(eol), text, end - start);
- } else {
- pdoc->InsertString(end, text, end - start);
- }
- delete []text;
-}
-
-void Editor::CancelModes() {
- moveExtendsSelection = false;
-}
-
-void Editor::NewLine() {
- ClearSelection();
- const char *eol = "\n";
- if (pdoc->eolMode == SC_EOL_CRLF) {
- eol = "\r\n";
- } else if (pdoc->eolMode == SC_EOL_CR) {
- eol = "\r";
- } // else SC_EOL_LF -> "\n" already set
- if (pdoc->InsertString(currentPos, eol)) {
- SetEmptySelection(currentPos + istrlen(eol));
- while (*eol) {
- NotifyChar(*eol);
- eol++;
- }
- }
- SetLastXChosen();
- EnsureCaretVisible();
- // Avoid blinking during rapid typing:
- ShowCaretAtCurrentPosition();
-}
-
-void Editor::CursorUpOrDown(int direction, selTypes sel) {
- Point pt = LocationFromPosition(currentPos);
- int posNew = PositionFromLocation(
- Point(lastXChosen, pt.y + direction * vs.lineHeight));
- if (direction < 0) {
- // Line wrapping may lead to a location on the same line, so
- // seek back if that is the case.
- // There is an equivalent case when moving down which skips
- // over a line but as that does not trap the user it is fine.
- Point ptNew = LocationFromPosition(posNew);
- while ((posNew > 0) && (pt.y == ptNew.y)) {
- posNew--;
- ptNew = LocationFromPosition(posNew);
- }
- }
- MovePositionTo(posNew, sel);
-}
-
-void Editor::ParaUpOrDown(int direction, selTypes sel) {
- int lineDoc, savedPos = currentPos;
- do {
- MovePositionTo(direction > 0 ? pdoc->ParaDown(currentPos) : pdoc->ParaUp(currentPos), sel);
- lineDoc = pdoc->LineFromPosition(currentPos);
- if (direction > 0) {
- if (currentPos >= pdoc->Length() && !cs.GetVisible(lineDoc)) {
- if (sel == noSel) {
- MovePositionTo(pdoc->LineEndPosition(savedPos));
- }
- break;
- }
- }
- } while (!cs.GetVisible(lineDoc));
-}
-
-int Editor::StartEndDisplayLine(int pos, bool start) {
- RefreshStyleData();
- int line = pdoc->LineFromPosition(pos);
- AutoSurface surface(this);
- AutoLineLayout ll(llc, RetrieveLineLayout(line));
- int posRet = INVALID_POSITION;
- if (surface && ll) {
- unsigned int posLineStart = pdoc->LineStart(line);
- LayoutLine(line, surface, vs, ll, wrapWidth);
- int posInLine = pos - posLineStart;
- if (posInLine <= ll->maxLineLength) {
- for (int subLine = 0; subLine < ll->lines; subLine++) {
- if ((posInLine >= ll->LineStart(subLine)) && (posInLine <= ll->LineStart(subLine + 1))) {
- if (start) {
- posRet = ll->LineStart(subLine) + posLineStart;
- } else {
- if (subLine == ll->lines - 1)
- posRet = ll->LineStart(subLine + 1) + posLineStart;
- else
- posRet = ll->LineStart(subLine + 1) + posLineStart - 1;
- }
- }
- }
- }
- }
- if (posRet == INVALID_POSITION) {
- return pos;
- } else {
- return posRet;
- }
-}
-
-int Editor::KeyCommand(unsigned int iMessage) {
- switch (iMessage) {
- case SCI_LINEDOWN:
- CursorUpOrDown(1);
- break;
- case SCI_LINEDOWNEXTEND:
- CursorUpOrDown(1, selStream);
- break;
- case SCI_LINEDOWNRECTEXTEND:
- CursorUpOrDown(1, selRectangle);
- break;
- case SCI_PARADOWN:
- ParaUpOrDown(1);
- break;
- case SCI_PARADOWNEXTEND:
- ParaUpOrDown(1, selStream);
- break;
- case SCI_LINESCROLLDOWN:
- ScrollTo(topLine + 1);
- MoveCaretInsideView(false);
- break;
- case SCI_LINEUP:
- CursorUpOrDown(-1);
- break;
- case SCI_LINEUPEXTEND:
- CursorUpOrDown(-1, selStream);
- break;
- case SCI_LINEUPRECTEXTEND:
- CursorUpOrDown(-1, selRectangle);
- break;
- case SCI_PARAUP:
- ParaUpOrDown(-1);
- break;
- case SCI_PARAUPEXTEND:
- ParaUpOrDown(-1, selStream);
- break;
- case SCI_LINESCROLLUP:
- ScrollTo(topLine - 1);
- MoveCaretInsideView(false);
- break;
- case SCI_CHARLEFT:
- if (SelectionEmpty() || moveExtendsSelection) {
- MovePositionTo(MovePositionSoVisible(currentPos - 1, -1));
- } else {
- MovePositionTo(SelectionStart());
- }
- SetLastXChosen();
- break;
- case SCI_CHARLEFTEXTEND:
- MovePositionTo(MovePositionSoVisible(currentPos - 1, -1), selStream);
- SetLastXChosen();
- break;
- case SCI_CHARLEFTRECTEXTEND:
- MovePositionTo(MovePositionSoVisible(currentPos - 1, -1), selRectangle);
- SetLastXChosen();
- break;
- case SCI_CHARRIGHT:
- if (SelectionEmpty() || moveExtendsSelection) {
- MovePositionTo(MovePositionSoVisible(currentPos + 1, 1));
- } else {
- MovePositionTo(SelectionEnd());
- }
- SetLastXChosen();
- break;
- case SCI_CHARRIGHTEXTEND:
- MovePositionTo(MovePositionSoVisible(currentPos + 1, 1), selStream);
- SetLastXChosen();
- break;
- case SCI_CHARRIGHTRECTEXTEND:
- MovePositionTo(MovePositionSoVisible(currentPos + 1, 1), selRectangle);
- SetLastXChosen();
- break;
- case SCI_WORDLEFT:
- MovePositionTo(MovePositionSoVisible(pdoc->NextWordStart(currentPos, -1), -1));
- SetLastXChosen();
- break;
- case SCI_WORDLEFTEXTEND:
- MovePositionTo(MovePositionSoVisible(pdoc->NextWordStart(currentPos, -1), -1), selStream);
- SetLastXChosen();
- break;
- case SCI_WORDRIGHT:
- MovePositionTo(MovePositionSoVisible(pdoc->NextWordStart(currentPos, 1), 1));
- SetLastXChosen();
- break;
- case SCI_WORDRIGHTEXTEND:
- MovePositionTo(MovePositionSoVisible(pdoc->NextWordStart(currentPos, 1), 1), selStream);
- SetLastXChosen();
- break;
-
- case SCI_WORDLEFTEND:
- MovePositionTo(MovePositionSoVisible(pdoc->NextWordEnd(currentPos, -1), -1));
- SetLastXChosen();
- break;
- case SCI_WORDLEFTENDEXTEND:
- MovePositionTo(MovePositionSoVisible(pdoc->NextWordEnd(currentPos, -1), -1), selStream);
- SetLastXChosen();
- break;
- case SCI_WORDRIGHTEND:
- MovePositionTo(MovePositionSoVisible(pdoc->NextWordEnd(currentPos, 1), 1));
- SetLastXChosen();
- break;
- case SCI_WORDRIGHTENDEXTEND:
- MovePositionTo(MovePositionSoVisible(pdoc->NextWordEnd(currentPos, 1), 1), selStream);
- SetLastXChosen();
- break;
-
- case SCI_HOME:
- MovePositionTo(pdoc->LineStart(pdoc->LineFromPosition(currentPos)));
- SetLastXChosen();
- break;
- case SCI_HOMEEXTEND:
- MovePositionTo(pdoc->LineStart(pdoc->LineFromPosition(currentPos)), selStream);
- SetLastXChosen();
- break;
- case SCI_HOMERECTEXTEND:
- MovePositionTo(pdoc->LineStart(pdoc->LineFromPosition(currentPos)), selRectangle);
- SetLastXChosen();
- break;
- case SCI_LINEEND:
- MovePositionTo(pdoc->LineEndPosition(currentPos));
- SetLastXChosen();
- break;
- case SCI_LINEENDEXTEND:
- MovePositionTo(pdoc->LineEndPosition(currentPos), selStream);
- SetLastXChosen();
- break;
- case SCI_LINEENDRECTEXTEND:
- MovePositionTo(pdoc->LineEndPosition(currentPos), selRectangle);
- SetLastXChosen();
- break;
- case SCI_HOMEWRAP: {
- int homePos = MovePositionSoVisible(StartEndDisplayLine(currentPos, true), -1);
- if (currentPos <= homePos)
- homePos = pdoc->LineStart(pdoc->LineFromPosition(currentPos));
- MovePositionTo(homePos);
- SetLastXChosen();
- }
- break;
- case SCI_HOMEWRAPEXTEND: {
- int homePos = MovePositionSoVisible(StartEndDisplayLine(currentPos, true), -1);
- if (currentPos <= homePos)
- homePos = pdoc->LineStart(pdoc->LineFromPosition(currentPos));
- MovePositionTo(homePos, selStream);
- SetLastXChosen();
- }
- break;
- case SCI_LINEENDWRAP: {
- int endPos = MovePositionSoVisible(StartEndDisplayLine(currentPos, false), 1);
- 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);
- 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();
- }
- break;
- case SCI_DOCUMENTSTART:
- MovePositionTo(0);
- SetLastXChosen();
- break;
- case SCI_DOCUMENTSTARTEXTEND:
- MovePositionTo(0, selStream);
- SetLastXChosen();
- break;
- case SCI_DOCUMENTEND:
- MovePositionTo(pdoc->Length());
- SetLastXChosen();
- break;
- case SCI_DOCUMENTENDEXTEND:
- MovePositionTo(pdoc->Length(), selStream);
- SetLastXChosen();
- break;
- case SCI_STUTTEREDPAGEUP:
- PageMove(-1, noSel, true);
- break;
- case SCI_STUTTEREDPAGEUPEXTEND:
- PageMove(-1, selStream, true);
- break;
- case SCI_STUTTEREDPAGEDOWN:
- PageMove(1, noSel, true);
- break;
- case SCI_STUTTEREDPAGEDOWNEXTEND:
- PageMove(1, selStream, true);
- break;
- case SCI_PAGEUP:
- PageMove(-1);
- break;
- case SCI_PAGEUPEXTEND:
- PageMove(-1, selStream);
- break;
- case SCI_PAGEUPRECTEXTEND:
- PageMove(-1, selRectangle);
- break;
- case SCI_PAGEDOWN:
- PageMove(1);
- break;
- case SCI_PAGEDOWNEXTEND:
- PageMove(1, selStream);
- break;
- case SCI_PAGEDOWNRECTEXTEND:
- PageMove(1, selRectangle);
- break;
- case SCI_EDITTOGGLEOVERTYPE:
- inOverstrike = !inOverstrike;
- DropCaret();
- ShowCaretAtCurrentPosition();
- NotifyUpdateUI();
- break;
- case SCI_CANCEL: // Cancel any modes - handled in subclass
- // Also unselect text
- CancelModes();
- break;
- case SCI_DELETEBACK:
- DelCharBack(true);
- if (!caretSticky) {
- SetLastXChosen();
- }
- EnsureCaretVisible();
- break;
- case SCI_DELETEBACKNOTLINE:
- DelCharBack(false);
- if (!caretSticky) {
- SetLastXChosen();
- }
- EnsureCaretVisible();
- break;
- case SCI_TAB:
- Indent(true);
- if (!caretSticky) {
- SetLastXChosen();
- }
- EnsureCaretVisible();
- break;
- case SCI_BACKTAB:
- Indent(false);
- if (!caretSticky) {
- SetLastXChosen();
- }
- EnsureCaretVisible();
- break;
- case SCI_NEWLINE:
- NewLine();
- break;
- case SCI_FORMFEED:
- AddChar('\f');
- break;
- case SCI_VCHOME:
- MovePositionTo(pdoc->VCHomePosition(currentPos));
- SetLastXChosen();
- break;
- case SCI_VCHOMEEXTEND:
- MovePositionTo(pdoc->VCHomePosition(currentPos), selStream);
- SetLastXChosen();
- break;
- case SCI_VCHOMERECTEXTEND:
- MovePositionTo(pdoc->VCHomePosition(currentPos), selRectangle);
- SetLastXChosen();
- break;
- case SCI_VCHOMEWRAP: {
- int homePos = pdoc->VCHomePosition(currentPos);
- int viewLineStart = MovePositionSoVisible(StartEndDisplayLine(currentPos, true), -1);
- if ((viewLineStart < currentPos) && (viewLineStart > homePos))
- homePos = viewLineStart;
-
- MovePositionTo(homePos);
- SetLastXChosen();
- }
- break;
- case SCI_VCHOMEWRAPEXTEND: {
- int homePos = pdoc->VCHomePosition(currentPos);
- int viewLineStart = MovePositionSoVisible(StartEndDisplayLine(currentPos, true), -1);
- if ((viewLineStart < currentPos) && (viewLineStart > homePos))
- homePos = viewLineStart;
-
- MovePositionTo(homePos, selStream);
- SetLastXChosen();
- }
- break;
- case SCI_ZOOMIN:
- if (vs.zoomLevel < 20) {
- vs.zoomLevel++;
- InvalidateStyleRedraw();
- NotifyZoom();
- }
- break;
- case SCI_ZOOMOUT:
- if (vs.zoomLevel > -10) {
- vs.zoomLevel--;
- InvalidateStyleRedraw();
- NotifyZoom();
- }
- break;
- case SCI_DELWORDLEFT: {
- int startWord = pdoc->NextWordStart(currentPos, -1);
- pdoc->DeleteChars(startWord, currentPos - startWord);
- SetLastXChosen();
- }
- break;
- case SCI_DELWORDRIGHT: {
- int endWord = pdoc->NextWordStart(currentPos, 1);
- pdoc->DeleteChars(currentPos, endWord - currentPos);
- }
- break;
- case SCI_DELLINELEFT: {
- int line = pdoc->LineFromPosition(currentPos);
- int start = pdoc->LineStart(line);
- pdoc->DeleteChars(start, currentPos - start);
- SetLastXChosen();
- }
- break;
- case SCI_DELLINERIGHT: {
- int line = pdoc->LineFromPosition(currentPos);
- int end = pdoc->LineEnd(line);
- pdoc->DeleteChars(currentPos, end - currentPos);
- }
- break;
- case SCI_LINECOPY: {
- int lineStart = pdoc->LineFromPosition(SelectionStart());
- int lineEnd = pdoc->LineFromPosition(SelectionEnd());
- CopyRangeToClipboard(pdoc->LineStart(lineStart),
- pdoc->LineStart(lineEnd + 1));
- }
- break;
- case SCI_LINECUT: {
- int lineStart = pdoc->LineFromPosition(SelectionStart());
- int lineEnd = pdoc->LineFromPosition(SelectionEnd());
- int start = pdoc->LineStart(lineStart);
- int end = pdoc->LineStart(lineEnd + 1);
- SetSelection(start, end);
- Cut();
- SetLastXChosen();
- }
- break;
- case SCI_LINEDELETE: {
- int line = pdoc->LineFromPosition(currentPos);
- int start = pdoc->LineStart(line);
- int end = pdoc->LineStart(line + 1);
- pdoc->DeleteChars(start, end - start);
- }
- break;
- case SCI_LINETRANSPOSE:
- LineTranspose();
- break;
- case SCI_LINEDUPLICATE:
- Duplicate(true);
- break;
- case SCI_SELECTIONDUPLICATE:
- Duplicate(false);
- break;
- case SCI_LOWERCASE:
- ChangeCaseOfSelection(false);
- break;
- case SCI_UPPERCASE:
- ChangeCaseOfSelection(true);
- break;
- case SCI_WORDPARTLEFT:
- MovePositionTo(MovePositionSoVisible(pdoc->WordPartLeft(currentPos), -1));
- SetLastXChosen();
- break;
- case SCI_WORDPARTLEFTEXTEND:
- MovePositionTo(MovePositionSoVisible(pdoc->WordPartLeft(currentPos), -1), selStream);
- SetLastXChosen();
- break;
- case SCI_WORDPARTRIGHT:
- MovePositionTo(MovePositionSoVisible(pdoc->WordPartRight(currentPos), 1));
- SetLastXChosen();
- break;
- case SCI_WORDPARTRIGHTEXTEND:
- MovePositionTo(MovePositionSoVisible(pdoc->WordPartRight(currentPos), 1), selStream);
- SetLastXChosen();
- break;
- case SCI_HOMEDISPLAY:
- MovePositionTo(MovePositionSoVisible(
- StartEndDisplayLine(currentPos, true), -1));
- SetLastXChosen();
- break;
- case SCI_HOMEDISPLAYEXTEND:
- MovePositionTo(MovePositionSoVisible(
- StartEndDisplayLine(currentPos, true), -1), selStream);
- SetLastXChosen();
- break;
- case SCI_LINEENDDISPLAY:
- MovePositionTo(MovePositionSoVisible(
- StartEndDisplayLine(currentPos, false), 1));
- SetLastXChosen();
- break;
- case SCI_LINEENDDISPLAYEXTEND:
- MovePositionTo(MovePositionSoVisible(
- StartEndDisplayLine(currentPos, false), 1), selStream);
- SetLastXChosen();
- break;
- }
- return 0;
-}
-
-int Editor::KeyDefault(int, int) {
- return 0;
-}
-
-int Editor::KeyDown(int key, bool shift, bool ctrl, bool alt, bool *consumed) {
- DwellEnd(false);
- int modifiers = (shift ? SCI_SHIFT : 0) | (ctrl ? SCI_CTRL : 0) |
- (alt ? SCI_ALT : 0);
- int msg = kmap.Find(key, modifiers);
- if (msg) {
- if (consumed)
- *consumed = true;
- return WndProc(msg, 0, 0);
- } else {
- if (consumed)
- *consumed = false;
- return KeyDefault(key, modifiers);
- }
-}
-
-void Editor::SetWhitespaceVisible(int view) {
- vs.viewWhitespace = static_cast(view);
-}
-
-int Editor::GetWhitespaceVisible() {
- return vs.viewWhitespace;
-}
-
-void Editor::Indent(bool forwards) {
- //Platform::DebugPrintf("INdent %d\n", forwards);
- int lineOfAnchor = pdoc->LineFromPosition(anchor);
- int lineCurrentPos = pdoc->LineFromPosition(currentPos);
- if (lineOfAnchor == lineCurrentPos) {
- if (forwards) {
- pdoc->BeginUndoAction();
- ClearSelection();
- if (pdoc->GetColumn(currentPos) <= pdoc->GetColumn(pdoc->GetLineIndentPosition(lineCurrentPos)) &&
- pdoc->tabIndents) {
- int indentation = pdoc->GetLineIndentation(lineCurrentPos);
- int indentationStep = pdoc->IndentSize();
- pdoc->SetLineIndentation(lineCurrentPos, indentation + indentationStep - indentation % indentationStep);
- SetEmptySelection(pdoc->GetLineIndentPosition(lineCurrentPos));
- } else {
- if (pdoc->useTabs) {
- pdoc->InsertChar(currentPos, '\t');
- SetEmptySelection(currentPos + 1);
- } else {
- int numSpaces = (pdoc->tabInChars) -
- (pdoc->GetColumn(currentPos) % (pdoc->tabInChars));
- if (numSpaces < 1)
- numSpaces = pdoc->tabInChars;
- for (int i = 0; i < numSpaces; i++) {
- pdoc->InsertChar(currentPos + i, ' ');
- }
- SetEmptySelection(currentPos + numSpaces);
- }
- }
- pdoc->EndUndoAction();
- } else {
- if (pdoc->GetColumn(currentPos) <= pdoc->GetLineIndentation(lineCurrentPos) &&
- pdoc->tabIndents) {
- pdoc->BeginUndoAction();
- int indentation = pdoc->GetLineIndentation(lineCurrentPos);
- int indentationStep = pdoc->IndentSize();
- pdoc->SetLineIndentation(lineCurrentPos, indentation - indentationStep);
- SetEmptySelection(pdoc->GetLineIndentPosition(lineCurrentPos));
- pdoc->EndUndoAction();
- } else {
- int newColumn = ((pdoc->GetColumn(currentPos) - 1) / pdoc->tabInChars) *
- pdoc->tabInChars;
- if (newColumn < 0)
- newColumn = 0;
- int newPos = currentPos;
- while (pdoc->GetColumn(newPos) > newColumn)
- newPos--;
- SetEmptySelection(newPos);
- }
- }
- } else {
- int anchorPosOnLine = anchor - pdoc->LineStart(lineOfAnchor);
- int currentPosPosOnLine = currentPos - pdoc->LineStart(lineCurrentPos);
- // Multiple lines selected so indent / dedent
- int lineTopSel = Platform::Minimum(lineOfAnchor, lineCurrentPos);
- int lineBottomSel = Platform::Maximum(lineOfAnchor, lineCurrentPos);
- if (pdoc->LineStart(lineBottomSel) == anchor || pdoc->LineStart(lineBottomSel) == currentPos)
- lineBottomSel--; // If not selecting any characters on a line, do not indent
- pdoc->BeginUndoAction();
- pdoc->Indent(forwards, lineBottomSel, lineTopSel);
- pdoc->EndUndoAction();
- if (lineOfAnchor < lineCurrentPos) {
- if (currentPosPosOnLine == 0)
- SetSelection(pdoc->LineStart(lineCurrentPos), pdoc->LineStart(lineOfAnchor));
- else
- SetSelection(pdoc->LineStart(lineCurrentPos + 1), pdoc->LineStart(lineOfAnchor));
- } else {
- if (anchorPosOnLine == 0)
- SetSelection(pdoc->LineStart(lineCurrentPos), pdoc->LineStart(lineOfAnchor));
- else
- SetSelection(pdoc->LineStart(lineCurrentPos), pdoc->LineStart(lineOfAnchor + 1));
- }
- }
-}
-
-/**
- * Search of a text in the document, in the given range.
- * @return The position of the found text, -1 if not found.
- */
-long Editor::FindText(
- uptr_t wParam, ///< Search modes : @c SCFIND_MATCHCASE, @c SCFIND_WHOLEWORD,
- ///< @c SCFIND_WORDSTART, @c SCFIND_REGEXP or @c SCFIND_POSIX.
- sptr_t lParam) { ///< @c TextToFind structure: The text to search for in the given range.
-
- TextToFind *ft = reinterpret_cast(lParam);
- int lengthFound = istrlen(ft->lpstrText);
- int pos = pdoc->FindText(ft->chrg.cpMin, ft->chrg.cpMax, ft->lpstrText,
- (wParam & SCFIND_MATCHCASE) != 0,
- (wParam & SCFIND_WHOLEWORD) != 0,
- (wParam & SCFIND_WORDSTART) != 0,
- (wParam & SCFIND_REGEXP) != 0,
- (wParam & SCFIND_POSIX) != 0,
- &lengthFound);
- if (pos != -1) {
- ft->chrgText.cpMin = pos;
- ft->chrgText.cpMax = pos + lengthFound;
- }
- return pos;
-}
-
-/**
- * Relocatable search support : Searches relative to current selection
- * point and sets the selection to the found text range with
- * each search.
- */
-/**
- * Anchor following searches at current selection start: This allows
- * multiple incremental interactive searches to be macro recorded
- * while still setting the selection to found text so the find/select
- * operation is self-contained.
- */
-void Editor::SearchAnchor() {
- searchAnchor = SelectionStart();
-}
-
-/**
- * Find text from current search anchor: Must call @c SearchAnchor first.
- * Used for next text and previous text requests.
- * @return The position of the found text, -1 if not found.
- */
-long Editor::SearchText(
- unsigned int iMessage, ///< Accepts both @c SCI_SEARCHNEXT and @c SCI_SEARCHPREV.
- uptr_t wParam, ///< Search modes : @c SCFIND_MATCHCASE, @c SCFIND_WHOLEWORD,
- ///< @c SCFIND_WORDSTART, @c SCFIND_REGEXP or @c SCFIND_POSIX.
- sptr_t lParam) { ///< The text to search for.
-
- const char *txt = reinterpret_cast(lParam);
- int pos;
- int lengthFound = istrlen(txt);
- if (iMessage == SCI_SEARCHNEXT) {
- pos = pdoc->FindText(searchAnchor, pdoc->Length(), txt,
- (wParam & SCFIND_MATCHCASE) != 0,
- (wParam & SCFIND_WHOLEWORD) != 0,
- (wParam & SCFIND_WORDSTART) != 0,
- (wParam & SCFIND_REGEXP) != 0,
- (wParam & SCFIND_POSIX) != 0,
- &lengthFound);
- } else {
- pos = pdoc->FindText(searchAnchor, 0, txt,
- (wParam & SCFIND_MATCHCASE) != 0,
- (wParam & SCFIND_WHOLEWORD) != 0,
- (wParam & SCFIND_WORDSTART) != 0,
- (wParam & SCFIND_REGEXP) != 0,
- (wParam & SCFIND_POSIX) != 0,
- &lengthFound);
- }
-
- if (pos != -1) {
- SetSelection(pos, pos + lengthFound);
- }
-
- return pos;
-}
-
-/**
- * Search for text in the target range of the document.
- * @return The position of the found text, -1 if not found.
- */
-long Editor::SearchInTarget(const char *text, int length) {
- int lengthFound = length;
- int pos = pdoc->FindText(targetStart, targetEnd, text,
- (searchFlags & SCFIND_MATCHCASE) != 0,
- (searchFlags & SCFIND_WHOLEWORD) != 0,
- (searchFlags & SCFIND_WORDSTART) != 0,
- (searchFlags & SCFIND_REGEXP) != 0,
- (searchFlags & SCFIND_POSIX) != 0,
- &lengthFound);
- if (pos != -1) {
- targetStart = pos;
- targetEnd = pos + lengthFound;
- }
- return pos;
-}
-
-void Editor::GoToLine(int lineNo) {
- if (lineNo > pdoc->LinesTotal())
- lineNo = pdoc->LinesTotal();
- if (lineNo < 0)
- lineNo = 0;
- SetEmptySelection(pdoc->LineStart(lineNo));
- ShowCaretAtCurrentPosition();
- EnsureCaretVisible();
-}
-
-static bool Close(Point pt1, Point pt2) {
- if (abs(pt1.x - pt2.x) > 3)
- return false;
- if (abs(pt1.y - pt2.y) > 3)
- return false;
- return true;
-}
-
-char *Editor::CopyRange(int start, int end) {
- char *text = 0;
- if (start < end) {
- int len = end - start;
- text = new char[len + 1];
- if (text) {
- for (int i = 0; i < len; i++) {
- text[i] = pdoc->CharAt(start + i);
- }
- text[len] = '\0';
- }
- }
- return text;
-}
-
-void Editor::CopySelectionFromRange(SelectionText *ss, int start, int end) {
- ss->Set(CopyRange(start, end), end - start + 1,
- pdoc->dbcsCodePage, vs.styles[STYLE_DEFAULT].characterSet, false);
-}
-
-void Editor::CopySelectionRange(SelectionText *ss) {
- if (selType == selStream) {
- CopySelectionFromRange(ss, SelectionStart(), SelectionEnd());
- } else {
- char *text = 0;
- int size = 0;
- SelectionLineIterator lineIterator(this);
- while (lineIterator.Iterate()) {
- size += lineIterator.endPos - lineIterator.startPos;
- if (selType != selLines) {
- size++;
- if (pdoc->eolMode == SC_EOL_CRLF) {
- size++;
- }
- }
- }
- if (size > 0) {
- text = new char[size + 1];
- if (text) {
- int j = 0;
- lineIterator.Reset();
- while (lineIterator.Iterate()) {
- for (int i = lineIterator.startPos;
- i < lineIterator.endPos;
- i++) {
- text[j++] = pdoc->CharAt(i);
- }
- if (selType != selLines) {
- if (pdoc->eolMode != SC_EOL_LF) {
- text[j++] = '\r';
- }
- if (pdoc->eolMode != SC_EOL_CR) {
- text[j++] = '\n';
- }
- }
- }
- text[size] = '\0';
- }
- }
- ss->Set(text, size + 1, pdoc->dbcsCodePage,
- vs.styles[STYLE_DEFAULT].characterSet, selType == selRectangle);
- }
-}
-
-void Editor::CopyRangeToClipboard(int start, int end) {
- start = pdoc->ClampPositionIntoDocument(start);
- end = pdoc->ClampPositionIntoDocument(end);
- SelectionText selectedText;
- selectedText.Set(CopyRange(start, end), end - start + 1,
- pdoc->dbcsCodePage, vs.styles[STYLE_DEFAULT].characterSet, false);
- CopyToClipboard(selectedText);
-}
-
-void Editor::CopyText(int length, const char *text) {
- SelectionText selectedText;
- selectedText.Copy(text, length + 1,
- pdoc->dbcsCodePage, vs.styles[STYLE_DEFAULT].characterSet, false);
- CopyToClipboard(selectedText);
-}
-
-void Editor::SetDragPosition(int newPos) {
- if (newPos >= 0) {
- newPos = MovePositionOutsideChar(newPos, 1);
- posDrop = newPos;
- }
- if (posDrag != newPos) {
- caret.on = true;
- SetTicking(true);
- InvalidateCaret();
- posDrag = newPos;
- InvalidateCaret();
- }
-}
-
-void Editor::DisplayCursor(Window::Cursor c) {
- if (cursorMode == SC_CURSORNORMAL)
- wMain.SetCursor(c);
- else
- wMain.SetCursor(static_cast(cursorMode));
-}
-
-void Editor::StartDrag() {
- // Always handled by subclasses
- //SetMouseCapture(true);
- //DisplayCursor(Window::cursorArrow);
-}
-
-void Editor::DropAt(int position, const char *value, bool moving, bool rectangular) {
- //Platform::DebugPrintf("DropAt %d\n", inDragDrop);
- if (inDragDrop)
- dropWentOutside = false;
-
- int positionWasInSelection = PositionInSelection(position);
-
- bool positionOnEdgeOfSelection =
- (position == SelectionStart()) || (position == SelectionEnd());
-
- if ((!inDragDrop) || !(0 == positionWasInSelection) ||
- (positionOnEdgeOfSelection && !moving)) {
-
- int selStart = SelectionStart();
- int selEnd = SelectionEnd();
-
- pdoc->BeginUndoAction();
-
- int positionAfterDeletion = position;
- if (inDragDrop && moving) {
- // Remove dragged out text
- if (rectangular || selType == selLines) {
- SelectionLineIterator lineIterator(this);
- while (lineIterator.Iterate()) {
- if (position >= lineIterator.startPos) {
- if (position > lineIterator.endPos) {
- positionAfterDeletion -= lineIterator.endPos - lineIterator.startPos;
- } else {
- positionAfterDeletion -= position - lineIterator.startPos;
- }
- }
- }
- } else {
- if (position > selStart) {
- positionAfterDeletion -= selEnd - selStart;
- }
- }
- ClearSelection();
- }
- position = positionAfterDeletion;
-
- if (rectangular) {
- PasteRectangular(position, value, istrlen(value));
- pdoc->EndUndoAction();
- // Should try to select new rectangle but it may not be a rectangle now so just select the drop position
- SetEmptySelection(position);
- } else {
- position = MovePositionOutsideChar(position, currentPos - position);
- if (pdoc->InsertString(position, value)) {
- SetSelection(position + istrlen(value), position);
- }
- pdoc->EndUndoAction();
- }
- } else if (inDragDrop) {
- SetEmptySelection(position);
- }
-}
-
-/**
- * @return -1 if given position is before the selection,
- * 1 if position is after the selection,
- * 0 if position is inside the selection,
- */
-int Editor::PositionInSelection(int pos) {
- pos = MovePositionOutsideChar(pos, currentPos - pos);
- if (pos < SelectionStart()) {
- return -1;
- }
- if (pos > SelectionEnd()) {
- return 1;
- }
- if (selType == selStream) {
- return 0;
- } else {
- SelectionLineIterator lineIterator(this);
- lineIterator.SetAt(pdoc->LineFromPosition(pos));
- if (pos < lineIterator.startPos) {
- return -1;
- } else if (pos > lineIterator.endPos) {
- return 1;
- } else {
- return 0;
- }
- }
-}
-
-bool Editor::PointInSelection(Point pt) {
- int pos = PositionFromLocation(pt);
- if (0 == PositionInSelection(pos)) {
- // Probably inside, but we must make a finer test
- int selStart, selEnd;
- if (selType == selStream) {
- selStart = SelectionStart();
- selEnd = SelectionEnd();
- } else {
- SelectionLineIterator lineIterator(this);
- lineIterator.SetAt(pdoc->LineFromPosition(pos));
- selStart = lineIterator.startPos;
- selEnd = lineIterator.endPos;
- }
- if (pos == selStart) {
- // see if just before selection
- Point locStart = LocationFromPosition(pos);
- if (pt.x < locStart.x) {
- return false;
- }
- }
- if (pos == selEnd) {
- // see if just after selection
- Point locEnd = LocationFromPosition(pos);
- if (pt.x > locEnd.x) {
- return false;
- }
- }
- return true;
- }
- return false;
-}
-
-bool Editor::PointInSelMargin(Point pt) {
- // Really means: "Point in a margin"
- if (vs.fixedColumnWidth > 0) { // There is a margin
- PRectangle rcSelMargin = GetClientRectangle();
- rcSelMargin.right = vs.fixedColumnWidth - vs.leftMarginWidth;
- return rcSelMargin.Contains(pt);
- } else {
- return false;
- }
-}
-
-void Editor::LineSelection(int lineCurrent_, int lineAnchor_) {
- if (lineAnchor_ < lineCurrent_) {
- SetSelection(pdoc->LineStart(lineCurrent_ + 1),
- pdoc->LineStart(lineAnchor_));
- } else if (lineAnchor_ > lineCurrent_) {
- SetSelection(pdoc->LineStart(lineCurrent_),
- pdoc->LineStart(lineAnchor_ + 1));
- } else { // Same line, select it
- SetSelection(pdoc->LineStart(lineAnchor_ + 1),
- pdoc->LineStart(lineAnchor_));
- }
-}
-
-void Editor::DwellEnd(bool mouseMoved) {
- if (mouseMoved)
- ticksToDwell = dwellDelay;
- else
- ticksToDwell = SC_TIME_FOREVER;
- if (dwelling && (dwellDelay < SC_TIME_FOREVER)) {
- dwelling = false;
- NotifyDwelling(ptMouseLast, dwelling);
- }
-}
-
-void Editor::ButtonDown(Point pt, unsigned int curTime, bool shift, bool ctrl, bool alt) {
- //Platform::DebugPrintf("Scintilla:ButtonDown %d %d = %d alt=%d\n", curTime, lastClickTime, curTime - lastClickTime, alt);
- ptMouseLast = pt;
- int newPos = PositionFromLocation(pt);
- newPos = MovePositionOutsideChar(newPos, currentPos - newPos);
- inDragDrop = false;
- moveExtendsSelection = false;
-
- bool processed = NotifyMarginClick(pt, shift, ctrl, alt);
- if (processed)
- return;
-
- bool inSelMargin = PointInSelMargin(pt);
- if (shift & !inSelMargin) {
- SetSelection(newPos);
- }
- if (((curTime - lastClickTime) < Platform::DoubleClickTime()) && Close(pt, lastClick)) {
- //Platform::DebugPrintf("Double click %d %d = %d\n", curTime, lastClickTime, curTime - lastClickTime);
- SetMouseCapture(true);
- SetEmptySelection(newPos);
- bool doubleClick = false;
- // Stop mouse button bounce changing selection type
- if (!Platform::MouseButtonBounce() || curTime != lastClickTime) {
- if (selectionType == selChar) {
- selectionType = selWord;
- doubleClick = true;
- } else if (selectionType == selWord) {
- selectionType = selLine;
- } else {
- selectionType = selChar;
- originalAnchorPos = currentPos;
- }
- }
-
- if (selectionType == selWord) {
- if (currentPos >= originalAnchorPos) { // Moved forward
- SetSelection(pdoc->ExtendWordSelect(currentPos, 1),
- pdoc->ExtendWordSelect(originalAnchorPos, -1));
- } else { // Moved backward
- SetSelection(pdoc->ExtendWordSelect(currentPos, -1),
- pdoc->ExtendWordSelect(originalAnchorPos, 1));
- }
- } else if (selectionType == selLine) {
- lineAnchor = LineFromLocation(pt);
- SetSelection(pdoc->LineStart(lineAnchor + 1), pdoc->LineStart(lineAnchor));
- //Platform::DebugPrintf("Triple click: %d - %d\n", anchor, currentPos);
- } else {
- SetEmptySelection(currentPos);
- }
- //Platform::DebugPrintf("Double click: %d - %d\n", anchor, currentPos);
- if (doubleClick) {
- NotifyDoubleClick(pt, shift);
- if (PositionIsHotspot(newPos))
- NotifyHotSpotDoubleClicked(newPos, shift, ctrl, alt);
- }
- } else { // Single click
- if (inSelMargin) {
- selType = selStream;
- if (ctrl) {
- SelectAll();
- lastClickTime = curTime;
- return;
- }
- if (!shift) {
- lineAnchor = LineFromLocation(pt);
- // Single click in margin: select whole line
- LineSelection(lineAnchor, lineAnchor);
- SetSelection(pdoc->LineStart(lineAnchor + 1),
- pdoc->LineStart(lineAnchor));
- } else {
- // Single shift+click in margin: select from line anchor to clicked line
- if (anchor > currentPos)
- lineAnchor = pdoc->LineFromPosition(anchor - 1);
- else
- lineAnchor = pdoc->LineFromPosition(anchor);
- int lineStart = LineFromLocation(pt);
- LineSelection(lineStart, lineAnchor);
- //lineAnchor = lineStart; // Keep the same anchor for ButtonMove
- }
-
- SetDragPosition(invalidPosition);
- SetMouseCapture(true);
- selectionType = selLine;
- } else {
- if (PointIsHotspot(pt)) {
- NotifyHotSpotClicked(newPos, shift, ctrl, alt);
- }
- if (!shift) {
- inDragDrop = PointInSelection(pt) && !SelectionEmpty();
- }
- if (inDragDrop) {
- SetMouseCapture(false);
- SetDragPosition(newPos);
- CopySelectionRange(&drag);
- StartDrag();
- } else {
- SetDragPosition(invalidPosition);
- SetMouseCapture(true);
- if (!shift) {
- SetEmptySelection(newPos);
- }
- selType = alt ? selRectangle : selStream;
- selectionType = selChar;
- originalAnchorPos = currentPos;
- SetRectangularRange();
- }
- }
- }
- lastClickTime = curTime;
- lastXChosen = pt.x;
- ShowCaretAtCurrentPosition();
-}
-
-bool Editor::PositionIsHotspot(int position) {
- return vs.styles[pdoc->StyleAt(position) & pdoc->stylingBitsMask].hotspot;
-}
-
-bool Editor::PointIsHotspot(Point pt) {
- int pos = PositionFromLocationClose(pt);
- if (pos == INVALID_POSITION)
- return false;
- return PositionIsHotspot(pos);
-}
-
-void Editor::SetHotSpotRange(Point *pt) {
- if (pt) {
- int pos = PositionFromLocation(*pt);
-
- // If we don't limit this to word characters then the
- // range can encompass more than the run range and then
- // the underline will not be drawn properly.
- int hsStart_ = pdoc->ExtendStyleRange(pos, -1, vs.hotspotSingleLine);
- int hsEnd_ = pdoc->ExtendStyleRange(pos, 1, vs.hotspotSingleLine);
-
- // Only invalidate the range if the hotspot range has changed...
- if (hsStart_ != hsStart || hsEnd_ != hsEnd) {
- if (hsStart != -1) {
- InvalidateRange(hsStart, hsEnd);
- }
- hsStart = hsStart_;
- hsEnd = hsEnd_;
- InvalidateRange(hsStart, hsEnd);
- }
- } else {
- if (hsStart != -1) {
- int hsStart_ = hsStart;
- int hsEnd_ = hsEnd;
- hsStart = -1;
- hsEnd = -1;
- InvalidateRange(hsStart_, hsEnd_);
- } else {
- hsStart = -1;
- hsEnd = -1;
- }
- }
-}
-
-void Editor::GetHotSpotRange(int& hsStart_, int& hsEnd_) {
- hsStart_ = hsStart;
- hsEnd_ = hsEnd;
-}
-
-void Editor::ButtonMove(Point pt) {
- if ((ptMouseLast.x != pt.x) || (ptMouseLast.y != pt.y)) {
- DwellEnd(true);
- }
- ptMouseLast = pt;
- //Platform::DebugPrintf("Move %d %d\n", pt.x, pt.y);
- if (HaveMouseCapture()) {
-
- // Slow down autoscrolling/selection
- autoScrollTimer.ticksToWait -= timer.tickSize;
- if (autoScrollTimer.ticksToWait > 0)
- return;
- autoScrollTimer.ticksToWait = autoScrollDelay;
-
- // Adjust selection
- int movePos = PositionFromLocation(pt);
- movePos = MovePositionOutsideChar(movePos, currentPos - movePos);
- if (posDrag >= 0) {
- SetDragPosition(movePos);
- } else {
- if (selectionType == selChar) {
- SetSelection(movePos);
- } else if (selectionType == selWord) {
- // Continue selecting by word
- if (movePos == originalAnchorPos) { // Didn't move
- // No need to do anything. Previously this case was lumped
- // in with "Moved forward", but that can be harmful in this
- // case: a handler for the NotifyDoubleClick re-adjusts
- // the selection for a fancier definition of "word" (for
- // example, in Perl it is useful to include the leading
- // '$', '%' or '@' on variables for word selection). In this
- // the ButtonMove() called via Tick() for auto-scrolling
- // could result in the fancier word selection adjustment
- // being unmade.
- } else if (movePos > originalAnchorPos) { // Moved forward
- SetSelection(pdoc->ExtendWordSelect(movePos, 1),
- pdoc->ExtendWordSelect(originalAnchorPos, -1));
- } else { // Moved backward
- SetSelection(pdoc->ExtendWordSelect(movePos, -1),
- pdoc->ExtendWordSelect(originalAnchorPos, 1));
- }
- } else {
- // Continue selecting by line
- int lineMove = LineFromLocation(pt);
- LineSelection(lineMove, lineAnchor);
- }
- }
- // While dragging to make rectangular selection, we don't want the current
- // position to jump to the end of smaller or empty lines.
- //xEndSelect = pt.x - vs.fixedColumnWidth + xOffset;
- xEndSelect = XFromPosition(movePos);
-
- // Autoscroll
- PRectangle rcClient = GetClientRectangle();
- if (pt.y > rcClient.bottom) {
- int lineMove = cs.DisplayFromDoc(LineFromLocation(pt));
- if (lineMove < 0) {
- lineMove = cs.DisplayFromDoc(pdoc->LinesTotal() - 1);
- }
- ScrollTo(lineMove - LinesOnScreen() + 5);
- Redraw();
- } else if (pt.y < rcClient.top) {
- int lineMove = cs.DisplayFromDoc(LineFromLocation(pt));
- ScrollTo(lineMove - 5);
- Redraw();
- }
- EnsureCaretVisible(false, false, true);
-
- if (hsStart != -1 && !PositionIsHotspot(movePos))
- SetHotSpotRange(NULL);
-
- } else {
- if (vs.fixedColumnWidth > 0) { // There is a margin
- if (PointInSelMargin(pt)) {
- DisplayCursor(Window::cursorReverseArrow);
- return; // No need to test for selection
- }
- }
- // Display regular (drag) cursor over selection
- if (PointInSelection(pt) && !SelectionEmpty()) {
- DisplayCursor(Window::cursorArrow);
- } else if (PointIsHotspot(pt)) {
- DisplayCursor(Window::cursorHand);
- SetHotSpotRange(&pt);
- } else {
- DisplayCursor(Window::cursorText);
- SetHotSpotRange(NULL);
- }
- }
-}
-
-void Editor::ButtonUp(Point pt, unsigned int curTime, bool ctrl) {
- //Platform::DebugPrintf("ButtonUp %d\n", HaveMouseCapture());
- if (HaveMouseCapture()) {
- if (PointInSelMargin(pt)) {
- DisplayCursor(Window::cursorReverseArrow);
- } else {
- DisplayCursor(Window::cursorText);
- SetHotSpotRange(NULL);
- }
- ptMouseLast = pt;
- SetMouseCapture(false);
- int newPos = PositionFromLocation(pt);
- newPos = MovePositionOutsideChar(newPos, currentPos - newPos);
- if (inDragDrop) {
- int selStart = SelectionStart();
- int selEnd = SelectionEnd();
- if (selStart < selEnd) {
- if (drag.len) {
- if (ctrl) {
- if (pdoc->InsertString(newPos, drag.s, drag.len)) {
- SetSelection(newPos, newPos + drag.len);
- }
- } else if (newPos < selStart) {
- pdoc->DeleteChars(selStart, drag.len);
- if (pdoc->InsertString(newPos, drag.s, drag.len)) {
- SetSelection(newPos, newPos + drag.len);
- }
- } else if (newPos > selEnd) {
- pdoc->DeleteChars(selStart, drag.len);
- newPos -= drag.len;
- if (pdoc->InsertString(newPos, drag.s, drag.len)) {
- SetSelection(newPos, newPos + drag.len);
- }
- } else {
- SetEmptySelection(newPos);
- }
- drag.Free();
- }
- selectionType = selChar;
- }
- } else {
- if (selectionType == selChar) {
- SetSelection(newPos);
- }
- }
- SetRectangularRange();
- lastClickTime = curTime;
- lastClick = pt;
- lastXChosen = pt.x;
- if (selType == selStream) {
- SetLastXChosen();
- }
- inDragDrop = false;
- EnsureCaretVisible(false);
- }
-}
-
-// Called frequently to perform background UI including
-// caret blinking and automatic scrolling.
-void Editor::Tick() {
- if (HaveMouseCapture()) {
- // Auto scroll
- ButtonMove(ptMouseLast);
- }
- if (caret.period > 0) {
- timer.ticksToWait -= timer.tickSize;
- if (timer.ticksToWait <= 0) {
- caret.on = !caret.on;
- timer.ticksToWait = caret.period;
- if (caret.active) {
- InvalidateCaret();
- }
- }
- }
- if ((dwellDelay < SC_TIME_FOREVER) &&
- (ticksToDwell > 0) &&
- (!HaveMouseCapture())) {
- ticksToDwell -= timer.tickSize;
- if (ticksToDwell <= 0) {
- dwelling = true;
- NotifyDwelling(ptMouseLast, dwelling);
- }
- }
-}
-
-bool Editor::Idle() {
-
- bool idleDone;
-
- bool wrappingDone = wrapState == eWrapNone;
-
- if (!wrappingDone) {
- // Wrap lines during idle.
- WrapLines(false, -1);
- // No more wrapping
- if (wrapStart == wrapEnd)
- wrappingDone = true;
- }
-
- // Add more idle things to do here, but make sure idleDone is
- // set correctly before the function returns. returning
- // false will stop calling this idle funtion until SetIdle() is
- // called again.
-
- idleDone = wrappingDone; // && thatDone && theOtherThingDone...
-
- return !idleDone;
-}
-
-void Editor::SetFocusState(bool focusState) {
- hasFocus = focusState;
- NotifyFocus(hasFocus);
- if (hasFocus) {
- ShowCaretAtCurrentPosition();
- } else {
- CancelModes();
- DropCaret();
- }
-}
-
-bool Editor::PaintContains(PRectangle rc) {
- return rcPaint.Contains(rc);
-}
-
-bool Editor::PaintContainsMargin() {
- PRectangle rcSelMargin = GetClientRectangle();
- rcSelMargin.right = vs.fixedColumnWidth;
- return PaintContains(rcSelMargin);
-}
-
-void Editor::CheckForChangeOutsidePaint(Range r) {
- if (paintState == painting && !paintingAllText) {
- //Platform::DebugPrintf("Checking range in paint %d-%d\n", r.start, r.end);
- if (!r.Valid())
- return;
-
- PRectangle rcRange = RectangleFromRange(r.start, r.end);
- PRectangle rcText = GetTextRectangle();
- if (rcRange.top < rcText.top) {
- rcRange.top = rcText.top;
- }
- if (rcRange.bottom > rcText.bottom) {
- rcRange.bottom = rcText.bottom;
- }
-
- if (!PaintContains(rcRange)) {
- AbandonPaint();
- }
- }
-}
-
-void Editor::SetBraceHighlight(Position pos0, Position pos1, int matchStyle) {
- if ((pos0 != braces[0]) || (pos1 != braces[1]) || (matchStyle != bracesMatchStyle)) {
- if ((braces[0] != pos0) || (matchStyle != bracesMatchStyle)) {
- CheckForChangeOutsidePaint(Range(braces[0]));
- CheckForChangeOutsidePaint(Range(pos0));
- braces[0] = pos0;
- }
- if ((braces[1] != pos1) || (matchStyle != bracesMatchStyle)) {
- CheckForChangeOutsidePaint(Range(braces[1]));
- CheckForChangeOutsidePaint(Range(pos1));
- braces[1] = pos1;
- }
- bracesMatchStyle = matchStyle;
- if (paintState == notPainting) {
- Redraw();
- }
- }
-}
-
-void Editor::SetDocPointer(Document *document) {
- //Platform::DebugPrintf("** %x setdoc to %x\n", pdoc, document);
- pdoc->RemoveWatcher(this, 0);
- pdoc->Release();
- if (document == NULL) {
- pdoc = new Document();
- } else {
- pdoc = document;
- }
- pdoc->AddRef();
-
- // Ensure all positions within document
- selType = selStream;
- currentPos = 0;
- anchor = 0;
- targetStart = 0;
- targetEnd = 0;
-
- braces[0] = invalidPosition;
- braces[1] = invalidPosition;
-
- // Reset the contraction state to fully shown.
- cs.Clear();
- cs.InsertLines(0, pdoc->LinesTotal() - 1);
- llc.Deallocate();
- NeedWrapping();
-
- pdoc->AddWatcher(this, 0);
- SetScrollBars();
- Redraw();
-}
-
-/**
- * Recursively expand a fold, making lines visible except where they have an unexpanded parent.
- */
-void Editor::Expand(int &line, bool doExpand) {
- int lineMaxSubord = pdoc->GetLastChild(line);
- line++;
- while (line <= lineMaxSubord) {
- if (doExpand)
- cs.SetVisible(line, line, true);
- int level = pdoc->GetLevel(line);
- if (level & SC_FOLDLEVELHEADERFLAG) {
- if (doExpand && cs.GetExpanded(line)) {
- Expand(line, true);
- } else {
- Expand(line, false);
- }
- } else {
- line++;
- }
- }
-}
-
-void Editor::ToggleContraction(int line) {
- if (line >= 0) {
- if ((pdoc->GetLevel(line) & SC_FOLDLEVELHEADERFLAG) == 0) {
- line = pdoc->GetFoldParent(line);
- if (line < 0)
- return;
- }
-
- if (cs.GetExpanded(line)) {
- int lineMaxSubord = pdoc->GetLastChild(line);
- cs.SetExpanded(line, 0);
- if (lineMaxSubord > line) {
- cs.SetVisible(line + 1, lineMaxSubord, false);
-
- int lineCurrent = pdoc->LineFromPosition(currentPos);
- if (lineCurrent > line && lineCurrent <= lineMaxSubord) {
- // This does not re-expand the fold
- EnsureCaretVisible();
- }
-
- SetScrollBars();
- Redraw();
- }
-
- } else {
- if (!(cs.GetVisible(line))) {
- EnsureLineVisible(line, false);
- GoToLine(line);
- }
- cs.SetExpanded(line, 1);
- Expand(line, true);
- SetScrollBars();
- Redraw();
- }
- }
-}
-
-/**
- * Recurse up from this line to find any folds that prevent this line from being visible
- * and unfold them all.
- */
-void Editor::EnsureLineVisible(int lineDoc, bool enforcePolicy) {
-
- // In case in need of wrapping to ensure DisplayFromDoc works.
- WrapLines(true, -1);
-
- if (!cs.GetVisible(lineDoc)) {
- int lineParent = pdoc->GetFoldParent(lineDoc);
- if (lineParent >= 0) {
- if (lineDoc != lineParent)
- EnsureLineVisible(lineParent, enforcePolicy);
- if (!cs.GetExpanded(lineParent)) {
- cs.SetExpanded(lineParent, 1);
- Expand(lineParent, true);
- }
- }
- SetScrollBars();
- Redraw();
- }
- if (enforcePolicy) {
- int lineDisplay = cs.DisplayFromDoc(lineDoc);
- if (visiblePolicy & VISIBLE_SLOP) {
- if ((topLine > lineDisplay) || ((visiblePolicy & VISIBLE_STRICT) && (topLine + visibleSlop > lineDisplay))) {
- SetTopLine(Platform::Clamp(lineDisplay - visibleSlop, 0, MaxScrollPos()));
- SetVerticalScrollPos();
- Redraw();
- } else if ((lineDisplay > topLine + LinesOnScreen() - 1) ||
- ((visiblePolicy & VISIBLE_STRICT) && (lineDisplay > topLine + LinesOnScreen() - 1 - visibleSlop))) {
- SetTopLine(Platform::Clamp(lineDisplay - LinesOnScreen() + 1 + visibleSlop, 0, MaxScrollPos()));
- SetVerticalScrollPos();
- Redraw();
- }
- } else {
- if ((topLine > lineDisplay) || (lineDisplay > topLine + LinesOnScreen() - 1) || (visiblePolicy & VISIBLE_STRICT)) {
- SetTopLine(Platform::Clamp(lineDisplay - LinesOnScreen() / 2 + 1, 0, MaxScrollPos()));
- SetVerticalScrollPos();
- Redraw();
- }
- }
- }
-}
-
-int Editor::ReplaceTarget(bool replacePatterns, const char *text, int length) {
- pdoc->BeginUndoAction();
- if (length == -1)
- length = istrlen(text);
- if (replacePatterns) {
- text = pdoc->SubstituteByPosition(text, &length);
- if (!text)
- return 0;
- }
- if (targetStart != targetEnd)
- pdoc->DeleteChars(targetStart, targetEnd - targetStart);
- targetEnd = targetStart;
- pdoc->InsertString(targetStart, text, length);
- targetEnd = targetStart + length;
- pdoc->EndUndoAction();
- return length;
-}
-
-bool Editor::IsUnicodeMode() const {
- return pdoc && (SC_CP_UTF8 == pdoc->dbcsCodePage);
-}
-
-int Editor::CodePage() const {
- if (pdoc)
- return pdoc->dbcsCodePage;
- else
- return 0;
-}
-
-int Editor::WrapCount(int line) {
- AutoSurface surface(this);
- AutoLineLayout ll(llc, RetrieveLineLayout(line));
-
- if (surface && ll) {
- LayoutLine(line, surface, vs, ll, wrapWidth);
- return ll->lines;
- } else {
- return 1;
- }
-}
-
-static bool ValidMargin(unsigned long wParam) {
- return wParam < ViewStyle::margins;
-}
-
-static char *CharPtrFromSPtr(sptr_t lParam) {
- return reinterpret_cast(lParam);
-}
-
-sptr_t Editor::WndProc(unsigned int iMessage, uptr_t wParam, sptr_t lParam) {
- //Platform::DebugPrintf("S start wnd proc %d %d %d\n",iMessage, wParam, lParam);
-
- // Optional macro recording hook
- if (recordingMacro)
- NotifyMacroRecord(iMessage, wParam, lParam);
-
- switch (iMessage) {
-
- case SCI_GETTEXT: {
- if (lParam == 0)
- return pdoc->Length() + 1;
- if (wParam == 0)
- return 0;
- char *ptr = CharPtrFromSPtr(lParam);
- unsigned int iChar = 0;
- for (; iChar < wParam - 1; iChar++)
- ptr[iChar] = pdoc->CharAt(iChar);
- ptr[iChar] = '\0';
- return iChar;
- }
-
- case SCI_SETTEXT: {
- if (lParam == 0)
- return 0;
- pdoc->BeginUndoAction();
- pdoc->DeleteChars(0, pdoc->Length());
- SetEmptySelection(0);
- pdoc->InsertString(0, CharPtrFromSPtr(lParam));
- pdoc->EndUndoAction();
- return 1;
- }
-
- case SCI_GETTEXTLENGTH:
- return pdoc->Length();
-
- case SCI_CUT:
- Cut();
- SetLastXChosen();
- break;
-
- case SCI_COPY:
- Copy();
- break;
-
- case SCI_COPYRANGE:
- CopyRangeToClipboard(wParam, lParam);
- break;
-
- case SCI_COPYTEXT:
- CopyText(wParam, CharPtrFromSPtr(lParam));
- break;
-
- case SCI_PASTE:
- Paste();
- if (!caretSticky) {
- SetLastXChosen();
- }
- EnsureCaretVisible();
- break;
-
- case SCI_CLEAR:
- Clear();
- SetLastXChosen();
- EnsureCaretVisible();
- break;
-
- case SCI_UNDO:
- Undo();
- SetLastXChosen();
- break;
-
- case SCI_CANUNDO:
- return (pdoc->CanUndo() && !pdoc->IsReadOnly()) ? 1 : 0;
-
- case SCI_EMPTYUNDOBUFFER:
- pdoc->DeleteUndoHistory();
- return 0;
-
- case SCI_GETFIRSTVISIBLELINE:
- return topLine;
-
- case SCI_GETLINE: { // Risk of overwriting the end of the buffer
- int lineStart = pdoc->LineStart(wParam);
- int lineEnd = pdoc->LineStart(wParam + 1);
- if (lParam == 0) {
- return lineEnd - lineStart;
- }
- char *ptr = CharPtrFromSPtr(lParam);
- int iPlace = 0;
- for (int iChar = lineStart; iChar < lineEnd; iChar++) {
- ptr[iPlace++] = pdoc->CharAt(iChar);
- }
- return iPlace;
- }
-
- case SCI_GETLINECOUNT:
- if (pdoc->LinesTotal() == 0)
- return 1;
- else
- return pdoc->LinesTotal();
-
- case SCI_GETMODIFY:
- return !pdoc->IsSavePoint();
-
- case SCI_SETSEL: {
- int nStart = static_cast(wParam);
- int nEnd = static_cast(lParam);
- if (nEnd < 0)
- nEnd = pdoc->Length();
- if (nStart < 0)
- nStart = nEnd; // Remove selection
- selType = selStream;
- SetSelection(nEnd, nStart);
- EnsureCaretVisible();
- }
- break;
-
- case SCI_GETSELTEXT: {
- if (lParam == 0) {
- if (selType == selStream) {
- return 1 + SelectionEnd() - SelectionStart();
- } else {
- // TODO: why is selLines handled the slow way?
- int size = 0;
- int extraCharsPerLine = 0;
- if (selType != selLines)
- extraCharsPerLine = (pdoc->eolMode == SC_EOL_CRLF) ? 2 : 1;
- SelectionLineIterator lineIterator(this);
- while (lineIterator.Iterate()) {
- size += lineIterator.endPos + extraCharsPerLine - lineIterator.startPos;
- }
-
- return 1 + size;
- }
- }
- SelectionText selectedText;
- CopySelectionRange(&selectedText);
- char *ptr = CharPtrFromSPtr(lParam);
- int iChar = 0;
- if (selectedText.len) {
- for (; iChar < selectedText.len; iChar++)
- ptr[iChar] = selectedText.s[iChar];
- } else {
- ptr[0] = '\0';
- }
- return iChar;
- }
-
- case SCI_LINEFROMPOSITION:
- if (static_cast(wParam) < 0)
- return 0;
- return pdoc->LineFromPosition(wParam);
-
- case SCI_POSITIONFROMLINE:
- if (static_cast(wParam) < 0)
- wParam = pdoc->LineFromPosition(SelectionStart());
- if (wParam == 0)
- return 0; // Even if there is no text, there is a first line that starts at 0
- if (static_cast(wParam) > pdoc->LinesTotal())
- return -1;
- //if (wParam > pdoc->LineFromPosition(pdoc->Length())) // Useful test, anyway...
- // return -1;
- return pdoc->LineStart(wParam);
-
- // Replacement of the old Scintilla interpretation of EM_LINELENGTH
- case SCI_LINELENGTH:
- if ((static_cast(wParam) < 0) ||
- (static_cast(wParam) > pdoc->LineFromPosition(pdoc->Length())))
- return 0;
- return pdoc->LineStart(wParam + 1) - pdoc->LineStart(wParam);
-
- case SCI_REPLACESEL: {
- if (lParam == 0)
- return 0;
- pdoc->BeginUndoAction();
- ClearSelection();
- char *replacement = CharPtrFromSPtr(lParam);
- pdoc->InsertString(currentPos, replacement);
- pdoc->EndUndoAction();
- SetEmptySelection(currentPos + istrlen(replacement));
- EnsureCaretVisible();
- }
- break;
-
- case SCI_SETTARGETSTART:
- targetStart = wParam;
- break;
-
- case SCI_GETTARGETSTART:
- return targetStart;
-
- case SCI_SETTARGETEND:
- targetEnd = wParam;
- break;
-
- case SCI_GETTARGETEND:
- return targetEnd;
-
- case SCI_TARGETFROMSELECTION:
- if (currentPos < anchor) {
- targetStart = currentPos;
- targetEnd = anchor;
- } else {
- targetStart = anchor;
- targetEnd = currentPos;
- }
- break;
-
- case SCI_REPLACETARGET:
- PLATFORM_ASSERT(lParam);
- return ReplaceTarget(false, CharPtrFromSPtr(lParam), wParam);
-
- case SCI_REPLACETARGETRE:
- PLATFORM_ASSERT(lParam);
- return ReplaceTarget(true, CharPtrFromSPtr(lParam), wParam);
-
- case SCI_SEARCHINTARGET:
- PLATFORM_ASSERT(lParam);
- return SearchInTarget(CharPtrFromSPtr(lParam), wParam);
-
- case SCI_SETSEARCHFLAGS:
- searchFlags = wParam;
- break;
-
- case SCI_GETSEARCHFLAGS:
- return searchFlags;
-
- case SCI_POSITIONBEFORE:
- return pdoc->MovePositionOutsideChar(wParam-1, -1, true);
-
- case SCI_POSITIONAFTER:
- return pdoc->MovePositionOutsideChar(wParam+1, 1, true);
-
- case SCI_LINESCROLL:
- ScrollTo(topLine + lParam);
- HorizontalScrollTo(xOffset + wParam * vs.spaceWidth);
- return 1;
-
- case SCI_SETXOFFSET:
- xOffset = wParam;
- SetHorizontalScrollPos();
- Redraw();
- break;
-
- case SCI_GETXOFFSET:
- return xOffset;
-
- case SCI_CHOOSECARETX:
- SetLastXChosen();
- break;
-
- case SCI_SCROLLCARET:
- EnsureCaretVisible();
- break;
-
- case SCI_SETREADONLY:
- pdoc->SetReadOnly(wParam != 0);
- return 1;
-
- case SCI_GETREADONLY:
- return pdoc->IsReadOnly();
-
- case SCI_CANPASTE:
- return CanPaste();
-
- case SCI_POINTXFROMPOSITION:
- if (lParam < 0) {
- return 0;
- } else {
- Point pt = LocationFromPosition(lParam);
- return pt.x;
- }
-
- case SCI_POINTYFROMPOSITION:
- if (lParam < 0) {
- return 0;
- } else {
- Point pt = LocationFromPosition(lParam);
- return pt.y;
- }
-
- case SCI_FINDTEXT:
- return FindText(wParam, lParam);
-
- case SCI_GETTEXTRANGE: {
- if (lParam == 0)
- return 0;
- TextRange *tr = reinterpret_cast(lParam);
- int cpMax = tr->chrg.cpMax;
- if (cpMax == -1)
- cpMax = pdoc->Length();
- PLATFORM_ASSERT(cpMax <= pdoc->Length());
- int len = cpMax - tr->chrg.cpMin; // No -1 as cpMin and cpMax are referring to inter character positions
- pdoc->GetCharRange(tr->lpstrText, tr->chrg.cpMin, len);
- // Spec says copied text is terminated with a NUL
- tr->lpstrText[len] = '\0';
- return len; // Not including NUL
- }
-
- case SCI_HIDESELECTION:
- hideSelection = wParam != 0;
- Redraw();
- break;
-
- case SCI_FORMATRANGE:
- return FormatRange(wParam != 0, reinterpret_cast(lParam));
-
- case SCI_GETMARGINLEFT:
- return vs.leftMarginWidth;
-
- case SCI_GETMARGINRIGHT:
- return vs.rightMarginWidth;
-
- case SCI_SETMARGINLEFT:
- vs.leftMarginWidth = lParam;
- InvalidateStyleRedraw();
- break;
-
- case SCI_SETMARGINRIGHT:
- vs.rightMarginWidth = lParam;
- InvalidateStyleRedraw();
- break;
-
- // Control specific mesages
-
- case SCI_ADDTEXT: {
- if (lParam == 0)
- return 0;
- pdoc->InsertString(CurrentPosition(), CharPtrFromSPtr(lParam), wParam);
- SetEmptySelection(currentPos + wParam);
- return 0;
- }
-
- case SCI_ADDSTYLEDTEXT: {
- if (lParam == 0)
- return 0;
- pdoc->InsertStyledString(CurrentPosition() * 2, CharPtrFromSPtr(lParam), wParam);
- SetEmptySelection(currentPos + wParam / 2);
- return 0;
- }
-
- case SCI_INSERTTEXT: {
- if (lParam == 0)
- return 0;
- int insertPos = wParam;
- if (static_cast(wParam) == -1)
- insertPos = CurrentPosition();
- int newCurrent = CurrentPosition();
- char *sz = CharPtrFromSPtr(lParam);
- pdoc->InsertString(insertPos, sz);
- if (newCurrent > insertPos)
- newCurrent += istrlen(sz);
- SetEmptySelection(newCurrent);
- return 0;
- }
-
- case SCI_APPENDTEXT:
- pdoc->InsertString(pdoc->Length(), CharPtrFromSPtr(lParam), wParam);
- return 0;
-
- case SCI_CLEARALL:
- ClearAll();
- return 0;
-
- case SCI_CLEARDOCUMENTSTYLE:
- ClearDocumentStyle();
- return 0;
-
- case SCI_SETUNDOCOLLECTION:
- pdoc->SetUndoCollection(wParam != 0);
- return 0;
-
- case SCI_GETUNDOCOLLECTION:
- return pdoc->IsCollectingUndo();
-
- case SCI_BEGINUNDOACTION:
- pdoc->BeginUndoAction();
- return 0;
-
- case SCI_ENDUNDOACTION:
- pdoc->EndUndoAction();
- return 0;
-
- case SCI_GETCARETPERIOD:
- return caret.period;
-
- case SCI_SETCARETPERIOD:
- caret.period = wParam;
- break;
-
- case SCI_SETWORDCHARS: {
- pdoc->SetDefaultCharClasses(false);
- if (lParam == 0)
- return 0;
- pdoc->SetCharClasses(reinterpret_cast(lParam), CharClassify::ccWord);
- }
- break;
-
- case SCI_SETWHITESPACECHARS: {
- if (lParam == 0)
- return 0;
- pdoc->SetCharClasses(reinterpret_cast(lParam), CharClassify::ccSpace);
- }
- break;
-
- case SCI_SETCHARSDEFAULT:
- pdoc->SetDefaultCharClasses(true);
- break;
-
- case SCI_GETLENGTH:
- return pdoc->Length();
-
- case SCI_ALLOCATE:
- pdoc->Allocate(wParam);
- break;
-
- case SCI_GETCHARAT:
- return pdoc->CharAt(wParam);
-
- case SCI_SETCURRENTPOS:
- SetSelection(wParam, anchor);
- break;
-
- case SCI_GETCURRENTPOS:
- return currentPos;
-
- case SCI_SETANCHOR:
- SetSelection(currentPos, wParam);
- break;
-
- case SCI_GETANCHOR:
- return anchor;
-
- case SCI_SETSELECTIONSTART:
- SetSelection(Platform::Maximum(currentPos, wParam), wParam);
- break;
-
- case SCI_GETSELECTIONSTART:
- return Platform::Minimum(anchor, currentPos);
-
- case SCI_SETSELECTIONEND:
- SetSelection(wParam, Platform::Minimum(anchor, wParam));
- break;
-
- case SCI_GETSELECTIONEND:
- return Platform::Maximum(anchor, currentPos);
-
- case SCI_SETPRINTMAGNIFICATION:
- printMagnification = wParam;
- break;
-
- case SCI_GETPRINTMAGNIFICATION:
- return printMagnification;
-
- case SCI_SETPRINTCOLOURMODE:
- printColourMode = wParam;
- break;
-
- case SCI_GETPRINTCOLOURMODE:
- return printColourMode;
-
- case SCI_SETPRINTWRAPMODE:
- printWrapState = (wParam == SC_WRAP_WORD) ? eWrapWord : eWrapNone;
- break;
-
- case SCI_GETPRINTWRAPMODE:
- return printWrapState;
-
- case SCI_GETSTYLEAT:
- if (static_cast(wParam) >= pdoc->Length())
- return 0;
- else
- return pdoc->StyleAt(wParam);
-
- case SCI_REDO:
- Redo();
- break;
-
- case SCI_SELECTALL:
- SelectAll();
- break;
-
- case SCI_SETSAVEPOINT:
- pdoc->SetSavePoint();
- break;
-
- case SCI_GETSTYLEDTEXT: {
- if (lParam == 0)
- return 0;
- TextRange *tr = reinterpret_cast(lParam);
- int iPlace = 0;
- for (int iChar = tr->chrg.cpMin; iChar < tr->chrg.cpMax; iChar++) {
- tr->lpstrText[iPlace++] = pdoc->CharAt(iChar);
- tr->lpstrText[iPlace++] = pdoc->StyleAt(iChar);
- }
- tr->lpstrText[iPlace] = '\0';
- tr->lpstrText[iPlace + 1] = '\0';
- return iPlace;
- }
-
- case SCI_CANREDO:
- return (pdoc->CanRedo() && !pdoc->IsReadOnly()) ? 1 : 0;
-
- case SCI_MARKERLINEFROMHANDLE:
- return pdoc->LineFromHandle(wParam);
-
- case SCI_MARKERDELETEHANDLE:
- pdoc->DeleteMarkFromHandle(wParam);
- break;
-
- case SCI_GETVIEWWS:
- return vs.viewWhitespace;
-
- case SCI_SETVIEWWS:
- vs.viewWhitespace = static_cast(wParam);
- Redraw();
- break;
-
- case SCI_POSITIONFROMPOINT:
- return PositionFromLocation(Point(wParam, lParam));
-
- case SCI_POSITIONFROMPOINTCLOSE:
- return PositionFromLocationClose(Point(wParam, lParam));
-
- case SCI_GOTOLINE:
- GoToLine(wParam);
- break;
-
- case SCI_GOTOPOS:
- SetEmptySelection(wParam);
- EnsureCaretVisible();
- Redraw();
- break;
-
- case SCI_GETCURLINE: {
- int lineCurrentPos = pdoc->LineFromPosition(currentPos);
- int lineStart = pdoc->LineStart(lineCurrentPos);
- unsigned int lineEnd = pdoc->LineStart(lineCurrentPos + 1);
- if (lParam == 0) {
- return 1 + lineEnd - lineStart;
- }
- PLATFORM_ASSERT(wParam > 0);
- char *ptr = CharPtrFromSPtr(lParam);
- unsigned int iPlace = 0;
- for (unsigned int iChar = lineStart; iChar < lineEnd && iPlace < wParam - 1; iChar++) {
- ptr[iPlace++] = pdoc->CharAt(iChar);
- }
- ptr[iPlace] = '\0';
- return currentPos - lineStart;
- }
-
- case SCI_GETENDSTYLED:
- return pdoc->GetEndStyled();
-
- case SCI_GETEOLMODE:
- return pdoc->eolMode;
-
- case SCI_SETEOLMODE:
- pdoc->eolMode = wParam;
- break;
-
- case SCI_STARTSTYLING:
- pdoc->StartStyling(wParam, static_cast(lParam));
- break;
-
- case SCI_SETSTYLING:
- pdoc->SetStyleFor(wParam, static_cast(lParam));
- break;
-
- case SCI_SETSTYLINGEX: // Specify a complete styling buffer
- if (lParam == 0)
- return 0;
- pdoc->SetStyles(wParam, CharPtrFromSPtr(lParam));
- break;
-
- case SCI_SETBUFFEREDDRAW:
- bufferedDraw = wParam != 0;
- break;
-
- case SCI_GETBUFFEREDDRAW:
- return bufferedDraw;
-
- case SCI_GETTWOPHASEDRAW:
- return twoPhaseDraw;
-
- case SCI_SETTWOPHASEDRAW:
- twoPhaseDraw = wParam != 0;
- InvalidateStyleRedraw();
- break;
-
- case SCI_SETTABWIDTH:
- if (wParam > 0) {
- pdoc->tabInChars = wParam;
- if (pdoc->indentInChars == 0)
- pdoc->actualIndentInChars = pdoc->tabInChars;
- }
- InvalidateStyleRedraw();
- break;
-
- case SCI_GETTABWIDTH:
- return pdoc->tabInChars;
-
- case SCI_SETINDENT:
- pdoc->indentInChars = wParam;
- if (pdoc->indentInChars != 0)
- pdoc->actualIndentInChars = pdoc->indentInChars;
- else
- pdoc->actualIndentInChars = pdoc->tabInChars;
- InvalidateStyleRedraw();
- break;
-
- case SCI_GETINDENT:
- return pdoc->indentInChars;
-
- case SCI_SETUSETABS:
- pdoc->useTabs = wParam != 0;
- InvalidateStyleRedraw();
- break;
-
- case SCI_GETUSETABS:
- return pdoc->useTabs;
-
- case SCI_SETLINEINDENTATION:
- pdoc->SetLineIndentation(wParam, lParam);
- break;
-
- case SCI_GETLINEINDENTATION:
- return pdoc->GetLineIndentation(wParam);
-
- case SCI_GETLINEINDENTPOSITION:
- return pdoc->GetLineIndentPosition(wParam);
-
- case SCI_SETTABINDENTS:
- pdoc->tabIndents = wParam != 0;
- break;
-
- case SCI_GETTABINDENTS:
- return pdoc->tabIndents;
-
- case SCI_SETBACKSPACEUNINDENTS:
- pdoc->backspaceUnindents = wParam != 0;
- break;
-
- case SCI_GETBACKSPACEUNINDENTS:
- return pdoc->backspaceUnindents;
-
- case SCI_SETMOUSEDWELLTIME:
- dwellDelay = wParam;
- ticksToDwell = dwellDelay;
- break;
-
- case SCI_GETMOUSEDWELLTIME:
- return dwellDelay;
-
- case SCI_WORDSTARTPOSITION:
- return pdoc->ExtendWordSelect(wParam, -1, lParam != 0);
-
- case SCI_WORDENDPOSITION:
- return pdoc->ExtendWordSelect(wParam, 1, lParam != 0);
-
- case SCI_SETWRAPMODE:
- switch (wParam) {
- case SC_WRAP_WORD:
- wrapState = eWrapWord;
- break;
- case SC_WRAP_CHAR:
- wrapState = eWrapChar;
- break;
- default:
- wrapState = eWrapNone;
- break;
- }
- xOffset = 0;
- InvalidateStyleRedraw();
- ReconfigureScrollBars();
- break;
-
- case SCI_GETWRAPMODE:
- return wrapState;
-
- case SCI_SETWRAPVISUALFLAGS:
- wrapVisualFlags = wParam;
- actualWrapVisualStartIndent = wrapVisualStartIndent;
- if ((wrapVisualFlags & SC_WRAPVISUALFLAG_START) && (actualWrapVisualStartIndent == 0))
- actualWrapVisualStartIndent = 1; // must indent to show start visual
- InvalidateStyleRedraw();
- ReconfigureScrollBars();
- break;
-
- case SCI_GETWRAPVISUALFLAGS:
- return wrapVisualFlags;
-
- case SCI_SETWRAPVISUALFLAGSLOCATION:
- wrapVisualFlagsLocation = wParam;
- InvalidateStyleRedraw();
- break;
-
- case SCI_GETWRAPVISUALFLAGSLOCATION:
- return wrapVisualFlagsLocation;
-
- case SCI_SETWRAPSTARTINDENT:
- wrapVisualStartIndent = wParam;
- actualWrapVisualStartIndent = wrapVisualStartIndent;
- if ((wrapVisualFlags & SC_WRAPVISUALFLAG_START) && (actualWrapVisualStartIndent == 0))
- actualWrapVisualStartIndent = 1; // must indent to show start visual
- InvalidateStyleRedraw();
- ReconfigureScrollBars();
- break;
-
- case SCI_GETWRAPSTARTINDENT:
- return wrapVisualStartIndent;
-
- case SCI_SETLAYOUTCACHE:
- llc.SetLevel(wParam);
- break;
-
- case SCI_GETLAYOUTCACHE:
- return llc.GetLevel();
-
- case SCI_SETSCROLLWIDTH:
- PLATFORM_ASSERT(wParam > 0);
- if ((wParam > 0) && (wParam != static_cast(scrollWidth))) {
- scrollWidth = wParam;
- SetScrollBars();
- }
- break;
-
- case SCI_GETSCROLLWIDTH:
- return scrollWidth;
-
- case SCI_LINESJOIN:
- LinesJoin();
- break;
-
- case SCI_LINESSPLIT:
- LinesSplit(wParam);
- break;
-
- case SCI_TEXTWIDTH:
- PLATFORM_ASSERT(wParam <= STYLE_MAX);
- PLATFORM_ASSERT(lParam);
- return TextWidth(wParam, CharPtrFromSPtr(lParam));
-
- case SCI_TEXTHEIGHT:
- return vs.lineHeight;
-
- case SCI_SETENDATLASTLINE:
- PLATFORM_ASSERT((wParam == 0) || (wParam == 1));
- if (endAtLastLine != (wParam != 0)) {
- endAtLastLine = wParam != 0;
- SetScrollBars();
- }
- break;
-
- case SCI_GETENDATLASTLINE:
- return endAtLastLine;
-
- case SCI_SETCARETSTICKY:
- PLATFORM_ASSERT((wParam == 0) || (wParam == 1));
- if (caretSticky != (wParam != 0)) {
- caretSticky = wParam != 0;
- }
- break;
-
- case SCI_GETCARETSTICKY:
- return caretSticky;
-
- case SCI_TOGGLECARETSTICKY:
- caretSticky = !caretSticky;
- break;
-
- 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;
- SetScrollBars();
- ReconfigureScrollBars();
- }
- break;
-
- case SCI_GETHSCROLLBAR:
- return horizontalScrollBarVisible;
-
- case SCI_SETVSCROLLBAR:
- if (verticalScrollBarVisible != (wParam != 0)) {
- verticalScrollBarVisible = wParam != 0;
- SetScrollBars();
- ReconfigureScrollBars();
- }
- break;
-
- case SCI_GETVSCROLLBAR:
- return verticalScrollBarVisible;
-
- case SCI_SETINDENTATIONGUIDES:
- vs.viewIndentationGuides = wParam != 0;
- Redraw();
- break;
-
- case SCI_GETINDENTATIONGUIDES:
- return vs.viewIndentationGuides;
-
- case SCI_SETHIGHLIGHTGUIDE:
- if ((highlightGuideColumn != static_cast(wParam)) || (wParam > 0)) {
- highlightGuideColumn = wParam;
- Redraw();
- }
- break;
-
- case SCI_GETHIGHLIGHTGUIDE:
- return highlightGuideColumn;
-
- case SCI_GETLINEENDPOSITION:
- return pdoc->LineEnd(wParam);
-
- case SCI_SETCODEPAGE:
- if (ValidCodePage(wParam)) {
- pdoc->dbcsCodePage = wParam;
- InvalidateStyleRedraw();
- }
- break;
-
- case SCI_GETCODEPAGE:
- return pdoc->dbcsCodePage;
-
- case SCI_SETUSEPALETTE:
- palette.allowRealization = wParam != 0;
- InvalidateStyleRedraw();
- break;
-
- case SCI_GETUSEPALETTE:
- return palette.allowRealization;
-
- // Marker definition and setting
- case SCI_MARKERDEFINE:
- if (wParam <= MARKER_MAX)
- vs.markers[wParam].markType = lParam;
- InvalidateStyleData();
- RedrawSelMargin();
- break;
- case SCI_MARKERSETFORE:
- if (wParam <= MARKER_MAX)
- vs.markers[wParam].fore.desired = ColourDesired(lParam);
- InvalidateStyleData();
- RedrawSelMargin();
- break;
- case SCI_MARKERSETBACK:
- if (wParam <= MARKER_MAX)
- vs.markers[wParam].back.desired = ColourDesired(lParam);
- InvalidateStyleData();
- RedrawSelMargin();
- break;
- case SCI_MARKERSETALPHA:
- if (wParam <= MARKER_MAX)
- vs.markers[wParam].alpha = lParam;
- InvalidateStyleRedraw();
- break;
- case SCI_MARKERADD: {
- int markerID = pdoc->AddMark(wParam, lParam);
- return markerID;
- }
- case SCI_MARKERADDSET:
- if (lParam != 0)
- pdoc->AddMarkSet(wParam, lParam);
- break;
-
- case SCI_MARKERDELETE:
- pdoc->DeleteMark(wParam, lParam);
- break;
-
- case SCI_MARKERDELETEALL:
- pdoc->DeleteAllMarks(static_cast(wParam));
- break;
-
- case SCI_MARKERGET:
- return pdoc->GetMark(wParam);
-
- case SCI_MARKERNEXT: {
- int lt = pdoc->LinesTotal();
- for (int iLine = wParam; iLine < lt; iLine++) {
- if ((pdoc->GetMark(iLine) & lParam) != 0)
- return iLine;
- }
- }
- return -1;
-
- case SCI_MARKERPREVIOUS: {
- for (int iLine = wParam; iLine >= 0; iLine--) {
- if ((pdoc->GetMark(iLine) & lParam) != 0)
- return iLine;
- }
- }
- return -1;
-
- case SCI_MARKERDEFINEPIXMAP:
- if (wParam <= MARKER_MAX) {
- vs.markers[wParam].SetXPM(CharPtrFromSPtr(lParam));
- };
- InvalidateStyleData();
- RedrawSelMargin();
- break;
-
- case SCI_SETMARGINTYPEN:
- if (ValidMargin(wParam)) {
- vs.ms[wParam].style = lParam;
- InvalidateStyleRedraw();
- }
- break;
-
- case SCI_GETMARGINTYPEN:
- if (ValidMargin(wParam))
- return vs.ms[wParam].style;
- else
- return 0;
-
- case SCI_SETMARGINWIDTHN:
- if (ValidMargin(wParam)) {
- // Short-circuit if the width is unchanged, to avoid unnecessary redraw.
- if (vs.ms[wParam].width != lParam) {
- vs.ms[wParam].width = lParam;
- InvalidateStyleRedraw();
- }
- }
- break;
-
- case SCI_GETMARGINWIDTHN:
- if (ValidMargin(wParam))
- return vs.ms[wParam].width;
- else
- return 0;
-
- case SCI_SETMARGINMASKN:
- if (ValidMargin(wParam)) {
- vs.ms[wParam].mask = lParam;
- InvalidateStyleRedraw();
- }
- break;
-
- case SCI_GETMARGINMASKN:
- if (ValidMargin(wParam))
- return vs.ms[wParam].mask;
- else
- return 0;
-
- case SCI_SETMARGINSENSITIVEN:
- if (ValidMargin(wParam)) {
- vs.ms[wParam].sensitive = lParam != 0;
- InvalidateStyleRedraw();
- }
- break;
-
- case SCI_GETMARGINSENSITIVEN:
- if (ValidMargin(wParam))
- return vs.ms[wParam].sensitive ? 1 : 0;
- else
- return 0;
-
- case SCI_STYLECLEARALL:
- vs.ClearStyles();
- InvalidateStyleRedraw();
- break;
-
- case SCI_STYLESETFORE:
- if (wParam <= STYLE_MAX) {
- vs.styles[wParam].fore.desired = ColourDesired(lParam);
- InvalidateStyleRedraw();
- }
- break;
- case SCI_STYLESETBACK:
- if (wParam <= STYLE_MAX) {
- vs.styles[wParam].back.desired = ColourDesired(lParam);
- InvalidateStyleRedraw();
- }
- break;
- case SCI_STYLESETBOLD:
- if (wParam <= STYLE_MAX) {
- vs.styles[wParam].bold = lParam != 0;
- InvalidateStyleRedraw();
- }
- break;
- case SCI_STYLESETITALIC:
- if (wParam <= STYLE_MAX) {
- vs.styles[wParam].italic = lParam != 0;
- InvalidateStyleRedraw();
- }
- break;
- case SCI_STYLESETEOLFILLED:
- if (wParam <= STYLE_MAX) {
- vs.styles[wParam].eolFilled = lParam != 0;
- InvalidateStyleRedraw();
- }
- break;
- case SCI_STYLESETSIZE:
- if (wParam <= STYLE_MAX) {
- vs.styles[wParam].size = lParam;
- InvalidateStyleRedraw();
- }
- break;
- case SCI_STYLESETFONT:
- if (lParam == 0)
- return 0;
- if (wParam <= STYLE_MAX) {
- vs.SetStyleFontName(wParam, CharPtrFromSPtr(lParam));
- InvalidateStyleRedraw();
- }
- break;
- case SCI_STYLESETUNDERLINE:
- if (wParam <= STYLE_MAX) {
- vs.styles[wParam].underline = lParam != 0;
- InvalidateStyleRedraw();
- }
- break;
- case SCI_STYLESETCASE:
- if (wParam <= STYLE_MAX) {
- vs.styles[wParam].caseForce = static_cast(lParam);
- InvalidateStyleRedraw();
- }
- break;
- case SCI_STYLESETCHARACTERSET:
- if (wParam <= STYLE_MAX) {
- vs.styles[wParam].characterSet = lParam;
- InvalidateStyleRedraw();
- }
- break;
- case SCI_STYLESETVISIBLE:
- if (wParam <= STYLE_MAX) {
- vs.styles[wParam].visible = lParam != 0;
- InvalidateStyleRedraw();
- }
- break;
- case SCI_STYLESETCHANGEABLE:
- if (wParam <= STYLE_MAX) {
- vs.styles[wParam].changeable = lParam != 0;
- InvalidateStyleRedraw();
- }
- break;
- case SCI_STYLESETHOTSPOT:
- if (wParam <= STYLE_MAX) {
- vs.styles[wParam].hotspot = lParam != 0;
- InvalidateStyleRedraw();
- }
- break;
-
- case SCI_STYLERESETDEFAULT:
- vs.ResetDefaultStyle();
- InvalidateStyleRedraw();
- break;
- case SCI_SETSTYLEBITS:
- pdoc->SetStylingBits(wParam);
- break;
-
- case SCI_GETSTYLEBITS:
- return pdoc->stylingBits;
-
- case SCI_SETLINESTATE:
- return pdoc->SetLineState(wParam, lParam);
-
- case SCI_GETLINESTATE:
- return pdoc->GetLineState(wParam);
-
- case SCI_GETMAXLINESTATE:
- return pdoc->GetMaxLineState();
-
- case SCI_GETCARETLINEVISIBLE:
- return vs.showCaretLineBackground;
- case SCI_SETCARETLINEVISIBLE:
- vs.showCaretLineBackground = wParam != 0;
- InvalidateStyleRedraw();
- break;
- case SCI_GETCARETLINEBACK:
- return vs.caretLineBackground.desired.AsLong();
- case SCI_SETCARETLINEBACK:
- vs.caretLineBackground.desired = wParam;
- InvalidateStyleRedraw();
- break;
- case SCI_GETCARETLINEBACKALPHA:
- return vs.caretLineAlpha;
- case SCI_SETCARETLINEBACKALPHA:
- vs.caretLineAlpha = wParam;
- InvalidateStyleRedraw();
- break;
-
- // Folding messages
-
- case SCI_VISIBLEFROMDOCLINE:
- return cs.DisplayFromDoc(wParam);
-
- case SCI_DOCLINEFROMVISIBLE:
- return cs.DocFromDisplay(wParam);
-
- case SCI_WRAPCOUNT:
- return WrapCount(wParam);
-
- case SCI_SETFOLDLEVEL: {
- int prev = pdoc->SetLevel(wParam, lParam);
- if (prev != lParam)
- RedrawSelMargin();
- return prev;
- }
-
- case SCI_GETFOLDLEVEL:
- return pdoc->GetLevel(wParam);
-
- case SCI_GETLASTCHILD:
- return pdoc->GetLastChild(wParam, lParam);
-
- case SCI_GETFOLDPARENT:
- return pdoc->GetFoldParent(wParam);
-
- case SCI_SHOWLINES:
- cs.SetVisible(wParam, lParam, true);
- SetScrollBars();
- Redraw();
- break;
-
- case SCI_HIDELINES:
- cs.SetVisible(wParam, lParam, false);
- SetScrollBars();
- Redraw();
- break;
-
- case SCI_GETLINEVISIBLE:
- return cs.GetVisible(wParam);
-
- case SCI_SETFOLDEXPANDED:
- if (cs.SetExpanded(wParam, lParam != 0)) {
- RedrawSelMargin();
- }
- break;
-
- case SCI_GETFOLDEXPANDED:
- return cs.GetExpanded(wParam);
-
- case SCI_SETFOLDFLAGS:
- foldFlags = wParam;
- Redraw();
- break;
-
- case SCI_TOGGLEFOLD:
- ToggleContraction(wParam);
- break;
-
- case SCI_ENSUREVISIBLE:
- EnsureLineVisible(wParam, false);
- break;
-
- case SCI_ENSUREVISIBLEENFORCEPOLICY:
- EnsureLineVisible(wParam, true);
- break;
-
- case SCI_SEARCHANCHOR:
- SearchAnchor();
- break;
-
- case SCI_SEARCHNEXT:
- case SCI_SEARCHPREV:
- return SearchText(iMessage, wParam, lParam);
-
-#ifdef INCLUDE_DEPRECATED_FEATURES
- case SCI_SETCARETPOLICY: // Deprecated
- caretXPolicy = caretYPolicy = wParam;
- caretXSlop = caretYSlop = lParam;
- break;
-#endif
-
- case SCI_SETXCARETPOLICY:
- caretXPolicy = wParam;
- caretXSlop = lParam;
- break;
-
- case SCI_SETYCARETPOLICY:
- caretYPolicy = wParam;
- caretYSlop = lParam;
- break;
-
- case SCI_SETVISIBLEPOLICY:
- visiblePolicy = wParam;
- visibleSlop = lParam;
- break;
-
- case SCI_LINESONSCREEN:
- return LinesOnScreen();
-
- case SCI_SETSELFORE:
- vs.selforeset = wParam != 0;
- vs.selforeground.desired = ColourDesired(lParam);
- InvalidateStyleRedraw();
- break;
-
- case SCI_SETSELBACK:
- vs.selbackset = wParam != 0;
- vs.selbackground.desired = ColourDesired(lParam);
- InvalidateStyleRedraw();
- break;
-
- case SCI_SETSELALPHA:
- vs.selAlpha = wParam;
- InvalidateStyleRedraw();
- break;
-
- case SCI_GETSELALPHA:
- return vs.selAlpha;
-
- case SCI_SETWHITESPACEFORE:
- vs.whitespaceForegroundSet = wParam != 0;
- vs.whitespaceForeground.desired = ColourDesired(lParam);
- InvalidateStyleRedraw();
- break;
-
- case SCI_SETWHITESPACEBACK:
- vs.whitespaceBackgroundSet = wParam != 0;
- vs.whitespaceBackground.desired = ColourDesired(lParam);
- InvalidateStyleRedraw();
- break;
-
- case SCI_SETCARETFORE:
- vs.caretcolour.desired = ColourDesired(wParam);
- InvalidateStyleRedraw();
- break;
-
- case SCI_GETCARETFORE:
- return vs.caretcolour.desired.AsLong();
-
- case SCI_SETCARETWIDTH:
- if (wParam <= 0)
- vs.caretWidth = 0;
- else if (wParam >= 3)
- vs.caretWidth = 3;
- else
- vs.caretWidth = wParam;
- InvalidateStyleRedraw();
- break;
-
- case SCI_GETCARETWIDTH:
- return vs.caretWidth;
-
- case SCI_ASSIGNCMDKEY:
- kmap.AssignCmdKey(Platform::LowShortFromLong(wParam),
- Platform::HighShortFromLong(wParam), lParam);
- break;
-
- case SCI_CLEARCMDKEY:
- kmap.AssignCmdKey(Platform::LowShortFromLong(wParam),
- Platform::HighShortFromLong(wParam), SCI_NULL);
- break;
-
- case SCI_CLEARALLCMDKEYS:
- kmap.Clear();
- break;
-
- case SCI_INDICSETSTYLE:
- if (wParam <= INDIC_MAX) {
- vs.indicators[wParam].style = lParam;
- InvalidateStyleRedraw();
- }
- break;
-
- case SCI_INDICGETSTYLE:
- return (wParam <= INDIC_MAX) ? vs.indicators[wParam].style : 0;
-
- case SCI_INDICSETFORE:
- if (wParam <= INDIC_MAX) {
- vs.indicators[wParam].fore.desired = ColourDesired(lParam);
- InvalidateStyleRedraw();
- }
- break;
-
- case SCI_INDICGETFORE:
- return (wParam <= INDIC_MAX) ? vs.indicators[wParam].fore.desired.AsLong() : 0;
-
- case SCI_LINEDOWN:
- case SCI_LINEDOWNEXTEND:
- case SCI_PARADOWN:
- case SCI_PARADOWNEXTEND:
- case SCI_LINEUP:
- case SCI_LINEUPEXTEND:
- case SCI_PARAUP:
- case SCI_PARAUPEXTEND:
- case SCI_CHARLEFT:
- case SCI_CHARLEFTEXTEND:
- case SCI_CHARRIGHT:
- case SCI_CHARRIGHTEXTEND:
- case SCI_WORDLEFT:
- case SCI_WORDLEFTEXTEND:
- case SCI_WORDRIGHT:
- case SCI_WORDRIGHTEXTEND:
- case SCI_WORDLEFTEND:
- case SCI_WORDLEFTENDEXTEND:
- case SCI_WORDRIGHTEND:
- case SCI_WORDRIGHTENDEXTEND:
- case SCI_HOME:
- case SCI_HOMEEXTEND:
- case SCI_LINEEND:
- case SCI_LINEENDEXTEND:
- case SCI_HOMEWRAP:
- case SCI_HOMEWRAPEXTEND:
- case SCI_LINEENDWRAP:
- case SCI_LINEENDWRAPEXTEND:
- case SCI_DOCUMENTSTART:
- case SCI_DOCUMENTSTARTEXTEND:
- case SCI_DOCUMENTEND:
- case SCI_DOCUMENTENDEXTEND:
-
- case SCI_STUTTEREDPAGEUP:
- case SCI_STUTTEREDPAGEUPEXTEND:
- case SCI_STUTTEREDPAGEDOWN:
- case SCI_STUTTEREDPAGEDOWNEXTEND:
-
- case SCI_PAGEUP:
- case SCI_PAGEUPEXTEND:
- case SCI_PAGEDOWN:
- case SCI_PAGEDOWNEXTEND:
- case SCI_EDITTOGGLEOVERTYPE:
- case SCI_CANCEL:
- case SCI_DELETEBACK:
- case SCI_TAB:
- case SCI_BACKTAB:
- case SCI_NEWLINE:
- case SCI_FORMFEED:
- case SCI_VCHOME:
- case SCI_VCHOMEEXTEND:
- case SCI_VCHOMEWRAP:
- case SCI_VCHOMEWRAPEXTEND:
- case SCI_ZOOMIN:
- case SCI_ZOOMOUT:
- case SCI_DELWORDLEFT:
- case SCI_DELWORDRIGHT:
- case SCI_DELLINELEFT:
- case SCI_DELLINERIGHT:
- case SCI_LINECOPY:
- case SCI_LINECUT:
- case SCI_LINEDELETE:
- case SCI_LINETRANSPOSE:
- case SCI_LINEDUPLICATE:
- case SCI_LOWERCASE:
- case SCI_UPPERCASE:
- case SCI_LINESCROLLDOWN:
- case SCI_LINESCROLLUP:
- case SCI_WORDPARTLEFT:
- case SCI_WORDPARTLEFTEXTEND:
- case SCI_WORDPARTRIGHT:
- case SCI_WORDPARTRIGHTEXTEND:
- case SCI_DELETEBACKNOTLINE:
- case SCI_HOMEDISPLAY:
- case SCI_HOMEDISPLAYEXTEND:
- case SCI_LINEENDDISPLAY:
- case SCI_LINEENDDISPLAYEXTEND:
- case SCI_LINEDOWNRECTEXTEND:
- case SCI_LINEUPRECTEXTEND:
- case SCI_CHARLEFTRECTEXTEND:
- case SCI_CHARRIGHTRECTEXTEND:
- case SCI_HOMERECTEXTEND:
- case SCI_VCHOMERECTEXTEND:
- case SCI_LINEENDRECTEXTEND:
- case SCI_PAGEUPRECTEXTEND:
- case SCI_PAGEDOWNRECTEXTEND:
- case SCI_SELECTIONDUPLICATE:
- return KeyCommand(iMessage);
-
- case SCI_BRACEHIGHLIGHT:
- SetBraceHighlight(static_cast(wParam), lParam, STYLE_BRACELIGHT);
- break;
-
- case SCI_BRACEBADLIGHT:
- SetBraceHighlight(static_cast(wParam), -1, STYLE_BRACEBAD);
- break;
-
- case SCI_BRACEMATCH:
- // wParam is position of char to find brace for,
- // lParam is maximum amount of text to restyle to find it
- return pdoc->BraceMatch(wParam, lParam);
-
- case SCI_GETVIEWEOL:
- return vs.viewEOL;
-
- case SCI_SETVIEWEOL:
- vs.viewEOL = wParam != 0;
- InvalidateStyleRedraw();
- break;
-
- case SCI_SETZOOM:
- vs.zoomLevel = wParam;
- InvalidateStyleRedraw();
- NotifyZoom();
- break;
-
- case SCI_GETZOOM:
- return vs.zoomLevel;
-
- case SCI_GETEDGECOLUMN:
- return theEdge;
-
- case SCI_SETEDGECOLUMN:
- theEdge = wParam;
- InvalidateStyleRedraw();
- break;
-
- case SCI_GETEDGEMODE:
- return vs.edgeState;
-
- case SCI_SETEDGEMODE:
- vs.edgeState = wParam;
- InvalidateStyleRedraw();
- break;
-
- case SCI_GETEDGECOLOUR:
- return vs.edgecolour.desired.AsLong();
-
- case SCI_SETEDGECOLOUR:
- vs.edgecolour.desired = ColourDesired(wParam);
- InvalidateStyleRedraw();
- break;
-
- case SCI_GETDOCPOINTER:
- return reinterpret_cast(pdoc);
-
- case SCI_SETDOCPOINTER:
- CancelModes();
- SetDocPointer(reinterpret_cast(lParam));
- return 0;
-
- case SCI_CREATEDOCUMENT: {
- Document *doc = new Document();
- if (doc) {
- doc->AddRef();
- }
- return reinterpret_cast(doc);
- }
-
- case SCI_ADDREFDOCUMENT:
- (reinterpret_cast(lParam))->AddRef();
- break;
-
- case SCI_RELEASEDOCUMENT:
- (reinterpret_cast(lParam))->Release();
- break;
-
- case SCI_SETMODEVENTMASK:
- modEventMask = wParam;
- return 0;
-
- case SCI_GETMODEVENTMASK:
- return modEventMask;
-
- case SCI_CONVERTEOLS:
- pdoc->ConvertLineEnds(wParam);
- SetSelection(currentPos, anchor); // Ensure selection inside document
- return 0;
-
- case SCI_SETLENGTHFORENCODE:
- lengthForEncode = wParam;
- return 0;
-
- case SCI_SELECTIONISRECTANGLE:
- return selType == selRectangle ? 1 : 0;
-
- case SCI_SETSELECTIONMODE: {
- switch (wParam) {
- case SC_SEL_STREAM:
- moveExtendsSelection = !moveExtendsSelection || (selType != selStream);
- selType = selStream;
- break;
- case SC_SEL_RECTANGLE:
- moveExtendsSelection = !moveExtendsSelection || (selType != selRectangle);
- selType = selRectangle;
- break;
- case SC_SEL_LINES:
- moveExtendsSelection = !moveExtendsSelection || (selType != selLines);
- selType = selLines;
- break;
- default:
- moveExtendsSelection = !moveExtendsSelection || (selType != selStream);
- selType = selStream;
- }
- InvalidateSelection(currentPos, anchor);
- }
- case SCI_GETSELECTIONMODE:
- switch (selType) {
- case selStream:
- return SC_SEL_STREAM;
- case selRectangle:
- return SC_SEL_RECTANGLE;
- case selLines:
- return SC_SEL_LINES;
- default: // ?!
- return SC_SEL_STREAM;
- }
- case SCI_GETLINESELSTARTPOSITION: {
- SelectionLineIterator lineIterator(this);
- lineIterator.SetAt(wParam);
- return lineIterator.startPos;
- }
- case SCI_GETLINESELENDPOSITION: {
- SelectionLineIterator lineIterator(this);
- lineIterator.SetAt(wParam);
- return lineIterator.endPos;
- }
-
- case SCI_SETOVERTYPE:
- inOverstrike = wParam != 0;
- break;
-
- case SCI_GETOVERTYPE:
- return inOverstrike ? 1 : 0;
-
- case SCI_SETFOCUS:
- SetFocusState(wParam != 0);
- break;
-
- case SCI_GETFOCUS:
- return hasFocus;
-
- case SCI_SETSTATUS:
- errorStatus = wParam;
- break;
-
- case SCI_GETSTATUS:
- return errorStatus;
-
- case SCI_SETMOUSEDOWNCAPTURES:
- mouseDownCaptures = wParam != 0;
- break;
-
- case SCI_GETMOUSEDOWNCAPTURES:
- return mouseDownCaptures;
-
- case SCI_SETCURSOR:
- cursorMode = wParam;
- DisplayCursor(Window::cursorText);
- break;
-
- case SCI_GETCURSOR:
- return cursorMode;
-
- case SCI_SETCONTROLCHARSYMBOL:
- controlCharSymbol = wParam;
- break;
-
- case SCI_GETCONTROLCHARSYMBOL:
- return controlCharSymbol;
-
- case SCI_STARTRECORD:
- recordingMacro = true;
- return 0;
-
- case SCI_STOPRECORD:
- recordingMacro = false;
- return 0;
-
- case SCI_MOVECARETINSIDEVIEW:
- MoveCaretInsideView();
- break;
-
- case SCI_SETFOLDMARGINCOLOUR:
- vs.foldmarginColourSet = wParam != 0;
- vs.foldmarginColour.desired = ColourDesired(lParam);
- InvalidateStyleRedraw();
- break;
-
- case SCI_SETFOLDMARGINHICOLOUR:
- vs.foldmarginHighlightColourSet = wParam != 0;
- vs.foldmarginHighlightColour.desired = ColourDesired(lParam);
- InvalidateStyleRedraw();
- break;
-
- case SCI_SETHOTSPOTACTIVEFORE:
- vs.hotspotForegroundSet = wParam != 0;
- vs.hotspotForeground.desired = ColourDesired(lParam);
- InvalidateStyleRedraw();
- break;
-
- case SCI_SETHOTSPOTACTIVEBACK:
- vs.hotspotBackgroundSet = wParam != 0;
- vs.hotspotBackground.desired = ColourDesired(lParam);
- InvalidateStyleRedraw();
- break;
-
- case SCI_SETHOTSPOTACTIVEUNDERLINE:
- vs.hotspotUnderline = wParam != 0;
- InvalidateStyleRedraw();
- break;
-
- case SCI_SETHOTSPOTSINGLELINE:
- vs.hotspotSingleLine = wParam != 0;
- InvalidateStyleRedraw();
- break;
-
- case SCI_SETPASTECONVERTENDINGS:
- convertPastes = wParam != 0;
- break;
-
- case SCI_GETPASTECONVERTENDINGS:
- return convertPastes ? 1 : 0;
-
- default:
- return DefWndProc(iMessage, wParam, lParam);
- }
- //Platform::DebugPrintf("end wnd proc\n");
- return 0l;
-}
diff --git a/src/plugins/contrib/wxSmithSTC/stc/scintilla/src/Editor.h b/src/plugins/contrib/wxSmithSTC/stc/scintilla/src/Editor.h
deleted file mode 100644
index fe7be268ae..0000000000
--- a/src/plugins/contrib/wxSmithSTC/stc/scintilla/src/Editor.h
+++ /dev/null
@@ -1,582 +0,0 @@
-// Scintilla source code edit control
-/** @file Editor.h
- ** Defines the main editor class.
- **/
-// Copyright 1998-2003 by Neil Hodgson
-// The License.txt file describes the conditions under which this software may be distributed.
-
-#ifndef EDITOR_H
-#define EDITOR_H
-
-/**
- */
-class Caret {
-public:
- bool active;
- bool on;
- int period;
-
- Caret();
-};
-
-/**
- */
-class Timer {
-public:
- bool ticking;
- int ticksToWait;
- enum {tickSize = 100};
- TickerID tickerID;
-
- Timer();
-};
-
-/**
- */
-class Idler {
-public:
- bool state;
- IdlerID idlerID;
-
- Idler();
-};
-
-/**
- */
-class LineLayout {
-private:
- friend class LineLayoutCache;
- int *lineStarts;
- int lenLineStarts;
- /// Drawing is only performed for @a maxLineLength characters on each line.
- int lineNumber;
- bool inCache;
-public:
- enum { wrapWidthInfinite = 0x7ffffff };
- int maxLineLength;
- int numCharsInLine;
- enum validLevel { llInvalid, llCheckTextAndStyle, llPositions, llLines } validity;
- int xHighlightGuide;
- bool highlightColumn;
- int selStart;
- int selEnd;
- bool containsCaret;
- int edgeColumn;
- char *chars;
- unsigned char *styles;
- int styleBitsSet;
- char *indicators;
- int *positions;
- char bracePreviousStyles[2];
-
- // Hotspot support
- int hsStart;
- int hsEnd;
-
- // Wrapped line support
- int widthLine;
- int lines;
-
- LineLayout(int maxLineLength_);
- virtual ~LineLayout();
- void Resize(int maxLineLength_);
- void Free();
- void Invalidate(validLevel validity_);
- int LineStart(int line) {
- if (line <= 0) {
- return 0;
- } else if ((line >= lines) || !lineStarts) {
- return numCharsInLine;
- } else {
- return lineStarts[line];
- }
- }
- void SetLineStart(int line, int start);
- void SetBracesHighlight(Range rangeLine, Position braces[],
- char bracesMatchStyle, int xHighlight);
- void RestoreBracesHighlight(Range rangeLine, Position braces[]);
-};
-
-/**
- */
-class LineLayoutCache {
- int level;
- int length;
- int size;
- LineLayout **cache;
- bool allInvalidated;
- int styleClock;
- int useCount;
- void Allocate(int length_);
- void AllocateForLevel(int linesOnScreen, int linesInDoc);
-public:
- LineLayoutCache();
- virtual ~LineLayoutCache();
- void Deallocate();
- enum {
- llcNone=SC_CACHE_NONE,
- llcCaret=SC_CACHE_CARET,
- llcPage=SC_CACHE_PAGE,
- llcDocument=SC_CACHE_DOCUMENT
- };
- void Invalidate(LineLayout::validLevel validity_);
- void SetLevel(int level_);
- int GetLevel() { return level; }
- LineLayout *Retrieve(int lineNumber, int lineCaret, int maxChars, int styleClock_,
- int linesOnScreen, int linesInDoc);
- void Dispose(LineLayout *ll);
-};
-
-/**
- * Hold a piece of text selected for copying or dragging.
- * The text is expected to hold a terminating '\0' and this is counted in len.
- */
-class SelectionText {
-public:
- char *s;
- int len;
- bool rectangular;
- int codePage;
- int characterSet;
- SelectionText() : s(0), len(0), rectangular(false), codePage(0), characterSet(0) {}
- ~SelectionText() {
- Free();
- }
- void Free() {
- Set(0, 0, 0, 0, false);
- }
- void Set(char *s_, int len_, int codePage_, int characterSet_, bool rectangular_) {
- delete []s;
- s = s_;
- if (s)
- len = len_;
- else
- len = 0;
- codePage = codePage_;
- characterSet = characterSet_;
- rectangular = rectangular_;
- }
- void Copy(const char *s_, int len_, int codePage_, int characterSet_, bool rectangular_) {
- delete []s;
- s = new char[len_];
- if (s) {
- len = len_;
- for (int i = 0; i < len_; i++) {
- s[i] = s_[i];
- }
- } else {
- len = 0;
- }
- codePage = codePage_;
- characterSet = characterSet_;
- rectangular = rectangular_;
- }
- void Copy(const SelectionText &other) {
- Copy(other.s, other.len, other.codePage, other.characterSet, other.rectangular);
- }
-};
-
-/**
- */
-class Editor : public DocWatcher {
- // Private so Editor objects can not be copied
- Editor(const Editor &) : DocWatcher() {}
- Editor &operator=(const Editor &) { return *this; }
-
-protected: // ScintillaBase subclass needs access to much of Editor
-
- /** On GTK+, Scintilla is a container widget holding two scroll bars
- * whereas on Windows there is just one window with both scroll bars turned on. */
- Window wMain; ///< The Scintilla parent window
-
- /** Style resources may be expensive to allocate so are cached between uses.
- * When a style attribute is changed, this cache is flushed. */
- bool stylesValid;
- ViewStyle vs;
- Palette palette;
-
- int printMagnification;
- int printColourMode;
- int printWrapState;
- int cursorMode;
- int controlCharSymbol;
-
- bool hasFocus;
- bool hideSelection;
- bool inOverstrike;
- int errorStatus;
- bool mouseDownCaptures;
-
- /** In bufferedDraw mode, graphics operations are drawn to a pixmap and then copied to
- * the screen. This avoids flashing but is about 30% slower. */
- bool bufferedDraw;
- /** In twoPhaseDraw mode, drawing is performed in two phases, first the background
- * and then the foreground. This avoids chopping off characters that overlap the next run. */
- bool twoPhaseDraw;
-
- int xOffset; ///< Horizontal scrolled amount in pixels
- int xCaretMargin; ///< Ensure this many pixels visible on both sides of caret
- bool horizontalScrollBarVisible;
- int scrollWidth;
- bool verticalScrollBarVisible;
- bool endAtLastLine;
- bool caretSticky;
-
- Surface *pixmapLine;
- Surface *pixmapSelMargin;
- Surface *pixmapSelPattern;
- Surface *pixmapIndentGuide;
- Surface *pixmapIndentGuideHighlight;
-
- LineLayoutCache llc;
-
- KeyMap kmap;
-
- Caret caret;
- Timer timer;
- Timer autoScrollTimer;
- enum { autoScrollDelay = 200 };
-
- Idler idler;
-
- Point lastClick;
- unsigned int lastClickTime;
- int dwellDelay;
- int ticksToDwell;
- bool dwelling;
- enum { selChar, selWord, selLine } selectionType;
- Point ptMouseLast;
- bool inDragDrop;
- bool dropWentOutside;
- int posDrag;
- int posDrop;
- int lastXChosen;
- int lineAnchor;
- int originalAnchorPos;
- int currentPos;
- int anchor;
- int targetStart;
- int targetEnd;
- int searchFlags;
- int topLine;
- int posTopLine;
- int lengthForEncode;
-
- bool needUpdateUI;
- Position braces[2];
- int bracesMatchStyle;
- int highlightGuideColumn;
-
- int theEdge;
-
- enum { notPainting, painting, paintAbandoned } paintState;
- PRectangle rcPaint;
- bool paintingAllText;
-
- int modEventMask;
-
- SelectionText drag;
- enum selTypes { noSel, selStream, selRectangle, selLines };
- selTypes selType;
- bool moveExtendsSelection;
- int xStartSelect; ///< x position of start of rectangular selection
- int xEndSelect; ///< x position of end of rectangular selection
- bool primarySelection;
-
- int caretXPolicy;
- int caretXSlop; ///< Ensure this many pixels visible on both sides of caret
-
- int caretYPolicy;
- int caretYSlop; ///< Ensure this many lines visible on both sides of caret
-
- int visiblePolicy;
- int visibleSlop;
-
- int searchAnchor;
-
- bool recordingMacro;
-
- int foldFlags;
- ContractionState cs;
-
- // Hotspot support
- int hsStart;
- int hsEnd;
-
- // Wrapping support
- enum { eWrapNone, eWrapWord, eWrapChar } wrapState;
- enum { wrapLineLarge = 0x7ffffff };
- int wrapWidth;
- int wrapStart;
- int wrapEnd;
- int wrapVisualFlags;
- int wrapVisualFlagsLocation;
- int wrapVisualStartIndent;
- int actualWrapVisualStartIndent;
-
- bool convertPastes;
-
- Document *pdoc;
-
- Editor();
- virtual ~Editor();
- virtual void Initialise() = 0;
- virtual void Finalise();
-
- void InvalidateStyleData();
- void InvalidateStyleRedraw();
- virtual void RefreshColourPalette(Palette &pal, bool want);
- void RefreshStyleData();
- void DropGraphics();
-
- virtual PRectangle GetClientRectangle();
- PRectangle GetTextRectangle();
-
- int LinesOnScreen();
- int LinesToScroll();
- int MaxScrollPos();
- Point LocationFromPosition(int pos);
- int XFromPosition(int pos);
- int PositionFromLocation(Point pt);
- int PositionFromLocationClose(Point pt);
- int PositionFromLineX(int line, int x);
- int LineFromLocation(Point pt);
- void SetTopLine(int topLineNew);
-
- bool AbandonPaint();
- void RedrawRect(PRectangle rc);
- void Redraw();
- void RedrawSelMargin(int line=-1);
- PRectangle RectangleFromRange(int start, int end);
- void InvalidateRange(int start, int end);
-
- int CurrentPosition();
- bool SelectionEmpty();
- int SelectionStart();
- int SelectionEnd();
- void SetRectangularRange();
- void InvalidateSelection(int currentPos_, int anchor_);
- void SetSelection(int currentPos_, int anchor_);
- void SetSelection(int currentPos_);
- void SetEmptySelection(int currentPos_);
- bool RangeContainsProtected(int start, int end) const;
- bool SelectionContainsProtected();
- int MovePositionOutsideChar(int pos, int moveDir, bool checkLineEnd=true);
- int MovePositionTo(int newPos, selTypes sel=noSel, bool ensureVisible=true);
- int MovePositionSoVisible(int pos, int moveDir);
- void SetLastXChosen();
-
- void ScrollTo(int line, bool moveThumb=true);
- virtual void ScrollText(int linesToMove);
- void HorizontalScrollTo(int xPos);
- void MoveCaretInsideView(bool ensureVisible=true);
- int DisplayFromPosition(int pos);
- void EnsureCaretVisible(bool useMargin=true, bool vert=true, bool horiz=true);
- void ShowCaretAtCurrentPosition();
- void DropCaret();
- void InvalidateCaret();
- virtual void UpdateSystemCaret();
-
- void NeedWrapping(int docLineStart = 0, int docLineEnd = wrapLineLarge);
- bool WrapLines(bool fullWrap, int priorityWrapLineStart);
- void LinesJoin();
- void LinesSplit(int pixelWidth);
-
- int SubstituteMarkerIfEmpty(int markerCheck, int markerDefault);
- void PaintSelMargin(Surface *surface, PRectangle &rc);
- LineLayout *RetrieveLineLayout(int lineNumber);
- void LayoutLine(int line, Surface *surface, ViewStyle &vstyle, LineLayout *ll,
- int width=LineLayout::wrapWidthInfinite);
- ColourAllocated SelectionBackground(ViewStyle &vsDraw);
- ColourAllocated TextBackground(ViewStyle &vsDraw, bool overrideBackground, ColourAllocated background, bool inSelection, bool inHotspot, int styleMain, int i, LineLayout *ll);
- void DrawIndentGuide(Surface *surface, int lineVisible, int lineHeight, int start, PRectangle rcSegment, bool highlight);
- void DrawWrapMarker(Surface *surface, PRectangle rcPlace, bool isEndMarker, ColourAllocated wrapColour);
- void DrawEOL(Surface *surface, ViewStyle &vsDraw, PRectangle rcLine, LineLayout *ll,
- int line, int lineEnd, int xStart, int subLine, int subLineStart,
- bool overrideBackground, ColourAllocated background,
- bool drawWrapMark, ColourAllocated wrapColour);
- void DrawLine(Surface *surface, ViewStyle &vsDraw, int line, int lineVisible, int xStart,
- PRectangle rcLine, LineLayout *ll, int subLine=0);
- void RefreshPixMaps(Surface *surfaceWindow);
- void Paint(Surface *surfaceWindow, PRectangle rcArea);
- long FormatRange(bool draw, RangeToFormat *pfr);
- int TextWidth(int style, const char *text);
-
- virtual void SetVerticalScrollPos() = 0;
- virtual void SetHorizontalScrollPos() = 0;
- virtual bool ModifyScrollBars(int nMax, int nPage) = 0;
- virtual void ReconfigureScrollBars();
- void SetScrollBars();
- void ChangeSize();
-
- void AddChar(char ch);
- virtual void AddCharUTF(char *s, unsigned int len, bool treatAsDBCS=false);
- void ClearSelection();
- void ClearAll();
- void ClearDocumentStyle();
- void Cut();
- void PasteRectangular(int pos, const char *ptr, int len);
- virtual void Copy() = 0;
- virtual bool CanPaste();
- virtual void Paste() = 0;
- void Clear();
- void SelectAll();
- void Undo();
- void Redo();
- void DelChar();
- void DelCharBack(bool allowLineStartDeletion);
- virtual void ClaimSelection() = 0;
-
- virtual void NotifyChange() = 0;
- virtual void NotifyFocus(bool focus);
- virtual int GetCtrlID() { return ctrlID; }
- virtual void NotifyParent(SCNotification scn) = 0;
- virtual void NotifyStyleToNeeded(int endStyleNeeded);
- void NotifyChar(int ch);
- void NotifyMove(int position);
- void NotifySavePoint(bool isSavePoint);
- void NotifyModifyAttempt();
- virtual void NotifyDoubleClick(Point pt, bool shift);
- void NotifyHotSpotClicked(int position, bool shift, bool ctrl, bool alt);
- void NotifyHotSpotDoubleClicked(int position, bool shift, bool ctrl, bool alt);
- void NotifyUpdateUI();
- void NotifyPainted();
- bool NotifyMarginClick(Point pt, bool shift, bool ctrl, bool alt);
- void NotifyNeedShown(int pos, int len);
- void NotifyDwelling(Point pt, bool state);
- void NotifyZoom();
-
- void NotifyModifyAttempt(Document *document, void *userData);
- void NotifySavePoint(Document *document, void *userData, bool atSavePoint);
- void CheckModificationForWrap(DocModification mh);
- void NotifyModified(Document *document, DocModification mh, void *userData);
- void NotifyDeleted(Document *document, void *userData);
- void NotifyStyleNeeded(Document *doc, void *userData, int endPos);
- void NotifyMacroRecord(unsigned int iMessage, uptr_t wParam, sptr_t lParam);
-
- void PageMove(int direction, selTypes sel=noSel, bool stuttered = false);
- void ChangeCaseOfSelection(bool makeUpperCase);
- void LineTranspose();
- void Duplicate(bool forLine);
- virtual void CancelModes();
- void NewLine();
- void CursorUpOrDown(int direction, selTypes sel=noSel);
- void ParaUpOrDown(int direction, selTypes sel=noSel);
- int StartEndDisplayLine(int pos, bool start);
- virtual int KeyCommand(unsigned int iMessage);
- virtual int KeyDefault(int /* key */, int /*modifiers*/);
- int KeyDown(int key, bool shift, bool ctrl, bool alt, bool *consumed=0);
-
- int GetWhitespaceVisible();
- void SetWhitespaceVisible(int view);
-
- void Indent(bool forwards);
-
- long FindText(uptr_t wParam, sptr_t lParam);
- void SearchAnchor();
- long SearchText(unsigned int iMessage, uptr_t wParam, sptr_t lParam);
- long SearchInTarget(const char *text, int length);
- void GoToLine(int lineNo);
-
- virtual void CopyToClipboard(const SelectionText &selectedText) = 0;
- char *CopyRange(int start, int end);
- void CopySelectionFromRange(SelectionText *ss, int start, int end);
- void CopySelectionRange(SelectionText *ss);
- void CopyRangeToClipboard(int start, int end);
- void CopyText(int length, const char *text);
- void SetDragPosition(int newPos);
- virtual void DisplayCursor(Window::Cursor c);
- virtual void StartDrag();
- void DropAt(int position, const char *value, bool moving, bool rectangular);
- /** PositionInSelection returns 0 if position in selection, -1 if position before selection, and 1 if after.
- * Before means either before any line of selection or before selection on its line, with a similar meaning to after. */
- int PositionInSelection(int pos);
- bool PointInSelection(Point pt);
- bool PointInSelMargin(Point pt);
- void LineSelection(int lineCurrent_, int lineAnchor_);
- void DwellEnd(bool mouseMoved);
- virtual void ButtonDown(Point pt, unsigned int curTime, bool shift, bool ctrl, bool alt);
- void ButtonMove(Point pt);
- void ButtonUp(Point pt, unsigned int curTime, bool ctrl);
-
- void Tick();
- bool Idle();
- virtual void SetTicking(bool on) = 0;
- virtual bool SetIdle(bool) { return false; }
- virtual void SetMouseCapture(bool on) = 0;
- virtual bool HaveMouseCapture() = 0;
- void SetFocusState(bool focusState);
-
- virtual bool PaintContains(PRectangle rc);
- bool PaintContainsMargin();
- void CheckForChangeOutsidePaint(Range r);
- void SetBraceHighlight(Position pos0, Position pos1, int matchStyle);
-
- void SetDocPointer(Document *document);
-
- void Expand(int &line, bool doExpand);
- void ToggleContraction(int line);
- void EnsureLineVisible(int lineDoc, bool enforcePolicy);
- int ReplaceTarget(bool replacePatterns, const char *text, int length=-1);
-
- bool PositionIsHotspot(int position);
- bool PointIsHotspot(Point pt);
- void SetHotSpotRange(Point *pt);
- void GetHotSpotRange(int& hsStart, int& hsEnd);
-
- int CodePage() const;
- virtual bool ValidCodePage(int /* codePage */) const { return true; }
- int WrapCount(int line);
-
- virtual sptr_t DefWndProc(unsigned int iMessage, uptr_t wParam, sptr_t lParam) = 0;
-
-public:
- // Public so the COM thunks can access it.
- bool IsUnicodeMode() const;
- // Public so scintilla_send_message can use it.
- virtual sptr_t WndProc(unsigned int iMessage, uptr_t wParam, sptr_t lParam);
- // Public so scintilla_set_id can use it.
- int ctrlID;
- friend class AutoSurface;
- friend class SelectionLineIterator;
-};
-
-/**
- * A smart pointer class to ensure Surfaces are set up and deleted correctly.
- */
-class AutoSurface {
-private:
- Surface *surf;
-public:
- AutoSurface(Editor *ed) : surf(0) {
- if (ed->wMain.GetID()) {
- surf = Surface::Allocate();
- if (surf) {
- surf->Init(ed->wMain.GetID());
- surf->SetUnicodeMode(SC_CP_UTF8 == ed->CodePage());
- surf->SetDBCSMode(ed->CodePage());
- }
- }
- }
- AutoSurface(SurfaceID sid, Editor *ed) : surf(0) {
- if (ed->wMain.GetID()) {
- surf = Surface::Allocate();
- if (surf) {
- surf->Init(sid, ed->wMain.GetID());
- surf->SetUnicodeMode(SC_CP_UTF8 == ed->CodePage());
- surf->SetDBCSMode(ed->CodePage());
- }
- }
- }
- ~AutoSurface() {
- delete surf;
- }
- Surface *operator->() const {
- return surf;
- }
- operator Surface *() const {
- return surf;
- }
-};
-
-#endif
diff --git a/src/plugins/contrib/wxSmithSTC/stc/scintilla/src/ExternalLexer.cxx b/src/plugins/contrib/wxSmithSTC/stc/scintilla/src/ExternalLexer.cxx
deleted file mode 100644
index acf45bc2d5..0000000000
--- a/src/plugins/contrib/wxSmithSTC/stc/scintilla/src/ExternalLexer.cxx
+++ /dev/null
@@ -1,259 +0,0 @@
-// Scintilla source code edit control
-/** @file ExternalLexer.cxx
- ** Support external lexers in DLLs.
- **/
-// Copyright 2001 Simon Steele , portions copyright Neil Hodgson.
-// The License.txt file describes the conditions under which this software may be distributed.
-
-#include
-#include
-#include
-#include
-
-#include "Platform.h"
-
-#include "Scintilla.h"
-
-#include "SciLexer.h"
-#include "PropSet.h"
-#include "Accessor.h"
-#include "DocumentAccessor.h"
-#include "KeyWords.h"
-#include "ExternalLexer.h"
-
-LexerManager *LexerManager::theInstance = NULL;
-
-//------------------------------------------
-//
-// ExternalLexerModule
-//
-//------------------------------------------
-
-char **WordListsToStrings(WordList *val[]) {
- int dim = 0;
- while (val[dim])
- dim++;
- char **wls = new char * [dim + 1];
- for (int i = 0;i < dim;i++) {
- SString words;
- words = "";
- for (int n = 0; n < val[i]->len; n++) {
- words += val[i]->words[n];
- if (n != val[i]->len - 1)
- words += " ";
- }
- wls[i] = new char[words.length() + 1];
- strcpy(wls[i], words.c_str());
- }
- wls[dim] = 0;
- return wls;
-}
-
-void DeleteWLStrings(char *strs[]) {
- int dim = 0;
- while (strs[dim]) {
- delete strs[dim];
- dim++;
- }
- delete [] strs;
-}
-
-void ExternalLexerModule::Lex(unsigned int startPos, int lengthDoc, int initStyle,
- WordList *keywordlists[], Accessor &styler) const {
- if (!fneLexer)
- return ;
-
- char **kwds = WordListsToStrings(keywordlists);
- char *ps = styler.GetProperties();
-
- // The accessor passed in is always a DocumentAccessor so this cast and the subsequent
- // access will work. Can not use the stricter dynamic_cast as that requires RTTI.
- DocumentAccessor &da = static_cast(styler);
- WindowID wID = da.GetWindow();
-
- fneLexer(externalLanguage, startPos, lengthDoc, initStyle, kwds, wID, ps);
-
- delete ps;
- DeleteWLStrings(kwds);
-}
-
-void ExternalLexerModule::Fold(unsigned int startPos, int lengthDoc, int initStyle,
- WordList *keywordlists[], Accessor &styler) const {
- if (!fneFolder)
- return ;
-
- char **kwds = WordListsToStrings(keywordlists);
- char *ps = styler.GetProperties();
-
- // The accessor passed in is always a DocumentAccessor so this cast and the subsequent
- // access will work. Can not use the stricter dynamic_cast as that requires RTTI.
- DocumentAccessor &da = static_cast(styler);
- WindowID wID = da.GetWindow();
-
- fneFolder(externalLanguage, startPos, lengthDoc, initStyle, kwds, wID, ps);
-
- delete ps;
- DeleteWLStrings(kwds);
-}
-
-void ExternalLexerModule::SetExternal(ExtLexerFunction fLexer, ExtFoldFunction fFolder, int index) {
- fneLexer = fLexer;
- fneFolder = fFolder;
- externalLanguage = index;
-}
-
-//------------------------------------------
-//
-// LexerLibrary
-//
-//------------------------------------------
-
-LexerLibrary::LexerLibrary(const char* ModuleName) {
- // Initialise some members...
- first = NULL;
- last = NULL;
-
- // Load the DLL
- lib = DynamicLibrary::Load(ModuleName);
- if (lib->IsValid()) {
- m_sModuleName = ModuleName;
- //Cannot use reinterpret_cast because: ANSI C++ forbids casting between pointers to functions and objects
- GetLexerCountFn GetLexerCount = (GetLexerCountFn)(sptr_t)lib->FindFunction("GetLexerCount");
-
- if (GetLexerCount) {
- ExternalLexerModule *lex;
- LexerMinder *lm;
-
- // Find functions in the DLL
- GetLexerNameFn GetLexerName = (GetLexerNameFn)(sptr_t)lib->FindFunction("GetLexerName");
- ExtLexerFunction Lexer = (ExtLexerFunction)(sptr_t)lib->FindFunction("Lex");
- ExtFoldFunction Folder = (ExtFoldFunction)(sptr_t)lib->FindFunction("Fold");
-
- // Assign a buffer for the lexer name.
- char lexname[100];
- strcpy(lexname, "");
-
- int nl = GetLexerCount();
-
- for (int i = 0; i < nl; i++) {
- GetLexerName(i, lexname, 100);
- lex = new ExternalLexerModule(SCLEX_AUTOMATIC, NULL, lexname, NULL);
-
- // Create a LexerMinder so we don't leak the ExternalLexerModule...
- lm = new LexerMinder;
- lm->self = lex;
- lm->next = NULL;
- if (first != NULL) {
- last->next = lm;
- last = lm;
- } else {
- first = lm;
- last = lm;
- }
-
- // The external lexer needs to know how to call into its DLL to
- // do its lexing and folding, we tell it here. Folder may be null.
- lex->SetExternal(Lexer, Folder, i);
- }
- }
- }
- next = NULL;
-}
-
-LexerLibrary::~LexerLibrary() {
- Release();
- delete lib;
-}
-
-void LexerLibrary::Release() {
- //TODO maintain a list of lexers created, and delete them!
- LexerMinder *lm;
- LexerMinder *next;
- lm = first;
- while (NULL != lm) {
- next = lm->next;
- delete lm->self;
- delete lm;
- lm = next;
- }
-
- first = NULL;
- last = NULL;
-}
-
-//------------------------------------------
-//
-// LexerManager
-//
-//------------------------------------------
-
-/// Return the single LexerManager instance...
-LexerManager *LexerManager::GetInstance() {
- if(!theInstance)
- theInstance = new LexerManager;
- return theInstance;
-}
-
-/// Delete any LexerManager instance...
-void LexerManager::DeleteInstance()
-{
- if(theInstance) {
- delete theInstance;
- theInstance = NULL;
- }
-}
-
-/// protected constructor - this is a singleton...
-LexerManager::LexerManager() {
- first = NULL;
- last = NULL;
-}
-
-LexerManager::~LexerManager() {
- Clear();
-}
-
-void LexerManager::Load(const char* path)
-{
- LoadLexerLibrary(path);
-}
-
-void LexerManager::LoadLexerLibrary(const char* module)
-{
- LexerLibrary *lib = new LexerLibrary(module);
- if (NULL != first) {
- last->next = lib;
- last = lib;
- } else {
- first = lib;
- last = lib;
- }
-}
-
-void LexerManager::Clear()
-{
- if (NULL != first) {
- LexerLibrary *cur = first;
- LexerLibrary *next;
- while (cur) {
- next = cur->next;
- delete cur;
- cur = next;
- }
- first = NULL;
- last = NULL;
- }
-}
-
-//------------------------------------------
-//
-// LexerManager
-//
-//------------------------------------------
-
-LMMinder::~LMMinder()
-{
- LexerManager::DeleteInstance();
-}
-
-LMMinder minder;
diff --git a/src/plugins/contrib/wxSmithSTC/stc/scintilla/src/ExternalLexer.h b/src/plugins/contrib/wxSmithSTC/stc/scintilla/src/ExternalLexer.h
deleted file mode 100644
index 6308fc28be..0000000000
--- a/src/plugins/contrib/wxSmithSTC/stc/scintilla/src/ExternalLexer.h
+++ /dev/null
@@ -1,95 +0,0 @@
-// Scintilla source code edit control
-/** @file ExternalLexer.h
- ** Support external lexers in DLLs.
- **/
-// Copyright 2001 Simon Steele , portions copyright Neil Hodgson.
-// The License.txt file describes the conditions under which this software may be distributed.
-
-#ifndef EXTERNALLEXER_H
-#define EXTERNALLEXER_H
-
-#if PLAT_WIN
-#define EXT_LEXER_DECL __stdcall
-#else
-#define EXT_LEXER_DECL
-#endif
-
-// External Lexer function definitions...
-typedef void (EXT_LEXER_DECL *ExtLexerFunction)(unsigned int lexer, unsigned int startPos, int length, int initStyle,
- char *words[], WindowID window, char *props);
-typedef void (EXT_LEXER_DECL *ExtFoldFunction)(unsigned int lexer, unsigned int startPos, int length, int initStyle,
- char *words[], WindowID window, char *props);
-typedef void* (EXT_LEXER_DECL *GetLexerFunction)(unsigned int Index);
-typedef int (EXT_LEXER_DECL *GetLexerCountFn)();
-typedef void (EXT_LEXER_DECL *GetLexerNameFn)(unsigned int Index, char *name, int buflength);
-
-//class DynamicLibrary;
-
-/// Sub-class of LexerModule to use an external lexer.
-class ExternalLexerModule : protected LexerModule {
-protected:
- ExtLexerFunction fneLexer;
- ExtFoldFunction fneFolder;
- int externalLanguage;
- char name[100];
-public:
- ExternalLexerModule(int language_, LexerFunction fnLexer_,
- const char *languageName_=0, LexerFunction fnFolder_=0) : LexerModule(language_, fnLexer_, 0, fnFolder_){
- strncpy(name, languageName_, sizeof(name));
- languageName = name;
- };
- virtual void Lex(unsigned int startPos, int lengthDoc, int initStyle,
- WordList *keywordlists[], Accessor &styler) const;
- virtual void Fold(unsigned int startPos, int lengthDoc, int initStyle,
- WordList *keywordlists[], Accessor &styler) const;
- virtual void SetExternal(ExtLexerFunction fLexer, ExtFoldFunction fFolder, int index);
-};
-
-/// LexerMinder points to an ExternalLexerModule - so we don't leak them.
-class LexerMinder {
-public:
- ExternalLexerModule *self;
- LexerMinder *next;
-};
-
-/// LexerLibrary exists for every External Lexer DLL, contains LexerMinders.
-class LexerLibrary {
- DynamicLibrary *lib;
- LexerMinder *first;
- LexerMinder *last;
-
-public:
- LexerLibrary(const char* ModuleName);
- ~LexerLibrary();
- void Release();
-
- LexerLibrary *next;
- SString m_sModuleName;
-};
-
-/// LexerManager manages external lexers, contains LexerLibrarys.
-class LexerManager {
-public:
- ~LexerManager();
-
- static LexerManager *GetInstance();
- static void DeleteInstance();
-
- void Load(const char* path);
- void Clear();
-
-private:
- LexerManager();
- static LexerManager *theInstance;
-
- void LoadLexerLibrary(const char* module);
- LexerLibrary *first;
- LexerLibrary *last;
-};
-
-class LMMinder {
-public:
- ~LMMinder();
-};
-
-#endif
diff --git a/src/plugins/contrib/wxSmithSTC/stc/scintilla/src/Indicator.cxx b/src/plugins/contrib/wxSmithSTC/stc/scintilla/src/Indicator.cxx
deleted file mode 100644
index 7624a4a525..0000000000
--- a/src/plugins/contrib/wxSmithSTC/stc/scintilla/src/Indicator.cxx
+++ /dev/null
@@ -1,77 +0,0 @@
-// Scintilla source code edit control
-/** @file Indicator.cxx
- ** Defines the style of indicators which are text decorations such as underlining.
- **/
-// Copyright 1998-2001 by Neil Hodgson
-// The License.txt file describes the conditions under which this software may be distributed.
-
-#include "Platform.h"
-
-#include "Scintilla.h"
-#include "Indicator.h"
-
-void Indicator::Draw(Surface *surface, const PRectangle &rc, const PRectangle &rcLine) {
- surface->PenColour(fore.allocated);
- int ymid = (rc.bottom + rc.top) / 2;
- if (style == INDIC_SQUIGGLE) {
- surface->MoveTo(rc.left, rc.top);
- int x = rc.left + 2;
- int y = 2;
- while (x < rc.right) {
- surface->LineTo(x, rc.top + y);
- x += 2;
- y = 2 - y;
- }
- surface->LineTo(rc.right, rc.top + y); // Finish the line
- } else if (style == INDIC_TT) {
- surface->MoveTo(rc.left, ymid);
- int x = rc.left + 5;
- while (x < rc.right) {
- surface->LineTo(x, ymid);
- surface->MoveTo(x-3, ymid);
- surface->LineTo(x-3, ymid+2);
- x++;
- surface->MoveTo(x, ymid);
- x += 5;
- }
- surface->LineTo(rc.right, ymid); // Finish the line
- if (x - 3 <= rc.right) {
- surface->MoveTo(x-3, ymid);
- surface->LineTo(x-3, ymid+2);
- }
- } else if (style == INDIC_DIAGONAL) {
- int x = rc.left;
- while (x < rc.right) {
- surface->MoveTo(x, rc.top+2);
- int endX = x+3;
- int endY = rc.top - 1;
- if (endX > rc.right) {
- endY += endX - rc.right;
- endX = rc.right;
- }
- surface->LineTo(endX, endY);
- x += 4;
- }
- } else if (style == INDIC_STRIKE) {
- surface->MoveTo(rc.left, rc.top - 4);
- surface->LineTo(rc.right, rc.top - 4);
- } else if (style == INDIC_HIDDEN) {
- // Draw nothing
- } else if (style == INDIC_BOX) {
- surface->MoveTo(rc.left, ymid+1);
- surface->LineTo(rc.right, ymid+1);
- surface->LineTo(rc.right, rcLine.top+1);
- surface->LineTo(rc.left, rcLine.top+1);
- surface->LineTo(rc.left, ymid+1);
- } else if (style == INDIC_ROUNDBOX) {
- PRectangle rcBox = rcLine;
- rcBox.top = rcLine.top + 1;
- rcBox.left = rc.left;
- rcBox.right = rc.right;
- surface->AlphaRectangle(rcBox, 1, fore.allocated, 30, fore.allocated, 50, 0);
- } else { // Either INDIC_PLAIN or unknown
- surface->MoveTo(rc.left, ymid);
- surface->LineTo(rc.right, ymid);
- }
-}
-
diff --git a/src/plugins/contrib/wxSmithSTC/stc/scintilla/src/Indicator.h b/src/plugins/contrib/wxSmithSTC/stc/scintilla/src/Indicator.h
deleted file mode 100644
index 716db1051f..0000000000
--- a/src/plugins/contrib/wxSmithSTC/stc/scintilla/src/Indicator.h
+++ /dev/null
@@ -1,22 +0,0 @@
-// Scintilla source code edit control
-/** @file Indicator.h
- ** Defines the style of indicators which are text decorations such as underlining.
- **/
-// Copyright 1998-2001 by Neil Hodgson
-// The License.txt file describes the conditions under which this software may be distributed.
-
-#ifndef INDICATOR_H
-#define INDICATOR_H
-
-/**
- */
-class Indicator {
-public:
- int style;
- ColourPair fore;
- Indicator() : style(INDIC_PLAIN), fore(ColourDesired(0,0,0)) {
- }
- void Draw(Surface *surface, const PRectangle &rc, const PRectangle &rcLine);
-};
-
-#endif
diff --git a/src/plugins/contrib/wxSmithSTC/stc/scintilla/src/KeyMap.cxx b/src/plugins/contrib/wxSmithSTC/stc/scintilla/src/KeyMap.cxx
deleted file mode 100644
index bfa6e2d789..0000000000
--- a/src/plugins/contrib/wxSmithSTC/stc/scintilla/src/KeyMap.cxx
+++ /dev/null
@@ -1,148 +0,0 @@
-// Scintilla source code edit control
-/** @file KeyMap.cxx
- ** Defines a mapping between keystrokes and commands.
- **/
-// Copyright 1998-2003 by Neil Hodgson
-// The License.txt file describes the conditions under which this software may be distributed.
-
-#include "Platform.h"
-
-#include "Scintilla.h"
-
-#include "KeyMap.h"
-
-KeyMap::KeyMap() : kmap(0), len(0), alloc(0) {
- for (int i = 0; MapDefault[i].key; i++) {
- AssignCmdKey(MapDefault[i].key,
- MapDefault[i].modifiers,
- MapDefault[i].msg);
- }
-}
-
-KeyMap::~KeyMap() {
- Clear();
-}
-
-void KeyMap::Clear() {
- delete []kmap;
- kmap = 0;
- len = 0;
- alloc = 0;
-}
-
-void KeyMap::AssignCmdKey(int key, int modifiers, unsigned int msg) {
- if ((len+1) >= alloc) {
- KeyToCommand *ktcNew = new KeyToCommand[alloc + 5];
- if (!ktcNew)
- return;
- for (int k = 0; k < len; k++)
- ktcNew[k] = kmap[k];
- alloc += 5;
- delete []kmap;
- kmap = ktcNew;
- }
- for (int keyIndex = 0; keyIndex < len; keyIndex++) {
- if ((key == kmap[keyIndex].key) && (modifiers == kmap[keyIndex].modifiers)) {
- kmap[keyIndex].msg = msg;
- return;
- }
- }
- kmap[len].key = key;
- kmap[len].modifiers = modifiers;
- kmap[len].msg = msg;
- len++;
-}
-
-unsigned int KeyMap::Find(int key, int modifiers) {
- for (int i = 0; i < len; i++) {
- if ((key == kmap[i].key) && (modifiers == kmap[i].modifiers)) {
- return kmap[i].msg;
- }
- }
- return 0;
-}
-
-const KeyToCommand KeyMap::MapDefault[] = {
- {SCK_DOWN, SCI_NORM, SCI_LINEDOWN},
- {SCK_DOWN, SCI_SHIFT, SCI_LINEDOWNEXTEND},
- {SCK_DOWN, SCI_CTRL, SCI_LINESCROLLDOWN},
- {SCK_DOWN, SCI_ASHIFT, SCI_LINEDOWNRECTEXTEND},
- {SCK_UP, SCI_NORM, SCI_LINEUP},
- {SCK_UP, SCI_SHIFT, SCI_LINEUPEXTEND},
- {SCK_UP, SCI_CTRL, SCI_LINESCROLLUP},
- {SCK_UP, SCI_ASHIFT, SCI_LINEUPRECTEXTEND},
- {'[', SCI_CTRL, SCI_PARAUP},
- {'[', SCI_CSHIFT, SCI_PARAUPEXTEND},
- {']', SCI_CTRL, SCI_PARADOWN},
- {']', SCI_CSHIFT, SCI_PARADOWNEXTEND},
- {SCK_LEFT, SCI_NORM, SCI_CHARLEFT},
- {SCK_LEFT, SCI_SHIFT, SCI_CHARLEFTEXTEND},
- {SCK_LEFT, SCI_CTRL, SCI_WORDLEFT},
- {SCK_LEFT, SCI_CSHIFT, SCI_WORDLEFTEXTEND},
- {SCK_LEFT, SCI_ASHIFT, SCI_CHARLEFTRECTEXTEND},
- {SCK_RIGHT, SCI_NORM, SCI_CHARRIGHT},
- {SCK_RIGHT, SCI_SHIFT, SCI_CHARRIGHTEXTEND},
- {SCK_RIGHT, SCI_CTRL, SCI_WORDRIGHT},
- {SCK_RIGHT, SCI_CSHIFT, SCI_WORDRIGHTEXTEND},
- {SCK_RIGHT, SCI_ASHIFT, SCI_CHARRIGHTRECTEXTEND},
- {'/', SCI_CTRL, SCI_WORDPARTLEFT},
- {'/', SCI_CSHIFT, SCI_WORDPARTLEFTEXTEND},
- {'\\', SCI_CTRL, SCI_WORDPARTRIGHT},
- {'\\', SCI_CSHIFT, SCI_WORDPARTRIGHTEXTEND},
- {SCK_HOME, SCI_NORM, SCI_VCHOME},
- {SCK_HOME, SCI_SHIFT, SCI_VCHOMEEXTEND},
- {SCK_HOME, SCI_CTRL, SCI_DOCUMENTSTART},
- {SCK_HOME, SCI_CSHIFT, SCI_DOCUMENTSTARTEXTEND},
- {SCK_HOME, SCI_ALT, SCI_HOMEDISPLAY},
-// {SCK_HOME, SCI_ASHIFT, SCI_HOMEDISPLAYEXTEND},
- {SCK_HOME, SCI_ASHIFT, SCI_VCHOMERECTEXTEND},
- {SCK_END, SCI_NORM, SCI_LINEEND},
- {SCK_END, SCI_SHIFT, SCI_LINEENDEXTEND},
- {SCK_END, SCI_CTRL, SCI_DOCUMENTEND},
- {SCK_END, SCI_CSHIFT, SCI_DOCUMENTENDEXTEND},
- {SCK_END, SCI_ALT, SCI_LINEENDDISPLAY},
-// {SCK_END, SCI_ASHIFT, SCI_LINEENDDISPLAYEXTEND},
- {SCK_END, SCI_ASHIFT, SCI_LINEENDRECTEXTEND},
- {SCK_PRIOR, SCI_NORM, SCI_PAGEUP},
- {SCK_PRIOR, SCI_SHIFT, SCI_PAGEUPEXTEND},
- {SCK_PRIOR, SCI_ASHIFT, SCI_PAGEUPRECTEXTEND},
- {SCK_NEXT, SCI_NORM, SCI_PAGEDOWN},
- {SCK_NEXT, SCI_SHIFT, SCI_PAGEDOWNEXTEND},
- {SCK_NEXT, SCI_ASHIFT, SCI_PAGEDOWNRECTEXTEND},
- {SCK_DELETE, SCI_NORM, SCI_CLEAR},
- {SCK_DELETE, SCI_SHIFT, SCI_CUT},
- {SCK_DELETE, SCI_CTRL, SCI_DELWORDRIGHT},
- {SCK_DELETE, SCI_CSHIFT, SCI_DELLINERIGHT},
- {SCK_INSERT, SCI_NORM, SCI_EDITTOGGLEOVERTYPE},
- {SCK_INSERT, SCI_SHIFT, SCI_PASTE},
- {SCK_INSERT, SCI_CTRL, SCI_COPY},
- {SCK_ESCAPE, SCI_NORM, SCI_CANCEL},
- {SCK_BACK, SCI_NORM, SCI_DELETEBACK},
- {SCK_BACK, SCI_SHIFT, SCI_DELETEBACK},
- {SCK_BACK, SCI_CTRL, SCI_DELWORDLEFT},
- {SCK_BACK, SCI_ALT, SCI_UNDO},
- {SCK_BACK, SCI_CSHIFT, SCI_DELLINELEFT},
- {'Z', SCI_CTRL, SCI_UNDO},
- {'Y', SCI_CTRL, SCI_REDO},
- {'X', SCI_CTRL, SCI_CUT},
- {'C', SCI_CTRL, SCI_COPY},
- {'V', SCI_CTRL, SCI_PASTE},
- {'A', SCI_CTRL, SCI_SELECTALL},
- {SCK_TAB, SCI_NORM, SCI_TAB},
- {SCK_TAB, SCI_SHIFT, SCI_BACKTAB},
- {SCK_RETURN, SCI_NORM, SCI_NEWLINE},
- {SCK_RETURN, SCI_SHIFT, SCI_NEWLINE},
- {SCK_ADD, SCI_CTRL, SCI_ZOOMIN},
- {SCK_SUBTRACT, SCI_CTRL, SCI_ZOOMOUT},
- {SCK_DIVIDE, SCI_CTRL, SCI_SETZOOM},
- //'L', SCI_CTRL, SCI_FORMFEED,
- {'L', SCI_CTRL, SCI_LINECUT},
- {'L', SCI_CSHIFT, SCI_LINEDELETE},
- {'T', SCI_CSHIFT, SCI_LINECOPY},
- {'T', SCI_CTRL, SCI_LINETRANSPOSE},
- {'D', SCI_CTRL, SCI_SELECTIONDUPLICATE},
- {'U', SCI_CTRL, SCI_LOWERCASE},
- {'U', SCI_CSHIFT, SCI_UPPERCASE},
- {0,0,0},
-};
-
diff --git a/src/plugins/contrib/wxSmithSTC/stc/scintilla/src/KeyMap.h b/src/plugins/contrib/wxSmithSTC/stc/scintilla/src/KeyMap.h
deleted file mode 100644
index 364df684f6..0000000000
--- a/src/plugins/contrib/wxSmithSTC/stc/scintilla/src/KeyMap.h
+++ /dev/null
@@ -1,43 +0,0 @@
-// Scintilla source code edit control
-/** @file KeyMap.h
- ** Defines a mapping between keystrokes and commands.
- **/
-// Copyright 1998-2001 by Neil Hodgson
-// The License.txt file describes the conditions under which this software may be distributed.
-
-#ifndef KEYTOCOMMAND_H
-#define KEYTOCOMMAND_H
-
-#define SCI_NORM 0
-#define SCI_SHIFT SCMOD_SHIFT
-#define SCI_CTRL SCMOD_CTRL
-#define SCI_ALT SCMOD_ALT
-#define SCI_CSHIFT (SCI_CTRL | SCI_SHIFT)
-#define SCI_ASHIFT (SCI_ALT | SCI_SHIFT)
-
-/**
- */
-class KeyToCommand {
-public:
- int key;
- int modifiers;
- unsigned int msg;
-};
-
-/**
- */
-class KeyMap {
- KeyToCommand *kmap;
- int len;
- int alloc;
- static const KeyToCommand MapDefault[];
-
-public:
- KeyMap();
- ~KeyMap();
- void Clear();
- void AssignCmdKey(int key, int modifiers, unsigned int msg);
- unsigned int Find(int key, int modifiers); // 0 returned on failure
-};
-
-#endif
diff --git a/src/plugins/contrib/wxSmithSTC/stc/scintilla/src/KeyWords.cxx b/src/plugins/contrib/wxSmithSTC/stc/scintilla/src/KeyWords.cxx
deleted file mode 100644
index f82eb7df67..0000000000
--- a/src/plugins/contrib/wxSmithSTC/stc/scintilla/src/KeyWords.cxx
+++ /dev/null
@@ -1,221 +0,0 @@
-// Scintilla source code edit control
-/** @file KeyWords.cxx
- ** Colourise for particular languages.
- **/
-// Copyright 1998-2002 by Neil Hodgson
-// The License.txt file describes the conditions under which this software may be distributed.
-
-#include
-#include
-#include
-#include
-#include
-
-#include "Platform.h"
-
-#include "PropSet.h"
-#include "Accessor.h"
-#include "KeyWords.h"
-#include "Scintilla.h"
-#include "SciLexer.h"
-
-const LexerModule *LexerModule::base = 0;
-int LexerModule::nextLanguage = SCLEX_AUTOMATIC+1;
-
-LexerModule::LexerModule(int language_,
- LexerFunction fnLexer_,
- const char *languageName_,
- LexerFunction fnFolder_,
- const char * const wordListDescriptions_[],
- int styleBits_) :
- language(language_),
- fnLexer(fnLexer_),
- fnFolder(fnFolder_),
- wordListDescriptions(wordListDescriptions_),
- styleBits(styleBits_),
- languageName(languageName_) {
- next = base;
- base = this;
- if (language == SCLEX_AUTOMATIC) {
- language = nextLanguage;
- nextLanguage++;
- }
-}
-
-int LexerModule::GetNumWordLists() const {
- if (wordListDescriptions == NULL) {
- return -1;
- } else {
- int numWordLists = 0;
-
- while (wordListDescriptions[numWordLists]) {
- ++numWordLists;
- }
-
- return numWordLists;
- }
-}
-
-const char *LexerModule::GetWordListDescription(int index) const {
- static const char *emptyStr = "";
-
- PLATFORM_ASSERT(index < GetNumWordLists());
- if (index >= GetNumWordLists()) {
- return emptyStr;
- } else {
- return wordListDescriptions[index];
- }
-}
-
-int LexerModule::GetStyleBitsNeeded() const {
- return styleBits;
-}
-
-const LexerModule *LexerModule::Find(int language) {
- const LexerModule *lm = base;
- while (lm) {
- if (lm->language == language) {
- return lm;
- }
- lm = lm->next;
- }
- return 0;
-}
-
-const LexerModule *LexerModule::Find(const char *languageName) {
- if (languageName) {
- const LexerModule *lm = base;
- while (lm) {
- if (lm->languageName && 0 == strcmp(lm->languageName, languageName)) {
- return lm;
- }
- lm = lm->next;
- }
- }
- return 0;
-}
-
-void LexerModule::Lex(unsigned int startPos, int lengthDoc, int initStyle,
- WordList *keywordlists[], Accessor &styler) const {
- if (fnLexer)
- fnLexer(startPos, lengthDoc, initStyle, keywordlists, styler);
-}
-
-void LexerModule::Fold(unsigned int startPos, int lengthDoc, int initStyle,
- WordList *keywordlists[], Accessor &styler) const {
- if (fnFolder) {
- int lineCurrent = styler.GetLine(startPos);
- // Move back one line in case deletion wrecked current line fold state
- if (lineCurrent > 0) {
- lineCurrent--;
- int newStartPos = styler.LineStart(lineCurrent);
- lengthDoc += startPos - newStartPos;
- startPos = newStartPos;
- initStyle = 0;
- if (startPos > 0) {
- initStyle = styler.StyleAt(startPos - 1);
- }
- }
- fnFolder(startPos, lengthDoc, initStyle, keywordlists, styler);
- }
-}
-
-// Alternative historical name for Scintilla_LinkLexers
-int wxForceScintillaLexers(void) {
- return Scintilla_LinkLexers();
-}
-
-// To add or remove a lexer, add or remove its file and run LexGen.py.
-
-// Force a reference to all of the Scintilla lexers so that the linker will
-// not remove the code of the lexers.
-int Scintilla_LinkLexers() {
- static int forcer = 0;
-
-// Shorten the code that declares a lexer and ensures it is linked in by calling a method.
-#define LINK_LEXER(lexer) extern LexerModule lexer; forcer += lexer.GetLanguage();
-
-//++Autogenerated -- run src/LexGen.py to regenerate
-//**\(\tLINK_LEXER(\*);\n\)
- LINK_LEXER(lmAda);
- LINK_LEXER(lmAns1);
- LINK_LEXER(lmAPDL);
- LINK_LEXER(lmAsm);
- LINK_LEXER(lmASP);
- LINK_LEXER(lmAU3);
- LINK_LEXER(lmAVE);
- LINK_LEXER(lmBaan);
- LINK_LEXER(lmBash);
- LINK_LEXER(lmBatch);
- LINK_LEXER(lmBlitzBasic);
- LINK_LEXER(lmBullant);
- LINK_LEXER(lmCaml);
- LINK_LEXER(lmClw);
- LINK_LEXER(lmClwNoCase);
- LINK_LEXER(lmConf);
- LINK_LEXER(lmCPP);
- LINK_LEXER(lmCPPNoCase);
- LINK_LEXER(lmCsound);
- LINK_LEXER(lmCss);
- LINK_LEXER(lmDiff);
- LINK_LEXER(lmEiffel);
- LINK_LEXER(lmEiffelkw);
- LINK_LEXER(lmErlang);
- LINK_LEXER(lmErrorList);
- LINK_LEXER(lmESCRIPT);
- LINK_LEXER(lmF77);
- LINK_LEXER(lmFlagShip);
- LINK_LEXER(lmForth);
- LINK_LEXER(lmFortran);
- LINK_LEXER(lmFreeBasic);
- LINK_LEXER(lmGui4Cli);
- LINK_LEXER(lmHaskell);
- LINK_LEXER(lmHTML);
- LINK_LEXER(lmInno);
- LINK_LEXER(lmKix);
- LINK_LEXER(lmLatex);
- LINK_LEXER(lmLISP);
- LINK_LEXER(lmLot);
- LINK_LEXER(lmLout);
- LINK_LEXER(lmLua);
- LINK_LEXER(lmMake);
- LINK_LEXER(lmMatlab);
- LINK_LEXER(lmMETAPOST);
- LINK_LEXER(lmMMIXAL);
- LINK_LEXER(lmMSSQL);
- LINK_LEXER(lmNncrontab);
- LINK_LEXER(lmNsis);
- LINK_LEXER(lmNull);
- LINK_LEXER(lmOctave);
- LINK_LEXER(lmOpal);
- LINK_LEXER(lmPascal);
- LINK_LEXER(lmPB);
- LINK_LEXER(lmPerl);
- LINK_LEXER(lmPHP);
- LINK_LEXER(lmPHPSCRIPT);
- LINK_LEXER(lmPOV);
- LINK_LEXER(lmProps);
- LINK_LEXER(lmPS);
- LINK_LEXER(lmPureBasic);
- LINK_LEXER(lmPython);
- LINK_LEXER(lmREBOL);
- LINK_LEXER(lmRuby);
- LINK_LEXER(lmScriptol);
- LINK_LEXER(lmSmalltalk);
- LINK_LEXER(lmSpecman);
- LINK_LEXER(lmSpice);
- LINK_LEXER(lmSQL);
- LINK_LEXER(lmTADS3);
- LINK_LEXER(lmTCL);
- LINK_LEXER(lmTeX);
- LINK_LEXER(lmVB);
- LINK_LEXER(lmVBScript);
- LINK_LEXER(lmVerilog);
- LINK_LEXER(lmVHDL);
- LINK_LEXER(lmXML);
- LINK_LEXER(lmYAML);
-
-//--Autogenerated -- end of automatically generated section
-
- return 1;
-}
diff --git a/src/plugins/contrib/wxSmithSTC/stc/scintilla/src/LexAPDL.cxx b/src/plugins/contrib/wxSmithSTC/stc/scintilla/src/LexAPDL.cxx
deleted file mode 100644
index 1cf263e501..0000000000
--- a/src/plugins/contrib/wxSmithSTC/stc/scintilla/src/LexAPDL.cxx
+++ /dev/null
@@ -1,136 +0,0 @@
-// 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
-// The License.txt file describes the conditions under which this software may be distributed.
-
-#include
-#include
-#include
-#include
-#include
-
-#include "Platform.h"
-
-#include "PropSet.h"
-#include "Accessor.h"
-#include "StyleContext.h"
-#include "KeyWords.h"
-#include "Scintilla.h"
-#include "SciLexer.h"
-
-
-static inline bool IsAWordChar(const int ch) {
- return (ch < 0x80 && (isalnum(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;
-}
-
-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(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(sc.ch))) {
- sc.SetState(SCE_APDL_OPERATOR);
- }
- }
- }
- sc.Complete();
-}
-
-static const char * const apdlWordListDesc[] = {
- "processors",
- "commands",
- "slashommands",
- "starcommands",
- "arguments",
- "functions",
- 0
-};
-
-LexerModule lmAPDL(SCLEX_APDL, ColouriseAPDLDoc, "apdl", 0, apdlWordListDesc);
diff --git a/src/plugins/contrib/wxSmithSTC/stc/scintilla/src/LexAU3.cxx b/src/plugins/contrib/wxSmithSTC/stc/scintilla/src/LexAU3.cxx
deleted file mode 100644
index 2bc2e0f4bc..0000000000
--- a/src/plugins/contrib/wxSmithSTC/stc/scintilla/src/LexAU3.cxx
+++ /dev/null
@@ -1,891 +0,0 @@
-// Scintilla source code edit control
-// @file LexAU3.cxx
-// Lexer for AutoIt3 http://www.hiddensoft.com/autoit3
-// by Jos van der Zande, jvdzande@yahoo.com
-//
-// Changes:
-// March 28, 2004 - Added the standard Folding code
-// April 21, 2004 - Added Preprosessor Table + Syntax Highlighting
-// Fixed Number highlighting
-// Changed default isoperator to IsAOperator to have a better match to AutoIt3
-// Fixed "#comments_start" -> "#comments-start"
-// 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.
-// Added logic for #include 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.
-// Sep 5, 2004 - Added logic to handle colourizing words on the last line.
-// Typed Characters now show as "default" till they match any table.
-// Oct 10, 2004 - Added logic to show Comments in "Special" directives.
-// Nov 1, 2004 - Added better testing for Numbers supporting x and e notation.
-// Nov 28, 2004 - Added logic to handle continuation lines for syntax highlighting.
-// Jan 10, 2005 - Added Abbreviations Keyword used for expansion
-// Mar 24, 2005 - Updated Abbreviations Keywords to fix when followed by Operator.
-// Apr 18, 2005 - Updated #CE/#Comment-End logic to take a linecomment ";" into account
-// - Added folding support for With...EndWith
-// - Added support for a DOT in variable names
-// - Fixed Underscore in CommentBlock
-// May 23, 2005 - Fixed the SentKey lexing in case of a missing }
-// Aug 11, 2005 - Fixed possible bug with s_save length > 100.
-// Aug 23, 2005 - Added Switch/endswitch support to the folding logic.
-// Sep 27, 2005 - Fixed the SentKey lexing logic in case of multiple sentkeys.
-// Mar 12, 2006 - Fixed issue with <> coloring as String in stead of Operator in rare occasions.
-// Apr 8, 2006 - Added support for AutoIt3 Standard UDF library (SCE_AU3_UDF)
-//
-// Copyright for Scintilla: 1998-2001 by Neil Hodgson
-// The License.txt file describes the conditions under which this software may be distributed.
-// Scintilla source code edit control
-
-#include
-#include
-#include
-#include
-#include
-
-#include "Platform.h"
-
-#include "PropSet.h"
-#include "Accessor.h"
-#include "StyleContext.h"
-#include "KeyWords.h"
-#include "Scintilla.h"
-#include "SciLexer.h"
-
-static inline bool IsTypeCharacter(const int ch)
-{
- return ch == '$';
-}
-static inline bool IsAWordChar(const int ch)
-{
- return (ch < 0x80) && (isalnum(ch) || ch == '_');
-}
-
-static inline bool IsAWordStart(const int ch)
-{
- return (ch < 0x80) && (isalnum(ch) || ch == '_' || ch == '@' || ch == '#' || ch == '$' || ch == '.');
-}
-
-static inline bool IsAOperator(char ch) {
- if (isascii(ch) && isalnum(ch))
- return false;
- if (ch == '+' || ch == '-' || ch == '*' || ch == '/' ||
- ch == '&' || ch == '^' || ch == '=' || ch == '<' || ch == '>' ||
- ch == '(' || ch == ')' || ch == '[' || ch == ']' || ch == ',' )
- return true;
- return false;
-}
-
-///////////////////////////////////////////////////////////////////////////////
-// GetSendKey() filters the portion before and after a/multiple space(s)
-// and return the first portion to be looked-up in the table
-// also check if the second portion is valid... (up,down.on.off,toggle or a number)
-///////////////////////////////////////////////////////////////////////////////
-
-static int GetSendKey(const char *szLine, char *szKey)
-{
- int nFlag = 0;
- int nStartFound = 0;
- int nKeyPos = 0;
- int nSpecPos= 0;
- int nSpecNum= 1;
- int nPos = 0;
- char cTemp;
- char szSpecial[100];
-
- // split the portion of the sendkey in the part before and after the spaces
- while ( ( (cTemp = szLine[nPos]) != '\0'))
- {
- // skip leading Ctrl/Shift/Alt state
- if (cTemp == '{') {
- nStartFound = 1;
- }
- //
- if (nStartFound == 1) {
- if ((cTemp == ' ') && (nFlag == 0) ) // get the stuff till first space
- {
- nFlag = 1;
- // Add } to the end of the first bit for table lookup later.
- szKey[nKeyPos++] = '}';
- }
- else if (cTemp == ' ')
- {
- // skip other spaces
- }
- else if (nFlag == 0)
- {
- // save first portion into var till space or } is hit
- szKey[nKeyPos++] = cTemp;
- }
- else if ((nFlag == 1) && (cTemp != '}'))
- {
- // Save second portion into var...
- szSpecial[nSpecPos++] = cTemp;
- // check if Second portion is all numbers for repeat fuction
- if (isdigit(cTemp) == false) {nSpecNum = 0;}
- }
- }
- nPos++; // skip to next char
-
- } // End While
-
-
- // 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 )
- {
- nFlag = 0;
- }
- else
- {
- nFlag = 1;
- }
- return nFlag; // 1 is bad, 0 is good
-
-} // GetSendKey()
-
-//
-// 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()
-
-//
-// syntax highlighting logic
-static void ColouriseAU3Doc(unsigned int startPos,
- int length, int initStyle,
- WordList *keywordlists[],
- Accessor &styler) {
-
- WordList &keywords = *keywordlists[0];
- WordList &keywords2 = *keywordlists[1];
- WordList &keywords3 = *keywordlists[2];
- WordList &keywords4 = *keywordlists[3];
- WordList &keywords5 = *keywordlists[4];
- WordList &keywords6 = *keywordlists[5];
- WordList &keywords7 = *keywordlists[6];
- WordList &keywords8 = *keywordlists[7];
- // find the first previous line without continuation character at the end
- int lineCurrent = styler.GetLine(startPos);
- int s_startPos = startPos;
- // When not inside a Block comment: find First line without _
- if (!(initStyle==SCE_AU3_COMMENTBLOCK)) {
- while ((lineCurrent > 0 && IsContinuationLine(lineCurrent,styler)) ||
- (lineCurrent > 1 && IsContinuationLine(lineCurrent-1,styler))) {
- lineCurrent--;
- startPos = styler.LineStart(lineCurrent); // get start position
- initStyle = 0; // reset the start style to 0
- }
- }
- // Set the new length to include it from the start and set the start position
- length = length + s_startPos - startPos; // correct the total length to process
- styler.StartAt(startPos);
-
- StyleContext sc(startPos, length, initStyle, styler);
- char si; // string indicator "=1 '=2
- char ni; // Numeric indicator error=9 normal=0 normal+dec=1 hex=2 Enot=3
- char ci; // comment indicator 0=not linecomment(;)
- char s_save[100];
- si=0;
- ni=0;
- ci=0;
- //$$$
- for (; sc.More(); sc.Forward()) {
- char s[100];
- sc.GetCurrentLowered(s, sizeof(s));
- // **********************************************
- // save the total current word for eof processing
- if (IsAWordChar(sc.ch) || sc.ch == '}')
- {
- strcpy(s_save,s);
- int tp = strlen(s_save);
- if (tp < 99) {
- s_save[tp] = static_cast(tolower(sc.ch));
- s_save[tp+1] = '\0';
- }
- }
- // **********************************************
- //
- switch (sc.state)
- {
- case SCE_AU3_COMMENTBLOCK:
- {
- //Reset at line end
- if (sc.atLineEnd) {
- ci=0;
- sc.SetState(SCE_AU3_COMMENTBLOCK);
- }
- //skip rest of line when a ; is encountered
- if (sc.chPrev == ';') {
- ci=2;
- sc.SetState(SCE_AU3_COMMENTBLOCK);
- }
- // skip rest of the line
- if (ci==2)
- break;
- // check when first character is detected on the line
- if (ci==0) {
- if (IsAWordStart(static_cast(sc.ch)) || IsAOperator(static_cast(sc.ch))) {
- ci=1;
- sc.SetState(SCE_AU3_COMMENTBLOCK);
- }
- break;
- }
- if (!(IsAWordChar(sc.ch) || (sc.ch == '-' && strcmp(s, "#comments") == 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
- ci=2; // line doesn't begin with #CE so skip the rest of the line
- }
- break;
- }
- case SCE_AU3_COMMENT:
- {
- if (sc.atLineEnd) {sc.SetState(SCE_AU3_DEFAULT);}
- break;
- }
- case SCE_AU3_OPERATOR:
- {
- // check if its a COMobject
- if (sc.chPrev == '.' && IsAWordChar(sc.ch)) {
- sc.SetState(SCE_AU3_COMOBJ);
- }
- else {
- sc.SetState(SCE_AU3_DEFAULT);
- }
- break;
- }
- case SCE_AU3_SPECIAL:
- {
- if (sc.ch == ';') {sc.SetState(SCE_AU3_COMMENT);}
- if (sc.atLineEnd) {sc.SetState(SCE_AU3_DEFAULT);}
- break;
- }
- case SCE_AU3_KEYWORD:
- {
- 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 )
- {
- sc.ChangeState(SCE_AU3_COMMENTBLOCK);
- sc.SetState(SCE_AU3_COMMENTBLOCK);
- }
- else if (keywords.InList(s)) {
- sc.ChangeState(SCE_AU3_KEYWORD);
- sc.SetState(SCE_AU3_DEFAULT);
- }
- else if (keywords2.InList(s)) {
- sc.ChangeState(SCE_AU3_FUNCTION);
- sc.SetState(SCE_AU3_DEFAULT);
- }
- else if (keywords3.InList(s)) {
- sc.ChangeState(SCE_AU3_MACRO);
- sc.SetState(SCE_AU3_DEFAULT);
- }
- else if (keywords5.InList(s)) {
- sc.ChangeState(SCE_AU3_PREPROCESSOR);
- sc.SetState(SCE_AU3_DEFAULT);
- 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 ((keywords7.InList(s)) && (!IsAOperator(static_cast(sc.ch)))) {
- sc.ChangeState(SCE_AU3_EXPAND);
- sc.SetState(SCE_AU3_DEFAULT);
- }
- else if (keywords8.InList(s)) {
- sc.ChangeState(SCE_AU3_UDF);
- sc.SetState(SCE_AU3_DEFAULT);
- }
- 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);
- }
- }
- }
- if (sc.atLineEnd) {
- sc.SetState(SCE_AU3_DEFAULT);}
- break;
- }
- case SCE_AU3_NUMBER:
- {
- // Numeric indicator error=9 normal=0 normal+dec=1 hex=2 E-not=3
- //
- // test for Hex notation
- if (strcmp(s, "0") == 0 && (sc.ch == 'x' || sc.ch == 'X') && ni == 0)
- {
- ni = 2;
- break;
- }
- // test for E notation
- if (IsADigit(sc.chPrev) && (sc.ch == 'e' || sc.ch == 'E') && ni <= 1)
- {
- ni = 3;
- break;
- }
- // Allow Hex characters inside hex numeric strings
- if ((ni == 2) &&
- (sc.ch == 'a' || sc.ch == 'b' || sc.ch == 'c' || sc.ch == 'd' || sc.ch == 'e' || sc.ch == 'f' ||
- sc.ch == 'A' || sc.ch == 'B' || sc.ch == 'C' || sc.ch == 'D' || sc.ch == 'E' || sc.ch == 'F' ))
- {
- break;
- }
- // test for 1 dec point only
- if (sc.ch == '.')
- {
- if (ni==0)
- {
- ni=1;
- }
- else
- {
- ni=9;
- }
- break;
- }
- // end of numeric string ?
- if (!(IsADigit(sc.ch)))
- {
- if (ni==9)
- {
- sc.ChangeState(SCE_AU3_DEFAULT);
- }
- sc.SetState(SCE_AU3_DEFAULT);
- }
- break;
- }
- case SCE_AU3_VARIABLE:
- {
- // Check if its a COMObject
- if (sc.ch == '.' && !IsADigit(sc.chNext)) {
- sc.SetState(SCE_AU3_OPERATOR);
- }
- else if (!IsAWordChar(sc.ch)) {
- sc.SetState(SCE_AU3_DEFAULT);
- }
- break;
- }
- case SCE_AU3_COMOBJ:
- {
- if (!(IsAWordChar(sc.ch))) {
- sc.SetState(SCE_AU3_DEFAULT);
- }
- break;
- }
- case SCE_AU3_STRING:
- {
- // check for " to end a double qouted string or
- // check for ' to end a single qouted string
- if ((si == 1 && sc.ch == '\"') || (si == 2 && sc.ch == '\'') || (si == 3 && sc.ch == '>'))
- {
- sc.ForwardSetState(SCE_AU3_DEFAULT);
- si=0;
- }
- if (sc.atLineEnd)
- {
- si=0;
- // at line end and not found a continuation char then reset to default
- int lineCurrent = styler.GetLine(sc.currentPos);
- if (!IsContinuationLine(lineCurrent,styler))
- {
- sc.SetState(SCE_AU3_DEFAULT);
- }
- }
- // find Sendkeys in a STRING
- if (sc.ch == '{' || sc.ch == '+' || sc.ch == '!' || sc.ch == '^' || sc.ch == '#' ) {
- sc.SetState(SCE_AU3_SENT);}
- break;
- }
-
- case SCE_AU3_SENT:
- {
- // Send key string ended
- if (sc.chPrev == '}' && sc.ch != '}')
- {
- // set color to SENDKEY when valid sendkey .. else set back to regular string
- char sk[100];
- // split {111 222} and return {111} and check if 222 is valid.
- // if return code = 1 then invalid 222 so must be string
- if (GetSendKey(s,sk))
- {
- sc.ChangeState(SCE_AU3_STRING);
- }
- // if single char between {?} then its ok as sendkey for a single character
- else if (strlen(sk) == 3)
- {
- sc.ChangeState(SCE_AU3_SENT);
- }
- // if sendkey {111} is in table then ok as sendkey
- else if (keywords4.InList(sk))
- {
- sc.ChangeState(SCE_AU3_SENT);
- }
- else
- {
- sc.ChangeState(SCE_AU3_STRING);
- }
- sc.SetState(SCE_AU3_STRING);
- }
- else
- {
- // check if the start is a valid SendKey start
- int nPos = 0;
- int nState = 1;
- char cTemp;
- while (!(nState == 2) && ((cTemp = s[nPos]) != '\0'))
- {
- if (cTemp == '{' && nState == 1)
- {
- nState = 2;
- }
- if (nState == 1 && !(cTemp == '+' || cTemp == '!' || cTemp == '^' || cTemp == '#' ))
- {
- nState = 0;
- }
- nPos++;
- }
- //Verify characters infront of { ... if not assume regular string
- if (nState == 1 && (!(sc.ch == '{' || sc.ch == '+' || sc.ch == '!' || sc.ch == '^' || sc.ch == '#' ))) {
- sc.ChangeState(SCE_AU3_STRING);
- sc.SetState(SCE_AU3_STRING);
- }
- // If invalid character found then assume its a regular string
- if (nState == 0) {
- sc.ChangeState(SCE_AU3_STRING);
- sc.SetState(SCE_AU3_STRING);
- }
- }
- // check if next portion is again a sendkey
- if (sc.atLineEnd)
- {
- sc.ChangeState(SCE_AU3_STRING);
- sc.SetState(SCE_AU3_DEFAULT);
- si = 0; // reset string indicator
- }
- //* check in next characters following a sentkey are again a sent key
- // Need this test incase of 2 sentkeys like {F1}{ENTER} but not detect {{}
- if (sc.state == SCE_AU3_STRING && (sc.ch == '{' || sc.ch == '+' || sc.ch == '!' || sc.ch == '^' || sc.ch == '#' )) {
- sc.SetState(SCE_AU3_SENT);}
- // check to see if the string ended...
- // Sendkey string isn't complete but the string ended....
- if ((si == 1 && sc.ch == '\"') || (si == 2 && sc.ch == '\''))
- {
- sc.ChangeState(SCE_AU3_STRING);
- sc.ForwardSetState(SCE_AU3_DEFAULT);
- }
- break;
- }
- } //switch (sc.state)
-
- // Determine if a new state should be entered:
-
- if (sc.state == SCE_AU3_DEFAULT)
- {
- if (sc.ch == ';') {sc.SetState(SCE_AU3_COMMENT);}
- else if (sc.ch == '#') {sc.SetState(SCE_AU3_KEYWORD);}
- else if (sc.ch == '$') {sc.SetState(SCE_AU3_VARIABLE);}
- else if (sc.ch == '.' && !IsADigit(sc.chNext)) {sc.SetState(SCE_AU3_OPERATOR);}
- else if (sc.ch == '@') {sc.SetState(SCE_AU3_KEYWORD);}
- //else if (sc.ch == '_') {sc.SetState(SCE_AU3_KEYWORD);}
- else if (sc.ch == '<' && si==3) {sc.SetState(SCE_AU3_STRING);} // string after #include
- else if (sc.ch == '\"') {
- sc.SetState(SCE_AU3_STRING);
- si = 1; }
- else if (sc.ch == '\'') {
- sc.SetState(SCE_AU3_STRING);
- si = 2; }
- else if (IsADigit(sc.ch) || (sc.ch == '.' && IsADigit(sc.chNext)))
- {
- sc.SetState(SCE_AU3_NUMBER);
- ni = 0;
- }
- else if (IsAWordStart(sc.ch)) {sc.SetState(SCE_AU3_KEYWORD);}
- else if (IsAOperator(static_cast(sc.ch))) {sc.SetState(SCE_AU3_OPERATOR);}
- else if (sc.atLineEnd) {sc.SetState(SCE_AU3_DEFAULT);}
- }
- } //for (; sc.More(); sc.Forward())
-
- //*************************************
- // Colourize the last word correctly
- //*************************************
- if (sc.state == SCE_AU3_KEYWORD)
- {
- if (strcmp(s_save, "#cs")== 0 || strcmp(s_save, "#comments-start")== 0 )
- {
- sc.ChangeState(SCE_AU3_COMMENTBLOCK);
- sc.SetState(SCE_AU3_COMMENTBLOCK);
- }
- else if (keywords.InList(s_save)) {
- sc.ChangeState(SCE_AU3_KEYWORD);
- sc.SetState(SCE_AU3_KEYWORD);
- }
- else if (keywords2.InList(s_save)) {
- sc.ChangeState(SCE_AU3_FUNCTION);
- sc.SetState(SCE_AU3_FUNCTION);
- }
- else if (keywords3.InList(s_save)) {
- sc.ChangeState(SCE_AU3_MACRO);
- sc.SetState(SCE_AU3_MACRO);
- }
- else if (keywords5.InList(s_save)) {
- sc.ChangeState(SCE_AU3_PREPROCESSOR);
- sc.SetState(SCE_AU3_PREPROCESSOR);
- }
- else if (keywords6.InList(s_save)) {
- sc.ChangeState(SCE_AU3_SPECIAL);
- sc.SetState(SCE_AU3_SPECIAL);
- }
- else if (keywords7.InList(s_save) && sc.atLineEnd) {
- sc.ChangeState(SCE_AU3_EXPAND);
- sc.SetState(SCE_AU3_EXPAND);
- }
- else if (keywords8.InList(s_save)) {
- sc.ChangeState(SCE_AU3_UDF);
- sc.SetState(SCE_AU3_UDF);
- }
- else {
- sc.ChangeState(SCE_AU3_DEFAULT);
- sc.SetState(SCE_AU3_DEFAULT);
- }
- }
- if (sc.state == SCE_AU3_SENT)
- {
- // Send key string ended
- if (sc.chPrev == '}' && sc.ch != '}')
- {
- // set color to SENDKEY when valid sendkey .. else set back to regular string
- char sk[100];
- // split {111 222} and return {111} and check if 222 is valid.
- // if return code = 1 then invalid 222 so must be string
- if (GetSendKey(s_save,sk))
- {
- sc.ChangeState(SCE_AU3_STRING);
- }
- // if single char between {?} then its ok as sendkey for a single character
- else if (strlen(sk) == 3)
- {
- sc.ChangeState(SCE_AU3_SENT);
- }
- // if sendkey {111} is in table then ok as sendkey
- else if (keywords4.InList(sk))
- {
- sc.ChangeState(SCE_AU3_SENT);
- }
- else
- {
- sc.ChangeState(SCE_AU3_STRING);
- }
- sc.SetState(SCE_AU3_STRING);
- }
- // check if next portion is again a sendkey
- if (sc.atLineEnd)
- {
- sc.ChangeState(SCE_AU3_STRING);
- sc.SetState(SCE_AU3_DEFAULT);
- }
- }
- //*************************************
- sc.Complete();
-}
-
-//
-static bool IsStreamCommentStyle(int style) {
- return style == SCE_AU3_COMMENT || style == SCE_AU3_COMMENTBLOCK;
-}
-
-//
-// 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 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()
-
-
-//
-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) {
- if (lineCurrent > 0) {
- lineCurrent--;
- startPos = styler.LineStart(lineCurrent);
- }
- }
- // 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 (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(tolower(ch));
- }
- }
- }
- // start the capture of the first word
- if (!(FirstWordStart)) {
- if (IsAWordChar(ch) || IsAWordStart(ch) || ch == ';') {
- FirstWordStart = true;
- szKeyword[szKeywordlen++] = static_cast(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(tolower(ch));
- if (strcmp(szThen,"then") == 0 ) {
- ThenFoundLast = true;
- }
- }
- else {
- szThen[szThenlen++] = static_cast(tolower(ch));
- if (szThenlen == 5) {
- szThen[4] = '\0';
- }
- }
- }
- }
- // 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,"with") == 0 || strcmp(szKeyword,"#region") == 0 ) {
- levelNext++;
- }
- // create double Fold for select&switch because Case will subtract one of the current level
- if (strcmp(szKeyword,"select") == 0 || strcmp(szKeyword,"switch") == 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,"endwith") == 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 || strcmp(szKeyword,"endswitch") == 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++;
- }
- }
-}
-
-
-//
-
-static const char * const AU3WordLists[] = {
- "#autoit keywords",
- "#autoit functions",
- "#autoit macros",
- "#autoit Sent keys",
- "#autoit Pre-processors",
- "#autoit Special",
- "#autoit Expand",
- "#autoit UDF",
- 0
-};
-LexerModule lmAU3(SCLEX_AU3, ColouriseAU3Doc, "au3", FoldAU3Doc , AU3WordLists);
diff --git a/src/plugins/contrib/wxSmithSTC/stc/scintilla/src/LexAVE.cxx b/src/plugins/contrib/wxSmithSTC/stc/scintilla/src/LexAVE.cxx
deleted file mode 100644
index e30ee7dc9e..0000000000
--- a/src/plugins/contrib/wxSmithSTC/stc/scintilla/src/LexAVE.cxx
+++ /dev/null
@@ -1,225 +0,0 @@
-// SciTE - Scintilla based Text Editor
-/** @file LexAVE.cxx
- ** Lexer for Avenue.
- **
- ** Written by Alexey Yutkin .
- **/
-// Copyright 1998-2002 by Neil Hodgson
-// The License.txt file describes the conditions under which this software may be distributed.
-
-#include
-#include
-#include
-#include
-#include
-
-#include "Platform.h"
-
-#include "PropSet.h"
-#include "Accessor.h"
-#include "StyleContext.h"
-#include "KeyWords.h"
-#include "Scintilla.h"
-#include "SciLexer.h"
-
-
-
-static inline bool IsAWordChar(const int ch) {
- return (ch < 0x80) && (isalnum(ch) || ch == '.' || ch == '_');
-}
-static inline bool IsEnumChar(const int ch) {
- return (ch < 0x80) && (isalnum(ch)|| ch == '_');
-}
-static inline bool IsANumberChar(const int ch) {
- return (ch < 0x80) && (isalnum(ch) || ch == '.' );
-}
-
-inline bool IsAWordStart(const int ch) {
- return (ch < 0x80) && (isalnum(ch) || ch == '_');
-}
-
-inline bool isAveOperator(char ch) {
- if (isalnum(ch))
- return false;
- // '.' 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 == '.' )
- return true;
- return false;
-}
-
-static void ColouriseAveDoc(
- unsigned int startPos,
- int length,
- int initStyle,
- WordList *keywordlists[],
- Accessor &styler) {
-
- WordList &keywords = *keywordlists[0];
- WordList &keywords2 = *keywordlists[1];
- WordList &keywords3 = *keywordlists[2];
- WordList &keywords4 = *keywordlists[3];
- WordList &keywords5 = *keywordlists[4];
- WordList &keywords6 = *keywordlists[5];
-
- // Do not leak onto next line
- if (initStyle == SCE_AVE_STRINGEOL) {
- initStyle = SCE_AVE_DEFAULT;
- }
-
- StyleContext sc(startPos, length, initStyle, styler);
-
- for (; sc.More(); sc.Forward()) {
- if (sc.atLineEnd) {
- // Update the line state, so it can be seen by next line
- int currentLine = styler.GetLine(sc.currentPos);
- styler.SetLineState(currentLine, 0);
- }
- if (sc.atLineStart && (sc.state == SCE_AVE_STRING)) {
- // Prevent SCE_AVE_STRINGEOL from leaking back to previous line
- sc.SetState(SCE_AVE_STRING);
- }
-
-
- // Determine if the current state should terminate.
- if (sc.state == SCE_AVE_OPERATOR) {
- sc.SetState(SCE_AVE_DEFAULT);
- } else if (sc.state == SCE_AVE_NUMBER) {
- if (!IsANumberChar(sc.ch)) {
- sc.SetState(SCE_AVE_DEFAULT);
- }
- } else if (sc.state == SCE_AVE_ENUM) {
- if (!IsEnumChar(sc.ch)) {
- sc.SetState(SCE_AVE_DEFAULT);
- }
- } else if (sc.state == SCE_AVE_IDENTIFIER) {
- if (!IsAWordChar(sc.ch) || (sc.ch == '.')) {
- char s[100];
- //sc.GetCurrent(s, sizeof(s));
- sc.GetCurrentLowered(s, sizeof(s));
- if (keywords.InList(s)) {
- sc.ChangeState(SCE_AVE_WORD);
- } else if (keywords2.InList(s)) {
- sc.ChangeState(SCE_AVE_WORD2);
- } else if (keywords3.InList(s)) {
- sc.ChangeState(SCE_AVE_WORD3);
- } else if (keywords4.InList(s)) {
- sc.ChangeState(SCE_AVE_WORD4);
- } else if (keywords5.InList(s)) {
- sc.ChangeState(SCE_AVE_WORD5);
- } else if (keywords6.InList(s)) {
- sc.ChangeState(SCE_AVE_WORD6);
- }
- sc.SetState(SCE_AVE_DEFAULT);
- }
- } else if (sc.state == SCE_AVE_COMMENT) {
- if (sc.atLineEnd) {
- sc.SetState(SCE_AVE_DEFAULT);
- }
- } else if (sc.state == SCE_AVE_STRING) {
- if (sc.ch == '\"') {
- sc.ForwardSetState(SCE_AVE_DEFAULT);
- } else if (sc.atLineEnd) {
- sc.ChangeState(SCE_AVE_STRINGEOL);
- sc.ForwardSetState(SCE_AVE_DEFAULT);
- }
- }
-
- // Determine if a new state should be entered.
- if (sc.state == SCE_AVE_DEFAULT) {
- if (IsADigit(sc.ch) || (sc.ch == '.' && IsADigit(sc.chNext))) {
- sc.SetState(SCE_AVE_NUMBER);
- } else if (IsAWordStart(sc.ch)) {
- sc.SetState(SCE_AVE_IDENTIFIER);
- } else if (sc.Match('\"')) {
- sc.SetState(SCE_AVE_STRING);
- } else if (sc.Match('\'')) {
- sc.SetState(SCE_AVE_COMMENT);
- sc.Forward();
- } else if (isAveOperator(static_cast(sc.ch))) {
- sc.SetState(SCE_AVE_OPERATOR);
- } else if (sc.Match('#')) {
- sc.SetState(SCE_AVE_ENUM);
- sc.Forward();
- }
- }
- }
- sc.Complete();
-}
-
-static void FoldAveDoc(unsigned int startPos, int length, int /* initStyle */, WordList *[],
- Accessor &styler) {
- unsigned int lengthDoc = startPos + length;
- int visibleChars = 0;
- int lineCurrent = styler.GetLine(startPos);
- int levelPrev = styler.LevelAt(lineCurrent) & SC_FOLDLEVELNUMBERMASK;
- int levelCurrent = levelPrev;
- char chNext = static_cast(tolower(styler[startPos]));
- bool foldCompact = styler.GetPropertyInt("fold.compact", 1) != 0;
- int styleNext = styler.StyleAt(startPos);
- char s[10];
-
- for (unsigned int i = startPos; i < lengthDoc; i++) {
- char ch = static_cast(tolower(chNext));
- chNext = static_cast(tolower(styler.SafeGetCharAt(i + 1)));
- int style = styleNext;
- styleNext = styler.StyleAt(i + 1);
- bool atEOL = (ch == '\r' && chNext != '\n') || (ch == '\n');
- if (style == SCE_AVE_WORD) {
- if (ch == 't' || ch == 'f' || ch == 'w' || ch == 'e') {
- for (unsigned int j = 0; j < 6; j++) {
- if (!iswordchar(styler[i + j])) {
- break;
- }
- s[j] = static_cast(tolower(styler[i + j]));
- s[j + 1] = '\0';
- }
-
- if ((strcmp(s, "then") == 0) || (strcmp(s, "for") == 0) || (strcmp(s, "while") == 0)) {
- levelCurrent++;
- }
- if ((strcmp(s, "end") == 0) || (strcmp(s, "elseif") == 0)) {
- // Normally "elseif" and "then" will be on the same line and will cancel
- // each other out. // As implemented, this does not support fold.at.else.
- levelCurrent--;
- }
- }
- } else if (style == SCE_AVE_OPERATOR) {
- if (ch == '{' || ch == '(') {
- levelCurrent++;
- } else if (ch == '}' || ch == ')') {
- levelCurrent--;
- }
- }
-
- if (atEOL) {
- int lev = levelPrev;
- if (visibleChars == 0 && foldCompact) {
- lev |= SC_FOLDLEVELWHITEFLAG;
- }
- if ((levelCurrent > levelPrev) && (visibleChars > 0)) {
- lev |= SC_FOLDLEVELHEADERFLAG;
- }
- if (lev != styler.LevelAt(lineCurrent)) {
- styler.SetLevel(lineCurrent, lev);
- }
- lineCurrent++;
- levelPrev = levelCurrent;
- visibleChars = 0;
- }
- if (!isspacechar(ch)) {
- visibleChars++;
- }
- }
- // Fill in the real level of the next line, keeping the current flags as they will be filled in later
-
- int flagsNext = styler.LevelAt(lineCurrent) & ~SC_FOLDLEVELNUMBERMASK;
- styler.SetLevel(lineCurrent, levelPrev | flagsNext);
-}
-
-LexerModule lmAVE(SCLEX_AVE, ColouriseAveDoc, "ave", FoldAveDoc);
-
diff --git a/src/plugins/contrib/wxSmithSTC/stc/scintilla/src/LexAda.cxx b/src/plugins/contrib/wxSmithSTC/stc/scintilla/src/LexAda.cxx
deleted file mode 100644
index 0227ce1108..0000000000
--- a/src/plugins/contrib/wxSmithSTC/stc/scintilla/src/LexAda.cxx
+++ /dev/null
@@ -1,520 +0,0 @@
-// Scintilla source code edit control
-/** @file LexAda.cxx
- ** Lexer for Ada 95
- **/
-// Copyright 2002 by Sergey Koshcheyev
-// The License.txt file describes the conditions under which this software may be distributed.
-
-#include
-#include
-#include
-#include
-
-#include "Platform.h"
-
-#include "Accessor.h"
-#include "StyleContext.h"
-#include "PropSet.h"
-#include "KeyWords.h"
-#include "SciLexer.h"
-#include "SString.h"
-
-/*
- * Interface
- */
-
-static void ColouriseDocument(
- unsigned int startPos,
- int length,
- int initStyle,
- WordList *keywordlists[],
- Accessor &styler);
-
-static const char * const adaWordListDesc[] = {
- "Keywords",
- 0
-};
-
-LexerModule lmAda(SCLEX_ADA, ColouriseDocument, "ada", NULL, adaWordListDesc);
-
-/*
- * Implementation
- */
-
-// Functions that have apostropheStartsAttribute as a parameter set it according to whether
-// an apostrophe encountered after processing the current token will start an attribute or
-// a character literal.
-static void ColouriseCharacter(StyleContext& sc, bool& apostropheStartsAttribute);
-static void ColouriseComment(StyleContext& sc, bool& apostropheStartsAttribute);
-static void ColouriseContext(StyleContext& sc, char chEnd, int stateEOL);
-static void ColouriseDelimiter(StyleContext& sc, bool& apostropheStartsAttribute);
-static void ColouriseLabel(StyleContext& sc, WordList& keywords, bool& apostropheStartsAttribute);
-static void ColouriseNumber(StyleContext& sc, bool& apostropheStartsAttribute);
-static void ColouriseString(StyleContext& sc, bool& apostropheStartsAttribute);
-static void ColouriseWhiteSpace(StyleContext& sc, bool& apostropheStartsAttribute);
-static void ColouriseWord(StyleContext& sc, WordList& keywords, bool& apostropheStartsAttribute);
-
-static inline bool IsDelimiterCharacter(int ch);
-static inline bool IsNumberStartCharacter(int ch);
-static inline bool IsNumberCharacter(int ch);
-static inline bool IsSeparatorOrDelimiterCharacter(int ch);
-static bool IsValidIdentifier(const SString& identifier);
-static bool IsValidNumber(const SString& number);
-static inline bool IsWordStartCharacter(int ch);
-static inline bool IsWordCharacter(int ch);
-
-static void ColouriseCharacter(StyleContext& sc, bool& apostropheStartsAttribute) {
- apostropheStartsAttribute = true;
-
- sc.SetState(SCE_ADA_CHARACTER);
-
- // Skip the apostrophe and one more character (so that '' is shown as non-terminated and '''
- // is handled correctly)
- sc.Forward();
- sc.Forward();
-
- ColouriseContext(sc, '\'', SCE_ADA_CHARACTEREOL);
-}
-
-static void ColouriseContext(StyleContext& sc, char chEnd, int stateEOL) {
- while (!sc.atLineEnd && !sc.Match(chEnd)) {
- sc.Forward();
- }
-
- if (!sc.atLineEnd) {
- sc.ForwardSetState(SCE_ADA_DEFAULT);
- } else {
- sc.ChangeState(stateEOL);
- }
-}
-
-static void ColouriseComment(StyleContext& sc, bool& /*apostropheStartsAttribute*/) {
- // Apostrophe meaning is not changed, but the parameter is present for uniformity
-
- sc.SetState(SCE_ADA_COMMENTLINE);
-
- while (!sc.atLineEnd) {
- sc.Forward();
- }
-}
-
-static void ColouriseDelimiter(StyleContext& sc, bool& apostropheStartsAttribute) {
- apostropheStartsAttribute = sc.Match (')');
- sc.SetState(SCE_ADA_DELIMITER);
- sc.ForwardSetState(SCE_ADA_DEFAULT);
-}
-
-static void ColouriseLabel(StyleContext& sc, WordList& keywords, bool& apostropheStartsAttribute) {
- apostropheStartsAttribute = false;
-
- sc.SetState(SCE_ADA_LABEL);
-
- // Skip "<<"
- sc.Forward();
- sc.Forward();
-
- SString identifier;
-
- while (!sc.atLineEnd && !IsSeparatorOrDelimiterCharacter(sc.ch)) {
- identifier += static_cast(tolower(sc.ch));
- sc.Forward();
- }
-
- // Skip ">>"
- if (sc.Match('>', '>')) {
- sc.Forward();
- sc.Forward();
- } else {
- sc.ChangeState(SCE_ADA_ILLEGAL);
- }
-
- // If the name is an invalid identifier or a keyword, then make it invalid label
- if (!IsValidIdentifier(identifier) || keywords.InList(identifier.c_str())) {
- sc.ChangeState(SCE_ADA_ILLEGAL);
- }
-
- sc.SetState(SCE_ADA_DEFAULT);
-
-}
-
-static void ColouriseNumber(StyleContext& sc, bool& apostropheStartsAttribute) {
- apostropheStartsAttribute = true;
-
- SString number;
- sc.SetState(SCE_ADA_NUMBER);
-
- // Get all characters up to a delimiter or a separator, including points, but excluding
- // double points (ranges).
- while (!IsSeparatorOrDelimiterCharacter(sc.ch) || (sc.ch == '.' && sc.chNext != '.')) {
- number += static_cast(sc.ch);
- sc.Forward();
- }
-
- // Special case: exponent with sign
- if ((sc.chPrev == 'e' || sc.chPrev == 'E') &&
- (sc.ch == '+' || sc.ch == '-')) {
- number += static_cast(sc.ch);
- sc.Forward ();
-
- while (!IsSeparatorOrDelimiterCharacter(sc.ch)) {
- number += static_cast(sc.ch);
- sc.Forward();
- }
- }
-
- if (!IsValidNumber(number)) {
- sc.ChangeState(SCE_ADA_ILLEGAL);
- }
-
- sc.SetState(SCE_ADA_DEFAULT);
-}
-
-static void ColouriseString(StyleContext& sc, bool& apostropheStartsAttribute) {
- apostropheStartsAttribute = true;
-
- sc.SetState(SCE_ADA_STRING);
- sc.Forward();
-
- ColouriseContext(sc, '"', SCE_ADA_STRINGEOL);
-}
-
-static void ColouriseWhiteSpace(StyleContext& sc, bool& /*apostropheStartsAttribute*/) {
- // Apostrophe meaning is not changed, but the parameter is present for uniformity
- sc.SetState(SCE_ADA_DEFAULT);
- sc.ForwardSetState(SCE_ADA_DEFAULT);
-}
-
-static void ColouriseWord(StyleContext& sc, WordList& keywords, bool& apostropheStartsAttribute) {
- apostropheStartsAttribute = true;
- sc.SetState(SCE_ADA_IDENTIFIER);
-
- SString word;
-
- while (!sc.atLineEnd && !IsSeparatorOrDelimiterCharacter(sc.ch)) {
- word += static_cast(tolower(sc.ch));
- sc.Forward();
- }
-
- if (!IsValidIdentifier(word)) {
- sc.ChangeState(SCE_ADA_ILLEGAL);
-
- } else if (keywords.InList(word.c_str())) {
- sc.ChangeState(SCE_ADA_WORD);
-
- if (word != "all") {
- apostropheStartsAttribute = false;
- }
- }
-
- sc.SetState(SCE_ADA_DEFAULT);
-}
-
-//
-// ColouriseDocument
-//
-
-static void ColouriseDocument(
- unsigned int startPos,
- int length,
- int initStyle,
- WordList *keywordlists[],
- Accessor &styler) {
- WordList &keywords = *keywordlists[0];
-
- StyleContext sc(startPos, length, initStyle, styler);
-
- int lineCurrent = styler.GetLine(startPos);
- bool apostropheStartsAttribute = (styler.GetLineState(lineCurrent) & 1) != 0;
-
- while (sc.More()) {
- if (sc.atLineEnd) {
- // Go to the next line
- sc.Forward();
- lineCurrent++;
-
- // Remember the line state for future incremental lexing
- styler.SetLineState(lineCurrent, apostropheStartsAttribute);
-
- // Don't continue any styles on the next line
- sc.SetState(SCE_ADA_DEFAULT);
- }
-
- // Comments
- if (sc.Match('-', '-')) {
- ColouriseComment(sc, apostropheStartsAttribute);
-
- // Strings
- } else if (sc.Match('"')) {
- ColouriseString(sc, apostropheStartsAttribute);
-
- // Characters
- } else if (sc.Match('\'') && !apostropheStartsAttribute) {
- ColouriseCharacter(sc, apostropheStartsAttribute);
-
- // Labels
- } else if (sc.Match('<', '<')) {
- ColouriseLabel(sc, keywords, apostropheStartsAttribute);
-
- // Whitespace
- } else if (IsASpace(sc.ch)) {
- ColouriseWhiteSpace(sc, apostropheStartsAttribute);
-
- // Delimiters
- } else if (IsDelimiterCharacter(sc.ch)) {
- ColouriseDelimiter(sc, apostropheStartsAttribute);
-
- // Numbers
- } else if (IsADigit(sc.ch) || sc.ch == '#') {
- ColouriseNumber(sc, apostropheStartsAttribute);
-
- // Keywords or identifiers
- } else {
- ColouriseWord(sc, keywords, apostropheStartsAttribute);
- }
- }
-
- sc.Complete();
-}
-
-static inline bool IsDelimiterCharacter(int ch) {
- switch (ch) {
- case '&':
- case '\'':
- case '(':
- case ')':
- case '*':
- case '+':
- case ',':
- case '-':
- case '.':
- case '/':
- case ':':
- case ';':
- case '<':
- case '=':
- case '>':
- case '|':
- return true;
- default:
- return false;
- }
-}
-
-static inline bool IsNumberCharacter(int ch) {
- return IsNumberStartCharacter(ch) ||
- ch == '_' ||
- ch == '.' ||
- ch == '#' ||
- (ch >= 'a' && ch <= 'f') ||
- (ch >= 'A' && ch <= 'F');
-}
-
-static inline bool IsNumberStartCharacter(int ch) {
- return IsADigit(ch);
-}
-
-static inline bool IsSeparatorOrDelimiterCharacter(int ch) {
- return IsASpace(ch) || IsDelimiterCharacter(ch);
-}
-
-static bool IsValidIdentifier(const SString& identifier) {
- // First character can't be '_', so initialize the flag to true
- bool lastWasUnderscore = true;
-
- size_t length = identifier.length();
-
- // Zero-length identifiers are not valid (these can occur inside labels)
- if (length == 0) {
- return false;
- }
-
- // Check for valid character at the start
- if (!IsWordStartCharacter(identifier[0])) {
- return false;
- }
-
- // Check for only valid characters and no double underscores
- for (size_t i = 0; i < length; i++) {
- if (!IsWordCharacter(identifier[i]) ||
- (identifier[i] == '_' && lastWasUnderscore)) {
- return false;
- }
- lastWasUnderscore = identifier[i] == '_';
- }
-
- // Check for underscore at the end
- if (lastWasUnderscore == true) {
- return false;
- }
-
- // All checks passed
- return true;
-}
-
-static bool IsValidNumber(const SString& number) {
- int hashPos = number.search("#");
- bool seenDot = false;
-
- size_t i = 0;
- size_t length = number.length();
-
- if (length == 0)
- return false; // Just in case
-
- // Decimal number
- if (hashPos == -1) {
- bool canBeSpecial = false;
-
- for (; i < length; i++) {
- if (number[i] == '_') {
- if (!canBeSpecial) {
- return false;
- }
- canBeSpecial = false;
- } else if (number[i] == '.') {
- if (!canBeSpecial || seenDot) {
- return false;
- }
- canBeSpecial = false;
- seenDot = true;
- } else if (IsADigit(number[i])) {
- canBeSpecial = true;
- } else {
- break;
- }
- }
-
- if (!canBeSpecial)
- return false;
- } else {
- // Based number
- bool canBeSpecial = false;
- int base = 0;
-
- // Parse base
- for (; i < length; i++) {
- int ch = number[i];
- if (ch == '_') {
- if (!canBeSpecial)
- return false;
- canBeSpecial = false;
- } else if (IsADigit(ch)) {
- base = base * 10 + (ch - '0');
- if (base > 16)
- return false;
- canBeSpecial = true;
- } else if (ch == '#' && canBeSpecial) {
- break;
- } else {
- return false;
- }
- }
-
- if (base < 2)
- return false;
- if (i == length)
- return false;
-
- i++; // Skip over '#'
-
- // Parse number
- canBeSpecial = false;
-
- for (; i < length; i++) {
- int ch = tolower(number[i]);
-
- if (ch == '_') {
- if (!canBeSpecial) {
- return false;
- }
- canBeSpecial = false;
-
- } else if (ch == '.') {
- if (!canBeSpecial || seenDot) {
- return false;
- }
- canBeSpecial = false;
- seenDot = true;
-
- } else if (IsADigit(ch)) {
- if (ch - '0' >= base) {
- return false;
- }
- canBeSpecial = true;
-
- } else if (ch >= 'a' && ch <= 'f') {
- if (ch - 'a' + 10 >= base) {
- return false;
- }
- canBeSpecial = true;
-
- } else if (ch == '#' && canBeSpecial) {
- break;
-
- } else {
- return false;
- }
- }
-
- if (i == length) {
- return false;
- }
-
- i++;
- }
-
- // Exponent (optional)
- if (i < length) {
- if (number[i] != 'e' && number[i] != 'E')
- return false;
-
- i++; // Move past 'E'
-
- if (i == length) {
- return false;
- }
-
- if (number[i] == '+')
- i++;
- else if (number[i] == '-') {
- if (seenDot) {
- i++;
- } else {
- return false; // Integer literals should not have negative exponents
- }
- }
-
- if (i == length) {
- return false;
- }
-
- bool canBeSpecial = false;
-
- for (; i < length; i++) {
- if (number[i] == '_') {
- if (!canBeSpecial) {
- return false;
- }
- canBeSpecial = false;
- } else if (IsADigit(number[i])) {
- canBeSpecial = true;
- } else {
- return false;
- }
- }
-
- if (!canBeSpecial)
- return false;
- }
-
- // if i == length, number was parsed successfully.
- return i == length;
-}
-
-static inline bool IsWordCharacter(int ch) {
- return IsWordStartCharacter(ch) || IsADigit(ch);
-}
-
-static inline bool IsWordStartCharacter(int ch) {
- return (isascii(ch) && isalpha(ch)) || ch == '_';
-}
diff --git a/src/plugins/contrib/wxSmithSTC/stc/scintilla/src/LexAsm.cxx b/src/plugins/contrib/wxSmithSTC/stc/scintilla/src/LexAsm.cxx
deleted file mode 100644
index 93e0b37180..0000000000
--- a/src/plugins/contrib/wxSmithSTC/stc/scintilla/src/LexAsm.cxx
+++ /dev/null
@@ -1,177 +0,0 @@
-// Scintilla source code edit control
-/** @file LexAsm.cxx
- ** Lexer for Assembler, just for the MASM syntax
- ** Written by The Black Horus
- ** Enhancements and NASM stuff by Kein-Hong Man, 2003-10
- ** SCE_ASM_COMMENTBLOCK and SCE_ASM_CHARACTER are for future GNU as colouring
- **/
-// Copyright 1998-2003 by Neil Hodgson
-// The License.txt file describes the conditions under which this software may be distributed.
-
-#include
-#include
-#include
-#include
-#include
-
-#include "Platform.h"
-
-#include "PropSet.h"
-#include "Accessor.h"
-#include "StyleContext.h"
-#include "KeyWords.h"
-#include "Scintilla.h"
-#include "SciLexer.h"
-
-
-static inline bool IsAWordChar(const int ch) {
- return (ch < 0x80) && (isalnum(ch) || ch == '.' ||
- ch == '_' || ch == '?');
-}
-
-static inline bool IsAWordStart(const int ch) {
- return (ch < 0x80) && (isalnum(ch) || ch == '_' || ch == '.' ||
- ch == '%' || ch == '@' || ch == '$' || ch == '?');
-}
-
-static inline bool IsAsmOperator(char ch) {
- if (isalnum(ch))
- return false;
- // '.' 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 == ':')
- return true;
- return false;
-}
-
-static void ColouriseAsmDoc(unsigned int startPos, int length, int initStyle, WordList *keywordlists[],
- Accessor &styler) {
-
- WordList &cpuInstruction = *keywordlists[0];
- WordList &mathInstruction = *keywordlists[1];
- WordList ®isters = *keywordlists[2];
- WordList &directive = *keywordlists[3];
- WordList &directiveOperand = *keywordlists[4];
- WordList &extInstruction = *keywordlists[5];
-
- // Do not leak onto next line
- if (initStyle == SCE_ASM_STRINGEOL)
- initStyle = SCE_ASM_DEFAULT;
-
- StyleContext sc(startPos, length, initStyle, styler);
-
- for (; sc.More(); sc.Forward())
- {
-
- // Prevent SCE_ASM_STRINGEOL from leaking back to previous line
- if (sc.atLineStart && (sc.state == SCE_ASM_STRING)) {
- sc.SetState(SCE_ASM_STRING);
- } else if (sc.atLineStart && (sc.state == SCE_ASM_CHARACTER)) {
- sc.SetState(SCE_ASM_CHARACTER);
- }
-
- // Handle line continuation generically.
- if (sc.ch == '\\') {
- if (sc.chNext == '\n' || sc.chNext == '\r') {
- sc.Forward();
- if (sc.ch == '\r' && sc.chNext == '\n') {
- sc.Forward();
- }
- continue;
- }
- }
-
- // Determine if the current state should terminate.
- if (sc.state == SCE_ASM_OPERATOR) {
- if (!IsAsmOperator(static_cast(sc.ch))) {
- sc.SetState(SCE_ASM_DEFAULT);
- }
- }else if (sc.state == SCE_ASM_NUMBER) {
- if (!IsAWordChar(sc.ch)) {
- sc.SetState(SCE_ASM_DEFAULT);
- }
- } else if (sc.state == SCE_ASM_IDENTIFIER) {
- if (!IsAWordChar(sc.ch) ) {
- char s[100];
- sc.GetCurrentLowered(s, sizeof(s));
-
- if (cpuInstruction.InList(s)) {
- sc.ChangeState(SCE_ASM_CPUINSTRUCTION);
- } else if (mathInstruction.InList(s)) {
- sc.ChangeState(SCE_ASM_MATHINSTRUCTION);
- } else if (registers.InList(s)) {
- sc.ChangeState(SCE_ASM_REGISTER);
- } else if (directive.InList(s)) {
- sc.ChangeState(SCE_ASM_DIRECTIVE);
- } else if (directiveOperand.InList(s)) {
- sc.ChangeState(SCE_ASM_DIRECTIVEOPERAND);
- } else if (extInstruction.InList(s)) {
- sc.ChangeState(SCE_ASM_EXTINSTRUCTION);
- }
- sc.SetState(SCE_ASM_DEFAULT);
- }
- }
- else if (sc.state == SCE_ASM_COMMENT ) {
- if (sc.atLineEnd) {
- sc.SetState(SCE_ASM_DEFAULT);
- }
- } else if (sc.state == SCE_ASM_STRING) {
- if (sc.ch == '\\') {
- if (sc.chNext == '\"' || sc.chNext == '\'' || sc.chNext == '\\') {
- sc.Forward();
- }
- } else if (sc.ch == '\"') {
- sc.ForwardSetState(SCE_ASM_DEFAULT);
- } else if (sc.atLineEnd) {
- sc.ChangeState(SCE_ASM_STRINGEOL);
- sc.ForwardSetState(SCE_ASM_DEFAULT);
- }
- } else if (sc.state == SCE_ASM_CHARACTER) {
- if (sc.ch == '\\') {
- if (sc.chNext == '\"' || sc.chNext == '\'' || sc.chNext == '\\') {
- sc.Forward();
- }
- } else if (sc.ch == '\'') {
- sc.ForwardSetState(SCE_ASM_DEFAULT);
- } else if (sc.atLineEnd) {
- sc.ChangeState(SCE_ASM_STRINGEOL);
- sc.ForwardSetState(SCE_ASM_DEFAULT);
- }
- }
-
- // Determine if a new state should be entered.
- if (sc.state == SCE_ASM_DEFAULT) {
- if (sc.ch == ';'){
- sc.SetState(SCE_ASM_COMMENT);
- } else if (isdigit(sc.ch) || (sc.ch == '.' && isdigit(sc.chNext))) {
- sc.SetState(SCE_ASM_NUMBER);
- } else if (IsAWordStart(sc.ch)) {
- sc.SetState(SCE_ASM_IDENTIFIER);
- } else if (sc.ch == '\"') {
- sc.SetState(SCE_ASM_STRING);
- } else if (sc.ch == '\'') {
- sc.SetState(SCE_ASM_CHARACTER);
- } else if (IsAsmOperator(static_cast(sc.ch))) {
- sc.SetState(SCE_ASM_OPERATOR);
- }
- }
-
- }
- sc.Complete();
-}
-
-static const char * const asmWordListDesc[] = {
- "CPU instructions",
- "FPU instructions",
- "Registers",
- "Directives",
- "Directive operands",
- "Extended instructions",
- 0
-};
-
-LexerModule lmAsm(SCLEX_ASM, ColouriseAsmDoc, "asm", 0, asmWordListDesc);
-
diff --git a/src/plugins/contrib/wxSmithSTC/stc/scintilla/src/LexAsn1.cxx b/src/plugins/contrib/wxSmithSTC/stc/scintilla/src/LexAsn1.cxx
deleted file mode 100644
index 1600e6329d..0000000000
--- a/src/plugins/contrib/wxSmithSTC/stc/scintilla/src/LexAsn1.cxx
+++ /dev/null
@@ -1,181 +0,0 @@
-// Scintilla source code edit control
-/** @file LexAsn1.cxx
- ** Lexer for ASN.1
- **/
-// Copyright 2004 by Herr Pfarrer rpfarrer yahoo de
-// Last Updated: 20/07/2004
-// The License.txt file describes the conditions under which this software may be distributed.
-#include
-#include
-#include
-#include
-#include
-
-#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 lmAns1(SCLEX_ASN1, ColouriseAsn1Doc, "asn1", FoldAsn1Doc, asn1WordLists);
diff --git a/src/plugins/contrib/wxSmithSTC/stc/scintilla/src/LexBaan.cxx b/src/plugins/contrib/wxSmithSTC/stc/scintilla/src/LexBaan.cxx
deleted file mode 100644
index 3a36eb8f27..0000000000
--- a/src/plugins/contrib/wxSmithSTC/stc/scintilla/src/LexBaan.cxx
+++ /dev/null
@@ -1,189 +0,0 @@
-// Scintilla source code edit control
-/** @file LexBaan.cxx
- ** Lexer for Baan.
- ** Based heavily on LexCPP.cxx
- **/
-// Copyright 2001- by Vamsi Potluru & Praveen Ambekar
-// The License.txt file describes the conditions under which this software may be distributed.
-
-#include
-#include
-#include
-#include
-#include
-
-#include "Platform.h"
-
-#include "PropSet.h"
-#include "Accessor.h"
-#include "StyleContext.h"
-#include "KeyWords.h"
-#include "Scintilla.h"
-#include "SciLexer.h"
-
-static inline bool IsAWordChar(const int ch) {
- return (ch < 0x80) && (isalnum(ch) || ch == '.' || ch == '_' || ch == '$' || ch == ':');
-}
-
-static inline bool IsAWordStart(const int ch) {
- return (ch < 0x80) && (isalnum(ch) || ch == '_');
-}
-
-static void ColouriseBaanDoc(unsigned int startPos, int length, int initStyle, WordList *keywordlists[],
- Accessor &styler) {
-
- WordList &keywords = *keywordlists[0];
- WordList &keywords2 = *keywordlists[1];
- bool stylingWithinPreprocessor = styler.GetPropertyInt("styling.within.preprocessor") != 0;
-
- if (initStyle == SCE_BAAN_STRINGEOL) // Does not leak onto next line
- initStyle = SCE_BAAN_DEFAULT;
-
- int visibleChars = 0;
-
- StyleContext sc(startPos, length, initStyle, styler);
-
- for (; sc.More(); sc.Forward()) {
-
- if (sc.state == SCE_BAAN_OPERATOR) {
- sc.SetState(SCE_BAAN_DEFAULT);
- } else if (sc.state == SCE_BAAN_NUMBER) {
- if (!IsAWordChar(sc.ch)) {
- sc.SetState(SCE_BAAN_DEFAULT);
- }
- } else if (sc.state == SCE_BAAN_IDENTIFIER) {
- if (!IsAWordChar(sc.ch)) {
- char s[100];
- sc.GetCurrentLowered(s, sizeof(s));
- if (keywords.InList(s)) {
- sc.ChangeState(SCE_BAAN_WORD);
- } else if (keywords2.InList(s)) {
- sc.ChangeState(SCE_BAAN_WORD2);
- }
- sc.SetState(SCE_BAAN_DEFAULT);
- }
- } else if (sc.state == SCE_BAAN_PREPROCESSOR) {
- if (stylingWithinPreprocessor) {
- if (IsASpace(sc.ch)) {
- sc.SetState(SCE_BAAN_DEFAULT);
- }
- } else {
- if (sc.atLineEnd && (sc.chNext != '^')) {
- sc.SetState(SCE_BAAN_DEFAULT);
- }
- }
- } else if (sc.state == SCE_BAAN_COMMENT) {
- if (sc.atLineEnd) {
- sc.SetState(SCE_BAAN_DEFAULT);
- }
- } else if (sc.state == SCE_BAAN_COMMENTDOC) {
- if (sc.MatchIgnoreCase("enddllusage")) {
- for (unsigned int i = 0; i < 10; i++){
- sc.Forward();
- }
- sc.ForwardSetState(SCE_BAAN_DEFAULT);
- }
- } else if (sc.state == SCE_BAAN_STRING) {
- if (sc.ch == '\"') {
- sc.ForwardSetState(SCE_BAAN_DEFAULT);
- } else if ((sc.atLineEnd) && (sc.chNext != '^')) {
- sc.ChangeState(SCE_BAAN_STRINGEOL);
- sc.ForwardSetState(SCE_C_DEFAULT);
- visibleChars = 0;
- }
- }
-
- if (sc.state == SCE_BAAN_DEFAULT) {
- if (IsADigit(sc.ch) || (sc.ch == '.' && IsADigit(sc.chNext))) {
- sc.SetState(SCE_BAAN_NUMBER);
- } else if (sc.MatchIgnoreCase("dllusage")){
- sc.SetState(SCE_BAAN_COMMENTDOC);
- do {
- sc.Forward();
- } while ((!sc.atLineEnd) && sc.More());
- } else if (IsAWordStart(sc.ch)) {
- sc.SetState(SCE_BAAN_IDENTIFIER);
- } else if (sc.Match('|')){
- sc.SetState(SCE_BAAN_COMMENT);
- } else if (sc.ch == '\"') {
- sc.SetState(SCE_BAAN_STRING);
- } else if (sc.ch == '#' && visibleChars == 0) {
- // Preprocessor commands are alone on their line
- sc.SetState(SCE_BAAN_PREPROCESSOR);
- // Skip whitespace between # and preprocessor word
- do {
- sc.Forward();
- } while (IsASpace(sc.ch) && sc.More());
- } else if (isoperator(static_cast(sc.ch))) {
- sc.SetState(SCE_BAAN_OPERATOR);
- }
- }
- if (sc.atLineEnd) {
- // Reset states to begining of colourise so no surprises
- // if different sets of lines lexed.
- visibleChars = 0;
- }
- if (!IsASpace(sc.ch)) {
- visibleChars++;
- }
- }
- sc.Complete();
-}
-
-static void FoldBaanDoc(unsigned int startPos, int length, int initStyle, WordList *[],
- Accessor &styler) {
- bool foldComment = styler.GetPropertyInt("fold.comment") != 0;
- bool foldCompact = styler.GetPropertyInt("fold.compact", 1) != 0;
- unsigned int endPos = startPos + length;
- int visibleChars = 0;
- int lineCurrent = styler.GetLine(startPos);
- int levelPrev = styler.LevelAt(lineCurrent) & SC_FOLDLEVELNUMBERMASK;
- int levelCurrent = levelPrev;
- char chNext = styler[startPos];
- int styleNext = styler.StyleAt(startPos);
- int style = initStyle;
- for (unsigned int i = startPos; i < endPos; i++) {
- char ch = chNext;
- chNext = styler.SafeGetCharAt(i + 1);
- int stylePrev = style;
- style = styleNext;
- styleNext = styler.StyleAt(i + 1);
- bool atEOL = (ch == '\r' && chNext != '\n') || (ch == '\n');
- if (foldComment &&
- (style == SCE_BAAN_COMMENT || style == SCE_BAAN_COMMENTDOC)) {
- if (style != stylePrev) {
- levelCurrent++;
- } else if ((style != styleNext) && !atEOL) {
- // Comments don't end at end of line and the next character may be unstyled.
- levelCurrent--;
- }
- }
- if (style == SCE_BAAN_OPERATOR) {
- if (ch == '{') {
- levelCurrent++;
- } else if (ch == '}') {
- levelCurrent--;
- }
- }
- if (atEOL) {
- int lev = levelPrev;
- if (visibleChars == 0 && foldCompact)
- lev |= SC_FOLDLEVELWHITEFLAG;
- if ((levelCurrent > levelPrev) && (visibleChars > 0))
- lev |= SC_FOLDLEVELHEADERFLAG;
- if (lev != styler.LevelAt(lineCurrent)) {
- styler.SetLevel(lineCurrent, lev);
- }
- lineCurrent++;
- levelPrev = levelCurrent;
- visibleChars = 0;
- }
- if (!isspacechar(ch))
- visibleChars++;
- }
- // Fill in the real level of the next line, keeping the current flags as they will be filled in later
- int flagsNext = styler.LevelAt(lineCurrent) & ~SC_FOLDLEVELNUMBERMASK;
- styler.SetLevel(lineCurrent, levelPrev | flagsNext);
-}
-
-LexerModule lmBaan(SCLEX_BAAN, ColouriseBaanDoc, "baan", FoldBaanDoc);
diff --git a/src/plugins/contrib/wxSmithSTC/stc/scintilla/src/LexBash.cxx b/src/plugins/contrib/wxSmithSTC/stc/scintilla/src/LexBash.cxx
deleted file mode 100644
index e9c31d6b38..0000000000
--- a/src/plugins/contrib/wxSmithSTC/stc/scintilla/src/LexBash.cxx
+++ /dev/null
@@ -1,663 +0,0 @@
-// Scintilla source code edit control
-/** @file LexBash.cxx
- ** Lexer for Bash.
- **/
-// Copyright 2004-2005 by Neil Hodgson
-// Adapted from LexPerl by Kein-Hong Man 2004
-// The License.txt file describes the conditions under which this software may be distributed.
-
-#include
-#include
-#include
-#include
-#include
-
-#include "Platform.h"
-
-#include "PropSet.h"
-#include "Accessor.h"
-#include "KeyWords.h"
-#include "Scintilla.h"
-#include "SciLexer.h"
-
-#define BASH_BASE_ERROR 65
-#define BASH_BASE_DECIMAL 66
-#define BASH_BASE_HEX 67
-#define BASH_BASE_OCTAL 68
-#define BASH_BASE_OCTAL_ERROR 69
-
-#define HERE_DELIM_MAX 256
-
-static inline int translateBashDigit(char ch) {
- if (ch >= '0' && ch <= '9') {
- return ch - '0';
- } else if (ch >= 'a' && ch <= 'z') {
- return ch - 'a' + 10;
- } else if (ch >= 'A' && ch <= 'Z') {
- return ch - 'A' + 36;
- } else if (ch == '@') {
- return 62;
- } else if (ch == '_') {
- return 63;
- }
- return BASH_BASE_ERROR;
-}
-
-static inline bool isEOLChar(char ch) {
- return (ch == '\r') || (ch == '\n');
-}
-
-static bool isSingleCharOp(char ch) {
- char strCharSet[2];
- strCharSet[0] = ch;
- strCharSet[1] = '\0';
- return (NULL != strstr("rwxoRWXOezsfdlpSbctugkTBMACahGLNn", strCharSet));
-}
-
-static inline bool isBashOperator(char ch) {
- if (ch == '^' || ch == '&' || ch == '\\' || ch == '%' ||
- ch == '(' || ch == ')' || ch == '-' || ch == '+' ||
- ch == '=' || ch == '|' || ch == '{' || ch == '}' ||
- ch == '[' || ch == ']' || ch == ':' || ch == ';' ||
- ch == '>' || ch == ',' || ch == '/' || ch == '<' ||
- ch == '?' || ch == '!' || ch == '.' || ch == '~' ||
- ch == '@')
- return true;
- return false;
-}
-
-static int classifyWordBash(unsigned int start, unsigned int end, WordList &keywords, Accessor &styler) {
- char s[100];
- for (unsigned int i = 0; i < end - start + 1 && i < 30; i++) {
- s[i] = styler[start + i];
- s[i + 1] = '\0';
- }
- char chAttr = SCE_SH_IDENTIFIER;
- if (keywords.InList(s))
- chAttr = SCE_SH_WORD;
- styler.ColourTo(end, chAttr);
- return chAttr;
-}
-
-static inline int getBashNumberBase(unsigned int start, unsigned int end, Accessor &styler) {
- int base = 0;
- for (unsigned int i = 0; i < end - start + 1 && i < 10; i++) {
- base = base * 10 + (styler[start + i] - '0');
- }
- if (base > 64 || (end - start) > 1) {
- return BASH_BASE_ERROR;
- }
- return base;
-}
-
-static inline bool isEndVar(char ch) {
- return !isalnum(ch) && ch != '$' && ch != '_';
-}
-
-static inline bool isNonQuote(char ch) {
- return isalnum(ch) || ch == '_';
-}
-
-static bool isMatch(Accessor &styler, int lengthDoc, int pos, const char *val) {
- if ((pos + static_cast(strlen(val))) >= lengthDoc) {
- return false;
- }
- while (*val) {
- if (*val != styler[pos++]) {
- return false;
- }
- val++;
- }
- return true;
-}
-
-static char opposite(char ch) {
- if (ch == '(')
- return ')';
- if (ch == '[')
- return ']';
- if (ch == '{')
- return '}';
- if (ch == '<')
- return '>';
- return ch;
-}
-
-static void ColouriseBashDoc(unsigned int startPos, int length, int initStyle,
- WordList *keywordlists[], Accessor &styler) {
-
- // Lexer for bash often has to backtrack to start of current style to determine
- // which characters are being used as quotes, how deeply nested is the
- // start position and what the termination string is for here documents
-
- WordList &keywords = *keywordlists[0];
-
- class HereDocCls {
- public:
- int State; // 0: '<<' encountered
- // 1: collect the delimiter
- // 2: here doc text (lines after the delimiter)
- char Quote; // the char after '<<'
- bool Quoted; // true if Quote in ('\'','"','`')
- bool Indent; // indented delimiter (for <<-)
- int DelimiterLength; // strlen(Delimiter)
- char *Delimiter; // the Delimiter, 256: sizeof PL_tokenbuf
- HereDocCls() {
- State = 0;
- Quote = 0;
- Quoted = false;
- Indent = 0;
- DelimiterLength = 0;
- Delimiter = new char[HERE_DELIM_MAX];
- Delimiter[0] = '\0';
- }
- ~HereDocCls() {
- delete []Delimiter;
- }
- };
- HereDocCls HereDoc;
-
- class QuoteCls {
- public:
- int Rep;
- int Count;
- char Up;
- char Down;
- QuoteCls() {
- this->New(1);
- }
- void New(int r) {
- Rep = r;
- Count = 0;
- Up = '\0';
- Down = '\0';
- }
- void Open(char u) {
- Count++;
- Up = u;
- Down = opposite(Up);
- }
- };
- QuoteCls Quote;
-
- int state = initStyle;
- int numBase = 0;
- unsigned int lengthDoc = startPos + length;
-
- // If in a long distance lexical state, seek to the beginning to find quote characters
- // Bash strings can be multi-line with embedded newlines, so backtrack.
- // Bash numbers have additional state during lexing, so backtrack too.
- if (state == SCE_SH_HERE_Q) {
- while ((startPos > 1) && (styler.StyleAt(startPos) != SCE_SH_HERE_DELIM)) {
- startPos--;
- }
- startPos = styler.LineStart(styler.GetLine(startPos));
- state = styler.StyleAt(startPos - 1);
- }
- if (state == SCE_SH_STRING
- || state == SCE_SH_BACKTICKS
- || state == SCE_SH_CHARACTER
- || state == SCE_SH_NUMBER
- || state == SCE_SH_IDENTIFIER
- || state == SCE_SH_COMMENTLINE
- ) {
- while ((startPos > 1) && (styler.StyleAt(startPos - 1) == state)) {
- startPos--;
- }
- state = SCE_SH_DEFAULT;
- }
-
- styler.StartAt(startPos);
- char chPrev = styler.SafeGetCharAt(startPos - 1);
- if (startPos == 0)
- chPrev = '\n';
- char chNext = styler[startPos];
- styler.StartSegment(startPos);
-
- for (unsigned int i = startPos; i < lengthDoc; i++) {
- char ch = chNext;
- // if the current character is not consumed due to the completion of an
- // earlier style, lexing can be restarted via a simple goto
- restartLexer:
- chNext = styler.SafeGetCharAt(i + 1);
- char chNext2 = styler.SafeGetCharAt(i + 2);
-
- if (styler.IsLeadByte(ch)) {
- chNext = styler.SafeGetCharAt(i + 2);
- chPrev = ' ';
- i += 1;
- continue;
- }
-
- if ((chPrev == '\r' && ch == '\n')) { // skip on DOS/Windows
- styler.ColourTo(i, state);
- chPrev = ch;
- continue;
- }
-
- if (HereDoc.State == 1 && isEOLChar(ch)) {
- // Begin of here-doc (the line after the here-doc delimiter):
- // Lexically, the here-doc starts from the next line after the >>, but the
- // first line of here-doc seem to follow the style of the last EOL sequence
- HereDoc.State = 2;
- if (HereDoc.Quoted) {
- if (state == SCE_SH_HERE_DELIM) {
- // Missing quote at end of string! We are stricter than bash.
- // Colour here-doc anyway while marking this bit as an error.
- state = SCE_SH_ERROR;
- }
- styler.ColourTo(i - 1, state);
- // HereDoc.Quote always == '\''
- state = SCE_SH_HERE_Q;
- } else {
- styler.ColourTo(i - 1, state);
- // always switch
- state = SCE_SH_HERE_Q;
- }
- }
-
- if (state == SCE_SH_DEFAULT) {
- if (ch == '\\') { // escaped character
- if (i < lengthDoc - 1)
- i++;
- ch = chNext;
- chNext = chNext2;
- styler.ColourTo(i, SCE_SH_IDENTIFIER);
- } else if (isdigit(ch)) {
- state = SCE_SH_NUMBER;
- numBase = BASH_BASE_DECIMAL;
- if (ch == '0') { // hex,octal
- if (chNext == 'x' || chNext == 'X') {
- numBase = BASH_BASE_HEX;
- i++;
- ch = chNext;
- chNext = chNext2;
- } else if (isdigit(chNext)) {
- numBase = BASH_BASE_OCTAL;
- }
- }
- } else if (iswordstart(ch)) {
- state = SCE_SH_WORD;
- if (!iswordchar(chNext) && chNext != '+' && chNext != '-') {
- // We need that if length of word == 1!
- // This test is copied from the SCE_SH_WORD handler.
- classifyWordBash(styler.GetStartSegment(), i, keywords, styler);
- state = SCE_SH_DEFAULT;
- }
- } else if (ch == '#') {
- state = SCE_SH_COMMENTLINE;
- } else if (ch == '\"') {
- state = SCE_SH_STRING;
- Quote.New(1);
- Quote.Open(ch);
- } else if (ch == '\'') {
- state = SCE_SH_CHARACTER;
- Quote.New(1);
- Quote.Open(ch);
- } else if (ch == '`') {
- state = SCE_SH_BACKTICKS;
- Quote.New(1);
- Quote.Open(ch);
- } else if (ch == '$') {
- if (chNext == '{') {
- state = SCE_SH_PARAM;
- goto startQuote;
- } else if (chNext == '\'') {
- state = SCE_SH_CHARACTER;
- goto startQuote;
- } else if (chNext == '"') {
- state = SCE_SH_STRING;
- goto startQuote;
- } else if (chNext == '(' && chNext2 == '(') {
- styler.ColourTo(i, SCE_SH_OPERATOR);
- state = SCE_SH_DEFAULT;
- goto skipChar;
- } else if (chNext == '(' || chNext == '`') {
- state = SCE_SH_BACKTICKS;
- startQuote:
- Quote.New(1);
- Quote.Open(chNext);
- goto skipChar;
- } else {
- state = SCE_SH_SCALAR;
- skipChar:
- i++;
- ch = chNext;
- chNext = chNext2;
- }
- } else if (ch == '*') {
- if (chNext == '*') { // exponentiation
- i++;
- ch = chNext;
- chNext = chNext2;
- }
- styler.ColourTo(i, SCE_SH_OPERATOR);
- } else if (ch == '<' && chNext == '<') {
- state = SCE_SH_HERE_DELIM;
- HereDoc.State = 0;
- HereDoc.Indent = false;
- } else if (ch == '-' // file test operators
- && isSingleCharOp(chNext)
- && !isalnum((chNext2 = styler.SafeGetCharAt(i+2)))) {
- styler.ColourTo(i + 1, SCE_SH_WORD);
- state = SCE_SH_DEFAULT;
- i++;
- ch = chNext;
- chNext = chNext2;
- } else if (isBashOperator(ch)) {
- styler.ColourTo(i, SCE_SH_OPERATOR);
- } else {
- // keep colouring defaults to make restart easier
- styler.ColourTo(i, SCE_SH_DEFAULT);
- }
- } else if (state == SCE_SH_NUMBER) {
- int digit = translateBashDigit(ch);
- if (numBase == BASH_BASE_DECIMAL) {
- if (ch == '#') {
- numBase = getBashNumberBase(styler.GetStartSegment(), i - 1, styler);
- if (numBase == BASH_BASE_ERROR) // take the rest as comment
- goto numAtEnd;
- } else if (!isdigit(ch))
- goto numAtEnd;
- } else if (numBase == BASH_BASE_HEX) {
- if ((digit < 16) || (digit >= 36 && digit <= 41)) {
- // hex digit 0-9a-fA-F
- } else
- goto numAtEnd;
- } else if (numBase == BASH_BASE_OCTAL ||
- numBase == BASH_BASE_OCTAL_ERROR) {
- if (digit > 7) {
- if (digit <= 9) {
- numBase = BASH_BASE_OCTAL_ERROR;
- } else
- goto numAtEnd;
- }
- } else if (numBase == BASH_BASE_ERROR) {
- if (digit > 9)
- goto numAtEnd;
- } else { // DD#DDDD number style handling
- if (digit != BASH_BASE_ERROR) {
- if (numBase <= 36) {
- // case-insensitive if base<=36
- if (digit >= 36) digit -= 26;
- }
- if (digit >= numBase) {
- if (digit <= 9) {
- numBase = BASH_BASE_ERROR;
- } else
- goto numAtEnd;
- }
- } else {
- numAtEnd:
- if (numBase == BASH_BASE_ERROR ||
- numBase == BASH_BASE_OCTAL_ERROR)
- state = SCE_SH_ERROR;
- styler.ColourTo(i - 1, state);
- state = SCE_SH_DEFAULT;
- goto restartLexer;
- }
- }
- } else if (state == SCE_SH_WORD) {
- if (!iswordchar(chNext) && chNext != '+' && chNext != '-') {
- // "." never used in Bash variable names
- // but used in file names
- classifyWordBash(styler.GetStartSegment(), i, keywords, styler);
- state = SCE_SH_DEFAULT;
- ch = ' ';
- }
- } else if (state == SCE_SH_IDENTIFIER) {
- if (!iswordchar(chNext) && chNext != '+' && chNext != '-') {
- styler.ColourTo(i, SCE_SH_IDENTIFIER);
- state = SCE_SH_DEFAULT;
- ch = ' ';
- }
- } else {
- if (state == SCE_SH_COMMENTLINE) {
- if (ch == '\\' && isEOLChar(chNext)) {
- // comment continuation
- if (chNext == '\r' && chNext2 == '\n') {
- i += 2;
- ch = styler.SafeGetCharAt(i);
- chNext = styler.SafeGetCharAt(i + 1);
- } else {
- i++;
- ch = chNext;
- chNext = chNext2;
- }
- } else if (isEOLChar(ch)) {
- styler.ColourTo(i - 1, state);
- state = SCE_SH_DEFAULT;
- goto restartLexer;
- } else if (isEOLChar(chNext)) {
- styler.ColourTo(i, state);
- state = SCE_SH_DEFAULT;
- }
- } else if (state == SCE_SH_HERE_DELIM) {
- //
- // From Bash info:
- // ---------------
- // Specifier format is: <<[-]WORD
- // Optional '-' is for removal of leading tabs from here-doc.
- // Whitespace acceptable after <<[-] operator
- //
- if (HereDoc.State == 0) { // '<<' encountered
- HereDoc.State = 1;
- HereDoc.Quote = chNext;
- HereDoc.Quoted = false;
- HereDoc.DelimiterLength = 0;
- HereDoc.Delimiter[HereDoc.DelimiterLength] = '\0';
- if (chNext == '\'' || chNext == '\"') { // a quoted here-doc delimiter (' or ")
- i++;
- ch = chNext;
- chNext = chNext2;
- HereDoc.Quoted = true;
- } else if (!HereDoc.Indent && chNext == '-') { // <<- indent case
- HereDoc.Indent = true;
- HereDoc.State = 0;
- } else if (isalpha(chNext) || chNext == '_' || chNext == '\\'
- || chNext == '-' || chNext == '+' || chNext == '!') {
- // an unquoted here-doc delimiter, no special handling
- // TODO check what exactly bash considers part of the delim
- } else if (chNext == '<') { // HERE string <<<
- i++;
- ch = chNext;
- chNext = chNext2;
- styler.ColourTo(i, SCE_SH_HERE_DELIM);
- state = SCE_SH_DEFAULT;
- HereDoc.State = 0;
- } else if (isspacechar(chNext)) {
- // eat whitespace
- HereDoc.State = 0;
- } else if (isdigit(chNext) || chNext == '=' || chNext == '$') {
- // left shift << or <<= operator cases
- styler.ColourTo(i, SCE_SH_OPERATOR);
- state = SCE_SH_DEFAULT;
- HereDoc.State = 0;
- } else {
- // symbols terminates; deprecated zero-length delimiter
- }
- } else if (HereDoc.State == 1) { // collect the delimiter
- if (HereDoc.Quoted) { // a quoted here-doc delimiter
- if (ch == HereDoc.Quote) { // closing quote => end of delimiter
- styler.ColourTo(i, state);
- state = SCE_SH_DEFAULT;
- } else {
- if (ch == '\\' && chNext == HereDoc.Quote) { // escaped quote
- i++;
- ch = chNext;
- chNext = chNext2;
- }
- HereDoc.Delimiter[HereDoc.DelimiterLength++] = ch;
- HereDoc.Delimiter[HereDoc.DelimiterLength] = '\0';
- }
- } else { // an unquoted here-doc delimiter
- if (isalnum(ch) || ch == '_' || ch == '-' || ch == '+' || ch == '!') {
- HereDoc.Delimiter[HereDoc.DelimiterLength++] = ch;
- HereDoc.Delimiter[HereDoc.DelimiterLength] = '\0';
- } else if (ch == '\\') {
- // skip escape prefix
- } else {
- styler.ColourTo(i - 1, state);
- state = SCE_SH_DEFAULT;
- goto restartLexer;
- }
- }
- if (HereDoc.DelimiterLength >= HERE_DELIM_MAX - 1) {
- styler.ColourTo(i - 1, state);
- state = SCE_SH_ERROR;
- goto restartLexer;
- }
- }
- } else if (HereDoc.State == 2) {
- // state == SCE_SH_HERE_Q
- if (isMatch(styler, lengthDoc, i, HereDoc.Delimiter)) {
- if (!HereDoc.Indent && isEOLChar(chPrev)) {
- endHereDoc:
- // standard HERE delimiter
- i += HereDoc.DelimiterLength;
- chPrev = styler.SafeGetCharAt(i - 1);
- ch = styler.SafeGetCharAt(i);
- if (isEOLChar(ch)) {
- styler.ColourTo(i - 1, state);
- state = SCE_SH_DEFAULT;
- HereDoc.State = 0;
- goto restartLexer;
- }
- chNext = styler.SafeGetCharAt(i + 1);
- } else if (HereDoc.Indent) {
- // indented HERE delimiter
- unsigned int bk = (i > 0)? i - 1: 0;
- while (i > 0) {
- ch = styler.SafeGetCharAt(bk--);
- if (isEOLChar(ch)) {
- goto endHereDoc;
- } else if (!isspacechar(ch)) {
- break; // got leading non-whitespace
- }
- }
- }
- }
- } else if (state == SCE_SH_SCALAR) { // variable names
- if (isEndVar(ch)) {
- if ((state == SCE_SH_SCALAR)
- && i == (styler.GetStartSegment() + 1)) {
- // Special variable: $(, $_ etc.
- styler.ColourTo(i, state);
- state = SCE_SH_DEFAULT;
- } else {
- styler.ColourTo(i - 1, state);
- state = SCE_SH_DEFAULT;
- goto restartLexer;
- }
- }
- } else if (state == SCE_SH_STRING
- || state == SCE_SH_CHARACTER
- || state == SCE_SH_BACKTICKS
- || state == SCE_SH_PARAM
- ) {
- if (!Quote.Down && !isspacechar(ch)) {
- Quote.Open(ch);
- } else if (ch == '\\' && Quote.Up != '\\') {
- i++;
- ch = chNext;
- chNext = styler.SafeGetCharAt(i + 1);
- } else if (ch == Quote.Down) {
- Quote.Count--;
- if (Quote.Count == 0) {
- Quote.Rep--;
- if (Quote.Rep <= 0) {
- styler.ColourTo(i, state);
- state = SCE_SH_DEFAULT;
- ch = ' ';
- }
- if (Quote.Up == Quote.Down) {
- Quote.Count++;
- }
- }
- } else if (ch == Quote.Up) {
- Quote.Count++;
- }
- }
- }
- if (state == SCE_SH_ERROR) {
- break;
- }
- chPrev = ch;
- }
- styler.ColourTo(lengthDoc - 1, state);
-}
-
-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];
- if (ch == '#')
- return true;
- else if (ch != ' ' && ch != '\t')
- return false;
- }
- return false;
-}
-
-static void FoldBashDoc(unsigned int startPos, int length, int, WordList *[],
- Accessor &styler) {
- bool foldComment = styler.GetPropertyInt("fold.comment") != 0;
- bool foldCompact = styler.GetPropertyInt("fold.compact", 1) != 0;
- unsigned int endPos = startPos + length;
- int visibleChars = 0;
- int lineCurrent = styler.GetLine(startPos);
- int levelPrev = styler.LevelAt(lineCurrent) & SC_FOLDLEVELNUMBERMASK;
- int levelCurrent = levelPrev;
- char chNext = styler[startPos];
- int styleNext = styler.StyleAt(startPos);
- for (unsigned int i = startPos; i < endPos; i++) {
- char ch = chNext;
- chNext = styler.SafeGetCharAt(i + 1);
- int style = styleNext;
- styleNext = styler.StyleAt(i + 1);
- bool atEOL = (ch == '\r' && chNext != '\n') || (ch == '\n');
- // Comment folding
- if (foldComment && atEOL && IsCommentLine(lineCurrent, styler))
- {
- if (!IsCommentLine(lineCurrent - 1, styler)
- && IsCommentLine(lineCurrent + 1, styler))
- levelCurrent++;
- else if (IsCommentLine(lineCurrent - 1, styler)
- && !IsCommentLine(lineCurrent+1, styler))
- levelCurrent--;
- }
- if (style == SCE_SH_OPERATOR) {
- if (ch == '{') {
- levelCurrent++;
- } else if (ch == '}') {
- levelCurrent--;
- }
- }
- if (atEOL) {
- int lev = levelPrev;
- if (visibleChars == 0 && foldCompact)
- lev |= SC_FOLDLEVELWHITEFLAG;
- if ((levelCurrent > levelPrev) && (visibleChars > 0))
- lev |= SC_FOLDLEVELHEADERFLAG;
- if (lev != styler.LevelAt(lineCurrent)) {
- styler.SetLevel(lineCurrent, lev);
- }
- lineCurrent++;
- levelPrev = levelCurrent;
- visibleChars = 0;
- }
- if (!isspacechar(ch))
- visibleChars++;
- }
- // Fill in the real level of the next line, keeping the current flags as they will be filled in later
- int flagsNext = styler.LevelAt(lineCurrent) & ~SC_FOLDLEVELNUMBERMASK;
- styler.SetLevel(lineCurrent, levelPrev | flagsNext);
-}
-
-static const char * const bashWordListDesc[] = {
- "Keywords",
- 0
-};
-
-LexerModule lmBash(SCLEX_BASH, ColouriseBashDoc, "bash", FoldBashDoc, bashWordListDesc);
diff --git a/src/plugins/contrib/wxSmithSTC/stc/scintilla/src/LexBasic.cxx b/src/plugins/contrib/wxSmithSTC/stc/scintilla/src/LexBasic.cxx
deleted file mode 100644
index 79ba2b8911..0000000000
--- a/src/plugins/contrib/wxSmithSTC/stc/scintilla/src/LexBasic.cxx
+++ /dev/null
@@ -1,369 +0,0 @@
-// Scintilla source code edit control
-/** @file LexBasic.cxx
- ** Lexer for BlitzBasic and PureBasic.
- **/
-// Copyright 1998-2003 by Neil Hodgson
-// The License.txt file describes the conditions under which this software may be distributed.
-
-// This tries to be a unified Lexer/Folder for all the BlitzBasic/BlitzMax/PurBasic basics
-// and derivatives. Once they diverge enough, might want to split it into multiple
-// lexers for more code clearity.
-//
-// Mail me (elias users sf net) for any bugs.
-
-// Folding only works for simple things like functions or types.
-
-// You may want to have a look at my ctags lexer as well, if you additionally to coloring
-// and folding need to extract things like label tags in your editor.
-
-#include
-#include
-#include
-#include
-#include
-
-#include "Platform.h"
-
-#include "PropSet.h"
-#include "Accessor.h"
-#include "StyleContext.h"
-#include "KeyWords.h"
-#include "Scintilla.h"
-#include "SciLexer.h"
-
-/* Bits:
- * 1 - whitespace
- * 2 - operator
- * 4 - identifier
- * 8 - decimal digit
- * 16 - hex digit
- * 32 - bin digit
- */
-static int character_classification[128] =
-{
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 1, 2, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 10, 2,
- 60, 60, 28, 28, 28, 28, 28, 28, 28, 28, 2, 2, 2, 2, 2, 2,
- 2, 20, 20, 20, 20, 20, 20, 4, 4, 4, 4, 4, 4, 4, 4, 4,
- 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 2, 2, 2, 2, 4,
- 2, 20, 20, 20, 20, 20, 20, 4, 4, 4, 4, 4, 4, 4, 4, 4,
- 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 2, 2, 2, 2, 0
-};
-
-static bool IsSpace(int c) {
- return c < 128 && (character_classification[c] & 1);
-}
-
-static bool IsOperator(int c) {
- return c < 128 && (character_classification[c] & 2);
-}
-
-static bool IsIdentifier(int c) {
- return c < 128 && (character_classification[c] & 4);
-}
-
-static bool IsDigit(int c) {
- return c < 128 && (character_classification[c] & 8);
-}
-
-static bool IsHexDigit(int c) {
- return c < 128 && (character_classification[c] & 16);
-}
-
-static bool IsBinDigit(int c) {
- return c < 128 && (character_classification[c] & 32);
-}
-
-static int LowerCase(int c)
-{
- if (c >= 'A' && c <= 'Z')
- return 'a' + c - 'A';
- return c;
-}
-
-static void ColouriseBasicDoc(unsigned int startPos, int length, int initStyle,
- WordList *keywordlists[], Accessor &styler, char comment_char) {
- bool wasfirst = true, isfirst = true; // true if first token in a line
- styler.StartAt(startPos);
-
- StyleContext sc(startPos, length, initStyle, styler);
-
- // Can't use sc.More() here else we miss the last character
- for (; ; sc.Forward()) {
- if (sc.state == SCE_B_IDENTIFIER) {
- if (!IsIdentifier(sc.ch)) {
- // Labels
- if (wasfirst && sc.Match(':')) {
- sc.ChangeState(SCE_B_LABEL);
- sc.ForwardSetState(SCE_B_DEFAULT);
- } else {
- char s[100];
- int kstates[4] = {
- SCE_B_KEYWORD,
- SCE_B_KEYWORD2,
- SCE_B_KEYWORD3,
- SCE_B_KEYWORD4,
- };
- sc.GetCurrentLowered(s, sizeof(s));
- for (int i = 0; i < 4; i++) {
- if (keywordlists[i]->InList(s)) {
- sc.ChangeState(kstates[i]);
- }
- }
- // Types, must set them as operator else they will be
- // matched as number/constant
- if (sc.Match('.') || sc.Match('$') || sc.Match('%') ||
- sc.Match('#')) {
- sc.SetState(SCE_B_OPERATOR);
- } else {
- sc.SetState(SCE_B_DEFAULT);
- }
- }
- }
- } else if (sc.state == SCE_B_OPERATOR) {
- if (!IsOperator(sc.ch) || sc.Match('#'))
- sc.SetState(SCE_B_DEFAULT);
- } else if (sc.state == SCE_B_LABEL) {
- if (!IsIdentifier(sc.ch))
- sc.SetState(SCE_B_DEFAULT);
- } else if (sc.state == SCE_B_CONSTANT) {
- if (!IsIdentifier(sc.ch))
- sc.SetState(SCE_B_DEFAULT);
- } else if (sc.state == SCE_B_NUMBER) {
- if (!IsDigit(sc.ch))
- sc.SetState(SCE_B_DEFAULT);
- } else if (sc.state == SCE_B_HEXNUMBER) {
- if (!IsHexDigit(sc.ch))
- sc.SetState(SCE_B_DEFAULT);
- } else if (sc.state == SCE_B_BINNUMBER) {
- if (!IsBinDigit(sc.ch))
- sc.SetState(SCE_B_DEFAULT);
- } else if (sc.state == SCE_B_STRING) {
- if (sc.ch == '"') {
- sc.ForwardSetState(SCE_B_DEFAULT);
- }
- if (sc.atLineEnd) {
- sc.ChangeState(SCE_B_ERROR);
- sc.SetState(SCE_B_DEFAULT);
- }
- } else if (sc.state == SCE_B_COMMENT || sc.state == SCE_B_PREPROCESSOR) {
- if (sc.atLineEnd) {
- sc.SetState(SCE_B_DEFAULT);
- }
- }
-
- if (sc.atLineStart)
- isfirst = true;
-
- if (sc.state == SCE_B_DEFAULT || sc.state == SCE_B_ERROR) {
- if (isfirst && sc.Match('.')) {
- sc.SetState(SCE_B_LABEL);
- } else if (isfirst && sc.Match('#')) {
- wasfirst = isfirst;
- sc.SetState(SCE_B_IDENTIFIER);
- } else if (sc.Match(comment_char)) {
- // Hack to make deprecated QBASIC '$Include show
- // up in freebasic with SCE_B_PREPROCESSOR.
- if (comment_char == '\'' && sc.Match(comment_char, '$'))
- sc.SetState(SCE_B_PREPROCESSOR);
- else
- sc.SetState(SCE_B_COMMENT);
- } else if (sc.Match('"')) {
- sc.SetState(SCE_B_STRING);
- } else if (IsDigit(sc.ch)) {
- sc.SetState(SCE_B_NUMBER);
- } else if (sc.Match('$')) {
- sc.SetState(SCE_B_HEXNUMBER);
- } else if (sc.Match('%')) {
- sc.SetState(SCE_B_BINNUMBER);
- } else if (sc.Match('#')) {
- sc.SetState(SCE_B_CONSTANT);
- } else if (IsOperator(sc.ch)) {
- sc.SetState(SCE_B_OPERATOR);
- } else if (IsIdentifier(sc.ch)) {
- wasfirst = isfirst;
- sc.SetState(SCE_B_IDENTIFIER);
- } else if (!IsSpace(sc.ch)) {
- sc.SetState(SCE_B_ERROR);
- }
- }
-
- if (!IsSpace(sc.ch))
- isfirst = false;
-
- if (!sc.More())
- break;
- }
- sc.Complete();
-}
-
-static int CheckBlitzFoldPoint(char const *token, int &level) {
- if (!strcmp(token, "function") ||
- !strcmp(token, "type")) {
- level |= SC_FOLDLEVELHEADERFLAG;
- return 1;
- }
- if (!strcmp(token, "end function") ||
- !strcmp(token, "end type")) {
- return -1;
- }
- return 0;
-}
-
-static int CheckPureFoldPoint(char const *token, int &level) {
- if (!strcmp(token, "procedure") ||
- !strcmp(token, "enumeration") ||
- !strcmp(token, "interface") ||
- !strcmp(token, "structure")) {
- level |= SC_FOLDLEVELHEADERFLAG;
- return 1;
- }
- if (!strcmp(token, "endprocedure") ||
- !strcmp(token, "endenumeration") ||
- !strcmp(token, "endinterface") ||
- !strcmp(token, "endstructure")) {
- return -1;
- }
- return 0;
-}
-
-static int CheckFreeFoldPoint(char const *token, int &level) {
- if (!strcmp(token, "function") ||
- !strcmp(token, "sub") ||
- !strcmp(token, "type")) {
- level |= SC_FOLDLEVELHEADERFLAG;
- return 1;
- }
- if (!strcmp(token, "end function") ||
- !strcmp(token, "end sub") ||
- !strcmp(token, "end type")) {
- return -1;
- }
- return 0;
-}
-
-static void FoldBasicDoc(unsigned int startPos, int length,
- Accessor &styler, int (*CheckFoldPoint)(char const *, int &)) {
- int line = styler.GetLine(startPos);
- int level = styler.LevelAt(line);
- int go = 0, done = 0;
- int endPos = startPos + length;
- char word[256];
- int wordlen = 0;
- int i;
- bool foldCompact = styler.GetPropertyInt("fold.compact", 1) != 0;
- // Scan for tokens at the start of the line (they may include
- // whitespace, for tokens like "End Function"
- for (i = startPos; i < endPos; i++) {
- int c = styler.SafeGetCharAt(i);
- if (!done && !go) {
- if (wordlen) { // are we scanning a token already?
- word[wordlen] = static_cast(LowerCase(c));
- if (!IsIdentifier(c)) { // done with token
- word[wordlen] = '\0';
- go = CheckFoldPoint(word, level);
- if (!go) {
- // Treat any whitespace as single blank, for
- // things like "End Function".
- if (IsSpace(c) && IsIdentifier(word[wordlen - 1])) {
- word[wordlen] = ' ';
- if (wordlen < 255)
- wordlen++;
- }
- else // done with this line
- done = 1;
- }
- } else if (wordlen < 255) {
- wordlen++;
- }
- } else { // start scanning at first non-whitespace character
- if (!IsSpace(c)) {
- if (IsIdentifier(c)) {
- word[0] = static_cast(LowerCase(c));
- wordlen = 1;
- } else // done with this line
- done = 1;
- }
- }
- }
- if (c == '\n') { // line end
- if (!done && wordlen == 0 && foldCompact) // line was only space
- level |= SC_FOLDLEVELWHITEFLAG;
- if (level != styler.LevelAt(line))
- styler.SetLevel(line, level);
- level += go;
- line++;
- // reset state
- wordlen = 0;
- level &= ~SC_FOLDLEVELHEADERFLAG;
- level &= ~SC_FOLDLEVELWHITEFLAG;
- go = 0;
- done = 0;
- }
- }
-}
-
-static void ColouriseBlitzBasicDoc(unsigned int startPos, int length, int initStyle,
- WordList *keywordlists[], Accessor &styler) {
- ColouriseBasicDoc(startPos, length, initStyle, keywordlists, styler, ';');
-}
-
-static void ColourisePureBasicDoc(unsigned int startPos, int length, int initStyle,
- WordList *keywordlists[], Accessor &styler) {
- ColouriseBasicDoc(startPos, length, initStyle, keywordlists, styler, ';');
-}
-
-static void ColouriseFreeBasicDoc(unsigned int startPos, int length, int initStyle,
- WordList *keywordlists[], Accessor &styler) {
- ColouriseBasicDoc(startPos, length, initStyle, keywordlists, styler, '\'');
-}
-
-static void FoldBlitzBasicDoc(unsigned int startPos, int length, int,
- WordList *[], Accessor &styler) {
- FoldBasicDoc(startPos, length, styler, CheckBlitzFoldPoint);
-}
-
-static void FoldPureBasicDoc(unsigned int startPos, int length, int,
- WordList *[], Accessor &styler) {
- FoldBasicDoc(startPos, length, styler, CheckPureFoldPoint);
-}
-
-static void FoldFreeBasicDoc(unsigned int startPos, int length, int,
- WordList *[], Accessor &styler) {
- FoldBasicDoc(startPos, length, styler, CheckFreeFoldPoint);
-}
-
-static const char * const blitzbasicWordListDesc[] = {
- "BlitzBasic Keywords",
- "user1",
- "user2",
- "user3",
- 0
-};
-
-static const char * const purebasicWordListDesc[] = {
- "PureBasic Keywords",
- "PureBasic PreProcessor Keywords",
- "user defined 1",
- "user defined 2",
- 0
-};
-
-static const char * const freebasicWordListDesc[] = {
- "FreeBasic Keywords",
- "FreeBasic PreProcessor Keywords",
- "user defined 1",
- "user defined 2",
- 0
-};
-
-LexerModule lmBlitzBasic(SCLEX_BLITZBASIC, ColouriseBlitzBasicDoc, "blitzbasic",
- FoldBlitzBasicDoc, blitzbasicWordListDesc);
-
-LexerModule lmPureBasic(SCLEX_PUREBASIC, ColourisePureBasicDoc, "purebasic",
- FoldPureBasicDoc, purebasicWordListDesc);
-
-LexerModule lmFreeBasic(SCLEX_FREEBASIC, ColouriseFreeBasicDoc, "freebasic",
- FoldFreeBasicDoc, freebasicWordListDesc);
-
diff --git a/src/plugins/contrib/wxSmithSTC/stc/scintilla/src/LexBullant.cxx b/src/plugins/contrib/wxSmithSTC/stc/scintilla/src/LexBullant.cxx
deleted file mode 100644
index 902f89c1e4..0000000000
--- a/src/plugins/contrib/wxSmithSTC/stc/scintilla/src/LexBullant.cxx
+++ /dev/null
@@ -1,225 +0,0 @@
-// SciTE - Scintilla based Text Editor
-// LexBullant.cxx - lexer for Bullant
-
-#include
-#include