diff --git a/PowerEditor/scintilla.original.forUpdating/scintilla.original.forUpdating.7z b/PowerEditor/scintilla.original.forUpdating/scintilla.original.forUpdating.7z
index 1633e719..96dbc453 100644
Binary files a/PowerEditor/scintilla.original.forUpdating/scintilla.original.forUpdating.7z and b/PowerEditor/scintilla.original.forUpdating/scintilla.original.forUpdating.7z differ
diff --git a/scintilla/README b/scintilla/README
index cada051b..3fe033e7 100644
--- a/scintilla/README
+++ b/scintilla/README
@@ -40,8 +40,8 @@ The current make file only supports static linking between SciTE and Scintilla.
*** Windows version ***
-A C++ compiler is required. Visual Studio .NET 2010 is the development system
-used for most development although TDM Mingw32 4.4.1 is also supported.
+A C++ compiler is required. Visual Studio 2010 is the development system
+used for most development although TDM Mingw32 4.7.1 is also supported.
To build Scintilla, make in the scintilla/win32 directory
cd scintilla\win32
@@ -54,10 +54,7 @@ To build SciTE, use the makefiles located in the scite/win32 directory
GCC: mingw32-make
VS .NET: nmake -f scite.mak
-An executable SciTE will now be in scite\bin.
-
-The Visual C++ 6.0 project (.dsp) and make files are no longer supported but are left
-in the download for people that are prepared to update them.
+An executable SciTE will now be in scite/bin.
*** GTK+/Windows version ***
diff --git a/scintilla/cocoa/Framework.mk b/scintilla/cocoa/Framework.mk
deleted file mode 100644
index d18ee813..00000000
--- a/scintilla/cocoa/Framework.mk
+++ /dev/null
@@ -1,71 +0,0 @@
-### start defines ###
-include common.mk
-
-INST_NAME=-install_name \
- @executable_path/../Frameworks/Sci.framework/Versions/A/Sci
-
-LD=gcc $(ARCH) -dynamiclib -framework Cocoa $(INST_NAME)
-
-LEXOBJS:=$(addsuffix .o,$(basename $(notdir $(wildcard ../lexers/Lex*.cxx))))
-
-SCI_LEXERS=$(LEXOBJS) \
- LexerBase.o LexerModule.o LexerSimple.o Accessor.o
-
-SCI_OBJ=AutoComplete.o CallTip.o CellBuffer.o CharClassify.o \
- ContractionState.o Decoration.o Document.o Editor.o \
- ExternalLexer.o Indicator.o KeyMap.o LineMarker.o PerLine.o \
- PositionCache.o PropSetSimple.o RESearch.o RunStyles.o ScintillaBase.o Style.o \
- StyleContext.o UniConversion.o ViewStyle.o XPM.o WordList.o \
- Selection.o CharacterSet.o Catalogue.o $(SCI_LEXERS)
-
-WAH_OBJ=DocumentAccessor.o KeyWords.o WindowAccessor.o
-
-COC_OBJ=PlatCocoa.o ScintillaCocoa.o ScintillaView.o InfoBar.o
-
-OBJ=$(SCI_OBJ) $(UNUSED_OBJ) $(COC_OBJ)
-OBJS=$(addprefix $(FRM_BLD)/,$(OBJ))
-
-TARG=$(APP)/Versions/A/Sci
-APP=$(FRM_BLD)/Sci.framework
-### end defines ###
-
-### start targets ###
-
-all: $(FRM_BLD) $(TARG)
-
-cleanfrm:
- -rm -rf $(FRM_BLD)
-
-$(APP): $(FRM_BLD)
- -rm -rf $(APP)
- -mkdir $(APP)
- -mkdir $(APP)/Versions
- -mkdir $(APP)/Versions/A
- -mkdir $(APP)/Versions/A/Headers
- -mkdir $(APP)/Versions/A/Resources
- -ln -sf `pwd`/$(APP)/Versions/A `pwd`/$(APP)/Versions/Current
- -ln -sf `pwd`/$(APP)/Versions/A/Headers `pwd`/$(APP)/Headers
- -ln -sf `pwd`/$(APP)/Versions/A/Resources `pwd`/$(APP)/Resources
- -cp *.h $(APP)/Headers/
- -cp ../src/*.h $(APP)/Headers/
- -cp ../include/*.h $(APP)/Headers/
- -cp -R ScintillaFramework/English.lproj $(APP)/Resources
- -cp res/*.png $(APP)/Resources
- -cp ScintillaFramework/Info.plist $(APP)/Resources
-
-$(TARG) : $(OBJS) $(APP)
- $(LD) $(OBJS) $(gDEFs) -o $(TARG) -lstdc++
- -ln `pwd`/$(TARG) `pwd`/$(APP)/Sci
-
-$(FRM_BLD):
- -mkdir $(BLD)
- -mkdir $(FRM_BLD)
-
-### get around to filling out the real dependencies later ###
-#$(FRM_BLD)/AutoComplete.o : ../src/AutoComplete.cxx ../src/AutoComplete.h \
-# ../include/Platform.h
-
-#$(FRM_BLD)/CallTip.o : ../src/CallTip.cxx ../src/CallTip.h \
-# ../include/Platform.h
-
-### end targets ###
diff --git a/scintilla/cocoa/InfoBar.h b/scintilla/cocoa/InfoBar.h
index 1d10e795..bc30ca28 100644
--- a/scintilla/cocoa/InfoBar.h
+++ b/scintilla/cocoa/InfoBar.h
@@ -28,15 +28,15 @@
@private
NSImage* mBackground;
IBDisplay mDisplayMask;
-
+
float mScaleFactor;
NSPopUpButton* mZoomPopup;
-
+
int mCurrentCaretX;
int mCurrentCaretY;
NSTextField* mCaretPositionLabel;
NSTextField* mStatusTextLabel;
-
+
id mCallback;
}
diff --git a/scintilla/cocoa/InfoBar.mm b/scintilla/cocoa/InfoBar.mm
index 14035795..2ae1ed5a 100644
--- a/scintilla/cocoa/InfoBar.mm
+++ b/scintilla/cocoa/InfoBar.mm
@@ -22,7 +22,7 @@
{
// Get the parent's idea of where we should draw
NSRect newRect = [super drawingRectForBounds: theRect];
-
+
// When the text field is being edited or selected, we have to turn off the magic because it
// screws up the configuration of the field editor. We sneak around this by intercepting
// selectWithFrame and editWithFrame and sneaking a reduced, centered rect in at the last minute.
@@ -30,26 +30,26 @@
{
// Get our ideal size for current text
NSSize textSize = [self cellSizeForBounds: theRect];
-
+
// Center that in the proposed rect
- float heightDelta = newRect.size.height - textSize.height;
+ CGFloat heightDelta = newRect.size.height - textSize.height;
if (heightDelta > 0)
{
newRect.size.height -= heightDelta;
newRect.origin.y += ceil(heightDelta / 2);
}
}
-
+
return newRect;
}
//--------------------------------------------------------------------------------------------------
-- (void) selectWithFrame: (NSRect) aRect inView: (NSView*) controlView editor: (NSText*) textObj
+- (void) selectWithFrame: (NSRect) aRect inView: (NSView*) controlView editor: (NSText*) textObj
delegate:(id) anObject start: (NSInteger) selStart length: (NSInteger) selLength
{
aRect = [self drawingRectForBounds: aRect];
- mIsEditingOrSelecting = YES;
+ mIsEditingOrSelecting = YES;
[super selectWithFrame: aRect
inView: controlView
editor: textObj
@@ -63,7 +63,7 @@
- (void) editWithFrame: (NSRect) aRect inView: (NSView*) controlView editor: (NSText*) textObj
delegate: (id) anObject event: (NSEvent*) theEvent
-{
+{
aRect = [self drawingRectForBounds: aRect];
mIsEditingOrSelecting = YES;
[super editWithFrame: aRect
@@ -86,8 +86,8 @@
if (self)
{
NSBundle* bundle = [NSBundle bundleForClass: [InfoBar class]];
-
- NSString* path = [bundle pathForResource: @"info_bar_bg" ofType: @"png" inDirectory: nil];
+
+ NSString* path = [bundle pathForResource: @"info_bar_bg" ofType: @"tiff" inDirectory: nil];
mBackground = [[NSImage alloc] initWithContentsOfFile: path];
if (![mBackground isValid])
NSLog(@"Background image for info bar is invalid.");
@@ -103,12 +103,12 @@
//--------------------------------------------------------------------------------------------------
/**
- * Called by a connected compontent (usually the info bar) if something changed there.
+ * Called by a connected component (usually the info bar) if something changed there.
*
* @param type The type of the notification.
* @param message Carries the new status message if the type is a status message change.
* @param location Carries the new location (e.g. caret) if the type is a caret change or similar type.
- * @param location Carries the new zoom value if the type is a zoom change.
+ * @param value Carries the new zoom value if the type is a zoom change.
*/
- (void) notify: (NotificationType) type message: (NSString*) message location: (NSPoint) location
value: (float) value
@@ -143,7 +143,7 @@ static NSString *DefaultScaleMenuLabels[] = {
@"20%", @"30%", @"50%", @"75%", @"100%", @"130%", @"160%", @"200%", @"250%", @"300%"
};
static float DefaultScaleMenuFactors[] = {
- 0.2, 0.3, 0.5, 0.75, 1.0, 1.3, 1.6, 2.0, 2.5, 3.0
+ 0.2f, 0.3f, 0.5f, 0.75f, 1.0f, 1.3f, 1.6f, 2.0f, 2.5f, 3.0f
};
static unsigned DefaultScaleMenuSelectedItemIndex = 4;
static float BarFontSize = 10.0;
@@ -152,14 +152,14 @@ static float BarFontSize = 10.0;
{
// 1) The zoom popup.
unsigned numberOfDefaultItems = sizeof(DefaultScaleMenuLabels) / sizeof(NSString *);
-
+
// Create the popup button.
mZoomPopup = [[NSPopUpButton allocWithZone:[self zone]] initWithFrame: NSMakeRect(0.0, 0.0, 1.0, 1.0) pullsDown: NO];
-
+
// No border or background please.
[[mZoomPopup cell] setBordered: NO];
[[mZoomPopup cell] setArrowPosition: NSPopUpArrowAtBottom];
-
+
// Fill it.
for (unsigned count = 0; count < numberOfDefaultItems; count++)
{
@@ -169,28 +169,28 @@ static float BarFontSize = 10.0;
[currentItem setRepresentedObject: [NSNumber numberWithFloat: DefaultScaleMenuFactors[count]]];
}
[mZoomPopup selectItemAtIndex: DefaultScaleMenuSelectedItemIndex];
-
+
// Hook it up.
[mZoomPopup setTarget: self];
[mZoomPopup setAction: @selector(zoomItemAction:)];
-
+
// Set a suitable font.
[mZoomPopup setFont: [NSFont menuBarFontOfSize: BarFontSize]];
-
+
// Make sure the popup is big enough to fit the cells.
[mZoomPopup sizeToFit];
-
+
// Don't let it become first responder
[mZoomPopup setRefusesFirstResponder: YES];
-
+
// put it in the scrollview.
[self addSubview: mZoomPopup];
[mZoomPopup release];
-
+
// 2) The caret position label.
Class oldCellClass = [NSTextField cellClass];
[NSTextField setCellClass: [VerticallyCenteredTextFieldCell class]];
-
+
mCaretPositionLabel = [[NSTextField alloc] initWithFrame: NSMakeRect(0.0, 0.0, 50.0, 1.0)];
[mCaretPositionLabel setBezeled: NO];
[mCaretPositionLabel setBordered: NO];
@@ -205,7 +205,7 @@ static float BarFontSize = 10.0;
[self addSubview: mCaretPositionLabel];
[mCaretPositionLabel release];
-
+
// 3) The status text.
mStatusTextLabel = [[NSTextField alloc] initWithFrame: NSMakeRect(0.0, 0.0, 1.0, 1.0)];
[mStatusTextLabel setBezeled: NO];
@@ -220,7 +220,7 @@ static float BarFontSize = 10.0;
[self addSubview: mStatusTextLabel];
[mStatusTextLabel release];
-
+
// Restore original cell class so that everything else doesn't get broken
[NSTextField setCellClass: oldCellClass];
}
@@ -248,12 +248,12 @@ static float BarFontSize = 10.0;
[mBackground drawAtPoint: target fromRect: NSZeroRect operation: NSCompositeCopy fraction: 1];
target.x += mBackground.size.width;
}
-
+
// Draw separator lines between items.
NSRect verticalLineRect;
- float component = 190.0 / 255.0;
+ CGFloat component = 190.0 / 255.0;
NSColor* lineColor = [NSColor colorWithDeviceRed: component green: component blue: component alpha: 1];
-
+
if (mDisplayMask & IBShowZoom)
{
verticalLineRect = [mZoomPopup frame];
@@ -265,7 +265,7 @@ static float BarFontSize = 10.0;
NSRectFill(verticalLineRect);
}
}
-
+
if (mDisplayMask & IBShowCaretPosition)
{
verticalLineRect = [mCaretPositionLabel frame];
@@ -301,7 +301,7 @@ static float BarFontSize = 10.0;
- (void) positionSubViews
{
- NSRect currentBounds = {0, 0, 0, [self frame].size.height};
+ NSRect currentBounds = {{0, 0}, {0, [self frame].size.height}};
if (mDisplayMask & IBShowZoom)
{
[mZoomPopup setHidden: NO];
@@ -347,7 +347,7 @@ static float BarFontSize = 10.0;
mDisplayMask = display;
[self positionSubViews];
[self needsDisplay];
- }
+ }
}
//--------------------------------------------------------------------------------------------------
@@ -358,7 +358,7 @@ static float BarFontSize = 10.0;
- (void) zoomItemAction: (id) sender
{
NSNumber* selectedFactorObject = [[sender selectedCell] representedObject];
-
+
if (selectedFactorObject == nil)
{
NSLog(@"Scale popup action: setting arbitrary zoom factors is not yet supported.");
@@ -369,9 +369,9 @@ static float BarFontSize = 10.0;
[self setScaleFactor: [selectedFactorObject floatValue] adjustPopup: NO];
}
}
-
+
//--------------------------------------------------------------------------------------------------
-
+
- (void) setScaleFactor: (float) newScaleFactor adjustPopup: (BOOL) flag
{
if (mScaleFactor != newScaleFactor)
@@ -381,7 +381,7 @@ static float BarFontSize = 10.0;
{
unsigned count = 0;
unsigned numberOfDefaultItems = sizeof(DefaultScaleMenuFactors) / sizeof(float);
-
+
// We only work with some preset zoom values. If the given value does not correspond
// to one then show no selection.
while (count < numberOfDefaultItems && (fabs(newScaleFactor - DefaultScaleMenuFactors[count]) > 0.07))
@@ -391,7 +391,7 @@ static float BarFontSize = 10.0;
else
{
[mZoomPopup selectItemAtIndex: count];
-
+
// Set scale factor to found preset value if it comes close.
mScaleFactor = DefaultScaleMenuFactors[count];
}
@@ -400,7 +400,7 @@ static float BarFontSize = 10.0;
{
// Internally set. Notify owner.
[mCallback notify: IBNZoomChanged message: nil location: NSZeroPoint value: newScaleFactor];
- }
+ }
}
}
@@ -414,12 +414,12 @@ static float BarFontSize = 10.0;
// Make the position one-based.
int newX = (int) position.x + 1;
int newY = (int) position.y + 1;
-
+
if (mCurrentCaretX != newX || mCurrentCaretY != newY)
{
mCurrentCaretX = newX;
mCurrentCaretY = newY;
-
+
[mCaretPositionLabel setStringValue: [NSString stringWithFormat: @"%d:%d", newX, newY]];
}
}
@@ -427,7 +427,7 @@ static float BarFontSize = 10.0;
//--------------------------------------------------------------------------------------------------
/**
- * Makes the bar resize to the smallest width that can accomodate the currently enabled items.
+ * Makes the bar resize to the smallest width that can accommodate the currently enabled items.
*/
- (void) sizeToFit
{
@@ -435,13 +435,13 @@ static float BarFontSize = 10.0;
frame.size.width = 0;
if (mDisplayMask & IBShowZoom)
frame.size.width += [mZoomPopup frame].size.width;
-
+
if (mDisplayMask & IBShowCaretPosition)
frame.size.width += [mCaretPositionLabel frame].size.width;
-
+
if (mDisplayMask & IBShowStatusText)
frame.size.width += [mStatusTextLabel frame].size.width;
-
+
[self setFrame: frame];
}
diff --git a/scintilla/cocoa/InfoBarCommunicator.h b/scintilla/cocoa/InfoBarCommunicator.h
index ba8ae7a1..5727c3a1 100644
--- a/scintilla/cocoa/InfoBarCommunicator.h
+++ b/scintilla/cocoa/InfoBarCommunicator.h
@@ -8,7 +8,7 @@
* This file is dual licensed under LGPL v2.1 and the Scintilla license (http://www.scintilla.org/License.txt).
*/
-enum IBDisplay {
+typedef NS_OPTIONS(NSUInteger, IBDisplay) {
IBShowZoom = 0x01,
IBShowCaretPosition = 0x02,
IBShowStatusText = 0x04,
@@ -21,7 +21,7 @@ enum IBDisplay {
* ScintillaView implementation. The protocol is used two-way.
*/
-enum NotificationType {
+typedef NS_ENUM(NSInteger, NotificationType) {
IBNZoomChanged, // The user selected another zoom value.
IBNCaretChanged, // The caret in the editor changed.
IBNStatusChanged, // The application set a new status message.
diff --git a/scintilla/cocoa/PlatCocoa.h b/scintilla/cocoa/PlatCocoa.h
index 775602ba..2a1b807a 100644
--- a/scintilla/cocoa/PlatCocoa.h
+++ b/scintilla/cocoa/PlatCocoa.h
@@ -7,14 +7,14 @@
#ifndef PLATCOCOA_H
#define PLATCOCOA_H
-#include
-#include
-#include
-
#include
#include
+#include
+#include
+#include
+
#include
#include "QuartzTextLayout.h"
@@ -50,7 +50,7 @@ private:
QuartzTextLayout* textLayout;
int codePage;
int verticalDeviceResolution;
-
+
/** If the surface is a bitmap context, contains a reference to the bitmap data. */
uint8_t* bitmapData;
/** If the surface is a bitmap context, stores the dimensions of the bitmap. */
@@ -98,7 +98,7 @@ public:
void Copy(PRectangle rc, Scintilla::Point from, Surface &surfaceSource);
void DrawTextNoClip(PRectangle rc, Font &font_, XYPOSITION ybase, const char *s, int len, ColourDesired fore,
ColourDesired back);
- void DrawTextClipped(PRectangle rc, Font &font_, XYPOSITION ybase, const char *s, int len, ColourDesired fore,
+ void DrawTextClipped(PRectangle rc, Font &font_, XYPOSITION ybase, const char *s, int len, ColourDesired fore,
ColourDesired back);
void DrawTextTransparent(PRectangle rc, Font &font_, XYPOSITION ybase, const char *s, int len, ColourDesired fore);
void MeasureWidths(Font &font_, const char *s, int len, XYPOSITION *positions);
@@ -117,7 +117,7 @@ public:
void SetUnicodeMode(bool unicodeMode_);
void SetDBCSMode(int codePage_);
}; // SurfaceImpl class
-
+
} // Scintilla namespace
#endif
diff --git a/scintilla/cocoa/PlatCocoa.mm b/scintilla/cocoa/PlatCocoa.mm
index a5e68795..98373fdd 100644
--- a/scintilla/cocoa/PlatCocoa.mm
+++ b/scintilla/cocoa/PlatCocoa.mm
@@ -12,22 +12,27 @@
* This file is dual licensed under LGPL v2.1 and the Scintilla license (http://www.scintilla.org/License.txt).
*/
-#import
-
-#include "PlatCocoa.h"
-
-#include
-#include
-#include
#include
#include
+
+#include
+#include
+#include
+
#include
+#include
#include
SCI_LINELENGTH(int line)
This returns the length of the line, including any line end characters. If line
@@ -1297,7 +1333,7 @@ struct Sci_TextToFind {
href="#SCI_GETLINEENDPOSITION">SCI_GETLINEENDPOSITION(line)
- SCI_POSITIONFROMLINE(line)
.
- SCI_GETSELTEXT(<unused>, char *text)
+
SCI_GETSELTEXT(<unused>, char *text NUL-terminated)
This copies the currently selected text and a terminating 0 byte to the text
buffer. The buffer size should be determined by calling with a NULL pointer for the text
argument
SCI_GETSELTEXT(0,0)
.
@@ -1312,7 +1348,7 @@ struct Sci_TextToFind {
SCI_GETTEXTRANGE
- SCI_GETCURLINE(int textLen, char *text)
+
SCI_GETCURLINE(int textLen, char *text NUL-terminated)
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.
@@ -1447,6 +1483,11 @@ struct Sci_TextToFind {
If called with a position within a multi byte character will return the position
of the start/end of that character.
+ SCI_POSITIONRELATIVE(int position, int relative)
+ Count a number of whole characters before or after the argument position and return that position.
+ The minimum position returned is 0 and the maximum is the last position in the document.
+
+
SCI_COUNTCHARACTERS(int startPos, int endPos)
Returns the number of whole characters between two positions..
@@ -1503,14 +1544,23 @@ struct Sci_TextToFind {
SCI_MOVESELECTEDLINESUP
Move the selected lines up one line, shifting the line above after the selection.
- The selection will be automatically extended to the beginning of the selection's first line and the end of the seletion's last line.
+ The selection will be automatically extended to the beginning of the selection's first line and the end of the selection's last line.
If nothing was selected, the line the cursor is currently at will be selected.
SCI_MOVESELECTEDLINESDOWN
Move the selected lines down one line, shifting the line below before the selection.
- The selection will be automatically extended to the beginning of the selection's first line and the end of the seletion's last line.
+ The selection will be automatically extended to the beginning of the selection's first line and the end of the selection's last line.
If nothing was selected, the line the cursor is currently at will be selected.
+ SCI_SETMOUSESELECTIONRECTANGULARSWITCH(bool
+ mouseSelectionRectangularSwitch)
+ SCI_GETMOUSESELECTIONRECTANGULARSWITCH
+ Enable or disable the ability to switch to rectangular selection mode while making a selection with the mouse.
+ When this option is turned on, mouse selections in stream mode can be switched to rectangular mode by pressing
+ the corresponding modifier key. They then stick to rectangular mode even when the modifier key is released again.
+ When this option is turned off, mouse selections will always stick to the mode the selection was started in. It
+ is off by default.
+
Multiple Selection and Virtual Space
@@ -1531,6 +1581,7 @@ struct Sci_TextToFind {
SCI_CLEARSELECTIONS
SCI_SETSELECTION(int caret, int anchor)
SCI_ADDSELECTION(int caret, int anchor)
+ SCI_DROPSELECTIONN(int selection)
SCI_SETMAINSELECTION(int selection)
SCI_GETMAINSELECTION
@@ -1657,6 +1708,12 @@ struct Sci_TextToFind {
Since there is always at least one selection, to set a list of selections, the first selection should be
added with SCI_SETSELECTION
and later selections added with SCI_ADDSELECTION
+
+ SCI_DROPSELECTIONN(int selection)
+ If there are multiple selections, remove the indicated selection.
+ If this was the main selection then make the previous selection the main and if it was the first then the last selection becomes main.
+ If there is only one selection, or there is no selection selection
, then there is no effect.
+
SCI_SETMAINSELECTION(int selection)
SCI_GETMAINSELECTION
@@ -1700,18 +1757,25 @@ struct Sci_TextToFind {
SCI_GETADDITIONALSELALPHA
SCI_SETADDITIONALSELFORE(int colour)
SCI_SETADDITIONALSELBACK(int colour)
- Modify the appearence of additional selections so that they can be differentiated from the main selection which has its appearence set with
+ Modify the appearance of additional selections so that they can be differentiated from the main selection which has its appearance set with
SCI_SETSELALPHA
,
SCI_GETSELALPHA
,
SCI_SETSELFORE
, and
- SCI_SETSELBACK
.
-
+ SCI_SETSELBACK
.
+ SCI_SETADDITIONALSELFORE
and
+ SCI_SETADDITIONALSELBACK
calls have no
+ effect until SCI_SETSELFORE
+ and SCI_SETSELBACK
are
+ called with useSelection*Colour value set to true. Subsequent calls to
+ SCI_SETSELFORE
,
+ and SCI_SETSELBACK
will
+ overwrite the values set by SCI_SETADDITIONALSEL*
functions.
SCI_SETADDITIONALCARETFORE(int colour)
SCI_GETADDITIONALCARETFORE
SCI_SETADDITIONALCARETSBLINK(bool additionalCaretsBlink)
SCI_GETADDITIONALCARETSBLINK
- Modify the appearence of additional carets so that they can be differentiated from the main caret which has its appearence set with
+ Modify the appearance of additional carets so that they can be differentiated from the main caret which has its appearance set with
SCI_SETCARETFORE
,
SCI_GETCARETFORE
,
SCI_SETCARETPERIOD
, and
@@ -2160,7 +2224,7 @@ struct Sci_TextToFind {
baseline (its 'descent').
Space may be added to the maximum ascent (SCI_SETEXTRAASCENT
) and the
maximum descent (SCI_SETEXTRADESCENT
) to allow for more space between lines.
- This may done to make the text easier to read or to accomodate underlines or highlights.
+ This may done to make the text easier to read or to accommodate underlines or highlights.
Cursor
@@ -2203,13 +2267,13 @@ struct Sci_TextToFind {
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
+ sent to Scintilla. This behaviour may be turned off with
SCI_SETMOUSEDOWNCAPTURES(0)
.
Line endings
- Scintilla can handle the major line end conventions and, depending on settings and
- the current lexer also support additional Unicode line ends.
+ Scintilla can handle the major line end conventions and, depending on settings and
+ the current lexer also support additional Unicode line ends.
Scintilla can interpret any of the Macintosh (\r), Unix (\n) and Windows (\r\n)
line ends.
@@ -2219,26 +2283,21 @@ struct Sci_TextToFind {
entire document to one of these line endings with SCI_CONVERTEOLS
. Finally, you
can choose to display the line endings with SCI_SETVIEWEOL
.
-
For the UTF-8 encoding, three additional Unicode line ends,
Next Line (NEL=U+0085
), Line Separator (LS=U+2028
), and Paragraph Separator (PS=U+2029
)
may optionally be interpreted when Unicode line ends is turned on and the current lexer also supports
Unicode line ends.
-
- SCI_SETEOLMODE(int eolMode)
+ SCI_SETEOLMODE(int eolMode)
SCI_GETEOLMODE
SCI_CONVERTEOLS(int eolMode)
SCI_SETVIEWEOL(bool visible)
SCI_GETVIEWEOL
-
-
SCI_SETEOLMODE(int eolMode)
SCI_GETEOLMODE
@@ -2260,9 +2319,6 @@ struct Sci_TextToFind {
(CR)
, (LF)
, or (CR)(LF)
. SCI_GETVIEWEOL
returns the current state.
-
-
These features are provisional
-
SCI_GETLINEENDTYPESSUPPORTED
SCI_GETLINEENDTYPESSUPPORTED
reports the different types of line ends supported
by the current lexer. This is a bit set although there is currently only a single choice
@@ -2279,16 +2335,10 @@ struct Sci_TextToFind {
SCI_GETLINEENDTYPESACTIVE
SCI_GETLINEENDTYPESACTIVE
reports the set of line ends currently interpreted
by Scintilla. It is SCI_GETLINEENDTYPESSUPPORTED & SCI_GETLINEENDTYPESALLOWED
.
-
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
+
The styling messages allow you to assign styles to text. 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
@@ -2299,7 +2349,7 @@ struct Sci_TextToFind {
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_STARTSTYLING(int position, int unused)
SCI_SETSTYLING(int length, int style)
SCI_SETSTYLINGEX(int length, const char
*styles)
@@ -2317,31 +2367,23 @@ struct Sci_TextToFind {
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(int pos, int unused)
+ This prepares for styling by setting the styling position pos
to start at.
+ The unused argument was used in earlier versions but is now ignored.
+ 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);
+ and then increases the styling position by length
, ready for the next call.
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.
+ the next call.
SCI_SETLINESTATE(int line, int value)
SCI_GETLINESTATE(int line)
@@ -2359,9 +2401,8 @@ struct Sci_TextToFind {
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 256
- lexer styles that can be set, numbered 0 to STYLE_MAX
(255). 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
+ lexer styles that can be set, numbered 0 to STYLE_MAX
(255).
+ There are also some
predefined numbered styles starting at 32, The following STYLE_
* constants are
defined.
@@ -2458,9 +2499,7 @@ struct Sci_TextToFind {
255 |
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. |
+ between STYLE_LASTPREDEFINED
and STYLE_MAX
may be used.
@@ -2536,7 +2575,7 @@ struct Sci_TextToFind {
3. Set the style attributes that make your lexical styles different.
SCI_STYLESETFONT(int styleNumber, const char *fontName)
- SCI_STYLEGETFONT(int styleNumber, char *fontName)
+ SCI_STYLEGETFONT(int styleNumber, char *fontName NUL-terminated)
SCI_STYLESETSIZE(int styleNumber, int sizeInPoints)
SCI_STYLEGETSIZE(int styleNumber)
SCI_STYLESETSIZEFRACTIONAL(int styleNumber, int sizeInHundredthPoints)
@@ -2549,11 +2588,15 @@ struct Sci_TextToFind {
SCI_STYLEGETITALIC(int styleNumber)
These messages (plus SCI_STYLESETCHARACTERSET
) set the font
- attributes that are used to match the fonts you request to those available. The
+ 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
+ only the first 32 characters of the name are used, the name is decoded as UTF-8, 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+, Pango is used to display text.
+ so please be consistent.
+ On GTK+, Pango is used to display text and the name is sent directly to Pango without transformation.
+ On Qt, the name is decoded as UTF-8.
+ On Cocoa, the name is decoded as MacRoman.
Sizes can be set to a whole number of points with SCI_STYLESETSIZE
or to a fractional point size in hundredths of a point with SCI_STYLESETSIZEFRACTIONAL
by multiplying the size by 100 (SC_FONT_SIZE_MULTIPLIER
).
@@ -2657,7 +2700,7 @@ struct Sci_TextToFind {
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
+ selection by changing the background to light grey 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.
@@ -2691,8 +2734,6 @@ struct Sci_TextToFind {
SCI_GETHOTSPOTACTIVEUNDERLINE
SCI_SETHOTSPOTSINGLELINE(bool singleLine)
SCI_GETHOTSPOTSINGLELINE
- SCI_SETCONTROLCHARSYMBOL(int symbol)
- SCI_GETCONTROLCHARSYMBOL
SCI_SETCARETSTICKY(int useCaretStickyBehaviour)
SCI_GETCARETSTICKY
SCI_TOGGLECARETSTICKY
@@ -2771,7 +2812,7 @@ struct Sci_TextToFind {
The width of the line 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), similar to setting the caret style to CARETSTYLE_INVISIBLE (though not interchangable).
+ 1.50), similar to setting the caret style to CARETSTYLE_INVISIBLE (though not interchangeable).
This setting only affects the width of the cursor when the cursor style is set to line caret
mode, it does not affect the width for a block caret.
@@ -2789,21 +2830,6 @@ struct Sci_TextToFind {
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(int useCaretStickyBehaviour)
SCI_GETCARETSTICKY
SCI_TOGGLECARETSTICKY
@@ -2819,11 +2845,64 @@ struct Sci_TextToFind {
When set to SC_CARETSTICKY_WHITESPACE
(2), the caret acts like mode 0 (sticky off) except under one
special case; when space or tab characters are inserted. (Including pasting only space/tabs -- undo, redo,
- etc. do not exhibit this behavior..).
+ etc. do not exhibit this behaviour..).
SCI_TOGGLECARETSTICKY
switches from SC_CARETSTICKY_ON
and SC_CARETSTICKY_WHITESPACE
to SC_CARETSTICKY_OFF
and from SC_CARETSTICKY_OFF
to SC_CARETSTICKY_ON
.
+ Character representations
+
+ Some characters, such as control characters and invalid bytes, do not have a visual glyph or use a glyph that is hard to distinguish.
+
+ Control characters (characters with codes less than 32, or between 128 and 159 in some encodings)
+ are displayed by Scintilla using their mnemonics inverted in a rounded rectangle. These mnemonics come from the
+ early days of signalling, though some are still used (LF = Line Feed, BS = Back Space, CR =
+ Carriage Return, for example).
+
+ For the low 'C0' values: "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".
+
+ For the high 'C1' values:
+ "PAD", "HOP", "BPH", "NBH", "IND", "NEL", "SSA", "ESA",
+ "HTS", "HTJ", "VTS", "PLD", "PLU", "RI", "SS2", "SS3",
+ "DCS", "PU1", "PU2", "STS", "CCH", "MW", "SPA", "EPA",
+ "SOS", "SGCI", "SCI", "CSI", "ST", "OSC", "PM", "APC".
+
+ Invalid bytes are shown in a similar way with an 'x' followed by their value in hexadecimal, like "xFE".
+
+
+ SCI_SETREPRESENTATION(const char *encodedCharacter, const char *representation)
+ SCI_GETREPRESENTATION(const char *encodedCharacter, char *representation)
+ SCI_CLEARREPRESENTATION(const char *encodedCharacter)
+ SCI_SETCONTROLCHARSYMBOL(int symbol)
+ SCI_GETCONTROLCHARSYMBOL
+
+
+ SCI_SETREPRESENTATION(const char *encodedCharacter, const char *representation)
+ SCI_GETREPRESENTATION(const char *encodedCharacter, char *representation NUL-terminated)
+ SCI_CLEARREPRESENTATION(const char *encodedCharacter)
+ Any character, including those normally displayed as mnemonics may be represented by a
+ string inverted in a rounded rectangle.
+
+ For example, the Ohm sign Ω U+2126 looks very similar to the Greek Omega character Ω U+03C9 so,
+ for the UTF-8 encoding, to distinguish the Ohm sign as "U+2126 Ω" this call could be made:
+ SCI_SETREPRESENTATION("\xe2\x84\xa6", "U+2126 \xe2\x84\xa6")
+
+ The encodedCharacter parameter is a NUL-terminated string of the bytes for one character in the
+ current encoding. This can not be used to set a representation for multiple-character strings.
+
+ The NUL (0) character is a special case since the encodedCharacter parameter is NUL terminated, the NUL
+ character is specified as an empty string.
+
+ SCI_SETCONTROLCHARSYMBOL(int symbol)
+ SCI_GETCONTROLCHARSYMBOL
+ The mnemonics may be replaced 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.
+
Margins
There may be up to five margins, numbered 0 to SC_MAX_MARGIN
(4)
@@ -2992,7 +3071,7 @@ struct Sci_TextToFind {
SCI_MARGINGETSTYLEOFFSET
Margin styles may be completely separated from standard text styles by setting a style offset. For example,
SCI_MARGINSETSTYLEOFFSET(256)
would allow the margin styles to be numbered from
- 256 upto 511 so they do not overlap styles set by lexers. Each style number set with SCI_MARGINSETSTYLE
+ 256 up to 511 so they do not overlap styles set by lexers. Each style number set with SCI_MARGINSETSTYLE
or SCI_MARGINSETSTYLES
has the offset added before looking up the style.
@@ -3096,6 +3175,14 @@ struct Sci_TextToFind {
Annotations are indented to match the text and are surrounded by a box. |
+
+
+ ANNOTATION_INDENTED |
+
+ 3 |
+
+ Annotations are indented to match the text. |
+
@@ -3104,7 +3191,7 @@ struct Sci_TextToFind {
SCI_ANNOTATIONGETSTYLEOFFSET
Annotation styles may be completely separated from standard text styles by setting a style offset. For example,
SCI_ANNOTATIONSETSTYLEOFFSET(512)
would allow the annotation styles to be numbered from
- 512 upto 767 so they do not overlap styles set by lexers (or margins if margins offset is 256).
+ 512 up to 767 so they do not overlap styles set by lexers (or margins if margins offset is 256).
Each style number set with SCI_ANNOTATIONSETSTYLE
or SCI_ANNOTATIONSETSTYLES
has the offset added before looking up the style.
@@ -3114,11 +3201,11 @@ struct Sci_TextToFind {
Other settings
- SCI_SETUSEPALETTE(bool
- allowPaletteUse)
- SCI_GETUSEPALETTE
+
SCI_SETBUFFEREDDRAW(bool isBuffered)
SCI_GETBUFFEREDDRAW
+ SCI_SETPHASESDRAW(int phases)
+ SCI_GETPHASESDRAW
SCI_SETTWOPHASEDRAW(bool twoPhase)
SCI_GETTWOPHASEDRAW
SCI_SETTECHNOLOGY(int technology)
@@ -3127,8 +3214,8 @@ struct Sci_TextToFind {
SCI_GETFONTQUALITY
SCI_SETCODEPAGE(int codePage)
SCI_GETCODEPAGE
- SCI_SETKEYSUNICODE(bool keysUnicode)
- SCI_GETKEYSUNICODE
+ SCI_SETIMEINTERACTION(int imeInteraction)
+ SCI_GETIMEINTERACTION
SCI_SETWORDCHARS(<unused>, const char *characters)
SCI_GETWORDCHARS(<unused>, char *characters)
SCI_SETWHITESPACECHARS(<unused>, const char *characters)
@@ -3157,26 +3244,59 @@ struct Sci_TextToFind {
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.
+
SCI_SETPHASESDRAW(int phases)
+ SCI_GETPHASESDRAW
+ There are several orders in which the text area may be drawn offering a trade-off between speed
+ and allowing all pixels of text to be seen even when they overlap other elements.
+ In single phase drawing (SC_PHASES_ONE
) 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.
+ cuts it off.
+ Two phase drawing (SC_PHASES_TWO
)
+ fixes this by drawing all the backgrounds of a line first and then drawing the text
+ in transparent mode. Lines are drawn separately and no line will overlap another
+ so any pixels that overlap into another line such as extreme ascenders and
+ descenders on characters will be cut off.
+ Two phase drawing may flicker more than single phase
+ unless buffered drawing is on or the platform is naturally buffered.
+ The default is for drawing to be two phase.
+ Multiple phase drawing (SC_PHASES_MULTIPLE
)
+ draws the whole area multiple times, once for each feature, building up the
+ the appearance in layers or phases. The coloured backgrounds for all lines are
+ drawn before any text and then all the text is drawn in transparent mode over this
+ combined background without clipping text to the line boundaries. This allows
+ extreme ascenders and descenders to overflow into the adjacent lines.
+ This mode is incompatible with buffered drawing and will act as SC_PHASES_TWO
+ if buffered drawing is turned on.
+ Multiple phase drawing is slower than two phase drawing.
+ Setting the layout cache to SC_CACHE_PAGE
+ or higher can ensure that multiple phase drawing is not significantly slower.
+
+ SCI_SETTWOPHASEDRAW(bool twoPhase)
+ SCI_GETTWOPHASEDRAW
+ This property has been replaced with the preceding PHASESDRAW property which is more general,
+ allowing multiple phase drawing as well as one and two phase drawing.
SCI_SETTECHNOLOGY(int technology)
SCI_GETTECHNOLOGY
The technology property allows choosing between different drawing APIs and options.
On most platforms, the only choice is SC_TECHNOLOGY_DEFAULT
(0).
- On Windows Vista or later, SC_TECHNOLOGY_DIRECTWRITE
(1)
+ On Windows Vista or later, SC_TECHNOLOGY_DIRECTWRITE
(1),
+ SC_TECHNOLOGY_DIRECTWRITERETAIN
(2), or
+ SC_TECHNOLOGY_DIRECTWRITEDC
(3)
can be chosen to use the Direct2D and DirectWrite APIs for higher quality antialiased drawing.
+ SC_TECHNOLOGY_DIRECTWRITERETAIN
differs from
+ SC_TECHNOLOGY_DIRECTWRITE
by requesting that the frame
+ is retained after being presented which may prevent drawing failures on some cards and drivers.
+ SC_TECHNOLOGY_DIRECTWRITEDC
differs from
+ SC_TECHNOLOGY_DIRECTWRITE
by using DirectWrite to draw into a GDI DC.
Since Direct2D buffers drawing, Scintilla's buffering can be turned off with
- SCI_SETBUFFEREDDRAW(0)
.
+ SCI_SETBUFFEREDDRAW(0)
.
+ Since SC_TECHNOLOGY_DIRECTWRITERETAIN
and
+ SC_TECHNOLOGY_DIRECTWRITEDC
+ are provisional, they may be changed or removed in a future release if a better solution is found.
SCI_SETFONTQUALITY(int fontQuality)
SCI_GETFONTQUALITY
@@ -3210,11 +3330,18 @@ struct Sci_TextToFind {
949 (Korean Unified Hangul Code), 950 (Traditional Chinese Big5), or 1361 (Korean Johab)
although these may require installation of language specific support.
- SCI_SETKEYSUNICODE(bool keysUnicode)
- SCI_GETKEYSUNICODE
- On Windows, character keys are normally handled differently depending on whether Scintilla is a wide
- or narrow character window with character messages treated as Unicode when wide and as 8 bit otherwise.
- Set this property to always treat as Unicode. This option is needed for Delphi.
+ SCI_SETIMEINTERACTION(int imeInteraction)
+ SCI_GETIMEINTERACTION
+ When entering text in Chinese, Japanese, or Korean an Input Method Editor (IME) may be displayed.
+ The IME may be an extra window appearing above Scintilla or may be displayed by Scintilla itself
+ as text. On some platforms there is a choice between the two techniques.
+ A windowed IME SC_IME_WINDOWED
(0) may be more similar in appearance and
+ behaviour to the IME in other applications.
+ An inline IME SC_IME_INLINE
(1) may work better with some Scintilla features such as
+ rectangular and multiple selection.
+ The windowed behaviour can be chosen with SCI_SETIMEINTERACTION(SC_IME_WINDOWED)
+ and the inline behaviour with SCI_SETIMEINTERACTION(SC_IME_INLINE)
.
+ Scintilla may ignore this call in some cases. For example, the inline behaviour might only be supported for some languages.
SCI_SETWORDCHARS(<unused>, const char *characters)
Scintilla has several functions that operate on words, which are defined to be contiguous
@@ -3287,10 +3414,10 @@ struct Sci_TextToFind {
that is unmatched. Using a position of INVALID_POSITION
(-1) removes the
highlight.
- SCI_BRACEHIGHLIGHTINDICATOR(bool useBraceHighlightIndicator, int indicatorNumber)
+
SCI_BRACEHIGHLIGHTINDICATOR(bool useBraceHighlightIndicator, int indicatorNumber)
Use specified indicator to highlight matching braces instead of changing their style.
- SCI_BRACEBADLIGHTINDICATOR(bool useBraceBadLightIndicator, int indicatorNumber)
+
SCI_BRACEBADLIGHTINDICATOR(bool useBraceBadLightIndicator, int indicatorNumber)
Use specified indicator to highlight non matching brace instead of changing its style.
SCI_BRACEMATCH(int pos, int maxReStyle)
@@ -3313,6 +3440,10 @@ struct Sci_TextToFind {
syntax. Tabs are normally used in editors to insert a tab character or to pad text with spaces
up to the next tab.
+ When Scintilla is laying out a section of text, text after a tab character will usually be
+ displayed at the next multiple of TABWIDTH columns from the left. However, it is also possible
+ to explicitly set tabstops in pixels for each line.
+
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
@@ -3320,6 +3451,9 @@ struct Sci_TextToFind {
you to generate code.
SCI_SETTABWIDTH(int widthInChars)
SCI_GETTABWIDTH
+ SCI_CLEARTABSTOPS(int line)
+ SCI_ADDTABSTOP(int line, int x)
+ SCI_GETNEXTTABSTOP(int line, int x)
SCI_SETUSETABS(bool useTabs)
SCI_GETUSETABS
SCI_SETINDENT(int widthInChars)
@@ -3346,6 +3480,16 @@ struct Sci_TextToFind {
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_CLEARTABSTOPS(int line)
+ SCI_ADDTABSTOP(int line, int x)
+ SCI_GETNEXTTABSTOP(int line, int x)
+ SCI_CLEARTABSTOPS
clears explicit tabstops on a line. SCI_ADDTABSTOP
+ adds an explicit tabstop at the specified distance from the left (in pixels), and
+ SCI_GETNEXTTABSTOP
gets the next explicit tabstop position set after the given x position,
+ or zero if there aren't any.
+ Changing tab stops produces a SC_MOD_CHANGETABSTOPS notification.
+
+
SCI_SETUSETABS(bool useTabs)
SCI_GETUSETABS
SCI_SETUSETABS
determines whether indentation should be created out of a mixture
@@ -3450,7 +3594,7 @@ struct Sci_TextToFind {
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.
+ operation, with the markers of the next line.
SCI_MARKERDEFINE(int markerNumber, int
markerSymbols)
SCI_MARKERDEFINEPIXMAP(int markerNumber,
@@ -3489,12 +3633,23 @@ struct Sci_TextToFind {
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_BACKGROUND
, SC_MARK_LEFTRECT
,
- SC_MARK_FULLRECT
, and SC_MARK_UNDERLINE
.
+ 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_BACKGROUND
,
+ SC_MARK_LEFTRECT
,
+ SC_MARK_FULLRECT
,
+ SC_MARK_BOOKMARK
, and
+ SC_MARK_UNDERLINE
.
+
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.
@@ -3509,16 +3664,23 @@ struct Sci_TextToFind {
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_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)
.
+ 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
@@ -3637,6 +3799,7 @@ struct Sci_TextToFind {
+
SCI_MARKERDEFINEPIXMAP(int markerNumber, const char
*xpm)
@@ -3654,7 +3817,7 @@ struct Sci_TextToFind {
The width and height must previously been set with the SCI_RGBAIMAGESETWIDTH
and
SCI_RGBAIMAGESETHEIGHT
messages.
A scale factor in percent may be set with SCI_RGBAIMAGESETSCALE
. This is useful on OS X with
- a retina display where each display unit is 2 pixels: use a factor of 200 so that each image pixel is dsplayed using a screen pixel.
+ a retina display where each display unit is 2 pixels: use a factor of 200 so that each image pixel is displayed using a screen pixel.
The default scale, 100, will stretch each image pixel to cover 4 screen pixels on a retina display.
Pixmaps use the SC_MARK_RGBAIMAGE
marker symbol.
@@ -3738,19 +3901,32 @@ struct Sci_TextToFind {
Indicators are used to display additional information over the top of styling.
They can be used to show, for example, syntax errors, deprecated names and bad indentation
- by drawing underlines under text or boxes around text. Originally, Scintilla stored indicator information in
- the style bytes but this has proved limiting, so now up to 32 separately stored indicators may be used.
- While style byte indicators currently still work, they will soon be removed so all the bits in each style
- byte can be used for lexical states.
+ by drawing underlines under text or boxes around text.
+
+ Indicators may have a different "hover" colour and style when the mouse is over them or the caret is moved into them.
+ This may be used, for example, to indicate that a URL can be clicked.
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.
+ line of small 'T' shapes, a line of diagonal hatching, a strike-out or a rectangle around the text.
+ They may also be invisible when used to track pieces of content for the application as INDIC_HIDDEN
.
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 INDIC_MAX(31)
+ indicators. They all use an indicatorNumber
argument in the range 0 to INDIC_MAX(35)
to set the indicator to style. To prevent interference the set of indicators is divided up into a range for use
- by lexers (0..7) and a range for use by containers
- (8=INDIC_CONTAINER
.. 31=INDIC_MAX
).
+ by lexers (0..7) a range for use by containers
+ (8=INDIC_CONTAINER
.. 31=INDIC_IME-1
)
+ and a range for IME indicators (32=INDIC_IME
.. 35=INDIC_IME_MAX
).
+
+ Indicators are stored in a format similar to run length encoding which is efficient in both
+ speed and storage for sparse information.
+ An indicator may store different values for each range but currently all values are drawn the same.
+ In the future, it may be possible to draw different values in different styles.
+
+ Originally, Scintilla used a different technique for indicators but this
+ has been removed
+ and the APIs perform no action.
+ While both techniques were supported, the term "modern indicators" was used for the
+ newer implementation.
SCI_INDICSETSTYLE(int indicatorNumber, int
indicatorStyle)
@@ -3764,6 +3940,15 @@ struct Sci_TextToFind {
SCI_INDICGETOUTLINEALPHA(int indicatorNumber)
SCI_INDICSETUNDER(int indicatorNumber, bool under)
SCI_INDICGETUNDER(int indicatorNumber)
+ SCI_INDICSETHOVERSTYLE(int indicatorNumber, int
+ indicatorStyle)
+ SCI_INDICGETHOVERSTYLE(int indicatorNumber)
+ SCI_INDICSETHOVERFORE(int indicatorNumber, int
+ colour)
+ SCI_INDICGETHOVERFORE(int indicatorNumber)
+ SCI_INDICSETFLAGS(int indicatorNumber, int flags)
+ SCI_INDICGETFLAGS(int indicatorNumber)
+
SCI_SETINDICATORCURRENT(int indicator)
SCI_GETINDICATORCURRENT
@@ -3785,7 +3970,9 @@ struct Sci_TextToFind {
indicatorStyle)
SCI_INDICGETSTYLE(int indicatorNumber)
These two messages set and get the style for a particular indicator. The indicator styles
- currently available are:
+ currently available are:
+
+
@@ -3876,7 +4063,18 @@ struct Sci_TextToFind {
interior usually more transparent than the border. You can use
SCI_INDICSETALPHA and
SCI_INDICSETOUTLINEALPHA
- to control the alpha transparency values. The default alpha values are 30 for fill colour and 50 for outline colour.
+ to control the alpha transparency values. The default alpha values are 30 for fill colour and 50 for outline colour.
+ This indicator does not colour the top pixel of the line so that indicators on contiguous lines are visually distinct
+ and disconnected.
+
+
+
+ INDIC_FULLBOX |
+
+ 16 |
+
+ A rectangle around the text using translucent drawing similar to INDIC_STRAIGHTBOX
+ but covering the entire character area. |
@@ -3925,7 +4123,7 @@ struct Sci_TextToFind {
A version of INDIC_SQUIGGLE that draws using a pixmap instead of
as a series of line segments for performance.
Measured to be between 3 and 6 times faster than INDIC_SQUIGGLE on GTK+.
- Apperance will not be as good as INDIC_SQUIGGLE on OS X in HiDPI mode. |
+ Appearance will not be as good as INDIC_SQUIGGLE
on OS X in HiDPI mode.
@@ -3935,7 +4133,25 @@ struct Sci_TextToFind {
A 2-pixel thick underline located at the bottom of the line to try to avoid touching the character base.
Each side is inset 1 pixel so that different indicators in this style covering a range appear isolated.
- This is similar to an appearance used for Asian language input composition. |
+ This is similar to an appearance used for the target in Asian language input composition.
+
+
+
+ INDIC_COMPOSITIONTHIN |
+
+ 15 |
+
+ A 1-pixel thick underline located just before the bottom of the line.
+ Each side is inset 1 pixel so that different indicators in this style covering a range appear isolated.
+ This is similar to an appearance used for non-target ranges in Asian language input composition. |
+
+
+
+ INDIC_TEXTFORE |
+
+ 17 |
+
+ Change the colour of the text to the indicator's fore colour. |
@@ -3971,15 +4187,32 @@ struct Sci_TextToFind {
SCI_INDICSETUNDER(int indicatorNumber, bool under)
SCI_INDICGETUNDER(int indicatorNumber)
These two messages set and get whether an indicator is drawn under text or over(default).
- Drawing under text works only for modern indicators when two phase drawing
+ Drawing under text works only for indicators when two phase drawing
is enabled.
- Modern Indicators
+ SCI_INDICSETHOVERSTYLE(int indicatorNumber, int
+ indicatorStyle)
+ SCI_INDICGETHOVERSTYLE(int indicatorNumber)
+ SCI_INDICSETHOVERFORE(int indicatorNumber, int colour)
+ SCI_INDICGETHOVERFORE(int indicatorNumber)
+ These messages set and get the colour and style used to draw indicators when the mouse is over them or the caret moved into them.
+ The mouse cursor also changes when an indicator is drawn in hover style.
+ The default is for the hover appearance to be the same as the normal appearance and calling
+ SCI_INDICSETFORE or
+ SCI_INDICSETSTYLE will
+ also reset the hover attribute.
+
+ SCI_INDICSETFLAGS(int indicatorNumber, int flags)
+ SCI_INDICGETFLAGS(int indicatorNumber)
+ These messages set and get the flags associated with an indicator.
+ There is currently one flag defined, SC_INDICFLAG_VALUEFORE
: when this flag is set
+ the colour used by the indicator is not from the indicator's fore setting but instead from the value of the indicator at
+ that point in the file. This allows many colours to be displayed for a single indicator. The value is an RGB integer colour that has been ored with SC_INDICVALUEBIT
(0x1000000)
+ when calling SCI_SETINDICATORVALUE.
+ To find the colour from the value, and the value with SC_INDICVALUEMASK
(0xFFFFFF).
+
- Modern indicators are stored in a format similar to run length encoding which is efficient in both
- speed and storage for sparse information.
- An indicator may store different values for each range but currently all values are drawn the same.
- In the future, it may be possible to draw different values in different styles.
SCI_SETINDICATORCURRENT(int indicator)
SCI_GETINDICATORCURRENT
@@ -4006,6 +4239,7 @@ struct Sci_TextToFind {
SCI_INDICATORALLONFOR(int position)
Retrieve a bitmap value representing which indicators are non-zero at a position.
+ Only the first 32 indicators are represented in the result so no IME indicators are included.
@@ -4043,32 +4277,8 @@ struct Sci_TextToFind {
This message hides the find indicator.
- Style Byte Indicators (deprecated)
- 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.
-
- 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 8 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.
+ Earlier versions of Scintilla allowed partitioning style bytes
+ between style numbers and indicators and provided APIs for setting and querying this.
Autocompletion
@@ -4118,10 +4328,12 @@ struct Sci_TextToFind {
SCI_AUTOCSETIGNORECASE(bool
ignoreCase)
SCI_AUTOCGETIGNORECASE
- SCI_AUTOCSETCASEINSENSITIVEBEHAVIOUR(int behaviour)
- SCI_AUTOCGETCASEINSENSITIVEBEHAVIOUR
- SCI_AUTOCSETORDER(int order)
- SCI_AUTOCGETORDER
+ SCI_AUTOCSETCASEINSENSITIVEBEHAVIOUR(int behaviour)
+ SCI_AUTOCGETCASEINSENSITIVEBEHAVIOUR
+ SCI_AUTOCSETMULTI(int multi)
+ SCI_AUTOCGETMULTI
+ SCI_AUTOCSETORDER(int order)
+ SCI_AUTOCGETORDER
SCI_AUTOCSETAUTOHIDE(bool autoHide)
SCI_AUTOCGETAUTOHIDE
SCI_AUTOCSETDROPRESTOFWORD(bool
@@ -4195,7 +4407,7 @@ struct Sci_TextToFind {
href="#SCI_AUTOCSETAUTOHIDE">SCI_AUTOCSETAUTOHIDE
).
The current selection index can be retrieved with SCI_AUTOCGETCURRENT
.
- SCI_AUTOCGETCURRENTTEXT(<unused>, char *text)
+
SCI_AUTOCGETCURRENTTEXT(<unused>, char *text NUL-terminated)
This message retrieves the current selected text in the autocompletion list. Normally the
SCN_AUTOCSELECTION
notification
is used instead.
@@ -4208,7 +4420,7 @@ struct Sci_TextToFind {
SCI_AUTOCSETCANCELATSTART(bool cancel)
SCI_AUTOCGETCANCELATSTART
- The default behavior is for the list to be cancelled if the caret moves to the location it
+ The default behaviour is for the list to be cancelled if the caret moves to 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 at least one character before the word being
completed.
@@ -4230,15 +4442,21 @@ struct Sci_TextToFind {
By default, matching of characters to list members is case sensitive. These messages let you
set and get case sensitivity.
- SCI_AUTOCSETCASEINSENSITIVEBEHAVIOUR(int behaviour)
- SCI_AUTOCGETCASEINSENSITIVEBEHAVIOUR
+
SCI_AUTOCSETCASEINSENSITIVEBEHAVIOUR(int behaviour)
+ SCI_AUTOCGETCASEINSENSITIVEBEHAVIOUR
When autocompletion is set to ignore case (SCI_AUTOCSETIGNORECASE
), by default it will
nonetheless select the first list member that matches in a case sensitive way to entered characters.
This corresponds to a behaviour property of SC_CASEINSENSITIVEBEHAVIOUR_RESPECTCASE
(0).
If you want autocompletion to ignore case at all, choose SC_CASEINSENSITIVEBEHAVIOUR_IGNORECASE
(1).
- SCI_AUTOCSETORDER(int order)
- SCI_AUTOCGETORDER
+
SCI_AUTOCSETMULTI(int multi)
+ SCI_AUTOCGETMULTI
+ When autocompleting with multiple selections present, the autocompleted text can go into just the main selection with
+ SC_MULTIAUTOC_ONCE
(0) or into each selection with SC_MULTIAUTOC_EACH
(1).
+ The default is SC_MULTIAUTOC_ONCE
.
+
+ SCI_AUTOCSETORDER(int order)
+ SCI_AUTOCGETORDER
The default setting SC_ORDER_PRESORTED
(0) requires that the list be provided in alphabetical sorted order.
Sorting the list can be done by Scintilla instead of the application with SC_ORDER_PERFORMSORT
(1).
@@ -4339,6 +4557,8 @@ struct Sci_TextToFind {
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 are not implemented on Qt.
+
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
@@ -4363,6 +4583,7 @@ struct Sci_TextToFind {
SCI_CALLTIPCANCEL
SCI_CALLTIPACTIVE
SCI_CALLTIPPOSSTART
+ SCI_CALLTIPSETPOSSTART(int posStart)
SCI_CALLTIPSETHLT(int highlightStart, int
highlightEnd)
SCI_CALLTIPSETBACK(int colour)
@@ -4384,18 +4605,22 @@ struct Sci_TextToFind {
'\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_CALLTIPUSESTYLE
.
+ The position of the caret is remembered here so that the call tip can be cancelled automatically if subsequent deletion
+ moves the caret before this position.
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.
+ function.
+ Call tips are cancelled if you delete back past the position where the caret was when the tip was triggered.
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
+ SCI_CALLTIPSETPOSSTART(int posStart)
+ This message returns or sets the value of the current position when SCI_CALLTIPSHOW
started to display the tip.
SCI_CALLTIPSETHLT(int hlStart, int hlEnd)
@@ -4406,7 +4631,7 @@ struct Sci_TextToFind {
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
+
Unhighlighted text is drawn in a mid grey. Selected text is drawn in a dark blue. The
background is white. These can be changed with
SCI_CALLTIPSETBACK
,
SCI_CALLTIPSETFORE
, and
@@ -4416,11 +4641,11 @@ struct Sci_TextToFind {
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
+ calltip text is mid grey and the default colour 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.
+ The colour of call tip text can be set with this message; the default colour is mid grey.
This also sets the foreground colour of STYLE_CALLTIP
.
SCI_CALLTIPSETFOREHLT(int colour)
@@ -4857,7 +5082,7 @@ struct Sci_RangeToFormat {
On GTK+, the surface IDs to use can be found from the printing context with
gtk_print_context_get_cairo_context(context)
.
- chrg.cpMin
and chrg.cpMax
define the start position and maximum
+ 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
@@ -5103,7 +5328,7 @@ sptr_t CallScintilla(unsigned int iMessage, uptr_t wParam, sptr_t lParam){
To ensure a responsive user interface, applications may decide to load and save documents using a separate thread
from the user interface.
- Loading in the background
+ Loading in the background
An application can load all of a file into a buffer it allocates on a background thread and then add the data in that buffer
into a Scintilla document on the user interface thread. That technique uses extra memory to store a complete copy of the
@@ -5139,11 +5364,11 @@ sptr_t CallScintilla(unsigned int iMessage, uptr_t wParam, sptr_t lParam){
SCI_CREATEDOCUMENT.
There is no need to call Release
after ConvertToDocument
.
- Saving in the background
+ Saving in the background
An application that wants to save in the background should lock the document with SCI_SETREADONLY(1)
to prevent modifications and retrieve a pointer to the unified document contents with
- SCI_GETCHARACTERPOINTER.
+ SCI_GETCHARACTERPOINTER.
The buffer of a locked document will not move so the pointer is valid until the application calls SCI_SETREADONLY(0)
.
If the user tries to performs a modification while the document is locked then a display hexadecimal fold levels in line margin to aid debugging of
folding. The appearance of this feature may change in the future.
+
+
+ SC_FOLDFLAG_LINESTATE |
+ 128 |
+
+ display hexadecimal line state in line margin to aid debugging of lexing and folding.
+ May not be used at the same time as SC_FOLDFLAG_LEVELNUMBERS . |
+
@@ -5389,7 +5622,6 @@ sptr_t CallScintilla(unsigned int iMessage, uptr_t wParam, sptr_t lParam){
-
SCI_EXPANDCHILDREN(int line, int level)
This is used to respond to a change to a line causing its fold level or whether it is a header to change,
@@ -5405,7 +5637,7 @@ sptr_t CallScintilla(unsigned int iMessage, uptr_t wParam, sptr_t lParam){
that is adequate for many applications. The automaticFold
argument is a bit set defining
which of the 3 pieces of folding implementation should be enabled. Most applications should be able to use the
SC_AUTOMATICFOLD_SHOW
and SC_AUTOMATICFOLD_CHANGE
- flags unless they wish to implement quite different behavious such as defining their own fold structure.
+ flags unless they wish to implement quite different behaviour such as defining their own fold structure.
SC_AUTOMATICFOLD_CLICK
is more likely to be set off when an application would
like to add or change click behaviour such as showing method headers only when Shift+Alt is used in
conjunction with a click.
@@ -5502,7 +5734,7 @@ sptr_t CallScintilla(unsigned int iMessage, uptr_t wParam, sptr_t lParam){
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
+ is redrawn. This delay improves performance 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
@@ -5514,11 +5746,12 @@ sptr_t CallScintilla(unsigned int iMessage, uptr_t wParam, sptr_t lParam){
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.
+ on word or style boundaries, SC_WRAP_CHAR
(2) to enable wrapping
+ between any characters, SC_WRAP_WHITESPACE
(3) to enable
+ wrapping on whitespace, and SC_WRAP_NONE
(0) to disable line
+ wrapping. SC_WRAP_CHAR
is preferred for Asian languages where
+ there is no white space between words.
+
SCI_SETWRAPVISUALFLAGS(int wrapVisualFlags)
@@ -5829,7 +6062,7 @@ sptr_t CallScintilla(unsigned int iMessage, uptr_t wParam, sptr_t lParam){
Scintilla also supports external lexers. These are DLLs (on Windows) or .so modules (on GTK+/Linux) that export three
functions: GetLexerCount
, GetLexerName
, and
GetLexerFactory
. See externalLexer.cxx
for more.
- SCI_SETLEXER(int lexer)
+ SCI_SETLEXER(int lexer)
SCI_GETLEXER
SCI_SETLEXERLANGUAGE(<unused>, const char
*name)
@@ -5849,19 +6082,16 @@ sptr_t CallScintilla(unsigned int iMessage, uptr_t wParam, sptr_t lParam){
SCI_DESCRIBEKEYWORDSETS(<unused>, char *descriptions)
SCI_SETKEYWORDS(int keyWordSet, const char
*keyWordList)
- SCI_GETSTYLEBITSNEEDED
-
-
-
SCI_SETLEXER(int lexer)
SCI_GETLEXER
@@ -5874,7 +6104,7 @@ sptr_t CallScintilla(unsigned int iMessage, uptr_t wParam, sptr_t lParam){
assigns unused lexer numbers to.
SCI_SETLEXERLANGUAGE(<unused>, const char *name)
- SCI_GETLEXERLANGUAGE(<unused>, char *name)
+ SCI_GETLEXERLANGUAGE(<unused>, char *name NUL-terminated)
SCI_SETLEXERLANGUAGE
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
@@ -5905,9 +6135,9 @@ sptr_t CallScintilla(unsigned int iMessage, uptr_t wParam, sptr_t lParam){
Indicate that the internal state of a lexer has changed over a range and therefore
there may be a need to redraw.
- SCI_PROPERTYNAMES(<unused>, char *names)
+
SCI_PROPERTYNAMES(<unused>, char *names NUL-terminated)
SCI_PROPERTYTYPE(const char *name)
- SCI_DESCRIBEPROPERTY(const char *name, char *description)
+ SCI_DESCRIBEPROPERTY(const char *name, char *description NUL-terminated)
Information may be retrieved about the properties that can be set for the current lexer.
This information is only available for newer lexers.
SCI_PROPERTYNAMES
returns a string with all of the valid properties separated by "\n".
@@ -5942,11 +6172,11 @@ sptr_t CallScintilla(unsigned int iMessage, uptr_t wParam, sptr_t lParam){
Applications may discover the set of properties used by searching the source code of lexers for lines that contain
GetProperty
and a double quoted string and extract the value of the double quoted string as the property name.
- The scintilla/src/LexGen.py
script does this and can be used as an example.
+ The scintilla/scripts/LexGen.py
script does this and can be used as an example.
Documentation for the property may be located above the call as a multi-line comment starting with
// property <property-name>
- SCI_GETPROPERTY(const char *key, char *value)
+
SCI_GETPROPERTY(const char *key, char *value NUL-terminated)
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.
@@ -5977,8 +6207,8 @@ sptr_t CallScintilla(unsigned int iMessage, uptr_t wParam, sptr_t lParam){
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
)
+ You can set up to 9 lists of keywords for use by the current lexer.
+ 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,
@@ -5998,17 +6228,10 @@ sptr_t CallScintilla(unsigned int iMessage, uptr_t wParam, sptr_t lParam){
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_DESCRIBEKEYWORDSETS(<unused>, char *descriptions)
+
SCI_DESCRIBEKEYWORDSETS(<unused>, char *descriptions NUL-terminated)
A description of all of the keyword sets separated by "\n" is returned by SCI_DESCRIBEKEYWORDSETS
.
- SCI_GETSTYLEBITSNEEDED
- Retrieve the number of bits the current lexer needs for styling. This should normally be the argument
- to SCI_SETSTYLEBITS.
-
-
-
Substyles
-
These features are provisional
Lexers may support several different sublanguages and each sublanguage may want to style some number of
sets of identifiers (or similar lexemes such as documentation keywords) uniquely. Preallocating a large number for each
purpose would exhaust the number of allowed styles quickly.
@@ -6016,7 +6239,7 @@ sptr_t CallScintilla(unsigned int iMessage, uptr_t wParam, sptr_t lParam){
each purpose.
Lexers have to explicitly support this feature by implementing the methods in ILexerWithSubStyles
.
-
SCI_GETSUBSTYLEBASES(<unused>, char *styles)
+
SCI_GETSUBSTYLEBASES(<unused>, char *styles NUL-terminated)
Fill styles
with a byte for each style that can be split into substyles.
SCI_DISTANCETOSECONDARYSTYLES
@@ -6033,9 +6256,15 @@ sptr_t CallScintilla(unsigned int iMessage, uptr_t wParam, sptr_t lParam){
SCI_GETSUBSTYLESLENGTH(int styleBase)
Return the start and length of the substyles allocated for a base style.
+
SCI_GETSTYLEFROMSUBSTYLE(int subStyle)
+ For a sub style, return the base style, else return the argument.
+
+
SCI_GETPRIMARYSTYLEFROMSTYLE(int style)
+ For a secondary style, return the primary style, else return the argument.
+
SCI_SETIDENTIFIERS(int style, const char *identifiers)
- Similar to SCI_SETKEYWORDS
but for substyles.
-
+ Similar to SCI_SETKEYWORDS
but for substyles.
+ The prefix feature available with SCI_SETKEYWORDS
is not implemented for SCI_SETIDENTIFIERS
.
Lexer Objects
@@ -6135,6 +6364,9 @@ A simple approach is to return 0 if there is any possibility that a change requi
optimisation could be to remember where a setting first affects the document and return that position.
+Version
returns an enumerated value specifying which version of the interface is implemented:
+lvOriginal
for ILexer
and lvSubStyles
for ILexerWithSubStyles
.
+
Release
is called to destroy the lexer object.
PrivateCall
allows for direct communication between the
@@ -6151,9 +6383,9 @@ needs to be folded as this allowed fixing up the last line from the previous fol
The new approach allows the lexer to decide whether to backtrack or to handle this
more efficiently.
-ILexerWithSubStyles
+ILexerWithSubStyles
-
+
To allow lexers to report which line ends they support, and to support substyles,
Ilexer
is extended to ILexerWithSubStyles
.
@@ -6165,6 +6397,8 @@ To allow lexers to report which line ends they support, and to support substyles
virtual int SCI_METHOD AllocateSubStyles(int styleBase, int numberStyles) = 0;
virtual int SCI_METHOD SubStylesStart(int styleBase) = 0;
virtual int SCI_METHOD SubStylesLength(int styleBase) = 0;
+ virtual int SCI_METHOD StyleFromSubStyle(int subStyle) = 0;
+ virtual int SCI_METHOD PrimaryStyleFromStyle(int style) = 0;
virtual void SCI_METHOD FreeSubStyles() = 0;
virtual void SCI_METHOD SetIdentifiers(int style, const char *identifiers) = 0;
virtual int SCI_METHOD DistanceToSecondaryStyles() = 0;
@@ -6315,6 +6549,8 @@ segments then changing the statement #define BEOS 0
to #defin
document. The lexer can call ChangeLexerState
to signal to
the document that it should relex and display more.
+For StartStyling
the mask argument has no effect. It was used in version 3.4.2 and earlier.
+
SetErrorStatus
is used to notify the document of
exceptions. Exceptions should not be thrown over build boundaries as the
two sides may be built with different compilers or incompatible
@@ -6353,8 +6589,16 @@ implemented and thus which methods may be called.
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
+ occurred that may interest the container.
+ Notifications are sent using the
+ WM_NOTIFY
message on Windows.
+ On GTK+, the "sci-notify" signal is sent and the signal handler should have the signature
+ handler(GtkWidget *, gint, SCNotification *notification, gpointer userData)
.
+ On Cocoa, a delegate implementing the ScintillaNotificationProtocol
+ may be set to receive notifications or the ScintillaView
class may be subclassed and the
+ notification:
method overridden. Overriding notification:
allows the
+ subclass to control whether default handling is performed.
+ The container is
passed a SCNotification
structure containing information about the event.
struct NotifyHeader { // This matches the Win32 NMHDR structure
@@ -6428,6 +6672,8 @@ struct SCNotification {
SCN_AUTOCSELECTION
SCN_AUTOCCANCELLED
SCN_AUTOCCHARDELETED
+ SCN_FOCUSIN
+ SCN_FOCUSOUT
The following SCI_*
messages are associated with these notifications:
@@ -6439,9 +6685,14 @@ struct SCNotification {
SCI_GETIDENTIFIER
- 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
+
The following additional notifications are sent using a secondary "command" method and should
+ be avoided in new code as the primary "notification" method provides all the same events with richer
+ information.
+ The WM_COMMAND
message is used on Windows.
+ This emulates the Windows Edit control. Only the lower
16 bits of the control's ID is passed in these notifications.
+ On GTK+, the "command" signal is sent and the signal handler should have the signature
+ handler(GtkWidget *, gint wParam, gpointer lParam, gpointer userData)
.
SCEN_CHANGE
SCEN_SETFOCUS
SCEN_KILLFOCUS
@@ -6454,7 +6705,7 @@ struct SCNotification {
When an application creates multiple Scintilla widgets, this allows the source of each notification to be found.
On Windows, this value is initialised in the CreateWindow
call and stored as the
GWLP_ID
attribute of the window.
- The value should be small, preferrably less than 16 bits,
+ The value should be small, preferably less than 16 bits,
rather than a pointer as some of the functions will only transmit 16 or 32 bits.
@@ -6663,7 +6914,7 @@ href="#SCI_POSITIONFROMLINE">SCI_POSITIONFROMLINE(lineNumber);
SC_MOD_INSERTTEXT |
- 0x01 |
+ 0x01 |
Text has been inserted into the document. |
@@ -6673,7 +6924,7 @@ href="#SCI_POSITIONFROMLINE">SCI_POSITIONFROMLINE(lineNumber);
SC_MOD_DELETETEXT |
- 0x02 |
+ 0x02 |
Text has been removed from the document. |
@@ -6683,7 +6934,7 @@ href="#SCI_POSITIONFROMLINE">SCI_POSITIONFROMLINE(lineNumber);
SC_MOD_CHANGESTYLE |
- 0x04 |
+ 0x04 |
A style change has occurred. |
@@ -6693,7 +6944,7 @@ href="#SCI_POSITIONFROMLINE">SCI_POSITIONFROMLINE(lineNumber);
SC_MOD_CHANGEFOLD |
- 0x08 |
+ 0x08 |
A folding change has occurred. |
@@ -6703,7 +6954,7 @@ href="#SCI_POSITIONFROMLINE">SCI_POSITIONFROMLINE(lineNumber);
SC_PERFORMED_USER |
- 0x10 |
+ 0x10 |
Information: the operation was done by the user. |
@@ -6713,7 +6964,7 @@ href="#SCI_POSITIONFROMLINE">SCI_POSITIONFROMLINE(lineNumber);
SC_PERFORMED_UNDO |
- 0x20 |
+ 0x20 |
Information: this was the result of an Undo. |
@@ -6723,7 +6974,7 @@ href="#SCI_POSITIONFROMLINE">SCI_POSITIONFROMLINE(lineNumber);
SC_PERFORMED_REDO |
- 0x40 |
+ 0x40 |
Information: this was the result of a Redo. |
@@ -6733,7 +6984,7 @@ href="#SCI_POSITIONFROMLINE">SCI_POSITIONFROMLINE(lineNumber);
SC_MULTISTEPUNDOREDO |
- 0x80 |
+ 0x80 |
This is part of a multi-step Undo or Redo transaction. |
@@ -6743,7 +6994,7 @@ href="#SCI_POSITIONFROMLINE">SCI_POSITIONFROMLINE(lineNumber);
SC_LASTSTEPINUNDOREDO |
- 0x100 |
+ 0x100 |
This is the final step in an Undo or Redo transaction. |
@@ -6753,7 +7004,7 @@ href="#SCI_POSITIONFROMLINE">SCI_POSITIONFROMLINE(lineNumber);
SC_MOD_CHANGEMARKER |
- 0x200 |
+ 0x200 |
One or more markers has changed in a line. |
@@ -6763,7 +7014,7 @@ href="#SCI_POSITIONFROMLINE">SCI_POSITIONFROMLINE(lineNumber);
SC_MOD_BEFOREINSERT |
- 0x400 |
+ 0x400 |
Text is about to be inserted into the document. |
@@ -6773,7 +7024,7 @@ href="#SCI_POSITIONFROMLINE">SCI_POSITIONFROMLINE(lineNumber);
SC_MOD_BEFOREDELETE |
- 0x800 |
+ 0x800 |
Text is about to be deleted from the document. |
@@ -6783,7 +7034,7 @@ href="#SCI_POSITIONFROMLINE">SCI_POSITIONFROMLINE(lineNumber);
SC_MOD_CHANGEINDICATOR |
- 0x4000 |
+ 0x4000 |
An indicator has been added or removed from a range of text. |
@@ -6793,7 +7044,7 @@ href="#SCI_POSITIONFROMLINE">SCI_POSITIONFROMLINE(lineNumber);
SC_MOD_CHANGELINESTATE |
- 0x8000 |
+ 0x8000 |
A line state has changed because SCI_SETLINESTATE
was called. |
@@ -6801,10 +7052,21 @@ href="#SCI_POSITIONFROMLINE">SCI_POSITIONFROMLINE(lineNumber);
line |
+
+ SC_MOD_CHANGETABSTOPS |
+
+ 0x200000 |
+
+ The explicit tab stops on a line have changed because SCI_CLEARTABSTOPS or
+ SCI_ADDTABSTOP was called. |
+
+ line |
+
+
SC_MOD_LEXERSTATE |
- 0x80000 |
+ 0x80000 |
The internal state of a lexer has changed over a range. |
@@ -6814,7 +7076,7 @@ href="#SCI_POSITIONFROMLINE">SCI_POSITIONFROMLINE(lineNumber);
SC_MOD_CHANGEMARGIN |
- 0x10000 |
+ 0x10000 |
A text margin has changed. |
@@ -6824,17 +7086,29 @@ href="#SCI_POSITIONFROMLINE">SCI_POSITIONFROMLINE(lineNumber);
SC_MOD_CHANGEANNOTATION |
- 0x20000 |
+ 0x20000 |
An annotation has changed. |
line |
+
+ SC_MOD_INSERTCHECK |
+
+ 0x100000 |
+
+ Text is about to be inserted. The handler may change the text being inserted by calling
+ SCI_CHANGEINSERTION.
+ No other modifications may be made in this handler. |
+
+ position, length, text |
+
+
SC_MULTILINEUNDOREDO |
- 0x1000 |
+ 0x1000 |
This is part of an Undo or Redo with multi-line changes. |
@@ -6844,7 +7118,7 @@ href="#SCI_POSITIONFROMLINE">SCI_POSITIONFROMLINE(lineNumber);
SC_STARTACTION |
- 0x2000 |
+ 0x2000 |
This is set on a SC_PERFORMED_USER action when it is the
first or only step in an undo transaction. This can be used to integrate the Scintilla
@@ -6859,7 +7133,7 @@ href="#SCI_POSITIONFROMLINE">SCI_POSITIONFROMLINE(lineNumber);
|
SC_MOD_CONTAINER |
- 0x40000 |
+ 0x40000 |
This is set on for actions that the container stored into the undo stack with
SCI_ADDUNDOACTION .
@@ -6871,7 +7145,7 @@ href="#SCI_POSITIONFROMLINE">SCI_POSITIONFROMLINE(lineNumber);
|
SC_MODEVENTMASKALL |
- 0x7FFFF |
+ 0x1FFFFF |
This is a mask for all valid flags. This is the default mask state set by SCI_SETMODEVENTMASK . |
@@ -6884,7 +7158,7 @@ href="#SCI_POSITIONFROMLINE">SCI_POSITIONFROMLINE(lineNumber);
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
+ "command" signal on GTK+ as this is the behaviour 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
@@ -6913,8 +7187,8 @@ href="#SCI_POSITIONFROMLINE">SCI_POSITIONFROMLINE(lineNumber);
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
+ WM_COMMAND
message on Windows and the "command" signal on GTK+ as this is the
+ behaviour 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.
@@ -7119,6 +7393,7 @@ for line = lineStart to lineEnd do SCI_ENSUREVISIBLE(line) next
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.
+ In the notification handler, you should avoid calling any function that modifies the current selection or caret position.
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.
@@ -7177,6 +7452,11 @@ for line = lineStart to lineEnd do SCI_ENSUREVISIBLE(line) next
The user deleted a character while autocompletion list was active.
There is no other information in SCNotification.
+ SCN_FOCUSIN
+ SCN_FOCUSOUT
+ SCN_FOCUSIN
(2028) is fired when Scintilla receives focus and
+ SCN_FOCUSOUT
(2029) when it loses focus.
+
Images
Two formats are supported for images used in margin markers and autocompletion lists, RGBA and XPM.
@@ -7256,6 +7536,13 @@ for line = lineStart to lineEnd do SCI_ENSUREVISIBLE(line) next
Provisional features are displayed in this document with a distinctive background colour.
+ There are currently no provisional messages.
+ The SC_TECHNOLOGY_DIRECTWRITERETAIN
and
+ SC_TECHNOLOGY_DIRECTWRITEDC
values for
+ SCI_SETTECHNOLOGY are provisional.
+
+ Using C++11 <regex> is provisional.
+
Some developers may want to only use features that are stable and have graduated from
provisional status. To avoid using provisional messages compile with the symbol
SCI_DISABLE_PROVISIONAL
defined.
@@ -7321,6 +7608,22 @@ EM_FORMATRANGE
SCI_GETUSEPALETTE Deprecated
Scintilla no longer supports palette mode. The last version to support palettes was 2.29.
Any calls to these methods should be removed.
+
+ SCI_SETKEYSUNICODE(bool keysUnicode) Deprecated
+ SCI_GETKEYSUNICODE Deprecated
+ On Windows, Scintilla no longer supports narrow character windows so input is always treated as Unicode.
+
+ The following are features that should be removed from calling code but are still
+ defined to avoid breaking callers.
+
+ SCI_SETSTYLEBITS(int bits) Deprecated
+ SCI_GETSTYLEBITS Deprecated
+ SCI_GETSTYLEBITSNEEDED Deprecated
+ INDIC0_MASK
, INDIC1_MASK
, INDIC2_MASK
, INDICS_MASK
Deprecated
+ Scintilla no longer supports style byte indicators. The last version to support style byte indicators was 3.4.2.
+ Any use of these symbols should be removed and replaced with standard indicators.
+ SCI_GETSTYLEBITS
and SCI_GETSTYLEBITSNEEDED
always return 8,
+ indicating that 8 bits are used for styling and there are 256 styles.
Edit messages never supported by Scintilla
@@ -7357,6 +7660,12 @@ EM_SETTARGETDEVICE
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.
+ Removed features
+
+ Previous versions of Scintilla allowed indicators to be stored in bits of each style byte.
+ This was deprecated in 2007 and removed in 2014 with release 3.4.3.
+ All uses of style byte indicators should be replaced with standard indicators.
+
Building Scintilla
To build Scintilla or SciTE, see the README file present in both the Scintilla and SciTE
@@ -7385,10 +7694,10 @@ EM_SETTARGETDEVICE
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,
+ (Lex*.cxx
) from the scintilla/lexers directory
and run the
+ scripts/LexGen.py
script from the scripts
directory to update the make files
+ and Catalogue.cxx
. LexGen.py
requires Python 2.5 or later. If you do
+ not have access to Python, you can hand edit Catalogue.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/scintilla/doc/ScintillaDownload.html b/scintilla/doc/ScintillaDownload.html
index 17e30fb7..48b88dc4 100644
--- a/scintilla/doc/ScintillaDownload.html
+++ b/scintilla/doc/ScintillaDownload.html
@@ -25,9 +25,9 @@
-
+
Windows
-
+
GTK+/Linux
|
@@ -41,7 +41,7 @@
containing very few restrictions.
- Release 3.3.4
+ Release 3.5.6
Source Code
@@ -49,8 +49,8 @@
The source code package contains all of the source code for Scintilla but no binary
executable code and is available in
- - zip format (1250K) commonly used on Windows
- - tgz format (1100K) commonly used on Linux and compatible operating systems
+ - zip format (1450K) commonly used on Windows
+ - tgz format (1300K) commonly used on Linux and compatible operating systems
Instructions for building on both Windows and Linux are included in the readme file.
diff --git a/scintilla/doc/ScintillaHistory.html b/scintilla/doc/ScintillaHistory.html
index c7911bfd..87bf61d8 100644
--- a/scintilla/doc/ScintillaHistory.html
+++ b/scintilla/doc/ScintillaHistory.html
@@ -64,369 +64,414 @@
John Ehresman |
Steffen Goeldner |
Deepak S. |
- Yann Gaillard |
+ DevelopMentor |
+ Yann Gaillard |
Aubin Paul |
Jason Diamond |
Ahmad Baitalmal |
- Paul Winwood |
+ Paul Winwood |
Maxim Baranov |
Ragnar Højland |
Christian Obrecht |
- Andreas Neukoetter |
+ Andreas Neukoetter |
Adam Gates |
Steve Lhomme |
Ferdinand Prantl |
- Jan Dries |
+ Jan Dries |
Markus Gritsch |
Tahir Karaca |
Ahmad Zawawi |
- Laurent le Tynevez |
+ Laurent le Tynevez |
Walter Braeu |
Ashley Cambrell |
Garrett Serack |
- Holger Schmidt |
+ Holger Schmidt |
ActiveState |
James Larcombe |
Alexey Yutkin |
- Jan Hercek |
+ Jan Hercek |
Richard Pecl |
Edward K. Ream |
Valery Kondakoff |
- Smári McCarthy |
+ Smári McCarthy |
Clemens Wyss |
Simon Steele |
Serge A. Baranov |
- Xavier Nodet |
+ Xavier Nodet |
Willy Devaux |
David Clain |
Brendon Yenson |
- Vamsi Potluru |
+ Vamsi Potluru |
Praveen Ambekar |
Alan Knowles |
Kengo Jinno |
- Valentin Valchev |
+ Valentin Valchev |
Marcos E. Wurzius |
Martin Alderson |
Robert Gustavsson |
- José Fonseca |
+ José Fonseca |
Holger Kiemes |
Francis Irving |
Scott Kirkwood |
- Brian Quinlan |
+ Brian Quinlan |
Ubi |
Michael R. Duerig |
Deepak T |
- Don Paul Beletsky |
+ Don Paul Beletsky |
Gerhard Kalab |
Olivier Dagenais |
Josh Wingstrom |
- Bruce Dodson |
+ Bruce Dodson |
Sergey Koshcheyev |
Chuan-jian Shen |
Shane Caraveo |
- Alexander Scripnik |
+ Alexander Scripnik |
Ryan Christianson |
Martin Steffensen |
Jakub Vrána |
- The Black Horus |
+ The Black Horus |
Bernd Kreuss |
Thomas Lauer |
Mike Lansdaal |
- Yukihiro Nakai |
+ Yukihiro Nakai |
Jochen Tucht |
Greg Smith |
Steve Schoettler |
- Mauritius Thinnes |
+ Mauritius Thinnes |
Darren Schroeder |
Pedro Guerreiro |
+ Steven te Brinke |
+
Dan Petitt |
Biswapesh Chattopadhyay |
-
Kein-Hong Man |
Patrizio Bekerle |
+
Nigel Hathaway |
Hrishikesh Desai |
-
Sergey Puljajev |
Mathias Rauen |
- Angelo Mandato |
- Denis Sureau |
+ 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 |
+
Snow |
Mitchell Foral |
-
Pieter Holtzhausen |
Waldemar Augustyn |
+
Jason Haslam |
Sebastian Steinlechner |
-
Chris Rickard |
Rob McMullen |
+
Stefan Schwendeler |
Cristian Adam |
-
Nicolas Chachereau |
Istvan Szollosi |
+
Xie Renhui |
Enrico Tröger |
-
Todd Whiteman |
Yuval Papish |
+
instanton |
Sergio Lucato |
-
VladVRO |
Dmitry Maslov |
+
chupakabra |
Juan Carlos Arevalo Baeza |
-
Nick Treleaven |
Stephen Stagg |
+
Jean-Paul Iribarren |
Tim Gerundt |
-
Sam Harwell |
Boris |
+
Jason Oster |
Gertjan Kloosterman |
-
alexbodn |
Sergiu Dotenco |
+
Anders Karlsson |
ozlooper |
-
Marko Njezic |
Eugen Bitter |
+
Christoph Baumann |
Christopher Bean |
-
Sergey Kishchenko |
Kai Liu |
+
Andreas Rumpf |
James Moffatt |
-
Yuzhou Xin |
Nic Jansma |
+
Evan Jones |
Mike Lischke |
-
Eric Kidd |
maXmo |
+
David Severwright |
Jon Strait |
-
Oliver Kiddle |
Etienne Girondel |
+
Haimag Ren |
Andrey Moskalyov |
-
Xavi |
Toby Inkster |
+
Eric Forgeot |
Colomban Wendling |
-
Neo |
Jordan Russell |
+
Farshid Lashkari |
Sam Rawlins |
-
Michael Mullin |
Carlos SS |
+
vim |
Martial Demolins |
-
Tino Weinkauf |
Jérôme Laforge |
+
Udo Lechner |
Marco Falda |
-
Dariusz Knociński |
Ben Fisher |
+
Don Gobin |
John Yeung |
-
Adobe |
Elizabeth A. Irizarry |
+
Mike Schroeder |
Morten MacFly |
-
Jaime Gimeno |
Thomas Linder Puls |
+
Artyom Zuikov |
Gerrit |
-
Occam's Razor |
Ben Bluemel |
+
David Wolfendale |
Chris Angelico |
-
Marat Dukhan |
Stefan Weil |
+
Rex Conn |
Ross McKay |
-
Bruno Barbieri |
Gordon Smith |
+
dimitar |
Sébastien Granjoux |
-
zeniko |
James Ribe |
+
Markus Nißl |
Martin Panter |
-
Mark Yen |
Philippe Elsass |
+
Dimitar Zhekov |
Fan Yang |
-
Denis Shelomovskij |
darmar |
+
John Vella |
Chinh Nguyen |
-
Sakshi Verma |
Joel B. Mohler |
+
Isiledhel |
Vidya Wasi |
-
G. Hu |
Byron Hawkins |
+
Alpha |
John Donoghue |
-
kudah |
Igor Shaula |
+
Pavel Bulochkin |
Yosef Or Boczko |
-
Brian Griffin |
+ Özgür Emir |
+
+ Neomi |
+ OmegaPhil |
+ SiegeLord |
+ Erik |
+
+ TJF |
+ Mark Robinson |
+ Thomas Martitz |
+ felix |
+
+ Christian Walther |
+ Ebben |
+ Robert Gieseke |
+ Mike M |
+
+ nkmathew |
+ Andreas Tscharner |
+ Lee Wilmott |
+ johnsonj |
+
+ Vicente |
+ Nick Gravgaard |
+ Ian Goldby |
+ Holger Stenger |
+
+ danselmi |
+ Mat Berchtold |
+ Michael Staszewski |
+ Baurzhan Muftakhidinov |
+
+ Erik Angelin |
+ Yusuf Ramazan Karagöz |
+ Markus Heidelberg |
+ Joe Mueller |
+
+ Mika Attila |
+ JoMazM |
+ Markus Moser |
+ Stefan Küng |
+
+ Jiří Techet |
@@ -438,6 +483,1203 @@
Icons Copyright(C) 1998 by Dean S. Jones
+
+
+ -
+ Released 26 May 2015.
+
+ -
+ On Qt, use fractional positioning calls and avoid rounding to ensure consistency.
+
+ -
+ SCI_TARGETASUTF8 and SCI_ENCODEDFROMUTF8 implemented on
+ Win32 as well as GTK+ and Cocoa.
+
+ -
+ C++ lexer fixes empty backquoted string.
+ Bug #1711.
+
+ -
+ C++ lexer fixes #undef directive.
+ Bug #1719.
+
+ -
+ Fortran folder fixes handling of "selecttype" and "selectcase".
+ Bug #1724.
+
+ -
+ Verilog folder folds interface definitions.
+
+ -
+ VHDL folder folds units declarations and fixes a case insensitivity bug with not treating "IS" the same as "is".
+
+ -
+ Fix bug when drawing text margins in buffered mode which would use default
+ encoding instead of chosen encoding.
+ Bug #1703.
+
+ -
+ Fix bug with Korean Hanja conversions in DBCS encoding on Windows.
+
+ -
+ Fix for reading a UTF-16 file in SciTE where a non-BMP character is split over a read buffer boundary.
+ Bug #1710.
+
+ -
+ Fix bug on GTK+ 2.x for Windows where there was an ABI difference between
+ compiler version.
+ Bug #1726.
+
+ -
+ Fix undo bug on Cocoa that could lose data..
+
+ -
+ Fix link error on Windows when SCI_NAMESPACE used.
+
+ -
+ Fix exporting from SciTE when using Scintillua for lexing.
+
+ -
+ SciTE does not report twice that a search string can not be found when "Replace" pressed.
+ Bug #1716.
+
+ -
+ SciTE on GTK+ 3.x disables arrow in search combo when no entries.
+ Bug #1717.
+
+
+
+
+ -
+ Released 17 April 2015.
+
+ -
+ Scintilla on Windows is now always a wide character window so SCI_SETKEYSUNICODE has no effect
+ and SCI_GETKEYSUNICODE always returns true. These APIs are deprecated and should not be called.
+
+ -
+ The wxWidgets-specific ascent member of Font has been removed which breaks
+ compatibility with current wxStyledTextCtrl.
+ Bug #1682.
+
+ -
+ IME on Qt supports multiple carets and behaves more like other platforms.
+
+ -
+ Always use inline IME on GTK+ for Korean.
+
+ -
+ SQL lexer fixes handling of '+' and '-' in numbers so the '-' in '1-1' is seen as an operator and for
+ '1--comment' the comment is recognized.
+
+ -
+ TCL lexer reverts change to string handling.
+ Bug #1642.
+
+ -
+ Verilog lexer fixes bugs with macro styling.
+ Verilog folder fixes bugs with `end completing an `if* instead of `endif and fold.at.else, and implements
+ folding at preprocessor `else.
+
+ -
+ VHDL lexer supports extended identifiers.
+
+ -
+ Fix bug on Cocoa where the calltip would display incorrectly when
+ switching calltips and the new calltip required a taller window.
+
+ -
+ Fix leak on Cocoa with autocompletion lists.
+ Bug #1706.
+
+ -
+ Fix potential crash on Cocoa with drag and drop.
+ Bug #1709.
+
+ -
+ Fix bug on Windows when compiling with MinGW-w64 which caused text to not be drawn
+ when in wrap mode.
+ Bug #1705.
+
+ -
+ Fix SciTE bug with missing file open filters and add hex to excluded set of properties files so that its
+ settings don't appear.
+ Bug #1707.
+
+ -
+ Fix SciTE bug where files without extensions like "makefile" were not highlighted correctly.
+
+
+
+
+ -
+ Released 8 March 2015.
+
+ -
+ Indicators may have a different colour and style when the mouse is over them or the caret is moved into them.
+
+ -
+ An indicator may display in a large variety of colours with the SC_INDICFLAG_VALUEFORE
+ flag taking the colour from the indicator's value, which may differ for every character, instead of its
+ foreground colour attribute.
+
+ -
+ On Cocoa, additional IME methods implemented so that more commands are enabled.
+ For Japanese: Reverse Conversion, Convert to Related Character, and Search Similar Kanji
+ can now be performed.
+ The global definition hotkey Command+Control+D and the equivalent three finger tap gesture
+ can be used.
+
+ -
+ Minimum version of Qt supported is now 4.8 due to the use of QElapsedTimer::nsecsElapsed.
+
+ -
+ On Windows, for Korean, the VK_HANJA key is implemented to choose Hanja for Hangul and
+ to convert from Hanja to Hangul.
+
+ -
+ C++ lexer adds lexer.cpp.verbatim.strings.allow.escapes option that allows verbatim (@") strings
+ to contain escape sequences. This should remain off (0) for C# and be turned on (1) for Objective C.
+
+ -
+ Rust lexer accepts new 'is'/'us' integer suffixes instead of 'i'/'u'.
+ Bug #1098.
+
+ -
+ Ruby folder can fold multiline comments.
+ Bug #1697.
+
+ -
+ SQL lexer fixes a bug with the q-quote operator.
+
+ -
+ TCL lexer fixes a bug with some strings.
+ Bug #1642.
+
+ -
+ Verilog lexer handles escaped identifiers that begin with \ and end with space like \reset* .
+ Verilog folder fixes one bug with inconsistent folding when fold.comment is on and another
+ with typedef class statements creating a fold point, expecting an endclass statement.
+
+ -
+ VHDL folder fixes hang in folding when document starts with "entity".
+
+ -
+ Add new indicators INDIC_COMPOSITIONTHIN, INDIC_FULLBOX, and INDIC_TEXTFORE.
+ INDIC_COMPOSITIONTHIN is a thin underline that mimics the appearance of non-target segments in OS X IME.
+ INDIC_FULLBOX is similar to INDIC_STRAIGHTBOX but covers the entire character area which means that
+ indicators with this style on contiguous lines may touch. INDIC_TEXTFORE changes the text foreground colour.
+
+ -
+ Fix adaptive scrolling speed for GTK+ on OS X with GTK Quartz backend (as opposed to X11 backend).
+ Bug #1696.
+
+ -
+ Fix position of autocompletion and calltips on Cocoa when there were two screens stacked vertically.
+
+ -
+ Fix crash in SciTE when saving large files in background when closing application.
+ Bug #1691.
+
+ -
+ Fix decoding of MSVC warnings in SciTE so that files in the C:\Program Files (x86)\ directory can be opened.
+ This is a common location of system include files.
+
+ -
+ Fix compilation failure of C++11 <regex> on Windows using gcc.
+
+
+
+
+ -
+ Released 20 January 2015.
+
+ -
+ Support removed for Windows 95, 98, and ME.
+
+ -
+ Lexers added for Motorola S-Record files, Intel hex files, and Tektronix extended hex files with folding for Intel hex files.
+ Feature #1091.
+ Feature #1093.
+ Feature #1095.
+ Feature #1096.
+
+ -
+ C++ folder allows folding on square brackets '['.
+ Feature #1087.
+
+ -
+ Shell lexer fixes three issues with here-documents.
+ Bug #1672.
+
+ -
+ Verilog lexer highlights doc comment keywords; has separate styles for input, output, and inout ports
+ (lexer.verilog.portstyling); fixes a bug in highlighting numbers; can treat upper-case identifiers as
+ keywords (lexer.verilog.allupperkeywords); and can use different styles for code that is inactive due
+ to preprocessor commands (lexer.verilog.track.preprocessor, lexer.verilog.update.preprocessor).
+
+ -
+ When the calltip window is taller than the Scintilla window, leave it in a
+ position that avoids overlapping the Scintilla text.
+
+ -
+ When a text margin is displayed, for annotation lines, use the background colour of the base line.
+
+ -
+ On Windows GDI, assume font names are encoded in UTF-8. This matches the Direct2D code path.
+
+ -
+ Fix paste for GTK+ on OS X.
+ Bug #1677.
+
+ -
+ Reverted a fix on Qt where Qt 5.3 has returned to the behaviour of 4.x.
+ Bug #1575.
+
+ -
+ When the mouse is on the line between margin and text changed to treat as within text.
+ This makes the PLAT_CURSES character cell platform work better.
+
+ -
+ Fix a crash in SciTE when the command line is just "-close:".
+ Bug #1675.
+
+ -
+ Fix unexpected dialog in SciTE on Windows when the command line has a quoted filename then ends with a space.
+ Bug #1673.
+
+ -
+ On Windows and GTK+, use indicators for inline IME.
+
+ -
+ SciTE shuts down quicker when there is no user-written OnClose function and no directors are attached.
+
+
+
+
+ -
+ Released 2 December 2014.
+
+ -
+ For OS X Cocoa switch C++ runtime to libc++ to enable use of features that will never
+ be added to libstdc++ including those part of C++11.
+ Scintilla will now run only on OS X 10.7 or later and only in 64-bit mode.
+
+ -
+ Include support for using C++11 <regex> for regular expression searches.
+ Enabling this requires rebuilding Scintilla with a non-default option.
+ This is a provisional feature and may change API before being made permanent.
+
+ -
+ Allocate indicators used for Input Method Editors after 31 which was the previous limit of indicators to
+ ensure no clash between the use of indicators for IME and for the application.
+
+ -
+ ANNOTATION_INDENTED added which is similar to ANNOTATION_BOXED in terms of positioning
+ but does not show a border.
+ Feature #1086.
+
+ -
+ Allow platform overrides for drawing tab arrows, wrap markers, and line markers.
+ Size of double click detection area is a variable.
+ These enable better visuals and behaviour for PLAT_CURSES as it is character cell based.
+
+ -
+ CoffeeScript lexer fixes "/*" to not be a comment.
+ Bug #1420.
+
+ -
+ VHDL folder fixes "block" keyword.
+ Bug #1664.
+
+ -
+ Prevent caret blinking when holding down Delete key.
+ Bug #1657.
+
+ -
+ On Windows, allow right click selection in popup menu.
+ Feature #1080.
+
+ -
+ On Windows, only call ShowCaret in GDI mode as it interferes with caret drawing when using Direct2D.
+ Bug #1643.
+
+ -
+ On Windows, another DirectWrite mode SC_TECHNOLOGY_DIRECTWRITEDC added
+ which may avoid drawing failures in some circumstances by drawing into a GDI DC.
+ This feature is provisional and may be changed or removed if a better solution is found.
+
+ -
+ On Windows, avoid processing mouse move events where the mouse has not moved as these can
+ cause unexpected dwell start notifications.
+ Bug #1670.
+
+ -
+ For GTK+ on Windows, avoid extra space when pasting from external application.
+
+ -
+ On GTK+ 2.x allow Scintilla to be used inside tool tips by changing when preedit window created.
+ Bug #1662.
+
+ -
+ Support MinGW compilation under Linux.
+ Feature #1077.
+
+
+
+
+ -
+ Released 30 September 2014.
+
+ -
+ BibTeX lexer added.
+ Feature #1071.
+
+ -
+ SQL lexer supports the q-quote operator as SCE_SQL_QOPERATOR(24).
+
+ -
+ VHDL lexer supports block comments.
+ Bug #1527.
+
+ -
+ VHDL folder fixes case where "component" used before name.
+ Bug #613.
+
+ -
+ Restore fractional pixel tab positioning which was truncated to whole pixels in 3.5.0.
+ Bug #1652.
+
+ -
+ Allow choice between windowed and inline IME on some platforms.
+
+ -
+ On GTK+ cache autocomplete window to avoid platform bug where windows
+ were sometimes lost.
+ Bug #1649.
+
+ -
+ On GTK+ size autocomplete window more accurately.
+
+ -
+ On Windows only unregister windows classes registered.
+ Bug #1639.
+
+ -
+ On Windows another DirectWrite mode SC_TECHNOLOGY_DIRECTWRITERETAIN added
+ which may avoid drawing failures on some cards and drivers.
+ This feature is provisional and may be changed or removed if a better solution is found.
+
+ -
+ On Windows support the Visual Studio 2010+ clipboard format that indicates a line copy.
+ Bug #1636.
+
+ -
+ SciTE session files remember the scroll position.
+
+
+
+
+ -
+ Released 13 August 2014.
+
+ -
+ Text may share space vertically so that extreme ascenders and descenders are
+ not cut off by calling SCI_SETPHASESDRAW(SC_PHASES_MULTIPLE).
+
+ -
+ Separate timers are used for each type of periodic activity and they are turned on and off
+ as required. This saves power as there are fewer wake ups.
+ On recent releases of OS X Cocoa and Windows, coalescing timers are used to further
+ save power.
+ Bug #1086.
+ Bug #1532.
+
+ -
+ Explicit tab stops may be set for each line.
+
+ -
+ On Windows and GTK+, when using Korean input methods, IME composition is moved from a
+ separate window into the Scintilla window.
+
+ -
+ SciTE adds a "Clean" command to the "Tools" menu which is meant to be bound to a command like
+ "make clean".
+
+ -
+ Lexer added for Windows registry files.
+
+ -
+ HTML lexer fixes a crash with SGML after a Mako comment.
+ Bug #1622.
+
+ -
+ KiXtart lexer adds a block comment state.
+ Feature #1053.
+
+ -
+ Matlab lexer fixes transpose operations like "X{1}'".
+ Bug #1629.
+
+ -
+ Ruby lexer fixes bugs with the syntax of symbols including allowing a symbol to end with '?'.
+ Bug #1627.
+
+ -
+ Rust lexer supports byte string literals, naked CR can be escaped in strings, and files starting with
+ "#![" are not treated as starting with a hashbang comment.
+ Feature #1063.
+
+ -
+ Bug fixed where style data was stale when deleting a rectangular selection.
+
+ -
+ Bug fixed where annotations disappeared when SCI_CLEARDOCUMENTSTYLE called.
+
+ -
+ Bug fixed where selection not redrawn after SCI_DELWORDRIGHT.
+ Bug #1633.
+
+ -
+ Change the function prototypes to be complete for functions exported as "C".
+ Bug #1618.
+
+ -
+ Fix a memory leak on GTK+ with autocompletion lists.
+ Bug #1638.
+
+ -
+ On GTK+, use the full character width for the overstrike caret for multibyte characters.
+
+ -
+ On Qt, set list icon size to largest icon. Add padding on OS X.
+ Bug #1634.
+
+ -
+ On Qt, fix building on FreeBSD 9.2.
+ Bug #1635.
+
+ -
+ On Qt, add a get_character method on the document.
+ Feature #1064.
+
+ -
+ On Qt, add SCI_* for methods to ScintillaConstants.py.
+ Feature #1065.
+
+ -
+ SciTE on GTK+ crash fixed with Insert Abbreviation command.
+
+ -
+ For SciTE with read-only files and are.you.sure=0 reenable choice to save to another
+ location when using Save or Close commands.
+
+ -
+ Fix SciTE bug where toggle bookmark did not work after multiple lines with bookmarks merged.
+ Bug #1617.
+
+
+
+
+ -
+ Released 3 July 2014.
+
+ -
+ Style byte indicators removed. They were deprecated in 2007. Standard indicators should be used instead.
+ Some elements used by lexers no longer take number of bits or mask arguments so lexers may need to be
+ updated for LexAccessor::StartAt, LexAccessor::SetFlags (removed), LexerModule::LexerModule.
+
+ -
+ When multiple selections are active, autocompletion text may be inserted at each selection with new
+ SCI_AUTOCSETMULTI method.
+
+ -
+ C++ lexer fixes crash for "#define x(".
+ Bug #1614.
+
+ -
+ C++ lexer fixes raw string recognition so that R"xxx(blah)xxx" is styled as SCE_C_STRINGRAW.
+
+ -
+ The Postscript lexer no longer marks token edges with indicators as this used style byte indicators.
+
+ -
+ The Scriptol lexer no longer displays indicators for poor indentation as this used style byte indicators.
+
+ -
+ TCL lexer fixes names of keyword sets.
+ Bug #1615.
+
+ -
+ Shell lexer fixes fold matching problem caused by "<<<".
+ Bug #1605.
+
+ -
+ Fix bug where indicators were not removed when fold highlighting on.
+ Bug #1604.
+
+ -
+ Fix bug on Cocoa where emoji were treated as being zero width.
+
+ -
+ Fix crash on GTK+ with Ubuntu 12.04 and overlay scroll bars.
+
+ -
+ Avoid creating a Cairo context when measuring text on GTK+ as future versions of GTK+
+ may prohibit calling gdk_cairo_create except inside drawing handlers. This prohibition may
+ be required on Wayland.
+
+ -
+ On Cocoa, the registerNotifyCallback method is now marked as deprecated so client code that
+ uses it will display an error message.
+ Client code should use the delegate mechanism or subclassing instead.
+ The method will be removed in the next version.
+
+ -
+ On Cocoa, package Scintilla more in compliance with platform conventions.
+ Only publish public headers in the framework headers directory.
+ Only define the Scintilla namespace in Scintilla.h when compiling as C++.
+ Use the Cocoa NS_ENUM and NS_OPTIONS macros for exposed enumerations.
+ Hide internal methods from public headers.
+ These changes are aimed towards publishing Scintilla as a module which will allow it to
+ be used from the Swift programming language, although more changes will be needed here.
+
+ -
+ Fix crash in SciTE when stream comment performed at line end.
+ Bug #1610.
+
+ -
+ For SciTE on Windows, display error message when common dialogs fail.
+ Bug #156.
+
+ -
+ For SciTE on GTK+ fix bug with initialisation of toggle buttons in find and replace strips.
+ Bug #1612.
+
+
+
+
+ -
+ Released 27 May 2014.
+
+ -
+ Fix hangs and crashes in DLL at shutdown on Windows when using Direct2D.
+
+
+
+
+ -
+ Released 22 May 2014.
+
+ -
+ Insertions can be filtered or modified by calling SCI_CHANGEINSERTION inside a handler for
+ SC_MOD_INSERTCHECK.
+
+ -
+ DMIS lexer added. DMIS is a language for coordinate measuring machines.
+ Feature #1049.
+
+ -
+ Line state may be displayed in the line number margin to aid in debugging lexing and folding with
+ SC_FOLDFLAG_LINESTATE (128).
+
+ -
+ C++ lexer understands more preprocessor statements. #if defined SYMBOL is understood.
+ Some macros with arguments can be understood and these may be predefined in keyword set 4
+ (keywords5 for SciTE)
+ with syntax similar to CHECKVERSION(x)=(x<3).
+ Feature #1051.
+
+ -
+ C++ lexer can highlight task marker keywords in comments as SCE_C_TASKMARKER.
+
+ -
+ C++ lexer can optionally highlight escape sequences in strings as SCE_C_ESCAPESEQUENCE.
+
+ -
+ C++ lexer supports Go back quoted raw string literals with lexer.cpp.backquoted.strings option.
+ Feature #1047.
+
+ -
+ SciTE performs word and search match highlighting as an idle task to improve interactivity
+ and allow use of these features on large files.
+
+ -
+ Bug fixed on Cocoa where previous caret lines were visible.
+ Bug #1593.
+
+ -
+ Bug fixed where caret remained invisible when period set to 0.
+ Bug #1592.
+
+ -
+ Fixed display flashing when scrolling with GTK+ 3.10.
+ Bug #1567.
+
+ -
+ Fixed calls and constants deprecated in GTK+ 3.10.
+
+ -
+ Fixed bug on Windows where WM_GETTEXT did not provide data in UTF-16 for Unicode window.
+ Bug #685.
+
+ -
+ For SciTE, protect access to variables used by threads with a mutex to prevent data races.
+
+ -
+ For SciTE on GTK+ fix thread object leaks.
+ Display the version of GTK+ compiled against in the about box.
+
+ -
+ For SciTE on GTK+ 3.10, fix the size of the tab bar's content and use
+ freedesktop.org standard icon names where possible.
+
+ -
+ For SciTE on Windows, fix bug where invoking help resubmitted the
+ running program.
+ Bug #272.
+
+ -
+ SciTE's highlight current word feature no longer matches the selection when it contains space.
+
+ -
+ For building SciTE in Visual C++, the win\SciTE.vcxproj project file should be used.
+ The boundscheck directory and its project and solution files have been removed.
+
+
+
+
+ -
+ Released 1 April 2014.
+
+ -
+ Display Unicode line ends as [LS], [PS], and [NEL] blobs.
+
+ -
+ Bug fixed where cursor down failed on wrapped lines.
+ Bug #1585.
+
+ -
+ Caret positioning changed a little to appear inside characters less often by
+ rounding the caret position to the pixel grid instead of truncating.
+ Bug #1588.
+
+ -
+ Bug fixed where automatic indentation wrong when caret in virtual space.
+ Bug #1586.
+
+ -
+ Bug fixed on Windows where WM_LBUTTONDBLCLK was no longer sent to window.
+ Bug #1587.
+
+ -
+ Bug fixed with SciTE on Windows XP where black stripes appeared inside the find and
+ replace strips.
+
+ -
+ Crash fixed in SciTE with recursive properties files.
+ Bug #1507.
+
+ -
+ Bug fixed with SciTE where Ctrl+E before an unmatched end brace jumps to file start.
+ Bug #315.
+
+ -
+ Fixed scrolling on Cocoa to avoid display glitches and be smoother.
+
+ -
+ Fixed crash on Cocoa when character composition used when autocompletion list active.
+
+
+
+
+ -
+ Released 22 March 2014.
+
+ -
+ The Unicode line ends and substyles features added as provisional in 3.2.5 are now finalised.
+ There are now no provisional features.
+
+ -
+ Added wrap mode SC_WRAP_WHITESPACE which only wraps on whitespace, not on style changes.
+
+ -
+ SciTE find and replace strips can perform incremental searching and temporary highlighting of all
+ matches with the find.strip.incremental, replace.strip.incremental, and find.indicator.incremental settings.
+
+ -
+ SciTE default settings changed to use strips for find and replace and to draw with Direct2D and
+ DirectWrite on Windows.
+
+ -
+ SciTE on Windows scales image buttons on the find and replace strips to match the current system scale factor.
+
+ -
+ Additional assembler lexer variant As(SCLEX_AS) for Unix assembly code which uses '#' for comments and
+ ';' to separate statements.
+
+ -
+ Fix Coffeescript lexer for keyword style extending past end of word.
+ Also fixes styling 0...myArray.length all as a number.
+ Bug #1583.
+
+ -
+ Fix crashes and other bugs in Fortran folder by removing folding of do-label constructs.
+
+ -
+ Deleting a whole line deletes the annotations on that line instead of the annotations on the next line.
+ Bug #1577.
+
+ -
+ Changed position of tall calltips to prefer lower half of screen to cut off end instead of start.
+
+ -
+ Fix Qt bug where double click treated as triple click.
+ Bug #1575.
+
+ -
+ On Qt, selecting an item in an autocompletion list that is not currently visible positions it at the top.
+
+ -
+ Fix bug on Windows when resizing autocompletion list with only short strings caused the list to move.
+
+ -
+ On Cocoa reduce scrollable height by one line to fix bugs with moving caret
+ up or down.
+
+ -
+ On Cocoa fix calltips which did not appear when they were created in an off-screen position.
+
+
+
+
+ -
+ Released 31 January 2014.
+
+ -
+ Fix 3.3.8 bug where external lexers became inaccessible.
+ Bug #1574.
+
+
+
+
+ -
+ Released 28 January 2014.
+
+ -
+ DropSelectionN API added to drop a selection from a multiple selection.
+
+ -
+ CallTipSetPosStart API added to change the position at which backspacing removes the calltip.
+
+ -
+ SC_MARK_BOOKMARK marker symbol added which looks like bookmark ribbons used in
+ book reading applications.
+
+ -
+ Basic lexer highlights hex, octal, and binary numbers in FreeBASIC which use the prefixes
+ &h, &o and &b respectively.
+ Feature #1041.
+
+ -
+ C++ lexer fixes bug where keyword followed immediately by quoted string continued
+ keyword style.
+ Bug #1564.
+
+ -
+ Matlab lexer treats '!' differently for Matlab and Octave languages.
+ Bug #1571.
+
+ -
+ Rust lexer improved with nested comments, more compliant doc-comment detection,
+ octal literals, NUL characters treated as valid, and highlighting of raw string literals and float literals fixed.
+ Feature #1038.
+ Bug #1570.
+
+ -
+ On Qt expose the EOLMode on the document object.
+
+ -
+ Fix hotspot clicking where area was off by half a character width.
+ Bug #1562.
+
+ -
+ Tweaked scroll positioning by either 2 pixels or 1 pixel when caret is at left or right of view
+ to ensure caret is inside visible area.
+
+ -
+ Send SCN_UPDATEUI with SC_UPDATE_SELECTION for Shift+Tab inside text.
+
+ -
+ On Windows update the system caret position when scrolling to help screen readers
+ see the scroll quickly.
+
+ -
+ On Cocoa, GTK+, and Windows/Direct2D draw circles more accurately so that
+ circular folding margin markers appear circular, of consistent size, and centred.
+ Make SC_MARK_ARROWS drawing more even.
+ Fix corners of SC_MARK_ROUNDRECT with Direct2D to be similar to other platforms.
+
+ -
+ SciTE uses a bookmark ribbon symbol for bookmarks as it scales better to higher resolutions
+ than the previous blue gem bitmap.
+
+ -
+ SciTE will change the width of margins while running when the margin.width and fold.margin.width
+ properties are changed.
+
+ -
+ SciTE on Windows can display a larger tool bar with the toolbar.large property.
+
+ -
+ SciTE displays a warning message when asked to open a directory.
+ Bug #1568.
+
+
+
+
+ -
+ Released 12 December 2013.
+
+ -
+ Lexer added for DMAP language.
+ Feature #1026.
+
+ -
+ Basic lexer supports multiline comments in FreeBASIC.
+ Feature #1023.
+
+ -
+ Bash lexer allows '#' inside words..
+ Bug #1553.
+
+ -
+ C++ lexer recognizes C++11 user-defined literals and applies lexical class SCE_C_USERLITERAL.
+
+ -
+ C++ lexer allows single quote characters as digit separators in numeric literals like 123'456 as this is
+ included in C++14.
+
+ -
+ C++ lexer fixes bug with #include statements without " or > terminating filename.
+ Bug #1538.
+
+ -
+ C++ lexer fixes split of Doxygen keywords @code{.fileExtension} and @param[in,out].
+ Bug #1551.
+
+ -
+ C++ lexer styles Doxygen keywords at end of document.
+
+ -
+ Cmake lexer fixes bug with empty comments.
+ Bug #1550.
+
+ -
+ Fortran folder improved. Treats "else" as fold header.
+ Feature #962.
+
+ -
+ Fix bug with adjacent instances of the same indicator with different values where only the first was drawn.
+ Bug #1560.
+
+ -
+ For DirectWrite, use the GDI ClearType gamma value for SC_EFF_QUALITY_LCD_OPTIMIZED as
+ this results in text that is similar in colour intensity to GDI.
+ For the duller default DirectWrite ClearType text appearance, use SC_EFF_QUALITY_DEFAULT.
+ Feature #887.
+
+ -
+ Fix another problem with drawing on Windows with Direct2D when returning from lock screen.
+ The whole window is redrawn as just redrawing the initially required area left other areas black.
+
+ -
+ When scroll width is tracked, take width of annotation lines into account.
+
+ -
+ For Cocoa on OS X 10.9, responsive scrolling is supported.
+
+ -
+ On Cocoa, apply font quality setting to line numbers.
+ Bug #1544.
+
+ -
+ On Cocoa, clicking in margin now sets focus.
+ Bug #1542.
+
+ -
+ On Cocoa, correct cursor displayed in margin after showing dialog.
+
+ -
+ On Cocoa, multipaste mode now works.
+ Bug #1541.
+
+ -
+ On GTK+, chain up to superclass finalize so that all finalization is performed.
+ Bug #1549.
+
+ -
+ On GTK+, fix horizontal scroll bar range to not be double the needed width.
+ Bug #1546.
+
+ -
+ On OS X GTK+, report control key as SCI_META for mouse down events.
+
+ -
+ On Qt, bug fixed with drawing of scrollbars, where previous contents were not drawn over with some
+ themes.
+
+ -
+ On Qt, bug fixed with finding monitor rectangle which could lead to autocomplete showing at wrong location.
+
+ -
+ SciTE fix for multiple message boxes when failing to save a file with save.on.deactivate.
+ Bug #1540.
+
+ -
+ SciTE on GTK+ fixes SIGCHLD handling so that Lua scripts can determine the exit status of processes
+ they start.
+ Bug #1557.
+
+ -
+ SciTE on Windows XP fixes bad display of find and replace values when using strips.
+
+
+
+
+ -
+ Released 15 October 2013.
+
+ -
+ Added functions to help convert between substyles and base styles and between secondary and primary styles.
+ SCI_GETSTYLEFROMSUBSTYLE finds the base style of substyles.
+ Can be used to treat all substyles of a style equivalent to that style.
+ SCI_GETPRIMARYSTYLEFROMSTYLE finds the primary style of secondary styles.
+ StyleFromSubStyle and PrimaryStyleFromStyle methods were added to ILexerWithSubStyles so each lexer can implement these.
+
+ -
+ Lexer added for Rust language.
+ Feature #1024.
+
+ -
+ Avoid false matches in errorlist lexer which is used for the SciTE output pane
+ by stricter checking of ctags lines.
+
+ -
+ Perl lexer fixes bugs with multi-byte characters, including in HEREDOCs and PODs.
+ Bug #1528.
+
+ -
+ SQL folder folds 'create view' statements.
+ Feature #1020.
+
+ -
+ Visual Prolog lexer updated with better support for string literals and Unicode.
+ Feature #1025.
+
+ -
+ For SCI_SETIDENTIFIERS, \t, \r, and \n are allowed as well as space between identifiers.
+ Bug #1521.
+
+ -
+ Gaining and losing focus is now reported as a notification with the code set to SCN_FOCUSIN
+ or SCN_FOCUSOUT.
+ This allows clients to uniformly use notifications instead of commands.
+ Since there is no longer a need for commands they will be deprecated in a future version.
+ Clients should switch any code that currently uses SCEN_SETFOCUS or SCEN_KILLFOCUS.
+
+ -
+ On Cocoa, clients should use the delegate mechanism or subclass ScintillaView in preference
+ to registerNotifyCallback: which will be deprecated in the future.
+
+ -
+ On Cocoa, the ScintillaView.h header hides internal implementation details from Platform.h and ScintillaCocoa.h.
+ InnerView was renamed to SCIContentView and MarginView was renamed to SCIMarginView.
+ dealloc removed from @interface.
+
+ -
+ On Cocoa, clients may customize SCIContentView by subclassing both SCIContentView and ScintillaView
+ and implementing the contentViewClass class method on the ScintillaView subclass to return the class of
+ the SCIContentView subclass.
+
+ -
+ On Cocoa, fixed appearance of alpha rectangles to use specified alpha and colour for outline as well as corner size.
+ This makes INDIC_STRAIGHTBOX and INDIC_ROUNDBOX look correct.
+
+ -
+ On Cocoa, memory leak fixed for MarginView.
+
+ -
+ On Cocoa, make drag and drop work when destination view is empty.
+ Bug #1534.
+
+ -
+ On Cocoa, drag image fixed when view scrolled.
+
+ -
+ On Cocoa, SCI_POSITIONFROMPOINTCLOSE fixed when view scrolled.
+ Feature #1021.
+
+ -
+ On Cocoa, don't send selection change notification when scrolling.
+ Bug #1522.
+
+ -
+ On Qt, turn off idle events on destruction to prevent repeatedly calling idle.
+
+ -
+ Qt bindings in ScintillaEdit changed to use signed first parameter.
+
+ -
+ Compilation errors fixed on Windows and GTK+ with SCI_NAMESPACE.
+
+ -
+ On Windows, building with gcc will check if Direct2D headers are available and enable Direct2D if they are.
+
+ -
+ Avoid attempts to redraw empty areas when lexing beyond the currently visible lines.
+
+ -
+ Control more attributes of indicators in SciTE with find.mark.indicator and highlight.current.word.indicator
+ properties.
+
+ -
+ Fix SciTE bug with buffers becoming read-only.
+ Bug #1525.
+
+ -
+ Fix linking SciTE on non-Linux Unix systems with GNU toolchain by linking to libdl.
+ Bug #1523.
+
+ -
+ On Windows, SciTE's Incremental Search displays match failures by changing the background colour
+ instead of not adding the character that caused failure.
+
+ -
+ Fix SciTE on GTK+ 3.x incremental search to change foreground colour when no match as
+ changing background colour is difficult.
+
+
+
+
+ -
+ Released 31 August 2013.
+
+ -
+ Characters may be represented by strings.
+ In Unicode mode C1 control characters are represented by their mnemonics.
+
+ -
+ Added SCI_POSITIONRELATIVE to optimize navigation by character.
+
+ -
+ Option to allow mouse selection to switch to rectangular by pressing Alt after start of gesture.
+ Feature #1007.
+
+ -
+ Lexer added for KVIrc script.
+ Feature #1008.
+
+ -
+ Bash lexer fixed quoted HereDoc delimiters.
+ Bug #1500.
+
+ -
+ MS SQL lexer fixed ';' to appear as an operator.
+ Bug #1509.
+
+ -
+ Structured Text lexer fixed styling of enumeration members.
+ Bug #1508.
+
+ -
+ Fixed bug with horizontal caret position when margin changed.
+ Bug #1512.
+
+ -
+ Fixed bug on Cocoa where coordinates were relative to text subview instead of whole view.
+
+ -
+ Ensure selection redrawn correctly in two cases.
+ When switching from stream to rectangular selection with Alt+Shift+Up.
+ When reducing the range of an additional selection by moving mouse up.
+ Feature #1007.
+
+ -
+ Copy and paste of rectangular selections compatible with Borland Delphi IDE on Windows.
+ Feature #1002.
+ Bug #1513.
+
+ -
+ Initialize extended styles to the default style.
+
+ -
+ On Windows, fix painting on an explicit HDC when first paint attempt abandoned.
+
+ -
+ Qt bindings in ScintillaEdit made to work on 64-bit Unix systems.
+
+ -
+ Easier access to printing on Qt with formatRange method.
+
+ -
+ Fixed SciTE failure to save initial buffer in single buffer mode.
+ Bug #1339.
+
+ -
+ Fixed compilation problem with Visual C++ in non-English locales.
+ Bug #1506.
+
+ -
+ Disable Direct2D when compiling with MinGW gcc on Windows because of changes in the recent MinGW release.
+
+ -
+ SciTE crash fixed for negative line.margin.width.
+ Bug #1504.
+
+ -
+ SciTE fix for infinite dialog boxes when failing to automatically save a file.
+ Bug #1503.
+
+ -
+ SciTE settings buffered.draw, two.phase.draw, and technology are applied to the
+ output pane as well as the edit pane.
+
+
@@ -475,7 +1717,7 @@
CoffeeScript lexer fixes a bug with comment blocks.
- Feature #1495.
+ Bug #1495
ECL lexer regular expression code fixed.
@@ -980,7 +2222,7 @@
On Cocoa, remove incorrect setting of save point when reading information through 'string' and 'selectedString'.
- On Cocoa, fix incorrect memory managment of infoBar.
+ On Cocoa, fix incorrect memory management of infoBar.
On GTK+ 3 Ubuntu, fix crash when drawing margin.
@@ -1263,7 +2505,7 @@
UTF-8 validity is checked more stringently and consistently. All 66 non-characters are now treated as invalid.
- HTML lexer bug fixed with inconsistant highlighting for PHP when attribute on separate line from tag.
+ HTML lexer bug fixed with inconsistent highlighting for PHP when attribute on separate line from tag.
Bug #3520027.
@@ -3523,7 +4765,7 @@
SciTE retains selection range when performing a replace selection command. Feature #2339160.
- SciTE definition of word characters fixed to match documentaiton. Bug #2464531.
+ SciTE definition of word characters fixed to match documentation. Bug #2464531.
SciTE on GTK+ performing Search or Replace when dialog already shown now brings dialog to foreground.
@@ -7276,7 +8518,7 @@
Experimental line wrapping.
- Currently has performance and appearence problems.
+ Currently has performance and appearance problems.
@@ -9260,4 +10502,3 @@