+ The primary purpose of this structure is to separate the platform dependent code from the
+ platform independent core code. This makes it easier to port Scintilla to a new platform and
+ ensures that most readers of the code do not have to deal with platform details. To minimise
+ portability problems and avoid code bloat, a conservative subset of C++ is used in Scintilla
+ with no exception handling, run time type information or use of the standard C++
+ library and with limited use of templates.
+
+
+ The currently supported platforms, Windows, GTK+/Linux and wxWindows are fairly similar in
+ many ways.
+ Each has windows, menus and bitmaps. These features generally work in similar ways so each
+ has a way to move a window or draw a red line. Sometimes one platform requires a sequence of
+ calls rather than a single call. At other times, the differences are more profound. Reading
+ the Windows clipboard occurs synchronously but reading the GTK+ clipboard requires a request
+ call that will be asynchronously answered with a message containing the clipboard data.
+ The wxWindows platform is available from the wxWindows site
+
+
+ This is a fairly small and thin layer over the platform's native capabilities.
+
+
+ The portability library is defined in Platform.h and is implemented once for each platform.
+ PlatWin.cxx defines the Windows variants of the methods and PlatGTK.cxx the GTK+ variants.
+
+
+ Several of the classes here hold platform specific object identifiers and act as proxies to
+ these platform objects. Most client code can thus manipulate the platform objects without
+ caring which is the current platform. Sometimes client code needs access to the underlying
+ object identifiers and this is provided by the GetID method. The underlying types of the
+ platform specific identifiers are typedefed to common names to allow them to be transferred
+ around in client code where needed.
+
+
+ These are simple classes provided to hold the commonly used geometric primitives. A
+ PRectangle follows the Mac / Windows convention of not including its bottom and right sides
+ instead of including all its sides as is normal in GTK+. It is not called Rectangle as this may be
+ the name of a macro on Windows.
+
+
+ Colour holds a platform specific colour identifier - COLORREF for Windows and GdkColor for
+ GTK+. The red, green and blue components that make up the colour are limited to the 8 bits of
+ precision available on Windows. ColourPairs are used because not all possible colours are
+ always available. Using an 8 bit colour mode, which is a common setting for both Windows and
+ GTK+, only 256 colours are possible on the display. Thus when an application asks for a dull
+ red, say #400000, it may only be allocated an already available colour such as #800000 or
+ #330000. With 16 or 2 colour modes even less choice is available and the application will
+ have to use the limited set of already available colours.
+
+ A Palette object holds a set of colour pairs and can make the appropriate calls to ask to
+ allocate these colours and to see what the platform has decided will be allowed.
+
+ Font holds a platform specific font identifier - HFONT for Windows, GdkFont* for GTK+. It
+ does not own the identifier and so will not delete the platform font object in its
+ destructor. Client code should call Destroy at appropriate times.
+
+
+ Surface is an abstraction over each platform's concept of somewhere that graphical drawing
+ operations can be done. It may wrap an already created drawing place such as a window or be
+ used to create a bitmap that can be drawn into and later copied onto another surface. On
+ Windows it wraps a HDC and possibly a HBITMAP. On GTK+ it wraps a GdkDrawable* and possibly a
+ GdkPixmap*. Other platform specific objects are created (and correctly destroyed) whenever
+ required to perform drawing actions.
+
+
+ Drawing operations provided include drawing filled and unfilled polygons, lines, rectangles,
+ ellipses and text. The height and width of text as well as other details can be measured.
+ Operations can be clipped to a rectangle. Most of the calls are stateless with all parameters
+ being passed at each call. The exception to this is line drawing which is performed by
+ calling MoveTo and then LineTo.
+
+
+ Window acts as a proxy to a platform window allowing operations such as showing, moving,
+ redrawing, and destroying to be performed. It contains a platform specific window identifier
+ - HWND for Windows, GtkWidget* for GTK+.
+
+
+ ListBox is a subclass of Window and acts as a proxy to a platform listbox adding methods for
+ operations such as adding, retrieving, and selecting items.
+
+
+ Menu is a small helper class for constructing popup menus. It contains the platform specific
+ menu identifier - HMENU for Windows, GtkItemFactory* for GTK+. Most of the work in
+ constructing menus requires access to platform events and so is done in the Platform Events
+ and API layer.
+
+
+ The Platform class is used to access the facilities of the platform. System wide parameters
+ such as double click speed and chrome colour are available from Platform. Utility functions
+ such as DebugPrintf are also available from Platform.
+
+
+ The bulk of Scintilla's code is platform independent. This is made up of the CellBuffer,
+ ContractionState, Document, Editor, Indicator, LineMarker, Style, ViewStyle, KeyMap,
+ ScintillaBase, CallTip,
+ and AutoComplete primary classes.
+
+
+ A CellBuffer holds text and styling information, the undo stack, the assignment of line
+ markers to lines, and the fold structure.
+
+
+ A cell contains a character byte and its associated style byte. The current state of the
+ cell buffer is the sequence of cells that make up the text and a sequence of line information
+ containing the starting position of each line and any markers assigned to each line.
+
+
+ The undo stack holds a sequence of actions on the cell buffer. Each action is one of a text
+ insertion, a text deletion or an undo start action. The start actions are used to group
+ sequences of text insertions and deletions together so they can be undone together. To
+ perform an undo operation, each insertion or deletion is undone in reverse sequence.
+ Similarly, redo reapplies each action to the buffer in sequence. Whenever a character is
+ inserted in the buffer either directly through a call such as InsertString or through undo or
+ redo, its styling byte is initially set to zero. Client code is responsible for styling each
+ character whenever convenient. Styling information is not stored in undo actions.
+
+
+ A document contains a CellBuffer and deals with some higher level abstractions such as
+ words, DBCS character sequences and line end character sequences. It is responsible for
+ managing the styling process and for notifying other objects when changes occur to the
+ document.
+
+
+ The Editor object is central to Scintilla. It is responsible for displaying a document and
+ responding to user actions and requests from the container. It uses ContractionState, Indicator,
+ LineMarker, Style, and ViewStyle objects to display the document and a KeyMap class to
+ map key presses to functions.
+ The visibility of each line is kept in the ContractionState which is also responsible for mapping
+ from display lines to documents lines and vice versa.
+
+
+ There may be multiple Editor objects attached to one Document object. Changes to a
+ document are broadcast to the editors through the DocWatcher mechanism.
+
+
+ ScintillaBase is a subclass of Editor and adds extra windowing features including display of
+ calltips, autocompletion lists and context menus. These features use CallTip and AutoComplete
+ objects. This class is optional so a lightweight implementation of Scintilla may bypass it if
+ the added functionality is not required.
+
+
+ Each platform uses different mechanisms for receiving events. On Windows, events are
+ received through messages and COM. On GTK+, callback functions are used.
+
+
+ For each platform, a class is derived from ScintillaBase (and thus from Editor). This is
+ ScintillaWin on Windows and ScintillaGTK on GTK+. These classes are responsible for
+ connecting to the platforms event mechanism and also to implement some virtual methods in
+ Editor and ScintillaBase which are different on the platforms. For example, this layer has to
+ support this difference between the synchronous Windows clipboard and the asynchronous GTK+
+ clipboard.
+
+
+ The external API is defined in this layer as each platform has different preferred styles of
+ API - messages on Windows and function calls on GTK+. This also allows multiple APIs to be
+ defined on a platform. The currently available API on GTK+ is similar to the Windows API and
+ does not follow platform conventions well. A second API could be implemented here that did
+ follow platform conventions.
+
+
+
+
diff --git a/doc/other/Icons.html b/doc/other/Icons.html
new file mode 100644
index 0000000..0bf302d
--- /dev/null
+++ b/doc/other/Icons.html
@@ -0,0 +1,56 @@
+
+
+
+
+
+ These images may be used under the same license as Scintilla.
+
+
+ Drawn by Iago Rubio, Philippe Lhoste, and Neil Hodgson.
+
+
+
+All Rights Reserved
+
+Permission to use, copy, modify, and distribute this software and its
+documentation for any purpose and without fee is hereby granted,
+provided that the above copyright notice appear in all copies and that
+both that copyright notice and this permission notice appear in
+supporting documentation.
+
+NEIL HODGSON DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS
+SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+AND FITNESS, IN NO EVENT SHALL NEIL HODGSON BE LIABLE FOR ANY
+SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
+WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
+TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE
+OR PERFORMANCE OF THIS SOFTWARE.
\ No newline at end of file
diff --git a/doc/other/SciBreak.jpg b/doc/other/SciBreak.jpg
new file mode 100644
index 0000000..65c9fc7
Binary files /dev/null and b/doc/other/SciBreak.jpg differ
diff --git a/doc/other/SciCoding.html b/doc/other/SciCoding.html
new file mode 100644
index 0000000..df0eb90
--- /dev/null
+++ b/doc/other/SciCoding.html
@@ -0,0 +1,251 @@
+
+
+
+
+
+
+
+ Scintilla and SciTE Code Style Preferences
+
+
+
+
+
+
+ Code Style
+
+
+ Introduction
+
+
+ The source code of Scintilla and SciTE follow my preferences.
+ Some of these decisions are arbitrary and based on my sense of aesthetics
+ but its good to have all the code look the same even if its not exactly how
+ everyone would prefer.
+
+
+ Code that does not follow these conventions will be accepted, but will be modified
+ as time goes by to fit the conventions. Scintilla code follows the conventions more
+ closely than SciTE except for lexers which are relatively independent modules.
+ Lexers that are maintained by others are left as they are submitted except that
+ warnings will be fixed so the whole project can compile cleanly.
+
+
+ The AStyle formatting
+ program with a '-tapO' argument formats code in much the right way although
+ there are a few bugs in AStyle. The scite/scripts/Fixer.py script will run AStyle
+ over a C++ source file and fix up some of those bugs.
+
+
+ Language features
+
+
+ Design goals for Scintilla and SciTE include portability to currently available C++
+ compilers on diverse platforms with high performance and low resource usage.
+ Scintilla has stricter portability requirements to SciTE as it may be ported to
+ low capability platforms such as Windows CE or PalmOS but it is less likely
+ SciTE will be.
+
+
+ To achieve portability, only a subset of C++ features are used. Exceptions are
+ not available on some platforms such as Windows CE so exceptions are not used
+ and thus the standard C++ library can not be used.
+ Template support differs between compilers so is not used in Scintilla but there
+ are some simple uses in SciTE.
+ Run-time type information adds to memory use so is turned off.
+ Name spaces are not used.
+
+
+ The goto statement is not used because of bad memories from my first job
+ maintaining FORTRAN programs. The union feature is not used as it can lead to
+ non-type-safe value access.
+
+
+ Casting
+
+
+ Do not use old C style casts like (char *)s. Instead use the most strict form of C++
+ cast possible like const_cast<char *>(s). Use static_cast and const_cast
+ where possible rather than reinterpret_cast. Because the code is compiled with
+ run-time type information turned off, dynamic_cast will not work.
+
+
+ The benefit to using the new style casts is that they explicitly detail what evil is
+ occurring and act as signals that something potentially unsafe is being done.
+
+
+ Code that treats const seriously is easier to reason about both for humans
+ and compilers, so use const parameters and avoid const_cast.
+
+
+ Warnings
+
+
+ To help ensure code is well written and portable, it is compiled with almost all
+ warnings turned on. This sometimes results in warnings about code that is
+ completely good (false positives) but changing the code to avoid the warnings
+ is generally fast and has little impact on readability.
+
+
+ Initialise all variables and minimise the scope of variables. If a variable is defined
+ just before its use then it can't be misused by code before that point.
+ Use loop declarations that are compatible with both the C++ standard and currently
+ available compilers.
+
+
+ Allocation
+
+
+ As exceptions are not used, memory exhaustion can occur.
+ This should be checked for and handled but there is quite a lot of Scintilla and
+ SciTE code that doesn't yet.
+ Fixed length buffers are often used as these are simple and avoid the need to
+ worry about memory exhaustion but then require that buffer lengths are
+ respected.
+
+
+ The C++ new and delete operators are preferred over C's malloc and free
+ as new and delete are type safe.
+
+
+ Bracketing
+
+
+ Start brackets, '{', should be located on the line of the control structure they
+ start and end brackets, '}', should be at the indented start of a line. When there is
+ an else clause, this occurs on the same line as the '}'.
+ This format uses less lines than alternatives, allowing more code to be seen on screen.
+ Fully bracketed control
+ structures are preferred because this makes it more likely that modifications will
+ be correct and it allows Scintilla's folder to work. No braces on returned
+ expressions as return is a keyword, not a function call.
+
+bool fn(int a) {
+ if (a) {
+ s();
+ t();
+ } else {
+ u();
+ }
+ return !a;
+}
+
+ Spacing
+
+
+ Spaces on both sides of '=' and comparison operators and no attempt to line up '='.
+ No space before or after '(', when used in calls, but a space after every ','.
+ No spaces between tokens in short expressions but may be present in
+ longer expressions. Space before '{'. No space before ';'.
+ No space after '*' when used to mean pointer and no space after '[' or ']'.
+ One space between keywords and '('.
+
+void StoreConditionally(int c, const char *s) {
+ if (c && (baseSegment == trustSegment["html"])) {
+ baseSegment = s+1;
+ Store(s, baseSegment, "html");
+ }
+}
+
+ Names
+
+
+ Identifiers use mixed case and no underscores.
+ Class, function and method names start with an uppercase letter and use
+ further upper case letters to distinguish words. Variables start with a lower
+ case letter and use upper case letters to distinguish words.
+ Loop counters and similar variables can have simple names like 'i'.
+ Function calls should be differentiated from method calls with an initial '::'
+ global scope modifier.
+
+class StorageZone {
+public:
+ void Store(const char *s) {
+ Media *mediaStore = ::GetBaseMedia(zoneDefault);
+ for (int i=mediaStore->cursor; mediaStore[i], i++) {
+ mediaStore->Persist(s[i]);
+ }
+ }
+};
+
+
diff --git a/doc/other/SciRest.jpg b/doc/other/SciRest.jpg
new file mode 100644
index 0000000..4b05223
Binary files /dev/null and b/doc/other/SciRest.jpg differ
diff --git a/doc/other/SciTEIco.png b/doc/other/SciTEIco.png
new file mode 100644
index 0000000..e43be73
Binary files /dev/null and b/doc/other/SciTEIco.png differ
diff --git a/doc/other/SciWord.jpg b/doc/other/SciWord.jpg
new file mode 100644
index 0000000..60e70e8
Binary files /dev/null and b/doc/other/SciWord.jpg differ
diff --git a/doc/other/ScintillaDoc.html b/doc/other/ScintillaDoc.html
new file mode 100644
index 0000000..3767b3b
--- /dev/null
+++ b/doc/other/ScintillaDoc.html
@@ -0,0 +1,5350 @@
+
+
+
+
+
+
+
+
+
+ Scintilla and SciTE
+
+
+
+
+
+
+
+ Scintilla Documentation
+
+ Last edited 4/February/2006 NH
+
+ There is an overview of the internal design of
+ Scintilla.
+ Some notes on using Scintilla.
+ How to use the Scintilla Edit Control on Windows.
+ A simple sample using Scintilla from
+ C++ on Windows.
+ A simple sample using Scintilla from
+ Visual Basic.
+ Bait is a tiny sample using Scintilla
+ on GTK+.
+ A detailed description of how to write a lexer, including a
+ discussion of folding.
+
+ How to implement a lexer in the container.
+
+ How to implement folding.
+ The coding style used in Scintilla and SciTE is
+ worth following if you want to contribute code to Scintilla but is not compulsory.
+
+ Introduction
+
+ The Windows version of Scintilla is a Windows Control. As such, its primary programming
+ interface is through Windows messages. Early versions of Scintilla emulated much of the API
+ defined by the standard Windows Edit and RichEdit controls but those APIs are now deprecated in
+ favour of Scintilla's own, more consistent API. In addition to messages performing the actions
+ of a normal Edit control, Scintilla allows control of syntax styling, folding, markers, autocompletion
+ and call tips.
+
+ The GTK+ version also uses messages in a similar way to the Windows version. This is
+ different to normal GTK+ practice but made it easier to implement rapidly.
+
+ This documentation describes the individual messages and notifications used by Scintilla. It
+ does not describe how to link them together to form a useful editor. For now, the best way to
+ work out how to develop using Scintilla is to see how SciTE uses it. SciTE exercises most of
+ Scintilla's facilities.
+
+ In the descriptions that follow, the messages are described as function calls with zero, one
+ or two arguments. These two arguments are the standard wParam and
+ lParam familiar to Windows programmers. These parameters are integers that
+ are large enough to hold pointers, and the return value is also an integer large enough to contain a
+ pointer.
+ Although the commands only use the
+ arguments described, because all messages have two arguments whether Scintilla uses them or
+ not, it is strongly recommended that any unused arguments are set to 0. This allows future
+ enhancement of messages without the risk of breaking existing code. Common argument types
+ are:
+
+
+
+
+ | bool |
+
+ Arguments expect the values 0 for false and 1 for
+ true. |
+
+
+
+ | int |
+
+ Arguments are 32-bit signed integers. |
+
+
+
+ | const char * |
+
+ Arguments point at text that is being passed to Scintilla but not modified. The text
+ may be zero terminated or another argument may specify the character count, the
+ description will make this clear. |
+
+
+
+ | char * |
+
+ Arguments point at text buffers that Scintilla will fill with text. In some cases,
+ another argument will tell Scintilla the buffer size. In others, you must make sure that
+ the buffer is big enough to hold the requested text. If a NULL pointer (0) is passed
+ then, for SCI_* calls, the length that should be allocated is returned. |
+
+
+
+ | colour |
+
+ Colours are set using the RGB format (Red, Green, Blue). The intensity of each colour
+ is set in the range 0 to 255. If you have three such intensities, they are combined as:
+ red | (green << 8) | (blue << 16). If you set all intensities to 255, the
+ colour is white. If you set all intensities to 0, the colour is black. When you set a
+ colour, you are making a request. What you will get depends on the capabilities of the
+ system and the current screen mode. |
+
+
+
+ | alpha |
+
+ Translucency is set using an alpha value.
+ Alpha ranges from 0 (SC_ALPHA_TRANSPARENT) which is completely transparent to
+ 255 (SC_ALPHA_OPAQUE) which is opaque. The value 256 (SC_ALPHA_NOALPHA)
+ is opaque and uses code that is not alpha-aware and may be faster. Not all platforms support
+ translucency and only some Scintilla features implement translucency.
+ The default alpha value for most features is SC_ALPHA_NOALPHA. |
+
+
+
+ | <unused> |
+
+ This is an unused argument. Setting it to 0 will ensure compatibility with future
+ enhancements. |
+
+
+
+
+ Contents
+
+
+
+ Messages with names of the form SCI_SETxxxxx often have a companion
+ SCI_GETxxxxx. To save tedious repetition, if the SCI_GETxxxxx message
+ returns the value set by the SCI_SETxxxxx message, the SET routine is
+ described and the GET routine is left to your imagination.
+
+ Text retrieval and modification
+
+ Each character in a Scintilla document is followed by an associated byte of styling
+ information. The combination of a character byte and a style byte is called a cell. Style bytes
+ are interpreted as a style index in the low 5 bits and as 3 individual bits of indicators. This allows 32 fundamental styles, which is enough for most
+ languages, and three independent indicators so that, for example, syntax errors, deprecated
+ names and bad indentation could all be displayed at once. The number of bits used for styles
+ can be altered with SCI_SETSTYLEBITS up to a maximum of 7 bits.
+ The remaining bits can be used for indicators.
+
+ Positions within the Scintilla document refer to a character or the gap before that
+ character. The first character in a document is 0, the second 1 and so on. If a document
+ contains nLen characters, the last character is numbered nLen-1.
+ The caret exists between character positions and can be located from before the first character (0)
+ to after the last character (nLen).
+
+ There are places where the caret can not go where two character bytes make up one character.
+ This occurs when a DBCS character from a language like Japanese is included in the document or
+ when line ends are marked with the CP/M standard of a carriage return followed by a line feed.
+ The INVALID_POSITION constant (-1) represents an invalid position within the
+ document.
+
+ All lines of text in Scintilla are the same height, and this height is calculated from the
+ largest font in any current style. This restriction is for performance; if lines differed in
+ height then calculations involving positioning of text would require the text to be styled
+ first.
+ SCI_GETTEXT(int length, char *text)
+ SCI_SETTEXT(<unused>, const char *text)
+ SCI_SETSAVEPOINT
+ SCI_GETLINE(int line, char *text)
+ SCI_REPLACESEL(<unused>, const char
+ *text)
+ SCI_SETREADONLY(bool readOnly)
+ SCI_GETREADONLY
+ SCI_GETTEXTRANGE(<unused>, TextRange
+ *tr)
+ SCI_ALLOCATE(int bytes, <unused>)
+ SCI_ADDTEXT(int length, const char *s)
+ SCI_ADDSTYLEDTEXT(int length, cell *s)
+ SCI_APPENDTEXT(int length, const char *s)
+ SCI_INSERTTEXT(int pos, const char *text)
+ SCI_CLEARALL
+ SCI_CLEARDOCUMENTSTYLE
+ SCI_GETCHARAT(int position)
+ SCI_GETSTYLEAT(int position)
+ SCI_GETSTYLEDTEXT(<unused>, TextRange
+ *tr)
+ SCI_SETSTYLEBITS(int bits)
+ SCI_GETSTYLEBITS
+ SCI_TARGETASUTF8(<unused>, char *s)
+ SCI_ENCODEDFROMUTF8(const char *utf8, char *encoded)
+ SCI_SETLENGTHFORENCODE(int bytes)
+
+
+ SCI_GETTEXT(int length, char *text)
+ This returns length-1 characters of text from the start of the document plus one
+ terminating 0 character. To collect all the text in a document, use SCI_GETLENGTH
+ to get the number of characters in the document (nLen), allocate a character
+ buffer of length nLen+1 bytes, then call SCI_GETTEXT(nLen+1, char
+ *text). If the text argument is 0 then the length that should be allocated to store the
+ entire document is returned.
+ If you then save the text, you should use SCI_SETSAVEPOINT to mark
+ the text as unmodified.
+
+ See also: SCI_GETSELTEXT, SCI_GETCURLINE, SCI_GETLINE, SCI_GETSTYLEDTEXT, SCI_GETTEXTRANGE
+
+ SCI_SETTEXT(<unused>, const char *text)
+ This replaces all the text in the document with the zero terminated text string you pass
+ in.
+
+ SCI_SETSAVEPOINT
+ This message tells Scintilla that the current state of the document is unmodified. This is
+ usually done when the file is saved or loaded, hence the name "save point". As Scintilla
+ performs undo and redo operations, it notifies the container that it has entered or left the
+ save point with SCN_SAVEPOINTREACHED and SCN_SAVEPOINTLEFT notification messages, allowing the container to know if the file
+ should be considered dirty or not.
+
+ See also: SCI_EMPTYUNDOBUFFER, SCI_GETMODIFY
+
+ SCI_GETLINE(int line, char *text)
+ This fills the buffer defined by text with the contents of the nominated line (lines start at
+ 0). The buffer is not terminated by a 0 character. It is up to you to make sure that the buffer
+ is long enough for the text, use SCI_LINELENGTH(int line). The returned value is the
+ number of characters copied to the buffer. The returned text includes any end of line
+ characters. If you ask for a line number outside the range of lines in the document, 0
+ characters are copied. If the text argument is 0 then the length that should be allocated
+ to store the entire line is returned.
+
+ See also: SCI_GETCURLINE, SCI_GETSELTEXT, SCI_GETTEXTRANGE, SCI_GETSTYLEDTEXT, SCI_GETTEXT
+
+ SCI_REPLACESEL(<unused>, const char *text)
+ The currently selected text between the anchor
+ and the current position is replaced by the 0 terminated text string. If the anchor and
+ current position are the same, the text is inserted at the caret position. The caret is
+ positioned after the inserted text and the caret is scrolled into view.
+
+ SCI_SETREADONLY(bool readOnly)
+ SCI_GETREADONLY
+ These messages set and get the read-only flag for the document. If you mark a document as read
+ only, attempts to modify the text cause the SCN_MODIFYATTEMPTRO notification.
+
+
+ This collects the text between the positions cpMin and cpMax and
+ copies it to lpstrText (see struct TextRange in
+ Scintilla.h). If cpMax is -1, text is returned to the end of the
+ document. The text is 0 terminated, so you must supply a buffer that is at least 1 character
+ longer than the number of characters you wish to read. The return value is the length of the
+ returned text not including the terminating 0.
+
+ See also: SCI_GETSELTEXT, SCI_GETLINE, SCI_GETCURLINE, SCI_GETSTYLEDTEXT, SCI_GETTEXT
+
+ SCI_GETSTYLEDTEXT(<unused>, TextRange *tr)
+ This collects styled text into a buffer using two bytes for each cell, with the character at
+ the lower address of each pair and the style byte at the upper address. Characters between the
+ positions cpMin and cpMax are copied to lpstrText (see
+ struct TextRange in Scintilla.h). Two 0 bytes are added to the end of
+ the text, so the buffer that lpstrText points at must be at least
+ 2*(cpMax-cpMin)+2 bytes long. No check is made for sensible values of
+ cpMin or cpMax. Positions outside the document return character codes
+ and style bytes of 0.
+
+ See also: SCI_GETSELTEXT, SCI_GETLINE, SCI_GETCURLINE, SCI_GETTEXTRANGE, SCI_GETTEXT
+
+ SCI_ALLOCATE(int bytes, <unused>)
+ Allocate a document buffer large enough to store a given number of bytes.
+ The document will not be made smaller than its current contents.
+
+ SCI_ADDTEXT(int length, const char *s)
+ This inserts the first length characters from the string s
+ at the current position. This will include any 0's in the string that you might have expected
+ to stop the insert operation. The current position is set at the end of the inserted text,
+ but it is not scrolled into view.
+
+ SCI_ADDSTYLEDTEXT(int length, cell *s)
+ This behaves just like SCI_ADDTEXT, but inserts styled text.
+
+ SCI_APPENDTEXT(int length, const char *s)
+ This adds the first length characters from the string s to the end
+ of the document. This will include any 0's in the string that you might have expected to stop
+ the operation. The current selection is not changed and the new text is not scrolled into
+ view.
+
+ SCI_INSERTTEXT(int pos, const char *text)
+ This inserts the zero terminated text string at position pos or at
+ the current position if pos is -1. If the current position is after the insertion point
+ then it is moved along with its surrounding text but no scrolling is performed.
+
+ SCI_CLEARALL
+ Unless the document is read-only, this deletes all the text.
+
+ SCI_CLEARDOCUMENTSTYLE
+ When wanting to completely restyle the document, for example after choosing a lexer, the
+ SCI_CLEARDOCUMENTSTYLE can be used to clear all styling information and reset the
+ folding state.
+
+ SCI_GETCHARAT(int pos)
+ This returns the character at pos in the document or 0 if pos is
+ negative or past the end of the document.
+
+ SCI_GETSTYLEAT(int pos)
+ This returns the style at pos in the document, or 0 if pos is
+ negative or past the end of the document.
+
+ SCI_SETSTYLEBITS(int bits)
+ SCI_GETSTYLEBITS
+ This pair of routines sets and reads back the number of bits in each cell to use for styling,
+ to a maximum of 7 style bits. The remaining bits can be used as indicators. The standard
+ setting is SCI_SETSTYLEBITS(5).
+ The number of styling bits needed by the current lexer can be found with
+ SCI_GETSTYLEBITSNEEDED.
+
+ and CharacterRange
+ These structures are defined to be exactly the same shape as the Win32 TEXTRANGE
+ and CHARRANGE, so that older code that treats Scintilla as a RichEdit will
+ work.
+
+struct CharacterRange {
+ long cpMin;
+ long cpMax;
+};
+
+struct TextRange {
+ struct CharacterRange chrg;
+ char *lpstrText;
+};
+
+
+ GTK+-specific: Access to encoded text
+
+ SCI_TARGETASUTF8(<unused>, char *s)
+ This method retrieves the value of the target encoded as UTF-8 which is the default
+ encoding of GTK+ so is useful for retrieving text for use in other parts of the user interface,
+ such as find and replace dialogs. The length of the encoded text in bytes is returned.
+
+
+ SCI_ENCODEDFROMUTF8(const char *utf8, char *encoded)
+ SCI_SETLENGTHFORENCODE(int bytes)
+ SCI_ENCODEDFROMUTF8 converts a UTF-8 string into the document's
+ encoding which is useful for taking the results of a find dialog, for example, and receiving
+ a string of bytes that can be searched for in the document. Since the text can contain nul bytes,
+ the SCI_SETLENGTHFORENCODE method can be used to set the
+ length that will be converted. If set to -1, the length is determined by finding a nul byte.
+ The length of the converted string is returned.
+
+
+
+ Searching
+ SCI_FINDTEXT(int flags, TextToFind
+ *ttf)
+ SCI_SEARCHANCHOR
+ SCI_SEARCHNEXT(int searchFlags, const char
+ *text)
+ SCI_SEARCHPREV(int searchFlags, const char
+ *text)
+ Search and replace using the
+ target
+
+
+ searchFlags
+ Several of the search routines use flag options, which include a simple regular expression
+ search. Combine the flag options by adding them:
+
+
+
+
+ SCFIND_MATCHCASE |
+
+ A match only occurs with text that matches the case of the search string. |
+
+
+
+ SCFIND_WHOLEWORD |
+
+ A match only occurs if the characters before and after are not word characters. |
+
+
+
+ SCFIND_WORDSTART |
+
+ A match only occurs if the character before is not a word character. |
+
+
+
+ SCFIND_REGEXP |
+
+ The search string should be interpreted as a regular expression. |
+
+
+ SCFIND_POSIX |
+
+ Treat regular expression in a more POSIX compatible manner
+ by interpreting bare ( and ) for tagged sections rather than \( and \). |
+
+
+
+
+ If SCFIND_REGEXP is not included in the searchFlags, you can
+ search backwards to find the previous occurrence of a search string by setting the end of the
+ search range before the start. If SCFIND_REGEXP is included, searches are always
+ from a lower position to a higher position, even if the search range is backwards.
+
+ In a regular expression, special characters interpreted are:
+
+
+
+
+ . |
+
+ Matches any character |
+
+
+
+ \( |
+
+ This marks the start of a region for tagging a match. |
+
+
+
+ \) |
+
+ This marks the end of a tagged region. |
+
+
+
+ \n |
+
+ Where n is 1 through 9 refers to the first through ninth tagged region
+ when replacing. For example, if the search string was Fred\([1-9]\)XXX and
+ the replace string was Sam\1YYY, when applied to Fred2XXX this
+ would generate Sam2YYY. |
+
+
+
+ \< |
+
+ This matches the start of a word using Scintilla's definitions of words. |
+
+
+
+ | \> |
+
+ This matches the end of a word using Scintilla's definition of words. |
+
+
+
+ \x |
+
+ This allows you to use a character x that would otherwise have a special meaning. For
+ example, \[ would be interpreted as [ and not as the start of a character set. |
+
+
+
+ [...] |
+
+ This indicates a set of characters, for example, [abc] means any of the characters a,
+ b or c. You can also use ranges, for example [a-z] for any lower case character. |
+
+
+
+ [^...] |
+
+ The complement of the characters in the set. For example, [^A-Za-z] means any
+ character except an alphabetic character. |
+
+
+
+ ^ |
+
+ This matches the start of a line (unless used inside a set, see above). |
+
+
+
+ $ |
+
+ This matches the end of a line. |
+
+
+
+ * |
+
+ This matches 0 or more times. For example, Sa*m matches Sm,
+ Sam, Saam, Saaam and so on. |
+
+
+
+ + |
+
+ This matches 1 or more times. For example, Sa+m matches
+ Sam, Saam, Saaam and so on. |
+
+
+
+
+ SCI_FINDTEXT(int searchFlags, TextToFind *ttf)
+ This message searches for text in the document. It does not use or move the current selection.
+ The searchFlags argument controls the
+ search type, which includes regular expression searches.
+
+ The TextToFind structure is defined in Scintilla.h; set
+ chrg.cpMin and chrg.cpMax with the range of positions in the document
+ to search. If SCFIND_REGEXP is not included in the flags, you can search backwards by
+ setting chrg.cpMax less than chrg.cpMin. If SCFIND_REGEXP
+ is included, the search is always forwards (even if chrg.cpMax is less than chrg.cpMin).
+ Set the lpstrText member of TextToFind to point at a zero terminated
+ text string holding the search pattern. If your language makes the use of TextToFind
+ difficult, you should consider using SCI_SEARCHINTARGET instead.
+
+ The return value is -1 if the search fails or the position of the start of the found text if
+ it succeeds. The chrgText.cpMin and chrgText.cpMax members of
+ TextToFind are filled in with the start and end positions of the found text.
+
+ See also: SCI_SEARCHINTARGET
+
+ TextToFind
+ This structure is defined to have exactly the same shape as the Win32 structure
+ FINDTEXTEX for old code that treated Scintilla as a RichEdit control.
+
+struct TextToFind {
+ struct CharacterRange chrg; // range to search
+ char *lpstrText; // the search pattern (zero terminated)
+ struct CharacterRange chrgText; // returned as position of matching text
+};
+
+
+ SCI_SEARCHANCHOR
+ SCI_SEARCHNEXT(int searchFlags, const char *text)
+ SCI_SEARCHPREV(int searchFlags, const char *text)
+ These messages provide relocatable search support. 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. These three messages send SCN_MACRORECORD notifications if macro recording is enabled.
+
+ SCI_SEARCHANCHOR sets the search start point used by
+ SCI_SEARCHNEXT and SCI_SEARCHPREV to the start of the current
+ selection, that is, the end of the selection that is nearer to the start of the document. You
+ should always call this before calling either of SCI_SEARCHNEXT or
+ SCI_SEARCHPREV.
+
+ SCI_SEARCHNEXT and SCI_SEARCHPREV search for the next and previous
+ occurrence of the zero terminated search string pointed at by text. The search is modified by
+ the searchFlags. If you request a regular
+ expression, SCI_SEARCHPREV finds the first occurrence of the search string in the
+ document, not the previous one before the anchor point.
+
+ The return value is -1 if nothing is found, otherwise the return value is the start position
+ of the matching text. The selection is updated to show the matched text, but is not scrolled
+ into view.
+
+ See also: SCI_SEARCHINTARGET,
+ SCI_FINDTEXT
+
+ Search and replace using the target
+
+ Using SCI_REPLACESEL,
+ modifications cause scrolling and other visible changes, which may take some time and cause
+ unwanted display updates. If performing many changes, such as a replace all command, the target
+ can be used instead. First, set the target, ie. the range to be replaced. Then call
+ SCI_REPLACETARGET or SCI_REPLACETARGETRE.
+
+ Searching can be performed within the target range with SCI_SEARCHINTARGET,
+ which uses a counted string to allow searching for null characters. It returns the length of
+ range or -1 for failure, in which case the target is not moved. The flags used by
+ SCI_SEARCHINTARGET such as SCFIND_MATCHCASE,
+ SCFIND_WHOLEWORD, SCFIND_WORDSTART, and SCFIND_REGEXP
+ can be set with SCI_SETSEARCHFLAGS. SCI_SEARCHINTARGET may be simpler
+ for some clients to use than SCI_FINDTEXT, as that requires using a pointer to a
+ structure.
+ SCI_SETTARGETSTART(int pos)
+ SCI_GETTARGETSTART
+ SCI_SETTARGETEND(int pos)
+ SCI_GETTARGETEND
+ SCI_TARGETFROMSELECTION
+ SCI_SETSEARCHFLAGS(int searchFlags)
+ SCI_GETSEARCHFLAGS
+ SCI_SEARCHINTARGET(int length, const char
+ *text)
+ SCI_REPLACETARGET(int length, const char
+ *text)
+ SCI_REPLACETARGETRE(int length, const char
+ *text)
+
+
+ SCI_SETTARGETSTART(int pos)
+ SCI_GETTARGETSTART
+ SCI_SETTARGETEND(int pos)
+ SCI_GETTARGETEND
+ These functions set and return the start and end of the target. When searching in non-regular
+ expression mode, you can set start greater than end to find the last matching text in the
+ target rather than the first matching text. The target is also set by a successful
+ SCI_SEARCHINTARGET.
+
+ SCI_TARGETFROMSELECTION
+ Set the target start and end to the start and end positions of the selection.
+
+ SCI_SETSEARCHFLAGS(int searchFlags)
+ SCI_GETSEARCHFLAGS
+ These get and set the searchFlags used by
+ SCI_SEARCHINTARGET. There are several option flags including a simple regular
+ expression search.
+
+ SCI_SEARCHINTARGET(int length, const char *text)
+ This searches for the first occurrence of a text string in the target defined by
+ SCI_SETTARGETSTART and SCI_SETTARGETEND. The text string is not zero
+ terminated; the size is set by length. The search is modified by the search flags
+ set by SCI_SETSEARCHFLAGS. If the search succeeds, the target is set to the found
+ text and the return value is the position of the start of the matching text. If the search
+ fails, the result is -1.
+
+ SCI_REPLACETARGET(int length, const char *text)
+ If length is -1, text is a zero terminated string, otherwise
+ length sets the number of character to replace the target with.
+ After replacement, the target range refers to the replacement text.
+ The return value
+ is the length of the replacement string.
+ Note that the recommended way to delete text in the document is to set the target to the text to be removed,
+ and to perform a replace target with an empty string.
+
+ SCI_REPLACETARGETRE(int length, const char *text)
+ This replaces the target using regular expressions. If length is -1,
+ text is a zero terminated string, otherwise length is the number of
+ characters to use. The replacement string is formed from the text string with any sequences of
+ \1 through \9 replaced by tagged matches from the most recent regular
+ expression search.
+ After replacement, the target range refers to the replacement text.
+ The return value is the length of the replacement string.
+
+ See also: SCI_FINDTEXT
+
+ Overtype
+
+ SCI_SETOVERTYPE(bool overType)
+ SCI_GETOVERTYPE
+ When overtype is enabled, each typed character replaces the character to the right of the text
+ caret. When overtype is disabled, characters are inserted at the caret.
+ SCI_GETOVERTYPE returns TRUE (1) if overtyping is active, otherwise
+ FALSE (0) will be returned. Use SCI_SETOVERTYPE to set the overtype
+ mode.
+
+ Cut, copy and paste
+
+ SCI_CUT
+ SCI_COPY
+ SCI_PASTE
+ SCI_CLEAR
+ SCI_CANPASTE
+ SCI_COPYRANGE(int start, int end)
+ SCI_COPYTEXT(int length,
+ const char *text)
+ SCI_SETPASTECONVERTENDINGS(bool convert)
+ SCI_GETPASTECONVERTENDINGS
+
+
+ SCI_CUT
+ SCI_COPY
+ SCI_PASTE
+ SCI_CLEAR
+ SCI_CANPASTE
+ These commands perform the standard tasks of cutting and copying data to the clipboard,
+ pasting from the clipboard into the document, and clearing the document.
+ SCI_CANPASTE returns non-zero if the document isn't read-only and if the selection
+ doesn't contain protected text. If you need a "can copy" or "can cut", use
+ SCI_GETSELECTIONSTART()-SCI_GETSELECTIONEND(), which will be non-zero if you can
+ copy or cut to the clipboard.
+
+ GTK+ does not really support SCI_CANPASTE and always returns TRUE
+ unless the document is read-only.
+
+ On X, the clipboard is asynchronous and may require several messages between
+ the destination and source applications. Data from SCI_PASTE will not arrive in the
+ document immediately.
+
+ SCI_COPYRANGE(int start, int end)
+ SCI_COPYTEXT(int length, const char *text)
+ SCI_COPYRANGE copies a range of text from the document to
+ the system clipboard and SCI_COPYTEXT copies a supplied piece of
+ text to the system clipboard.
+
+ SCI_SETPASTECONVERTENDINGS(bool convert)
+ SCI_GETPASTECONVERTENDINGS
+ If this property is set then when text is pasted any line ends are converted to match the document's
+ end of line mode as set with
+ SCI_SETEOLMODE.
+ Currently only changeable on Windows. On GTK+ pasted text is always converted.
+
+ Error handling
+
+ SCI_SETSTATUS(int status)
+ SCI_GETSTATUS
+ If an error occurs, Scintilla may set an internal error number that can be retrieved with
+ SCI_GETSTATUS. Not currently used but will be in the future. To clear the error
+ status call SCI_SETSTATUS(0).
+
+ Undo and Redo
+
+ Scintilla has multiple level undo and redo. It will continue to collect undoable actions
+ until memory runs out. Scintilla saves actions that change the document. Scintilla does not
+ save caret and selection movements, view scrolling and the like. Sequences of typing or
+ deleting are compressed into single actions to make it easier to undo and redo at a sensible
+ level of detail. Sequences of actions can be combined into actions that are undone as a unit.
+ These sequences occur between SCI_BEGINUNDOACTION and
+ SCI_ENDUNDOACTION messages. These sequences can be nested and only the top-level
+ sequences are undone as units.
+ SCI_UNDO
+ SCI_CANUNDO
+ SCI_EMPTYUNDOBUFFER
+ SCI_REDO
+ SCI_CANREDO
+ SCI_SETUNDOCOLLECTION(bool
+ collectUndo)
+ SCI_GETUNDOCOLLECTION
+ SCI_BEGINUNDOACTION
+ SCI_ENDUNDOACTION
+
+
+ SCI_UNDO
+ SCI_CANUNDO
+ SCI_UNDO undoes one action, or if the undo buffer has reached a
+ SCI_ENDUNDOACTION point, all the actions back to the corresponding
+ SCI_BEGINUNDOACTION.
+
+ SCI_CANUNDO returns 0 if there is nothing to undo, and 1 if there is. You would
+ typically use the result of this message to enable/disable the Edit menu Undo command.
+
+ SCI_REDO
+ SCI_CANREDO
+ SCI_REDO undoes the effect of the last SCI_UNDO operation.
+
+ SCI_CANREDO returns 0 if there is no action to redo and 1 if there are undo
+ actions to redo. You could typically use the result of this message to enable/disable the Edit
+ menu Redo command.
+
+ SCI_EMPTYUNDOBUFFER
+ This command tells Scintilla to forget any saved undo or redo history. It also sets the save
+ point to the start of the undo buffer, so the document will appear to be unmodified. This does
+ not cause the SCN_SAVEPOINTREACHED notification to be sent to the
+ container.
+
+ See also: SCI_SETSAVEPOINT
+
+ SCI_SETUNDOCOLLECTION(bool collectUndo)
+ SCI_GETUNDOCOLLECTION
+ You can control whether Scintilla collects undo information with
+ SCI_SETUNDOCOLLECTION. Pass in true (1) to collect information and
+ false (0) to stop collecting. If you stop collection, you should also use
+ SCI_EMPTYUNDOBUFFER to avoid the undo buffer being unsynchronized with the data in
+ the buffer.
+
+ You might wish to turn off saving undo information if you use the Scintilla to store text
+ generated by a program (a Log view) or in a display window where text is often deleted and
+ regenerated.
+
+ SCI_BEGINUNDOACTION
+ SCI_ENDUNDOACTION
+ Send these two messages to Scintilla to mark the beginning and end of a set of operations that
+ you want to undo all as one operation but that you have to generate as several operations.
+ Alternatively, you can use these to mark a set of operations that you do not want to have
+ combined with the preceding or following operations if they are undone.
+
+
+
+ Scintilla maintains a selection that stretches between two points, the anchor and the
+ current position. If the anchor and the current position are the same, there is no selected
+ text. Positions in the document range from 0 (before the first character), to the document size
+ (after the last character). If you use messages, there is nothing to stop you setting a
+ position that is in the middle of a CRLF pair, or in the middle of a 2 byte character. However,
+ keyboard commands will not move the caret into such positions.
+ SCI_GETTEXTLENGTH
+ SCI_GETLENGTH
+ SCI_GETLINECOUNT
+ SCI_GETFIRSTVISIBLELINE
+ SCI_LINESONSCREEN
+ SCI_GETMODIFY
+ SCI_SETSEL(int anchorPos, int currentPos)
+ SCI_GOTOPOS(int position)
+ SCI_GOTOLINE(int line)
+ SCI_SETCURRENTPOS(int position)
+ SCI_GETCURRENTPOS
+ SCI_SETANCHOR(int position)
+ SCI_GETANCHOR
+ SCI_SETSELECTIONSTART(int position)
+ SCI_GETSELECTIONSTART
+ SCI_SETSELECTIONEND(int position)
+ SCI_GETSELECTIONEND
+ SCI_SELECTALL
+ SCI_LINEFROMPOSITION(int position)
+ SCI_POSITIONFROMLINE(int line)
+ SCI_GETLINEENDPOSITION(int line)
+ SCI_LINELENGTH(int line)
+ SCI_GETCOLUMN(int position)
+ SCI_FINDCOLUMN(int line, int column)
+ SCI_POSITIONFROMPOINT(int x, int y)
+ SCI_POSITIONFROMPOINTCLOSE(int x, int
+ y)
+ SCI_POINTXFROMPOSITION(<unused>, int
+ position)
+ SCI_POINTYFROMPOSITION(<unused>, int
+ position)
+ SCI_HIDESELECTION(bool hide)
+ SCI_GETSELTEXT(<unused>, char *text)
+ SCI_GETCURLINE(int textLen, char *text)
+ SCI_SELECTIONISRECTANGLE
+ SCI_SETSELECTIONMODE(int mode)
+ SCI_GETSELECTIONMODE
+ SCI_GETLINESELSTARTPOSITION(int line)
+ SCI_GETLINESELENDPOSITION(int line)
+ SCI_MOVECARETINSIDEVIEW
+ SCI_WORDENDPOSITION(int position, bool
+ onlyWordCharacters)
+ SCI_WORDSTARTPOSITION(int position, bool
+ onlyWordCharacters)
+ SCI_POSITIONBEFORE(int position)
+ SCI_POSITIONAFTER(int position)
+ SCI_TEXTWIDTH(int styleNumber, const char *text)
+ SCI_TEXTHEIGHT(int line)
+ SCI_CHOOSECARETX
+
+
+ SCI_GETTEXTLENGTH
+ SCI_GETLENGTH
+ Both these messages return the length of the document in characters.
+
+ SCI_GETLINECOUNT
+ This returns the number of lines in the document. An empty document contains 1 line. A
+ document holding only an end of line sequence has 2 lines.
+
+ SCI_GETFIRSTVISIBLELINE
+ This returns the line number of the first visible line in the Scintilla view. The first line
+ in the document is numbered 0. The value is a visible line rather than a document line.
+
+ SCI_LINESONSCREEN
+ This returns the number of complete lines visible on the screen. With a constant line height,
+ this is the vertical space available divided by the line separation. Unless you arrange to size
+ your window to an integral number of lines, there may be a partial line visible at the bottom
+ of the view.
+
+ SCI_GETMODIFY
+ This returns non-zero if the document is modified and 0 if it is unmodified. The modified
+ status of a document is determined by the undo position relative to the save point. The save
+ point is set by SCI_SETSAVEPOINT,
+ usually when you have saved data to a file.
+
+ If you need to be notified when the document becomes modified, Scintilla notifies the
+ container that it has entered or left the save point with the SCN_SAVEPOINTREACHED and SCN_SAVEPOINTLEFT notification messages.
+
+ SCI_SETSEL(int anchorPos, int currentPos)
+ This message sets both the anchor and the current position. If currentPos is
+ negative, it means the end of the document. If anchorPos is negative, it means
+ remove any selection (i.e. set the anchor to the same position as currentPos). The
+ caret is scrolled into view after this operation.
+
+ SCI_GOTOPOS(int pos)
+ This removes any selection, sets the caret at pos and scrolls the view to make
+ the caret visible, if necessary. It is equivalent to
+ SCI_SETSEL(pos, pos). The anchor position is set the same as the current
+ position.
+
+ SCI_GOTOLINE(int line)
+ This removes any selection and sets the caret at the start of line number line
+ and scrolls the view (if needed) to make it visible. The anchor position is set the same as the
+ current position. If line is outside the lines in the document (first line is 0),
+ the line set is the first or last.
+
+ SCI_SETCURRENTPOS(int pos)
+ This sets the current position and creates a selection between the anchor and the current
+ position. The caret is not scrolled into view.
+
+ See also: SCI_SCROLLCARET
+
+ SCI_GETCURRENTPOS
+ This returns the current position.
+
+ SCI_SETANCHOR(int pos)
+ This sets the anchor position and creates a selection between the anchor position and the
+ current position. The caret is not scrolled into view.
+
+ See also: SCI_SCROLLCARET
+
+ SCI_GETANCHOR
+ This returns the current anchor position.
+
+ SCI_SETSELECTIONSTART(int pos)
+ SCI_SETSELECTIONEND(int pos)
+ These set the selection based on the assumption that the anchor position is less than the
+ current position. They do not make the caret visible. The table shows the positions of the
+ anchor and the current position after using these messages.
+
+
+
+
+ |
+ |
+
+ anchor |
+
+ current |
+
+
+
+
+
+ SCI_SETSELECTIONSTART |
+
+ pos |
+
+ Max(pos, current) |
+
+
+
+ SCI_SETSELECTIONEND |
+
+ Min(anchor, pos) |
+
+ pos |
+
+
+
+
+ See also: SCI_SCROLLCARET
+
+ SCI_GETSELECTIONSTART
+ SCI_GETSELECTIONEND
+ These return the start and end of the selection without regard to which end is the current
+ position and which is the anchor. SCI_GETSELECTIONSTART returns the smaller of the
+ current position or the anchor position. SCI_GETSELECTIONEND returns the larger of
+ the two values.
+
+ SCI_SELECTALL
+ This selects all the text in the document. The current position is not scrolled into view.
+
+ SCI_LINEFROMPOSITION(int pos)
+ This message returns the line that contains the position pos in the document. The
+ return value is 0 if pos <= 0. The return value is the last line if
+ pos is beyond the end of the document.
+
+ SCI_POSITIONFROMLINE(int line)
+ This returns the document position that corresponds with the start of the line. If
+ line is negative, the position of the line holding the start of the selection is
+ returned. If line is greater than the lines in the document, the return value is
+ -1. If line is equal to the number of lines in the document (i.e. 1 line past the
+ last line), the return value is the end of the document.
+
+ SCI_GETLINEENDPOSITION(int line)
+ This returns the position at the end of the line, before any line end characters. If line
+ is the last line in the document (which does not have any end of line characters), the result is the size of the
+ document. If line is negative or line >= SCI_GETLINECOUNT(), the result is undefined.
+
+ SCI_LINELENGTH(int line)
+ This returns the length of the line, including any line end characters. If line
+ is negative or beyond the last line in the document, the result is 0. If you want the length of
+ the line not including any end of line characters, use SCI_GETLINEENDPOSITION(line) - SCI_POSITIONFROMLINE(line).
+ SCI_GETSELTEXT(<unused>, char *text)
+ This copies the currently selected text and a terminating 0 byte to the text
+ buffer. The buffer must be at least
+ SCI_GETSELECTIONEND()-SCI_GETSELECTIONSTART()+1 bytes long.
+ If the text argument is 0 then the length that should be allocated
+ to store the entire selection is returned.
+
+ See also: SCI_GETCURLINE, SCI_GETLINE, SCI_GETTEXT, SCI_GETSTYLEDTEXT, SCI_GETTEXTRANGE
+
+ SCI_GETCURLINE(int textLen, char *text)
+ This retrieves the text of the line containing the caret and returns the position within the
+ line of the caret. Pass in char* text pointing at a buffer large enough to hold
+ the text you wish to retrieve and a terminating 0 character.
+ Set textLen to the
+ length of the buffer which must be at least 1 to hold the terminating 0 character.
+ If the text argument is 0 then the length that should be allocated
+ to store the entire current line is returned.
+
+ See also: SCI_GETSELTEXT, SCI_GETLINE, SCI_GETTEXT, SCI_GETSTYLEDTEXT, SCI_GETTEXTRANGE
+
+ SCI_SELECTIONISRECTANGLE
+ This returns 1 if the current selection is in rectangle mode, 0 if not.
+
+ SCI_SETSELECTIONMODE(int mode)
+ SCI_GETSELECTIONMODE
+ The two functions set and get the selection mode, which can be
+ stream (SC_SEL_STREAM=0) or
+ rectangular (SC_SEL_RECTANGLE=1)
+ or by lines (SC_SEL_LINES=2).
+ When set in these modes, regular caret moves will extend or reduce the selection,
+ until the mode is cancelled by a call with same value or with SCI_CANCEL.
+ The get function returns the current mode even if the selection was made by mouse
+ or with regular extended moves.
+
+ SCI_GETLINESELSTARTPOSITION(int line)
+ SCI_GETLINESELENDPOSITION(int line)
+ Retrieve the position of the start and end of the selection at the given line with
+ INVALID_POSITION returned if no selection on this line.
+
+ SCI_MOVECARETINSIDEVIEW
+ If the caret is off the top or bottom of the view, it is moved to the nearest line that is
+ visible to its current position. Any selection is lost.
+
+ SCI_WORDENDPOSITION(int position, bool
+ onlyWordCharacters)
+ SCI_WORDSTARTPOSITION(int position, bool
+ onlyWordCharacters)
+ These messages return the start and end of words using the same definition of words as used
+ internally within Scintilla. You can set your own list of characters that count as words with
+ SCI_SETWORDCHARS. The position
+ sets the start or the search, which is forwards when searching for the end and backwards when
+ searching for the start.
+
+ Set onlyWordCharacters to true (1) to stop searching at the first
+ non-word character in the search direction. If onlyWordCharacters is
+ false (0), the first character in the search direction sets the type of the search
+ as word or non-word and the search stops at the first non-matching character. Searches are also
+ terminated by the start or end of the document.
+
+ If "w" represents word characters and "." represents non-word characters and "|" represents
+ the position and true or false is the state of
+ onlyWordCharacters:
+
+
+
+
+ | Initial state |
+
+ end, true |
+
+ end, false |
+
+ start, true |
+
+ start, false |
+
+
+
+
+
+ | ..ww..|..ww.. |
+
+ ..ww..|..ww.. |
+
+ ..ww....|ww.. |
+
+ ..ww..|..ww.. |
+
+ ..ww|....ww.. |
+
+
+
+ | ....ww|ww.... |
+
+ ....wwww|.... |
+
+ ....wwww|.... |
+
+ ....|wwww.... |
+
+ ....|wwww.... |
+
+
+
+ | ..ww|....ww.. |
+
+ ..ww|....ww.. |
+
+ ..ww....|ww.. |
+
+ ..|ww....ww.. |
+
+ ..|ww....ww.. |
+
+
+
+ | ..ww....|ww.. |
+
+ ..ww....ww|.. |
+
+ ..ww....ww|.. |
+
+ ..ww....|ww.. |
+
+ ..ww|....ww.. |
+
+
+
+
+ SCI_POSITIONBEFORE(int position)
+ SCI_POSITIONAFTER(int position)
+ These messages return the position before and after another position
+ in the document taking into account the current code page. The minimum
+ position returned is 0 and the maximum is the last position in the document.
+ If called with a position within a multi byte character will return the position
+ of the start/end of that character.
+
+ SCI_TEXTWIDTH(int styleNumber, const char *text)
+ This returns the pixel width of a string drawn in the given styleNumber which can
+ be used, for example, to decide how wide to make the line number margin in order to display a
+ given number of numerals.
+
+ SCI_TEXTHEIGHT(int line)
+ This returns the height in pixels of a particular line. Currently all lines are the same
+ height.
+
+ SCI_GETCOLUMN(int pos)
+ This message returns the column number of a position pos within the document
+ taking the width of tabs into account. This returns the column number of the last tab on the
+ line before pos, plus the number of characters between the last tab and
+ pos. If there are no tab characters on the line, the return value is the number of
+ characters up to the position on the line. In both cases, double byte characters count as a
+ single character. This is probably only useful with monospaced fonts.
+
+ SCI_FINDCOLUMN(int line, int column)
+ This message returns the position of a column on a line
+ taking the width of tabs into account. It treats a multi-byte character as a single column.
+ Column numbers, like lines start at 0.
+
+ SCI_POSITIONFROMPOINT(int x, int y)
+ SCI_POSITIONFROMPOINTCLOSE(int x, int y)
+ SCI_POSITIONFROMPOINT finds the closest character position to a point and
+ SCI_POSITIONFROMPOINTCLOSE is similar but returns -1 if the point is outside the
+ window or not close to any characters.
+
+ SCI_POINTXFROMPOSITION(<unused>, int pos)
+ SCI_POINTYFROMPOSITION(<unused>, int pos)
+ These messages return the x and y display pixel location of text at position pos
+ in the document.
+
+ SCI_HIDESELECTION(bool hide)
+ The normal state is to make the selection visible by drawing it as set by SCI_SETSELFORE and SCI_SETSELBACK. However, if you hide the selection, it
+ is drawn as normal text.
+
+ SCI_CHOOSECARETX
+ Scintilla remembers the x value of the last position horizontally moved to explicitly by the
+ user and this value is then used when moving vertically such as by using the up and down keys.
+ This message sets the current x position of the caret as the remembered value.
+
+
+ SCI_LINESCROLL(int column, int line)
+ SCI_SCROLLCARET
+ SCI_SETXCARETPOLICY(int caretPolicy, int
+ caretSlop)
+ SCI_SETYCARETPOLICY(int caretPolicy, int
+ caretSlop)
+ SCI_SETVISIBLEPOLICY(int caretPolicy, int
+ caretSlop)
+ SCI_SETHSCROLLBAR(bool visible)
+ SCI_GETHSCROLLBAR
+ SCI_SETVSCROLLBAR(bool visible)
+ SCI_GETVSCROLLBAR
+ SCI_GETXOFFSET
+ SCI_SETXOFFSET(int xOffset)
+ SCI_SETSCROLLWIDTH(int pixelWidth)
+ SCI_GETSCROLLWIDTH
+ SCI_SETENDATLASTLINE(bool
+ endAtLastLine)
+ SCI_GETENDATLASTLINE
+
+
+ SCI_LINESCROLL(int column, int line)
+ This will attempt to scroll the display by the number of columns and lines that you specify.
+ Positive line values increase the line number at the top of the screen (i.e. they move the text
+ upwards as far as the user is concerned), Negative line values do the reverse.
+
+ The column measure is the width of a space in the default style. Positive values increase
+ the column at the left edge of the view (i.e. they move the text leftwards as far as the user
+ is concerned). Negative values do the reverse.
+
+ See also: SCI_SETXOFFSET
+
+ SCI_SCROLLCARET
+ If the current position (this is the caret if there is no selection) is not visible, the view
+ is scrolled to make it visible according to the current caret policy.
+
+ SCI_SETXCARETPOLICY(int caretPolicy, int caretSlop)
+ SCI_SETYCARETPOLICY(int caretPolicy, int caretSlop)
+ These set the caret policy. The value of caretPolicy is a combination of
+ CARET_SLOP, CARET_STRICT, CARET_JUMPS and
+ CARET_EVEN.
+
+
+
+
+ CARET_SLOP |
+
+ If 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. This makes it
+ 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. |
+
+
+
+ CARET_STRICT |
+
+ If set, the policy set by CARET_SLOP is enforced... strictly. The caret
+ is centred on the display if caretSlop is not set, and cannot go in the UZ
+ if caretSlop is set. |
+
+
+
+ CARET_JUMPS |
+
+ If 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. |
+
+
+
+ CARET_EVEN |
+
+ If 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 beginning of lines, where most code reside, and the lines after the
+ caret, for example, the body of a function. |
+
+
+
+
+
+
+
+ | slop |
+
+ strict |
+
+ jumps |
+
+ even |
+
+ Caret can go to the margin |
+
+ On reaching limit (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 |
+
+ 0 |
+
+ No, kept out of UZ |
+
+ moved to put caret at 3UZ of the margin |
+
+
+
+
+ SCI_SETVISIBLEPOLICY(int caretPolicy, int caretSlop)
+ This determines how the vertical positioning is determined when SCI_ENSUREVISIBLEENFORCEPOLICY is
+ called. It takes VISIBLE_SLOP and VISIBLE_STRICT flags for the policy
+ parameter. It is similar in operation to SCI_SETYCARETPOLICY(int caretPolicy, int
+ caretSlop).
+
+ SCI_SETHSCROLLBAR(bool visible)
+ SCI_GETHSCROLLBAR
+ The horizontal scroll bar is only displayed if it is needed for the assumed width.
+ If you never wish to see it, call
+ SCI_SETHSCROLLBAR(0). Use SCI_SETHSCROLLBAR(1) to enable it again.
+ SCI_GETHSCROLLBAR returns the current state. The default state is to display it
+ when needed.
+ See also: SCI_SETSCROLLWIDTH.
+
+ SCI_SETVSCROLLBAR(bool visible)
+ SCI_GETVSCROLLBAR
+ By default, the vertical scroll bar is always displayed when required. You can choose to hide
+ or show it with SCI_SETVSCROLLBAR and get the current state with
+ SCI_GETVSCROLLBAR.
+
+ SCI_SETXOFFSET(int xOffset)
+ SCI_GETXOFFSET
+ The xOffset is the horizontal scroll position in pixels of the start of the text
+ view. A value of 0 is the normal position with the first text column visible at the left of the
+ view.
+
+ See also: SCI_LINESCROLL
+
+ SCI_SETSCROLLWIDTH(int pixelWidth)
+ SCI_GETSCROLLWIDTH
+ For performance, Scintilla does not measure the display width of the document to determine
+ the properties of the horizontal scroll bar. Instead, an assumed width is used.
+ These messages set and get the document width in pixels assumed by Scintilla.
+ The default value is 2000.
+
+ SCI_SETENDATLASTLINE(bool endAtLastLine)
+ SCI_GETENDATLASTLINE
+ SCI_SETENDATLASTLINE 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.
+
+ White space
+ SCI_SETVIEWWS(int wsMode)
+ SCI_GETVIEWWS
+ SCI_SETWHITESPACEFORE(bool
+ useWhitespaceForeColour, int colour)
+ SCI_SETWHITESPACEBACK(bool
+ useWhitespaceBackColour, int colour)
+
+
+ SCI_SETVIEWWS(int wsMode)
+ SCI_GETVIEWWS
+ White space can be made visible which may useful for languages in which white space is
+ significant, such as Python. Space characters appear as small centred dots and tab characters
+ as light arrows pointing to the right. There are also ways to control the display of end of line characters. The two messages set and get the
+ white space display mode. The wsMode argument can be one of:
+
+
+
+
+ SCWS_INVISIBLE |
+
+ 0 |
+
+ The normal display mode with white space displayed as an empty background
+ colour. |
+
+
+
+ SCWS_VISIBLEALWAYS |
+
+ 1 |
+
+ White space characters are drawn as dots and arrows, |
+
+
+
+ SCWS_VISIBLEAFTERINDENT |
+
+ 2 |
+
+ White space used for indentation is displayed normally but after the first visible
+ character, it is shown as dots and arrows. |
+
+
+
+
+ The effect of using any other wsMode value is undefined.
+
+ SCI_SETWHITESPACEFORE<(bool useWhitespaceForeColour, int colour)
+ SCI_SETWHITESPACEBACK(bool useWhitespaceBackColour, int colour)
+ By default, the colour of visible white space is determined by the lexer in use. The
+ foreground and/or background colour of all visible white space can be set globally, overriding
+ the lexer's colours with SCI_SETWHITESPACEFORE and
+ SCI_SETWHITESPACEBACK.
+
+ Cursor
+
+ SCI_SETCURSOR(int curType)
+ SCI_GETCURSOR
+ The cursor is normally chosen in a context sensitive way, so it will be different over the
+ margin than when over the text. When performing a slow action, you may wish to change to a wait
+ cursor. You set the cursor type with SCI_SETCURSOR. The curType
+ argument can be:
+
+
+
+
+ SC_CURSORNORMAL |
+
+ -1 |
+
+ The normal cursor is displayed. |
+
+
+
+ SC_CURSORWAIT |
+
+ 4 |
+
+ The wait cursor is displayed when the mouse is over or owned by the Scintilla
+ window. |
+
+
+
+
+ Cursor values 1 through 7 have defined cursors, but only SC_CURSORWAIT is
+ usefully controllable. Other values of curType cause a pointer to be displayed.
+ The SCI_GETCURSOR message returns the last cursor type you set, or
+ SC_CURSORNORMAL (-1) if you have not set a cursor type.
+
+ Mouse capture
+
+ SCI_SETMOUSEDOWNCAPTURES(bool captures)
+ SCI_GETMOUSEDOWNCAPTURES
+ When the mouse is pressed inside Scintilla, it is captured so future mouse movement events are
+ sent to Scintilla. This behavior may be turned off with
+ SCI_SETMOUSEDOWNCAPTURES(0).
+
+ Line endings
+
+ Scintilla can interpret any of the three major line end conventions, Macintosh (\r), Unix
+ (\n) and CP/M / DOS / Windows (\r\n). When the user presses the Enter key, one of these line
+ end strings is inserted into the buffer. The default is \r\n in Windows and \n in Unix, but
+ this can be changed with the SCI_SETEOLMODE message. You can also convert the
+ entire document to one of these line endings with SCI_CONVERTEOLS. Finally, you
+ can choose to display the line endings with SCI_SETVIEWEOL.
+ SCI_SETEOLMODE(int eolMode)
+ SCI_GETEOLMODE
+ SCI_CONVERTEOLS(int eolMode)
+ SCI_SETVIEWEOL(bool visible)
+ SCI_GETVIEWEOL
+
+
+ SCI_SETEOLMODE(int eolMode)
+ SCI_GETEOLMODE
+ SCI_SETEOLMODE sets the characters that are added into the document when the user
+ presses the Enter key. You can set eolMode to one of SC_EOL_CRLF (0),
+ SC_EOL_CR (1), or SC_EOL_LF (2). The SCI_GETEOLMODE
+ message retrieves the current state.
+
+ SCI_CONVERTEOLS(int eolMode)
+ This message changes all the end of line characters in the document to match
+ eolMode. Valid values are: SC_EOL_CRLF (0), SC_EOL_CR
+ (1), or SC_EOL_LF (2).
+
+ SCI_SETVIEWEOL(bool visible)
+ SCI_GETVIEWEOL
+ Normally, the end of line characters are hidden, but SCI_SETVIEWEOL allows you to
+ display (or hide) them by setting visible true (or
+ false). The visible rendering of the end of line characters is similar to
+ (CR), (LF), or (CR)(LF). SCI_GETVIEWEOL
+ returns the current state.
+
+ Styling
+
+ The styling messages allow you to assign styles to text. The standard Scintilla settings
+ divide the 8 style bits available for each character into 5 bits (0 to 4 = styles 0 to 31) that set a style and three bits (5 to 7) that
+ define indicators. You can change the balance between
+ styles and indicators with SCI_SETSTYLEBITS. If your styling needs can be met by
+ one of the standard lexers, or if you can write your own, then a lexer is probably the easiest
+ way to style your document. If you choose to use the container to do the styling you can use
+ the SCI_SETLEXER command to select
+ SCLEX_CONTAINER, in which case the container is sent a SCN_STYLENEEDED notification each time text needs styling for display. As another
+ alternative, you might use idle time to style the document. Even if you use a lexer, you might
+ use the styling commands to mark errors detected by a compiler. The following commands can be
+ used.
+ SCI_GETENDSTYLED
+ SCI_STARTSTYLING(int position, int mask)
+ SCI_SETSTYLING(int length, int style)
+ SCI_SETSTYLINGEX(int length, const char
+ *styles)
+ SCI_SETLINESTATE(int line, int value)
+ SCI_GETLINESTATE(int line)
+ SCI_GETMAXLINESTATE
+
+
+ SCI_GETENDSTYLED
+ Scintilla keeps a record of the last character that is likely to be styled correctly. This is
+ moved forwards when characters after it are styled and moved backwards if changes are made to
+ the text of the document before it. Before drawing text, this position is checked to see if any
+ styling is needed and, if so, a SCN_STYLENEEDED notification message is sent to the
+ container. The container can send SCI_GETENDSTYLED to work out where it needs to
+ start styling. Scintilla will always ask to style whole lines.
+
+ SCI_STARTSTYLING(int pos, int mask)
+ This prepares for styling by setting the styling position pos to start at and a
+ mask indicating which bits of the style bytes can be set. The mask allows styling
+ to occur over several passes, with, for example, basic styling done on an initial pass to
+ ensure that the text of the code is seen quickly and correctly, and then a second slower pass,
+ detecting syntax errors and using indicators to show where these are. For example, with the
+ standard settings of 5 style bits and 3 indicator bits, you would use a mask value
+ of 31 (0x1f) if you were setting text styles and did not want to change the indicators. After
+ SCI_STARTSTYLING, send multiple SCI_SETSTYLING messages for each
+ lexical entity to style.
+
+ SCI_SETSTYLING(int length, int style)
+ This message sets the style of length characters starting at the styling position
+ and then increases the styling position by length, ready for the next call. If
+ sCell is the style byte, the operation is:
+ if ((sCell & mask) != style) sCell = (sCell & ~mask) | (style &
+ mask);
+
+
+ SCI_SETSTYLINGEX(int length, const char *styles)
+ As an alternative to SCI_SETSTYLING, which applies the same style to each byte,
+ you can use this message which specifies the styles for each of length bytes from
+ the styling position and then increases the styling position by length, ready for
+ the next call. The length styling bytes pointed at by styles should
+ not contain any bits not set in mask.
+
+ SCI_SETLINESTATE(int line, int value)
+ SCI_GETLINESTATE(int line)
+ As well as the 8 bits of lexical state stored for each character there is also an integer
+ stored for each line. This can be used for longer lived parse states such as what the current
+ scripting language is in an ASP page. Use SCI_SETLINESTATE to set the integer
+ value and SCI_GETLINESTATE to get the value.
+
+ SCI_GETMAXLINESTATE
+ This returns the last line that has any line state.
+
+ Style definition
+
+ While the style setting messages mentioned above change the style numbers associated with
+ text, these messages define how those style numbers are interpreted visually. There are 128
+ lexer styles that can be set, numbered 0 to STYLEMAX (127). Unless you use SCI_SETSTYLEBITS to change the number
+ of style bits, styles 0 to 31 are used to set the text attributes. There are also some
+ predefined numbered styles starting at 32, The following STYLE_* constants are
+ defined.
+
+
+
+
+ STYLE_DEFAULT |
+
+ 32 |
+
+ This style defines the attributes that all styles receive when the
+ SCI_STYLECLEARALL message is used. |
+
+
+
+ STYLE_LINENUMBER |
+
+ 33 |
+
+ This style sets the attributes of the text used to display line numbers in a line
+ number margin. The background colour set for this style also sets the background colour
+ for all margins that do not have any folding mask bits set. That is, any margin for which
+ mask & SC_MASK_FOLDERS is 0. See SCI_SETMARGINMASKN for more about masks. |
+
+
+
+ STYLE_BRACELIGHT |
+
+ 34 |
+
+ This style sets the attributes used when highlighting braces with the SCI_BRACEHIGHLIGHT message and
+ when highlighting the corresponding indentation with SCI_SETHIGHLIGHTGUIDE. |
+
+
+
+ STYLE_BRACEBAD |
+
+ 35 |
+
+ This style sets the display attributes used when marking an unmatched brace with the
+ SCI_BRACEBADLIGHT
+ message. |
+
+
+
+ STYLE_CONTROLCHAR |
+
+ 36 |
+
+ This style sets the font used when drawing control characters.
+ Only the font, size, bold, italics, and character set attributes are used and not
+ the colour attributes. See
+ also: SCI_SETCONTROLCHARSYMBOL. |
+
+
+
+ STYLE_INDENTGUIDE |
+
+ 37 |
+
+ This style sets the foreground and background colours used when drawing the
+ indentation guides. |
+
+
+
+ STYLE_CALLTIP |
+
+ 38 |
+
+ Call tips normally use the font attributes defined by STYLE_DEFAULT.
+ Use of SCI_CALLTIPUSESTYLE
+ causes call tips to use this style instead. Only the font face name, font size,
+ foreground and background colours and character set attributes are used. |
+
+
+
+ STYLE_LASTPREDEFINED |
+
+ 39 |
+
+ To make it easier for client code to discover the range of styles that are
+ predefined, this is set to the style number of the last predefined style. This is
+ currently set to 39 and the last style with an identifier is 38, which reserves space
+ for one future predefined style. |
+
+
+
+ STYLE_MAX |
+
+ 127 |
+
+ This is not a style but is the number of the maximum style that can be set. Styles
+ between STYLE_LASTPREDEFINED and STYLE_MAX would be appropriate
+ if you used SCI_SETSTYLEBITS
+ to set more than 5 style bits. |
+
+
+
+
+ For each style you can set the font name, size and use of bold, italic and underline,
+ foreground and background colour and the character set. You can also choose to hide text with a
+ given style, display all characters as upper or lower case and fill from the last character on
+ a line to the end of the line (for embedded languages). There is also an experimental attribute
+ to make text read-only.
+
+ It is entirely up to you how you use styles. If you want to use syntax colouring you might
+ use style 0 for white space, style 1 for numbers, style 2 for keywords, style 3 for strings,
+ style 4 for preprocessor, style 5 for operators, and so on.
+ SCI_STYLERESETDEFAULT
+ SCI_STYLECLEARALL
+ SCI_STYLESETFONT(int styleNumber, char
+ *fontName)
+ SCI_STYLESETSIZE(int styleNumber, int
+ sizeInPoints)
+ SCI_STYLESETBOLD(int styleNumber, bool
+ bold)
+ SCI_STYLESETITALIC(int styleNumber, bool
+ italic)
+ SCI_STYLESETUNDERLINE(int styleNumber, bool
+ underline)
+ SCI_STYLESETFORE(int styleNumber, int
+ colour)
+ SCI_STYLESETBACK(int styleNumber, int
+ colour)
+ SCI_STYLESETEOLFILLED(int styleNumber, bool
+ eolFilled)
+ SCI_STYLESETCHARACTERSET(int styleNumber,
+ int charSet)
+ SCI_STYLESETCASE(int styleNumber, int
+ caseMode)
+ SCI_STYLESETVISIBLE(int styleNumber, bool
+ visible)
+ SCI_STYLESETCHANGEABLE(int styleNumber, bool
+ changeable)
+ SCI_STYLESETHOTSPOT(int styleNumber, bool
+ hotspot)
+
+
+ SCI_STYLERESETDEFAULT
+ This message resets STYLE_DEFAULT to its state when Scintilla was
+ initialised.
+
+ SCI_STYLECLEARALL
+ This message sets all styles to have the same attributes as STYLE_DEFAULT. If you
+ are setting up Scintilla for syntax colouring, it is likely that the lexical styles you set
+ will be very similar. One way to set the styles is to:
+ 1. Set STYLE_DEFAULT to the common features of all styles.
+ 2. Use SCI_STYLECLEARALL to copy this to all styles.
+ 3. Set the style attributes that make your lexical styles different.
+
+ SCI_STYLESETFONT(int styleNumber, const char *fontName)
+ SCI_STYLESETSIZE(int styleNumber, int sizeInPoints)
+ SCI_STYLESETBOLD(int styleNumber, bool bold)
+ SCI_STYLESETITALIC(int styleNumber, bool italic)
+ These messages (plus SCI_STYLESETCHARACTERSET) set the font
+ attributes that are used to match the fonts you request to those available. The
+ fontName is a zero terminated string holding the name of a font. Under Windows,
+ only the first 32 characters of the name are used and the name is not case sensitive. For
+ internal caching, Scintilla tracks fonts by name and does care about the casing of font names,
+ so please be consistent. On GTK+ 2.x, either GDK or Pango can be used to display text.
+ Pango antialiases text, works well with Unicode and is better supported in recent versions of GTK+
+ but GDK is faster.
+ Prepend a '!' character to the font name to use Pango.
+
+ SCI_STYLESETUNDERLINE(int styleNumber, bool
+ underline)
+ You can set a style to be underlined. The underline is drawn in the foreground colour. All
+ characters with a style that includes the underline attribute are underlined, even if they are
+ white space.
+
+ SCI_STYLESETFORE(int styleNumber, int colour)
+ SCI_STYLESETBACK(int styleNumber, int colour)
+ Text is drawn in the foreground colour. The space in each character cell that is not occupied
+ by the character is drawn in the background colour.
+
+ SCI_STYLESETEOLFILLED(int styleNumber, bool
+ eolFilled)
+ If the last character in the line has a style with this attribute set, the remainder of the
+ line up to the right edge of the window is filled with the background colour set for the last
+ character. This is useful when a document contains embedded sections in another language such
+ as HTML pages with embedded JavaScript. By setting eolFilled to true
+ and a consistent background colour (different from the background colour set for the HTML
+ styles) to all JavaScript styles then JavaScript sections will be easily distinguished from
+ HTML.
+
+ SCI_STYLESETCHARACTERSET(int styleNumber, int
+ charSet)
+ You can set a style to use a different character set than the default. The places where such
+ characters sets are likely to be useful are comments and literal strings. For example,
+ SCI_STYLESETCHARACTERSET(SCE_C_STRING, SC_CHARSET_RUSSIAN) would ensure that
+ strings in Russian would display correctly in C and C++ (SCE_C_STRING is the style
+ number used by the C and C++ lexer to display literal strings; it has the value 6). This
+ feature works differently on Windows and GTK+.
+
+ The character sets supported on Windows are:
+ SC_CHARSET_ANSI, SC_CHARSET_ARABIC, SC_CHARSET_BALTIC,
+ SC_CHARSET_CHINESEBIG5, SC_CHARSET_DEFAULT,
+ SC_CHARSET_EASTEUROPE, SC_CHARSET_GB2312,
+ SC_CHARSET_GREEK, SC_CHARSET_HANGUL, SC_CHARSET_HEBREW,
+ SC_CHARSET_JOHAB, SC_CHARSET_MAC, SC_CHARSET_OEM,
+ SC_CHARSET_RUSSIAN (code page 1251),
+ SC_CHARSET_SHIFTJIS, SC_CHARSET_SYMBOL, SC_CHARSET_THAI,
+ SC_CHARSET_TURKISH, and SC_CHARSET_VIETNAMESE.
+
+ The character sets supported on GTK+ are:
+ SC_CHARSET_ANSI, SC_CHARSET_CYRILLIC (code page 1251),
+ SC_CHARSET_EASTEUROPE,
+ SC_CHARSET_GB2312, SC_CHARSET_HANGUL,
+ SC_CHARSET_RUSSIAN (KOI8-R), SC_CHARSET_SHIFTJIS, and
+ SC_CHARSET_8859_15.
+
+ SCI_STYLESETCASE(int styleNumber, int caseMode)
+ The value of caseMode determines how text is displayed. You can set upper case
+ (SC_CASE_UPPER, 1) or lower case (SC_CASE_LOWER, 2) or display
+ normally (SC_CASE_MIXED, 0). This does not change the stored text, only how it is
+ displayed.
+
+ SCI_STYLESETVISIBLE(int styleNumber, bool visible)
+ Text is normally visible. However, you can completely hide it by giving it a style with the
+ visible set to 0. This could be used to hide embedded formatting instructions or
+ hypertext keywords in HTML or XML.
+
+ SCI_STYLESETCHANGEABLE(int styleNumber, bool
+ changeable)
+ This is an experimental and incompletely implemented style attribute. The default setting is
+ changeable set true but when set false it makes text
+ read-only. Currently it only stops the caret from being within not-changeable text and does not
+ yet stop deleting a range that contains not-changeable text.
+
+ SCI_STYLESETHOTSPOT(int styleNumber, bool
+ hotspot)
+ This style is used to mark ranges of text that can detect mouse clicks.
+ The cursor changes to a hand over hotspots, and the foreground, and background colours
+ may change and an underline appear to indicate that these areas are sensitive to clicking.
+ This may be used to allow hyperlinks to other documents.
+
+ SCI_STYLESETHOTSPOT(int styleNumber, bool
+ hotspot)
+
+ Caret, selection, and hotspot styles
+
+ The selection is shown by changing the foreground and/or background colours. If one of these
+ is not set then that attribute is not changed for the selection. The default is to show the
+ selection by changing the background to light gray and leaving the foreground the same as when
+ it was not selected. When there is no selection, the current insertion point is marked by the
+ text caret. This is a vertical line that is normally blinking on and off to attract the users
+ attention.
+ SCI_SETSELFORE(bool useSelectionForeColour, int
+ colour)
+ SCI_SETSELBACK(bool useSelectionBackColour, int
+ colour)
+ SCI_SETSELALPHA(int alpha)
+ SCI_GETSELALPHA
+ SCI_SETCARETFORE(int colour)
+ SCI_GETCARETFORE
+ SCI_SETCARETLINEVISIBLE(bool
+ show)
+ SCI_GETCARETLINEVISIBLE
+ SCI_SETCARETLINEBACK(int colour)
+ SCI_GETCARETLINEBACK
+ SCI_SETCARETLINEBACKALPHA(int alpha)
+ SCI_GETCARETLINEBACKALPHA
+ SCI_SETCARETPERIOD(int milliseconds)
+ SCI_GETCARETPERIOD
+ SCI_SETCARETWIDTH(int pixels)
+ SCI_GETCARETWIDTH
+ SCI_SETHOTSPOTACTIVEFORE
+ SCI_SETHOTSPOTACTIVEBACK
+ SCI_SETHOTSPOTACTIVEUNDERLINE
+ SCI_SETHOTSPOTSINGLELINE
+ SCI_SETCONTROLCHARSYMBOL(int
+ symbol)
+ SCI_GETCONTROLCHARSYMBOL
+ SCI_SETCARETSTICKY
+ SCI_GETCARETSTICKY
+ SCI_TOGGLECARETSTICKY
+
+
+ SCI_SETSELFORE(bool useSelectionForeColour, int colour)
+ SCI_SETSELBACK(bool useSelectionBackColour, int colour)
+ You can choose to override the default selection colouring with these two messages. The colour
+ you provide is used if you set useSelection*Colour to true. If it is
+ set to false, the default colour colouring is used and the colour
+ argument has no effect.
+ SCI_SETSELALPHA(int alpha)
+ SCI_GETSELALPHA
+ The selection can be drawn translucently in the selection background colour by
+ setting an alpha value.
+
+ SCI_SETCARETFORE(int colour)
+ SCI_GETCARETFORE
+ The colour of the caret can be set with SCI_SETCARETFORE and retrieved with
+ SCI_CETCARETFORE.
+
+ SCI_SETCARETLINEVISIBLE(bool show)
+ SCI_GETCARETLINEVISIBLE
+ SCI_SETCARETLINEBACK(int colour)
+ SCI_GETCARETLINEBACK
+ SCI_SETCARETLINEBACKALPHA(int alpha)
+ SCI_GETCARETLINEBACKALPHA
+ You can choose to make the background colour of the line containing the caret different with
+ these messages. To do this, set the desired background colour with
+ SCI_SETCARETLINEBACK, then use SCI_SETCARETLINEVISIBLE(true) to
+ enable the effect. You can cancel the effect with SCI_SETCARETLINEVISIBLE(false).
+ The two SCI_GETCARET* functions return the state and the colour. This form of
+ background colouring has highest priority when a line has markers that would otherwise change
+ the background colour.
+ The caret line may also be drawn translucently which allows other background colours to show
+ through. This is done by setting the alpha (translucency) value by calling
+ SCI_SETCARETLINEBACKALPHA. When the alpha is not SC_ALPHA_NOALPHA,
+ the caret line is drawn after all other features so will affect the colour of all other features.
+
+
+ SCI_SETCARETPERIOD(int milliseconds)
+ SCI_GETCARETPERIOD
+ The rate at which the caret blinks can be set with SCI_SETCARETPERIOD which
+ determines the time in milliseconds that the caret is visible or invisible before changing
+ state. Setting the period to 0 stops the caret blinking. The default value is 500 milliseconds.
+ SCI_GETCARETPERIOD returns the current setting.
+
+ SCI_SETCARETWIDTH(int pixels)
+ SCI_GETCARETWIDTH
+ The width of the caret can be set with SCI_SETCARETWIDTH to a value of 0, 1, 2 or
+ 3 pixels. The default width is 1 pixel. You can read back the current width with
+ SCI_GETCARETWIDTH. A width of 0 makes the caret invisible (added at version
+ 1.50).
+
+ SCI_SETHOTSPOTACTIVEFORE(bool useHotSpotForeColour, int colour)
+ SCI_SETHOTSPOTACTIVEBACK(bool useHotSpotBackColour, int colour)
+ SCI_SETHOTSPOTACTIVEUNDERLINE(bool underline,)
+ SCI_SETHOTSPOTSINGLELINE(bool singleLine,)
+ While the cursor hovers over text in a style with the hotspot attribute set,
+ the default colouring can be modified and an underline drawn with these settings.
+ Single line mode stops a hotspot from wrapping onto next line.
+
+ SCI_SETCONTROLCHARSYMBOL(int symbol)
+ SCI_GETCONTROLCHARSYMBOL
+ By default, Scintilla displays control characters (characters with codes less than 32) in a
+ rounded rectangle as ASCII mnemonics: "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". These mnemonics come from the
+ early days of signaling, though some are still used (LF = Line Feed, BS = Back Space, CR =
+ Carriage Return, for example).
+
+ You can choose to replace these mnemonics by a nominated symbol with an ASCII code in the
+ range 32 to 255. If you set a symbol value less than 32, all control characters are displayed
+ as mnemonics. The symbol you set is rendered in the font of the style set for the character.
+ You can read back the current symbol with the SCI_GETCONTROLCHARSYMBOL message.
+ The default symbol value is 0.
+
+ SCI_SETCARETSTICKY(bool useCaretStickyBehaviour)
+ SCI_GETCARETSTICKY
+ SCI_TOGGLECARETSTICKY
+ These messages set, get or toggle the caretSticky flag which controls when the last position
+ of the caret on the line is saved. When set to true, the position is not saved when you type
+ a character, a tab, paste the clipboard content or press backspace.
+
+ Margins
+
+ There may be up to five margins to the left of the text display, plus a gap either side of
+ the text. Each margin can be set to display either symbols or line numbers with SCI_SETMARGINTYPEN. The markers
+ that can be displayed in each margin are set with SCI_SETMARGINMASKN. Any markers not associated with
+ a visible margin will be displayed as changes in background colour in the text. A width in
+ pixels can be set for each margin. Margins with a zero width are ignored completely. You can
+ choose if a mouse click in a margin sends a SCN_MARGINCLICK notification to the container or
+ selects a line of text.
+
+ The margins are numbered 0 to 4. Using a margin number outside the valid range has no
+ effect. By default, margin 0 is set to display line numbers, but is given a width of 0, so it
+ is hidden. Margin 1 is set to display non-folding symbols and is given a width of 16 pixels, so
+ it is visible. Margin 2 is set to display the folding symbols, but is given a width of 0, so it
+ is hidden. Of course, you can set the margins to be whatever you wish.
+ SCI_SETMARGINTYPEN(int margin, int
+ type)
+ SCI_GETMARGINTYPEN(int margin)
+ SCI_SETMARGINWIDTHN(int margin, int
+ pixelWidth)
+ SCI_GETMARGINWIDTHN(int margin)
+ SCI_SETMARGINMASKN(int margin, int
+ mask)
+ SCI_GETMARGINMASKN(int margin)
+ SCI_SETMARGINSENSITIVEN(int margin, bool
+ sensitive)
+ SCI_GETMARGINSENSITIVEN(int
+ margin)
+ SCI_SETMARGINLEFT(<unused>, int
+ pixels)
+ SCI_GETMARGINLEFT
+ SCI_SETMARGINRIGHT(<unused>, int
+ pixels)
+ SCI_GETMARGINRIGHT
+ SCI_SETFOLDMARGINCOLOUR(bool useSetting, int colour)
+ SCI_SETFOLDMARGINHICOLOUR(bool useSetting, int colour)
+
+
+ SCI_SETMARGINTYPEN(int margin, int iType)
+ SCI_GETMARGINTYPEN(int margin)
+ These two routines set and get the type of a margin. The margin argument should be 0, 1, 2, 3 or 4.
+ You can use the predefined constants SC_MARGIN_SYMBOL (0) and
+ SC_MARGIN_NUMBER (1) to set a margin as either a line number or a symbol margin.
+ By convention, margin 0 is used for line numbers and the next two are used for symbols. You can
+ also use the constants SC_MARGIN_BACK (2) and SC_MARGIN_FORE (3) for
+ symbol margins that set their background colour to match the STYLE_DEFAULT background and
+ foreground colours.
+
+ SCI_SETMARGINWIDTHN(int margin, int pixelWidth)
+ SCI_GETMARGINWIDTHN(int margin)
+ These routines set and get the width of a margin in pixels. A margin with zero width is
+ invisible. By default, Scintilla sets margin 1 for symbols with a width of 16 pixels, so this
+ is a reasonable guess if you are not sure what would be appropriate. Line number margins widths
+ should take into account the number of lines in the document and the line number style. You
+ could use something like SCI_TEXTWIDTH(STYLE_LINENUMBER, "_99999") to get a
+ suitable width.
+
+ SCI_SETMARGINMASKN(int margin, int mask)
+ SCI_GETMARGINMASKN(int margin)
+ The mask is a 32-bit value. Each bit corresponds to one of 32 logical symbols that can be
+ displayed in a margin that is enabled for symbols. There is a useful constant,
+ SC_MASK_FOLDERS (0xFE000000 or -33554432), that is a mask for the 7 logical
+ symbols used to denote folding. You can assign a wide range of symbols and colours to each of
+ the 32 logical symbols, see Markers for more information. If (mask
+ & SC_MASK_FOLDERS)==0, the margin background colour is controlled by style 33 (STYLE_LINENUMBER).
+
+ You add logical markers to a line with SCI_MARKERADD. If a line has an associated marker that
+ does not appear in the mask of any margin with a non-zero width, the marker changes the
+ background colour of the line. For example, suppose you decide to use logical marker 10 to mark
+ lines with a syntax error and you want to show such lines by changing the background colour.
+ The mask for this marker is 1 shifted left 10 times (1<<10) which is 0x400. If you make
+ sure that no symbol margin includes 0x400 in its mask, any line with the marker gets the
+ background colour changed.
+
+ To set a non-folding margin 1 use SCI_SETMARGINMASKN(1, ~SC_MASK_FOLDERS); to
+ set a folding margin 2 use SCI_SETMARGINMASKN(2, SC_MASK_FOLDERS). This is the
+ default set by Scintilla. ~SC_MASK_FOLDERS is 0x1FFFFFF in hexadecimal or 33554431
+ decimal. Of course, you may need to display all 32 symbols in a margin, in which case use
+ SCI_SETMARGINMASKN(margin, -1).
+
+ SCI_SETMARGINSENSITIVEN(int margin, bool
+ sensitive)
+ SCI_GETMARGINSENSITIVEN(int margin)
+ Each of the five margins can be set sensitive or insensitive to mouse clicks. A click in a
+ sensitive margin sends a SCN_MARGINCLICK notification to the container. Margins that are not sensitive act as
+ selection margins which make it easy to select ranges of lines. By default, all margins are
+ insensitive.
+
+ SCI_SETMARGINLEFT(<unused>, int pixels)
+ SCI_GETMARGINLEFT
+ SCI_SETMARGINRIGHT(<unused>, int pixels)
+ SCI_GETMARGINRIGHT
+ These messages set and get the width of the blank margin on both sides of the text in pixels.
+ The default is to one pixel on each side.
+
+ SCI_SETFOLDMARGINCOLOUR(bool useSetting, int colour)
+ SCI_SETFOLDMARGINHICOLOUR(bool useSetting, int colour)
+ These messages allow changing the colour of the fold margin and fold margin highlight.
+ On Windows the fold margin colour defaults to ::GetSysColor(COLOR_3DFACE) and the fold margin highlight
+ colour to ::GetSysColor(COLOR_3DHIGHLIGHT).
+
+ Other settings
+ SCI_SETUSEPALETTE(bool
+ allowPaletteUse)
+ SCI_GETUSEPALETTE
+ SCI_SETBUFFEREDDRAW(bool isBuffered)
+ SCI_GETBUFFEREDDRAW
+ SCI_SETTWOPHASEDRAW(bool twoPhase)
+ SCI_GETTWOPHASEDRAW
+ SCI_SETCODEPAGE(int codePage)
+ SCI_GETCODEPAGE
+ SCI_SETWORDCHARS(<unused>, const char
+ *chars)
+ SCI_SETWHITESPACECHARS(<unused>, const char
+ *chars)
+ SCI_SETCHARSDEFAULT
+ SCI_GRABFOCUS
+ SCI_SETFOCUS(bool focus)
+ SCI_GETFOCUS
+
+
+ SCI_SETUSEPALETTE(bool allowPaletteUse)
+ SCI_GETUSEPALETTE
+ On 8 bit displays, which can only display a maximum of 256 colours, the graphics environment
+ mediates between the colour needs of applications through the use of palettes. On GTK+,
+ Scintilla always uses a palette.
+
+ On Windows, there are some problems with visual flashing when switching between applications
+ with palettes and it is also necessary for the application containing the Scintilla control to
+ forward some messages to Scintilla for its palette code to work. Because of this, by default,
+ the palette is not used and the application must tell Scintilla to use one. If Scintilla is not
+ using a palette, it will only display in those colours already available, which are often the
+ 20 Windows system colours.
+
+ To see an example of how to enable palette support in Scintilla, search the text of SciTE
+ for WM_PALETTECHANGED, WM_QUERYNEWPALETTE and
+ SCI_SETUSEPALETTE. The Windows messages to forward are:
+ WM_SYSCOLORCHANGE, WM_PALETTECHANGED,
+ WM_QUERYNEWPALETTE (should return TRUE).
+
+ To forward a message (WM_XXXX, WPARAM, LPARAM) to Scintilla, you can use
+ SendMessage(hScintilla, WM_XXXX, WPARAM, LPARAM) where hScintilla is
+ the handle to the Scintilla window you created as your editor.
+
+ While we are on the subject of forwarding messages in Windows, the top level window should
+ forward any WM_SETTINGCHANGE messages to Scintilla (this is currently used to
+ collect changes to mouse settings, but could be used for other user interface items in the
+ future).
+
+ SCI_SETBUFFEREDDRAW(bool isBuffered)
+ SCI_GETBUFFEREDDRAW
+ These messages turn buffered drawing on or off and report the buffered drawing state. Buffered
+ drawing draws each line into a bitmap rather than directly to the screen and then copies the
+ bitmap to the screen. This avoids flickering although it does take longer. The default is for
+ drawing to be buffered.
+
+ SCI_SETTWOPHASEDRAW(bool twoPhase)
+ SCI_GETTWOPHASEDRAW
+ Two phase drawing is a better but slower way of drawing text.
+ In single phase drawing each run of characters in one style is drawn along with its background.
+ If a character overhangs the end of a run, such as in "V_" where the
+ "V" is in a different style from the "_", then this can cause the right hand
+ side of the "V" to be overdrawn by the background of the "_" which
+ cuts it off. Two phase drawing
+ fixes this by drawing all the backgrounds first and then drawing the text in
+ transparent mode. Two phase drawing may flicker more than single phase
+ unless buffered drawing is on. The default is for drawing to be two phase.
+
+ SCI_SETCODEPAGE(int codePage)
+ SCI_GETCODEPAGE
+ Scintilla has some support for Japanese, Chinese and Korean DBCS. Use this message with
+ codePage set to the code page number to set Scintilla to use code page information
+ to ensure double byte characters are treated as one character rather than two. This also stops
+ the caret from moving between the two bytes in a double byte character.
+ Do not use this message to choose between different single byte character sets: it doesn't do that.
+ Call with
+ codePage set to zero to disable DBCS support. The default is
+ SCI_SETCODEPAGE(0).
+
+ Code page SC_CP_UTF8 (65001) sets Scintilla into Unicode mode with the document
+ treated as a sequence of characters expressed in UTF-8. The text is converted to the platform's
+ normal Unicode encoding before being drawn by the OS and thus can display Hebrew, Arabic,
+ Cyrillic, and Han characters. Languages which can use two characters stacked vertically in one
+ horizontal space, such as Thai, will mostly work but there are some issues where the characters
+ are drawn separately leading to visual glitches. Bi-directional text is not supported. Characters outside the
+ Basic Multilingual Plane are unlikely to work.
+
+ On Windows, code page can be set to 932 (Japanese Shift-JIS), 936 (Simplified Chinese GBK),
+ 949 (Korean Unified Hangul Code), 950 (Traditional Chinese Big5), or 1361 (Korean Johab)
+ although these may require installation of language specific support.
+
+ On GTK+, code page SC_CP_DBCS (1) sets Scintilla into
+ multi byte character mode as is required for Japanese language processing with
+ the EUC encoding.
+
+ For GTK+ 1.x, the locale should be set to a Unicode locale with a call similar to
+ setlocale(LC_CTYPE, "en_US.UTF-8"). Fonts with an "iso10646" registry
+ should be used in a font set. Font sets are a comma separated list of partial font
+ specifications where each partial font specification can be in the form:
+ foundry-fontface-charsetregistry-encoding or
+ fontface-charsetregistry-encoding or foundry-fontface or
+ fontface. An example is "misc-fixed-iso10646-1,*".
+ On GTK+ 2.x, Pango fonts should be used rather than font sets.
+
+ Setting codePage to a non-zero value that is not SC_CP_UTF8 is
+ operating system dependent.
+
+ SCI_SETWORDCHARS(<unused>, const char *chars)
+ Scintilla has several functions that operate on words, which are defined to be contiguous
+ sequences of characters from a particular set of characters. This message defines which
+ characters are members of that set. The character sets are set to default values before processing this
+ function.
+ For example, if you don't allow '_' in your set of characters
+ use:
+ SCI_SETWORDCHARS(0, "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789");
+
+ SCI_SETWHITESPACECHARS(<unused>, const char *chars)
+ Similar to SCI_SETWORDCHARS, this message allows the user to define which chars Scintilla considers
+ as whitespace. Setting the whitespace chars allows the user to fine-tune Scintilla's behaviour doing
+ such things as moving the cursor to the start or end of a word; for example, by defining punctuation chars
+ as whitespace, they will be skipped over when the user presses ctrl+left or ctrl+right.
+ This function should be called after SCI_SETWORDCHARS as it will
+ reset the whitespace characters to the default set.
+ SCI_SETCHARSDEFAULT
+ Use the default sets of word and whitespace characters. This sets whitespace to space, tab and other
+ characters with codes less than 0x20, with word characters set to alphanumeric and '_'.
+
+
+
+ SCI_GRABFOCUS
+ SCI_SETFOCUS(bool focus)
+ SCI_GETFOCUS
+ Scintilla can be told to grab the focus with this message. This is needed more on GTK+ where
+ focus handling is more complicated than on Windows.
+
+ The internal focus flag can be set with SCI_SETFOCUS. This is used by clients
+ that have complex focus requirements such as having their own window that gets the real focus
+ but with the need to indicate that Scintilla has the logical focus.
+
+ Brace highlighting
+ SCI_BRACEHIGHLIGHT(int pos1, int
+ pos2)
+ SCI_BRACEBADLIGHT(int pos1)
+ SCI_BRACEMATCH(int position, int
+ maxReStyle)
+
+
+ SCI_BRACEHIGHLIGHT(int pos1, int pos2)
+ Up to two characters can be highlighted in a 'brace highlighting style', which is defined as
+ style number STYLE_BRACELIGHT (34).
+ If you have enabled indent guides, you may also wish to highlight the indent that corresponds
+ with the brace. You can locate the column with SCI_GETCOLUMN and highlight the indent with SCI_SETHIGHLIGHTGUIDE.
+
+ SCI_BRACEBADLIGHT(int pos1)
+ If there is no matching brace then the brace
+ badlighting style, style BRACE_BADLIGHT (35), can be used to show the brace
+ that is unmatched. Using a position of INVALID_POSITION (-1) removes the
+ highlight.
+
+ SCI_BRACEMATCH(int pos, int maxReStyle)
+ The SCI_BRACEMATCH message finds a corresponding matching brace given
+ pos, the position of one brace. The brace characters handled are '(', ')', '[',
+ ']', '{', '}', '<', and '>'. The search is forwards from an opening brace and backwards
+ from a closing brace. If the character at position is not a brace character, or a matching
+ brace cannot be found, the return value is -1. Otherwise, the return value is the position of
+ the matching brace.
+
+ A match only occurs if the style of the matching brace is the same as the starting brace or
+ the matching brace is beyond the end of styling. Nested braces are handled correctly. The
+ maxReStyle parameter must currently be 0 - it may be used in the future to limit
+ the length of brace searches.
+
+ Tabs and Indentation Guides
+
+ Indentation (the white space at the start of a line) is often used by programmers to clarify
+ program structure and in some languages, for example Python, it may be part of the language
+ syntax. Tabs are normally used in editors to insert a tab character or to pad text with spaces
+ up to the next tab.
+
+ Scintilla can be set to treat tab and backspace in the white space at the start of a line in
+ a special way: inserting a tab indents the line to the next indent position rather than just
+ inserting a tab at the current character position and backspace unindents the line rather than
+ deleting a character. Scintilla can also display indentation guides (vertical lines) to help
+ you to generate code.
+ SCI_SETTABWIDTH(int widthInChars)
+ SCI_GETTABWIDTH
+ SCI_SETUSETABS(bool useTabs)
+ SCI_GETUSETABS
+ SCI_SETINDENT(int widthInChars)
+ SCI_GETINDENT
+ SCI_SETTABINDENTS(bool tabIndents)
+ SCI_GETTABINDENTS
+ SCI_SETBACKSPACEUNINDENTS(bool
+ bsUnIndents)
+ SCI_GETBACKSPACEUNINDENTS
+ SCI_SETLINEINDENTATION(int line, int
+ indentation)
+ SCI_GETLINEINDENTATION(int line)
+ SCI_GETLINEINDENTPOSITION(int
+ line)
+ SCI_SETINDENTATIONGUIDES(bool
+ view)
+ SCI_GETINDENTATIONGUIDES
+ SCI_SETHIGHLIGHTGUIDE(int column)
+ SCI_GETHIGHLIGHTGUIDE
+
+
+ SCI_SETTABWIDTH(int widthInChars)
+ SCI_GETTABWIDTH
+ SCI_SETTABWIDTH sets the size of a tab as a multiple of the size of a space
+ character in STYLE_DEFAULT. The default tab width is 8 characters. There are no
+ limits on tab sizes, but values less than 1 or large values may have undesirable effects.
+
+ SCI_SETUSETABS(bool useTabs)
+ SCI_GETUSETABS
+ SCI_SETUSETABS determines whether indentation should be created out of a mixture
+ of tabs and spaces or be based purely on spaces. Set useTabs to false
+ (0) to create all tabs and indents out of spaces. The default is true. You can use
+ SCI_GETCOLUMN to get the column of a
+ position taking the width of a tab into account.
+ SCI_SETINDENT(int widthInChars)
+ SCI_GETINDENT
+ SCI_SETINDENT sets the size of indentation in terms of the width of a space in STYLE_DEFAULT. If you set a width of
+ 0, the indent size is the same as the tab size. There are no limits on indent sizes, but values
+ less than 0 or large values may have undesirable effects.
+
+
+
+ SCI_SETTABINDENTS(bool tabIndents)
+ SCI_GETTABINDENTS
+ SCI_SETBACKSPACEUNINDENTS(bool bsUnIndents)
+ SCI_GETBACKSPACEUNINDENTS
+
+
+ Inside indentation white space, the tab and backspace keys can be made to indent and
+ unindent rather than insert a tab character or delete a character with the
+ SCI_SETTABINDENTS and SCI_SETBACKSPACEUNINDENTS functions.
+
+ SCI_SETLINEINDENTATION(int line, int indentation)
+ SCI_GETLINEINDENTATION(int line)
+ The amount of indentation on a line can be discovered and set with
+ SCI_GETLINEINDENTATION and SCI_SETLINEINDENTATION. The indentation is
+ measured in character columns, which correspond to the width of space characters.
+
+ SCI_GETLINEINDENTPOSITION(int line)
+ This returns the position at the end of indentation of a line.
+
+ SCI_SETINDENTATIONGUIDES(bool view)
+ SCI_GETINDENTATIONGUIDES
+ Indentation guides are dotted vertical lines that appear within indentation white space every
+ indent size columns. They make it easy to see which constructs line up especially when they
+ extend over multiple pages. Style STYLE_INDENTGUIDE (37) is used to specify the
+ foreground and background colour of the indentation guides.
+
+ SCI_SETHIGHLIGHTGUIDE(int column)
+ SCI_GETHIGHLIGHTGUIDE
+ When brace highlighting occurs, the indentation guide corresponding to the braces may be
+ highlighted with the brace highlighting style, STYLE_BRACELIGHT (34). Set column to 0 to
+ cancel this highlight.
+
+ Markers
+
+ There are 32 markers, numbered 0 to 31, and you can assign any combination of them to each
+ line in the document. Markers appear in the selection
+ margin to the left of the text. If the selection margin is set to zero width, the
+ background colour of the whole line is changed instead. Marker numbers 25 to 31 are used by
+ Scintilla in folding margins, and have symbolic names of the form SC_MARKNUM_*,
+ for example SC_MARKNUM_FOLDEROPEN.
+
+ Marker numbers 0 to 24 have no pre-defined function; you can use them to mark syntax errors
+ or the current point of execution, break points, or whatever you need marking. If you do not
+ need folding, you can use all 32 for any purpose you wish.
+
+ Each marker number has a symbol associated with it. You can also set the foreground and
+ background colour for each marker number, so you can use the same symbol more than once with
+ different colouring for different uses. Scintilla has a set of symbols you can assign
+ (SC_MARK_*) or you can use characters. By default, all 32 markers are set to
+ SC_MARK_CIRCLE with a black foreground and a white background.
+
+ The markers are drawn in the order of their numbers, so higher numbered markers appear on
+ top of lower numbered ones. Markers try to move with their text by tracking where the start of
+ their line moves. When a line is deleted, its markers are combined, by an OR
+ operation, with the markers of the previous line.
+ SCI_MARKERDEFINE(int markerNumber, int
+ markerSymbols)
+ SCI_MARKERDEFINEPIXMAP(int markerNumber,
+ const char *xpm)
+ SCI_MARKERSETFORE(int markerNumber, int
+ colour)
+ SCI_MARKERSETBACK(int markerNumber, int
+ colour)
+ SCI_MARKERSETALPHA(int markerNumber, int
+ alpha)
+ SCI_MARKERADD(int line, int markerNumber)
+ SCI_MARKERADDSET(int line, int markerMask)
+ SCI_MARKERDELETE(int line, int
+ markerNumber)
+ SCI_MARKERDELETEALL(int markerNumber)
+ SCI_MARKERGET(int line)
+ SCI_MARKERNEXT(int lineStart, int
+ markerMask)
+ SCI_MARKERPREVIOUS(int lineStart, int
+ markerMask)
+ SCI_MARKERLINEFROMHANDLE(int
+ handle)
+ SCI_MARKERDELETEHANDLE(int handle)
+
+
+ SCI_MARKERDEFINE(int markerNumber, int markerSymbols)
+ This message associates a marker number in the range 0 to 31 with one of the marker symbols or
+ an ASCII character. The general-purpose marker symbols currently available are:
+ SC_MARK_CIRCLE, SC_MARK_ROUNDRECT, SC_MARK_ARROW,
+ SC_MARK_SMALLRECT, SC_MARK_SHORTARROW, SC_MARK_EMPTY,
+ SC_MARK_ARROWDOWN, SC_MARK_MINUS, SC_MARK_PLUS,
+ SC_MARK_ARROWS, SC_MARK_DOTDOTDOT, SC_MARK_EMPTY,
+ SC_MARK_BACKGROUND and SC_MARK_FULLRECT.
+
+ The SC_MARK_BACKGROUND marker changes the background colour of the line only.
+ The SC_MARK_FULLRECT symbol mirrors this, changing only the margin background colour.
+ The SC_MARK_EMPTY symbol is invisible, allowing client code to track the movement
+ of lines. You would also use it if you changed the folding style and wanted one or more of the
+ SC_FOLDERNUM_* markers to have no associated symbol.
+
+ There are also marker symbols designed for use in the folding margin in a flattened tree
+ style.
+ SC_MARK_BOXMINUS, SC_MARK_BOXMINUSCONNECTED,
+ SC_MARK_BOXPLUS, SC_MARK_BOXPLUSCONNECTED,
+ SC_MARK_CIRCLEMINUS, SC_MARK_CIRCLEMINUSCONNECTED,
+ SC_MARK_CIRCLEPLUS, SC_MARK_CIRCLEPLUSCONNECTED,
+ SC_MARK_LCORNER, SC_MARK_LCORNERCURVE, SC_MARK_TCORNER,
+ SC_MARK_TCORNERCURVE, and SC_MARK_VLINE.
+ Characters can be used as markers by adding the ASCII value of the character to
+ SC_MARK_CHARACTER (10000). For example, to use 'A' (ASCII code 65) as marker
+ number 1 use:
+ SCI_MARKERDEFINE(1, SC_MARK_CHARACTER+65).
+
+ The marker numbers SC_MARKNUM_FOLDER and SC_MARKNUM_FOLDEROPEN are
+ used for showing that a fold is present and open or closed. Any symbols may be assigned for
+ this purpose although the (SC_MARK_PLUS, SC_MARK_MINUS) pair or the
+ (SC_MARK_ARROW, SC_MARK_ARROWDOWN) pair are good choices. As well as
+ these two, more assignments are needed for the flattened tree style:
+ SC_MARKNUM_FOLDEREND, SC_MARKNUM_FOLDERMIDTAIL,
+ SC_MARKNUM_FOLDEROPENMID, SC_MARKNUM_FOLDERSUB, and
+ SC_MARKNUM_FOLDERTAIL. The bits used for folding are specified by
+ SC_MASK_FOLDERS, which is commonly used as an argument to
+ SCI_SETMARGINMASKN when defining a margin to be used for folding.
+
+ This table shows which SC_MARK_* symbols should be assigned to which
+ SC_MARKNUM_* marker numbers to obtain four folding styles: Arrow (mimics
+ Macintosh), plus/minus shows folded lines as '+' and opened folds as '-', Circle tree, Box
+ tree.
+
+
+
+
+ SC_MARKNUM_* |
+
+ Arrow |
+
+ Plus/minus |
+
+ Circle tree |
+
+ Box tree |
+
+
+
+
+
+ FOLDEROPEN |
+
+ ARROWDOWN |
+
+ MINUS |
+
+ CIRCLEMINUS |
+
+ BOXMINUS |
+
+
+
+ FOLDER |
+
+ ARROW |
+
+ PLUS |
+
+ CIRCLEPLUS |
+
+ BOXPLUS |
+
+
+
+ FOLDERSUB |
+
+ EMPTY |
+
+ EMPTY |
+
+ VLINE |
+
+ VLINE |
+
+
+
+ FOLDERTAIL |
+
+ EMPTY |
+
+ EMPTY |
+
+ LCORNERCURVE |
+
+ LCORNER |
+
+
+
+ FOLDEREND |
+
+ EMPTY |
+
+ EMPTY |
+
+ CIRCLEPLUSCONNECTED |
+
+ BOXPLUSCONNECTED |
+
+
+
+ FOLDEROPENMID |
+
+ EMPTY |
+
+ EMPTY |
+
+ CIRCLEMINUSCONNECTED |
+
+ BOXMINUSCONNECTED |
+
+
+
+ FOLDERMIDTAIL |
+
+ EMPTY |
+
+ EMPTY |
+
+ TCORNERCURVE |
+
+ TCORNER |
+
+
+
+
+ SCI_MARKERDEFINEPIXMAP(int markerNumber, const char
+ *xpm)
+ Markers can be set to pixmaps with this message. The XPM format is used for the pixmap and it
+ is limited to pixmaps that use one character per pixel. The data should be null terminated.
+ Pixmaps use the SC_MARK_PIXMAP marker symbol. You can find the full description of
+ the XPM format here.
+
+ SCI_MARKERSETFORE(int markerNumber, int colour)
+ SCI_MARKERSETBACK(int markerNumber, int colour)
+ These two messages set the foreground and background colour of a marker number.
+ SCI_MARKERSETALPHA(int markerNumber, int alpha)
+ When markers are drawn in the content area, either because there is no margin for them or
+ they are of SC_MARK_BACKGROUND type, they may be drawn translucently by
+ setting an alpha value.
+
+ SCI_MARKERADD(int line, int markerNumber)
+ This message adds marker number markerNumber to a line. The message returns -1 if
+ this fails (illegal line number, out of memory) or it returns a marker handle number that
+ identifies the added marker. You can use this returned handle with SCI_MARKERLINEFROMHANDLE to find where a
+ marker is after moving or combining lines and with SCI_MARKERDELETEHANDLE to delete the marker
+ based on its handle. The message does not check the value of markerNumber, nor does it
+ check if the line already contains the marker.
+
+ SCI_MARKERADDSET(int line, int markerMask)
+ This message can add one or more markers to a line with a single call, specified in the same "one-bit-per-marker" 32-bit integer format returned by
+ SCI_MARKERGET
+ (and used by the mask-based marker search functions
+ SCI_MARKERNEXT and
+ SCI_MARKERPREVIOUS).
+ As with
+ SCI_MARKERADD, no check is made
+ to see if any of the markers are already present on the targeted line.
+
+ SCI_MARKERDELETE(int line, int markerNumber)
+ This searches the given line number for the given marker number and deletes it if it is
+ present. If you added the same marker more than once to the line, this will delete one copy
+ each time it is used. If you pass in a marker number of -1, all markers are deleted from the
+ line.
+
+ SCI_MARKERDELETEALL(int markerNumber)
+ This removes markers of the given number from all lines. If markerNumber is -1, it deletes all
+ markers from all lines.
+
+ SCI_MARKERGET(int line)
+ This returns a 32-bit integer that indicates which markers were present on the line. Bit 0 is
+ set if marker 0 is present, bit 1 for marker 1 and so on.
+
+ SCI_MARKERNEXT(int lineStart, int markerMask)
+ SCI_MARKERPREVIOUS(int lineStart, int markerMask)
+ These messages search efficiently for lines that include a given set of markers. The search
+ starts at line number lineStart and continues forwards to the end of the file
+ (SCI_MARKERNEXT) or backwards to the start of the file
+ (SCI_MARKERPREVIOUS). The markerMask argument should have one bit set
+ for each marker you wish to find. Set bit 0 to find marker 0, bit 1 for marker 1 and so on. The
+ message returns the line number of the first line that contains one of the markers in
+ markerMask or -1 if no marker is found.
+
+ SCI_MARKERLINEFROMHANDLE(int markerHandle)
+ The markerHandle argument is an identifier for a marker returned by SCI_MARKERADD. This function searches
+ the document for the marker with this handle and returns the line number that contains it or -1
+ if it is not found.
+
+ SCI_MARKERDELETEHANDLE(int markerHandle)
+ The markerHandle argument is an identifier for a marker returned by SCI_MARKERADD. This function searches
+ the document for the marker with this handle and deletes the marker if it is found.
+
+ Indicators
+
+ By default, Scintilla organizes the style byte associated with each text byte as 5 bits of
+ style information (for 32 styles) and 3 bits of indicator information for 3 independent
+ indicators so that, for example, syntax errors, deprecated names and bad indentation could all
+ be displayed at once. Indicators may be displayed as simple underlines, squiggly underlines, a
+ line of small 'T' shapes, a line of diagonal hatching, a strike-out or a rectangle around the text.
+
+ The indicators are set using SCI_STARTSTYLING with a INDICS_MASK mask
+ and SCI_SETSTYLING with the values
+ INDIC0_MASK, INDIC1_MASK and INDIC2_MASK.
+
+ If you are using indicators in a buffer that has a lexer active
+ (see SCI_SETLEXER),
+ you must save lexing state information before setting any indicators and restore it afterwards.
+ Use SCI_GETENDSTYLED
+ to retrieve the current "styled to" position and
+ SCI_STARTSTYLING
+ to reset the styling position and mask (0x1f in the default layout of 5 style bits and 3 indicator bits)
+ when you are done.
+
+ The number of bits used for styles can be altered with SCI_SETSTYLEBITS from 0 to 7 bits. The remaining bits
+ can be used for indicators, so there can be from 1 to 8 indicators. However, the
+ INDIC*_MASK constants defined in Scintilla.h all assume 5 bits of
+ styling information and 3 indicators. If you use a different arrangement, you must define your
+ own constants.
+
+ The SCI_INDIC* messages allow you to get and set the visual appearance of the
+ indicators. They all use an indicatorNumber argument in the range 0 to 7 to set
+ the indicator to style. With the default settings, only indicators 0, 1 and 2 will have any
+ visible effect.
+ SCI_INDICSETSTYLE(int indicatorNumber, int
+ indicatorStyle)
+ SCI_INDICGETSTYLE(int indicatorNumber)
+ SCI_INDICSETFORE(int indicatorNumber, int
+ colour)
+ SCI_INDICGETFORE(int indicatorNumber)
+
+
+ SCI_INDICSETSTYLE(int indicatorNumber, int
+ indicatorStyle)
+ SCI_INDICGETSTYLE(int indicatorNumber)
+ These two messages set and get the style for a particular indicator. The indicator styles
+ currently available are:
+
+
+
+
+ | Symbol |
+
+ Value |
+
+ Visual effect |
+
+
+
+
+
+ INDIC_PLAIN |
+
+ 0 |
+
+ Underlined with a single, straight line. |
+
+
+
+ INDIC_SQUIGGLE |
+
+ 1 |
+
+ A squiggly underline. |
+
+
+
+ INDIC_TT |
+
+ 2 |
+
+ A line of small T shapes. |
+
+
+
+ INDIC_DIAGONAL |
+
+ 3 |
+
+ Diagonal hatching. |
+
+
+
+ INDIC_STRIKE |
+
+ 4 |
+
+ Strike out. |
+
+
+
+ INDIC_HIDDEN |
+
+ 5 |
+
+ An indicator with no visual effect. |
+
+
+
+ INDIC_BOX |
+
+ 6 |
+
+ A rectangle around the text. |
+
+
+
+ INDIC_ROUNDBOX |
+
+ 7 |
+
+ A rectangle with rounded corners around the text using translucent drawing with the
+ interior more transparent than the border. |
+
+
+
+
+ The default indicator styles are equivalent to:
+ SCI_INDICSETSTYLE(0, INDIC_SQUIGGLE);
+ SCI_INDICSETSTYLE(1, INDIC_TT);
+ SCI_INDICSETSTYLE(2, INDIC_PLAIN);
+
+ SCI_INDICSETFORE(int indicatorNumber, int colour)
+ SCI_INDICGETFORE(int indicatorNumber)
+ These two messages set and get the colour used to draw an indicator. The default indicator
+ colours are equivalent to:
+ SCI_INDICSETFORE(0, 0x007f00); (dark green)
+ SCI_INDICSETFORE(1, 0xff0000); (light blue)
+ SCI_INDICSETFORE(2, 0x0000ff); (light red)
+
+ Autocompletion
+
+ Autocompletion displays a list box showing likely identifiers based upon the user's typing.
+ The user chooses the currently selected item by pressing the tab character or another character
+ that is a member of the fillup character set defined with SCI_AUTOCSETFILLUPS.
+ Autocompletion is triggered by your application. For example, in C if you detect that the user
+ has just typed fred. you could look up fred, and if it has a known
+ list of members, you could offer them in an autocompletion list. Alternatively, you could
+ monitor the user's typing and offer a list of likely items once their typing has narrowed down
+ the choice to a reasonable list. As yet another alternative, you could define a key code to
+ activate the list.
+
+ When the user makes a selection from the list the container is sent a SCN_AUTOCSELECTION notification message. On return from the notification Scintilla will insert
+ the selected text unless the autocompletion list has been cancelled, for example by the container sending
+ SCI_AUTOCCANCEL.
+
+ To make use of autocompletion you must monitor each character added to the document. See
+ SciTEBase::CharAdded() in SciTEBase.cxx for an example of autocompletion.
+ SCI_AUTOCSHOW(int lenEntered, const char
+ *list)
+ SCI_AUTOCCANCEL
+ SCI_AUTOCACTIVE
+ SCI_AUTOCPOSSTART
+ SCI_AUTOCCOMPLETE
+ SCI_AUTOCSTOPS(<unused>, const char
+ *chars)
+ SCI_AUTOCSETSEPARATOR(char
+ separator)
+ SCI_AUTOCGETSEPARATOR
+ SCI_AUTOCSELECT(<unused>, const char
+ *select)
+ SCI_AUTOCGETCURRENT
+ SCI_AUTOCSETCANCELATSTART(bool
+ cancel)
+ SCI_AUTOCGETCANCELATSTART
+ SCI_AUTOCSETFILLUPS(<unused>, const char
+ *chars)
+ SCI_AUTOCSETCHOOSESINGLE(bool
+ chooseSingle)
+ SCI_AUTOCGETCHOOSESINGLE
+ SCI_AUTOCSETIGNORECASE(bool
+ ignoreCase)
+ SCI_AUTOCGETIGNORECASE
+ SCI_AUTOCSETAUTOHIDE(bool autoHide)
+ SCI_AUTOCGETAUTOHIDE
+ SCI_AUTOCSETDROPRESTOFWORD(bool
+ dropRestOfWord)
+ SCI_AUTOCGETDROPRESTOFWORD
+ SCI_REGISTERIMAGE
+ SCI_CLEARREGISTEREDIMAGES
+ SCI_AUTOCSETTYPESEPARATOR(char separatorCharacter)
+ SCI_AUTOCGETTYPESEPARATOR
+ SCI_AUTOCSETMAXHEIGHT(int rowCount)
+ SCI_AUTOCGETMAXHEIGHT
+ SCI_AUTOCSETMAXWIDTH(int characterCount)
+ SCI_AUTOCGETMAXWIDTH
+
+
+ SCI_AUTOCSHOW(int lenEntered, const char *list)
+ This message causes a list to be displayed. lenEntered is the number of
+ characters of the word already entered and list is the list of words separated by
+ separator characters. The initial separator character is a space but this can be set or got
+ with SCI_AUTOCSETSEPARATOR
+ and SCI_AUTOCGETSEPARATOR.
+
+ The list of words should be in sorted order. If set to ignore case mode with SCI_AUTOCSETIGNORECASE, then
+ strings are matched after being converted to upper case. One result of this is that the list
+ should be sorted with the punctuation characters '[', '\', ']', '^', '_', and '`' sorted after
+ letters.
+
+ SCI_AUTOCCANCEL
+ This message cancels any displayed autocompletion list. When in autocompletion mode, the list
+ should disappear when the user types a character that can not be part of the autocompletion,
+ such as '.', '(' or '[' when typing an identifier. A set of characters that will cancel
+ autocompletion can be specified with SCI_AUTOCSTOPS.
+
+ SCI_AUTOCACTIVE
+ This message returns non-zero if there is an active autocompletion list and zero if there is
+ not.
+
+ SCI_AUTOCPOSSTART
+ This returns the value of the current position when SCI_AUTOCSHOW started display
+ of the list.
+
+ SCI_AUTOCCOMPLETE
+ This message triggers autocompletion. This has the same effect as the tab key.
+
+ SCI_AUTOCSTOPS(<unused>, const char *chars)
+ The chars argument is a string containing a list of characters that will
+ automatically cancel the autocompletion list. When you start the editor, this list is
+ empty.
+
+ SCI_AUTOCSETSEPARATOR(char separator)
+ SCI_AUTOCGETSEPARATOR
+ These two messages set and get the separator character used to separate words in the
+ SCI_AUTOCSHOW list. The default is the space character.
+
+ SCI_AUTOCSELECT(<unused>, const char *select)
+ SCI_AUTOCGETCURRENT
+ This message selects an item in the autocompletion list. It searches the list of words for the
+ first that matches select. By default, comparisons are case sensitive, but you can
+ change this with SCI_AUTOCSETIGNORECASE. The match is character
+ by character for the length of the select string. That is, if select is "Fred" it
+ will match "Frederick" if this is the first item in the list that begins with "Fred". If an
+ item is found, it is selected. If the item is not found, the autocompletion list closes if
+ auto-hide is true (see SCI_AUTOCSETAUTOHIDE).
+ The current selection can be retrieved with SCI_AUTOCGETCURRENT
+
+
+ SCI_AUTOCSETCANCELATSTART(bool cancel)
+ SCI_AUTOCGETCANCELATSTART
+ The default behavior is for the list to be cancelled if the caret moves before the location it
+ was at when the list was displayed. By calling this message with a false argument,
+ the list is not cancelled until the caret moves before the first character of the word being
+ completed.
+
+ SCI_AUTOCSETFILLUPS(<unused>, const char *chars)
+ If a fillup character is typed with an autocompletion list active, the currently selected item
+ in the list is added into the document, then the fillup character is added. Common fillup
+ characters are '(', '[' and '.' but others are possible depending on the language. By default,
+ no fillup characters are set.
+
+ SCI_AUTOCSETCHOOSESINGLE(bool chooseSingle)
+ SCI_AUTOCGETCHOOSESINGLE
+ If you use SCI_AUTOCSETCHOOSESINGLE(1) and a list has only one item, it is
+ automatically added and no list is displayed. The default is to display the list even if there
+ is only a single item.
+
+ SCI_AUTOCSETIGNORECASE(bool ignoreCase)
+ SCI_AUTOCGETIGNORECASE
+ By default, matching of characters to list members is case sensitive. These messages let you
+ set and get case sensitivity.
+
+ SCI_AUTOCSETAUTOHIDE(bool autoHide)
+ SCI_AUTOCGETAUTOHIDE
+ By default, the list is cancelled if there are no viable matches (the user has typed
+ characters that no longer match a list entry). If you want to keep displaying the original
+ list, set autoHide to false. This also effects SCI_AUTOCSELECT.
+
+ SCI_AUTOCSETDROPRESTOFWORD(bool dropRestOfWord)
+ SCI_AUTOCGETDROPRESTOFWORD
+ When an item is selected, any word characters following the caret are first erased if
+ dropRestOfWord is set true. The default is false.
+
+
+ SCI_REGISTERIMAGE(int type, const char *xpmData)
+ SCI_CLEARREGISTEREDIMAGES
+ SCI_AUTOCSETTYPESEPARATOR(char separatorCharacter)
+ SCI_AUTOCGETTYPESEPARATOR
+
+ Autocompletion list items may display an image as well as text. Each image is first registered with an integer
+ type. Then this integer is included in the text of the list separated by a '?' from the text. For example,
+ "fclose?2 fopen" displays image 2 before the string "fclose" and no image before "fopen".
+ The images are in XPM format as is described for
+ SCI_MARKERDEFINEPIXMAP
+ The set of registered images can be cleared with SCI_CLEARREGISTEREDIMAGES and the '?' separator changed
+ with SCI_AUTOCSETTYPESEPARATOR.
+
+
+
+ SCI_AUTOCSETMAXHEIGHT(int rowCount)
+ SCI_AUTOCGETMAXHEIGHT
+
+ Get or set the maximum number of rows that will be visible in an autocompletion list. If there are more rows in the list, then a vertical
+ scrollbar is shown. The default is 5.
+
+
+
+ SCI_AUTOCSETMAXWIDTH(int characterCount)
+ SCI_AUTOCGETMAXWIDTH
+
+ Get or set the maximum width of an autocompletion list expressed as the number of characters in the longest item that will be totally visible.
+ If zero (the default) then the list's width is calculated to fit the item with the most characters. Any items that cannot be fully displayed within
+ the available width are indicated by the presence of ellipsis.
+
+
+ User lists
+
+ User lists use the same internal mechanisms as autocompletion lists, and all the calls
+ listed for autocompletion work on them; you cannot display a user list at the same time as an
+ autocompletion list is active. They differ in the following respects:
+
+ o The SCI_AUTOCSETCHOOSESINGLE message has no
+ effect.
+ o When the user makes a selection you are sent a SCN_USERLISTSELECTION notification message rather than SCN_AUTOCSELECTION.
+
+ BEWARE: if you have set fillup characters or stop characters, these will still be active
+ with the user list, and may result in items being selected or the user list cancelled due to
+ the user typing into the editor.
+
+ SCI_USERLISTSHOW(int listType, const char *list)
+ The listType parameter is returned to the container as the wParam
+ field of the SCNotification
+ structure. It must be greater than 0 as this is how Scintilla tells the difference between an
+ autocompletion list and a user list. If you have different types of list, for example a list of
+ buffers and a list of macros, you can use listType to tell which one has returned
+ a selection.
+
+ Call tips
+
+ Call tips are small windows displaying the arguments to a function and are displayed after
+ the user has typed the name of the function. They normally display characters using the font
+ facename, size and character set defined by
+ STYLE_DEFAULT. You can choose to
+ use STYLE_CALLTIP to define the
+ facename, size, foreground and background colours and character set with
+ SCI_CALLTIPUSESTYLE.
+ This also enables support for Tab characters.
+
+ There is some interaction between call tips and autocompletion lists in that showing a
+ call tip cancels any active autocompletion list, and vice versa.
+
+ Call tips can highlight part of the text within them. You could use this to highlight the
+ current argument to a function by counting the number of commas (or whatever separator your
+ language uses). See SciTEBase::CharAdded() in SciTEBase.cxx for an
+ example of call tip use.
+
+ The mouse may be clicked on call tips and this causes a
+ SCN_CALLTIPCLICK
+ notification to be sent to the container. Small up an down arrows may be displayed within
+ a call tip by, respectively, including the characters '\001', or '\002'. This is useful
+ for showing that there are overloaded variants of one function name and that the user can
+ click on the arrows to cycle through the overloads.
+
+ Alternatively, call tips can be displayed when you leave the mouse pointer for a while over
+ a word in response to the SCN_DWELLSTART notification and cancelled in response to SCN_DWELLEND. This method could be used in a debugger to give
+ the value of a variable, or during editing to give information about the word under the
+ pointer.
+ SCI_CALLTIPSHOW(int posStart, const char
+ *definition)
+ SCI_CALLTIPCANCEL
+ SCI_CALLTIPACTIVE
+ SCI_CALLTIPPOSSTART
+ SCI_CALLTIPSETHLT(int highlightStart, int
+ highlightEnd)
+ SCI_CALLTIPSETBACK(int colour)
+ SCI_CALLTIPSETFORE(int colour)
+ SCI_CALLTIPSETFOREHLT(int colour)
+ SCI_CALLTIPUSESTYLE(int tabsize)
+
+
+ SCI_CALLTIPSHOW(int posStart, const char *definition)
+ This message starts the process by displaying the call tip window. If a call tip is already
+ active, this has no effect.
+ posStart is the position in the document at which to align the call tip. The call
+ tip text is aligned to start 1 line below this character unless you have included up and/or
+ down arrows in the call tip text in which case the tip is aligned to the right-hand edge of
+ the rightmost arrow. The assumption is that you will start the text with something like
+ "\001 1 of 3 \002".
+ definition is the call tip text. This can contain multiple lines separated by
+ '\n' (Line Feed, ASCII code 10) characters. Do not include '\r' (Carriage Return, ASCII
+ code 13), as this will most likely print as an empty box. '\t' (Tab, ASCII code 9) is
+ supported if you set a tabsize with
+ SCI_CALLTIPUSESTYLE.
+
+ SCI_CALLTIPCANCEL
+ This message cancels any displayed call tip. Scintilla will also cancel call tips for you if
+ you use any keyboard commands that are not compatible with editing the argument list of a
+ function.
+
+ SCI_CALLTIPACTIVE
+ This returns 1 if a call tip is active and 0 if it is not active.
+
+ SCI_CALLTIPPOSSTART
+ This message returns the value of the current position when SCI_CALLTIPSHOW
+ started to display the tip.
+
+ SCI_CALLTIPSETHLT(int hlStart, int hlEnd)
+ This sets the region of the call tips text to display in a highlighted style.
+ hlStart is the zero-based index into the string of the first character to
+ highlight and hlEnd is the index of the first character after the highlight.
+ hlEnd must be greater than hlStart; hlEnd-hlStart is the
+ number of characters to highlight. Highlights can extend over line ends if this is
+ required.
+
+ Unhighlighted text is drawn in a mid gray. Selected text is drawn in a dark blue. The
+ background is white. These can be changed with
+ SCI_CALLTIPSETBACK,
+ SCI_CALLTIPSETFORE, and
+ SCI_CALLTIPSETFOREHLT.
+
+
+ SCI_CALLTIPSETBACK(int colour)
+ The background colour of call tips can be set with this message; the default colour is white.
+ It is not a good idea to set a dark colour as the background as the default colour for normal
+ calltip text is mid gray and the defaultcolour for highlighted text is dark blue. This also
+ sets the background colour of STYLE_CALLTIP.
+
+ SCI_CALLTIPSETFORE(int colour)
+ The colour of call tip text can be set with this message; the default colour is mid gray.
+ This also sets the foreground colour of STYLE_CALLTIP.
+
+ SCI_CALLTIPSETFOREHLT(int colour)
+ The colour of highlighted call tip text can be set with this message; the default colour
+ is dark blue.
+
+ SCI_CALLTIPUSESTYLE(int tabsize)
+ This message changes the style used for call tips from STYLE_DEFAULT to
+ STYLE_CALLTIP and sets a tab size in screen pixels. If tabsize is
+ less than 1, Tab characters are not treated specially. Once this call has been used, the
+ call tip foreground and background colours are also taken from the style.
+
+
+ Keyboard commands
+
+ To allow the container application to perform any of the actions available to the user with
+ keyboard, all the keyboard actions are messages. They do not take any parameters. These
+ commands are also used when redefining the key bindings with the SCI_ASSIGNCMDKEY message.
+
+
+
+
+ SCI_LINEDOWN |
+
+ SCI_LINEDOWNEXTEND |
+
+ SCI_LINEDOWNRECTEXTEND |
+
+ SCI_LINESCROLLDOWN |
+
+
+
+ SCI_LINEUP |
+
+ SCI_LINEUPEXTEND |
+
+ SCI_LINEUPRECTEXTEND |
+
+ SCI_LINESCROLLUP |
+
+
+
+ SCI_PARADOWN |
+
+ SCI_PARADOWNEXTEND |
+
+ SCI_PARAUP |
+
+ SCI_PARAUPEXTEND |
+
+
+
+ SCI_CHARLEFT |
+
+ SCI_CHARLEFTEXTEND |
+
+ SCI_CHARLEFTRECTEXTEND |
+
+
+
+ SCI_CHARRIGHT |
+
+ SCI_CHARRIGHTEXTEND |
+
+ SCI_CHARRIGHTRECTEXTEND |
+
+
+
+ SCI_WORDLEFT |
+
+ SCI_WORDLEFTEXTEND |
+
+ SCI_WORDRIGHT |
+
+ SCI_WORDRIGHTEXTEND |
+
+
+
+ SCI_WORDLEFTEND |
+
+ SCI_WORDLEFTENDEXTEND |
+
+ SCI_WORDRIGHTEND |
+
+ SCI_WORDRIGHTENDEXTEND |
+
+
+
+ SCI_WORDPARTLEFT |
+
+ SCI_WORDPARTLEFTEXTEND |
+
+ SCI_WORDPARTRIGHT |
+
+ SCI_WORDPARTRIGHTEXTEND |
+
+
+
+ SCI_HOME |
+
+ SCI_HOMEEXTEND |
+
+ [SCI_HOMERECTEXTEND] |
+
+
+
+ SCI_HOMEDISPLAY |
+
+ SCI_HOMEDISPLAYEXTEND |
+
+ SCI_HOMEWRAP |
+
+ SCI_HOMEWRAPEXTEND |
+
+
+
+ SCI_VCHOME |
+
+ SCI_VCHOMEEXTEND |
+
+ SCI_VCHOMERECTEXTEND |
+
+
+
+ SCI_VCHOMEWRAP |
+
+ SCI_VCHOMEWRAPEXTEND |
+
+
+
+ SCI_LINEEND |
+
+ SCI_LINEENDEXTEND |
+
+ SCI_LINEENDRECTEXTEND |
+
+
+
+ SCI_LINEENDDISPLAY |
+
+ SCI_LINEENDDISPLAYEXTEND |
+
+ SCI_LINEENDWRAP |
+
+ SCI_LINEENDWRAPEXTEND |
+
+
+
+ SCI_DOCUMENTSTART |
+
+ SCI_DOCUMENTSTARTEXTEND |
+
+ SCI_DOCUMENTEND |
+
+ SCI_DOCUMENTENDEXTEND |
+
+
+
+ SCI_PAGEUP |
+
+ SCI_PAGEUPEXTEND |
+
+ SCI_PAGEUPRECTEXTEND |
+
+
+
+ SCI_PAGEDOWN |
+
+ SCI_PAGEDOWNEXTEND |
+
+ SCI_PAGEDOWNRECTEXTEND |
+
+
+
+
+ SCI_STUTTEREDPAGEUP |
+
+ SCI_STUTTEREDPAGEUPEXTEND |
+
+
+
+ SCI_STUTTEREDPAGEDOWN |
+
+ SCI_STUTTEREDPAGEDOWNEXTEND |
+
+
+
+ SCI_DELETEBACK |
+
+ SCI_DELETEBACKNOTLINE |
+
+ SCI_DELWORDLEFT |
+
+ SCI_DELWORDRIGHT |
+
+
+
+ SCI_DELLINELEFT |
+
+ SCI_DELLINERIGHT |
+
+ SCI_LINEDELETE |
+
+
+
+ SCI_LINECUT |
+
+ SCI_LINECOPY |
+
+ SCI_LINETRANSPOSE |
+
+ SCI_LINEDUPLICATE |
+
+
+
+ SCI_LOWERCASE |
+
+ SCI_UPPERCASE |
+
+ SCI_CANCEL |
+
+ SCI_EDITTOGGLEOVERTYPE |
+
+
+
+ SCI_NEWLINE |
+
+ SCI_FORMFEED |
+
+ SCI_TAB |
+
+ SCI_BACKTAB |
+
+
+
+ SCI_SELECTIONDUPLICATE |
+
+
+
+
+
+ The SCI_*EXTEND messages extend the selection.
+
+ The SCI_*RECTEXTEND messages extend the rectangular selection
+ (and convert regular selection to rectangular one, if any).
+
+ The SCI_WORDPART* commands are used to move between word segments marked by
+ capitalisation (aCamelCaseIdentifier) or underscores (an_under_bar_ident).
+
+ The SCI_HOME* commands move the caret to the start of the line, while the
+ SCI_VCHOME*commands move the caret to the first non-blank character of the line
+ (ie. just after the indentation) unless it is already there; in this case, it acts as SCI_HOME*.
+
+ The SCI_[HOME|LINEEND]DISPLAY* commands are used when in line wrap mode to
+ allow movement to the start or end of display lines as opposed to the normal
+ SCI_[HOME|LINEEND] commands which move to the start or end of document lines.
+
+ The SCI_[[VC]HOME|LINEEND]WRAP* commands are like their namesakes
+ SCI_[[VC]HOME|LINEEND]* except they behave differently when word-wrap is enabled:
+ They go first to the start / end of the display line, like SCI_[HOME|LINEEND]DISPLAY*,
+ but if the cursor is already at the point, it goes on to the start or end of the document line,
+ as appropriate for SCI_[[VC]HOME|LINEEND]*.
+
+
+ Key bindings
+
+ There is a default binding of keys to commands that is defined in the Scintilla source in
+ the file KeyMap.cxx by the constant KeyMap::MapDefault[]. This table
+ maps key definitions to SCI_* messages with no parameters (mostly the keyboard commands discussed above, but any Scintilla
+ command that has no arguments can be mapped). You can change the mapping to suit your own
+ requirements.
+ SCI_ASSIGNCMDKEY(int keyDefinition, int
+ sciCommand)
+ SCI_CLEARCMDKEY(int keyDefinition)
+ SCI_CLEARALLCMDKEYS
+ SCI_NULL
+
+
+ keyDefinition
+ A key definition contains the key code in the low 16-bits and the key modifiers in the high
+ 16-bits. To combine keyCode and keyMod set:
+
+ keyDefinition = keyCode + (keyMod << 16)
+
+ The key code is a visible or control character or a key from the SCK_*
+ enumeration, which contains:
+ SCK_ADD, SCK_BACK, SCK_DELETE, SCK_DIVIDE,
+ SCK_DOWN, SCK_END, SCK_ESCAPE, SCK_HOME,
+ SCK_INSERT, SCK_LEFT, SCK_NEXT (Page Down),
+ SCK_PRIOR (Page Up), SCK_RETURN, SCK_RIGHT,
+ SCK_SUBTRACT, SCK_TAB, and SCK_UP.
+
+ The modifiers are a combination of zero or more of SCMOD_ALT,
+ SCMOD_CTRL, and SCMOD_SHIFT. If you are building a table, you might
+ want to use SCMOD_NORM, which has the value 0, to mean no modifiers.
+
+ SCI_ASSIGNCMDKEY(int keyDefinition, int sciCommand)
+ This assigns the given key definition to a Scintilla command identified by
+ sciCommand. sciCommand can be any SCI_* command that has
+ no arguments.
+
+ SCI_CLEARCMDKEY(int keyDefinition)
+ This makes the given key definition do nothing by assigning the action SCI_NULL
+ to it.
+
+ SCI_CLEARALLCMDKEYS
+ This command removes all keyboard command mapping by setting an empty mapping table.
+
+ SCI_NULL
+ The SCI_NULL does nothing and is the value assigned to keys that perform no
+ action. SCI_NULL ensures that keys do not propagate to the parent window as that may
+ cause focus to move. If you want the standard platform behaviour use the constant 0 instead.
+
+
+
+
+ Clicking the wrong button on the mouse pops up a short default editing menu. This may be
+ turned off with SCI_USEPOPUP(0). If you turn it off, context menu commands (in
+ Windows, WM_CONTEXTMENU) will not be handled by Scintilla, so the parent of the
+ Scintilla window will have the opportunity to handle the message.
+
+ Macro recording
+
+ Start and stop macro recording mode. In macro recording mode, actions are reported to the
+ container through SCN_MACRORECORD
+ notifications. It is then up to the container to
+ record these actions for future replay.
+
+ SCI_STARTRECORD
+ SCI_STOPRECORD
+ These two messages turn macro recording on and off.
+
+ Printing
+
+ On Windows SCI_FORMATRANGE can be used to draw the text onto a display context
+ which can include a printer display context. Printed output shows text styling as on the
+ screen, but it hides all margins except a line number margin. All special marker effects are
+ removed and the selection and caret are hidden.
+ SCI_FORMATRANGE(bool bDraw, RangeToFormat
+ *pfr)
+ SCI_SETPRINTMAGNIFICATION(int
+ magnification)
+ SCI_GETPRINTMAGNIFICATION
+ SCI_SETPRINTCOLOURMODE(int mode)
+ SCI_GETPRINTCOLOURMODE
+ SCI_SETPRINTWRAPMODE
+ SCI_GETPRINTWRAPMODE
+
+
+ SCI_FORMATRANGE(bool bDraw, RangeToFormat *pfr)
+ This call allows Windows users to render a range of text into a device context. If you use
+ this for printing, you will probably want to arrange a page header and footer; Scintilla does
+ not do this for you. See SciTEWin::Print() in SciTEWinDlg.cxx for an
+ example. Each use of this message renders a range of text into a rectangular area and returns
+ the position in the document of the next character to print.
+
+ bDraw controls if any output is done. Set this to false if you are paginating
+ (for example, if you use this with MFC you will need to paginate in
+ OnBeginPrinting() before you output each page.
+
+struct RangeToFormat {
+ SurfaceID hdc; // The HDC (device context) we print to
+ SurfaceID hdcTarget; // The HDC we use for measuring (may be same as hdc)
+ PRectangle rc; // Rectangle in which to print
+ PRectangle rcPage; // Physically printable page size
+ CharacterRange chrg; // Range of characters to print
+};
+
+
+ hdc and hdcTarget should both be set to the device context handle
+ of the output device (usually a printer). If you print to a metafile these will not be the same
+ as Windows metafiles (unlike extended metafiles) do not implement the full API for returning
+ information. In this case, set hdcTarget to the screen DC.
+ rcPage is the rectangle {0, 0, maxX, maxY} where maxX+1
+ and maxY+1 are the number of physically printable pixels in x and y.
+ rc is the rectangle to render the text in (which will, of course, fit within the
+ rectangle defined by rcPage).
+ chrg.cpMin and chrg.cpMax define the start position and maximum
+ position of characters to output. All of each line within this character range is drawn.
+
+ When printing, the most tedious part is always working out what the margins should be to
+ allow for the non-printable area of the paper and printing a header and footer. If you look at
+ the printing code in SciTE, you will find that most of it is taken up with this. The loop that
+ causes Scintilla to render text is quite simple if you strip out all the margin, non-printable
+ area, header and footer code.
+
+ SCI_SETPRINTMAGNIFICATION(int magnification)
+ SCI_GETPRINTMAGNIFICATION
+ SCI_GETPRINTMAGNIFICATION lets you to print at a different size than the screen
+ font. magnification is the number of points to add to the size of each screen
+ font. A value of -3 or -4 gives reasonably small print. You can get this value with
+ SCI_GETPRINTMAGNIFICATION.
+
+ SCI_SETPRINTCOLOURMODE(int mode)
+ SCI_GETPRINTCOLOURMODE
+ These two messages set and get the method used to render coloured text on a printer that is
+ probably using white paper. It is especially important to consider the treatment of colour if
+ you use a dark or black screen background. Printing white on black uses up toner and ink very
+ many times faster than the other way around. You can set the mode to one of:
+
+
+
+
+ | Symbol |
+
+ Value |
+
+ Purpose |
+
+
+
+
+
+ SC_PRINT_NORMAL |
+
+ 0 |
+
+ Print using the current screen colours. This is the default. |
+
+
+
+ SC_PRINT_INVERTLIGHT |
+
+ 1 |
+
+ If you use a dark screen background this saves ink by inverting the light value of
+ all colours and printing on a white background. |
+
+
+
+ SC_PRINT_BLACKONWHITE |
+
+ 2 |
+
+ Print all text as black on a white background. |
+
+
+
+ SC_PRINT_COLOURONWHITE |
+
+ 3 |
+
+ Everything prints in its own colour on a white background. |
+
+
+
+ SC_PRINT_COLOURONWHITEDEFAULTBG |
+
+ 4 |
+
+ Everything prints in its own colour on a white background except that line numbers
+ use their own background colour. |
+
+
+
+
+ SCI_SETPRINTWRAPMODE(int wrapMode)
+ SCI_GETPRINTWRAPMODE
+ These two functions get and set the printer wrap mode. wrapMode can be
+ set to SC_WRAP_NONE (0), SC_WRAP_WORD (1) or
+ SC_WRAP_CHAR (2). The default is
+ SC_WRAP_WORD, which wraps printed output so that all characters fit
+ into the print rectangle. If you set SC_WRAP_NONE, each line of text
+ generates one line of output and the line is truncated if it is too long to fit
+ into the print area.
+ SC_WRAP_WORD tries to wrap only between words as indicated by
+ white space or style changes although if a word is longer than a line, it will be wrapped before
+ the line end. SC_WRAP_CHAR is preferred to
+ SC_WRAP_WORD for Asian languages where there is no white space
+ between words.
+
+ Direct access
+ SCI_GETDIRECTFUNCTION
+ SCI_GETDIRECTPOINTER
+
+
+ On Windows, the message-passing scheme used to communicate between the container and
+ Scintilla is mediated by the operating system SendMessage function and can lead to
+ bad performance when calling intensively. To avoid this overhead, Scintilla provides messages
+ that allow you to call the Scintilla message function directly. The code to do this in C/C++ is
+ of the form:
+
+#include "Scintilla.h"
+SciFnDirect pSciMsg = (SciFnDirect)SendMessage(hSciWnd, SCI_GETDIRECTFUNCTION, 0, 0);
+sptr_t pSciWndData = (sptr_t)SendMessage(hSciWnd, SCI_GETDIRECTPOINTER, 0, 0);
+
+// now a wrapper to call Scintilla directly
+sptr_t CallScintilla(unsigned int iMessage, uptr_t wParam, sptr_t lParam){
+ return pSciMsg(pSciWndData, iMessage, wParam, lParam);
+}
+
+
+ SciFnDirect, sptr_t and uptr_t are declared in
+ Scintilla.h. hSciWnd is the window handle returned when you created
+ the Scintilla window.
+
+ While faster, this direct calling will cause problems if performed from a different thread
+ to the native thread of the Scintilla window in which case SendMessage(hSciWnd, SCI_*,
+ wParam, lParam) should be used to synchronize with the window's thread.
+
+ This feature also works on GTK+ but has no significant impact on speed.
+
+ From version 1.47 on Windows, Scintilla exports a function called
+ Scintilla_DirectFunction that can be used the same as the function returned by
+ SCI_GETDIRECTFUNCTION. This saves you the call to
+ SCI_GETDIRECTFUNCTION and the need to call Scintilla indirectly via the function
+ pointer.
+
+ SCI_GETDIRECTFUNCTION
+ This message returns the address of the function to call to handle Scintilla messages without
+ the overhead of passing through the Windows messaging system. You need only call this once,
+ regardless of the number of Scintilla windows you create.
+
+ SCI_GETDIRECTPOINTER
+ This returns a pointer to data that identifies which Scintilla window is in use. You must call
+ this once for each Scintilla window you create. When you call the direct function, you must
+ pass in the direct pointer associated with the target window.
+
+ Multiple views
+
+ A Scintilla window and the document that it displays are separate entities. When you create
+ a new window, you also create a new, empty document. Each document has a reference count that
+ is initially set to 1. The document also has a list of the Scintilla windows that are linked to
+ it so when any window changes the document, all other windows in which it appears are notified
+ to cause them to update. The system is arranged in this way so that you can work with many
+ documents in a single Scintilla window and so you can display a single document in multiple
+ windows (for use with splitter windows).
+
+ Although these messages use document *pDoc, to ensure compatibility with future
+ releases of Scintilla you should treat pDoc as an opaque void*. That
+ is, you can use and store the pointer as described in this section but you should not
+ dereference it.
+ SCI_GETDOCPOINTER
+ SCI_SETDOCPOINTER(<unused>, document
+ *pDoc)
+ SCI_CREATEDOCUMENT
+ SCI_ADDREFDOCUMENT(<unused>, document
+ *pDoc)
+ SCI_RELEASEDOCUMENT(<unused>, document
+ *pDoc)
+
+
+ SCI_GETDOCPOINTER
+ This returns a pointer to the document currently in use by the window. It has no other
+ effect.
+
+ SCI_SETDOCPOINTER(<unused>, document *pDoc)
+ This message does the following:
+ 1. It removes the current window from the list held by the current document.
+ 2. It reduces the reference count of the current document by 1.
+ 3. If the reference count reaches 0, the document is deleted.
+ 4. pDoc is set as the new document for the window.
+ 5. If pDoc was 0, a new, empty document is created and attached to the
+ window.
+ 6. If pDoc was not 0, its reference count is increased by 1.
+
+ SCI_CREATEDOCUMENT
+ This message creates a new, empty document and returns a pointer to it. This document is not
+ selected into the editor and starts with a reference count of 1. This means that you have
+ ownership of it and must either reduce its reference count by 1 after using
+ SCI_SETDOCPOINTER so that the Scintilla window owns it or you must make sure that
+ you reduce the reference count by 1 with SCI_RELEASEDOCUMENT before you close the
+ application to avoid memory leaks.
+
+ SCI_ADDREFDOCUMENT(<unused>, document *pDoc)
+ This increases the reference count of a document by 1. If you want to replace the current
+ document in the Scintilla window and take ownership of the current document, for example if you
+ are editing many documents in one window, do the following:
+ 1. Use SCI_GETDOCPOINTER to get a pointer to the document,
+ pDoc.
+ 2. Use SCI_ADDREFDOCUMENT(0, pDoc) to increment the reference count.
+ 3. Use SCI_SETDOCPOINTER(0, pNewDoc) to set a different document or
+ SCI_SETDOCPOINTER(0, 0) to set a new, empty document.
+
+ SCI_RELEASEDOCUMENT(<unused>, document *pDoc)
+ This message reduces the reference count of the document identified by pDoc. pDoc
+ must be the result of SCI_GETDOCPOINTER or SCI_CREATEDOCUMENT and
+ must point at a document that still exists. If you call this on a document with a reference
+ count of 1 that is still attached to a Scintilla window, bad things will happen. To keep the
+ world spinning in its orbit you must balance each call to SCI_CREATEDOCUMENT or
+ SCI_ADDREFDOCUMENT with a call to SCI_RELEASEDOCUMENT.
+
+ Folding
+
+ The fundamental operation in folding is making lines invisible or visible. Line visibility
+ is a property of the view rather than the document so each view may be displaying a different
+ set of lines. From the point of view of the user, lines are hidden and displayed using fold
+ points. Generally, the fold points of a document are based on the hierarchical structure of the
+ document contents. In Python, the hierarchy is determined by indentation and in C++ by brace
+ characters. This hierarchy can be represented within a Scintilla document object by attaching a
+ numeric "fold level" to each line. The fold level is most easily set by a lexer, but you can
+ also set it with messages.
+
+ It is up to your code to set the connection between user actions and folding and unfolding.
+ The best way to see how this is done is to search the SciTE source code for the messages used
+ in this section of the documentation and see how they are used. You will also need to use
+ markers and a folding margin to complete your folding implementation.
+ The "fold" property should be set to "1" with
+ SCI_SETPROPERTY("fold", "1") to enable folding.
+ SCI_VISIBLEFROMDOCLINE(int
+ docLine)
+ SCI_DOCLINEFROMVISIBLE(int
+ displayLine)
+ SCI_SHOWLINES(int lineStart, int lineEnd)
+ SCI_HIDELINES(int lineStart, int lineEnd)
+ SCI_GETLINEVISIBLE(int line)
+ SCI_SETFOLDLEVEL(int line, int level)
+ SCI_GETFOLDLEVEL(int line)
+ SCI_SETFOLDFLAGS(int flags)
+ SCI_GETLASTCHILD(int line, int level)
+ SCI_GETFOLDPARENT(int line)
+ SCI_SETFOLDEXPANDED(int line, bool
+ expanded)
+ SCI_GETFOLDEXPANDED(int line)
+ SCI_TOGGLEFOLD(int line)
+ SCI_ENSUREVISIBLE(int line)
+ SCI_ENSUREVISIBLEENFORCEPOLICY(int
+ line)
+
+
+ SCI_VISIBLEFROMDOCLINE(int docLine)
+ When some lines are folded, then a particular line in the document may be displayed at a
+ different position to its document position. If no lines are folded, this message returns
+ docLine. Otherwise, this returns the display line (counting the very first visible
+ line as 0). The display line of an invisible line is the same as the previous visible line. The
+ display line number of the first line in the document is 0. If there is folding and
+ docLine is outside the range of lines in the document, the return value is -1.
+ Lines can occupy more than one display line if they wrap.
+
+ SCI_DOCLINEFROMVISIBLE(int displayLine)
+ When some lines are hidden, then a particular line in the document may be displayed at a
+ different position to its document position. This message returns the document line number that
+ corresponds to a display line (counting the display line of the first line in the document as
+ 0). If displayLine is less than or equal to 0, the result is 0. If
+ displayLine is greater than or equal to the number of displayed lines, the result
+ is the number of lines in the document.
+
+ SCI_SHOWLINES(int lineStart, int lineEnd)
+ SCI_HIDELINES(int lineStart, int lineEnd)
+ SCI_GETLINEVISIBLE(int line)
+ The first two messages mark a range of lines as visible or invisible and then redraw the
+ display. The third message reports on the visible state of a line and returns 1 if it is
+ visible and 0 if it is not visible. These messages have no effect on fold levels or fold
+ flags.
+
+ SCI_SETFOLDLEVEL(int line, int level)
+ SCI_GETFOLDLEVEL(int line)
+ These two messages set and get a 32-bit value that contains the fold level of a line and some
+ flags associated with folding. The fold level is a number in the range 0 to
+ SC_FOLDLEVELNUMBERMASK (4095). However, the initial fold level is set to
+ SC_FOLDLEVELBASE (1024) to allow unsigned arithmetic on folding levels. There are
+ two addition flag bits. SC_FOLDLEVELWHITEFLAG indicates that the line is blank and
+ allows it to be treated slightly different then its level may indicate. For example, blank
+ lines should generally not be fold points and will be considered part of the preceding section even though
+ they may have a lesser fold level.
+ SC_FOLDLEVELHEADERFLAG indicates that
+ the line is a header (fold point).
+
+ Use SCI_GETFOLDLEVEL(line) & SC_FOLDLEVELNUMBERMASK to get the fold level
+ of a line. Likewise, use SCI_GETFOLDLEVEL(line) & SC_FOLDLEVEL*FLAG to get the
+ state of the flags. To set the fold level you must or in the associated flags. For instance, to
+ set the level to thisLevel and mark a line as being a fold point use:
+ SCI_SETFOLDLEVEL(line, thisLevel | SC_FOLDLEVELHEADERFLAG).
+ If you use a lexer, you should not need to use SCI_SETFOLDLEVEL as this is far
+ better handled by the lexer. You will need to use SCI_GETFOLDLEVEL to decide how
+ to handle user folding requests. If you do change the fold levels, the folding margin will
+ update to match your changes.
+
+ SCI_SETFOLDFLAGS(int flags)
+ In addition to showing markers in the folding margin, you can indicate folds to the user by
+ drawing lines in the text area. The lines are drawn in the foreground colour set for STYLE_DEFAULT. Bits set in
+ flags determine where folding lines are drawn:
+
+
+
+
+
+ | Value |
+
+ Effect |
+
+
+
+
+
+ | 1 |
+
+ Experimental - draw boxes if expanded |
+
+
+
+ | 2 |
+
+ Draw above if expanded |
+
+
+
+ | 4 |
+
+ Draw above if not expanded |
+
+
+
+ | 8 |
+
+ Draw below if expanded |
+
+
+
+ | 16 |
+
+ Draw below if not expanded |
+
+
+
+ | 64 |
+
+ display hexadecimal fold levels in line margin to aid debugging of
+ folding. This feature needs to be redesigned to be sensible. |
+
+
+
+
+ This message causes the display to redraw.
+
+ SCI_GETLASTCHILD(int startLine, int level)
+ This message searches for the next line after startLine, that has a folding level
+ that is less than or equal to level and then returns the previous line number. If
+ you set level to -1, level is set to the folding level of line
+ startLine. If from is a fold point, SCI_GETLASTCHILD(from,
+ -1) returns the last line that would be in made visible or hidden by toggling the fold
+ state.
+
+ SCI_GETFOLDPARENT(int startLine)
+ This message returns the line number of the first line before startLine that is
+ marked as a fold point with SC_FOLDLEVELHEADERFLAG and has a fold level less than
+ the startLine. If no line is found, or if the header flags and fold levels are
+ inconsistent, the return value is -1.
+
+ SCI_TOGGLEFOLD(int line)
+ Each fold point may be either expanded, displaying all its child lines, or contracted, hiding
+ all the child lines. This message toggles the folding state of the given line as long as it has
+ the SC_FOLDLEVELHEADERFLAG set. This message takes care of folding or expanding
+ all the lines that depend on the line. The display updates after this message.
+
+ SCI_SETFOLDEXPANDED(int line, bool expanded)
+ SCI_GETFOLDEXPANDED(int line)
+ These messages set and get the expanded state of a single line. The set message has no effect
+ on the visible state of the line or any lines that depend on it. It does change the markers in
+ the folding margin. If you ask for the expansion state of a line that is outside the document,
+ the result is false (0).
+
+ If you just want to toggle the fold state of one line and handle all the lines that are
+ dependent on it, it is much easier to use SCI_TOGGLEFOLD. You would use the
+ SCI_SETFOLDEXPANDED message to process many folds without updating the display
+ until you had finished. See SciTEBase::FoldAll() and
+ SciTEBase::Expand() for examples of the use of these messages.
+
+ SCI_ENSUREVISIBLE(int line)
+ SCI_ENSUREVISIBLEENFORCEPOLICY(int line)
+ A line may be hidden because more than one of its parent lines is contracted. Both these
+ message travels up the fold hierarchy, expanding any contracted folds until they reach the top
+ level. The line will then be visible. If you use SCI_ENSUREVISIBLEENFORCEPOLICY,
+ the vertical caret policy set by SCI_SETVISIBLEPOLICY is then applied.
+
+ Line wrapping
+
+ SCI_SETWRAPMODE(int wrapMode)
+ SCI_GETWRAPMODE
+ SCI_SETWRAPVISUALFLAGS(int wrapVisualFlags)
+ SCI_GETWRAPVISUALFLAGS
+ SCI_SETWRAPSTARTINDENT(int indent)
+ SCI_GETWRAPSTARTINDENT
+ SCI_SETLAYOUTCACHE(int cacheMode)
+ SCI_GETLAYOUTCACHE
+ SCI_LINESSPLIT(int pixelWidth)
+ SCI_LINESJOIN
+ SCI_WRAPCOUNT(int docLine)
+
+
+ By default, Scintilla does not wrap lines of text. If you enable line wrapping, lines wider
+ than the window width are continued on the following lines. Lines are broken after space or tab
+ characters or between runs of different styles. If this is not possible because a word in one
+ style is wider than the window then the break occurs after the last character that completely
+ fits on the line. The horizontal scroll bar does not appear when wrap mode is on.
+
+ For wrapped lines Scintilla can draw visual flags (little arrows) at end of a a subline of a
+ wrapped line and at begin of the next subline. These can be enabled individually, but if Scintilla
+ draws the visual flag at begin of the next subline this subline will be indented by one char.
+ Independent from drawing a visual flag at the begin the subline can have an indention.
+
+ Much of the time used by Scintilla is spent on laying out and drawing text. The same text
+ layout calculations may be performed many times even when the data used in these calculations
+ does not change. To avoid these unnecessary calculations in some circumstances, the line layout
+ cache can store the results of the calculations. The cache is invalidated whenever the
+ underlying data, such as the contents or styling of the document changes. Caching the layout of
+ the whole document has the most effect, making dynamic line wrap as much as 20 times faster but
+ this requires 7 times the memory required by the document contents plus around 80 bytes per
+ line.
+
+ Wrapping is not performed immediately there is a change but is delayed until the display
+ is redrawn. This delay improves peformance by allowing a set of changes to be performed
+ and then wrapped and displayed once. Because of this, some operations may not occur as
+ expected. If a file is read and the scroll position moved to a particular line in the text,
+ such as occurs when a container tries to restore a previous editing session, then
+ the scroll position will have been determined before wrapping so an unexpected range
+ of text will be displayed. To scroll to the position correctly, delay the scroll until the
+ wrapping has been performed by waiting for an initial
+ SCN_PAINTED notification.
+
+ SCI_SETWRAPMODE(int wrapMode)
+ SCI_GETWRAPMODE
+ Set wrapMode to SC_WRAP_WORD (1) to enable wrapping
+ on word boundaries, SC_WRAP_CHAR (2) to enable wrapping
+ between any characters, and to SC_WRAP_NONE (0) to disable line
+ wrapping. SC_WRAP_CHAR is preferred to
+ SC_WRAP_WORD for Asian languages where there is no white space
+ between words.
+
+
+ SCI_SETWRAPVISUALFLAGS(int wrapVisualFlags)
+ SCI_GETWRAPVISUALFLAGS
+ You can enable the drawing of visual flags to indicate a line is wrapped. Bits set in
+ wrapVisualFlags determine which visual flags are drawn.
+
+
+
+
+ | Symbol |
+ Value |
+ Effect |
+
+
+
+
+
+ SC_WRAPVISUALFLAG_NONE |
+ 0 |
+ No visual flags |
+
+
+
+ SC_WRAPVISUALFLAG_END |
+ 1 |
+ Visual flag at end of subline of a wrapped line. |
+
+
+
+ SC_WRAPVISUALFLAG_START |
+ 2 |
+ Visual flag at begin of subline of a wrapped line.
+ Subline is indented by at least 1 to make room for the flag.
+ |
+
+
+
+
+ SCI_SETWRAPVISUALFLAGSLOCATION(int wrapVisualFlagsLocation)
+ SCI_GETWRAPVISUALFLAGSLOCATION
+ You can set wether the visual flags to indicate a line is wrapped are drawn near the border or near the text.
+ Bits set in wrapVisualFlagsLocation set the location to near the text for the corresponding visual flag.
+
+
+
+
+ | Symbol |
+ Value |
+ Effect |
+
+
+
+
+
+ SC_WRAPVISUALFLAGLOC_DEFAULT |
+ 0 |
+ Visual flags drawn near border |
+
+
+
+ SC_WRAPVISUALFLAGLOC_END_BY_TEXT |
+ 1 |
+ Visual flag at end of subline drawn near text |
+
+
+
+ SC_WRAPVISUALFLAGLOC_START_BY_TEXT |
+ 2 |
+ Visual flag at begin of subline drawn near text |
+
+
+
+
+
+
+ SCI_SETWRAPSTARTINDENT(int indent)
+ SCI_GETWRAPSTARTINDENT
+ SCI_SETWRAPSTARTINDENT sets the size of indentation of sublines for
+ wrapped lines in terms of the width of a space in
+ STYLE_DEFAULT.
+ There are no limits on indent sizes, but values less than 0 or large values may have
+ undesirable effects.
+ The indention of sublines is independent of visual flags, but if
+ SC_WRAPVISUALFLAG_START is set an indent of at least 1 is used.
+
+
+ SCI_SETLAYOUTCACHE(int cacheMode)
+ SCI_GETLAYOUTCACHE
+ You can set cacheMode to one of the symbols in the table:
+
+
+
+
+ | Symbol |
+
+ Value |
+
+ Layout cached for these lines |
+
+
+
+
+
+ SC_CACHE_NONE |
+
+ 0 |
+
+ No lines are cached. |
+
+
+
+ SC_CACHE_CARET |
+
+ 1 |
+
+ The line containing the text caret. This is the default. |
+
+
+
+ SC_CACHE_PAGE |
+
+ 2 |
+
+ Visible lines plus the line containing the caret. |
+
+
+
+ SC_CACHE_DOCUMENT |
+
+ 3 |
+
+ All lines in the document. |
+
+
+
+
+
+ SCI_LINESSPLIT(int pixelWidth)
+ Split a range of lines indicated by the target into lines that are at most pixelWidth wide.
+ Splitting occurs on word boundaries wherever possible in a similar manner to line wrapping.
+ When pixelWidth is 0 then the width of the window is used.
+
+
+ SCI_LINESJOIN
+ Join a range of lines indicated by the target into one line by
+ removing line end characters.
+ Where this would lead to no space between words, an extra space is inserted.
+
+
+ SCI_WRAPCOUNT(int docLine)
+ Document lines can occupy more than one display line if they wrap and this
+ returns the number of display lines needed to wrap a document line.
+
+ Zooming
+
+ Scintilla incorporates a "zoom factor" that lets you make all the text in the document
+ larger or smaller in steps of one point. The displayed point size never goes below 2, whatever
+ zoom factor you set. You can set zoom factors in the range -10 to +20 points.
+ SCI_ZOOMIN
+ SCI_ZOOMOUT
+ SCI_SETZOOM(int zoomInPoints)
+ SCI_GETZOOM
+
+
+ SCI_ZOOMIN
+ SCI_ZOOMOUT
+ SCI_ZOOMIN increases the zoom factor by one point if the current zoom factor is
+ less than 20 points. SCI_ZOOMOUT decreases the zoom factor by one point if the
+ current zoom factor is greater than -10 points.
+
+ SCI_SETZOOM(int zoomInPoints)
+ SCI_GETZOOM
+ These messages let you set and get the zoom factor directly. There is no limit set on the
+ factors you can set, so limiting yourself to -10 to +20 to match the incremental zoom functions
+ is a good idea.
+
+ Long lines
+
+ You can choose to mark lines that exceed a given length by drawing a vertical line or by
+ colouring the background of characters that exceed the set length.
+ SCI_SETEDGEMODE(int mode)
+ SCI_GETEDGEMODE
+ SCI_SETEDGECOLUMN(int column)
+ SCI_GETEDGECOLUMN
+ SCI_SETEDGECOLOUR(int colour)
+ SCI_GETEDGECOLOUR
+
+
+ SCI_SETEDGEMODE(int edgeMode)
+ SCI_GETEDGEMODE
+ These two messages set and get the mode used to display long lines. You can set one of the
+ values in the table:
+
+
+
+
+ | Symbol |
+
+ Value |
+
+ Long line display mode |
+
+
+
+
+
+ EDGE_NONE |
+
+ 0 |
+
+ Long lines are not marked. This is the default state. |
+
+
+
+ EDGE_LINE |
+
+ 1 |
+
+ A vertical line is drawn at the column number set by SCI_SETEDGECOLUMN.
+ This works well for monospaced fonts. The line is drawn at a position based on the width
+ of a space character in STYLE_DEFAULT, so it may not work very well if
+ your styles use proportional fonts or if your style have varied font sizes or you use a
+ mixture of bold, italic and normal text. . |
+
+
+
+ EDGE_BACKGROUND |
+
+ 2 |
+
+ The background colour of characters after the column limit is changed to the colour
+ set by SCI_SETEDGECOLOUR. This is recommended for proportional fonts. |
+
+
+
+
+
+
+
+ SCI_SETEDGECOLUMN(int column)
+ SCI_GETEDGECOLUMN
+ These messages set and get the column number at which to display the long line marker. When
+ drawing lines, the column sets a position in units of the width of a space character in
+ STYLE_DEFAULT. When setting the background colour, the column is a character count
+ (allowing for tabs) into the line.
+
+ SCI_SETEDGECOLOUR(int colour)
+ SCI_GETEDGECOLOUR
+ These messages set and get the colour of the marker used to show that a line has exceeded the
+ length set by SCI_SETEDGECOLUMN.
+
+ Lexer
+
+ If you define the symbol SCI_LEXER when building Scintilla, (this is sometimes
+ called the SciLexer version of Scintilla), lexing support for a wide range programming
+ languages is included and the messages in this section are supported. If you want to set
+ styling and fold points for an unsupported language you can either do this in the container or
+ better still, write your own lexer following the pattern of one of the existing ones.
+
+ Scintilla also supports external lexers. These are DLLs (on Windows) or .so modules (on GTK+/Linux) that export four
+ functions: GetLexerCount, GetLexerName, Lex and
+ Fold. See externalLexer.cxx for more.
+ SCI_SETLEXER(int lexer)
+ SCI_GETLEXER
+ SCI_SETLEXERLANGUAGE(<unused>, char
+ *name)
+ SCI_LOADLEXERLIBRARY(<unused>, char
+ *path)
+ SCI_COLOURISE(int start, int end)
+ SCI_SETPROPERTY(const char *key, const char *value)
+ SCI_GETPROPERTY(const char *key, char *value)
+ SCI_GETPROPERTYEXPANDED(const char *key, char *value)
+ SCI_GETPROPERTYINT(const char *key, int default)
+ SCI_SETKEYWORDS(int keyWordSet, const char
+ *keyWordList)
+ SCI_GETSTYLEBITSNEEDED
+
+
+
+ SCI_SETLEXER(int lexer)
+ SCI_GETLEXER
+ You can select the lexer to use with an integer code from the SCLEX_* enumeration
+ in Scintilla.h. There are two codes in this sequence that do not use lexers:
+ SCLEX_NULL to select no lexing action and SCLEX_CONTAINER which sends
+ the SCN_STYLENEEDED notification to
+ the container whenever a range of text needs to be styled. You cannot use the
+ SCLEX_AUTOMATIC value; this identifies additional external lexers that Scintilla
+ assigns unused lexer numbers to.
+
+ SCI_SETLEXERLANGUAGE(<unused>, const char *name)
+ This message lets you select a lexer by name, and is the only method if you are using an
+ external lexer or if you have written a lexer module for a language of your own and do not wish
+ to assign it an explicit lexer number. To select an existing lexer, set name to
+ match the (case sensitive) name given to the module, for example "ada" or "python", not "Ada"
+ or "Python". To locate the name for the built-in lexers, open the relevant
+ Lex*.cxx file and search for LexerModule. The third argument in the
+ LexerModule constructor is the name to use.
+
+ To test if your lexer assignment worked, use SCI_GETLEXER before and after setting the new lexer to
+ see if the lexer number changed.
+
+ SCI_LOADLEXERLIBRARY(<unused>, const char *path)
+ Load a lexer implemented in a shared library. This is a .so file on GTK+/Linux or a .DLL file on Windows.
+
+
+ SCI_COLOURISE(int startPos, int endPos)
+ This requests the current lexer or the container (if the lexer is set to
+ SCLEX_CONTAINER) to style the document between startPos and
+ endPos. If endPos is -1, the document is styled from
+ startPos to the end. If the "fold" property is set to
+ "1" and your lexer or container supports folding, fold levels are also set. This
+ message causes a redraw.
+
+ SCI_SETPROPERTY(const char *key, const char *value)
+ You can communicate settings to lexers with keyword:value string pairs. There is no limit to
+ the number of keyword pairs you can set, other than available memory. key is a
+ case sensitive keyword, value is a string that is associated with the keyword. If
+ there is already a value string associated with the keyword, it is replaced. If you pass a zero
+ length string, the message does nothing. Both key and value are used
+ without modification; extra spaces at the beginning or end of key are
+ significant.
+
+ The value string can refer to other keywords. For example,
+ SCI_SETPROPERTY("foldTimes10", "$(fold)0") stores the string
+ "$(fold)0", but when this is accessed, the $(fold) is replaced by the
+ value of the "fold" keyword (or by nothing if this keyword does not exist).
+
+ Currently the "fold" property is defined for most of the lexers to set the fold structure if
+ set to "1". SCLEX_PYTHON understands "tab.timmy.whinge.level" as a
+ setting that determines how to indicate bad indentation. Most keywords have values that are
+ interpreted as integers. Search the lexer sources for GetPropertyInt to see how
+ properties are used.
+
+ SCI_GETPROPERTY(const char *key, char *value)
+ Lookup a keyword:value pair using the specified key; if found, copy the value to the user-supplied
+ buffer and return the length (not including the terminating 0). If not found, copy an empty string
+ to the buffer and return 0.
+
+ Note that "keyword replacement" as described in
+ SCI_SETPROPERTY will not be performed.
+
+ If the value argument is 0 then the length that should be allocated to store the value is returned;
+ again, the terminating 0 is not included.
+
+ SCI_GETPROPERTYEXPANDED(const char *key, char *value)
+ Lookup a keyword:value pair using the specified key; if found, copy the value to the user-supplied
+ buffer and return the length (not including the terminating 0). If not found, copy an empty string
+ to the buffer and return 0.
+
+ Note that "keyword replacement" as described in
+ SCI_SETPROPERTY will be performed.
+
+ If the value argument is 0 then the length that should be allocated to store the value (including any indicated keyword replacement)
+ is returned; again, the terminating 0 is not included.
+
+ SCI_GETPROPERTYINT(const char *key, int default)
+ Lookup a keyword:value pair using the specified key; if found, interpret the value as an integer and return it.
+ If not found (or the value is an empty string) then return the supplied default. If the keyword:value pair is found but is not
+ a number, then return 0.
+
+ Note that "keyword replacement" as described in
+ SCI_SETPROPERTY will be performed before any numeric interpretation.
+
+ SCI_SETKEYWORDS(int keyWordSet, const char *keyWordList)
+ You can set up to 9 lists of keywords for use by the current lexer. This was increased from 6
+ at revision 1.50. keyWordSet can be 0 to 8 (actually 0 to KEYWORDSET_MAX)
+ and selects which keyword list to replace. keyWordList is a list of keywords
+ separated by spaces, tabs, "\n" or "\r" or any combination of these.
+ It is expected that the keywords will be composed of standard ASCII printing characters,
+ but there is nothing to stop you using any non-separator character codes from 1 to 255
+ (except common sense).
+
+ How these keywords are used is entirely up to the lexer. Some languages, such as HTML may
+ contain embedded languages, VBScript and JavaScript are common for HTML. For HTML, key word set
+ 0 is for HTML, 1 is for JavaScript and 2 is for VBScript, 3 is for Python, 4 is for PHP and 5
+ is for SGML and DTD keywords. Review the lexer code to see examples of keyword list. A fully
+ conforming lexer sets the fourth argument of the LexerModule constructor to be a
+ list of strings that describe the uses of the keyword lists.
+
+ Alternatively, you might use set 0 for general keywords, set 1 for keywords that cause
+ indentation and set 2 for keywords that cause unindentation. Yet again, you might have a simple
+ lexer that colours keywords and you could change languages by changing the keywords in set 0.
+ There is nothing to stop you building your own keyword lists into the lexer, but this means
+ that the lexer must be rebuilt if more keywords are added.
+
+ SCI_GETSTYLEBITSNEEDED
+ Retrieve the number of bits the current lexer needs for styling. This should normally be the argument
+ to SCI_SETSTYLEBITS.
+
+
+ Notifications
+
+ Notifications are sent (fired) from the Scintilla control to its container when an event has
+ occurred that may interest the container. Notifications are sent using the
+ WM_NOTIFY message on Windows and the "notify" signal on GTK+. The container is
+ passed a SCNotification structure containing information about the event.
+
+struct NotifyHeader { // This matches the Win32 NMHDR structure
+ void *hwndFrom; // environment specific window handle/pointer
+ uptr_t idFrom; // CtrlID of the window issuing the notification
+ unsigned int code; // The SCN_* notification code
+};
+
+struct SCNotification {
+ struct NotifyHeader nmhdr;
+ int position;
+ // SCN_STYLENEEDED, SCN_DOUBLECLICK, SCN_MODIFIED, SCN_DWELLSTART,
+ // SCN_DWELLEND, SCN_CALLTIPCLICK,
+ // SCN_HOTSPOTCLICK, SCN_HOTSPOTDOUBLECLICK
+ int ch; // SCN_CHARADDED, SCN_KEY
+ int modifiers; // SCN_KEY, SCN_HOTSPOTCLICK, SCN_HOTSPOTDOUBLECLICK
+ 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, SCN_DOUBLECLICK
+ int foldLevelNow; // SCN_MODIFIED
+ int foldLevelPrev; // SCN_MODIFIED
+ int margin; // SCN_MARGINCLICK
+ int listType; // SCN_USERLISTSELECTION, SCN_AUTOCSELECTION
+ int x; // SCN_DWELLSTART, SCN_DWELLEND
+ int y; // SCN_DWELLSTART, SCN_DWELLEND
+};
+
+
+ The notification messages that your container can choose to handle and the messages
+ associated with them are:
+ SCN_STYLENEEDED
+ SCN_CHARADDED
+ SCN_SAVEPOINTREACHED
+ SCN_SAVEPOINTLEFT
+ SCN_MODIFYATTEMPTRO
+ SCN_KEY
+ SCN_DOUBLECLICK
+ SCN_UPDATEUI
+ SCN_MODIFIED
+ SCN_MACRORECORD
+ SCN_MARGINCLICK
+ SCN_NEEDSHOWN
+ SCN_PAINTED
+ SCN_USERLISTSELECTION
+ SCN_URIDROPPED
+ SCN_DWELLSTART
+ SCN_DWELLEND
+ SCN_ZOOM
+ SCN_HOTSPOTCLICK
+ SCN_HOTSPOTDOUBLECLICK
+ SCN_CALLTIPCLICK
+ SCN_AUTOCSELECTION
+
+
+ The following SCI_* messages are associated with these notifications:
+ SCI_SETMODEVENTMASK(int
+ eventMask)
+ SCI_GETMODEVENTMASK
+ SCI_SETMOUSEDWELLTIME
+ SCI_GETMOUSEDWELLTIME
+
+
+ The following additional notifications are sent using the WM_COMMAND message on
+ Windows and the "Command" signal on GTK+. This emulates the Windows Edit control. Only the lower
+ 16 bits of the control's ID is passed in these notifications.
+ SCEN_CHANGE
+ SCEN_SETFOCUS
+ SCEN_KILLFOCUS
+
+
+ SCN_STYLENEEDED
+ If you used SCI_SETLEXER(SCLEX_CONTAINER) to make the container act as the
+ lexer, you will receive this notification when Scintilla is about to display or print text that
+ requires styling. You are required to style the text from the line that contains the position
+ returned by SCI_GETENDSTYLED up to
+ the position passed in SCNotification.position. Symbolically, you need code of the
+ form:
+
+ startPos = SCI_GETENDSTYLED()
+ lineNumber = SCI_LINEFROMPOSITION(startPos);
+ startPos = SCI_POSITIONFROMLINE(lineNumber);
+ MyStyleRoutine(startPos, SCNotification.position);
+
+
+ SCN_CHARADDED
+ This is sent when the user types an ordinary text character (as opposed to a command
+ character) that is entered into the text. The container can use this to decide to display a call tip or an auto
+ completion list. The character is in SCNotification.ch.
+ This notification is sent before the character has been styled so processing that depends on
+ styling should instead be performed in the SCN_UPDATEUI notification.
+
+ SCN_SAVEPOINTREACHED
+ SCN_SAVEPOINTLEFT
+ Sent to the container when the save point is entered or left, allowing the container to
+ display a "document dirty" indicator and change its menus.
+ See also: SCI_SETSAVEPOINT, SCI_GETMODIFY
+
+ SCN_MODIFYATTEMPTRO
+ When in read-only mode, this notification is sent to the container if the user tries to change
+ the text. This can be used to check the document out of a version control system. You can set
+ the read-only state of a document with SCI_SETREADONLY.
+
+ SCN_KEY
+ Reports all keys pressed but not consumed by Scintilla. Used on GTK+ because of
+ some problems with keyboard focus and is not sent by the Windows version. SCNotification.ch holds the key code and
+ SCNotification.modifiers holds the modifiers. This notification is sent if the
+ modifiers include SCMOD_ALT or SCMOD_CTRL and the key code is less
+ than 256.
+
+ SCN_DOUBLECLICK
+ The mouse button was double clicked in editor. The position field is set to the text position of the
+ double click and the line field is set to the line of the double click.
+
+ SCN_UPDATEUI
+ Either the text or styling of the document has changed or the selection range has changed. Now
+ would be a good time to update any container UI elements that depend on document or view state.
+ This was previously called SCN_CHECKBRACE because a common use is to check whether the
+ caret is next to a brace and set highlights on this brace and its corresponding matching brace.
+ This also replaces SCN_POSCHANGED,
+ which is now deprecated.
+
+ SCN_MODIFIED
+ This notification is sent when the text or styling of the document changes or is about to
+ change. You can set a mask for the notifications that are sent to the container with SCI_SETMODEVENTMASK. The
+ notification structure contains information about what changed, how the change occurred and
+ whether this changed the number of lines in the document. No modifications may be performed
+ while in a SCN_MODIFIED event. The SCNotification fields used
+ are:
+
+
+
+
+ | Field |
+
+ Usage |
+
+
+
+
+
+ modificationType |
+
+ A set of flags that identify the change(s) made. See the next
+ table. |
+
+
+
+ position |
+
+ Start position of a text or styling change. Set to 0 if not used. |
+
+
+
+ length |
+
+ Length of the change in cells or characters when the text or styling
+ changes. Set to 0 if not used. |
+
+
+
+ linesAdded |
+
+ Number of added lines. If negative, the number of deleted lines. Set to
+ 0 if not used or no lines added or deleted. |
+
+
+
+ text |
+
+ Valid for text changes, not for style changes. If we are collecting undo
+ information this holds a pointer to the text that is handed to the Undo system, otherwise
+ it is zero. For user performed SC_MOD_BEFOREDELETE the text field is 0 and
+ for user performed SC_MOD_BEFOREINSERT the text field points to an array of cells,
+ not bytes and the length is the number of cells. |
+
+
+
+ line |
+
+ The line number at which a fold level or marker change occurred. This is
+ 0 if unused and may be -1 if more than one line changed. |
+
+
+
+ foldLevelNow |
+
+ The new fold level applied to the line or 0 if this field is
+ unused. |
+
+
+
+ foldLevelPrev |
+
+ The previous folding level of the line or 0 if this field is
+ unused. |
+
+
+
+
+ The SCNotification.modificationType field has bits set to tell you what has
+ been done. The SC_MOD_* bits correspond to actions. The
+ SC_PERFORMED_* bits tell you if the action was done by the user, or the result of
+ Undo or Redo of a previous action.
+
+
+
+
+ | Symbol |
+
+ Value |
+
+ Meaning |
+
+ SCNotification fields |
+
+
+
+
+
+ SC_MOD_INSERTTEXT |
+
+ 0x01 |
+
+ Text has been inserted into the document. |
+
+ position, length, text, linesAdded |
+
+
+
+ SC_MOD_DELETETEXT |
+
+ 0x02 |
+
+ Text has been removed from the document. |
+
+ position, length, text, linesAdded |
+
+
+
+ SC_MOD_CHANGESTYLE |
+
+ 0x04 |
+
+ A style change has occurred. |
+
+ position, length |
+
+
+
+ SC_MOD_CHANGEFOLD |
+
+ 0x08 |
+
+ A folding change has occurred. |
+
+ line, foldLevelNow, foldLevelPrev |
+
+
+
+ SC_PERFORMED_USER |
+
+ 0x10 |
+
+ Information: the operation was done by the user. |
+
+ None |
+
+
+
+ SC_PERFORMED_UNDO |
+
+ 0x20 |
+
+ Information: this was the result of an Undo. |
+
+ None |
+
+
+
+ SC_PERFORMED_REDO |
+
+ 0x40 |
+
+ Information: this was the result of a Redo. |
+
+ None |
+
+
+
+ SC_MULTISTEPUNDOREDO |
+
+ 0x80 |
+
+ This is part of a multi-step Undo or Redo. |
+
+ None |
+
+
+
+ SC_LASTSTEPINUNDOREDO |
+
+ 0x100 |
+
+ This is the final step in an Undo or Redo. |
+
+ None |
+
+
+
+ SC_MOD_CHANGEMARKER |
+
+ 0x200 |
+
+ One or more markers has changed in a line. |
+
+ line |
+
+
+
+ SC_MOD_BEFOREINSERT |
+
+ 0x400 |
+
+ Text is about to be inserted into the document. |
+
+ position, if performed by user then text in cells, length in cells |
+
+
+
+ SC_MOD_BEFOREDELETE |
+
+ 0x800 |
+
+ Text is about to be deleted from the document. |
+
+ position, length |
+
+
+
+ SC_MULTILINEUNDOREDO |
+
+ 0x1000 |
+
+ This is part of an Undo or Redo with multi-line changes. |
+
+ None |
+
+
+
+ SC_MODEVENTMASKALL |
+
+ 0x1fff |
+
+ This is a mask for all valid flags. This is the default mask state set by SCI_SETMODEVENTMASK. |
+
+ None |
+
+
+
+
+ SCEN_CHANGE
+ SCEN_CHANGE (768) is fired when the text (not the style) of the document changes.
+ This notification is sent using the WM_COMMAND message on Windows and the
+ "Command" signal on GTK+ as this is the behavior of the standard Edit control
+ (SCEN_CHANGE has the same value as the Windows Edit control
+ EN_CHANGE). No other information is sent. If you need more detailed information
+ use SCN_MODIFIED. You can filter the
+ types of changes you are notified about with SCI_SETMODEVENTMASK.
+
+ SCI_SETMODEVENTMASK(int eventMask)
+ SCI_GETMODEVENTMASK
+ These messages set and get an event mask that determines which document change events are
+ notified to the container with SCN_MODIFIED and SCEN_CHANGE. For example, a container may decide to see
+ only notifications about changes to text and not styling changes by calling
+ SCI_SETMODEVENTMASK(SC_MOD_INSERTTEXT|SC_MOD_DELETETEXT).
+
+ The possible notification types are the same as the modificationType bit flags
+ used by SCN_MODIFIED: SC_MOD_INSERTTEXT,
+ SC_MOD_DELETETEXT, SC_MOD_CHANGESTYLE,
+ SC_MOD_CHANGEFOLD, SC_PERFORMED_USER, SC_PERFORMED_UNDO,
+ SC_PERFORMED_REDO, SC_MULTISTEPUNDOREDO,
+ SC_LASTSTEPINUNDOREDO, SC_MOD_CHANGEMARKER,
+ SC_MOD_BEFOREINSERT, SC_MOD_BEFOREDELETE,
+ SC_MULTILINEUNDOREDO, and SC_MODEVENTMASKALL.
+
+ SCEN_SETFOCUS
+ SCEN_KILLFOCUS
+ SCEN_SETFOCUS (512) is fired when Scintilla receives focus and
+ SCEN_KILLFOCUS (256) when it loses focus. These notifications are sent using the
+ WM_COMMAND message on Windows and the "Command" signal on GTK+ as this is the
+ behavior of the standard Edit control. Unfortunately, these codes do not match the Windows Edit
+ notification codes EN_SETFOCUS (256) and EN_KILLFOCUS (512). It is
+ now too late to change the Scintilla codes as clients depend on the current values.
+
+ SCN_MACRORECORD
+ The SCI_STARTRECORD and SCI_STOPRECORD messages enable and
+ disable macro recording. When enabled, each time a recordable change occurs, the
+ SCN_MACRORECORD notification is sent to the container. It is up to the container
+ to record the action. To see the complete list of SCI_* messages that are
+ recordable, search the Scintilla source Editor.cxx for
+ Editor::NotifyMacroRecord. The fields of SCNotification set in this
+ notification are:
+
+
+
+
+ | Field |
+
+ Usage |
+
+
+
+
+
+ message |
+
+ The SCI_* message that caused the notification. |
+
+
+
+ wParam |
+
+ The value of wParam in the SCI_* message. |
+
+
+
+ lParam |
+
+ The value of lParam in the SCI_* message. |
+
+
+
+
+ SCN_MARGINCLICK
+ This notification tells the container that the mouse was clicked inside a margin that was marked as sensitive (see SCI_SETMARGINSENSITIVEN). This can be used to
+ perform folding or to place breakpoints. The following SCNotification fields are
+ used:
+
+
+
+
+ | Field |
+
+ Usage |
+
+
+
+
+
+ modifiers |
+
+ The appropriate combination of SCI_SHIFT,
+ SCI_CTRL and SCI_ALT to indicate the keys that were held down
+ at the time of the margin click. |
+
+
+
+ position |
+
+ The position of the start of the line in the document that corresponds
+ to the margin click. |
+
+
+
+ margin |
+
+ The margin number that was clicked. |
+
+
+
+
+ SCN_NEEDSHOWN
+ Scintilla has determined that a range of lines that is currently invisible should be made
+ visible. An example of where this may be needed is if the end of line of a contracted fold
+ point is deleted. This message is sent to the container in case it wants to make the line
+ visible in some unusual way such as making the whole document visible. Most containers will
+ just ensure each line in the range is visible by calling SCI_ENSUREVISIBLE. The position and
+ length fields of SCNotification indicate the range of the document
+ that should be made visible. The container code will be similar to the following code
+ skeleton:
+
+firstLine = SCI_LINEFROMPOSITION(scn.position)
+lastLine = SCI_LINEFROMPOSITION(scn.position+scn.length-1)
+for line = lineStart to lineEnd do SCI_ENSUREVISIBLE(line) next
+
+
+ SCN_PAINTED
+ Painting has just been done. Useful when you want to update some other widgets based on a
+ change in Scintilla, but want to have the paint occur first to appear more responsive. There is
+ no other information in SCNotification.
+
+ SCN_USERLISTSELECTION
+ The user has selected an item in a user list. The
+ SCNotification fields used are:
+
+
+
+
+ | Field |
+
+ Usage |
+
+
+
+
+
+ wParam |
+
+ This is set to the listType parameter from the SCI_USERLISTSHOW message that
+ initiated the list. |
+
+
+
+ text |
+
+ The text of the selection. |
+
+
+
+
+
+
+
+ SCN_URIDROPPED
+ Only on the GTK+ version. Indicates that the user has dragged a URI such as a file name or Web
+ address onto Scintilla. The container could interpret this as a request to open the file. The
+ text field of SCNotification points at the URI text.
+
+ SCN_DWELLSTART
+ SCN_DWELLEND
+ SCN_DWELLSTART is generated when the user keeps the mouse in one position for the
+ dwell period (see SCI_SETMOUSEDWELLTIME). SCN_DWELLEND is
+ generated after a SCN_DWELLSTART and the mouse is moved or other activity such as
+ key press indicates the dwell is over. Both notifications set the same fields in
+ SCNotification:
+
+
+
+
+ | Field |
+
+ Usage |
+
+
+
+
+
+ position |
+
+ This is the nearest position in the document to the position where the
+ mouse pointer was lingering. |
+
+
+
+ x, y |
+
+ Where the pointer lingered. The position field is set to
+ SCI_POSITIONFROMPOINTCLOSE(x, y). |
+
+
+
+
+
+
+ SCI_SETMOUSEDWELLTIME
+ SCI_GETMOUSEDWELLTIME
+ These two messages set and get the time the mouse must sit still, in milliseconds, to generate
+ a SCN_DWELLSTART notification. If
+ set to SC_TIME_FOREVER, the default, no dwell events are generated.
+
+ SCN_ZOOM
+ This notification is generated when the user zooms the display using the keyboard or the
+ SCI_SETZOOM method is called. This
+ notification can be used to recalculate positions, such as the width of the line number margin
+ to maintain sizes in terms of characters rather than pixels. SCNotification has no
+ additional information.
+
+
+ SCN_HOTSPOTCLICK
+ SCN_HOTSPOTDOUBLECLICK
+ These notifications are generated when the user clicks or double clicks on
+ text that is in a style with the hotspot attribute set.
+ This notification can be used to link to variable definitions or web pages.
+ The position field is set the text position of the click or
+ double click and the modifiers field set to the key modifiers
+ held down in a similar manner to SCN_KEY.
+
+ SCN_CALLTIPCLICK
+ This notification is generated when the user clicks on a calltip.
+ This notification can be used to display the next function prototype when a
+ function name is overloaded with different arguments.
+ The position field is set to 1 if the click is in an up arrow,
+ 2 if in a down arrow, and 0 if elsewhere.
+
+ SCN_AUTOCSELECTION
+ The user has selected an item in an autocompletion list. The
+ notification is sent before the selection is inserted. Automatic insertion can be cancelled by sending a
+ SCI_AUTOCCANCEL message
+ before returning from the notification. The SCNotification fields used are:
+
+
+
+
+ | Field |
+
+ Usage |
+
+
+
+
+
+ lParam |
+
+ The start position of the word being completed. |
+
+
+ text |
+
+ The text of the selection. |
+
+
+
+
+ GTK+
+ On GTK+, the following functions create a Scintilla widget, communicate with it and allow
+ resources to be released after all Scintilla widgets hace been destroyed.
+ GtkWidget *scintilla_new()
+ 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()
+
+
+ GtkWidget *scintilla_new()
+ Create a new Scintilla widget. The returned pointer can be added to a container and displayed in the same way as other
+ widgets.
+
+ void scintilla_set_id(ScintillaObject *sci, uptr_t id)
+ Set the control ID which will be used in the idFrom field of the NotifyHeader structure of all
+ notifications for this instance. When an application creates multiple Scintilla widgets, this allows
+ the source of each notification to be found. The value should be small, preferrably less than 16 bits,
+ rather than a pointer as some of the functions will only transmit 16 or 32 bits.
+
+ sptr_t scintilla_send_message(ScintillaObject *sci,unsigned int iMessage, uptr_t wParam, sptr_t lParam)
+ The main entry point allows sending any of the messages described in this document.
+
+ void scintilla_release_resources()
+ Call this to free any remaining resources after all the Scintilla widgets have been destroyed.
+
+ Deprecated messages and notifications
+
+ The following messages are currently supported to emulate existing Windows controls, but
+ they will be removed in future versions of Scintilla. If you use these messages you should
+ replace them with the Scintilla equivalent.
+
+WM_GETTEXT(int length, char *text)
+WM_SETTEXT(<unused>, const char *text)
+EM_GETLINE(int line, char *text)
+EM_REPLACESEL(<unused>, const char *text)
+EM_SETREADONLY
+EM_GETTEXTRANGE(<unused>, TEXTRANGE *tr)
+WM_CUT
+WM_COPY
+WM_PASTE
+WM_CLEAR
+WM_UNDO
+EM_CANUNDO
+EM_EMPTYUNDOBUFFER
+WM_GETTEXTLENGTH
+EM_GETFIRSTVISIBLELINE
+EM_GETLINECOUNT
+EM_GETMODIFY
+EM_SETMODIFY(bool isModified)
+EM_GETRECT(RECT *rect)
+EM_GETSEL(int *start, int *end)
+EM_EXGETSEL(<unused>, CHARRANGE *cr)
+EM_SETSEL(int start, int end)
+EM_EXSETSEL(<unused>, CHARRANGE *cr)
+EM_GETSELTEXT(<unused>, char *text)
+EM_LINEFROMCHAR(int position)
+EM_EXLINEFROMCHAR(int position)
+EM_LINEINDEX(int line)
+EM_LINELENGTH(int position)
+EM_SCROLL(int line)
+EM_LINESCROLL(int column, int line)
+EM_SCROLLCARET()
+EM_CANPASTE
+EM_CHARFROMPOS(<unused>, POINT *location)
+EM_POSFROMCHAR(int position, POINT *location)
+EM_SELECTIONTYPE
+EM_HIDESELECTION(bool hide)
+EM_FINDTEXT(int flags, FINDTEXTEX *ft)
+EM_FINDTEXTEX(int flags, FINDTEXTEX *ft)
+EM_GETMARGINS
+EM_SETMARGINS(EC_LEFTMARGIN or EC_RIGHTMARGIN or EC_USEFONTINFO, int val)
+EM_FORMATRANGE
+
+
+ The following are features that are only included if you define
+ INCLUDE_DEPRECATED_FEATURES in Scintilla.h. To ensure future
+ compatibility you should change them as indicated.
+
+ SCN_POSCHANGED() Deprecated
+ Fired when the user moves the cursor to a different position in the text. Use SCN_UPDATEUI instead.
+
+ SCN_CHECKBRACE Deprecated
+ Either the text or styling of the document has changed or the selection range has changed.
+ This is replaced by SCN_UPDATEUI. You
+ can also use SCN_MODIFIED for more
+ detailed information on text and styling changes,
+
+ Edit messages never supported by Scintilla
+
+EM_GETWORDBREAKPROC EM_GETWORDBREAKPROCEX
+EM_SETWORDBREAKPROC EM_SETWORDBREAKPROCEX
+EM_GETWORDWRAPMODE EM_SETWORDWRAPMODE
+EM_LIMITTEXT EM_EXLIMITTEXT
+EM_SETRECT EM_SETRECTNP
+EM_FMTLINES
+EM_GETHANDLE EM_SETHANDLE
+EM_GETPASSWORDCHAR EM_SETPASSWORDCHAR
+EM_SETTABSTOPS
+EM_FINDWORDBREAK
+EM_GETCHARFORMAT EM_SETCHARFORMAT
+EM_GETOLEINTERFACE EM_SETOLEINTERFACE
+EM_SETOLECALLBACK
+EM_GETPARAFORMAT EM_SETPARAFORMAT
+EM_PASTESPECIAL
+EM_REQUESTRESIZE
+EM_GETBKGNDCOLOR EM_SETBKGNDCOLOR
+EM_STREAMIN EM_STREAMOUT
+EM_GETIMECOLOR EM_SETIMECOLOR
+EM_GETIMEOPTIONS EM_SETIMEOPTIONS
+EM_GETOPTIONS EM_SETOPTIONS
+EM_GETPUNCTUATION EM_SETPUNCTUATION
+EM_GETTHUMB
+EM_GETEVENTMASK
+EM_SETEVENTMASK
+EM_DISPLAYBAND
+EM_SETTARGETDEVICE
+
+
+ Scintilla tries to be a superset of the standard windows Edit and RichEdit controls wherever
+ that makes sense. As it is not intended for use in a word processor, some edit messages can not
+ be sensibly handled. Unsupported messages have no effect.
+
+ Building Scintilla
+
+ To build Scintilla or SciTE, see the README file present in both the Scintilla and SciTE
+ directories. For Windows, GCC 3.2, Borland C++ or Microsoft Visual Studio .NET can be used
+ for building. There is a make file for building Scintilla but not SciTE with Visual C++ 6 at
+ scintilla/win32/scintilla_vc6.mak. For GTK+, GCC 3.1 should be used. GTK+ 1.2x and 2.0x are
+ supported. The version of GTK+ installed should be detected automatically.
+ When both GTK+ 1 and GTK+ 2 are present, building for GTK+ 1.x requires defining GTK1
+ on the command line.
+
+ Static linking
+
+ On Windows, Scintilla is normally used as a dynamic library as a .DLL file. If you want to
+ link Scintilla directly into your application .EXE or .DLL file, then the
+ STATIC_BUILD preprocessor symbol should be defined and
+ Scintilla_RegisterClasses called. STATIC_BUILD prevents compiling the
+ DllMain function which will conflict with any DllMain defined in your
+ code. Scintilla_RegisterClasses takes the HINSTANCE of your
+ application and ensures that the "Scintilla" window class is registered. To make sure that the
+ right pointing arrow cursor used in the margin is displayed by Scintilla add the
+ scintilla/win32/Margin.cur file to your application's resources with the ID
+ IDC_MARGIN which is defined in scintilla/win32/platfromRes.h as
+ 400.
+
+ Ensuring lexers are linked into Scintilla
+
+ Depending on the compiler and linker used, the lexers may be stripped out. This is most
+ often caused when building a static library. To ensure the lexers are linked in, the
+ Scintilla_LinkLexers() function may be called.
+
+ Changing set of lexers
+
+ To change the set of lexers in Scintilla, add and remove lexer source files
+ (Lex*.cxx) from the scintilla/src directory and run the
+ src/LexGen.py script from the src directory to update the make files
+ and KeyWords.cxx. LexGen.py requires Python 2.1 or later. If you do
+ not have access to Python, you can hand edit KeyWords.cxx in a simple-minded way,
+ following the patterns of other lexers. The important thing is to include
+ LINK_LEXER(lmMyLexer); to correspond with the LexerModule
+ lmMyLexer(...); in your lexer source code.
+
+
+
diff --git a/doc/other/ScintillaDownload.html b/doc/other/ScintillaDownload.html
new file mode 100644
index 0000000..c6b9657
--- /dev/null
+++ b/doc/other/ScintillaDownload.html
@@ -0,0 +1,70 @@
+
+
+
+
+
+
+
+
+ Download Scintilla
+
+
+
+
+
+
+ Download.
+
+
+ The license for using Scintilla or SciTE is similar to that of Python
+ containing very few restrictions.
+
+
+ Release 1.71
+
+
+ Source Code
+
+ The source code package contains all of the source code for Scintilla but no binary
+ executable code and is available in
+
+ - zip format (720K) commonly used on Windows
+ - tgz format (620K) commonly used on Linux and compatible operating systems
+
+ Instructions for building on both Windows and Linux are included in the readme file.
+
+ Windows Executable Code
+
+ There is no download available containing only the Scintilla DLL.
+ However, it is included in the SciTE
+ executable full download as SciLexer.DLL.
+
+ SciTE is a good demonstration of Scintilla.
+
+
+ Previous versions can be downloaded from the history
+ page.
+
+
+
diff --git a/doc/other/ScintillaHistory.html b/doc/other/ScintillaHistory.html
new file mode 100644
index 0000000..94a7984
--- /dev/null
+++ b/doc/other/ScintillaHistory.html
@@ -0,0 +1,5296 @@
+
+
+
+
+
+
+
+
+ Scintilla and SciTE
+
+
+
+
+
+ History of Scintilla and SciTE
+
+
+ Contributors
+
+
+ Thanks to all the people that have contributed patches, bug reports and suggestions.
+
+
+ Source code and documentation have been contributed by
+
+
+ - Atsuo Ishimoto
+ - Mark Hammond
+ - Francois Le Coguiec
+ - Dale Nagata
+ - Ralf Reinhardt
+ - Philippe Lhoste
+ - Andrew McKinlay
+ - Stephan R. A. Deibel
+ - Hans Eckardt
+ - Vassili Bourdo
+ - Maksim Lin
+ - Robin Dunn
+ - John Ehresman
+ - Steffen Goeldner
+ - Deepak S.
+ - Yann Gaillard
+ - Aubin Paul
+ - Jason Diamond
+ - Ahmad Baitalmal
+ - Paul Winwood
+ - Maxim Baranov
+ - Ragnar Højland
+ - Christian Obrecht
+ - Andreas Neukoetter
+ - Adam Gates
+ - Steve Lhomme
+ - Ferdinand Prantl
+ - Jan Dries
+ - Markus Gritsch
+ - Tahir Karaca
+ - Ahmad Zawawi
+ - Laurent le Tynevez
+ - Walter Braeu
+ - Ashley Cambrell
+ - Garrett Serack
+ - Holger Schmidt
+ - ActiveState
+ - James Larcombe
+ - Alexey Yutkin
+ - Jan Hercek
+ - Richard Pecl
+ - Edward K. Ream
+ - Valery Kondakoff
+ - Smári McCarthy
+ - Clemens Wyss
+ - Simon Steele
+ - Serge A. Baranov
+ - Xavier Nodet
+ - Willy Devaux
+ - David Clain
+ - Brendon Yenson
+ - Vamsi Potluru
+ - Praveen Ambekar
+ - Alan Knowles
+ - Kengo Jinno
+ - Valentin Valchev
+ - Marcos E. Wurzius
+ - Martin Alderson
+ - Robert Gustavsson
+ - José Fonseca
+ - Holger Kiemes
+ - Francis Irving
+ - Scott Kirkwood
+ - Brian Quinlan
+ - Ubi
+ - Michael R. Duerig
+ - Deepak T
+ - Don Paul Beletsky
+ - Gerhard Kalab
+ - Olivier Dagenais
+ - Josh Wingstrom
+ - Bruce Dodson
+ - Sergey Koshcheyev
+ - Chuan-jian Shen
+ - Shane Caraveo
+ - Alexander Scripnik
+ - Ryan Christianson
+ - Martin Steffensen
+ - Jakub Vrána
+ - The Black Horus
+ - Bernd Kreuss
+ - Thomas Lauer
+ - Mike Lansdaal
+ - Yukihiro Nakai
+ - Jochen Tucht
+ - Greg Smith
+ - Steve Schoettler
+ - Mauritius Thinnes
+ - Darren Schroeder
+ - Pedro Guerreiro
+ - Dan Petitt
+ - Biswapesh Chattopadhyay
+ - Kein-Hong Man
+ - Patrizio Bekerle
+ - Nigel Hathaway
+ - Hrishikesh Desai
+ - Sergey Puljajev
+ - Mathias Rauen
+ - Angelo Mandato
+ - Denis Sureau
+ - Kaspar Schiess
+ - Christoph Hösler
+ - João Paulo F Farias
+ - Ron Schofield
+ - Stefan Wosnik
+ - Marius Gheorghe
+ - Naba Kumar
+ - Sean O'Dell
+ - Stefanos Togoulidis
+ - Hans Hagen
+ - Jim Cape
+ - Roland Walter
+ - Brian Mosher
+ - Nicholas Nemtsev
+ - Roy Wood
+ - Peter-Henry Mander
+ - Robert Boucher
+ - Christoph Dalitz
+ - April White
+ - S. Umar
+ - Trent Mick
+ - Filip Yaghob
+ - Avi Yegudin
+ - Vivi Orunitia
+ - Manfred Becker
+ - Dimitris Keletsekis
+ - Yuiga
+ - Davide Scola
+ - Jason Boggs
+ - Reinhold Niesner
+ - Jos van der Zande
+ - Pescuma
+ - Pavol Bosik
+ - Johannes Schmid
+ - Blair McGlashan
+ - Mikael Hultgren
+ - Florian Balmer
+ - Hadar Raz
+ - Herr Pfarrer
+ - Ben Key
+ - Gene Barry
+ - Niki Spahiev
+ - Carsten Sperber
+ - Phil Reid
+ - Iago Rubio
+ - Régis Vaquette
+ - Massimo CorÃ
+ - Elias Pschernig
+ - Chris Jones
+ - Josiah Reynolds
+ - Robert Roessler rftp.com
+ - Steve Donovan
+ - Jan Martin Pettersen
+ - Sergey Philippov
+ - Borujoa
+ - Michael Owens
+ - Franck Marcia
+ - Massimo Maria Ghisalberti
+ - Frank Wunderlich
+ - Josepmaria Roca
+ - Tobias Engvall
+ - Suzumizaki Kimitaka
+ - Michael Cartmell
+ - Pascal Hurni
+ - Andre
+ - Randy Butler
+ - Georg Ritter
+ - Michael Goffioul
+ - Ben Harper
+ - Adam Strzelecki
+ - Kamen Stanev
+ - Steve Menard
+ - Oliver Yeoh
+ - Eric Promislow
+ - Joseph Galbraith
+ - Jeffrey Ren
+ - Armel Asselin
+ - Jim Pattee
+ - Friedrich Vedder
+ - Sebastian Pipping
+ - Andre Arpin
+ - Stanislav Maslovski
+ - Martin Stone
+ - Fabien Proriol
+ - mimir
+ - Nicola Civran
+
+
+ Images used in GTK+ version
+
+
+ -
+
+ Icons Copyright(C) 1998 by Dean S. Jones
+
+
+
+
+ -
+ Released on 21 August 2006.
+
+ -
+ On GTK+ drag and drop defaults to move rather than copy.
+
+ -
+ Double click notification includes line and position.
+
+ -
+ VB lexer bugs fixed for preprocessor directive below a comment or some other states and
+ to use string not closed style back to the starting quote when there are internal doubled quotes.
+
+ -
+ C++ lexer allows identifiers to contain '$' and non-ASCII characters such as UTF-8.
+ The '$' character can be disallowed with lexer.cpp.allow.dollars=0.
+
+ -
+ Perl lexer allows UTF-8 identifiers and has some other small improvements.
+
+ -
+ SciTE's $(CurrentWord) uses word.characters.<filepattern> to define the word
+ rather than a hardcoded list of word characters.
+
+ -
+ SciTE Export as HTML adds encoding information for UTF-8 file and fixes DOCTYPE.
+
+ -
+ SciTE session and .recent files default to the user properties directory rather than global
+ properties directory.
+
+ -
+ Left and right scroll events handled correctly on GTK+ and horizontal scroll bar has more sensible
+ distances for page and arrow clicks.
+
+ -
+ SciTE on GTK+ tab bar fixed to work on recent versions of GTK+.
+
+ -
+ On GTK+, if the approximate character set conversion is unavailable, a second attempt is made
+ without approximations. This may allow keyboard input and paste to work on older systems.
+
+ -
+ SciTE on GTK+ can redefine the Insert key.
+
+ -
+ SciTE scripting interface bug fixed where some string properties could not be changed.
+
+
+
+
+ -
+ Released on 20 June 2006.
+
+ -
+ On GTK+, character set conversion is performed using an option that allows approximate conversions rather
+ than failures when a character can not be converted. This may lead to similar characters being inserted or
+ when no similar character is available a '?' may be inserted.
+
+ -
+ On GTK+, the internationalised IM (Input Method) feature is used for all typed input for all character sets.
+
+ -
+ Scintilla has new margin types SC_MARGIN_BACK and SC_MARGIN_FORE that use the default
+ style's background and foreground colours (normally white and black) as the background to the margin.
+
+ -
+ Scintilla/GTK+ allows file drops on Windows when drop is of type DROPFILES_DND
+ as well as text/uri-list.
+
+ -
+ Code page can only be set to one of the listed valid values.
+
+ -
+ Text wrapping fixed for cases where insertion was not wide enough to trigger
+ wrapping before being styled but was after styling.
+
+ -
+ SciTE find marks are removed before printing or exporting to avoid producing incorrect styles.
+
+
+
+
+ -
+ Released on 29 May 2006.
+
+ -
+ SciTE supports z-order based buffer switching on Ctrl+Tab.
+
+ -
+ Translucent support for selection and whole line markers.
+
+ -
+ SciTE may have per-language abbreviations files.
+
+ -
+ Support for Spice language.
+
+ -
+ On GTK+ autocompletion lists are optimised and use correct selection colours.
+
+ -
+ On GTK+ the URI data type is preferred in drag and drop so that applications
+ will see files dragged from the shell rather than dragging the text of the file name
+ into the document.
+
+ -
+ Increased number of margins to 5.
+
+ -
+ Basic lexer allows include directive $include: "file name".
+
+ -
+ SQL lexer no longer bases folding on indentation.
+
+ -
+ Line ends are transformed when copied to clipboard on
+ Windows/GTK+2 as well as Windows/GTK+ 1.
+
+ -
+ Lexing code masks off the indicator bits on the start style before calling the lexer
+ to avoid confusing the lexer when an application has used an indicator.
+
+ -
+ SciTE savebefore:yes only saves the file when it has been changed.
+
+ -
+ SciTE adds output.initial.hide setting to allow setting the size of the output pane
+ without it showing initially.
+
+ -
+ SciTE on Windows Go To dialog allows line number with more digits.
+
+ -
+ Bug in HTML lexer fixed where a segment of PHP could switch scripting language
+ based on earlier text on that line.
+
+ -
+ Memory bug fixed when freeing regions on GTK+.
+ Other minor bugs fixed on GTK+.
+
+ -
+ Deprecated GTK+ calls in Scintilla replaced with current calls.
+
+ -
+ Fixed a SciTE bug where closing the final buffer, if read-only, left the text present in an
+ untitled buffer.
+
+ -
+ Bug fixed in bash lexer that prevented folding.
+
+ -
+ Crash fixed in bash lexer when backslash at end of file.
+
+ -
+ Crash on recent releases of GTK+ 2.x avoided by changing default font from X
+ core font to Pango font "!Sans".
+
+ -
+ Fix for SciTE properties files where multiline properties continued over completely blank lines.
+
+ -
+ Bug fixed in SciTE/GTK+ director interface where more data available than
+ buffer size.
+
+ -
+ Minor visual fixes to SciTE splitter on GTK+.
+
+
+
+
+ -
+ Released on 9 March 2006.
+
+ -
+ Translucent drawing implemented for caret line and box indicators.
+
+ -
+ Lexer specifically for TCL is much more accurate than reusing C++ lexer.
+
+ -
+ Support for Inno Setup scripts.
+
+ -
+ Support for Opal language.
+
+ -
+ Calltips may use a new style, STYLE_CALLTIP which allows choosing a
+ different font for calltips.
+
+ -
+ Python lexer styles comments on decorators.
+
+ -
+ HTML lexer refined handling of "?>" and "%>" within server
+ side scripts.
+
+ -
+ Batch file lexer improved.
+
+ -
+ Eiffel lexer doesn't treat '.' as a name character.
+
+ -
+ Lua lexer handles length operator, #, and hex literals.
+
+ -
+ Properties file lexer has separate style for keys.
+
+ -
+ PL/SQL folding improved.
+
+ -
+ SciTE Replace dialog always searches in forwards direction.
+
+ -
+ SciTE can detect language of file from initial #! line.
+
+ -
+ SciTE on GTK+ supports output.scroll=2 setting.
+
+ -
+ SciTE can perform an import a properties file from the command line.
+
+ -
+ Set of word characters used for regular expression \< and \>.
+
+ -
+ Bug fixed with SCI_COPYTEXT stopping too early.
+
+ -
+ Bug fixed with splitting lines so that all lines are split.
+
+ -
+ SciTE calls OnSwitchFile when closing one buffer causes a switch to another.
+
+ -
+ SciTE bug fixed where properties were being reevaluated without good reason
+ after running a macro.
+
+ -
+ Crash fixed when clearing document with some lines contracted in word wrap mode.
+
+ -
+ Palette expands as more entries are needed.
+
+ -
+ SCI_POSITIONFROMPOINT returns more reasonable value when close to
+ last text on a line.
+
+ -
+ On Windows, long pieces of text may be drawn in segments if they fail to draw
+ as a whole.
+
+ -
+ Bug fixed with bad drawing when some visual changes made inside SCN_UPDATEUI
+ notification.
+
+ -
+ SciTE bug fixed with groupundo setting.
+
+
+
+
+ -
+ Released on 17 December 2005.
+
+ -
+ Scintilla checks the paint region more accurately when seeing if an area is being
+ repainted. Platform layer implementations may need to change for this to take
+ effect. This fixes some drawing and styling bugs. Also optimized some parts of
+ marker code to only redraw the line of the marker rather than whole of the margin.
+
+ -
+ Quoted identifier style for SQL. SQL folding performed more simply.
+
+ -
+ Ruby lexer improved to better handle here documents and non-ASCII
+ characters.
+
+ -
+ Lua lexer supports long string and block comment syntax from Lua 5.1.
+
+ -
+ Bash lexer handles here documents better.
+
+ -
+ JavaScript lexing recognises regular expressions more accurately and includes flag
+ characters in the regular expression style. This is both in JavaScript files and when
+ JavaScript is embedded in HTML.
+
+ -
+ Scintilla API provided to reveal how many style bits are needed for the
+ current lexer.
+
+ -
+ Selection duplicate added.
+
+ -
+ Scintilla API for adding a set of markers to a line.
+
+ -
+ DBCS encodings work on Windows 9x.
+
+ -
+ Convention defined for property names to be used by lexers and folders
+ so they can be automatically discovered and forwarded from containers.
+
+ -
+ Default bookmark in SciTE changed to a blue sphere image.
+
+ -
+ SciTE stores the time of last asking for a save separately for each buffer
+ which fixes bugs with automatic reloading.
+
+ -
+ On Windows, pasted text has line ends converted to current preference.
+ GTK+ already did this.
+
+ -
+ Kid template language better handled by HTML lexer by finishing ASP Python
+ mode when a ?> is found.
+
+ -
+ SciTE counts number of characters in a rectangular selection correctly.
+
+ -
+ 64-bit compatibility improved. One change that may affect user code is that
+ the notification message header changed to include a pointer-sized id field
+ to match the current Windows definition.
+
+ -
+ Empty ranges can no longer be dragged.
+
+ -
+ Crash fixed when calls made that use layout inside the painted notification.
+
+ -
+ Bug fixed where Scintilla created pixmap buffers that were too large leading
+ to failures when many instances used.
+
+ -
+ SciTE sets the directory of a new file to the directory of the currently
+ active file.
+
+ -
+ SciTE allows choosing a code page for the output pane.
+
+ -
+ SciTE HTML exporter no longer honours monospaced font setting.
+
+ -
+ Line layout cache in page mode caches the line of the caret. An assertion is
+ now used to ensure that the layout reentrancy problem that caused this
+ is easier to find.
+
+ -
+ Speed optimized for long lines and lines containing many control characters.
+
+ -
+ Bug fixed in brace matching in DBCS files where byte inside character
+ is same as brace.
+
+ -
+ Indent command does not indent empty lines.
+
+ -
+ SciTE bug fixed for commands that operate on files with empty extensions.
+
+ -
+ SciTE bug fixed where monospaced option was copied for subsequently opened files.
+
+ -
+ SciTE on Windows bug fixed in the display of a non-ASCII search string
+ which can not be found.
+
+ -
+ Bugs fixed with nested calls displaying a new calltip while one is already
+ displayed.
+
+ -
+ Bug fixed when styling PHP strings.
+
+ -
+ Bug fixed when styling C++ continued preprocessor lines.
+
+ -
+ SciTE bug fixed where opening file from recently used list reset choice of
+ language.
+
+ -
+ SciTE bug fixed when compiled with NO_EXTENSIONS and
+ closing one file closes the application.
+
+ -
+ SciTE crash fixed for error messages that look like Lua messages but aren't
+ in the same order.
+
+ -
+ Remaining fold box support deprecated. The symbols SC_FOLDLEVELBOXHEADERFLAG,
+ SC_FOLDLEVELBOXFOOTERFLAG, SC_FOLDLEVELCONTRACTED,
+ SC_FOLDLEVELUNINDENT, and SC_FOLDFLAG_BOX are deprecated.
+
+
+
+
+ -
+ Released on 26 August 2005.
+
+ -
+ New, more ambitious Ruby lexer.
+
+ -
+ SciTE Find in Files dialog has options for matching case and whole words which are
+ enabled when the internal find command is used.
+
+ -
+ SciTE output pane can display automatic completion after "$(" typed.
+ An initial ">" on a line is ignored when Enter pressed.
+
+ -
+ C++ lexer recognises keywords within line doc comments. It continues styles over line
+ end characters more consistently so that eolfilled style can be used for preprocessor lines
+ and line comments.
+
+ -
+ VB lexer improves handling of file numbers and date literals.
+
+ -
+ Lua folder handles repeat until, nested comments and nested strings.
+
+ -
+ POV lexer improves handling of comment lines.
+
+ -
+ AU3 lexer and folder updated. COMOBJ style added.
+
+ -
+ Bug fixed with text display on GTK+ with Pango 1.8.
+
+ -
+ Caret painting avoided when not focused.
+
+ -
+ SciTE on GTK+ handles file names used to reference properties as case-sensitive.
+
+ -
+ SciTE on GTK+ Save As and Export commands set the file name field.
+ On GTK+ the Export commands modify the file name in the same way as on Windows.
+
+ -
+ Fixed SciTE problem where confirmation was not displaying when closing a file where all
+ contents had been deleted.
+
+ -
+ Middle click on SciTE tab now closes correct buffer on Windows when tool bar is visible.
+
+ -
+ SciTE bugs fixed where files contained in directory that includes '.' character.
+
+ -
+ SciTE bug fixed where import in user options was reading file from directory of
+ global options.
+
+ -
+ SciTE calltip bug fixed where single line calltips had arrow displayed incorrectly.
+
+ -
+ SciTE folding bug fixed where empty lines were shown for no reason.
+
+ -
+ Bug fixed where 2 byte per pixel XPM images caused crash although they are still not
+ displayed.
+
+ -
+ Autocompletion list size tweaked.
+
+
+
+
+ -
+ Released on 1 August 2005.
+
+ -
+ FreeBasic support.
+
+ -
+ SciTE on Windows handles command line arguments
+ "-" (read standard input into buffer),
+ "--" (read standard input into output pane) and
+ "-@" (read file names from standard input and open each).
+
+ -
+ SciTE includes a simple implementation of Find in Files which is used if no find.command is set.
+
+ -
+ SciTE can close tabs with a mouse middle click.
+
+ -
+ SciTE includes a save.all.for.build setting.
+
+ -
+ Folder for MSSQL.
+
+ -
+ Batch file lexer understands more of the syntax and the behaviour of built in commands.
+
+ -
+ Perl lexer handles here docs better; disambiguates barewords, quote-like delimiters, and repetition operators;
+ handles Pods after __END__; recognises numbers better; and handles some typeglob special variables.
+
+ -
+ Lisp adds more lexical states.
+
+ -
+ PHP allows spaces after <<<.
+
+ -
+ TADS3 has a simpler set of states and recognizes identifiers.
+
+ -
+ Avenue elseif folds better.
+
+ -
+ Errorlist lexer treats lines starting with '+++' and '---' as separate
+ styles from '+' and '-' as they indicate file names in diffs.
+
+ -
+ SciTE error recogniser handles file paths in extra explanatory lines from MSVC
+ and in '+++' and '---' lines from diff.
+
+ -
+ Bugs fixed in SciTE and Scintilla folding behaviour when text pasted before
+ folded text caused unnecessary
+ unfolding and cutting text could lead to text being irretrievably hidden.
+
+ -
+ SciTE on Windows uses correct font for dialogs and better font for tab bar
+ allowing better localisation
+
+ -
+ When Windows is used with a secondary monitor before the primary
+ monitor, autocompletion lists are not forced onto the primary monitor.
+
+ -
+ Scintilla calltip bug fixed where down arrow setting wrong value in notification
+ if not in first line. SciTE bug fixed where second arrow only shown on multiple line
+ calltip and was therefore misinterpreting the notification value.
+
+ -
+ Lexers will no longer be re-entered recursively during, for example, fold level setting.
+
+ -
+ Undo of typing in overwrite mode undoes one character at a time rather than requiring a removal
+ and addition step for each character.
+
+ -
+ EM_EXSETSEL(0,-1) fixed.
+
+ -
+ Bug fixed where part of a rectangular selection was not shown as selected.
+
+ -
+ Autocomplete window size fixed.
+
+
+
+
+ -
+ Released on 6 June 2005.
+
+ -
+ TADS3 support
+
+ -
+ Smalltalk support.
+
+ -
+ Rebol support.
+
+ -
+ Flagship (Clipper / XBase) support.
+
+ -
+ CSound support.
+
+ -
+ SQL enhanced to support SQL*Plus.
+
+ -
+ SC_MARK_FULLRECT margin marker fills the whole marker margin for marked
+ lines with a colour.
+
+ -
+ Performance improved for some large undo and redo operations and modification flags
+ added in notifications.
+
+ -
+ SciTE adds command equivalents for fold margin mouse actions.
+
+ -
+ SciTE adds OnUpdateUI to set of events that can be handled by a Lua script.
+
+ -
+ Properties set in Scintilla can be read.
+
+ -
+ GTK+ SciTE exit confirmation adds Cancel button.
+
+ -
+ More accurate lexing of numbers in PHP and Caml.
+
+ -
+ Perl can fold POD and package sections. POD verbatim section style.
+ Globbing syntax recognized better.
+
+ -
+ Context menu moved slightly on GTK+ so that it will be under the mouse and will
+ stay open if just clicked rather than held.
+
+ -
+ Rectangular selection paste works the same whichever direction the selection was dragged in.
+
+ -
+ EncodedFromUTF8 handles -1 length argument as documented.
+
+ -
+ Undo and redo can cause SCN_MODIFYATTEMPTRO notifications.
+
+ -
+ Indicators display correctly when they start at the second character on a line.
+
+ -
+ SciTE Export As HTML uses standards compliant CSS.
+
+ -
+ SciTE automatic indentation handles keywords for indentation better.
+
+ -
+ SciTE fold.comment.python property removed as does not work.
+
+ -
+ Fixed problem with character set conversion when pasting on GTK+.
+
+ -
+ SciTE default character set changed from ANSI_CHARSET to DEFAULT_CHARSET.
+
+ -
+ Fixed crash when creating empty autocompletion list.
+
+ -
+ Autocomplete window size made larger under some conditions to make truncation less common.
+
+ -
+ Bug fixed where changing case of a selection did not affect initial character of lines
+ in multi-byte encodings.
+
+ -
+ Bug fixed where rectangular selection not displayed after Alt+Shift+Click.
+
+
+
+
+ -
+ Released on 4 April 2005.
+
+ -
+ Autocompletion on Windows changed to use popup window, be faster,
+ allow choice of maximum width and height, and to highlight only the text of the
+ selected item rather than both the text and icon if any.
+
+ -
+ Extra items can be added to the context menu in SciTE.
+
+ -
+ Character wrap mode in Scintilla helps East Asian languages.
+
+ -
+ Lexer added for Haskell.
+
+ -
+ Objective Caml support.
+
+ -
+ BlitzBasic and PureBasic support.
+
+ -
+ CSS support updated to handle CSS2.
+
+ -
+ C++ lexer is more selective about document comment keywords.
+
+ -
+ AutoIt 3 lexer improved.
+
+ -
+ Lua lexer styles end of line characters on comment and preprocessor
+ lines so that the eolfilled style can be applied to them.
+
+ -
+ NSIS support updated for line continuations, box comments, SectionGroup and
+ PageEx, and with more up-to-date properties.
+
+ -
+ Clarion lexer updated to perform folding and have more styles.
+
+ -
+ SQL lexer gains second set of keywords.
+
+ -
+ Errorlist lexer recognises Borland Delphi error messages.
+
+ -
+ Method added for determining number of visual lines occupied by a document
+ line due to wrapping.
+
+ -
+ Sticky caret mode does not modify the preferred caret x position when typing
+ and may be useful for typing columns of text.
+
+ -
+ Dwell end notification sent when scroll occurs.
+
+ -
+ On GTK+, Scintilla requisition height is screen height rather than large fixed value.
+
+ -
+ Case insensitive autocompletion prefers exact case match.
+
+ -
+ SCI_PARADOWN and SCI_PARAUP treat lines containing only white
+ space as empty and handle text hidden by folding.
+
+ -
+ Scintilla on Windows supports WM_PRINTCLIENT although there are some
+ limitations.
+
+ -
+ SCN_AUTOCSELECTION notification sent when user selects from autoselection list.
+
+ -
+ SciTE's standard properties file sets buffers to 10, uses Pango fonts on GTK+ and
+ has dropped several languages to make the menu fit on screen.
+
+ -
+ SciTE's encoding cookie detection loosened so that common XML files will load
+ in UTF-8 if that is their declared encoding.
+
+ -
+ SciTE on GTK+ changes menus and toolbars to not be detachable unless turned
+ on with a property. Menus no longer tear off. The toolbar may be set to use the
+ default theme icons rather than SciTE's set. Changed key for View | End of Line
+ because of a conflict. Language menu can contain more items.
+
+ -
+ SciTE on GTK+ 2.x allows the height and width of the file open file chooser to
+ be set, for the show hidden files check box to be set from an option and for it
+ to be opened in the directory of the current file explicitly. Enter key works in
+ save chooser.
+
+ -
+ Scintilla lexers should no longer see bits in style bytes that are outside the set
+ they modify so should be able to correctly lex documents where the container
+ has used indicators.
+
+ -
+ SciTE no longer asks to save before performing a revert.
+
+ -
+ SciTE director interface adds a reloadproperties command to reload properties
+ from files.
+
+ -
+ Allow build on CYGWIN platform.
+
+ -
+ Allow use from LccWin compiler.
+
+ -
+ SCI_COLOURISE for SCLEX_CONTAINER causes a
+ SCN_STYLENEEDED notification.
+
+ -
+ Bugs fixed in lexing of HTML/ASP/JScript.
+
+ -
+ Fix for folding becoming confused.
+
+ -
+ On Windows, fixes for Japanese Input Method Editor and for 8 bit Katakana
+ characters.
+
+ -
+ Fixed buffer size bug avoided when typing long words by making buffer bigger.
+
+ -
+ Undo after automatic indentation more sensible.
+
+ -
+ SciTE menus on GTK+ uses Shift and Ctrl rather than old style abbreviations.
+
+ -
+ SciTE full screen mode on Windows calculates size more correctly.
+
+ -
+ SciTE on Windows menus work better with skinning applications.
+
+ -
+ Searching bugs fixed.
+
+ -
+ Colours reallocated when changing image using SCI_REGISTERIMAGE.
+
+ -
+ Caret stays visible when Enter held down.
+
+ -
+ Undo of automatic indentation more reasonable.
+
+ -
+ High processor usage fixed in background wrapping under some
+ circumstances.
+
+ -
+ Crashing bug fixed on AMD64.
+
+ -
+ SciTE crashing bug fixed when position.height or position.width not set.
+
+ -
+ Crashing bug on GTK+ fixed when setting cursor and window is NULL.
+
+ -
+ Crashing bug on GTK+ preedit window fixed.
+
+ -
+ SciTE crashing bug fixed in incremental search on Windows ME.
+
+ -
+ SciTE on Windows has a optional find and replace dialogs that can search through
+ all buffers and search within a particular style number.
+
+
+
+
+ -
+ Released on 31 October 2004.
+
+ -
+ Lexer added for ASN.1.
+
+ -
+ Lexer added for VHDL.
+
+ -
+ On Windows, an invisible system caret is used to allow screen readers to determine
+ where the caret is. The visible caret is still drawn by the painting code.
+
+ -
+ On GTK+, Scintilla has methods to read the target as UTF-8 and to convert
+ a string from UTF-8 to the document encoding. This eases integration with
+ containers that use the UTF-8 encoding which is the API encoding for GTK+ 2.
+
+ -
+ SciTE on GTK+2 and Windows NT/2000/XP allows search and replace of Unicode text.
+
+ -
+ SciTE calltips allow setting the characters used to start and end parameter lists and
+ to separate parameters.
+
+ -
+ FindColumn method converts a line and column into a position, taking into account
+ tabs and multi-byte characters.
+
+ -
+ On Windows, when Scintilla copies text to the clipboard as Unicode, it avoids
+ adding an ANSI copy as the system will automatically convert as required in
+ a context-sensitive manner.
+
+ -
+ SciTE indent.auto setting automatically determines indent.size and use.tabs from
+ document contents.
+
+ -
+ SciTE defines a CurrentMessage property that holds the most recently selected
+ output pane message.
+
+ -
+ SciTE Lua scripting enhanced with
+
+ - A Lua table called 'buffer' is associated with each buffer and can be used to
+ maintain buffer-specific state.
+ - A 'scite' object allows interaction with the application such as opening
+ files from script.
+ - Dynamic properties can be reset by assigning nil to a given key in
+ the props table.
+ - An 'OnClear' event fires whenever properties and extension scripts are
+ about to be reloaded.
+ - On Windows, loadlib is enabled and can be used to access Lua
+ binary modules / DLLs.
+
+ -
+ SciTE Find in Files on Windows can be used in a modeless way and gains a '..'
+ button to move up to the parent directory. It is also wider so that longer paths
+ can be seen.
+
+ -
+ Close buttons added to dialogs in SciTE on Windows.
+
+ -
+ SciTE on GTK+ 2 has a "hidden files" check box in file open dialog.
+
+ -
+ SciTE use.monospaced setting removed. More information in the
+ FAQ.
+
+ -
+ APDL lexer updated with more lexical classes
+
+ -
+ AutoIt3 lexer updated.
+
+ -
+ Ada lexer fixed to support non-ASCII text.
+
+ -
+ Cpp lexer now only matches exactly three slashes as starting a doc-comment so that
+ lines of slashes are seen as a normal comment.
+ Line ending characters are appear in default style on preprocessor and single line
+ comment lines.
+
+ -
+ CSS lexer updated to support CSS2 including second set of keywords.
+
+ -
+ Errorlist lexer now understands Java stack trace lines.
+
+ -
+ SciTE's handling of HTML Tidy messages jumps to column as well as line indicated.
+
+ -
+ Lisp lexer allows multiline strings.
+
+ -
+ Lua lexer treats .. as an operator when between identifiers.
+
+ -
+ PHP lexer handles 'e' in numerical literals.
+
+ -
+ PowerBasic lexer updated for macros and optimised.
+
+ -
+ Properties file folder changed to leave lines before a header at the base level
+ and thus avoid a vertical line when using connected folding symbols.
+
+ -
+ GTK+ on Windows version uses Alt for rectangular selection to be compatible with
+ platform convention.
+
+ -
+ SciTE abbreviations file moved from system directory to user directory
+ so each user can have separate abbreviations.
+
+ -
+ SciTE on GTK+ has improved .desktop file and make install support that may
+ lead to better integration with system shell.
+
+ -
+ Disabling of themed background drawing on GTK+ extended to all cases.
+
+ -
+ SciTE date formatting on Windows performed with the user setting rather than the
+ system setting.
+
+ -
+ GTK+ 2 redraw while scrolling fixed.
+
+ -
+ Recursive property definitions are safer, avoiding expansion when detected.
+
+ -
+ SciTE thread synchronization for scripts no longer uses HWND_MESSAGE
+ so is compatible with older versions of Windows.
+ Other Lua scripting bugs fixed.
+
+ -
+ SciTE on Windows localisation of menu accelerators changed to be compatible
+ with alternative UI themes.
+
+ -
+ SciTE on Windows full screen mode now fits better when menu different height
+ to title bar height.
+
+ -
+ SC_MARK_EMPTY marker is now invisible and does not change the background
+ colour.
+
+ -
+ Bug fixed in HTML lexer to allow use of <?xml in strings in scripts without
+ triggering xml mode.
+
+ -
+ Bug fixed in SciTE abbreviation expansion that could break indentation or crash.
+
+ -
+ Bug fixed when searching for a whole word string that ends one character before
+ end of document.
+
+ -
+ Drawing bug fixed when indicators drawn on wrapped lines.
+
+ -
+ Bug fixed when double clicking a hotspot.
+
+ -
+ Bug fixed where autocompletion would remove typed text if no match found.
+
+ -
+ Bug fixed where display does not scroll when inserting in long wrapped line.
+
+ -
+ Bug fixed where SCI_MARKERDELETEALL would only remove one of the markers
+ on a line that contained multiple markers with the same number.
+
+ -
+ Bug fixed where markers would move when converting line endings.
+
+ -
+ Bug fixed where SCI_LINEENDWRAP would move too far when line ends are visible.
+
+ -
+ Bugs fixed where calltips with unicode or other non-ASCII text would display
+ incorrectly.
+
+ -
+ Bug fixed in determining if at save point after undoing from save point and then
+ performing changes.
+
+ -
+ Bug fixed on GTK+ using unsupported code pages where extraneous text could
+ be drawn.
+
+ -
+ Bug fixed in drag and drop code on Windows where dragging from SciTE to
+ Firefox could hang both applications.
+
+ -
+ Crashing bug fixed on GTK+ when no font allocation succeeds.
+
+ -
+ Crashing bug fixed when autocompleting word longer than 1000 characters.
+
+ -
+ SciTE crashing bug fixed when both Find and Replace dialogs shown by disallowing
+ this situation.
+
+
+
+
+ -
+ Released on 29 May 2004.
+
+ -
+ Improvements to selection handling on GTK+.
+
+ -
+ SciTE on GTK+ 2.4 uses the improved file chooser which allows
+ file extension filters, multiple selection, and remembers favourite
+ directories.
+
+ -
+ SciTE Load Session and Save Session commands available on GTK+.
+
+ -
+ SciTE lists Lua Startup Script in Options menu when loaded.
+
+ -
+ In SciTE, OnUserListSelection can be implemented in Lua.
+
+ -
+ SciTE on Windows has a context menu on the file tabs.
+
+ -
+ SQL lexer allows '#' comments and optionally '\' quoting inside strings.
+
+ -
+ Mssql lexer improved.
+
+ -
+ AutoIt3 lexer updated.
+
+ -
+ Perl lexer recognizes regular expression use better.
+
+ -
+ Errorlist lexer understands Lua tracebacks and copes with findstr
+ output for file names that end with digits.
+
+ -
+ Drawing of lines on GTK+ improved and made more like Windows
+ without final point.
+
+ -
+ SciTE on GTK+ uses a high resolution window icon.
+
+ -
+ SciTE can be set to warn before loading files larger than a particular size.
+
+ -
+ SciTE Lua scripting bugs fixed included a crashing bug when using
+ an undefined function name that would go before first actual name.
+
+ -
+ SciTE bug fixed where a modified buffer was not saved if it was
+ the last buffer and was not current when the New command used.
+
+ -
+ SciTE monofont mode no longer affects line numbers.
+
+ -
+ Crashing bug in SciTE avoided by not allowing both the Find and Replace
+ dialogs to be visible at one time.
+
+ -
+ Crashing bug in SciTE fixed when Lua scripts were being run
+ concurrently.
+
+ -
+ Bug fixed that caused incorrect line number width in SciTE.
+
+ -
+ PHP folding bug fixed.
+
+ -
+ Regression fixed when setting word characters to not include
+ some of the standard word characters.
+
+
+
+
+ -
+ Released on 1 May 2004.
+
+ -
+ SciTE can be scripted using the Lua programming language.
+
+ -
+ command.mode is a better way to specify tool command options in SciTE.
+
+ -
+ Continuation markers can be displayed so that you can see which lines are wrapped.
+
+ -
+ Lexer for Gui4Cli language.
+
+ -
+ Lexer for Kix language.
+
+ -
+ Lexer for Specman E language.
+
+ -
+ Lexer for AutoIt3 language.
+
+ -
+ Lexer for APDL language.
+
+ -
+ Lexer for Bash language. Also reasonable for other Unix shells.
+
+ -
+ SciTE can load lexers implemented in external shared libraries.
+
+ -
+ Perl treats "." not as part of an identifier and interprets '/' and '->'
+ correctly in more circumstances.
+
+ -
+ PHP recognises variables within strings.
+
+ -
+ NSIS has properties "nsis.uservars" and "nsis.ignorecase".
+
+ -
+ MSSQL lexer adds keyword list for operators and stored procedures,
+ defines '(', ')', and ',' as operators and changes some other details.
+
+ -
+ Input method preedit window on GTK+ 2 may support some Asian languages.
+
+ -
+ Platform interface adds an extra platform-specific flag to Font::Create.
+ Used on wxWidgets to choose antialiased text display but may be used for
+ any task that a platform needs.
+
+ -
+ OnBeforeSave method added to Extension interface.
+
+ -
+ Scintilla methods that return strings can be called with a NULL pointer
+ to find out how long the string should be.
+
+ -
+ Visual Studio .NET project file now in VS .NET 2003 format so can not be used
+ directly in VS .NET 2002.
+
+ -
+ Scintilla can be built with GTK+ 2 on Windows.
+
+ -
+ Updated RPM spec for SciTE on GTK+.
+
+ -
+ GTK+ makefile for SciTE allows selection of destination directory, creates destination
+ directories and sets file modes and owners better.
+
+ -
+ Tab indents now go to next tab multiple rather than add tab size.
+
+ -
+ SciTE abbreviations now use the longest possible match rather than the shortest.
+
+ -
+ Autocompletion does not remove prefix when actioned with no choice selected.
+
+ -
+ Autocompletion cancels when moving beyond the start position, not at the start position.
+
+ -
+ SciTE now shows only calltips for functions that match exactly, not
+ those that match as a prefix.
+
+ -
+ SciTE can repair box comment sections where some lines were added without
+ the box comment middle line prefix.
+
+ -
+ Alt+ works in user.shortcuts on Windows.
+
+ -
+ SciTE on GTK+ enables replace in selection for rectangular selections.
+
+ -
+ Key bindings for command.shortcut implemented in a way that doesn't break
+ when the menus are localised.
+
+ -
+ Drawing of background on GTK+ faster as theme drawing disabled.
+
+ -
+ On GTK+, calltips are moved back onto the screen if they extend beyond the screen bounds.
+
+ -
+ On Windows, the Scintilla object is destroyed on WM_NCDESTROY rather than
+ WM_DESTROY which arrives earlier. This fixes some problems when Scintilla was subclassed.
+
+ -
+ The zorder switching feature removed due to number of crashing bugs.
+
+ -
+ Code for XPM images made more robust.
+
+ -
+ Bug fixed with primary selection on GTK+.
+
+ -
+ On GTK+ 2, copied or cut text can still be pasted after the Scintilla widget is destroyed.
+
+ -
+ Styling change not visible problem fixed when line was cached.
+
+ -
+ Bug in SciTE on Windows fixed where clipboard commands stopped working.
+
+ -
+ Crashing bugs in display fixed in line layout cache.
+
+ -
+ Crashing bug may be fixed on AMD64 processor on GTK+.
+
+ -
+ Rare hanging crash fixed in Python lexer.
+
+ -
+ Display bugs fixed with DBCS characters on GTK+.
+
+ -
+ Autocompletion lists on GTK+ 2 are not sorted by the ListModel as the
+ contents are sorted correctly by Scintilla.
+
+ -
+ SciTE fixed to not open extra untitled buffers with check.if.already.open.
+
+ -
+ Sizing bug fixed on GTK+ when window resized while unmapped.
+
+ -
+ Text drawing crashing bug fixed on GTK+ with non-Pango fonts and long strings.
+
+ -
+ Fixed some issues if characters are unsigned.
+
+ -
+ Fixes in NSIS support.
+
+
+
+
+ -
+ Released on 19 February 2004.
+
+ -
+ SciTE Options and Language menus reduced in length by commenting
+ out some languages. Languages can be enabled by editing the global
+ properties file.
+
+ -
+ Verilog language supported.
+
+ -
+ Lexer for Microsoft dialect of SQL. SciTE properties file available from extras page.
+
+ -
+ Perl lexer disambiguates '/' better.
+
+ -
+ NSIS lexer improved with a lexical class for numbers, option for ignoring case
+ of keywords, and folds only occurring when folding keyword first on line.
+
+ -
+ PowerBasic lexer improved with styles for constants and assembler and
+ folding improvements.
+
+ -
+ On GTK+, input method support only invoked for Asian languages and not
+ European languages as the old European keyboard code works better.
+
+ -
+ Scintilla can be requested to allocate a certain amount and so avoid repeated
+ reallocations and memory inefficiencies. SciTE uses this and so should require
+ less memory.
+
+ -
+ SciTE's "toggle current fold" works when invoked on child line as well as
+ fold header.
+
+ -
+ SciTE output pane scrolling can be set to not scroll back to start after
+ completion of command.
+
+ -
+ SciTE has a $(SessionPath) property.
+
+ -
+ SciTE on Windows can use VK_* codes for keys in user.shortcuts.
+
+ -
+ Stack overwrite bug fixed in SciTE's command to move to the end of a
+ preprocessor conditional.
+
+ -
+ Bug fixed where vertical selection appeared to select a different set of characters
+ then would be used by, for example, a copy.
+
+ -
+ SciTE memory leak fixed in fold state remembering.
+
+ -
+ Bug fixed where changing the style of some text outside the
+ standard StyleNeeded notification would not be visible.
+
+ -
+ On GTK+ 2 g_iconv is used in preference to iconv, as it is provided by GTK+
+ so should avoid problems finding the iconv library.
+
+ -
+ On GTK+ fixed a style reference count bug.
+
+ -
+ Memory corruption bug fixed with GetSelText.
+
+ -
+ On Windows Scintilla deletes memory on WM_NCDESTROY rather than
+ the earlier WM_DESTROY to avoid problems when the window is subclassed.
+
+
+
+
+ -
+ Released on 11 January 2004.
+
+ -
+ Method to discover the currently highlighted element in an autocompletion list.
+
+ -
+ On GTK+, the lexers are now included in the scintilla.a library file. This
+ will require changes to the make files of dependent projects.
+
+ -
+ Octave support added alongside related Matlab language and Matlab support improved.
+
+ -
+ VB lexer gains an unterminated string state and 4 sets of keywords.
+
+ -
+ Ruby lexer handles $' correctly.
+
+ -
+ Error line handling improved for FORTRAN compilers from Absoft and Intel.
+
+ -
+ International input enabled on GTK+ 2 although there is no way to choose an
+ input method.
+
+ -
+ MultiplexExtension in SciTE allows multiple extensions to be used at once.
+
+ -
+ Regular expression replace interprets backslash expressions \a, \b, \f, \n, \r, \t,
+ and \v in the replacement value.
+
+ -
+ SciTE Replace dialog displays number of replacements made when Replace All or
+ Replace in Selection performed.
+
+ -
+ Localisation files may contain a translation.encoding setting which is used
+ on GTK+ 2 to automatically reencode the translation to UTF-8 so it will be
+ the localised text will be displayed correctly.
+
+ -
+ SciTE on GTK+ implements check.if.already.open.
+
+ -
+ Make files for Mac OS X made more robust.
+
+ -
+ Performance improved in SciTE when switching buffers when there
+ is a rectangular selection.
+
+ -
+ Fixed failure to display some text when wrapped.
+
+ -
+ SciTE crashes from Ctrl+Tab buffer cycling fixed.
+ May still be some rare bugs here.
+
+ -
+ Crash fixed when decoding an error message that appears similar to a
+ Borland error message.
+
+ -
+ Fix to auto-scrolling allows containers to implement enhanced double click selection.
+
+ -
+ Hang fixed in idle word wrap.
+
+ -
+ Crash fixed in hotspot display code..
+
+ -
+ SciTE on Windows Incremental Search no longer moves caret back.
+
+ -
+ SciTE hang fixed when performing a replace with a find string that
+ matched zero length strings such as ".*".
+
+ -
+ SciTE no longer styles the whole file when saving buffer fold state
+ as that was slow.
+
+
+
+
+ -
+ Released on 27 November 2003.
+
+ -
+ SciTE remembers folding of each buffer.
+
+ -
+ Lexer for Erlang language.
+
+ -
+ Scintilla allows setting the set of white space characters.
+
+ -
+ Scintilla has 'stuttered' page movement commands to first move
+ to top or bottom within current visible lines before scrolling.
+
+ -
+ Scintilla commands for moving to end of words.
+
+ -
+ Incremental line wrap enabled on Windows.
+
+ -
+ SciTE PDF exporter produces output that is more compliant with reader
+ applications, is smaller and allows more configuration.
+ HTML exporter optimizes size of output files.
+
+ -
+ SciTE defines properties PLAT_WINNT and PLAT_WIN95 on the
+ corresponding platforms.
+
+ -
+ SciTE can adjust the line margin width to fit the largest line number.
+ The line.numbers property is split between line.margin.visible and
+ line.margin.width.
+
+ -
+ SciTE on GTK+ allows user defined menu accelerators.
+ Alt can be included in user.shortcuts.
+
+ -
+ SciTE Language menu can have items commented out.
+
+ -
+ SciTE on Windows Go to dialog allows choosing a column number as
+ well as a line number.
+
+ -
+ SciTE on GTK+ make file uses prefix setting more consistently.
+
+ -
+ Bug fixed that caused word wrapping to fail to display all text.
+
+ -
+ Crashing bug fixed in GTK+ version of Scintilla when using GDK fonts
+ and opening autocompletion.
+
+ -
+ Bug fixed in Scintilla SCI_GETSELTEXT where an extra NUL
+ was included at end of returned string
+
+ -
+ Crashing bug fixed in SciTE z-order switching implementation.
+
+ -
+ Hanging bug fixed in Perl lexer.
+
+ -
+ SciTE crashing bug fixed for using 'case' without argument in style definition.
+
+
+
+
+ -
+ Released on 25 October 2003.
+
+ -
+ Rectangular selection can be performed using the keyboard.
+ Greater programmatic control over rectangular selection.
+ This has caused several changes to key bindings.
+
+ -
+ SciTE Replace In Selection works on rectangular selections.
+
+ -
+ Improved lexer for TeX, new lexer for Metapost and other support for these
+ languages.
+
+ -
+ Lexer for PowerBasic.
+
+ -
+ Lexer for Forth.
+
+ -
+ YAML lexer improved to include error styling.
+
+ -
+ Perl lexer improved to correctly handle more cases.
+
+ -
+ Assembler lexer updated to support single-quote strings and fix some
+ problems.
+
+ -
+ SciTE on Windows can switch between buffers in order of use (z-order) rather
+ than static order.
+
+ -
+ SciTE supports adding an extension for "Open Selected Filename".
+ The openpath setting works on GTK+.
+
+ -
+ SciTE can Export as XML.
+
+ -
+ SciTE $(SelHeight) variable gives a more natural result for empty and whole line
+ selections.
+
+ -
+ Fixes to wrapping problems, such as only first display line being visible in some
+ cases.
+
+ -
+ Fixes to hotspot to only highlight when over the hotspot, only use background
+ colour when set and option to limit hotspots to a single line.
+
+ -
+ Small fixes to FORTRAN lexing and folding.
+
+ -
+ SQL lexer treats single quote strings as a separate class to double quote strings..
+
+ -
+ Scintilla made compatible with expectations of container widget in GTK+ 2.3.
+
+ -
+ Fix to strip out pixmap ID when automatically choosing from an autocompletion
+ list with only one element.
+
+ -
+ SciTE bug fixed where UTF-8 files longer than 128K were gaining more than one
+ BOM.
+
+ -
+ Crashing bug fixed in SciTE on GTK+ where using "Stop Executing" twice leads
+ to all applications exiting.
+
+ -
+ Bug fixed in autocompletion scrolling on GTK+ 2 with a case sensitive list.
+ The ListBox::Sort method is no longer needed or available so platform
+ maintainers should remove it.
+
+ -
+ SciTE check.if.already.open setting removed from GTK+ version as unmaintained.
+
+
+
+
+ -
+ Released on 25 September 2003.
+
+ -
+ Fix a crashing bug in indicator display in Scintilla.
+
+ -
+ GTK+ version now defaults to building for GTK+ 2 rather than 1.
+
+ -
+ Mingw make file detects compiler version and avoids options
+ that are cause problems for some versions.
+
+ -
+ Large performance improvement on GTK+ 2 for long lines.
+
+ -
+ Incremental line wrap on GTK+.
+
+ -
+ International text entry works much better on GTK+ with particular
+ improvements for Baltic languages and languages that use 'dead' accents.
+ NUL key events such as those generated by some function keys, ignored.
+
+ -
+ Unicode clipboard support on GTK+.
+
+ -
+ Indicator type INDIC_BOX draws a rectangle around the text.
+
+ -
+ Clarion language support.
+
+ -
+ YAML language support.
+
+ -
+ MPT LOG language support.
+
+ -
+ On Windows, SciTE can switch buffers based on activation order rather
+ than buffer number.
+
+ -
+ SciTE save.on.deactivate saves all buffers rather than just the current buffer.
+
+ -
+ Lua lexer handles non-ASCII characters correctly.
+
+ -
+ Error lexer understands Borland errors with pathnames that contain space.
+
+ -
+ On GTK+ 2, autocompletion uses TreeView rather than deprecated CList.
+
+ -
+ SciTE autocompletion removed when expand abbreviation command used.
+
+ -
+ SciTE calltips support overloaded functions.
+
+ -
+ When Save fails in SciTE, choice offered to Save As.
+
+ -
+ SciTE message boxes on Windows may be moved to front when needed.
+
+ -
+ Indicators drawn correctly on wrapped lines.
+
+ -
+ Regular expression search no longer matches characters with high bit
+ set to characters without high bit set.
+
+ -
+ Hang fixed in backwards search in multi byte character documents.
+
+ -
+ Hang fixed in SciTE Mark All command when wrap around turned off.
+
+ -
+ SciTE Incremental Search no longer uses hot keys on Windows.
+
+ -
+ Calltips draw non-ASCII characters correctly rather than as arrows.
+
+ -
+ SciTE crash fixed when going to an error message with empty file name.
+
+ -
+ Bugs fixed in XPM image handling code.
+
+
+
+
+ -
+ Released on 12 August 2003.
+
+ -
+ SciTE on GTK+ 2.x can display a tab bar.
+
+ -
+ SciTE on Windows provides incremental search.
+
+ -
+ Lexer for PostScript.
+
+ -
+ Lexer for the NSIS scripting language.
+
+ -
+ New lexer for POV-Ray Scene Description Language
+ replaces previous implementation.
+
+ -
+ Lexer for the MMIX Assembler language.
+
+ -
+ Lexer for the Scriptol language.
+
+ -
+ Incompatibility: SQL keywords are specified in lower case rather than upper case.
+ SQL lexer allows double quoted strings.
+
+ -
+ Pascal lexer: character constants that start with '#' understood,
+ '@' only allowed within assembler blocks,
+ '$' can be the start of a number,
+ initial '.' in 0..constant not treated as part of a number,
+ and assembler blocks made more distinctive.
+
+ -
+ Lua lexer allows '.' in keywords.
+ Multi-line strings and comments can be folded.
+
+ -
+ CSS lexer handles multiple psuedoclasses.
+
+ -
+ Properties file folder works for INI file format.
+
+ -
+ Hidden indicator style allows the container to mark text within Scintilla
+ without there being any visual effect.
+
+ -
+ SciTE does not prompt to save changes when the buffer is empty and untitled.
+
+ -
+ Modification notifications caused by SCI_INSERTSTYLEDSTRING
+ now include the contents of the insertion.
+
+ -
+ SCI_MARKERDELETEALL deletes all the markers on a line
+ rather than just the first match.
+
+ -
+ Better handling of 'dead' accents on GTK+ 2 for languages
+ that use accented characters.
+
+ -
+ SciTE now uses value of output.vertical.size property.
+
+ -
+ Crash fixed in SciTE autocompletion on long lines.
+
+ -
+ Crash fixed in SciTE comment command on long lines.
+
+ -
+ Bug fixed with backwards regular expression search skipping
+ every second match.
+
+ -
+ Hang fixed with regular expression replace where both target and replacement were empty.
+
+
+
+
+ -
+ Released on 16 May 2003.
+
+ -
+ On GTK+ 2, encodings other than ASCII, Latin1, and Unicode are
+ supported for both display and input using iconv.
+
+ -
+ External lexers supported on GTK+/Linux.
+ External lexers must now be explicitly loaded with SCI_LOADLEXERLIBRARY
+ rather than relying upon a naming convention and automatic loading.
+
+ -
+ Support of Lout typesetting language.
+
+ -
+ Support of E-Scripts language used in the POL Ultima Online Emulator.
+
+ -
+ Scrolling and drawing performance on GTK+ enhanced, particularly for GTK+ 2.x
+ with an extra window for the text area avoiding conflicts with the scroll bars.
+
+ -
+ CopyText and CopyRange methods in Scintilla allow container to
+ easily copy to the system clipboard.
+
+ -
+ Line Copy command implemented and bound to Ctrl+Shift+T.
+
+ -
+ Scintilla APIs PositionBefore and PositionAfter can be used to iterate through
+ a document taking into account the encoding and multi-byte characters.
+
+ -
+ C++ folder can fold on the "} else {" line of an if statement by setting
+ fold.at.else property to 1.
+
+ -
+ C++ lexer allows an extra set of keywords.
+
+ -
+ Property names and thus abbreviations may be non-ASCII.
+
+ -
+ Removed attempt to load a file when setting properties that was
+ part of an old scripting experiment.
+
+ -
+ SciTE no longer warns about a file not existing when opening
+ properties files from the Options menu as there is a good chance
+ the user wants to create one.
+
+ -
+ Bug fixed with brace recognition in multi-byte encoded files where a partial
+ character matched a brace byte.
+
+ -
+ More protection against infinite loops or recursion with recursive property definitions.
+
+ -
+ On Windows, cursor will no longer disappear over margins in custom builds when
+ cursor resource not present. The Windows default cursor is displayed instead.
+
+ -
+ load.on.activate fixed in SciTE as was broken in 1.52.
+
+
+
+
+ -
+ Released on 17 April 2003.
+
+ -
+ Pango font support on GTK+ 2.
+ Unicode input improved on GTK+ 2.
+
+ -
+ Hotspot style implemented in Scintilla.
+
+ -
+ Small up and down arrows can be displayed in calltips and the container
+ is notified when the mouse is clicked on a calltip.
+ Normal and selected calltip text colours can be set.
+
+ -
+ POSIX compatibility flag in Scintilla regular expression search
+ interprets bare ( and ) as tagged sections.
+
+ -
+ Error message lexer tightened to yield fewer false matches.
+ Recognition of Lahey and Intel FORTRAN error formats.
+
+ -
+ Scintilla keyboard commands for moving to start and end of
+ screen lines rather than document lines, unless already there
+ where these keys move to the start or end of the document line.
+
+ -
+ Line joining command.
+
+ -
+ Lexer for POV-Ray.
+
+ -
+ Calltips on Windows are no longer clipped by the parent window.
+
+ -
+ Autocompletion lists are cancelled when focus leaves their parent window.
+
+ -
+ Move to next/previous empty line delimited paragraph key commands.
+
+ -
+ SciTE hang fixed with recursive property definitions by placing limit
+ on number of substitutions performed.
+
+ -
+ SciTE Export as PDF reenabled and works.
+
+ -
+ Added loadsession: command line command to SciTE.
+
+ -
+ SciTE option to quit application when last document closed.
+
+ -
+ SciTE option to ask user if it is OK to reload a file that has been
+ modified outside SciTE.
+
+ -
+ SciTE option to automatically save before running particular command tools
+ or to ask user or to not save.
+
+ -
+ SciTE on Windows 9x will write a Ctrl+Z to the process input pipe before
+ closing the pipe when running tool commands that take input.
+
+ -
+ Added a manifest resource to SciTE on Windows to enable Windows XP
+ themed UI.
+
+ -
+ SciTE calltips handle nested calls and other situations better.
+
+ -
+ CSS lexer improved.
+
+ -
+ Interface to platform layer changed - Surface initialisation now requires
+ a WindowID parameter.
+
+ -
+ Bug fixed with drawing or measuring long pieces of text on Windows 9x
+ by truncating the pieces.
+
+ -
+ Bug fixed with SciTE on GTK+ where a user shortcut for a visible character
+ inserted the character as well as executing the command.
+
+ -
+ Bug fixed where primary selection on GTK+ was reset by
+ Scintilla during creation.
+
+ -
+ Bug fixed where SciTE would close immediately on startup
+ when using save.session.
+
+ -
+ Crash fixed when entering '\' in LaTeX file.
+
+ -
+ Hang fixed when '#' last character in VB file.
+
+ -
+ Crash fixed in error message lexer.
+
+ -
+ Crash fixed when searching for long regular expressions.
+
+ -
+ Pressing return when nothing selected in user list sends notification with
+ empty text rather than random text.
+
+ -
+ Mouse debouncing disabled on Windows as it interfered with some
+ mouse utilities.
+
+ -
+ Bug fixed where overstrike mode inserted before rather than replaced last
+ character in document.
+
+ -
+ Bug fixed with syntax highlighting of Japanese text.
+
+ -
+ Bug fixed in split lines function.
+
+ -
+ Cosmetic fix to SciTE tab bar on Windows when window resized.
+ Focus sticks to either pane more consistently.
+
+
+
+
+ -
+ Released on 16 February 2003.
+
+ -
+ Two phase drawing avoids cutting off text that overlaps runs by drawing
+ all the backgrounds of a line then drawing all the text transparently.
+ Single phase drawing is an option.
+
+ -
+ Scintilla method to split lines at a particular width by adding new line
+ characters.
+
+ -
+ The character used in autocompletion lists to separate the text from the image
+ number can be changed.
+
+ -
+ The scrollbar range will automatically expand when the caret is moved
+ beyond the current range.
+ The scroll bar is updated when SCI_SETXOFFSET is called.
+
+ -
+ Mouse cursors on GTK+ improved to be consistent with other applications
+ and the Windows version.
+
+ -
+ Horizontal scrollbar on GTK+ now disappears in wrapped mode.
+
+ -
+ Scintilla on GTK+ 2: mouse wheel scrolling, cursor over scrollbars, focus,
+ and syntax highlighting now work.
+ gtk_selection_notify avoided for compatibility with GTK+ 2.2.
+
+ -
+ Fold margin colours can now be set.
+
+ -
+ SciTE can be built for GTK+ 2.
+
+ -
+ SciTE can optionally preserve the undo history over an automatic file reload.
+
+ -
+ Tags can optionally be case insensitive in XML and HTML.
+
+ -
+ SciTE on Windows handles input to tool commands in a way that should avoid
+ deadlock. Output from tools can be used to replace the selection.
+
+ -
+ SciTE on GTK+ automatically substitutes '|' for '/' in menu items as '/'
+ is used to define the menu hierarchy.
+
+ -
+ Optional buffer number in SciTE title bar.
+
+ -
+ Crash fixed in SciTE brace matching.
+
+ -
+ Bug fixed where automatic scrolling past end of document
+ flipped back to the beginning.
+
+ -
+ Bug fixed where wrapping caused text to disappear.
+
+ -
+ Bug fixed on Windows where images in autocompletion lists were
+ shown on the wrong item.
+
+ -
+ Crash fixed due to memory bug in autocompletion lists on Windows.
+
+ -
+ Crash fixed when double clicking some error messages.
+
+ -
+ Bug fixed in word part movement where sometimes no movement would occur.
+
+ -
+ Bug fixed on Windows NT where long text runs were truncated by
+ treating NT differently to 9x where there is a limitation.
+
+ -
+ Text in not-changeable style works better but there remain some cases where
+ it is still possible to delete text protected this way.
+
+
+
+
+ -
+ Released on 24 January 2003.
+
+ -
+ Autocompletion lists may have a per-item pixmap.
+
+ -
+ Autocompletion lists allow Unicode text on Windows.
+
+ -
+ Scintilla documentation rewritten.
+
+ -
+ Additional DBCS encoding support in Scintilla on GTK+ primarily aimed at
+ Japanese EUC encoding.
+
+ -
+ CSS (Cascading Style Sheets) lexer added.
+
+ -
+ diff lexer understands some more formats.
+
+ -
+ Fold box feature is an alternative way to show the structure of code.
+
+ -
+ Avenue lexer supports multiple keyword lists.
+
+ -
+ The caret may now be made invisible by setting the caret width to 0.
+
+ -
+ Python folder attaches comments before blocks to the next block rather
+ than the previous block.
+
+ -
+ SciTE openpath property on Windows searches a path for files that are
+ the subject of the Open Selected Filename command.
+
+ -
+ The localisation file name can be changed with the locale.properties property.
+
+ -
+ On Windows, SciTE can pipe the result of a string expression into a command line tool.
+
+ -
+ On Windows, SciTE's Find dialog has a Mark All button.
+
+ -
+ On Windows, there is an Insert Abbreviation command that allows a choice from
+ the defined abbreviations and inserts the selection into the abbreviation at the
+ position of a '|'.
+
+ -
+ Minor fixes to Fortran lexer.
+
+ -
+ fold.html.preprocessor decides whether to fold <? and ?>.
+ Minor improvements to PHP folding.
+
+ -
+ Maximum number of keyword lists allowed increased from 6 to 9.
+
+ -
+ Duplicate line command added with default assignment to Ctrl+D.
+
+ -
+ SciTE sets $(Replacements) to the number of replacements made by the
+ Replace All command. $(CurrentWord) is set to the word before the caret if the caret
+ is at the end of a word.
+
+ -
+ Opening a SciTE session now loads files in remembered order, sets the current file
+ as remembered, and moves the caret to the remembered line.
+
+ -
+ Bugs fixed with printing on Windows where line wrapping was causing some text
+ to not print.
+
+ -
+ Bug fixed with Korean Input Method Editor on Windows.
+
+ -
+ Bugs fixed with line wrap which would sometimes choose different break positions
+ after switching focus away and back.
+
+ -
+ Bug fixed where wheel scrolling had no effect on GTK+ after opening a fold.
+
+ -
+ Bug fixed with file paths containing non-ASCII characters on Windows.
+
+ -
+ Crash fixed with printing on Windows after defining pixmap marker.
+
+ -
+ Crash fixed in makefile lexer when first character on line was '='.
+
+ -
+ Bug fixed where local properties were not always being applied.
+
+ -
+ Ctrl+Keypad* fold command works on GTK+.
+
+ -
+ Hangs fixed in SciTE's Replace All command when replacing regular expressions '^'
+ or '$'.
+
+ -
+ SciTE monospace setting behaves more sensibly.
+
+
+
+
+ -
+ Released on 1 November 2002.
+
+ -
+ Unicode supported on GTK+. To perform well, this added a font cache to GTK+
+ and to make that safe, a mutex is used. The mutex requires the application to link in
+ the threading library by evaluating `glib-config --libs gthread`. A Unicode locale
+ should also be set up by a call like setlocale(LC_CTYPE, "en_US.UTF-8").
+ scintilla_release_resources function added to release mutex.
+
+ -
+ FORTRAN and assembler lexers added along with other support for these
+ languages in SciTE.
+
+ -
+ Ada lexer improved handling of based numbers, identifier validity and attributes
+ distinguished from character literals.
+
+ -
+ Lua lexer handles block comments and a deep level of nesting for literal strings
+ and block comments.
+
+ -
+ Errorlist lexer recognises PHP error messages.
+
+ -
+ Variant of the C++ lexer with case insensitive keywords
+ called cppnocase. Whitespace in preprocessor text handled more correctly.
+
+ -
+ Folder added for Perl.
+
+ -
+ Compilation with GCC 3.2 supported.
+
+ -
+ Markers can be pixmaps.
+
+ -
+ Lines are wrapped when printing.
+ Bug fixed which printed line numbers in different styles.
+
+ -
+ Text can be appended to end with AppendText method.
+
+ -
+ ChooseCaretX method added.
+
+ -
+ Vertical scroll bar can be turned off with SetVScrollBar method.
+
+ -
+ SciTE Save All command saves all buffers.
+
+ -
+ SciTE localisation compares keys case insensitively to make translations more flexible.
+
+ -
+ SciTE detects a utf-8 coding cookie "coding: utf-8" in first two
+ lines and goes into Unicode mode.
+
+ -
+ SciTE key bindings are definable.
+
+ -
+ SciTE Find in Files dialog can display directory browser to
+ choose directory to search.
+
+ -
+ SciTE enabling of undo and redo toolbar buttons improved.
+
+ -
+ SciTE on Windows file type filters in open dialog sorted.
+
+ -
+ Fixed crashing bug when using automatic tag closing in XML or HTML.
+
+ -
+ Fixed bug on Windows causing very long (>64K) lines to not display.
+
+ -
+ Fixed bug in backwards regular expression searching.
+
+ -
+ Fixed bug in calltips where wrong argument was highlighted.
+
+ -
+ Fixed bug in tab timmy feature when file has line feed line endings.
+
+ -
+ Fixed bug in compiling without INCLUDE_DEPRECATED_FEATURES
+ defined.
+
+
+
+
+ -
+ Released on 9 September 2002.
+
+ -
+ Improved Pascal lexer with context sensitive keywords
+ and separate folder which handles //{ and //} folding comments and
+ {$region} and {$end} folding directives.
+ The "case" statement now folds correctly.
+
+ -
+ C++ lexer correctly handles comments on preprocessor lines.
+
+ -
+ New commands for moving to beginning and end of display lines when in line
+ wrap mode. Key bindings added for these commands.
+
+ -
+ New marker symbols that look like ">>>" and "..." which can be used for
+ interactive shell prompts for Python.
+
+ -
+ The foreground and background colours of visible whitespace can be chosen
+ independent of the colours chosen for the lexical class of that whitespace.
+
+ -
+ Per line data optimised by using an exponential allocation scheme.
+
+ -
+ SciTE API file loading optimised.
+
+ -
+ SciTE for GTK+ subsystem 2 documented. The exit status of commands
+ is decoded into more understandable fields.
+
+ -
+ SciTE find dialog remembers previous find string when there is no selection.
+ Find in Selection button disabled when selection is rectangular as command
+ did not work.
+
+ -
+ Shift+Enter made equivalent to Enter to avoid users having to let go of
+ the shift key when typing. Avoids the possibility of entering single carriage
+ returns in a file that contains CR+LF line ends.
+
+ -
+ Autocompletion does not immediately disappear when the length parameter
+ to SCI_AUTOCSHOW is 0.
+
+ -
+ SciTE focuses on the editor pane when File | New executed and when the
+ output pane is closed with F8. Double clicking on a non-highlighted output
+ pane line selects the word under the cursor rather than seeking the next
+ highlighted line.
+
+ -
+ SciTE director interface implements an "askproperty" command.
+
+ -
+ SciTE's Export as LaTeX output improved.
+
+ -
+ Better choice of autocompletion displaying above the caret rather then
+ below when that is more sensible.
+
+ -
+ Bug fixed where context menu would not be completely visible if invoked
+ when cursor near bottom or left of screen.
+
+ -
+ Crashing bug fixed when displaying long strings on GTK+ caused failure of X server
+ by displaying long text in segments.
+
+ -
+ Crashing bug fixed on GTK+ when a Scintilla window was removed from its parent
+ but was still the selection owner.
+
+ -
+ Bug fixed on Windows in Unicode mode where not all characters on a line
+ were displayed when that line contained some characters not in ASCII.
+
+ -
+ Crashing bug fixed in SciTE on Windows with clearing output while running command.
+
+ -
+ Bug fixed in SciTE for GTK+ with command completion not detected when
+ no output was produced by the command.
+
+ -
+ Bug fixed in SciTE for Windows where menus were not shown translated.
+
+ -
+ Bug fixed where words failed to display in line wrapping mode with visible
+ line ends.
+
+ -
+ Bug fixed in SciTE where files opened from a session file were not closed.
+
+ -
+ Cosmetic flicker fixed when using Ctrl+Up and Ctrl+Down with some caret policies.
+
+
+
+
+ -
+ Released on 1 August 2002.
+
+ -
+ Support for GTK+ 2 in Scintilla. International input methods not supported
+ on GTK+2.
+
+ -
+ Line wrapping performance improved greatly.
+
+ -
+ New caret policy implementation that treats horizontal and vertical
+ positioning equivalently and independently. Old caret policy methods
+ deprecated and not all options work correctly with old methods.
+
+ -
+ Extra fold points for C, C++, Java, ... for fold comments //{ .. //} and
+ #if / #ifdef .. #endif and the #region .. #endregion feature of C#.
+
+ -
+ Scintilla method to find the height in pixels of a line. Currently returns the
+ same result for every line as all lines are same height.
+
+ -
+ Separate make file, scintilla_vc6.mak, for Scintilla to use Visual C++
+ version 6 since main makefile now assumes VS .NET.
+ VS .NET project files available for combined Scintilla and
+ SciTE in scite/boundscheck.
+
+ -
+ SciTE automatically recognises Unicode files based
+ on their Byte Order Marks and switches to Unicode mode.
+ On Windows, where SciTE supports Unicode display, this
+ allows display of non European characters.
+ The file is saved back into the same character encoding unless
+ the user decides to switch using the File | Encoding menu.
+
+ -
+ Handling of character input changed so that a fillup character, typically '('
+ displays a calltip when an autocompletion list was being displayed.
+
+ -
+ Multiline strings lexed better for C++ and Lua.
+
+ -
+ Regular expressions in JavaScript within hypertext files are lexed better.
+
+ -
+ On Windows, Scintilla exports a function called Scintilla_DirectFunction
+ that can be used the same as the function returned by GetDirectFunction.
+
+ -
+ Scintilla converts line endings of text obtained from the clipboard to
+ the current default line endings.
+
+ -
+ New SciTE property ensure.final.line.end can ensure that saved files
+ always end with a new line as this is required by some tools.
+ The ensure.consistent.line.ends property ensures all line ends are the
+ current default when saving files.
+ The strip.trailing.spaces property now works on the buffer so the
+ buffer in memory and the file on disk are the same after a save is performed.
+
+ -
+ The SciTE expand abbreviation command again allows '|' characters
+ in expansions to be quoted by using '||'.
+
+ -
+ SciTE on Windows can send data to the find tool through standard
+ input rather than using a command line argument to avoid problems
+ with quoting command line arguments.
+
+ -
+ The Stop Executing command in SciTE on Windows improved to send
+ a Ctrl+Z character to the tool. Better messages when stopping a tool.
+
+ -
+ Autocompletion can automatically "fill up" when one of a set of characters is
+ type with the autocomplete.<lexer>.fillups property.
+
+ -
+ New predefined properties in SciTE, SelectionStartColumn, SelectionStartLine,
+ SelectionEndColumn, SelectionEndLine can be used to integrate with other
+ applications.
+
+ -
+ Environment variables are available as properties in SciTE.
+
+ -
+ SciTE on Windows keeps status line more current.
+
+ -
+ Abbreviations work in SciTE on Linux when first opened.
+
+ -
+ File saving fixed in SciTE to ensure files are not closed when they can not be
+ saved because of file permissions. Also fixed a problem with buffers that
+ caused files to not be saved.
+
+ -
+ SciTE bug fixed where monospace mode not remembered when saving files.
+ Some searching options now remembered when switching files.
+
+ -
+ SciTE on Linux now waits on child termination when it shuts a child down
+ to avoid zombies.
+
+ -
+ SciTE on Linux has a Print menu command that defaults to invoking a2ps.
+
+ -
+ Fixed incorrect highlighting of indentation guides in SciTE for Python.
+
+ -
+ Crash fixed in Scintilla when calling GetText for 0 characters.
+
+ -
+ Exporting as LaTeX improved when processing backslashes and tabs
+ and setting up font.
+
+ -
+ Crash fixed in SciTE when exporting or copying as RTF.
+
+ -
+ SciTE session loading fixed to handle more than 10 files in session.
+
+
+
+
+ -
+ Released on 10 May 2002.
+
+ -
+ Set of lexers compiled into Scintilla can now be changed by adding and
+ removing lexer source files from scintilla/src and running LexGen.py.
+
+ -
+ SCN_ZOOM notification provided by Scintilla when user changes zoom level.
+ Method to determine width of strings in pixels so that elements can be sized
+ relative to text size.
+ SciTE changed to keep line number column displaying a given
+ number of characters.
+
+ -
+ The logical width of the document used to determine scroll bar range can be set.
+
+ -
+ Setting to allow vertical scrolling to display last line at top rather than
+ bottom of window.
+
+ -
+ Read-only mode improved to avoid changing the selection in most cases
+ when a modification is attempted. Drag and drop cursors display correctly
+ for read-only in some cases.
+
+ -
+ Visual C++ options in make files changed to suit Visual Studio .NET.
+
+ -
+ Scintilla.iface includes feature types for enumerations and lexers.
+
+ -
+ Lua lexer improves handling of literal strings and copes with nested literal strings.
+
+ -
+ Diff lexer changed to treat lines starting with "***" similarly to "---".
+ Symbolic names defined for lexical classes.
+
+ -
+ nncrontab lexer improved.
+
+ -
+ Turkish fonts (iso8859-9) supported on GTK+.
+
+ -
+ Automatic close tag feature for XML and HTML in SciTE.
+
+ -
+ Automatic indentation in SciTE improved.
+
+ -
+ Maximum number of buffers available in SciTE increased. May be up to 100
+ although other restrictions on menu length limit the real maximum.
+
+ -
+ Save a Copy command added to SciTE.
+
+ -
+ Export as TeX command added to SciTE.
+
+ -
+ Export as HTML command in SciTE respects Use Monospaced Font and
+ background colour settings.
+
+ -
+ Compilation problem on Solaris fixed.
+
+ -
+ Order of files displayed for SciTE's previous and next menu and key commands
+ are now consistent.
+
+ -
+ Saving of MRU in recent file changed so files open when SciTE quit
+ are remembered.
+
+ -
+ More variants of ctags tags handled by Open Selected Filename in SciTE.
+
+ -
+ JavaScript embedded in XML highlighted again.
+
+ -
+ SciTE status bar updated after changing parameters in case they are being
+ displayed in status bar.
+
+ -
+ Crash fixed when handling some multi-byte languages.
+
+ -
+ Crash fixed when replacing end of line characters.
+
+ -
+ Bug in SciTE fixed in multiple buffer mode where automatic loading
+ turned on could lead to losing file contents.
+
+ -
+ Bug in SciTE on GTK+ fixed where dismissing dialogs with close box led to
+ those dialogs never being shown again.
+
+ -
+ Bug in SciTE on Windows fixed where position.tile with default positions
+ led to SciTE being positioned off-screen.
+
+ -
+ Bug fixed in read-only mode, clearing all deletes contraction state data
+ leading to it not being synchronized with text.
+
+ -
+ Crash fixed in SciTE on Windows when tab bar displayed.
+
+
+
+
+ -
+ Released on 15 March 2002.
+
+ -
+ Line layout cache implemented to improve performance by maintaining
+ the positioning of characters on lines. Can be set to cache nothing,
+ the line with the caret, the visible page or the whole document.
+
+ -
+ Support, including a new lexer, added for Matlab programs.
+
+ -
+ Lua folder supports folding {} ranges and compact mode.
+ Lua lexer styles floating point numbers in number style instead of
+ setting the '.' in operator style.
+ Up to 6 sets of keywords.
+ Better support for [[ although only works well
+ when all on one line.
+
+ -
+ Python lexer improved to handle floating point numbers that contain negative
+ exponents and that start with '.'.
+
+ -
+ When performing a rectangular paste, the caret now remains at the
+ insertion point.
+
+ -
+ On Windows with a wheel mouse, page-at-a-time mode is recognised.
+
+ -
+ Read-only mode added to SciTE with a property to initialise it and another property,
+ $(ReadOnly) available to show this mode in the status bar.
+
+ -
+ SciTE status bar can show the number of lines in the selection
+ with the $(SelHeight) property.
+
+ -
+ SciTE's "Export as HTML" command uses the current character set to produce
+ correct output for non-Western-European character sets, such as Russian.
+
+ -
+ SciTE's "Export as RTF" fixed to produce correct output when file contains '\'.
+
+ -
+ SciTE goto command accepts a column as well as a line.
+ If given a column, it selects the word at that column.
+
+ -
+ SciTE's Build, Compile and Go commands are now disabled if no
+ action has been assigned to them.
+
+ -
+ The Refresh button in the status bar has been removed from SciTE on Windows.
+
+ -
+ Bug fixed in line wrap mode where cursor up or down command did not work.
+
+ -
+ Some styling bugs fixed that were due to a compilation problem with
+ gcc and inline functions with same name but different code.
+
+ -
+ The way that lexers loop over text was changed to avoid accessing beyond the
+ end or setting beyond the end. May fix some bugs and make the code safer but
+ may also cause new bugs.
+
+ -
+ Bug fixed in HTML lexer's handling of SGML.
+
+ -
+ Bug fixed on GTK+/X where lines wider than 32767 pixels did not display.
+
+ -
+ SciTE bug fixed with file name generation for standard property files.
+
+ -
+ SciTE bug fixed with Open Selected Filename command when used with
+ file name and line number combination.
+
+ -
+ In SciTE, indentation and tab settings stored with buffers so maintained correctly
+ as buffers selected.
+ The properties used to initialise these settings can now be set separately for different
+ file patterns.
+
+ -
+ Thread safety improved on Windows with a critical section protecting the font
+ cache and initialisation of globals performed within Scintilla_RegisterClasses.
+ New Scintilla_ReleaseResources call provided to allow explicit freeing of resources
+ when statically bound into another application. Resources automatically freed
+ in DLL version. The window classes are now unregistered as part of resource
+ freeing which fixes bugs that occurred in some containers such as Internet Explorer.
+
+ -
+ 'make install' fixed on Solaris.
+
+ -
+ Bug fixed that could lead to a file being opened twice in SciTE.
+
+
+
+
+ -
+ Released on 4 February 2002.
+
+ -
+ Crashing bug fixed in Editor::Paint.
+
+ -
+ Lua lexer no longer treats '.' as a word character and
+ handles 6 keyword sets.
+
+ -
+ WordStartPosition and WordEndPosition take an onlyWordCharacters
+ argument.
+
+ -
+ SciTE option for simplified automatic indentation which repeats
+ the indentation of the previous line.
+
+ -
+ Compilation fix on Alpha because of 64 bit.
+
+ -
+ Compilation fix for static linking.
+
+ -
+ Limited maximum line length handled to 8000 characters as previous
+ value of 16000 was causing stack exhaustion crashes for some.
+
+ -
+ When whole document line selected, only the last display line gets
+ the extra selected rectangle at the right hand side rather than
+ every display line.
+
+ -
+ Caret disappearing bug fixed for the case that the caret was not on the
+ first display line of a document line.
+
+ -
+ SciTE bug fixed where untitled buffer containing text was sometimes
+ deleted without chance to save.
+
+ -
+ SciTE bug fixed where use.monospaced not working with
+ multiple buffers.
+
+
+
+
+ -
+ Released on 19 January 2002.
+
+ -
+ Line wrapping robustness and performance improved in Scintilla.
+
+ -
+ Line wrapping option added to SciTE for both edit and output panes.
+
+ -
+ Static linking on Windows handles cursor resource better.
+ Documentation of static linking improved.
+
+ -
+ Autocompletion has an option to delete any word characters after the caret
+ upon selecting an item.
+
+ -
+ FOX version identified by PLAT_FOX in Platform.h.
+
+ -
+ Calltips in SciTE use the calltip.<lexer>.word.characters setting to
+ correctly find calltips for functions that include characters like '$' which
+ is not normally considered a word character.
+
+ -
+ SciTE has a command to show help on itself which gets hooked up to displaying
+ SciTEDoc.html.
+
+ -
+ SciTE option calltip.<lexer>.end.definition to display help text on a
+ second line of calltip.
+
+ -
+ Fixed the handling of the Buffers menu on GTK+ to ensure current buffer
+ indicated and no warnings occur.
+ Changed some menu items on GTK+ version to be same as Windows version.
+
+ -
+ use.monospaced property for SciTE determines initial state of Use Monospaced Font
+ setting.
+
+ -
+ The SciTE Complete Symbol command now works when there are no word
+ characters before the caret, even though it is slow to display the whole set of
+ symbols.
+
+ -
+ Function names removed from SciTE's list of PHP keywords. The full list of
+ predefined functions is available from another web site mentioned on the
+ Extras page.
+
+ -
+ Crashing bug at startup on GTK+ for some configurations fixed.
+
+ -
+ Crashing bug on GTK+ on 64 bit platforms fixed.
+
+ -
+ Compilation problem with some compilers fixed in GTK+.
+
+ -
+ Japanese text entry improved on Windows 9x.
+
+ -
+ SciTE recent files directory problem on Windows when HOME and SciTE_HOME
+ environment variables not set is now the directory of the executable.
+
+ -
+ Session files no longer include untitled buffers.
+
+
+
+
+ -
+ Released on 24 December 2001.
+
+ -
+ Better localisation support including context menus and most messages.
+ Translations of the SciTE user interface available for Bulgarian,
+ French, German, Italian, Russian, and Turkish.
+
+ -
+ Can specify a character to use to indicate control characters
+ rather than having them displayed as mnemonics.
+
+ -
+ Scintilla key command for backspace that will not delete line
+ end characters.
+
+ -
+ Scintilla method to find start and end of words.
+
+ -
+ SciTE on GTK+ now supports the load.on.activate and save.on.deactivate
+ properties in an equivalent way to the Windows version.
+
+ -
+ The output pane of SciTE on Windows is now interactive so command line
+ utilities that prompt for input or confirmation can be used.
+
+ -
+ SciTE on Windows can choose directory for a "Find in Files"
+ command like the GTK+ version could.
+
+ -
+ SciTE can now load a set of API files rather than just one file.
+
+ -
+ ElapsedTime class added to Platform for accurate measurement of durations.
+ Used for debugging and for showing the user how long commands take in SciTE.
+
+ -
+ Baan lexer added.
+
+ -
+ In C++ lexer, document comment keywords no longer have to be at the start
+ of the line.
+
+ -
+ PHP lexer changed to match keywords case insensitively.
+
+ -
+ More shell keywords added.
+
+ -
+ SciTE support for VoiceXML added to xml.properties.
+
+ -
+ In SciTE the selection is not copied to the find field of the Search and Replace
+ dialogs if it contains end of line characters.
+
+ -
+ SciTE on Windows has a menu item to decide whether to respond to other
+ instances which are performing their check.if.already.open check.
+
+ -
+ SciTE accelerator key for Box Comment command changed to avoid problems
+ in non-English locales.
+
+ -
+ SciTE context menu includes Close command for the editor pane and
+ Hide command for the output pane.
+
+ -
+ output: command added to SciTE director interface to add text to the
+ output pane. The director interface can execute commands (such as tool
+ commands with subsystem set to 3) by sending a macro:run message.
+
+ -
+ SciTE on GTK+ will defer to the Window Manager for position if position.left or
+ position.top not set and for size if position.width or position.height not set.
+
+ -
+ SciTE on Windows has a position.tile property to place a second instance
+ to the right of the first.
+
+ -
+ Scintilla on Windows again supports EM_GETSEL and EM_SETSEL.
+
+ -
+ Problem fixed in Scintilla on Windows where control ID is no longer cached
+ as it could be changed by external code.
+
+ -
+ Problems fixed in SciTE on Windows when finding any other open instances at
+ start up when check.if.already.open is true.
+
+ -
+ Bugs fixed in SciTE where command strings were not always having
+ variables evaluated.
+
+ -
+ Bugs fixed with displaying partial double-byte and Unicode characters
+ in rectangular selections and at the edge when edge mode is EDGE_BACKGROUND.
+ Column numbers reported by GetColumn treat multiple byte characters as one column
+ rather than counting bytes.
+
+ -
+ Bug fixed with caret movement over folded lines.
+
+ -
+ Another bug fixed with tracking selection in secondary views when performing
+ modifications.
+
+ -
+ Horizontal scrolling and display of long lines optimised.
+
+ -
+ Cursor setting in Scintilla on GTK+ optimised.
+
+ -
+ Experimental changeable style attribute.
+ Set to false to make text read-only.
+ Currently only stops caret from being within not-changeable
+ text and does not yet stop deleting a range that contains
+ not-changeable text.
+ Can be used from SciTE by adding notchangeable to style entries.
+
+ -
+ Experimental line wrapping.
+ Currently has performance and appearence problems.
+
+
+
+
+ -
+ Released on 6 November 2001.
+
+ -
+ Changed Platform.h to not include platform headers. This lessens likelihood and impact of
+ name clashes from system headers and also speeds up compilation.
+ Renamed DrawText to DrawTextNoClip to avoid name clash.
+
+ -
+ Changed way word functions work to treat a sequence of punctuation as
+ a word. This is more sensible and also more compatible with other editors.
+
+ -
+ Cursor changes over the margins and selection on GTK+ platform.
+
+ -
+ SC_MARK_BACKGROUND is a marker that only changes the line's background colour.
+
+ -
+ Enhanced Visual Basic lexer handles character date and octal literals,
+ and bracketed keywords for VB.NET. There are two VB lexers, vb and vbscript
+ with type indication characters like ! and $ allowed at the end of identifiers
+ in vb but not vbscript. Lexer states now separate from those used for C++ and
+ names start with SCE_B.
+
+ -
+ Lexer added for Bullant language.
+
+ -
+ The horizontal scroll position, xOffset, is now exposed through the API.
+
+ -
+ The SCN_POSCHANGED notification is deprecated as it was causing confusion.
+ Use SCN_UPDATEUI instead.
+
+ -
+ Compilation problems fixed for some versions of gcc.
+
+ -
+ Support for WM_GETTEXT restored on Windows.
+
+ -
+ Double clicking on an autocompletion list entry works on GTK+.
+
+ -
+ Bug fixed with case insensitive sorts for autocompletion lists.
+
+ -
+ Bug fixed with tracking selection in secondary views when performing modifications.
+
+ -
+ SciTE's abbreviation expansion feature will now indent expansions to the current
+ indentation level if indent.automatic is on.
+
+ -
+ SciTE allows setting up of parameters to commands from a dialog and can also
+ show this dialog automatically to prompt for arguments when running a command.
+
+ -
+ SciTE's Language menu (formerly Options | Use Lexer) is now defined by the
+ menu.language property rather than being hardcoded.
+
+ -
+ The user interface of SciTE can be localised to a particular language by editing
+ a locale.properties file.
+
+ -
+ On Windows, SciTE will try to move to the front when opening a new file from
+ the shell and using check.if.already.open.
+
+ -
+ SciTE can display the file name and directory in the title bar in the form
+ "file @ directory" when title.full.path=2.
+
+ -
+ The SciTE time.commands property reports the time taken by a command as well
+ as its status when completed.
+
+ -
+ The SciTE find.files property is now a list separated by '|' characters and this list is
+ added into the Files pull down of the Find in Files dialog.
+
+
+
+
+ -
+ Released on 23 September 2001.
+
+ -
+ Removal of emulation of Win32 RichEdit control in core of Scintilla.
+ This change may be incompatible with existing client code.
+ Some emulation still done in Windows platform layer.
+
+ -
+ SGML support in the HTML/XML lexer.
+
+ -
+ SciTE's "Stop Executing" command will terminate GUI programs on
+ Windows NT and Windows 2000.
+
+ -
+ StyleContext class helps construct lexers that are simple and accurate.
+ Used in the C++, Eiffel, and Python lexers.
+
+ -
+ Clipboard operations in GTK+ version convert between platform '\n' line endings and
+ currently chosen line endings.
+
+ -
+ Any character in range 0..255 can be used as a marker.
+ This can be used to support numbered bookmarks, for example.
+
+ -
+ The default scripting language for ASP can be set.
+
+ -
+ New lexer and other support for crontab files used with the nncron scheduler.
+
+ -
+ Folding of Python improved.
+
+ -
+ The ` character is treated as a Python operator.
+
+ -
+ Line continuations ("\" at end of line) handled inside Python strings.
+
+ -
+ More consistent handling of line continuation ('\' at end of line) in
+ C++ lexer.
+ This fixes macro definitions that span more than one line.
+
+ -
+ C++ lexer can understand Doxygen keywords in doc comments.
+
+ -
+ SciTE on Windows allows choosing to open the "open" dialog on the directory
+ of the current file rather than in the default directory.
+
+ -
+ SciTE on Windows handles command line arguments in "check.if.already.open"
+ correctly when the current directory of the new instance is different to the
+ already open instance of SciTE.
+
+ -
+ "cwd" command (change working directory) defined for SciTE director interface.
+
+ -
+ SciTE "Export As HTML" produces better, more compliant, and shorter files.
+
+ -
+ SciTE on Windows allows several options for determining default file name
+ for exported files.
+
+ -
+ Automatic indentation of Python in SciTE fixed.
+
+ -
+ Exported HTML can support folding.
+
+ -
+ Bug fixed in SCI_GETTEXT macro command of director interface.
+
+ -
+ Cursor leak fixed on GTK+.
+
+ -
+ During SciTE shutdown, "identity" messages are no longer sent over the director interface.
+
+
+
+
+ -
+ Released on 22 August 2001.
+
+ -
+ Windows version requires msvcrt.dll to be available so will not work
+ on original Windows 95 version 1. The msvcrt.dll file is installed
+ by almost everything including Internet Explorer so should be available.
+
+ -
+ Flattened tree control style folding margin. The SciTE fold.plus option is
+ now fold.symbols and has more values for the new styles.
+
+ -
+ Mouse dwell events are generated when the user holds the mouse steady
+ over Scintilla.
+
+ -
+ PositionFromPointClose is like PositionFromPoint but returns
+ INVALID_POSITION when point outside window or after end of line.
+
+ -
+ Input of Hungarian and Russian characters in GTK+ version works by
+ truncating input to 8 bits if in the range of normal characters.
+
+ -
+ Better choices for font descriptors on GTK+ for most character sets.
+
+ -
+ GTK+ Scintilla is destroyed upon receiving destroy signal rather than
+ destroy_event signal.
+
+ -
+ Style setting that force upper or lower case text.
+
+ -
+ Case-insensitive autocompletion lists work correctly.
+
+ -
+ Keywords can be prefix based so ^GTK_ will treat all words that start
+ with GTK_ as keywords.
+
+ -
+ Qt::Horizontal scrolling can be jumpy rather than gradual.
+
+ -
+ GetSelText places a '\0' in the buffer if the selection is empty..
+
+ -
+ EnsureVisible split into two methods EnsureVisible which will not scroll to show
+ the line and EnsureVisibleEnforcePolicy which may scroll.
+
+ -
+ Python folder has options to fold multi-line comments and triple quoted strings.
+
+ -
+ C++ lexer handles keywords before '.' like "this.x" in Java as keywords.
+ Compact folding mode option chooses whether blank lines after a structure are
+ folded with that structure. Second set of keywords with separate style supported.
+
+ -
+ Ruby lexer handles multi-line comments.
+
+ -
+ VB has folder.
+
+ -
+ PHP lexer has an operator style, handles "<?" and "?>" inside strings
+ and some comments.
+
+ -
+ TCL lexer which is just an alias for the C++ lexer so does not really
+ understand TCL syntax.
+
+ -
+ Error lines lexer has styles for Lua error messages and .NET stack traces.
+
+ -
+ Makefile lexer has a target style.
+
+ -
+ Lua lexer handles some [[]] string literals.
+
+ -
+ HTML and XML lexer have a SCE_H_SGML state for tags that
+ start with "<!".
+
+ -
+ Fixed Scintilla bugs with folding. When modifications were performed near
+ folded regions sometimes no unfolding occurred when it should have. Deleting a
+ fold causing character sometimes failed to update fold information correctly.
+
+ -
+ Better support for Scintilla on GTK+ for Win32 including separate
+ PLAT_GTK_WIN32 definition and correct handling of rectangular selection
+ with clipboard operations.
+
+ -
+ SciTE has a Tools | Switch Pane (Ctrl+F6) command to switch focus between
+ edit and output panes.
+
+ -
+ SciTE option output.scroll allows automatic scrolling of output pane to
+ be turned off.
+
+ -
+ Commands can be typed into the SciTE output pane similar to a shell window.
+
+ -
+ SciTE properties magnification and output magnification set initial zoom levels.
+
+ -
+ Option for SciTE comment block command to place comments at start of line.
+
+ -
+ SciTE for Win32 has an option to minimize to the tray rather than the task bar.
+
+ -
+ Close button on SciTE tool bar for Win32.
+
+ -
+ SciTE compiles with GCC 3.0.
+
+ -
+ SciTE's automatic indentation of C++ handles braces without preceding keyword
+ correctly.
+
+ -
+ Bug fixed with GetLine method writing past the end of where it should.
+
+ -
+ Bug fixed with mouse drag automatic scrolling when some lines were folded.
+
+ -
+ Bug fixed because caret XEven setting was inverted.
+
+ -
+ Bug fixed where caret was initially visible even though window was not focussed.
+
+ -
+ Bug fixed where some file names could end with "\\" which caused slow
+ downs on Windows 9x.
+
+ -
+ On Win32, SciTE Replace dialog starts with focus on replacement text.
+
+ -
+ SciTE Go to dialog displays correct current line.
+
+ -
+ Fixed bug with SciTE opening multiple files at once.
+
+ -
+ Fixed bug with Unicode key values reported to container truncated.
+
+ -
+ Fixed bug with unnecessary save point notifications.
+
+ -
+ Fixed bugs with indenting and unindenting at start of line.
+
+ -
+ Monospace Font setting behaves more consistently.
+
+
+
+
+ -
+ Released on 23 May 2001.
+
+ -
+ Loadable lexer plugins on Windows.
+
+ -
+ Ruby lexer and support.
+
+ -
+ Lisp lexer and support.
+
+ -
+ Eiffel lexer and support.
+
+ -
+ Modes for better handling of Tab and BackSpace keys within
+ indentation. Mode to avoid autocompletion list cancelling when
+ there are no viable matches.
+
+ -
+ ReplaceTarget replaced with two calls ReplaceTarget
+ (which is incompatible with previous ReplaceTarget) and
+ ReplaceTargetRE. Both of these calls have a count first
+ parameter which allows using strings containing nulls.
+ SearchInTarget and SetSearchFlags functions allow
+ specifying a search in several simple steps which helps
+ some clients which can not create structs or pointers easily.
+
+ -
+ Asian language input through an Input Method Editor works
+ on Windows 2000.
+
+ -
+ On Windows, control characters can be entered through use of
+ the numeric keypad in conjunction with the Alt key.
+
+ -
+ Document memory allocation changed to grow exponentially
+ which reduced time to load a 30 Megabyte file from
+ 1000 seconds to 25. Change means more memory may be used.
+
+ -
+ Word part movement keys now handled in Scintilla rather than
+ SciTE.
+
+ -
+ Regular expression '^' and '$' work more often allowing insertion
+ of text at start or end of line with a replace command.
+ Backslash quoted control characters \a, \b, \f, \t, and \v
+ recognised within sets.
+
+ -
+ Session files for SciTE.
+
+ -
+ Export as PDF command hidden in SciTE as it often failed.
+ Code still present so can be turned on by those willing to cope.
+
+ -
+ Bug fixed in HTML lexer handling % before > as end ASP
+ even when no start ASP encountered.
+ Bug fixed when scripts ended with a quoted string and
+ end tag was not seen.
+
+ -
+ Bug fixed on Windows where context menu key caused menu to
+ appear in corner of screen rather than within window.
+
+ -
+ Bug fixed in SciTE's Replace All command not processing
+ whole file when replace string longer than search string.
+
+ -
+ Bug fixed in SciTE's MRU list repeating entries if Ctrl+Tab
+ used when all entries filled.
+
+ -
+ ConvertEOLs call documentation fixed.
+
+
+
+
+ -
+ Released on 17 April 2001.
+
+ -
+ Bug fixed with scroll bars being invisible on GTK+ 1.2.9.
+
+ -
+ Scintilla and SciTE support find and replace using simple regular
+ expressions with tagged expressions. SciTE supports C '\' escapes
+ in the Find and Replace dialogs.
+ Replace in Selection available in SciTE.
+
+ -
+ Scintilla has a 'target' feature for replacing code rapidly without
+ causing display updates.
+
+ -
+ Scintilla and SciTE on GTK+ support file dropping from file managers
+ such as Nautilus and gmc. Files or other URIs dropped on Scintilla
+ result in a URIDropped notification.
+
+ -
+ Lexers may have separate Lex and Fold functions.
+
+ -
+ Lexer infrastructure improved to allow for plug in lexers and for referring
+ to lexers by name rather than by ID.
+
+ -
+ Ada lexer and support added.
+
+ -
+ Option in both Scintilla and SciTE to treat both left and right margin
+ as equally important when repositioning visible area in response to
+ caret movement. Default is to prefer visible area positioning which
+ minimises the horizontal scroll position thus favouring the left margin.
+
+ -
+ Caret line highlighting.
+
+ -
+ Commands to delete from the caret to the end of line and
+ from the caret to the beginning of line.
+
+ -
+ SciTE has commands for inserting and removing block comments and
+ for inserting stream comments.
+
+ -
+ SciTE Director interface uses C++ '\' escapes to send control characters.
+
+ -
+ SciTE Director interface adds more commands including support for macros.
+
+ -
+ SciTE has menu options for recording and playing macros which are visible
+ when used with a companion program that supports these features.
+
+ -
+ SciTE has an Expand Abbreviation command.
+ Abbreviations are stored in a global abbrev.properties file.
+
+ -
+ SciTE has a Full Screen command to switch between a normal window
+ size and using the full screen. On Windows, the menu bar can be turned
+ off when in full screen mode.
+
+ -
+ SciTE has a Use monospaced font command to switch between the normal
+ set of fonts and one size of a particular fixed width font.
+
+ -
+ SciTE's use of tabs can be controlled for particular file names
+ as well as globally.
+
+ -
+ The contents of SciTE's status bar can be defined by a property and
+ include variables. On Windows, several status bar definitions can be active
+ with a click on the status bar cycling through them.
+
+ -
+ Copy as RTF command in SciTE on Windows to allow pasting
+ styled text into word processors.
+
+ -
+ SciTE can allow the use of non-alphabetic characters in
+ Complete Symbol lists and can automatically display this autocompletion
+ list when a trigger character such as '.' is typed.
+ Complete word can be set to pop up when the user is typing a word and
+ there is only one matching word in the document.
+
+ -
+ SciTE lists the imported properties files on a menu to allow rapid
+ access to them.
+
+ -
+ SciTE on GTK+ improvements to handling accelerator keys and focus
+ in dialogs. Message boxes respond to key presses without the Alt key as
+ they have no text entries to accept normal keystrokes.
+
+ -
+ SciTE on GTK+ sets the application icon.
+
+ -
+ SciTE allows setting the colours used to indicate the current
+ error line.
+
+ -
+ Variables within PHP strings have own style. Keyword list updated.
+
+ -
+ Keyword list for Lua updated for Lua 4.0.
+
+ -
+ Bug fixed in rectangular selection where rectangle still appeared
+ selected after using cursor keys to move caret.
+
+ -
+ Bug fixed in C++ lexer when deleting a '{' controlling a folded range
+ led to that range becoming permanently invisible.
+
+ -
+ Bug fixed in Batch lexer where comments were not recognised.
+
+ -
+ Bug fixed with undo actions coalescing into steps incorrectly.
+
+ -
+ Bug fixed with Scintilla on GTK+ positioning scroll bars 1 pixel
+ over the Scintilla window leading to their sides being chopped off.
+
+ -
+ Bugs fixed in SciTE when doing some actions led to the start
+ or end of the file being displayed rather than the current location.
+
+ -
+ Appearance of calltips fixed to look like document text including
+ any zoom factor. Positioned to be outside current line even when
+ multiple fonts and sizes used.
+
+ -
+ Bug fixed in Scintilla macro support where typing Enter caused both a newline
+ command and newline character insertion to be recorded.
+
+ -
+ Bug fixed in SciTE on GTK+ where focus was moving
+ between widgets incorrectly.
+
+ -
+ Bug fixed with fold symbols sometimes not updating when
+ the text changed.
+
+ -
+ Bugs fixed in SciTE's handling of folding commands.
+
+ -
+ Deprecated undo collection enumeration removed from API.
+
+
+
+
+ -
+ Released on 1 March 2001.
+
+ -
+ Scintilla supports GTK+ on Win32.
+
+ -
+ Some untested work on making Scintilla and SciTE 64 bit compatible.
+ For users on GTK+ this requires including Scintilla.h before
+ ScintillaWidget.h.
+
+ -
+ HTML lexer allows folding HTML.
+
+ -
+ New lexer for Avenue files which are used in the ESRI ArcView GIS.
+
+ -
+ DOS Batch file lexer has states for '@', external commands, variables and
+ operators.
+
+ -
+ C++ lexer can fold comments of /* .. */ form.
+
+ -
+ Better disabling of popup menu items in Scintilla when in read-only mode.
+
+ -
+ Starting to move to Doxygen compatible commenting.
+
+ -
+ Director interface on Windows enables another application to control SciTE.
+
+ -
+ Opening SciTE on Windows 9x sped up greatly for some cases.
+
+ -
+ The command.build.directory property allows SciTE to run the build
+ command in a different directory to the source files.
+
+ -
+ SciTE on Windows allows setting foreground and background colours
+ for printed headers and footers.
+
+ -
+ Bug fixed in finding calltips in SciTE which led to no calltips for some identifiers.
+
+ -
+ Documentation added for lexers and for the extension and director interfaces.
+
+ -
+ SciTE menus rearranged with new View menu taking over some of the items that
+ were under the Options menu. Clear All Bookmarks command added.
+
+ -
+ Clear Output command in SciTE.
+
+ -
+ SciTE on Windows gains an Always On Top command.
+
+ -
+ Bug fixed in SciTE with attempts to define properties recursively.
+
+ -
+ Bug fixed in SciTE properties where only one level of substitution was done.
+
+ -
+ Bug fixed in SciTE properties where extensions were not being
+ matched in a case insensitive manner.
+
+ -
+ Bug fixed in SciTE on Windows where the Go to dialog displays the correct
+ line number.
+
+ -
+ In SciTE, if fold.on.open set then switching buffers also performs fold.
+
+ -
+ Bug fixed in Scintilla where ensuring a line was visible in the presence of folding
+ operated on the document line instead of the visible line.
+
+ -
+ SciTE command line processing modified to operate on arguments in order and in
+ two phases. First any arguments before the first file name are processed, then the
+ UI is opened, then the remaining arguments are processed. Actions defined for the
+ Director interface (currently only "open") may also be used on the command line.
+ For example, "SciTE -open:x.txt" will start SciTE and open x.txt.
+
+ -
+ Numbered menu items SciTE's Buffers menu and the Most Recently Used portion
+ of the File menu go from 1..0 rather than 0..9.
+
+ -
+ The tab bar in SciTE for Windows has numbers.
+ The tab.hide.one option hides the tab bar until there is more than one buffer open.
+
+
+
+
+ -
+ Released on 29 January 2001.
+
+ -
+ Rewritten and simplified widget code for the GTK+ version to enhance
+ solidity and make more fully compliant with platform norms. This includes more
+ normal handling of keystrokes so they are forwarded to containers correctly.
+
+ -
+ User defined lists can be shown.
+
+ -
+ Many fixes to the Perl lexer.
+
+ -
+ Pascal lexer handles comments more correctly.
+
+ -
+ C/C++/Java/JavaScipt lexer has a state for line doc comments.
+
+ -
+ Error output lexer understands Sun CC messages.
+
+ -
+ Make file lexer has variable, preprocessor, and operator states.
+
+ -
+ Wider area given to an italics character that is at the end of a line to prevent it
+ being cut off.
+
+ -
+ Call to move the caret inside the currently visible area.
+
+ -
+ Paste Rectangular will space fill on the left hand side of the pasted text as
+ needed to ensure it is kept rectangular.
+
+ -
+ Cut and Paste Rectangular does nothing in read-only mode.
+
+ -
+ Undo batching changed so that a paste followed by typing creates two undo actions..
+
+ -
+ A "visibility policy" setting for Scintilla determines which range of lines are displayed
+ when a particular line is moved to. Also exposed as a property in SciTE.
+
+ -
+ SciTE command line allows property settings.
+
+ -
+ SciTE has a View Output command to hide or show the output pane.
+
+ -
+ SciTE's Edit menu has been split in two with searching commands moved to a
+ new Search menu. Find Previous and Previous Bookmark are in the Search menu.
+
+ -
+ SciTE on Windows has options for setting print margins, headers and footers.
+
+ -
+ SciTE on Windows has tooltips for toolbar.
+
+ -
+ SciTE on GTK+ has properties for setting size of file selector.
+
+ -
+ Visual and audio cues in SciTE on Windows enhanced.
+
+ -
+ Fixed performance problem in SciTE for GTK+ by dropping the extra 3D
+ effect on the content windows.
+
+ -
+ Fixed problem in SciTE where choosing a specific lexer then meant
+ that no lexer was chosen when files opened.
+
+ -
+ Default selection colour changed to be visible on low colour displays.
+
+ -
+ Fixed problems with automatically reloading changed documents in SciTE on
+ Windows.
+
+ -
+ Fixed problem with uppercase file extensions in SciTE.
+
+ -
+ Fixed some problems when using characters >= 128, some of which were being
+ incorrectly treated as spaces.
+
+ -
+ Fixed handling multiple line tags, non-inline scripts, and XML end tags /> in HTML/XML lexer.
+
+ -
+ Bookmarks in SciTE no longer disappear when switching between buffers.
+
+
+
+
+ -
+ Released on 28 November 2000.
+
+ -
+ Pascal lexer.
+
+ -
+ Export as PDF in SciTE.
+
+ -
+ Support for the OpenVMS operating system in SciTE.
+
+ -
+ SciTE for GTK+ can check for another instance of SciTE
+ editing a file and switch to it rather than open a second instance
+ on one file.
+
+ -
+ Fixes to quoting and here documents in the Perl lexer.
+
+ -
+ SciTE on Windows can give extra visual and audio cues when a
+ warning is shown or find restarts from beginning of file.
+
+ -
+ Open Selected Filename command in SciTE. Also understands some
+ warning message formats.
+
+ -
+ Wider area for line numbers when printing.
+
+ -
+ Better scrolling performance on GTK+.
+
+ -
+ Fixed problem where rectangles with negative coordinates were
+ invalidated leading to trouble with platforms that use
+ unsigned coordinates.
+
+ -
+ GTK+ Scintilla uses more compliant signalling code so that keyboard
+ events should propagate to containers.
+
+ -
+ Bug fixed with opening full or partial paths.
+
+ -
+ Improved handling of paths in error messages in SciTE.
+
+ -
+ Better handling of F6 in SciTE.
+
+
+
+
+ -
+ Released on 6 November 2000.
+
+ -
+ XIM support for the GTK+ version of Scintilla ensures that more non-English
+ characters can be typed.
+
+ -
+ Caret may be 1, 2, or 3 pixels wide.
+
+ -
+ Cursor may be switched to wait image during lengthy processing.
+
+ -
+ Scintilla's internal focus flag is exposed for clients where focus is handled in
+ complex ways.
+
+ -
+ Error status defined for Scintilla to hold indication that an operation failed and the reason
+ for that failure. No detection yet implemented but clients may start using the interface
+ so as to be ready for when it does.
+
+ -
+ Context sensitive help in SciTE.
+
+ -
+ CurrentWord property available in SciTE holding the value of the word the
+ caret is within or near.
+
+ -
+ Apache CONF file lexer.
+
+ -
+ Changes to Python lexer to allow 'as' as a context sensitive keyword and the
+ string forms starting with u, r, and ur to be recognised.
+
+ -
+ SCN_POSCHANGED notification now working and SCN_PAINTED notification added.
+
+ -
+ Word part movement commands for cursoring between the parts of reallyLongCamelIdentifiers and
+ other_ways_of_making_words.
+
+ -
+ When text on only one line is selected, Shift+Tab moves to the previous tab stop.
+
+ -
+ Tab control available for Windows version of SciTE listing all the buffers
+ and making it easy to switch between them.
+
+ -
+ SciTE can be set to automatically determine the line ending type from the contents of a
+ file when it is opened.
+
+ -
+ Dialogs in GTK+ version of SciTE made more modal and have accelerator keys.
+
+ -
+ Find in Files command in GTK+ version of SciTE allows choice of directory.
+
+ -
+ On Windows, multiple files can be opened at once.
+
+ -
+ SciTE source broken up into more files.
+
+ -
+ Scintilla headers made safe for C language, not just C++.
+
+ -
+ New printing modes - force background to white and force default background to white.
+
+ -
+ Automatic unfolding not occurring when Enter pressed at end of line bug fixed.
+
+ -
+ Bugs fixed in line selection.
+
+ -
+ Bug fixed with escapes in PHP strings in the HTML lexer.
+
+ -
+ Bug fixed in SciTE for GTK+ opening files when given full paths.
+
+ -
+ Bug fixed in autocompletion where user backspaces into existing text.
+
+ -
+ Bugs fixed in opening files and ensuring they are saved before running.
+ A case bug also fixed here.
+
+
+
+
+ -
+ Released on 8 September 2000.
+
+ -
+ Fixes bugs in complete word and related code. Protection against a bug when
+ receiving a bad argument.
+
+
+
+
+ -
+ Released on 6 September 2000.
+
+ -
+ Scintilla is available as a COM control from the scintillactrl module in CVS.
+
+ -
+ Style setting to underline text. Exposed in SciTE as "underlined".
+
+ -
+ Style setting to make text invisible.
+
+ -
+ SciTE has an extensibility interface that can be used to implement features such as
+ a scripting language or remote control. An example use of this is the extlua module
+ available from CVS which allows SciTE to be scripted in Lua.
+
+ -
+ Many minor fixes to all of the lexers.
+
+ -
+ New lexer for diff and patch files.
+
+ -
+ Error message lexer understands Perl error messages.
+
+ -
+ C/C++/Java lexer now supports C#, specifically verbatim strings and
+ @ quoting of identifiers that are the same as keywords. SciTE has
+ a set of keywords for C# and a build command set up for C#.
+
+ -
+ Scintilla property to see whether in overtype or insert state.
+
+ -
+ PosChanged notification fired when caret moved.
+
+ -
+ Comboboxes in dialogs in SciTE on Windows can be horizontally scrolled.
+
+ -
+ Autocompletion and calltips can treat the document as case sensitive or
+ case insensitive.
+
+ -
+ Autocompletion can be set to automatically choose the only
+ element in a single element list.
+
+ -
+ Set of characters that automatically complete an autocompletion list
+ can be set.
+
+ -
+ SciTE command to display calltip - useful when dropped because of
+ editing.
+
+ -
+ SciTE has a Revert command to go back to the last saved version.
+
+ -
+ SciTE has an Export as RTF command. Save as HTML is renamed
+ to Export as HTML and is located on the Export sub menu.
+
+ -
+ SciTE command "Complete Word" searches document for any
+ words starting with characters before caret.
+
+ -
+ SciTE options for changing aspects of the formatting of files exported
+ as HTML or RTF.
+
+ -
+ SciTE "character.set" option for choosing the character
+ set for all fonts.
+
+ -
+ SciTE has a "Toggle all folds" command.
+
+ -
+ The makefiles have changed. The makefile_vc and
+ makefile_bor files in scintilla/win32 and scite/win32 have been
+ merged into scintilla/win32/scintilla.mak and scite/win32/scite.mak.
+ DEBUG may be defined for all make files and this will turn on
+ assertions and for some make files will choose other debugging
+ options.
+
+ -
+ To make debugging easier and allow good use of BoundsChecker
+ there is a Visual C++ project file in scite/boundscheck that builds
+ all of Scintilla and SciTE into one executable.
+
+ -
+ The size of the SciTE output window can be set with the
+ output.horizontal.size and output.vertical.size settings.
+
+ -
+ SciTE status bar indicator for insert or overwrite mode.
+
+ -
+ Performance improvements to autocompletion and calltips.
+
+ -
+ A caret redraw problem when undoing is fixed.
+
+ -
+ Crash with long lines fixed.
+
+ -
+ Bug fixed with merging markers when lines merged.
+
+
+
+
+ -
+ Released on 26 July 2000.
+
+ -
+ Much better support for PHP which is now an integral part of the HTML support.
+
+ -
+ Start replacement of Windows-specific APIs with cross platform APIs.
+ In 1.30, the new APIs are introduced but the old APIs are still available.
+ For the GTK+ version, may have to include "WinDefs.h" explicitly to
+ use the old APIs.
+
+ -
+ "if" and "import" statements in SciTE properties files allows modularisation into
+ language-specific properties files and choices based upon platform.
+ This means that SciTE is delivered with 9 language-specific properties files
+ as well as the standard SciTEGlobal.properties file.
+
+ -
+ Much lower resource usage on Windows 9x.
+
+ -
+ "/p" option in SciTE on Windows for printing a file and then exiting.
+
+ -
+ Options for printing with inverted brightness (when the screen is set to use
+ a dark background) and to force black on white printing.
+
+ -
+ Option for printing magnified or miniaturised from screen settings.
+
+ -
+ In SciTE, Ctrl+F3 and Ctrl+Shift+F3 find the selection in the forwards and backwards
+ directions respectively.
+
+ -
+ Auto-completion lists may be set to cancel when the cursor goes before
+ its start position or before the start of string being completed.
+
+ -
+ Auto-completion lists automatically size more sensibly.
+
+ -
+ SCI_CLEARDOCUMENTSTYLE zeroes all style bytes, ensures all
+ lines are shown and deletes all folding information.
+
+ -
+ On Windows, auto-completion lists are visually outdented rather than indented.
+
+ -
+ Close all command in SciTE.
+
+ -
+ On Windows multiple files can be dragged into SciTE.
+
+ -
+ When saving a file, the SciTE option save.deletes.first deletes it before doing the save.
+ This allows saving with a different capitalisation on Windows.
+
+ -
+ When use tabs option is off pressing the tab key inserts spaces.
+
+ -
+ Bug in indicators leading to extra line drawn fixed.
+
+
+
+
+ -
+ Released on 27 June 2000.
+
+ -
+ Fixes crash in indentation guides when indent size set to 0.
+
+ -
+ Fixes to installation on GTK+/Linux. User properties file on GTK+ has a dot at front of name:
+ .SciTEUser.properties. Global properties file location configurable at compile time
+ defaulting to $prefix/share/scite. $prefix determined from Gnome if present else its
+ /usr/local and can be overridden by installer. Gnome menu integration performed in
+ make install if Gnome present.
+
+
+
+
+ -
+ Released on 23 June 2000.
+
+ -
+ Indentation guides. View whitespace mode may be set to not display whitespace
+ in indentation.
+
+ -
+ Set methods have corresponding gets for UndoCollection, BufferedDraw,
+ CodePage, UsePalette, ReadOnly, CaretFore, and ModEventMask.
+
+ -
+ Caret is continuously on rather than blinking while typing or holding down
+ delete or backspace. And is now always shown if non blinking when focused on GTK+.
+
+ -
+ Bug fixed in SciTE with file extension comparison now done in case insensitive way.
+
+ -
+ Bugs fixed in SciTE's file path handling on Windows.
+
+ -
+ Bug fixed with preprocessor '#' last visible character causing hang.
+
+
+
+
+ -
+ Released on 13 June 2000.
+
+ -
+ Support for the Lua language in both Scintilla and SciTE.
+
+ -
+ Multiple buffers may be open in SciTE.
+
+ -
+ Each style may have a character set configured. This may determine
+ the characters that are displayed by the style.
+
+ -
+ In the C++ lexer, lexing of preprocessor source may either treat it all as being in
+ the preprocessor class or only the initial # and preprocessor command word as
+ being in the preprocessor class.
+
+ -
+ Scintilla provides SCI_CREATEDOCUMENT, SCI_ADDREFDOCUMENT, and
+ SCI_RELEASEDOCUMENT to make it easier for a container to deal with multiple
+ documents.
+
+ -
+ GTK+ specific definitions in Scintilla.h were removed to ScintillaWidget.h. All GTK+ clients will need to
+ #include "ScintillaWidget.h".
+
+ -
+ For GTK+, tools can be executed in the background by setting subsystem to 2.
+
+ -
+ Keys in the properties files are now case sensitive. This leads to a performance increase.
+
+ -
+ Menu to choose which lexer to use on a file.
+
+ -
+ Tab size dialog on Windows.
+
+ -
+ File dialogs enlarged on GTK+.
+
+ -
+ Match Brace command bound to Ctrl+E on both platforms with Ctrl+] a synonym on Windows.
+ Ctrl+Shift+E is select to matching brace. Brace matching tries to match to either the inside or the
+ outside, depending on whether the cursor is inside or outside the braces initially.
+ View End of Line bound to Ctrl+Shift+O.
+
+ -
+ The Home key may be bound to move the caret to either the start of the line or the start of the
+ text on the line.
+
+ -
+ Visual C++ project file for SciTE.
+
+ -
+ Bug fixed with current x location after Tab key.
+
+ -
+ Bug fixed with hiding fold margin by setting fold.margin.width to 0.
+
+ -
+ Bugs fixed with file name confusion on Windows when long and short names used, or different capitalisations,
+ or relative paths.
+
+
+
+
+ -
+ Released on 9 May 2000.
+
+ -
+ Some Unicode support on Windows. Treats buffer and API as UTF-8 and displays
+ through UCS-2 of Windows.
+
+ -
+ Automatic indentation. Indentation size can be different to tab size.
+
+ -
+ Tool bar.
+
+ -
+ Status bar now on Windows as well as GTK+.
+
+ -
+ Input fields in Find and Replace dialogs now have history on both Windows and
+ GTK+.
+
+ -
+ Auto completion list items may be separated by a chosen character to allow spaces
+ in items. The selected item may be changed through the API.
+
+ -
+ Qt::Horizontal scrollbar can be turned off.
+
+ -
+ Property to remove trailing spaces when saving file.
+
+ -
+ On Windows, changed font size calculation to be more compatible with
+ other applications.
+
+ -
+ On GTK+, SciTE's global properties files are looked for in the directory specified in the
+ SCITE_HOME environment variable if it is set. This allows hiding in a dot directory.
+
+ -
+ Keyword lists in SciTE updated for JavaScript to include those destined to be used in
+ the future. IDL includes XPIDL keywords as well as MSIDL keywords.
+
+ -
+ Zoom level can be set and queried through API.
+
+ -
+ New notification sent before insertions and deletions.
+
+ -
+ LaTeX lexer.
+
+ -
+ Fixes to folding including when deletions and additions are performed.
+
+ -
+ Fix for crash with very long lines.
+
+ -
+ Fix to affect all of rectangular selections with deletion and case changing.
+
+ -
+ Removed non-working messages that had been included only for Richedit compatibility.
+
+
+
+
+ -
+ Released on 29 March 2000.
+
+ -
+ Added lexing of IDL based on C++ lexer with extra UUID lexical class.
+
+ -
+ Functions and associated keys for Line Delete, Line Cut, Line Transpose,
+ Selection Lower Case and Selection Upper Case.
+
+ -
+ Property setting for SciTE, eol.mode, chooses initial state of line end characters.
+
+ -
+ Fixed bugs in undo history with small almost-contiguous changes being incorrectly coalesced.
+
+ -
+ Fixed bugs with incorrect expansion of ContractionState data structures causing crash.
+
+ -
+ Fixed bugs relating to null fonts.
+
+ -
+ Fixed bugs where recolourisation was not done sometimes when required.
+
+ -
+ Fixed compilation problems with SVector.h.
+
+ -
+ Fixed bad setting of fold points in Python.
+
+
+
+
+ -
+ Released on 21 March 2000.
+
+ -
+ Directory structure to separate on basis of product (Scintilla, SciTE, DMApp)
+ and environment (Cross-platform, Win32, GTK+).
+
+ -
+ Download packaging to allow download of the source or platform dependent executables.
+
+ -
+ Source code now available from CVS at SourceForge.
+
+ -
+ Very simple Windows-only demonstration application DMApp is available from cvs as dmapp.
+
+ -
+ Lexing functionality may optionally be included in Scintilla rather than be provided by
+ the container.
+
+ -
+ Set of lexers included is determined at link time by defining which of the Lex* object files
+ are linked in.
+
+ -
+ On Windows, the SciLexer.DLL extends Scintilla.DLL with the standard lexers.
+
+ -
+ Enhanced HTML lexer styles embedded VBScript and Python.
+ ASP segments are styled and ASP scripts in JavaScript, VBScript and Python are styled.
+
+ -
+ PLSQL and PHP supported.
+
+ -
+ Maximum number of lexical states extended to 128.
+
+ -
+ Lexers may store per line parse state for multiple line features such as ASP script language choice.
+
+ -
+ Lexing API simplified.
+
+ -
+ Project file for Visual C++.
+
+ -
+ Can now cycle through all recent files with Ctrl+Tab in SciTE.
+
+ -
+ Bookmarks in SciTE.
+
+ -
+ Drag and drop copy works when dragging to the edge of the selection.
+
+ -
+ Fixed bug with value sizes in properties file.
+
+ -
+ Fixed bug with last line in properties file not being used.
+
+ -
+ Bug with multiple views of one document fixed.
+
+ -
+ Keypad now works on GTK+.
+
+
+
+
+ -
+ Released on 27 February 2000.
+
+ -
+ wxWindows platform defined.
+ Implementation for wxWindows will be available separately
+ from main Scintilla distribution.
+
+ -
+ Line folding in Scintilla.
+
+ -
+ SciTE performs syntax directed folding for C/C++/Java/JavaScript and for Python.
+
+ -
+ Optional macro recording support.
+
+ -
+ User properties file (SciTEUser.properties) allows for customisation by the user
+ that is not overwritten with each installation of SciTE.
+
+ -
+ Python lexer detects and highlights inconsistent indentation.
+
+ -
+ Margin API made more orthogonal. SCI_SETMARGINWIDTH and SCI_SETLINENUMBERWIDTH
+ are deprecated in favour of this new API.
+
+ -
+ Margins may be made sensitive to forward mouse click events to container.
+
+ -
+ SQL lexer and styles included.
+
+ -
+ Perl lexer handles regular expressions better.
+
+ -
+ Caret policy determines how closely caret is tracked by visible area.
+
+ -
+ New marker shapes: arrow pointing down, plus and minus.
+
+ -
+ Optionally display full path in title rather than just file name.
+
+ -
+ Container is notified when Scintilla gains or loses focus.
+
+ -
+ SciTE handles focus in a more standard way and applies the main
+ edit commands to the focused pane.
+
+ -
+ Container is notified when Scintilla determines that a line needs to be made visible.
+
+ -
+ Document watchers receive notification when document about to be deleted.
+
+ -
+ Document interface allows access to list of watchers.
+
+ -
+ Line end determined correctly for lines ending with only a '\n'.
+
+ -
+ Search variant that searches form current selection and sets selection.
+
+ -
+ SciTE understands format of diagnostic messages from WScript.
+
+ -
+ SciTE remembers top line of window for each file in MRU list so switching to a recent file
+ is more likely to show the same text as when the file was previously visible.
+
+ -
+ Document reference count now initialised correctly.
+
+ -
+ Setting a null document pointer creates an empty document.
+
+ -
+ WM_GETTEXT can no longer overrun buffer.
+
+ -
+ Polygon drawing bug fixed on GTK+.
+
+ -
+ Java and JavaScript lexers merged into C++ lexer.
+
+ -
+ C++ lexer indicates unterminated strings by colouring the end of the line
+ rather than changing the rest of the file to string style. This is less
+ obtrusive and helps the folding.
+
+
+
+
+ -
+ Released on 2 February 2000.
+
+ -
+ Blank margins on left and right side of text.
+
+ -
+ SCN_CHECKBRACE renamed SCN_UPDATEUI and made more efficient.
+
+ -
+ SciTE source code refactored into platform independent and platform specific classes.
+
+ -
+ XML and Perl subset lexers in SciTE.
+
+ -
+ Large improvement to lexing speed.
+
+ -
+ A new subsystem, 2, allows use of ShellExec on Windows.
+
+ -
+ Borland compatible makefile.
+
+ -
+ Status bar showing caret position in GTK+ version of SciTE.
+
+ -
+ Bug fixes to selection drawing when part of selection outside window, mouse release over
+ scroll bars, and scroll positioning after deletion.
+
+
+
+
+ -
+ Released on 21 January 2000.
+
+ -
+ Multiple views of one document.
+
+ -
+ Rectangular selection, cut, copy, paste, drag and drop.
+
+ -
+ Long line indication.
+
+ -
+ Reverse searching
+
+ -
+ Line end conversion.
+
+ -
+ Generic autocompletion and calltips in SciTE.
+
+ -
+ Call tip background colour can be set.
+
+ -
+ SCI_MARKERPREV for moving to a previous marker.
+
+ -
+ Caret kept more within window where possible.
+
+
+
+
+ -
+ Released on 15 December 1999.
+
+ -
+ Brace highlighting and badlighting (for mismatched braces).
+
+ -
+ Visible line ends.
+
+ -
+ Multiple line call tips.
+
+ -
+ Printing now works from SciTE on Windows.
+
+ -
+ SciTE has a global "*" lexer style that is used as the basis for all the lexers' styles.
+
+ -
+ Fixes some warnings on GTK+ 1.2.6.
+
+ -
+ Better handling of modal dialogs on GTK+.
+
+ -
+ Resize handle drawn on pane splitter in SciTE on GTK+ so it looks more like a regular GTK+
+ *paned widget.
+
+ -
+ SciTE does not place window origin offscreen if no properties file found on GTK+.
+
+ -
+ File open filter remembered in SciTE on Windows.
+
+ -
+ New mechanism using style numbers 32 to 36 standardises the setting of styles for brace
+ highlighting, brace badlighting, line numbers, control characters and the default style.
+
+ -
+ Old messages SCI_SETFORE .. SCI_SETFONT have been replaced by the default style 32. The old
+ messages are deprecated and will disappear in a future version.
+
+
+
+
+ -
+ Released on 20 November 1999.
+
+ -
+ Fixes a scrolling bug reported on GTK+.
+
+
+
+
+ -
+ Released on 18 November 1999.
+
+ -
+ Fixes compilation problems with the mingw32 GCC 2.95.2 on Windows.
+
+ -
+ Control characters are now visible.
+
+ -
+ Performance has improved, particularly for scrolling.
+
+ -
+ Windows RichEdit emulation is more accurate. This may break client code that uses these
+ messages: EM_GETLINE, EM_GETLINECOUNT, EM_EXGETSEL, EM_EXSETSEL, EM_EXLINEFROMCHAR,
+ EM_LINELENGTH, EM_LINEINDEX, EM_CHARFROMPOS, EM_POSFROMCHAR, and EM_GETTEXTRANGE.
+
+ -
+ Menus rearranged and accelerator keys set for all static items.
+
+ -
+ Placement of space indicators in view whitespace mode is more accurate with some fonts.
+
+
+
+
+ -
+ Released on 9 November 1999.
+
+ -
+ Packaging error in 1.11 meant that the compilation error was not fixed in that release.
+ Linux/GTK+ should compile with GCC 2.95 this time.
+
+
+
+
+ -
+ Released on 7 November 1999.
+
+ -
+ Fixed a compilation bug in ScintillaGTK.cxx.
+
+ -
+ Added a README file to explain how to build.
+
+ -
+ GTK+/Linux downloads now include documentation.
+
+ -
+ Binary only Sc1.EXE one file download for Windows.
+
+
+
+
+ -
+ Released on 6 November 1999.
+
+ -
+ Major restructuring for better modularity and platform independence.
+
+ -
+ Inter-application drag and drop.
+
+ -
+ Printing support in Scintilla on Windows.
+
+ -
+ Styles can select colouring to end of line. This can be used when a file contains more than
+ one language to differentiate between the areas in each language. An example is the HTML +
+ JavaScript styling in SciTE.
+
+ -
+ Actions can be grouped in the undo stack, so they will be undone together. This grouping is
+ hierarchical so higher level actions such as replace all can be undone in one go. Call to
+ discover whether there are any actions to redo.
+
+ -
+ The set of characters that define words can be changed.
+
+ -
+ Markers now have identifiers and can be found and deleted by their identifier. The empty
+ marker type can be used to make a marker that is invisible and which is only used to trace
+ where a particular line moves to.
+
+ -
+ Double click notification.
+
+ -
+ HTML styling in SciTE also styles embedded JavaScript.
+
+ -
+ Additional tool commands can be added to SciTE.
+
+ -
+ SciTE option to allow reloading if changed upon application activation and saving on
+ application deactivation. Not yet working on GTK+ version.
+
+ -
+ Entry fields in search dialogs remember last 10 user entries. Not working in all cases in
+ Windows version.
+
+ -
+ SciTE can save a styled copy of the current file in HTML format. As SciTE does not yet
+ support printing, this can be used to print a file by then using a browser to print the
+ HTML file.
+
+
+
+
+ -
+ Released on 1 October 1999.
+
+ -
+ GTK+ version compiles with GCC 2.95.
+
+ -
+ Properly deleting objects when window destroyed under GTK+.
+
+ -
+ If the selection is not empty backspace deletes the selection.
+
+ -
+ Some X style middle mouse button handling for copying the primary selection to and from
+ Scintilla. Does not work in all cases.
+
+ -
+ HTML styling in SciTE.
+
+ -
+ Stopped dirty flag being set in SciTE when results pane modified.
+
+
+
+
+ -
+ Released on 28 September 1999.
+
+ -
+ Better DBCS support on Windows including IME.
+
+ -
+ Wheel mouse support for scrolling and zooming on Windows. Zooming with Ctrl+KeypadPlus and
+ Ctrl+KeypadMinus.
+
+ -
+ Performance improvements especially on GTK+.
+
+ -
+ Caret blinking and settable colour on both GTK+ and Windows.
+
+ -
+ Drag and drop within a Scintilla window. On Windows, files can be dragged into SciTE.
+
+
+
+
+ -
+ Released on 17 May 1999.
+
+ -
+ Changed name of "Tide" to "SciTE" to avoid clash with a TCL based IDE. "SciTE" is a
+ SCIntilla based Text Editor and is Latin meaning something like "understanding in a neat
+ way" and is also an Old English version of the word "shit".
+
+ -
+ There is a SCI_AUTOCSTOPS message for defining a string of characters that will stop
+ autocompletion mode. Autocompletion mode is cancelled when any cursor movement occurs apart
+ from backspace.
+
+ -
+ GTK+ version now splits horizontally as well as vertically and all dialogs cancel when the
+ escape key is pressed.
+
+
+
+
+ -
+ Released on 12 May 1999.
+
+ -
+ A bit more robust than 0.92 and supports SCI_MARKERNEXT message.
+
+
+
+
+ -
+ Released on 11 May 1999.
+
+ -
+ GTK+ version now contains all features of Windows version with some very small differences.
+ Executing programs works much better now.
+
+ -
+ New palette code to allow more colours to be displayed in 256 colour screen modes. A line
+ number column can be displayed to the left of the selection margin.
+
+ -
+ The code that maps from line numbers to text positions and back has been completely
+ rewritten to be faster, and to allow markers to move with the text.
+
+
+
+
+ -
+ Released on 30 April 1999, containing fixes to text measuring to make Scintilla work better
+ with bitmap fonts. Also some small fixes to make compiling work with Visual C++.
+
+
+
+
+ -
+ Released on 29 April 1999, containing working GTK+/Linux version.
+
+ -
+ The Java, C++ and Python lexers recognise operators as distinct from default allowing them
+ to be highlighted.
+
+
+
+
+ -
+ Released on 1 April 1999, to fix a problem with handling the Enter key in PythonWin. Also
+ fixes some problems with cmd key mapping.
+
+
+
+
+ -
+ Released on 30th March 1999, containing bug fixes and a few more features.
+
+ -
+ Static linking supported and Tidy.EXE, a statically linked version of Tide.EXE. Changes to
+ compiler flags in the makefiles to optimise for size.
+
+ -
+ Scintilla supports a 'savepoint' in the undo stack which can be set by the container when
+ the document is saved. Notifications are sent to the container when the savepoint is
+ entered or left, allowing the container to to display a dirty indicator and change its
+ menus.
+
+ -
+ When Scintilla is set to read-only mode, a notification is sent to the container should the
+ user try to edit the document. This can be used to check the document out of a version
+ control system.
+
+ -
+ There is an API for setting the appearance of indicators.
+
+ -
+ The keyboard mapping can be redefined or removed so it can be implemented completely by the
+ container. All of the keyboard commands are now commands which can be sent by the
+ container.
+
+ -
+ A home command like Visual C++ with one hit going to the start of the text on the line and
+ the next going to the left margin is available. I do not personally like this but my
+ fingers have become trained to it by much repetition.
+
+ -
+ SCI_MARKERDELETEALL has an argument in wParam which is the number of the type marker to
+ delete with -1 performing the old action of removing all marker types.
+
+ -
+ Tide now understands both the file name and line numbers in error messages in most cases.
+
+ -
+ Tide remembers the current lines of files in the recently used list.
+
+ -
+ Tide has a Find in Files command.
+
+
+
+ Beta release 0.80
+
+
+ -
+ This was the first public release on 14th March 1999, containing a mostly working Win32
+ Scintilla DLL and Tide EXE.
+
+
+
+ Beta releases of SciTE were called Tide
+
+
+
+
diff --git a/doc/other/ScintillaRelated.html b/doc/other/ScintillaRelated.html
new file mode 100644
index 0000000..410ddb7
--- /dev/null
+++ b/doc/other/ScintillaRelated.html
@@ -0,0 +1,507 @@
+
+
+
+
+
+
+
+
+ Scintilla and SciTE Related Sites
+
+
+
+
+
+ Related Sites
+
+
+ Ports and Bindings of Scintilla
+
+
+ Editawy
+ is an ActiveX Control wrapper that support all Scintilla functions and additional high level functions.
+
+
+ Jintilla
+ is a JNI wrapper that allows Scintilla to be used in Java with
+ both SWT and AWT.
+
+
+ Delphi Scintilla Interface Components
+ is a FREE collection of components that makes it easy to use the
+ Scintilla source code editing control from within Delphi and C++ Builder.
+
+
+ wxStEdit
+ is a library and sample program that provides extra features over wxStyledTextControl.
+
+
+ CScintillaCtrl, CScintillaView & CScintillaDoc
+ are freeware MFC classes to encapsulate Scintilla.
+
+
+ ScintillaNet
+ is an encapsulation of Scintilla for use within the .NET framework.
+
+
+ TQScintilla
+ is a port of Scintilla to the TQt platform. It has a similar license to TQt: GPL for use in
+ free software and commercial for use in close-source applications.
+
+
+
+ GWindows is a Win32 RAD GUI Framework for Ada 95 that
+ includes a binding of Scintilla.
+
+
+
+ DolphinScintilla is a DolphinSmalltalk wrapper for Scintilla.
+
+
+ ScintillaVB
+ is an ActiveX control written in VB that encapsulates Scintilla.
+
+
+ FXScintilla
+ is a port of Scintilla to the FOX platform. FXRuby includes Ruby
+ bindings for FXScintilla.
+
+
+ Delphi wrapper for
+ Scintilla which is also usable from Borland C++ Builder.
+
+
+ The wxStyledTextCtrl editor component in the
+ wxWindows cross platform toolkit is based on Scintilla.
+ A Python binding for wxStyledTextCtrl is part of wxPython.
+
+
+ gtkscintilla
+ is an alternative GTK class implementation for scintilla.
+ This implementation acts more like a Gtk+ object, with many methods rather
+ than just scintilla_send_message() and is available as a shared library.
+ This implementation works with GTK 1.x.
+
+
+ gtkscintilla2
+ is an alternative GTK class implementation for scintilla
+ similar to the above, but for GTK 2.x.
+
+
+ pyscintilla
+ is the original Python binding for Scintilla's default GTK
+ 1.x class. Includes some additional support, such as native printing on
+ Windows. The binding is hand-written rather than auto-generated from the
+ Scintilla.iface file.
+
+
+ pygtkscintilla
+ is a Python binding for gtk1.x scintilla that uses
+ gtkscintilla instead of the default GTK class.
+
+
+ pyscintilla2
+ is a Python binding for GTK 2.x scintilla that uses
+ gtkscintilla2.
+
+
+ ScintillaCtrl
+ is an unmaintained ActiveX control wrapper for Scintilla.
+
+
+ Projects using Scintilla
+
+
+ PyPE
+ is an editor written in Python with the wxPython GUI toolkit.
+
+
+ Sciboo
+ is an editor based on ScintillaNET.
+
+
+ The Scite Config Tool
+ is a graphical user interface for changing SciTE properties files.
+
+
+ Scintilla Lister
+ is a plugin for Total Commander allowing viewing all documents with syntax highlighting
+ inside Total Commander.
+
+
+ ChSciTE
+ is a free IDE for C/C++ interpreter Ch. It runs cross platform.
+ Ch is for cross-platform scripting, shell
+ programming, 2D/3D plotting, numerical computing, and embedded
+ scripting.
+
+
+
+ Code::Blocks is an open source, cross platform free C++ IDE.
+
+
+
+ Notepad++ is a free source code editor under Windows.
+
+
+
+ Gubed is a cross platform program to debug PHP scripts.
+
+
+
+ LSW DotNet-Lab is a development environment for the .NET platform.
+
+
+
+ GLIntercept is an OpenGL function call interceptor that uses SciTE as a
+ run-time shader editor.
+
+
+
+ Xin is an open-source XML editor for Windows.
+
+
+
+ wyoEditor is "A nice editor with a well designed and consistent look and feel".
+
+
+
+ Notepad2 is "Yet another Notepad replacement".
+
+
+
+ PyCrash Viewer can examine crash dumps of Python programs.
+
+
+
+ MPT series Wire Analyzers use Scintilla and SciTE.
+
+
+ MyGeneration
+ is a .NET based code generator.
+
+
+ CSSED
+ is a tiny GTK2 CSS editor.
+
+
+ DIDE
+ is a free IDE for the D language on Windows.
+
+
+
+ IdePS
+ is a free Integrated Development Environment for PostScript
+
+
+
+ CUTE
+ is a user-friendly source code editor easily extended using Python.
+
+
+
+ Venis IX,
+ the Visual Environment for NSIS (Nullsoft Scriptable Install System).
+
+
+
+ MinGW Developer Studio
+ is a simple C/C++ IDE for the MinGW compiler on Windows.
+
+
+ Eric3
+ is a Python IDE written using PyTQt and TQScintilla.
+
+
+ TemplateTamer
+ is a tool for development of template based PHP web pages.
+
+
+ SciTE|Flash
+ is a free Scintilla-based ActionScript editor for Windows.
+
+
+ CPPIDE
+ is part of some commercial high-school oriented programming course software.
+
+
+ phpSciTE
+ is a free distribution of SciTE for Windows customised for use with PHP
+ and bundled with a PHP API file and online help.
+
+
+ Instant Source
+ is a commercial tool for looking at the HTML on web sites.
+
+
+ RAD.On++
+ is a free C++ Rapid Application Developer for Win32.
+
+
+ wxLua is both
+ a binding of the wxWindows classes for Lua and a small IDE that works on Linux
+ and Windows.
+
+
+ wxBasic is an open source
+ Basic interpreter that uses the wxWindows toolkit. A small IDE is under construction.
+
+
+ FreeRIDE will be a
+ cross-platform IDE for the Ruby programming language.
+
+
+ Visual MinGW is an
+ IDE for the MinGW compiler system.This runs on Windows with gcc.
+
+
+ The Wing IDE is a
+ complete integrated development environment for the Python programming
+ language.
+ Available on Intel based Linux and Windows and on MacOS X through XDarwin.
+
+
+ LuaIDE
+ is an IDE for Lua on Windows.
+
+
+ Sphere
+ is 2D RPG engine with a development environment.
+
+
+ Practical Ruby
+ is an IDE for Ruby on Windows.
+
+
+ GNUe
+ is a suite of tools and applications for solving the needs of the enterprise.
+
+
+ SilverCity
+ is a lexing package that can provide lexical analysis for over 20 programming
+ and markup languages.
+
+
+ Php mole
+ is an integrated development enviroment for developing (primarily)
+ web based and phpgtk based applications.
+
+
+ HAP Python Remote Debugger
+ is a Python debugger that can run on one Windows machine debugging a Python program running
+ on either the same or another machine.
+
+
+ pyeditor and wxEditor
+ are scriptable editors implemented in Python. pyeditor is based on GTK+ and
+ the pyscintilla wrapper. wxEditor is based on wxWindows, wxPython and
+ wxStyledTextControl.
+
+
+ Ruby installation
+ that includes SciTE set up for Ruby using an included copy of the "Programming Ruby" book for help.
+
+
+ Interactive LuaSpace Development
+ is a graphical environment for LuaSpace which combines the CORBA platform
+ with the language Lua.
+
+
+ PyCrust is an interactive
+ Python shell based on wxPython.
+
+
+ Black Adder is a
+ TQt based development environment for Python and Ruby.
+
+
+ Komodo
+ is a cross-platform multi-language development environment built
+ as an application of Mozilla.
+
+
+ titmouse
+ is a Lua editor/debugger for Windows. It is available as both a component
+ and an application.
+
+
+ Filerx
+ is a project manager for SciTE on Windows.
+ Open source and includes an implementation of SciTE's Director interface so
+ will be of interest to others wanting to control SciTE.
+
+
+ Anjuta
+ is an open source C/C++ IDE for Linux/GNOME.
+
+
+ Gen<X>
+ is a code generalisation product for Win32 that uses Scintilla in the X-Code Editor (which
+ can also be used for general purpose editing) and for editing HTML in the HTML Dialog
+ Editor.
+
+
+ Moleskine is a Scintilla
+ based editor for GTK+. More ambitious than SciTE with plans
+ for MDI, printing, and session management.
+ Includes a new GTK+ wrapper widget for Scintilla.
+
+
+ A version of SciTE for Win32 enhanced
+ with a tab control to allow easy movement between buffers.
+ Go to the "Goodies" area on this site.
+
+
+
+ Suneido is an integrated application platform currently available for Win32 that includes an
+ object-oriented language, client-server database, and user interface and reporting frameworks.
+
+
+
+ BitLeaf is a new GNOME based development environment.
+ Currently at an early stage of development.
+
+
+
+ Agast is an authoring system for adventure games which includes
+ a customised version of SciTE.
+
+
+
+ SashXB for Linux is an open source application development tool by
+ IBM that uses Scintilla.
+
+
+ Boa Constructor is a RAD GUI
+ Building IDE for the wxWindows cross platform platform. Written using wxPython with the
+ wxStyledTextCtrl used as its editor.
+
+
+ PythonWin, a Win32 IDE for Python, uses
+ Scintilla for both its editing and interactive windows.
+
+
+ Editing Components
+
+
+ GtkSourceView
+ is a text widget that extends the standard GTK+ 2.x text widget and improves it
+ by implementing syntax highlighting and other features typical of a source editor.
+
+
+ AEditor
+ is a free source code editing component implemented in Ruby.
+
+
+ SyntaxEditor
+ is a commercial native .Net source code editing component.
+
+
+ jEdit is a good Open Source syntax colouring
+ editor written in and for Java.
+
+
+ GTK+, the GIMP Toolkit, contains a rich text editing
+ widget.
+ Gedit is an editor for GTK+/GNOME.
+
+
+
+ CodeGuru has source code for several Win32 MFC based
+ editors.
+
+ SynEdit is a Win32 edit control written
+ in Delphi.
+
+ SourceView is a commercial editing
+ component for Win32.
+
+
+ CodeMax is another commercial component for Win32.
+
+
+ Documents
+
+
+ The Craft of Text Editing
+ describes how EMACS works, Craig A. Finseth
+
+
+ Span Tables
+ are another data structure that can be used to represent documents in memory in a way
+ that performs well when data is inserted and deleted, James Brown
+
+
+ Data Structures in a Bit-Mapped Text
+ Editor, Wilfred J. Hanson, Byte January 1987
+
+
+ Text Editors: Algorithms and Architectures, Ray Valdés, Dr. Dobbs Journal
+ April 1993
+
+
+ Macintosh User Interface Guidelines and TextEdit chapters of Inside Macintosh
+
+
+ Development Tools
+
+
+ Scintilla and SciTE were developed using the
+ Mingw version of GCC.
+
+
+ AStyle is a source code formatter for C++ and
+ Java code. SciTE has an Indent command defined for .cxx files that uses AStyle.
+
+
+ WinMerge is an interactive diff / merge
+ for Windows. I prefer code submissions in the form of source files rather than diffs and then run
+ WinMerge over the files to work out how to merge.
+
+
+ Python is my favourite programming language. Scintilla
+ was started after I tried to improve the editor built into PythonWin, but was frustrated by the limitations of
+ the Windows Richedit control which PythonWin used.
+
+
+ regex is a public domain
+ implementation of regular expression pattern matching used in Scintilla.
+
+
+
+
+ Inspirational coding soundscapes by David Bridie.
+
+
+ Get away from hacking without any of that tedious standing up bother: Virtually There ;).
+
+
+
+
diff --git a/doc/other/ScintillaToDo.html b/doc/other/ScintillaToDo.html
new file mode 100644
index 0000000..0fd6b0b
--- /dev/null
+++ b/doc/other/ScintillaToDo.html
@@ -0,0 +1,178 @@
+
+
+
+
+
+
+
+
+ Scintilla and SciTE To Do
+
+
+
+
+
+ Bugs and To Do List
+
+
+ Feedback
+
+
+ Issues can be reported on the Bug Tracker
+ and features requested on the Feature Request Tracker.
+
+
+ Scintilla Bugs
+
+
+ At the end of italics style runs characters can be chopped off. An example
+ is using Verdana 12 point italics for strings makes an ending double quote
+ half visible and an ending single quote invisible. This is hard to solve
+ completely, may be better to avoid these situations by, for example,
+ choosing a font like Times New Roman for strings. There is a specific kluge
+ for the end of line which adds some room for italics but this does not
+ work elsewhere.
+
+
+ Dragging over bold text in some fonts will ripple because of the difference in
+ size between drawing all of a string at once and drawing it in parts.
+
+
+ Automatic scrolling when text dragged near edge of window.
+
+
+ GTK+ Version Bugs
+
+
+ Scintilla To Do
+
+
+ Folding for languages that don't have it yet and good folding for languages
+ that inherited poor folding from another languages folding code.
+
+
+ Simple pattern based styling.
+
+
+ Different height lines based upon tallest text on the line rather than on the tallest style
+ possible.
+
+
+ Composition of lexing for mixed languages (such as ASP+ over COBOL) by
+ combining lexers.
+
+
+ Printing support on GTK+. Maybe Postscript output or use Gnome?
+
+
+ Stream folding which could be used to fold up the contents of HTML elements.
+
+
+ Persisting view state such as current folding into a stream or blob so it is easy
+ to restore.
+
+
+ Move line up and move line down keys or move selected lines up / down.
+
+
+ Printing of highlight lines and folding margin.
+
+
+ Flow diagrams inside editor similar to
+
+ GRASP.
+
+
+ A VCL component wrapper around Scintilla so it can be used with Delphi or
+ Borland C++ Builder.
+ There is some work
+ on this available.
+
+
+ Port to MacOS X.
+
+
+ More lexers for other languages.
+
+
+ Automatically calculated range for horizontal scrolling.
+
+
+ Virtual space at the end of lines so the caret can be moved beyond the end
+ of lines with the cursor keys. May also make rectangular operations easier
+ to perform.
+
+
+ SciTE To Do
+
+
+ Good regular expression support through a plugin.
+
+
+ Allow tools to transform the selection, performing an operation like
+ indentation or sorting.
+
+
+ Allow file name based selection on all properties rather than just a chosen few.
+
+
+ Opening from and saving to FTP servers.
+
+
+ Setting to fold away comments upon opening.
+
+
+ User defined fold ranges.
+
+
+ Silent mode that does not display any message boxes.
+
+
+ Features I am unlikely to do
+
+
+ These are features I don't like or don't think are important enough to work on.
+ Implementations are welcome from others though.
+
+
+ Automatically saving modified menu shortcuts on exit.
+
+
+ Mouse wheel panning (press the mouse wheel and then move the mouse) on
+ Windows.
+
+
+ Adding options to the save dialog to save in a particular encoding or with a
+ chosen line ending.
+
+
+ Directions
+
+
+ The main point of this development is Scintilla, and this is where most effort will
+ go. SciTE will get new features, but only when they make my life easier - I am
+ not intending to make it grow up to be a huge full-function IDE like Visual
+ Cafe. The lines I've currently decided not to step over in SciTE are any sort of
+ project facility and any configuration dialogs. SciTE for Windows now has a
+ Director interface for communicating with a separate project manager
+ application.
+
+
+ If you are interested in contributing code, do not feel any need to make it cross
+ platform.
+ Just code it for your platform and I'll either reimplement for the other platform or
+ ensure that there is no effect on the other platform.
+
+
+
diff --git a/doc/other/ScintillaUsage.html b/doc/other/ScintillaUsage.html
new file mode 100644
index 0000000..e0ffb0b
--- /dev/null
+++ b/doc/other/ScintillaUsage.html
@@ -0,0 +1,375 @@
+
+
+
+
+
+
+
+
+ Scintilla Usage Notes
+
+
+
+
+
+
+ Implementing Auto-Indent
+
+
+ The key idea is to use the SCN_CHARADDED notification to add indentation after a newline.
+
+
+ The lParam on the notification is a pointer to a SCNotification structure whose ch member
+ specifies the character added. If a newline was added, the previous line can be retrieved and
+ the same indentation can be added to the new line.
+
+
+ Here is the relevant portion of code from SciTE: (SciTE.cxx SciTEWindow::CharAdded)
+
+ if (ch == '\r' || ch == '\n') {
+ char
+ linebuf[1000];
+ int
+ curLine = GetCurrentLineNumber();
+ int
+ lineLength
+ = SendEditor(SCI_LINELENGTH, curLine);
+
+ //Platform::DebugPrintf("[CR] %d len = %d\n", curLine, lineLength);
+ if (curLine > 0 &&
+ lineLength
+ <= 2) {
+ int
+ prevLineLength
+ = SendEditor(SCI_LINELENGTH, curLine - 1);
+ if (prevLineLength < sizeof(linebuf)) {
+ WORD buflen = sizeof(linebuf);
+ memcpy(linebuf, &buflen, sizeof(buflen));
+
+ SendEditor(EM_GETLINE, curLine - 1,
+
+ reinterpret_cast<LPARAM>(static_cast<char *>(linebuf)));
+ linebuf[prevLineLength] = '\0';
+ for (int pos = 0; linebuf[pos]; pos++) {
+ if (linebuf[pos] != ' ' &&
+ linebuf[pos] != '\t')
+
+ linebuf[pos] = '\0';
+ }
+
+ SendEditor(EM_REPLACESEL, 0,
+ reinterpret_cast<LPARAM>(static_cast<char *>(linebuf)));
+ }
+ }
+
+
+ Of course, fancier handling could be implemented. For example, if the previous line was the
+ start of a control construct, the next line could be automatically indented one tab further.
+ (Assuming that is your indenting style.)
+
+
+ Implementing Syntax Styling
+
+
+ Syntax styling is handled by the SCN_STYLENEEDED notification. Scintilla keeps track of the
+ end of the styled text - this is retrieved with SCI_GETENDSTYLED. In response to the
+ SCN_STYLENEEDED notification, you should apply styles to the text from ENDSTYLED to the
+ position specified by the notification.
+
+
+ Here is the relevant portion of code from SciTE: (SciTE.cxx)
+
+ void
+ SciTEWindow::Notify(SCNotification *notification) {
+ switch
+ (notification->nmhdr.code) {
+ case
+ SCN_STYLENEEDED: {
+ if (notification->nmhdr.idFrom == IDM_SRCWIN) {
+
+ int
+ endStyled = SendEditor(SCI_GETENDSTYLED);
+
+ int
+ lineEndStyled = SendEditor(EM_LINEFROMCHAR,
+ endStyled);
+
+ endStyled
+ = SendEditor(EM_LINEINDEX, lineEndStyled);
+
+ Colourise(endStyled, notification->position);
+
+
+ Colourize(start, end) retrieves the specified range of text and then calls ColourizeDoc in
+ keywords.cxx. It starts the process by calling:
+
+ SendMessage(hwnd, SCI_STARTSTYLING,
+ startPos, 31);
+
+
+ and then for each token of the text, calling:
+
+ SendMessage(hwnd, SCI_SETSTYLING, length, style);
+
+
+ where style is a number from 0 to 31 whose appearance has been defined using the
+ SCI_STYLESET... messages.
+
+
+ Implementing Calltips
+
+
+ Again, the SCN_CHARADDED notification is used to catch when an opening parenthesis is added.
+ The preceding word can then be retrieved from the current line:
+
+ char linebuf[1000];
+ int current = SendEditor(SCI_GETCURLINE, sizeof(linebuf),
+
+ reinterpret_cast<LPARAM>(static_cast<char *>(linebuf)));
+ int pos = SendEditor(SCI_GETCURRENTPOS);
+
+ int startword = current - 1;
+ while
+ (startword
+ > 0 &&
+ isalpha(linebuf[startword - 1]))
+
+ startword--;
+ linebuf[current - 1] = '\0';
+ char* word = linebuf + startword;
+
+
+ Then if a calltip is available it can be displayed. The calltip appears immediately below
+ the position specified. The calltip can be multiple lines separated by newlines (\n).
+
+ pos = SendMessage(hwnd, SCI_GETCURRENTPOS, 0, 0);
+ SendMessageText(hwnd, SCI_CALLTIPSHOW, pos - wordLen - 1, calltip);
+
+
+ The calltip can be removed when a closing parenthesis is entered:
+
+ if (SendMessage(hwnd, SCI_CALLTIPACTIVE,
+ 0, 0))
+
+ SendMessage(hwnd,
+ SCI_CALLTIPCANCEL, 0,
+ 0);
+
+
+ Obviously, it is up the application to look after supplying the appropriate calltip text.
+
+
+ SciTE goes one step further, counting the commas between arguments and highlighting the
+ corresponding part of the calltip. This code is in ContinueCallTip.
+
+
+ Page contributed by Andrew McKinlay.
+
+
+
+
diff --git a/doc/other/Steps.html b/doc/other/Steps.html
new file mode 100644
index 0000000..ff88e88
--- /dev/null
+++ b/doc/other/Steps.html
@@ -0,0 +1,142 @@
+
+How to use the Scintilla Edit Control in windows?
+ How to use the Scintilla Edit Control in windows?
+
+ This should be a little step by step explanation how to use Scintilla in the windows environment.
+
+