Update the bundled Scintilla version to 3.4.1.
There are relatively few changes, see Scintilla changelog at http://www.scintilla.org/ScintillaHistory.html Closes #16182. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@78042 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -68,7 +68,7 @@ All (GUI):
|
|||||||
- Optimized wxRTC insertion and deletion when floating objects are present.
|
- Optimized wxRTC insertion and deletion when floating objects are present.
|
||||||
- Added on-demand image loading option to wxRTC.
|
- Added on-demand image loading option to wxRTC.
|
||||||
- Add wxFont::GetBaseFont() (Melroy Tellis).
|
- Add wxFont::GetBaseFont() (Melroy Tellis).
|
||||||
- Update included Scintilla to version 3.3.9 (Christian Walther).
|
- Update included Scintilla to version 3.4.1 (Christian Walther, Heyoupeng).
|
||||||
- Add wxStyledTextCtrl copy/paste text events (Christian Walther).
|
- Add wxStyledTextCtrl copy/paste text events (Christian Walther).
|
||||||
- Improve RTL support in wxStyledTextCtrl (Zane U. Ji).
|
- Improve RTL support in wxStyledTextCtrl (Zane U. Ji).
|
||||||
- Add support for loading old V1 BMP files to wxImage (Artur Wieczorek).
|
- Add support for loading old V1 BMP files to wxImage (Artur Wieczorek).
|
||||||
|
@@ -239,6 +239,7 @@ class WXDLLIMPEXP_FWD_CORE wxScrollBar;
|
|||||||
#define wxSTC_WRAP_NONE 0
|
#define wxSTC_WRAP_NONE 0
|
||||||
#define wxSTC_WRAP_WORD 1
|
#define wxSTC_WRAP_WORD 1
|
||||||
#define wxSTC_WRAP_CHAR 2
|
#define wxSTC_WRAP_CHAR 2
|
||||||
|
#define wxSTC_WRAP_WHITESPACE 3
|
||||||
#define wxSTC_WRAPVISUALFLAG_NONE 0x0000
|
#define wxSTC_WRAPVISUALFLAG_NONE 0x0000
|
||||||
#define wxSTC_WRAPVISUALFLAG_END 0x0001
|
#define wxSTC_WRAPVISUALFLAG_END 0x0001
|
||||||
#define wxSTC_WRAPVISUALFLAG_START 0x0002
|
#define wxSTC_WRAPVISUALFLAG_START 0x0002
|
||||||
@@ -332,6 +333,12 @@ class WXDLLIMPEXP_FWD_CORE wxScrollBar;
|
|||||||
#define wxSTC_TECHNOLOGY_DEFAULT 0
|
#define wxSTC_TECHNOLOGY_DEFAULT 0
|
||||||
#define wxSTC_TECHNOLOGY_DIRECTWRITE 1
|
#define wxSTC_TECHNOLOGY_DIRECTWRITE 1
|
||||||
|
|
||||||
|
/// Line end types which may be used in addition to LF, CR, and CRLF
|
||||||
|
/// SC_LINE_END_TYPE_UNICODE includes U+2028 Line Separator,
|
||||||
|
/// U+2029 Paragraph Separator, and U+0085 Next Line
|
||||||
|
#define wxSTC_LINE_END_TYPE_DEFAULT 0
|
||||||
|
#define wxSTC_LINE_END_TYPE_UNICODE 1
|
||||||
|
|
||||||
/// Maximum value of keywordSet parameter of SetKeyWords.
|
/// Maximum value of keywordSet parameter of SetKeyWords.
|
||||||
#define wxSTC_KEYWORDSET_MAX 8
|
#define wxSTC_KEYWORDSET_MAX 8
|
||||||
#define wxSTC_TYPE_BOOLEAN 0
|
#define wxSTC_TYPE_BOOLEAN 0
|
||||||
@@ -510,6 +517,7 @@ class WXDLLIMPEXP_FWD_CORE wxScrollBar;
|
|||||||
#define wxSTC_LEX_KVIRC 110
|
#define wxSTC_LEX_KVIRC 110
|
||||||
#define wxSTC_LEX_RUST 111
|
#define wxSTC_LEX_RUST 111
|
||||||
#define wxSTC_LEX_DMAP 112
|
#define wxSTC_LEX_DMAP 112
|
||||||
|
#define wxSTC_LEX_AS 113
|
||||||
|
|
||||||
/// When a lexer specifies its language as SCLEX_AUTOMATIC it receives a
|
/// When a lexer specifies its language as SCLEX_AUTOMATIC it receives a
|
||||||
/// value assigned in sequence from SCLEX_AUTOMATIC+1.
|
/// value assigned in sequence from SCLEX_AUTOMATIC+1.
|
||||||
@@ -1107,7 +1115,7 @@ class WXDLLIMPEXP_FWD_CORE wxScrollBar;
|
|||||||
#define wxSTC_SCRIPTOL_CLASSNAME 14
|
#define wxSTC_SCRIPTOL_CLASSNAME 14
|
||||||
#define wxSTC_SCRIPTOL_PREPROCESSOR 15
|
#define wxSTC_SCRIPTOL_PREPROCESSOR 15
|
||||||
|
|
||||||
/// Lexical states for SCLEX_ASM
|
/// Lexical states for SCLEX_ASM, SCLEX_AS
|
||||||
#define wxSTC_ASM_DEFAULT 0
|
#define wxSTC_ASM_DEFAULT 0
|
||||||
#define wxSTC_ASM_COMMENT 1
|
#define wxSTC_ASM_COMMENT 1
|
||||||
#define wxSTC_ASM_NUMBER 2
|
#define wxSTC_ASM_NUMBER 2
|
||||||
@@ -2293,14 +2301,6 @@ class WXDLLIMPEXP_FWD_CORE wxScrollBar;
|
|||||||
#define wxSTC_DMAP_WORD2 9
|
#define wxSTC_DMAP_WORD2 9
|
||||||
#define wxSTC_DMAP_WORD3 10
|
#define wxSTC_DMAP_WORD3 10
|
||||||
|
|
||||||
/// Events
|
|
||||||
/// GTK+ Specific to work around focus and accelerator problems:
|
|
||||||
/// Line end types which may be used in addition to LF, CR, and CRLF
|
|
||||||
/// SC_LINE_END_TYPE_UNICODE includes U+2028 Line Separator,
|
|
||||||
/// U+2029 Paragraph Separator, and U+0085 Next Line
|
|
||||||
#define wxSTC_LINE_END_TYPE_DEFAULT 0
|
|
||||||
#define wxSTC_LINE_END_TYPE_UNICODE 1
|
|
||||||
|
|
||||||
//}}}
|
//}}}
|
||||||
//----------------------------------------------------------------------
|
//----------------------------------------------------------------------
|
||||||
|
|
||||||
@@ -2920,7 +2920,7 @@ public:
|
|||||||
// Get is a style mixed case, or to force upper or lower case.
|
// Get is a style mixed case, or to force upper or lower case.
|
||||||
int StyleGetCase(int style) const;
|
int StyleGetCase(int style) const;
|
||||||
|
|
||||||
// Get the character set of the font in a style.
|
// Get the character get of the font in a style.
|
||||||
int StyleGetCharacterSet(int style) const;
|
int StyleGetCharacterSet(int style) const;
|
||||||
|
|
||||||
// Get is a style visible or not.
|
// Get is a style visible or not.
|
||||||
@@ -3610,7 +3610,7 @@ public:
|
|||||||
// Append a string to the end of the document without changing the selection.
|
// Append a string to the end of the document without changing the selection.
|
||||||
void AppendText(const wxString& text);
|
void AppendText(const wxString& text);
|
||||||
|
|
||||||
// Is drawing done in two phases with backgrounds drawn before foregrounds?
|
// Is drawing done in two phases with backgrounds drawn before faoregrounds?
|
||||||
bool GetTwoPhaseDraw() const;
|
bool GetTwoPhaseDraw() const;
|
||||||
|
|
||||||
// In twoPhaseDraw mode, drawing is performed in two phases, first the background
|
// In twoPhaseDraw mode, drawing is performed in two phases, first the background
|
||||||
@@ -4526,10 +4526,19 @@ public:
|
|||||||
// Sets the caret line to always visible.
|
// Sets the caret line to always visible.
|
||||||
void SetCaretLineVisibleAlways(bool alwaysVisible);
|
void SetCaretLineVisibleAlways(bool alwaysVisible);
|
||||||
|
|
||||||
|
// Set the line end types that the application wants to use. May not be used if incompatible with lexer or encoding.
|
||||||
|
void SetLineEndTypesAllowed(int lineEndBitSet);
|
||||||
|
|
||||||
|
// Get the line end types currently allowed.
|
||||||
|
int GetLineEndTypesAllowed() const;
|
||||||
|
|
||||||
|
// Get the line end types currently recognised. May be a subset of the allowed types due to lexer limitation.
|
||||||
|
int GetLineEndTypesActive() const;
|
||||||
|
|
||||||
// Set the way a character is drawn.
|
// Set the way a character is drawn.
|
||||||
void SetRepresentation(const wxString& encodedCharacter, const wxString& representation);
|
void SetRepresentation(const wxString& encodedCharacter, const wxString& representation);
|
||||||
|
|
||||||
// Get the way a character is drawn.
|
// Set the way a character is drawn.
|
||||||
wxString GetRepresentation(const wxString& encodedCharacter) const;
|
wxString GetRepresentation(const wxString& encodedCharacter) const;
|
||||||
|
|
||||||
// Remove a character representation.
|
// Remove a character representation.
|
||||||
@@ -4588,15 +4597,6 @@ public:
|
|||||||
// Retrieve a '\n' separated list of descriptions of the keyword sets understood by the current lexer.
|
// Retrieve a '\n' separated list of descriptions of the keyword sets understood by the current lexer.
|
||||||
wxString DescribeKeyWordSets() const;
|
wxString DescribeKeyWordSets() const;
|
||||||
|
|
||||||
// Set the line end types that the application wants to use. May not be used if incompatible with lexer or encoding.
|
|
||||||
void SetLineEndTypesAllowed(int lineEndBitSet);
|
|
||||||
|
|
||||||
// Get the line end types currently allowed.
|
|
||||||
int GetLineEndTypesAllowed() const;
|
|
||||||
|
|
||||||
// Get the line end types currently recognised. May be a subset of the allowed types due to lexer limitation.
|
|
||||||
int GetLineEndTypesActive() const;
|
|
||||||
|
|
||||||
// Bit set of LineEndType enumertion for which line ends beyond the standard
|
// Bit set of LineEndType enumertion for which line ends beyond the standard
|
||||||
// LF, CR, and CRLF are supported by the lexer.
|
// LF, CR, and CRLF are supported by the lexer.
|
||||||
int GetLineEndTypesSupported() const;
|
int GetLineEndTypesSupported() const;
|
||||||
|
@@ -195,6 +195,7 @@
|
|||||||
#define wxSTC_WRAP_NONE 0
|
#define wxSTC_WRAP_NONE 0
|
||||||
#define wxSTC_WRAP_WORD 1
|
#define wxSTC_WRAP_WORD 1
|
||||||
#define wxSTC_WRAP_CHAR 2
|
#define wxSTC_WRAP_CHAR 2
|
||||||
|
#define wxSTC_WRAP_WHITESPACE 3
|
||||||
#define wxSTC_WRAPVISUALFLAG_NONE 0x0000
|
#define wxSTC_WRAPVISUALFLAG_NONE 0x0000
|
||||||
#define wxSTC_WRAPVISUALFLAG_END 0x0001
|
#define wxSTC_WRAPVISUALFLAG_END 0x0001
|
||||||
#define wxSTC_WRAPVISUALFLAG_START 0x0002
|
#define wxSTC_WRAPVISUALFLAG_START 0x0002
|
||||||
@@ -288,6 +289,12 @@
|
|||||||
#define wxSTC_TECHNOLOGY_DEFAULT 0
|
#define wxSTC_TECHNOLOGY_DEFAULT 0
|
||||||
#define wxSTC_TECHNOLOGY_DIRECTWRITE 1
|
#define wxSTC_TECHNOLOGY_DIRECTWRITE 1
|
||||||
|
|
||||||
|
/// Line end types which may be used in addition to LF, CR, and CRLF
|
||||||
|
/// SC_LINE_END_TYPE_UNICODE includes U+2028 Line Separator,
|
||||||
|
/// U+2029 Paragraph Separator, and U+0085 Next Line
|
||||||
|
#define wxSTC_LINE_END_TYPE_DEFAULT 0
|
||||||
|
#define wxSTC_LINE_END_TYPE_UNICODE 1
|
||||||
|
|
||||||
/// Maximum value of keywordSet parameter of SetKeyWords.
|
/// Maximum value of keywordSet parameter of SetKeyWords.
|
||||||
#define wxSTC_KEYWORDSET_MAX 8
|
#define wxSTC_KEYWORDSET_MAX 8
|
||||||
#define wxSTC_TYPE_BOOLEAN 0
|
#define wxSTC_TYPE_BOOLEAN 0
|
||||||
@@ -466,6 +473,7 @@
|
|||||||
#define wxSTC_LEX_KVIRC 110
|
#define wxSTC_LEX_KVIRC 110
|
||||||
#define wxSTC_LEX_RUST 111
|
#define wxSTC_LEX_RUST 111
|
||||||
#define wxSTC_LEX_DMAP 112
|
#define wxSTC_LEX_DMAP 112
|
||||||
|
#define wxSTC_LEX_AS 113
|
||||||
|
|
||||||
/// When a lexer specifies its language as SCLEX_AUTOMATIC it receives a
|
/// When a lexer specifies its language as SCLEX_AUTOMATIC it receives a
|
||||||
/// value assigned in sequence from SCLEX_AUTOMATIC+1.
|
/// value assigned in sequence from SCLEX_AUTOMATIC+1.
|
||||||
@@ -1063,7 +1071,7 @@
|
|||||||
#define wxSTC_SCRIPTOL_CLASSNAME 14
|
#define wxSTC_SCRIPTOL_CLASSNAME 14
|
||||||
#define wxSTC_SCRIPTOL_PREPROCESSOR 15
|
#define wxSTC_SCRIPTOL_PREPROCESSOR 15
|
||||||
|
|
||||||
/// Lexical states for SCLEX_ASM
|
/// Lexical states for SCLEX_ASM, SCLEX_AS
|
||||||
#define wxSTC_ASM_DEFAULT 0
|
#define wxSTC_ASM_DEFAULT 0
|
||||||
#define wxSTC_ASM_COMMENT 1
|
#define wxSTC_ASM_COMMENT 1
|
||||||
#define wxSTC_ASM_NUMBER 2
|
#define wxSTC_ASM_NUMBER 2
|
||||||
@@ -2249,14 +2257,6 @@
|
|||||||
#define wxSTC_DMAP_WORD2 9
|
#define wxSTC_DMAP_WORD2 9
|
||||||
#define wxSTC_DMAP_WORD3 10
|
#define wxSTC_DMAP_WORD3 10
|
||||||
|
|
||||||
/// Events
|
|
||||||
/// GTK+ Specific to work around focus and accelerator problems:
|
|
||||||
/// Line end types which may be used in addition to LF, CR, and CRLF
|
|
||||||
/// SC_LINE_END_TYPE_UNICODE includes U+2028 Line Separator,
|
|
||||||
/// U+2029 Paragraph Separator, and U+0085 Next Line
|
|
||||||
#define wxSTC_LINE_END_TYPE_DEFAULT 0
|
|
||||||
#define wxSTC_LINE_END_TYPE_UNICODE 1
|
|
||||||
|
|
||||||
//}}}
|
//}}}
|
||||||
|
|
||||||
// Commands that can be bound to keystrokes {{{
|
// Commands that can be bound to keystrokes {{{
|
||||||
@@ -3117,7 +3117,7 @@ public:
|
|||||||
int StyleGetCase(int style) const;
|
int StyleGetCase(int style) const;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Get the character set of the font in a style.
|
Get the character get of the font in a style.
|
||||||
*/
|
*/
|
||||||
int StyleGetCharacterSet(int style) const;
|
int StyleGetCharacterSet(int style) const;
|
||||||
|
|
||||||
@@ -4237,7 +4237,7 @@ public:
|
|||||||
void AppendText(const wxString& text);
|
void AppendText(const wxString& text);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Is drawing done in two phases with backgrounds drawn before foregrounds?
|
Is drawing done in two phases with backgrounds drawn before faoregrounds?
|
||||||
*/
|
*/
|
||||||
bool GetTwoPhaseDraw() const;
|
bool GetTwoPhaseDraw() const;
|
||||||
|
|
||||||
@@ -5712,13 +5712,28 @@ public:
|
|||||||
*/
|
*/
|
||||||
void SetCaretLineVisibleAlways(bool alwaysVisible);
|
void SetCaretLineVisibleAlways(bool alwaysVisible);
|
||||||
|
|
||||||
|
/**
|
||||||
|
Set the line end types that the application wants to use. May not be used if incompatible with lexer or encoding.
|
||||||
|
*/
|
||||||
|
void SetLineEndTypesAllowed(int lineEndBitSet);
|
||||||
|
|
||||||
|
/**
|
||||||
|
Get the line end types currently allowed.
|
||||||
|
*/
|
||||||
|
int GetLineEndTypesAllowed() const;
|
||||||
|
|
||||||
|
/**
|
||||||
|
Get the line end types currently recognised. May be a subset of the allowed types due to lexer limitation.
|
||||||
|
*/
|
||||||
|
int GetLineEndTypesActive() const;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Set the way a character is drawn.
|
Set the way a character is drawn.
|
||||||
*/
|
*/
|
||||||
void SetRepresentation(const wxString& encodedCharacter, const wxString& representation);
|
void SetRepresentation(const wxString& encodedCharacter, const wxString& representation);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Get the way a character is drawn.
|
Set the way a character is drawn.
|
||||||
*/
|
*/
|
||||||
wxString GetRepresentation(const wxString& encodedCharacter) const;
|
wxString GetRepresentation(const wxString& encodedCharacter) const;
|
||||||
|
|
||||||
@@ -5814,21 +5829,6 @@ public:
|
|||||||
*/
|
*/
|
||||||
wxString DescribeKeyWordSets() const;
|
wxString DescribeKeyWordSets() const;
|
||||||
|
|
||||||
/**
|
|
||||||
Set the line end types that the application wants to use. May not be used if incompatible with lexer or encoding.
|
|
||||||
*/
|
|
||||||
void SetLineEndTypesAllowed(int lineEndBitSet);
|
|
||||||
|
|
||||||
/**
|
|
||||||
Get the line end types currently allowed.
|
|
||||||
*/
|
|
||||||
int GetLineEndTypesAllowed() const;
|
|
||||||
|
|
||||||
/**
|
|
||||||
Get the line end types currently recognised. May be a subset of the allowed types due to lexer limitation.
|
|
||||||
*/
|
|
||||||
int GetLineEndTypesActive() const;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Bit set of LineEndType enumertion for which line ends beyond the standard
|
Bit set of LineEndType enumertion for which line ends beyond the standard
|
||||||
LF, CR, and CRLF are supported by the lexer.
|
LF, CR, and CRLF are supported by the lexer.
|
||||||
|
@@ -3,7 +3,7 @@ directories from the Scintilla source distribution. All other code
|
|||||||
needed to implement Scintilla on top of wxWidgets is located in the
|
needed to implement Scintilla on top of wxWidgets is located in the
|
||||||
directory above this one.
|
directory above this one.
|
||||||
|
|
||||||
The current version of the Scintilla code is 3.3.9
|
The current version of the Scintilla code is 3.4.1
|
||||||
|
|
||||||
These are the basic steps needed to update the version of Scintilla used by wxSTC.
|
These are the basic steps needed to update the version of Scintilla used by wxSTC.
|
||||||
|
|
||||||
|
@@ -444,6 +444,16 @@ public:
|
|||||||
static DynamicLibrary *Load(const char *modulePath);
|
static DynamicLibrary *Load(const char *modulePath);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
#if defined(__clang__)
|
||||||
|
# if __has_feature(attribute_analyzer_noreturn)
|
||||||
|
# define CLANG_ANALYZER_NORETURN __attribute__((analyzer_noreturn))
|
||||||
|
# else
|
||||||
|
# define CLANG_ANALYZER_NORETURN
|
||||||
|
# endif
|
||||||
|
#else
|
||||||
|
# define CLANG_ANALYZER_NORETURN
|
||||||
|
#endif
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Platform class used to retrieve system wide parameters such as double click speed
|
* Platform class used to retrieve system wide parameters such as double click speed
|
||||||
* and chrome colour. Not a creatable object, more of a module with several functions.
|
* and chrome colour. Not a creatable object, more of a module with several functions.
|
||||||
@@ -488,7 +498,7 @@ public:
|
|||||||
}
|
}
|
||||||
static void DebugPrintf(const char *format, ...);
|
static void DebugPrintf(const char *format, ...);
|
||||||
static bool ShowAssertionPopUps(bool assertionPopUps_);
|
static bool ShowAssertionPopUps(bool assertionPopUps_);
|
||||||
static void Assert(const char *c, const char *file, int line);
|
static void Assert(const char *c, const char *file, int line) CLANG_ANALYZER_NORETURN;
|
||||||
static int Clamp(int val, int minVal, int maxVal);
|
static int Clamp(int val, int minVal, int maxVal);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@@ -125,6 +125,7 @@
|
|||||||
#define SCLEX_KVIRC 110
|
#define SCLEX_KVIRC 110
|
||||||
#define SCLEX_RUST 111
|
#define SCLEX_RUST 111
|
||||||
#define SCLEX_DMAP 112
|
#define SCLEX_DMAP 112
|
||||||
|
#define SCLEX_AS 113
|
||||||
#define SCLEX_AUTOMATIC 1000
|
#define SCLEX_AUTOMATIC 1000
|
||||||
#define SCE_P_DEFAULT 0
|
#define SCE_P_DEFAULT 0
|
||||||
#define SCE_P_COMMENTLINE 1
|
#define SCE_P_COMMENTLINE 1
|
||||||
|
@@ -475,6 +475,7 @@ typedef sptr_t (*SciFnDirect)(sptr_t ptr, unsigned int iMessage, uptr_t wParam,
|
|||||||
#define SC_WRAP_NONE 0
|
#define SC_WRAP_NONE 0
|
||||||
#define SC_WRAP_WORD 1
|
#define SC_WRAP_WORD 1
|
||||||
#define SC_WRAP_CHAR 2
|
#define SC_WRAP_CHAR 2
|
||||||
|
#define SC_WRAP_WHITESPACE 3
|
||||||
#define SCI_SETWRAPMODE 2268
|
#define SCI_SETWRAPMODE 2268
|
||||||
#define SCI_GETWRAPMODE 2269
|
#define SCI_GETWRAPMODE 2269
|
||||||
#define SC_WRAPVISUALFLAG_NONE 0x0000
|
#define SC_WRAPVISUALFLAG_NONE 0x0000
|
||||||
@@ -883,6 +884,11 @@ typedef sptr_t (*SciFnDirect)(sptr_t ptr, unsigned int iMessage, uptr_t wParam,
|
|||||||
#define SCI_VCHOMEDISPLAYEXTEND 2653
|
#define SCI_VCHOMEDISPLAYEXTEND 2653
|
||||||
#define SCI_GETCARETLINEVISIBLEALWAYS 2654
|
#define SCI_GETCARETLINEVISIBLEALWAYS 2654
|
||||||
#define SCI_SETCARETLINEVISIBLEALWAYS 2655
|
#define SCI_SETCARETLINEVISIBLEALWAYS 2655
|
||||||
|
#define SC_LINE_END_TYPE_DEFAULT 0
|
||||||
|
#define SC_LINE_END_TYPE_UNICODE 1
|
||||||
|
#define SCI_SETLINEENDTYPESALLOWED 2656
|
||||||
|
#define SCI_GETLINEENDTYPESALLOWED 2657
|
||||||
|
#define SCI_GETLINEENDTYPESACTIVE 2658
|
||||||
#define SCI_SETREPRESENTATION 2665
|
#define SCI_SETREPRESENTATION 2665
|
||||||
#define SCI_GETREPRESENTATION 2666
|
#define SCI_GETREPRESENTATION 2666
|
||||||
#define SCI_CLEARREPRESENTATION 2667
|
#define SCI_CLEARREPRESENTATION 2667
|
||||||
@@ -909,6 +915,16 @@ typedef sptr_t (*SciFnDirect)(sptr_t ptr, unsigned int iMessage, uptr_t wParam,
|
|||||||
#define SCI_PROPERTYTYPE 4015
|
#define SCI_PROPERTYTYPE 4015
|
||||||
#define SCI_DESCRIBEPROPERTY 4016
|
#define SCI_DESCRIBEPROPERTY 4016
|
||||||
#define SCI_DESCRIBEKEYWORDSETS 4017
|
#define SCI_DESCRIBEKEYWORDSETS 4017
|
||||||
|
#define SCI_GETLINEENDTYPESSUPPORTED 4018
|
||||||
|
#define SCI_ALLOCATESUBSTYLES 4020
|
||||||
|
#define SCI_GETSUBSTYLESSTART 4021
|
||||||
|
#define SCI_GETSUBSTYLESLENGTH 4022
|
||||||
|
#define SCI_GETSTYLEFROMSUBSTYLE 4027
|
||||||
|
#define SCI_GETPRIMARYSTYLEFROMSTYLE 4028
|
||||||
|
#define SCI_FREESUBSTYLES 4023
|
||||||
|
#define SCI_SETIDENTIFIERS 4024
|
||||||
|
#define SCI_DISTANCETOSECONDARYSTYLES 4025
|
||||||
|
#define SCI_GETSUBSTYLEBASES 4026
|
||||||
#define SC_MOD_INSERTTEXT 0x1
|
#define SC_MOD_INSERTTEXT 0x1
|
||||||
#define SC_MOD_DELETETEXT 0x2
|
#define SC_MOD_DELETETEXT 0x2
|
||||||
#define SC_MOD_CHANGESTYLE 0x4
|
#define SC_MOD_CHANGESTYLE 0x4
|
||||||
@@ -992,23 +1008,6 @@ typedef sptr_t (*SciFnDirect)(sptr_t ptr, unsigned int iMessage, uptr_t wParam,
|
|||||||
#define SCN_HOTSPOTRELEASECLICK 2027
|
#define SCN_HOTSPOTRELEASECLICK 2027
|
||||||
#define SCN_FOCUSIN 2028
|
#define SCN_FOCUSIN 2028
|
||||||
#define SCN_FOCUSOUT 2029
|
#define SCN_FOCUSOUT 2029
|
||||||
#ifndef SCI_DISABLE_PROVISIONAL
|
|
||||||
#define SC_LINE_END_TYPE_DEFAULT 0
|
|
||||||
#define SC_LINE_END_TYPE_UNICODE 1
|
|
||||||
#define SCI_SETLINEENDTYPESALLOWED 2656
|
|
||||||
#define SCI_GETLINEENDTYPESALLOWED 2657
|
|
||||||
#define SCI_GETLINEENDTYPESACTIVE 2658
|
|
||||||
#define SCI_GETLINEENDTYPESSUPPORTED 4018
|
|
||||||
#define SCI_ALLOCATESUBSTYLES 4020
|
|
||||||
#define SCI_GETSUBSTYLESSTART 4021
|
|
||||||
#define SCI_GETSUBSTYLESLENGTH 4022
|
|
||||||
#define SCI_GETSTYLEFROMSUBSTYLE 4027
|
|
||||||
#define SCI_GETPRIMARYSTYLEFROMSTYLE 4028
|
|
||||||
#define SCI_FREESUBSTYLES 4023
|
|
||||||
#define SCI_SETIDENTIFIERS 4024
|
|
||||||
#define SCI_DISTANCETOSECONDARYSTYLES 4025
|
|
||||||
#define SCI_GETSUBSTYLEBASES 4026
|
|
||||||
#endif
|
|
||||||
/* --Autogenerated -- end of section automatically generated from Scintilla.iface */
|
/* --Autogenerated -- end of section automatically generated from Scintilla.iface */
|
||||||
|
|
||||||
/* These structures are defined to be exactly the same shape as the Win32
|
/* These structures are defined to be exactly the same shape as the Win32
|
||||||
|
@@ -468,7 +468,7 @@ get bool StyleGetUnderline=2488(int style,)
|
|||||||
# Get is a style mixed case, or to force upper or lower case.
|
# Get is a style mixed case, or to force upper or lower case.
|
||||||
get int StyleGetCase=2489(int style,)
|
get int StyleGetCase=2489(int style,)
|
||||||
|
|
||||||
# Get the character set of the font in a style.
|
# Get the character get of the font in a style.
|
||||||
get int StyleGetCharacterSet=2490(int style,)
|
get int StyleGetCharacterSet=2490(int style,)
|
||||||
|
|
||||||
# Get is a style visible or not.
|
# Get is a style visible or not.
|
||||||
@@ -1189,6 +1189,7 @@ enu Wrap=SC_WRAP_
|
|||||||
val SC_WRAP_NONE=0
|
val SC_WRAP_NONE=0
|
||||||
val SC_WRAP_WORD=1
|
val SC_WRAP_WORD=1
|
||||||
val SC_WRAP_CHAR=2
|
val SC_WRAP_CHAR=2
|
||||||
|
val SC_WRAP_WHITESPACE=3
|
||||||
|
|
||||||
# Sets whether text is word wrapped.
|
# Sets whether text is word wrapped.
|
||||||
set void SetWrapMode=2268(int mode,)
|
set void SetWrapMode=2268(int mode,)
|
||||||
@@ -1286,7 +1287,7 @@ get bool GetVScrollBar=2281(,)
|
|||||||
# Append a string to the end of the document without changing the selection.
|
# Append a string to the end of the document without changing the selection.
|
||||||
fun void AppendText=2282(int length, string text)
|
fun void AppendText=2282(int length, string text)
|
||||||
|
|
||||||
# Is drawing done in two phases with backgrounds drawn before foregrounds?
|
# Is drawing done in two phases with backgrounds drawn before faoregrounds?
|
||||||
get bool GetTwoPhaseDraw=2283(,)
|
get bool GetTwoPhaseDraw=2283(,)
|
||||||
|
|
||||||
# In twoPhaseDraw mode, drawing is performed in two phases, first the background
|
# In twoPhaseDraw mode, drawing is performed in two phases, first the background
|
||||||
@@ -2343,10 +2344,26 @@ get bool GetCaretLineVisibleAlways=2654(,)
|
|||||||
# Sets the caret line to always visible.
|
# Sets the caret line to always visible.
|
||||||
set void SetCaretLineVisibleAlways=2655(bool alwaysVisible,)
|
set void SetCaretLineVisibleAlways=2655(bool alwaysVisible,)
|
||||||
|
|
||||||
|
# Line end types which may be used in addition to LF, CR, and CRLF
|
||||||
|
# SC_LINE_END_TYPE_UNICODE includes U+2028 Line Separator,
|
||||||
|
# U+2029 Paragraph Separator, and U+0085 Next Line
|
||||||
|
enu LineEndType=SC_LINE_END_TYPE_
|
||||||
|
val SC_LINE_END_TYPE_DEFAULT=0
|
||||||
|
val SC_LINE_END_TYPE_UNICODE=1
|
||||||
|
|
||||||
|
# Set the line end types that the application wants to use. May not be used if incompatible with lexer or encoding.
|
||||||
|
set void SetLineEndTypesAllowed=2656(int lineEndBitSet,)
|
||||||
|
|
||||||
|
# Get the line end types currently allowed.
|
||||||
|
get int GetLineEndTypesAllowed=2657(,)
|
||||||
|
|
||||||
|
# Get the line end types currently recognised. May be a subset of the allowed types due to lexer limitation.
|
||||||
|
get int GetLineEndTypesActive=2658(,)
|
||||||
|
|
||||||
# Set the way a character is drawn.
|
# Set the way a character is drawn.
|
||||||
set void SetRepresentation=2665(string encodedCharacter, string representation)
|
set void SetRepresentation=2665(string encodedCharacter, string representation)
|
||||||
|
|
||||||
# Get the way a character is drawn.
|
# Set the way a character is drawn.
|
||||||
get int GetRepresentation=2666(string encodedCharacter, stringresult representation)
|
get int GetRepresentation=2666(string encodedCharacter, stringresult representation)
|
||||||
|
|
||||||
# Remove a character representation.
|
# Remove a character representation.
|
||||||
@@ -2420,6 +2437,38 @@ fun int DescribeProperty=4016(string name, stringresult description)
|
|||||||
# Retrieve a '\n' separated list of descriptions of the keyword sets understood by the current lexer.
|
# Retrieve a '\n' separated list of descriptions of the keyword sets understood by the current lexer.
|
||||||
fun int DescribeKeyWordSets=4017(, stringresult descriptions)
|
fun int DescribeKeyWordSets=4017(, stringresult descriptions)
|
||||||
|
|
||||||
|
# Bit set of LineEndType enumertion for which line ends beyond the standard
|
||||||
|
# LF, CR, and CRLF are supported by the lexer.
|
||||||
|
get int GetLineEndTypesSupported=4018(,)
|
||||||
|
|
||||||
|
# Allocate a set of sub styles for a particular base style, returning start of range
|
||||||
|
fun int AllocateSubStyles=4020(int styleBase, int numberStyles)
|
||||||
|
|
||||||
|
# The starting style number for the sub styles associated with a base style
|
||||||
|
get int GetSubStylesStart=4021(int styleBase,)
|
||||||
|
|
||||||
|
# The number of sub styles associated with a base style
|
||||||
|
get int GetSubStylesLength=4022(int styleBase,)
|
||||||
|
|
||||||
|
# For a sub style, return the base style, else return the argument.
|
||||||
|
get int GetStyleFromSubStyle=4027(int subStyle,)
|
||||||
|
|
||||||
|
# For a secondary style, return the primary style, else return the argument.
|
||||||
|
get int GetPrimaryStyleFromStyle=4028(int style,)
|
||||||
|
|
||||||
|
# Free allocated sub styles
|
||||||
|
fun void FreeSubStyles=4023(,)
|
||||||
|
|
||||||
|
# Set the identifiers that are shown in a particular style
|
||||||
|
set void SetIdentifiers=4024(int style, string identifiers)
|
||||||
|
|
||||||
|
# Where styles are duplicated by a feature such as active/inactive code
|
||||||
|
# return the distance between the two types.
|
||||||
|
get int DistanceToSecondaryStyles=4025(,)
|
||||||
|
|
||||||
|
# Get the set of base styles that can be extended with sub styles
|
||||||
|
get int GetSubStyleBases=4026(, stringresult styles)
|
||||||
|
|
||||||
# Notifications
|
# Notifications
|
||||||
# Type of modification and the action which caused the modification.
|
# Type of modification and the action which caused the modification.
|
||||||
# These are defined as a bit mask to make it easy to specify which notifications are wanted.
|
# These are defined as a bit mask to make it easy to specify which notifications are wanted.
|
||||||
@@ -2609,6 +2658,7 @@ val SCLEX_STTXT=109
|
|||||||
val SCLEX_KVIRC=110
|
val SCLEX_KVIRC=110
|
||||||
val SCLEX_RUST=111
|
val SCLEX_RUST=111
|
||||||
val SCLEX_DMAP=112
|
val SCLEX_DMAP=112
|
||||||
|
val SCLEX_AS=113
|
||||||
|
|
||||||
# When a lexer specifies its language as SCLEX_AUTOMATIC it receives a
|
# When a lexer specifies its language as SCLEX_AUTOMATIC it receives a
|
||||||
# value assigned in sequence from SCLEX_AUTOMATIC+1.
|
# value assigned in sequence from SCLEX_AUTOMATIC+1.
|
||||||
@@ -3198,8 +3248,9 @@ val SCE_SCRIPTOL_IDENTIFIER=12
|
|||||||
val SCE_SCRIPTOL_TRIPLE=13
|
val SCE_SCRIPTOL_TRIPLE=13
|
||||||
val SCE_SCRIPTOL_CLASSNAME=14
|
val SCE_SCRIPTOL_CLASSNAME=14
|
||||||
val SCE_SCRIPTOL_PREPROCESSOR=15
|
val SCE_SCRIPTOL_PREPROCESSOR=15
|
||||||
# Lexical states for SCLEX_ASM
|
# Lexical states for SCLEX_ASM, SCLEX_AS
|
||||||
lex Asm=SCLEX_ASM SCE_ASM_
|
lex Asm=SCLEX_ASM SCE_ASM_
|
||||||
|
lex As=SCLEX_AS SCE_ASM_
|
||||||
val SCE_ASM_DEFAULT=0
|
val SCE_ASM_DEFAULT=0
|
||||||
val SCE_ASM_COMMENT=1
|
val SCE_ASM_COMMENT=1
|
||||||
val SCE_ASM_NUMBER=2
|
val SCE_ASM_NUMBER=2
|
||||||
@@ -4421,56 +4472,10 @@ evt void HotSpotReleaseClick=2027(int modifiers, int position)
|
|||||||
evt void FocusIn=2028(void)
|
evt void FocusIn=2028(void)
|
||||||
evt void FocusOut=2029(void)
|
evt void FocusOut=2029(void)
|
||||||
|
|
||||||
|
# There are no provisional features currently
|
||||||
|
|
||||||
cat Provisional
|
cat Provisional
|
||||||
|
|
||||||
# Line end types which may be used in addition to LF, CR, and CRLF
|
|
||||||
# SC_LINE_END_TYPE_UNICODE includes U+2028 Line Separator,
|
|
||||||
# U+2029 Paragraph Separator, and U+0085 Next Line
|
|
||||||
enu LineEndType=SC_LINE_END_TYPE_
|
|
||||||
val SC_LINE_END_TYPE_DEFAULT=0
|
|
||||||
val SC_LINE_END_TYPE_UNICODE=1
|
|
||||||
|
|
||||||
# Set the line end types that the application wants to use. May not be used if incompatible with lexer or encoding.
|
|
||||||
set void SetLineEndTypesAllowed=2656(int lineEndBitSet,)
|
|
||||||
|
|
||||||
# Get the line end types currently allowed.
|
|
||||||
get int GetLineEndTypesAllowed=2657(,)
|
|
||||||
|
|
||||||
# Get the line end types currently recognised. May be a subset of the allowed types due to lexer limitation.
|
|
||||||
get int GetLineEndTypesActive=2658(,)
|
|
||||||
|
|
||||||
# Bit set of LineEndType enumertion for which line ends beyond the standard
|
|
||||||
# LF, CR, and CRLF are supported by the lexer.
|
|
||||||
get int GetLineEndTypesSupported=4018(,)
|
|
||||||
|
|
||||||
# Allocate a set of sub styles for a particular base style, returning start of range
|
|
||||||
fun int AllocateSubStyles=4020(int styleBase, int numberStyles)
|
|
||||||
|
|
||||||
# The starting style number for the sub styles associated with a base style
|
|
||||||
get int GetSubStylesStart=4021(int styleBase,)
|
|
||||||
|
|
||||||
# The number of sub styles associated with a base style
|
|
||||||
get int GetSubStylesLength=4022(int styleBase,)
|
|
||||||
|
|
||||||
# For a sub style, return the base style, else return the argument.
|
|
||||||
get int GetStyleFromSubStyle=4027(int subStyle,)
|
|
||||||
|
|
||||||
# For a secondary style, return the primary style, else return the argument.
|
|
||||||
get int GetPrimaryStyleFromStyle=4028(int style,)
|
|
||||||
|
|
||||||
# Free allocated sub styles
|
|
||||||
fun void FreeSubStyles=4023(,)
|
|
||||||
|
|
||||||
# Set the identifiers that are shown in a particular style
|
|
||||||
set void SetIdentifiers=4024(int style, string identifiers)
|
|
||||||
|
|
||||||
# Where styles are duplicated by a feature such as active/inactive code
|
|
||||||
# return the distance between the two types.
|
|
||||||
get int DistanceToSecondaryStyles=4025(,)
|
|
||||||
|
|
||||||
# Get the set of base styles that can be extended with sub styles
|
|
||||||
get int GetSubStyleBases=4026(, stringresult styles)
|
|
||||||
|
|
||||||
cat Deprecated
|
cat Deprecated
|
||||||
|
|
||||||
# Deprecated in 2.21
|
# Deprecated in 2.21
|
||||||
|
@@ -150,8 +150,10 @@ class LexerAsm : public ILexer {
|
|||||||
WordList directives4foldend;
|
WordList directives4foldend;
|
||||||
OptionsAsm options;
|
OptionsAsm options;
|
||||||
OptionSetAsm osAsm;
|
OptionSetAsm osAsm;
|
||||||
|
int commentChar;
|
||||||
public:
|
public:
|
||||||
LexerAsm() {
|
LexerAsm(int commentChar_) {
|
||||||
|
commentChar = commentChar_;
|
||||||
}
|
}
|
||||||
virtual ~LexerAsm() {
|
virtual ~LexerAsm() {
|
||||||
}
|
}
|
||||||
@@ -183,7 +185,11 @@ public:
|
|||||||
}
|
}
|
||||||
|
|
||||||
static ILexer *LexerFactoryAsm() {
|
static ILexer *LexerFactoryAsm() {
|
||||||
return new LexerAsm();
|
return new LexerAsm(';');
|
||||||
|
}
|
||||||
|
|
||||||
|
static ILexer *LexerFactoryAs() {
|
||||||
|
return new LexerAsm('#');
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -342,7 +348,7 @@ void SCI_METHOD LexerAsm::Lex(unsigned int startPos, int length, int initStyle,
|
|||||||
|
|
||||||
// Determine if a new state should be entered.
|
// Determine if a new state should be entered.
|
||||||
if (sc.state == SCE_ASM_DEFAULT) {
|
if (sc.state == SCE_ASM_DEFAULT) {
|
||||||
if (sc.ch == ';'){
|
if (sc.ch == commentChar){
|
||||||
sc.SetState(SCE_ASM_COMMENT);
|
sc.SetState(SCE_ASM_COMMENT);
|
||||||
} else if (IsASCII(sc.ch) && (isdigit(sc.ch) || (sc.ch == '.' && IsASCII(sc.chNext) && isdigit(sc.chNext)))) {
|
} else if (IsASCII(sc.ch) && (isdigit(sc.ch) || (sc.ch == '.' && IsASCII(sc.chNext) && isdigit(sc.chNext)))) {
|
||||||
sc.SetState(SCE_ASM_NUMBER);
|
sc.SetState(SCE_ASM_NUMBER);
|
||||||
@@ -457,4 +463,5 @@ void SCI_METHOD LexerAsm::Fold(unsigned int startPos, int length, int initStyle,
|
|||||||
}
|
}
|
||||||
|
|
||||||
LexerModule lmAsm(SCLEX_ASM, LexerAsm::LexerFactoryAsm, "asm", asmWordListDesc);
|
LexerModule lmAsm(SCLEX_ASM, LexerAsm::LexerFactoryAsm, "asm", asmWordListDesc);
|
||||||
|
LexerModule lmAs(SCLEX_AS, LexerAsm::LexerFactoryAs, "as", asmWordListDesc);
|
||||||
|
|
||||||
|
@@ -66,9 +66,8 @@ static bool followsReturnKeyword(StyleContext &sc, Accessor &styler) {
|
|||||||
int pos = (int) sc.currentPos;
|
int pos = (int) sc.currentPos;
|
||||||
int currentLine = styler.GetLine(pos);
|
int currentLine = styler.GetLine(pos);
|
||||||
int lineStartPos = styler.LineStart(currentLine);
|
int lineStartPos = styler.LineStart(currentLine);
|
||||||
char ch;
|
|
||||||
while (--pos > lineStartPos) {
|
while (--pos > lineStartPos) {
|
||||||
ch = styler.SafeGetCharAt(pos);
|
char ch = styler.SafeGetCharAt(pos);
|
||||||
if (ch != ' ' && ch != '\t') {
|
if (ch != ' ' && ch != '\t') {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@@ -185,7 +184,7 @@ static void ColouriseCoffeeScriptDoc(unsigned int startPos, int length, int init
|
|||||||
break;
|
break;
|
||||||
case SCE_COFFEESCRIPT_NUMBER:
|
case SCE_COFFEESCRIPT_NUMBER:
|
||||||
// We accept almost anything because of hex. and number suffixes
|
// We accept almost anything because of hex. and number suffixes
|
||||||
if (!setWord.Contains(sc.ch)) {
|
if (!setWord.Contains(sc.ch) || sc.Match('.', '.')) {
|
||||||
sc.SetState(SCE_COFFEESCRIPT_DEFAULT);
|
sc.SetState(SCE_COFFEESCRIPT_DEFAULT);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@@ -204,6 +203,13 @@ static void ColouriseCoffeeScriptDoc(unsigned int startPos, int length, int init
|
|||||||
sc.SetState(SCE_COFFEESCRIPT_DEFAULT);
|
sc.SetState(SCE_COFFEESCRIPT_DEFAULT);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
case SCE_COFFEESCRIPT_WORD:
|
||||||
|
case SCE_COFFEESCRIPT_WORD2:
|
||||||
|
case SCE_COFFEESCRIPT_GLOBALCLASS:
|
||||||
|
if (!setWord.Contains(sc.ch)) {
|
||||||
|
sc.SetState(SCE_COFFEESCRIPT_DEFAULT);
|
||||||
|
}
|
||||||
|
break;
|
||||||
case SCE_COFFEESCRIPT_PREPROCESSOR:
|
case SCE_COFFEESCRIPT_PREPROCESSOR:
|
||||||
if (sc.atLineStart && !continuationLine) {
|
if (sc.atLineStart && !continuationLine) {
|
||||||
sc.SetState(SCE_COFFEESCRIPT_DEFAULT);
|
sc.SetState(SCE_COFFEESCRIPT_DEFAULT);
|
||||||
|
@@ -316,22 +316,17 @@ static void FoldFortranDoc(unsigned int startPos, int length, int initStyle,
|
|||||||
isPrevLine = false;
|
isPrevLine = false;
|
||||||
}
|
}
|
||||||
char chNext = styler[startPos];
|
char chNext = styler[startPos];
|
||||||
char chNextNonBlank;
|
|
||||||
int styleNext = styler.StyleAt(startPos);
|
int styleNext = styler.StyleAt(startPos);
|
||||||
int style = initStyle;
|
int style = initStyle;
|
||||||
int levelDeltaNext = 0;
|
int levelDeltaNext = 0;
|
||||||
/***************************************/
|
/***************************************/
|
||||||
int lastStart = 0;
|
int lastStart = 0;
|
||||||
char prevWord[32] = "";
|
char prevWord[32] = "";
|
||||||
char Label[6] = "";
|
|
||||||
// Variables for do label folding.
|
|
||||||
static int doLabels[100];
|
|
||||||
static int posLabel=-1;
|
|
||||||
/***************************************/
|
/***************************************/
|
||||||
for (unsigned int i = startPos; i < endPos; i++) {
|
for (unsigned int i = startPos; i < endPos; i++) {
|
||||||
char ch = chNext;
|
char ch = chNext;
|
||||||
chNext = styler.SafeGetCharAt(i + 1);
|
chNext = styler.SafeGetCharAt(i + 1);
|
||||||
chNextNonBlank = chNext;
|
char chNextNonBlank = chNext;
|
||||||
bool nextEOL = false;
|
bool nextEOL = false;
|
||||||
if (IsALineEnd(chNextNonBlank)) {
|
if (IsALineEnd(chNextNonBlank)) {
|
||||||
nextEOL = true;
|
nextEOL = true;
|
||||||
@@ -427,7 +422,8 @@ static void FoldFortranDoc(unsigned int startPos, int length, int initStyle,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
levelDeltaNext += classifyFoldPointFortran(s, prevWord, chNextNonBlank);
|
int wordLevelDelta = classifyFoldPointFortran(s, prevWord, chNextNonBlank);
|
||||||
|
levelDeltaNext += wordLevelDelta;
|
||||||
if (((strcmp(s, "else") == 0) && (nextEOL || chNextNonBlank == '!')) ||
|
if (((strcmp(s, "else") == 0) && (nextEOL || chNextNonBlank == '!')) ||
|
||||||
(strcmp(prevWord, "else") == 0 && strcmp(s, "where") == 0) || strcmp(s, "elsewhere") == 0) {
|
(strcmp(prevWord, "else") == 0 && strcmp(s, "where") == 0) || strcmp(s, "elsewhere") == 0) {
|
||||||
if (!isPrevLine) {
|
if (!isPrevLine) {
|
||||||
@@ -453,38 +449,16 @@ static void FoldFortranDoc(unsigned int startPos, int length, int initStyle,
|
|||||||
levelDeltaNext -= 2;
|
levelDeltaNext -= 2;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Store the do Labels into array
|
// There are multiple forms of "do" loop. The older form with a label "do 100 i=1,10" would require matching
|
||||||
|
// labels to ensure the folding level does not decrease too far when labels are used for other purposes.
|
||||||
|
// Since this is difficult, do-label constructs are not folded.
|
||||||
if (strcmp(s, "do") == 0 && IsADigit(chNextNonBlank)) {
|
if (strcmp(s, "do") == 0 && IsADigit(chNextNonBlank)) {
|
||||||
unsigned int k = 0;
|
// Remove delta for do-label
|
||||||
for (i=j; (i<j+5 && i<endPos); i++) {
|
levelDeltaNext -= wordLevelDelta;
|
||||||
ch = styler.SafeGetCharAt(i);
|
|
||||||
if (IsADigit(ch))
|
|
||||||
Label[k++] = ch;
|
|
||||||
else
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
Label[k] = '\0';
|
|
||||||
posLabel ++;
|
|
||||||
doLabels[posLabel] = atoi(Label);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
strcpy(prevWord, s);
|
strcpy(prevWord, s);
|
||||||
}
|
}
|
||||||
} else if (style == SCE_F_LABEL) {
|
|
||||||
if(IsADigit(ch) && !IsADigit(chNext)) {
|
|
||||||
for(j = 0; ( j < 5 ) && ( j < i-lastStart+1 ); j++) {
|
|
||||||
ch = styler.SafeGetCharAt(lastStart + j);
|
|
||||||
if (IsADigit(ch) && styler.StyleAt(lastStart+j) == SCE_F_LABEL)
|
|
||||||
Label[j] = ch;
|
|
||||||
else
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
Label[j] = '\0';
|
|
||||||
while (doLabels[posLabel] == atoi(Label) && posLabel > -1) {
|
|
||||||
levelCurrent--;
|
|
||||||
posLabel--;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
if (atEOL) {
|
if (atEOL) {
|
||||||
int lev = levelCurrent;
|
int lev = levelCurrent;
|
||||||
|
@@ -118,10 +118,11 @@ static bool AtTermStart(StyleContext &sc) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
static bool IsValidHrule(const unsigned int endPos, StyleContext &sc) {
|
static bool IsValidHrule(const unsigned int endPos, StyleContext &sc) {
|
||||||
int c, count = 1;
|
int count = 1;
|
||||||
unsigned int i = 0;
|
unsigned int i = 0;
|
||||||
while (++i) {
|
for (;;) {
|
||||||
c = sc.GetRelative(i);
|
++i;
|
||||||
|
int c = sc.GetRelative(i);
|
||||||
if (c == sc.ch)
|
if (c == sc.ch)
|
||||||
++count;
|
++count;
|
||||||
// hit a terminating character
|
// hit a terminating character
|
||||||
@@ -140,7 +141,6 @@ static bool IsValidHrule(const unsigned int endPos, StyleContext &sc) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return false;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void ColorizeMarkdownDoc(unsigned int startPos, int length, int initStyle,
|
static void ColorizeMarkdownDoc(unsigned int startPos, int length, int initStyle,
|
||||||
|
@@ -78,10 +78,11 @@ static bool HasPrevLineContent(StyleContext &sc) {
|
|||||||
|
|
||||||
// Separator line
|
// Separator line
|
||||||
static bool IsValidHrule(const unsigned int endPos, StyleContext &sc) {
|
static bool IsValidHrule(const unsigned int endPos, StyleContext &sc) {
|
||||||
int c, count = 1;
|
int count = 1;
|
||||||
unsigned int i = 0;
|
unsigned int i = 0;
|
||||||
while (++i) {
|
for (;;) {
|
||||||
c = sc.GetRelative(i);
|
++i;
|
||||||
|
int c = sc.GetRelative(i);
|
||||||
if (c == sc.ch)
|
if (c == sc.ch)
|
||||||
++count;
|
++count;
|
||||||
// hit a terminating character
|
// hit a terminating character
|
||||||
@@ -100,7 +101,6 @@ static bool IsValidHrule(const unsigned int endPos, StyleContext &sc) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return false;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void ColorizeTxt2tagsDoc(unsigned int startPos, int length, int initStyle,
|
static void ColorizeTxt2tagsDoc(unsigned int startPos, int length, int initStyle,
|
||||||
|
@@ -237,3 +237,4 @@ bool WordList::InListAbbreviated(const char *s, const char marker) const {
|
|||||||
const char *WordList::WordAt(int n) const {
|
const char *WordList::WordAt(int n) const {
|
||||||
return words[n];
|
return words[n];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -80,6 +80,7 @@ int Scintilla_LinkLexers() {
|
|||||||
LINK_LEXER(lmAbaqus);
|
LINK_LEXER(lmAbaqus);
|
||||||
LINK_LEXER(lmAda);
|
LINK_LEXER(lmAda);
|
||||||
LINK_LEXER(lmAPDL);
|
LINK_LEXER(lmAPDL);
|
||||||
|
LINK_LEXER(lmAs);
|
||||||
LINK_LEXER(lmAsm);
|
LINK_LEXER(lmAsm);
|
||||||
LINK_LEXER(lmAsn1);
|
LINK_LEXER(lmAsn1);
|
||||||
LINK_LEXER(lmASY);
|
LINK_LEXER(lmASY);
|
||||||
|
@@ -191,9 +191,6 @@ public:
|
|||||||
bool operator==(const WatcherWithUserData &other) const {
|
bool operator==(const WatcherWithUserData &other) const {
|
||||||
return (watcher == other.watcher) && (userData == other.userData);
|
return (watcher == other.watcher) && (userData == other.userData);
|
||||||
}
|
}
|
||||||
bool operator!=(const WatcherWithUserData &other) const {
|
|
||||||
return (watcher != other.watcher) || (userData != other.userData);
|
|
||||||
}
|
|
||||||
};
|
};
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
@@ -88,6 +88,10 @@ Timer::Timer() :
|
|||||||
Idler::Idler() :
|
Idler::Idler() :
|
||||||
state(false), idlerID(0) {}
|
state(false), idlerID(0) {}
|
||||||
|
|
||||||
|
static int RoundXYPosition(XYPOSITION xyPos) {
|
||||||
|
return int(xyPos+0.5);
|
||||||
|
}
|
||||||
|
|
||||||
static inline bool IsControlCharacter(int ch) {
|
static inline bool IsControlCharacter(int ch) {
|
||||||
// iscntrl returns true for lots of chars > 127 which are displayable
|
// iscntrl returns true for lots of chars > 127 which are displayable
|
||||||
return ch >= 0 && ch < ' ';
|
return ch >= 0 && ch < ' ';
|
||||||
@@ -269,6 +273,8 @@ void Editor::SetRepresentations() {
|
|||||||
char c1[3] = { '\xc2', static_cast<char>(0x80+j), 0 };
|
char c1[3] = { '\xc2', static_cast<char>(0x80+j), 0 };
|
||||||
reprs.SetRepresentation(c1, repsC1[j]);
|
reprs.SetRepresentation(c1, repsC1[j]);
|
||||||
}
|
}
|
||||||
|
reprs.SetRepresentation("\xe2\x80\xa8", "LS");
|
||||||
|
reprs.SetRepresentation("\xe2\x80\xa9", "PS");
|
||||||
}
|
}
|
||||||
|
|
||||||
// UTF-8 invalid bytes
|
// UTF-8 invalid bytes
|
||||||
@@ -382,6 +388,10 @@ PRectangle Editor::GetClientRectangle() {
|
|||||||
return wMain.GetClientPosition();
|
return wMain.GetClientPosition();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
PRectangle Editor::GetClientDrawingRectangle() {
|
||||||
|
return GetClientRectangle();
|
||||||
|
}
|
||||||
|
|
||||||
PRectangle Editor::GetTextRectangle() {
|
PRectangle Editor::GetTextRectangle() {
|
||||||
PRectangle rc = GetClientRectangle();
|
PRectangle rc = GetClientRectangle();
|
||||||
rc.left += vs.textStart;
|
rc.left += vs.textStart;
|
||||||
@@ -477,36 +487,17 @@ Point Editor::LocationFromPosition(SelectionPosition pos) {
|
|||||||
RefreshStyleData();
|
RefreshStyleData();
|
||||||
if (pos.Position() == INVALID_POSITION)
|
if (pos.Position() == INVALID_POSITION)
|
||||||
return pt;
|
return pt;
|
||||||
int line = pdoc->LineFromPosition(pos.Position());
|
const int line = pdoc->LineFromPosition(pos.Position());
|
||||||
int lineVisible = cs.DisplayFromDoc(line);
|
const int lineVisible = cs.DisplayFromDoc(line);
|
||||||
//Platform::DebugPrintf("line=%d\n", line);
|
//Platform::DebugPrintf("line=%d\n", line);
|
||||||
AutoSurface surface(this);
|
AutoSurface surface(this);
|
||||||
AutoLineLayout ll(llc, RetrieveLineLayout(line));
|
AutoLineLayout ll(llc, RetrieveLineLayout(line));
|
||||||
if (surface && ll) {
|
if (surface && ll) {
|
||||||
// -1 because of adding in for visible lines in following loop.
|
const int posLineStart = pdoc->LineStart(line);
|
||||||
pt.y = (lineVisible - topLine - 1) * vs.lineHeight;
|
|
||||||
pt.x = 0;
|
|
||||||
unsigned int posLineStart = pdoc->LineStart(line);
|
|
||||||
LayoutLine(line, surface, vs, ll, wrapWidth);
|
LayoutLine(line, surface, vs, ll, wrapWidth);
|
||||||
int posInLine = pos.Position() - posLineStart;
|
const int posInLine = pos.Position() - posLineStart;
|
||||||
// In case of very long line put x at arbitrary large position
|
pt = ll->PointFromPosition(posInLine, vs.lineHeight);
|
||||||
if (posInLine > ll->maxLineLength) {
|
pt.y += (lineVisible - topLine) * vs.lineHeight;
|
||||||
pt.x = ll->positions[ll->maxLineLength] - ll->positions[ll->LineStart(ll->lines)];
|
|
||||||
}
|
|
||||||
|
|
||||||
for (int subLine = 0; subLine < ll->lines; subLine++) {
|
|
||||||
if ((posInLine >= ll->LineStart(subLine)) && (posInLine <= ll->LineStart(subLine + 1))) {
|
|
||||||
pt.x = ll->positions[posInLine] - ll->positions[ll->LineStart(subLine)];
|
|
||||||
if (ll->wrapIndent != 0) {
|
|
||||||
int lineStart = ll->LineStart(subLine);
|
|
||||||
if (lineStart != 0) // Wrapped
|
|
||||||
pt.x += ll->wrapIndent;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (posInLine >= ll->LineStart(subLine)) {
|
|
||||||
pt.y += vs.lineHeight;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
pt.x += vs.textStart - xOffset;
|
pt.x += vs.textStart - xOffset;
|
||||||
}
|
}
|
||||||
pt.x += pos.VirtualSpace() * vs.styles[ll->EndLineStyle()].spaceWidth;
|
pt.x += pos.VirtualSpace() * vs.styles[ll->EndLineStyle()].spaceWidth;
|
||||||
@@ -558,58 +549,44 @@ SelectionPosition Editor::SPositionFromLocation(Point pt, bool canReturnInvalid,
|
|||||||
int visibleLine = floor(pt.y / vs.lineHeight);
|
int visibleLine = floor(pt.y / vs.lineHeight);
|
||||||
if (!canReturnInvalid && (visibleLine < 0))
|
if (!canReturnInvalid && (visibleLine < 0))
|
||||||
visibleLine = 0;
|
visibleLine = 0;
|
||||||
int lineDoc = cs.DocFromDisplay(visibleLine);
|
const int lineDoc = cs.DocFromDisplay(visibleLine);
|
||||||
if (canReturnInvalid && (lineDoc < 0))
|
if (canReturnInvalid && (lineDoc < 0))
|
||||||
return SelectionPosition(INVALID_POSITION);
|
return SelectionPosition(INVALID_POSITION);
|
||||||
if (lineDoc >= pdoc->LinesTotal())
|
if (lineDoc >= pdoc->LinesTotal())
|
||||||
return SelectionPosition(canReturnInvalid ? INVALID_POSITION : pdoc->Length());
|
return SelectionPosition(canReturnInvalid ? INVALID_POSITION : pdoc->Length());
|
||||||
unsigned int posLineStart = pdoc->LineStart(lineDoc);
|
const int posLineStart = pdoc->LineStart(lineDoc);
|
||||||
SelectionPosition retVal(canReturnInvalid ? INVALID_POSITION : static_cast<int>(posLineStart));
|
|
||||||
AutoSurface surface(this);
|
AutoSurface surface(this);
|
||||||
AutoLineLayout ll(llc, RetrieveLineLayout(lineDoc));
|
AutoLineLayout ll(llc, RetrieveLineLayout(lineDoc));
|
||||||
if (surface && ll) {
|
if (surface && ll) {
|
||||||
LayoutLine(lineDoc, surface, vs, ll, wrapWidth);
|
LayoutLine(lineDoc, surface, vs, ll, wrapWidth);
|
||||||
int lineStartSet = cs.DisplayFromDoc(lineDoc);
|
const int lineStartSet = cs.DisplayFromDoc(lineDoc);
|
||||||
int subLine = visibleLine - lineStartSet;
|
const int subLine = visibleLine - lineStartSet;
|
||||||
if (subLine < ll->lines) {
|
if (subLine < ll->lines) {
|
||||||
int lineStart = ll->LineStart(subLine);
|
const Range rangeSubLine = ll->SubLineRange(subLine);
|
||||||
int lineEnd = ll->LineLastVisible(subLine);
|
const XYPOSITION subLineStart = ll->positions[rangeSubLine.start];
|
||||||
XYPOSITION subLineStart = ll->positions[lineStart];
|
if (subLine > 0) // Wrapped
|
||||||
|
|
||||||
if (ll->wrapIndent != 0) {
|
|
||||||
if (lineStart != 0) // Wrapped
|
|
||||||
pt.x -= ll->wrapIndent;
|
pt.x -= ll->wrapIndent;
|
||||||
}
|
const int positionInLine = ll->FindPositionFromX(pt.x + subLineStart, rangeSubLine, charPosition);
|
||||||
int i = ll->FindBefore(pt.x + subLineStart, lineStart, lineEnd);
|
if (positionInLine < rangeSubLine.end) {
|
||||||
while (i < lineEnd) {
|
return SelectionPosition(pdoc->MovePositionOutsideChar(positionInLine + posLineStart, 1));
|
||||||
if (charPosition) {
|
|
||||||
if ((pt.x + subLineStart) < (ll->positions[i + 1])) {
|
|
||||||
return SelectionPosition(pdoc->MovePositionOutsideChar(i + posLineStart, 1));
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
if ((pt.x + subLineStart) < ((ll->positions[i] + ll->positions[i + 1]) / 2)) {
|
|
||||||
return SelectionPosition(pdoc->MovePositionOutsideChar(i + posLineStart, 1));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
i++;
|
|
||||||
}
|
}
|
||||||
if (virtualSpace) {
|
if (virtualSpace) {
|
||||||
const XYPOSITION spaceWidth = vs.styles[ll->EndLineStyle()].spaceWidth;
|
const XYPOSITION spaceWidth = vs.styles[ll->EndLineStyle()].spaceWidth;
|
||||||
int spaceOffset = (pt.x + subLineStart - ll->positions[lineEnd] + spaceWidth / 2) /
|
const int spaceOffset = (pt.x + subLineStart - ll->positions[rangeSubLine.end] + spaceWidth / 2) /
|
||||||
spaceWidth;
|
spaceWidth;
|
||||||
return SelectionPosition(lineEnd + posLineStart, spaceOffset);
|
return SelectionPosition(rangeSubLine.end + posLineStart, spaceOffset);
|
||||||
} else if (canReturnInvalid) {
|
} else if (canReturnInvalid) {
|
||||||
if (pt.x < (ll->positions[lineEnd] - subLineStart)) {
|
if (pt.x < (ll->positions[rangeSubLine.end] - subLineStart)) {
|
||||||
return SelectionPosition(pdoc->MovePositionOutsideChar(lineEnd + posLineStart, 1));
|
return SelectionPosition(pdoc->MovePositionOutsideChar(rangeSubLine.end + posLineStart, 1));
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
return SelectionPosition(lineEnd + posLineStart);
|
return SelectionPosition(rangeSubLine.end + posLineStart);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (!canReturnInvalid)
|
if (!canReturnInvalid)
|
||||||
return SelectionPosition(ll->numCharsInLine + posLineStart);
|
return SelectionPosition(ll->numCharsInLine + posLineStart);
|
||||||
}
|
}
|
||||||
return retVal;
|
return SelectionPosition(canReturnInvalid ? INVALID_POSITION : posLineStart);
|
||||||
}
|
}
|
||||||
|
|
||||||
int Editor::PositionFromLocation(Point pt, bool canReturnInvalid, bool charPosition) {
|
int Editor::PositionFromLocation(Point pt, bool canReturnInvalid, bool charPosition) {
|
||||||
@@ -619,6 +596,7 @@ int Editor::PositionFromLocation(Point pt, bool canReturnInvalid, bool charPosit
|
|||||||
/**
|
/**
|
||||||
* Find the document position corresponding to an x coordinate on a particular document line.
|
* Find the document position corresponding to an x coordinate on a particular document line.
|
||||||
* Ensure is between whole characters when document is in multi-byte or UTF-8 mode.
|
* Ensure is between whole characters when document is in multi-byte or UTF-8 mode.
|
||||||
|
* This method is used for rectangular selections and does not work on wrapped lines.
|
||||||
*/
|
*/
|
||||||
SelectionPosition Editor::SPositionFromLineX(int lineDoc, int x) {
|
SelectionPosition Editor::SPositionFromLineX(int lineDoc, int x) {
|
||||||
RefreshStyleData();
|
RefreshStyleData();
|
||||||
@@ -627,33 +605,20 @@ SelectionPosition Editor::SPositionFromLineX(int lineDoc, int x) {
|
|||||||
//Platform::DebugPrintf("Position of (%d,%d) line = %d top=%d\n", pt.x, pt.y, line, topLine);
|
//Platform::DebugPrintf("Position of (%d,%d) line = %d top=%d\n", pt.x, pt.y, line, topLine);
|
||||||
AutoSurface surface(this);
|
AutoSurface surface(this);
|
||||||
AutoLineLayout ll(llc, RetrieveLineLayout(lineDoc));
|
AutoLineLayout ll(llc, RetrieveLineLayout(lineDoc));
|
||||||
int retVal = 0;
|
|
||||||
if (surface && ll) {
|
if (surface && ll) {
|
||||||
unsigned int posLineStart = pdoc->LineStart(lineDoc);
|
const int posLineStart = pdoc->LineStart(lineDoc);
|
||||||
LayoutLine(lineDoc, surface, vs, ll, wrapWidth);
|
LayoutLine(lineDoc, surface, vs, ll, wrapWidth);
|
||||||
int subLine = 0;
|
const Range rangeSubLine = ll->SubLineRange(0);
|
||||||
int lineStart = ll->LineStart(subLine);
|
const XYPOSITION subLineStart = ll->positions[rangeSubLine.start];
|
||||||
int lineEnd = ll->LineLastVisible(subLine);
|
const int positionInLine = ll->FindPositionFromX(x + subLineStart, rangeSubLine, false);
|
||||||
XYPOSITION subLineStart = ll->positions[lineStart];
|
if (positionInLine < rangeSubLine.end) {
|
||||||
XYPOSITION newX = x;
|
return SelectionPosition(pdoc->MovePositionOutsideChar(positionInLine + posLineStart, 1));
|
||||||
|
|
||||||
if (ll->wrapIndent != 0) {
|
|
||||||
if (lineStart != 0) // Wrapped
|
|
||||||
newX -= ll->wrapIndent;
|
|
||||||
}
|
|
||||||
int i = ll->FindBefore(newX + subLineStart, lineStart, lineEnd);
|
|
||||||
while (i < lineEnd) {
|
|
||||||
if ((newX + subLineStart) < ((ll->positions[i] + ll->positions[i + 1]) / 2)) {
|
|
||||||
retVal = pdoc->MovePositionOutsideChar(i + posLineStart, 1);
|
|
||||||
return SelectionPosition(retVal);
|
|
||||||
}
|
|
||||||
i++;
|
|
||||||
}
|
}
|
||||||
const XYPOSITION spaceWidth = vs.styles[ll->EndLineStyle()].spaceWidth;
|
const XYPOSITION spaceWidth = vs.styles[ll->EndLineStyle()].spaceWidth;
|
||||||
int spaceOffset = (newX + subLineStart - ll->positions[lineEnd] + spaceWidth / 2) / spaceWidth;
|
const int spaceOffset = (x + subLineStart - ll->positions[rangeSubLine.end] + spaceWidth / 2) / spaceWidth;
|
||||||
return SelectionPosition(lineEnd + posLineStart, spaceOffset);
|
return SelectionPosition(rangeSubLine.end + posLineStart, spaceOffset);
|
||||||
}
|
}
|
||||||
return SelectionPosition(retVal);
|
return SelectionPosition(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
int Editor::PositionFromLineX(int lineDoc, int x) {
|
int Editor::PositionFromLineX(int lineDoc, int x) {
|
||||||
@@ -690,6 +655,10 @@ void Editor::RedrawRect(PRectangle rc) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Editor::DiscardOverdraw() {
|
||||||
|
// Overridden on platforms that may draw outside visible area.
|
||||||
|
}
|
||||||
|
|
||||||
void Editor::Redraw() {
|
void Editor::Redraw() {
|
||||||
//Platform::DebugPrintf("Redraw all\n");
|
//Platform::DebugPrintf("Redraw all\n");
|
||||||
PRectangle rcClient = GetClientRectangle();
|
PRectangle rcClient = GetClientRectangle();
|
||||||
@@ -700,7 +669,10 @@ void Editor::Redraw() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void Editor::RedrawSelMargin(int line, bool allAfter) {
|
void Editor::RedrawSelMargin(int line, bool allAfter) {
|
||||||
if (!AbandonPaint()) {
|
bool abandonDraw = false;
|
||||||
|
if (!wMargin.GetID()) // Margin in main window so may need to abandon and retry
|
||||||
|
abandonDraw = AbandonPaint();
|
||||||
|
if (!abandonDraw) {
|
||||||
if (vs.maskInLine) {
|
if (vs.maskInLine) {
|
||||||
Redraw();
|
Redraw();
|
||||||
} else {
|
} else {
|
||||||
@@ -1279,7 +1251,7 @@ slop | strict | jumps | even | Caret can go to the margin | When
|
|||||||
1 | 1 | 1 | 1 | No, kept out of UZ | moved to put caret at 3UZ of the margin
|
1 | 1 | 1 | 1 | No, kept out of UZ | moved to put caret at 3UZ of the margin
|
||||||
*/
|
*/
|
||||||
|
|
||||||
Editor::XYScrollPosition Editor::XYScrollToMakeVisible(const SelectionRange range, const XYScrollOptions options) {
|
Editor::XYScrollPosition Editor::XYScrollToMakeVisible(const SelectionRange &range, const XYScrollOptions options) {
|
||||||
PRectangle rcClient = GetTextRectangle();
|
PRectangle rcClient = GetTextRectangle();
|
||||||
Point pt = LocationFromPosition(range.caret);
|
Point pt = LocationFromPosition(range.caret);
|
||||||
Point ptAnchor = LocationFromPosition(range.anchor);
|
Point ptAnchor = LocationFromPosition(range.anchor);
|
||||||
@@ -2400,7 +2372,7 @@ void Editor::LayoutLine(int line, Surface *surface, ViewStyle &vstyle, LineLayou
|
|||||||
- posLineStart;
|
- posLineStart;
|
||||||
p = pdoc->MovePositionOutsideChar(p + 1 + posLineStart, 1) - posLineStart;
|
p = pdoc->MovePositionOutsideChar(p + 1 + posLineStart, 1) - posLineStart;
|
||||||
continue;
|
continue;
|
||||||
} else if (ll->styles[p] != ll->styles[p - 1]) {
|
} else if ((vstyle.wrapState == eWrapWord) && (ll->styles[p] != ll->styles[p - 1])) {
|
||||||
lastGoodBreak = p;
|
lastGoodBreak = p;
|
||||||
} else if (IsSpaceOrTab(ll->chars[p - 1]) && !IsSpaceOrTab(ll->chars[p])) {
|
} else if (IsSpaceOrTab(ll->chars[p - 1]) && !IsSpaceOrTab(ll->chars[p])) {
|
||||||
lastGoodBreak = p;
|
lastGoodBreak = p;
|
||||||
@@ -2585,14 +2557,20 @@ void Editor::DrawEOL(Surface *surface, ViewStyle &vsDraw, PRectangle rcLine, Lin
|
|||||||
char hexits[4];
|
char hexits[4];
|
||||||
const char *ctrlChar;
|
const char *ctrlChar;
|
||||||
unsigned char chEOL = ll->chars[eolPos];
|
unsigned char chEOL = ll->chars[eolPos];
|
||||||
|
int styleMain = ll->styles[eolPos];
|
||||||
|
ColourDesired textBack = TextBackground(vsDraw, overrideBackground, background, eolInSelection, false, styleMain, eolPos, ll);
|
||||||
if (UTF8IsAscii(chEOL)) {
|
if (UTF8IsAscii(chEOL)) {
|
||||||
ctrlChar = ControlCharacterString(chEOL);
|
ctrlChar = ControlCharacterString(chEOL);
|
||||||
|
} else {
|
||||||
|
Representation *repr = reprs.RepresentationFromCharacter(ll->chars + eolPos, ll->numCharsInLine - eolPos);
|
||||||
|
if (repr) {
|
||||||
|
ctrlChar = repr->stringRep.c_str();
|
||||||
|
eolPos = ll->numCharsInLine;
|
||||||
} else {
|
} else {
|
||||||
sprintf(hexits, "x%2X", chEOL);
|
sprintf(hexits, "x%2X", chEOL);
|
||||||
ctrlChar = hexits;
|
ctrlChar = hexits;
|
||||||
}
|
}
|
||||||
int styleMain = ll->styles[eolPos];
|
}
|
||||||
ColourDesired textBack = TextBackground(vsDraw, overrideBackground, background, eolInSelection, false, styleMain, eolPos, ll);
|
|
||||||
ColourDesired textFore = vsDraw.styles[styleMain].fore;
|
ColourDesired textFore = vsDraw.styles[styleMain].fore;
|
||||||
if (eolInSelection && vsDraw.selColours.fore.isSet) {
|
if (eolInSelection && vsDraw.selColours.fore.isSet) {
|
||||||
textFore = (eolInSelection == 1) ? vsDraw.selColours.fore : vsDraw.selAdditionalForeground;
|
textFore = (eolInSelection == 1) ? vsDraw.selColours.fore : vsDraw.selAdditionalForeground;
|
||||||
@@ -3462,7 +3440,7 @@ void Editor::DrawCarets(Surface *surface, ViewStyle &vsDraw, int lineDoc, int xS
|
|||||||
bool caretAtEOL = false;
|
bool caretAtEOL = false;
|
||||||
bool drawBlockCaret = false;
|
bool drawBlockCaret = false;
|
||||||
XYPOSITION widthOverstrikeCaret;
|
XYPOSITION widthOverstrikeCaret;
|
||||||
int caretWidthOffset = 0;
|
XYPOSITION caretWidthOffset = 0;
|
||||||
PRectangle rcCaret = rcLine;
|
PRectangle rcCaret = rcLine;
|
||||||
|
|
||||||
if (posCaret.Position() == pdoc->Length()) { // At end of document
|
if (posCaret.Position() == pdoc->Length()) { // At end of document
|
||||||
@@ -3478,11 +3456,11 @@ void Editor::DrawCarets(Surface *surface, ViewStyle &vsDraw, int lineDoc, int xS
|
|||||||
widthOverstrikeCaret = 3;
|
widthOverstrikeCaret = 3;
|
||||||
|
|
||||||
if (xposCaret > 0)
|
if (xposCaret > 0)
|
||||||
caretWidthOffset = 1; // Move back so overlaps both character cells.
|
caretWidthOffset = 0.51f; // Move back so overlaps both character cells.
|
||||||
xposCaret += xStart;
|
xposCaret += xStart;
|
||||||
if (posDrag.IsValid()) {
|
if (posDrag.IsValid()) {
|
||||||
/* Dragging text, use a line caret */
|
/* Dragging text, use a line caret */
|
||||||
rcCaret.left = xposCaret - caretWidthOffset;
|
rcCaret.left = RoundXYPosition(xposCaret - caretWidthOffset);
|
||||||
rcCaret.right = rcCaret.left + vsDraw.caretWidth;
|
rcCaret.right = rcCaret.left + vsDraw.caretWidth;
|
||||||
} else if (inOverstrike && drawOverstrikeCaret) {
|
} else if (inOverstrike && drawOverstrikeCaret) {
|
||||||
/* Overstrike (insert mode), use a modified bar caret */
|
/* Overstrike (insert mode), use a modified bar caret */
|
||||||
@@ -3500,7 +3478,7 @@ void Editor::DrawCarets(Surface *surface, ViewStyle &vsDraw, int lineDoc, int xS
|
|||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
/* Line caret */
|
/* Line caret */
|
||||||
rcCaret.left = xposCaret - caretWidthOffset;
|
rcCaret.left = RoundXYPosition(xposCaret - caretWidthOffset);
|
||||||
rcCaret.right = rcCaret.left + vsDraw.caretWidth;
|
rcCaret.right = rcCaret.left + vsDraw.caretWidth;
|
||||||
}
|
}
|
||||||
ColourDesired caretColour = mainCaret ? vsDraw.caretcolour : vsDraw.additionalCaretColour;
|
ColourDesired caretColour = mainCaret ? vsDraw.caretcolour : vsDraw.additionalCaretColour;
|
||||||
@@ -5135,6 +5113,7 @@ void Editor::NewLine() {
|
|||||||
// Remove non-main ranges
|
// Remove non-main ranges
|
||||||
InvalidateSelection(sel.RangeMain(), true);
|
InvalidateSelection(sel.RangeMain(), true);
|
||||||
sel.SetSelection(sel.RangeMain());
|
sel.SetSelection(sel.RangeMain());
|
||||||
|
sel.RangeMain().ClearVirtualSpace();
|
||||||
|
|
||||||
// Clear main range and insert line end
|
// Clear main range and insert line end
|
||||||
bool needGroupUndo = !sel.Empty();
|
bool needGroupUndo = !sel.Empty();
|
||||||
@@ -6820,7 +6799,7 @@ int Editor::PositionAfterArea(PRectangle rcArea) const {
|
|||||||
// The start of the document line after the display line after the area
|
// The start of the document line after the display line after the area
|
||||||
// This often means that the line after a modification is restyled which helps
|
// This often means that the line after a modification is restyled which helps
|
||||||
// detect multiline comment additions and heals single line comments
|
// detect multiline comment additions and heals single line comments
|
||||||
int lineAfter = topLine + (rcArea.bottom - 1) / vs.lineHeight + 1;
|
int lineAfter = TopLineOfMain() + (rcArea.bottom - 1) / vs.lineHeight + 1;
|
||||||
if (lineAfter < cs.LinesDisplayed())
|
if (lineAfter < cs.LinesDisplayed())
|
||||||
return pdoc->LineStart(cs.DocFromDisplay(lineAfter) + 1);
|
return pdoc->LineStart(cs.DocFromDisplay(lineAfter) + 1);
|
||||||
else
|
else
|
||||||
@@ -6830,7 +6809,7 @@ int Editor::PositionAfterArea(PRectangle rcArea) const {
|
|||||||
// Style to a position within the view. If this causes a change at end of last line then
|
// Style to a position within the view. If this causes a change at end of last line then
|
||||||
// affects later lines so style all the viewed text.
|
// affects later lines so style all the viewed text.
|
||||||
void Editor::StyleToPositionInView(Position pos) {
|
void Editor::StyleToPositionInView(Position pos) {
|
||||||
int endWindow = (vs.marginInside) ? (PositionAfterArea(GetClientRectangle())) : (pdoc->Length());
|
int endWindow = PositionAfterArea(GetClientDrawingRectangle());
|
||||||
if (pos > endWindow)
|
if (pos > endWindow)
|
||||||
pos = endWindow;
|
pos = endWindow;
|
||||||
int styleAtEnd = pdoc->StyleAt(pos-1);
|
int styleAtEnd = pdoc->StyleAt(pos-1);
|
||||||
@@ -6838,6 +6817,9 @@ void Editor::StyleToPositionInView(Position pos) {
|
|||||||
if ((endWindow > pos) && (styleAtEnd != pdoc->StyleAt(pos-1))) {
|
if ((endWindow > pos) && (styleAtEnd != pdoc->StyleAt(pos-1))) {
|
||||||
// Style at end of line changed so is multi-line change like starting a comment
|
// Style at end of line changed so is multi-line change like starting a comment
|
||||||
// so require rest of window to be styled.
|
// so require rest of window to be styled.
|
||||||
|
DiscardOverdraw(); // Prepared bitmaps may be invalid
|
||||||
|
// DiscardOverdraw may have truncated client drawing area so recalculate endWindow
|
||||||
|
endWindow = PositionAfterArea(GetClientDrawingRectangle());
|
||||||
pdoc->EnsureStyledTo(endWindow);
|
pdoc->EnsureStyledTo(endWindow);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -338,6 +338,7 @@ protected: // ScintillaBase subclass needs access to much of Editor
|
|||||||
Point DocumentPointFromView(Point ptView); // Convert a point from view space to document
|
Point DocumentPointFromView(Point ptView); // Convert a point from view space to document
|
||||||
int TopLineOfMain() const; // Return the line at Main's y coordinate 0
|
int TopLineOfMain() const; // Return the line at Main's y coordinate 0
|
||||||
virtual PRectangle GetClientRectangle();
|
virtual PRectangle GetClientRectangle();
|
||||||
|
virtual PRectangle GetClientDrawingRectangle();
|
||||||
PRectangle GetTextRectangle();
|
PRectangle GetTextRectangle();
|
||||||
|
|
||||||
int LinesOnScreen();
|
int LinesOnScreen();
|
||||||
@@ -357,6 +358,7 @@ protected: // ScintillaBase subclass needs access to much of Editor
|
|||||||
|
|
||||||
bool AbandonPaint();
|
bool AbandonPaint();
|
||||||
virtual void RedrawRect(PRectangle rc);
|
virtual void RedrawRect(PRectangle rc);
|
||||||
|
virtual void DiscardOverdraw();
|
||||||
virtual void Redraw();
|
virtual void Redraw();
|
||||||
void RedrawSelMargin(int line=-1, bool allAfter=false);
|
void RedrawSelMargin(int line=-1, bool allAfter=false);
|
||||||
PRectangle RectangleFromRange(int start, int end);
|
PRectangle RectangleFromRange(int start, int end);
|
||||||
@@ -412,7 +414,7 @@ protected: // ScintillaBase subclass needs access to much of Editor
|
|||||||
xysVertical=0x2,
|
xysVertical=0x2,
|
||||||
xysHorizontal=0x4,
|
xysHorizontal=0x4,
|
||||||
xysDefault=xysUseMargin|xysVertical|xysHorizontal};
|
xysDefault=xysUseMargin|xysVertical|xysHorizontal};
|
||||||
XYScrollPosition XYScrollToMakeVisible(const SelectionRange range, const XYScrollOptions options);
|
XYScrollPosition XYScrollToMakeVisible(const SelectionRange &range, const XYScrollOptions options);
|
||||||
void SetXYScroll(XYScrollPosition newXY);
|
void SetXYScroll(XYScrollPosition newXY);
|
||||||
void EnsureCaretVisible(bool useMargin=true, bool vert=true, bool horiz=true);
|
void EnsureCaretVisible(bool useMargin=true, bool vert=true, bool horiz=true);
|
||||||
void ScrollRange(SelectionRange range);
|
void ScrollRange(SelectionRange range);
|
||||||
@@ -437,12 +439,12 @@ protected: // ScintillaBase subclass needs access to much of Editor
|
|||||||
ColourDesired SelectionBackground(ViewStyle &vsDraw, bool main) const;
|
ColourDesired SelectionBackground(ViewStyle &vsDraw, bool main) const;
|
||||||
ColourDesired TextBackground(ViewStyle &vsDraw, bool overrideBackground, ColourDesired background, int inSelection, bool inHotspot, int styleMain, int i, LineLayout *ll) const;
|
ColourDesired TextBackground(ViewStyle &vsDraw, bool overrideBackground, ColourDesired background, int inSelection, bool inHotspot, int styleMain, int i, LineLayout *ll) const;
|
||||||
void DrawIndentGuide(Surface *surface, int lineVisible, int lineHeight, int start, PRectangle rcSegment, bool highlight);
|
void DrawIndentGuide(Surface *surface, int lineVisible, int lineHeight, int start, PRectangle rcSegment, bool highlight);
|
||||||
void DrawWrapMarker(Surface *surface, PRectangle rcPlace, bool isEndMarker, ColourDesired wrapColour);
|
static void DrawWrapMarker(Surface *surface, PRectangle rcPlace, bool isEndMarker, ColourDesired wrapColour);
|
||||||
void DrawEOL(Surface *surface, ViewStyle &vsDraw, PRectangle rcLine, LineLayout *ll,
|
void DrawEOL(Surface *surface, ViewStyle &vsDraw, PRectangle rcLine, LineLayout *ll,
|
||||||
int line, int lineEnd, int xStart, int subLine, XYACCUMULATOR subLineStart,
|
int line, int lineEnd, int xStart, int subLine, XYACCUMULATOR subLineStart,
|
||||||
bool overrideBackground, ColourDesired background,
|
bool overrideBackground, ColourDesired background,
|
||||||
bool drawWrapMark, ColourDesired wrapColour);
|
bool drawWrapMark, ColourDesired wrapColour);
|
||||||
void DrawIndicator(int indicNum, int startPos, int endPos, Surface *surface, ViewStyle &vsDraw,
|
static void DrawIndicator(int indicNum, int startPos, int endPos, Surface *surface, ViewStyle &vsDraw,
|
||||||
int xStart, PRectangle rcLine, LineLayout *ll, int subLine);
|
int xStart, PRectangle rcLine, LineLayout *ll, int subLine);
|
||||||
void DrawIndicators(Surface *surface, ViewStyle &vsDraw, int line, int xStart,
|
void DrawIndicators(Surface *surface, ViewStyle &vsDraw, int line, int xStart,
|
||||||
PRectangle rcLine, LineLayout *ll, int subLine, int lineEnd, bool under);
|
PRectangle rcLine, LineLayout *ll, int subLine, int lineEnd, bool under);
|
||||||
|
@@ -370,9 +370,9 @@ void LineAnnotation::InsertLine(int line) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void LineAnnotation::RemoveLine(int line) {
|
void LineAnnotation::RemoveLine(int line) {
|
||||||
if (annotations.Length() && (line < annotations.Length())) {
|
if (annotations.Length() && (line > 0) && (line <= annotations.Length())) {
|
||||||
delete []annotations[line];
|
delete []annotations[line-1];
|
||||||
annotations.Delete(line);
|
annotations.Delete(line-1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -43,11 +43,6 @@
|
|||||||
using namespace Scintilla;
|
using namespace Scintilla;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
static inline bool IsControlCharacter(int ch) {
|
|
||||||
// iscntrl returns true for lots of chars > 127 which are displayable
|
|
||||||
return ch >= 0 && ch < ' ';
|
|
||||||
}
|
|
||||||
|
|
||||||
LineLayout::LineLayout(int maxLineLength_) :
|
LineLayout::LineLayout(int maxLineLength_) :
|
||||||
lineStarts(0),
|
lineStarts(0),
|
||||||
lenLineStarts(0),
|
lenLineStarts(0),
|
||||||
@@ -132,6 +127,10 @@ int LineLayout::LineLastVisible(int line) const {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Range LineLayout::SubLineRange(int subLine) const {
|
||||||
|
return Range(LineStart(subLine), LineLastVisible(subLine));
|
||||||
|
}
|
||||||
|
|
||||||
bool LineLayout::InLine(int offset, int line) const {
|
bool LineLayout::InLine(int offset, int line) const {
|
||||||
return ((offset >= LineStart(line)) && (offset < LineStart(line + 1))) ||
|
return ((offset >= LineStart(line)) && (offset < LineStart(line + 1))) ||
|
||||||
((offset == numCharsInLine) && (line == (lines-1)));
|
((offset == numCharsInLine) && (line == (lines-1)));
|
||||||
@@ -205,6 +204,47 @@ int LineLayout::FindBefore(XYPOSITION x, int lower, int upper) const {
|
|||||||
return lower;
|
return lower;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
int LineLayout::FindPositionFromX(XYPOSITION x, Range range, bool charPosition) const {
|
||||||
|
int pos = FindBefore(x, range.start, range.end);
|
||||||
|
while (pos < range.end) {
|
||||||
|
if (charPosition) {
|
||||||
|
if (x < (positions[pos + 1])) {
|
||||||
|
return pos;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if (x < ((positions[pos] + positions[pos + 1]) / 2)) {
|
||||||
|
return pos;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
pos++;
|
||||||
|
}
|
||||||
|
return range.end;
|
||||||
|
}
|
||||||
|
|
||||||
|
Point LineLayout::PointFromPosition(int posInLine, int lineHeight) const {
|
||||||
|
Point pt;
|
||||||
|
// In case of very long line put x at arbitrary large position
|
||||||
|
if (posInLine > maxLineLength) {
|
||||||
|
pt.x = positions[maxLineLength] - positions[LineStart(lines)];
|
||||||
|
}
|
||||||
|
|
||||||
|
for (int subLine = 0; subLine < lines; subLine++) {
|
||||||
|
const Range rangeSubLine = SubLineRange(subLine);
|
||||||
|
if (posInLine >= rangeSubLine.start) {
|
||||||
|
pt.y = subLine*lineHeight;
|
||||||
|
if (posInLine <= rangeSubLine.end) {
|
||||||
|
pt.x = positions[posInLine] - positions[rangeSubLine.start];
|
||||||
|
if (rangeSubLine.start != 0) // Wrapped lines may be indented
|
||||||
|
pt.x += wrapIndent;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return pt;
|
||||||
|
}
|
||||||
|
|
||||||
int LineLayout::EndLineStyle() const {
|
int LineLayout::EndLineStyle() const {
|
||||||
return styles[numCharsBeforeEOL > 0 ? numCharsBeforeEOL-1 : 0];
|
return styles[numCharsBeforeEOL > 0 ? numCharsBeforeEOL-1 : 0];
|
||||||
}
|
}
|
||||||
|
@@ -60,12 +60,15 @@ public:
|
|||||||
void Invalidate(validLevel validity_);
|
void Invalidate(validLevel validity_);
|
||||||
int LineStart(int line) const;
|
int LineStart(int line) const;
|
||||||
int LineLastVisible(int line) const;
|
int LineLastVisible(int line) const;
|
||||||
|
Range SubLineRange(int line) const;
|
||||||
bool InLine(int offset, int line) const;
|
bool InLine(int offset, int line) const;
|
||||||
void SetLineStart(int line, int start);
|
void SetLineStart(int line, int start);
|
||||||
void SetBracesHighlight(Range rangeLine, Position braces[],
|
void SetBracesHighlight(Range rangeLine, Position braces[],
|
||||||
char bracesMatchStyle, int xHighlight, bool ignoreStyle);
|
char bracesMatchStyle, int xHighlight, bool ignoreStyle);
|
||||||
void RestoreBracesHighlight(Range rangeLine, Position braces[], bool ignoreStyle);
|
void RestoreBracesHighlight(Range rangeLine, Position braces[], bool ignoreStyle);
|
||||||
int FindBefore(XYPOSITION x, int lower, int upper) const;
|
int FindBefore(XYPOSITION x, int lower, int upper) const;
|
||||||
|
int FindPositionFromX(XYPOSITION x, Range range, bool charPosition) const;
|
||||||
|
Point PointFromPosition(int posInLine, int lineHeight) const;
|
||||||
int EndLineStyle() const;
|
int EndLineStyle() const;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@@ -417,16 +417,16 @@ void ScintillaBase::CallTipShow(Point pt, const char *defn) {
|
|||||||
// space
|
// space
|
||||||
PRectangle rcClient = GetClientRectangle();
|
PRectangle rcClient = GetClientRectangle();
|
||||||
int offset = vs.lineHeight + rc.Height();
|
int offset = vs.lineHeight + rc.Height();
|
||||||
// adjust so it displays below the text.
|
|
||||||
if (rc.top < rcClient.top) {
|
|
||||||
rc.top += offset;
|
|
||||||
rc.bottom += offset;
|
|
||||||
}
|
|
||||||
// adjust so it displays above the text.
|
// adjust so it displays above the text.
|
||||||
if (rc.bottom > rcClient.bottom) {
|
if (rc.bottom > rcClient.bottom) {
|
||||||
rc.top -= offset;
|
rc.top -= offset;
|
||||||
rc.bottom -= offset;
|
rc.bottom -= offset;
|
||||||
}
|
}
|
||||||
|
// adjust so it displays below the text.
|
||||||
|
if (rc.top < rcClient.top) {
|
||||||
|
rc.top += offset;
|
||||||
|
rc.bottom += offset;
|
||||||
|
}
|
||||||
// Now display the window.
|
// Now display the window.
|
||||||
CreateCallTipWindow(rc);
|
CreateCallTipWindow(rc);
|
||||||
ct.wCallTip.SetPositionRelative(rc, wMain);
|
ct.wCallTip.SetPositionRelative(rc, wMain);
|
||||||
|
@@ -310,9 +310,9 @@ void ViewStyle::Refresh(Surface &surface, int tabInChars) {
|
|||||||
styles[i].extraFontFlag = extraFontFlag;
|
styles[i].extraFontFlag = extraFontFlag;
|
||||||
}
|
}
|
||||||
|
|
||||||
CreateFont(styles[STYLE_DEFAULT]);
|
CreateAndAddFont(styles[STYLE_DEFAULT]);
|
||||||
for (unsigned int j=0; j<styles.size(); j++) {
|
for (unsigned int j=0; j<styles.size(); j++) {
|
||||||
CreateFont(styles[j]);
|
CreateAndAddFont(styles[j]);
|
||||||
}
|
}
|
||||||
|
|
||||||
for (FontMap::iterator it = fonts.begin(); it != fonts.end(); ++it) {
|
for (FontMap::iterator it = fonts.begin(); it != fonts.end(); ++it) {
|
||||||
@@ -450,6 +450,9 @@ bool ViewStyle::SetWrapState(int wrapState_) {
|
|||||||
case SC_WRAP_CHAR:
|
case SC_WRAP_CHAR:
|
||||||
wrapStateWanted = eWrapChar;
|
wrapStateWanted = eWrapChar;
|
||||||
break;
|
break;
|
||||||
|
case SC_WRAP_WHITESPACE:
|
||||||
|
wrapStateWanted = eWrapWhitespace;
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
wrapStateWanted = eWrapNone;
|
wrapStateWanted = eWrapNone;
|
||||||
break;
|
break;
|
||||||
@@ -495,7 +498,7 @@ void ViewStyle::AllocStyles(size_t sizeNew) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void ViewStyle::CreateFont(const FontSpecification &fs) {
|
void ViewStyle::CreateAndAddFont(const FontSpecification &fs) {
|
||||||
if (fs.fontName) {
|
if (fs.fontName) {
|
||||||
FontMap::iterator it = fonts.find(fs);
|
FontMap::iterator it = fonts.find(fs);
|
||||||
if (it == fonts.end()) {
|
if (it == fonts.end()) {
|
||||||
|
@@ -56,7 +56,7 @@ enum WhiteSpaceVisibility {wsInvisible=0, wsVisibleAlways=1, wsVisibleAfterInden
|
|||||||
|
|
||||||
typedef std::map<FontSpecification, FontRealised *> FontMap;
|
typedef std::map<FontSpecification, FontRealised *> FontMap;
|
||||||
|
|
||||||
enum WrapMode { eWrapNone, eWrapWord, eWrapChar };
|
enum WrapMode { eWrapNone, eWrapWord, eWrapChar, eWrapWhitespace };
|
||||||
|
|
||||||
class ColourOptional : public ColourDesired {
|
class ColourOptional : public ColourDesired {
|
||||||
public:
|
public:
|
||||||
@@ -178,7 +178,7 @@ public:
|
|||||||
|
|
||||||
private:
|
private:
|
||||||
void AllocStyles(size_t sizeNew);
|
void AllocStyles(size_t sizeNew);
|
||||||
void CreateFont(const FontSpecification &fs);
|
void CreateAndAddFont(const FontSpecification &fs);
|
||||||
FontRealised *Find(const FontSpecification &fs);
|
FontRealised *Find(const FontSpecification &fs);
|
||||||
void FindMaxAscentDescent();
|
void FindMaxAscentDescent();
|
||||||
// Private so can only be copied through copy constructor which ensures font names initialised correctly
|
// Private so can only be copied through copy constructor which ensures font names initialised correctly
|
||||||
|
@@ -61,11 +61,9 @@ XPM::XPM(const char *const *linesForm) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
XPM::~XPM() {
|
XPM::~XPM() {
|
||||||
Clear();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void XPM::Init(const char *textForm) {
|
void XPM::Init(const char *textForm) {
|
||||||
Clear();
|
|
||||||
// Test done is two parts to avoid possibility of overstepping the memory
|
// Test done is two parts to avoid possibility of overstepping the memory
|
||||||
// if memcmp implemented strangely. Must be 4 bytes at least at destination.
|
// if memcmp implemented strangely. Must be 4 bytes at least at destination.
|
||||||
if ((0 == memcmp(textForm, "/* X", 4)) && (0 == memcmp(textForm, "/* XPM */", 9))) {
|
if ((0 == memcmp(textForm, "/* X", 4)) && (0 == memcmp(textForm, "/* XPM */", 9))) {
|
||||||
@@ -81,7 +79,6 @@ void XPM::Init(const char *textForm) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void XPM::Init(const char *const *linesForm) {
|
void XPM::Init(const char *const *linesForm) {
|
||||||
Clear();
|
|
||||||
height = 1;
|
height = 1;
|
||||||
width = 1;
|
width = 1;
|
||||||
nColours = 1;
|
nColours = 1;
|
||||||
@@ -125,9 +122,6 @@ void XPM::Init(const char *const *linesForm) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void XPM::Clear() {
|
|
||||||
}
|
|
||||||
|
|
||||||
void XPM::Draw(Surface *surface, PRectangle &rc) {
|
void XPM::Draw(Surface *surface, PRectangle &rc) {
|
||||||
if (pixels.empty()) {
|
if (pixels.empty()) {
|
||||||
return;
|
return;
|
||||||
|
@@ -30,7 +30,6 @@ public:
|
|||||||
~XPM();
|
~XPM();
|
||||||
void Init(const char *textForm);
|
void Init(const char *textForm);
|
||||||
void Init(const char *const *linesForm);
|
void Init(const char *const *linesForm);
|
||||||
void Clear();
|
|
||||||
/// Decompose image into runs and use FillRectangle for each run
|
/// Decompose image into runs and use FillRectangle for each run
|
||||||
void Draw(Surface *surface, PRectangle &rc);
|
void Draw(Surface *surface, PRectangle &rc);
|
||||||
int GetHeight() const { return height; }
|
int GetHeight() const { return height; }
|
||||||
|
@@ -820,7 +820,7 @@ int wxStyledTextCtrl::StyleGetCase(int style) const
|
|||||||
return SendMsg(SCI_STYLEGETCASE, style, 0);
|
return SendMsg(SCI_STYLEGETCASE, style, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Get the character set of the font in a style.
|
// Get the character get of the font in a style.
|
||||||
int wxStyledTextCtrl::StyleGetCharacterSet(int style) const
|
int wxStyledTextCtrl::StyleGetCharacterSet(int style) const
|
||||||
{
|
{
|
||||||
return SendMsg(SCI_STYLEGETCHARACTERSET, style, 0);
|
return SendMsg(SCI_STYLEGETCHARACTERSET, style, 0);
|
||||||
@@ -2237,7 +2237,7 @@ void wxStyledTextCtrl::AppendText(const wxString& text) {
|
|||||||
SendMsg(SCI_APPENDTEXT, wx2stclen(text, buf), (sptr_t)(const char*)buf);
|
SendMsg(SCI_APPENDTEXT, wx2stclen(text, buf), (sptr_t)(const char*)buf);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Is drawing done in two phases with backgrounds drawn before foregrounds?
|
// Is drawing done in two phases with backgrounds drawn before faoregrounds?
|
||||||
bool wxStyledTextCtrl::GetTwoPhaseDraw() const
|
bool wxStyledTextCtrl::GetTwoPhaseDraw() const
|
||||||
{
|
{
|
||||||
return SendMsg(SCI_GETTWOPHASEDRAW, 0, 0) != 0;
|
return SendMsg(SCI_GETTWOPHASEDRAW, 0, 0) != 0;
|
||||||
@@ -4123,13 +4123,31 @@ void wxStyledTextCtrl::SetCaretLineVisibleAlways(bool alwaysVisible)
|
|||||||
SendMsg(SCI_SETCARETLINEVISIBLEALWAYS, alwaysVisible, 0);
|
SendMsg(SCI_SETCARETLINEVISIBLEALWAYS, alwaysVisible, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Set the line end types that the application wants to use. May not be used if incompatible with lexer or encoding.
|
||||||
|
void wxStyledTextCtrl::SetLineEndTypesAllowed(int lineEndBitSet)
|
||||||
|
{
|
||||||
|
SendMsg(SCI_SETLINEENDTYPESALLOWED, lineEndBitSet, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Get the line end types currently allowed.
|
||||||
|
int wxStyledTextCtrl::GetLineEndTypesAllowed() const
|
||||||
|
{
|
||||||
|
return SendMsg(SCI_GETLINEENDTYPESALLOWED, 0, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Get the line end types currently recognised. May be a subset of the allowed types due to lexer limitation.
|
||||||
|
int wxStyledTextCtrl::GetLineEndTypesActive() const
|
||||||
|
{
|
||||||
|
return SendMsg(SCI_GETLINEENDTYPESACTIVE, 0, 0);
|
||||||
|
}
|
||||||
|
|
||||||
// Set the way a character is drawn.
|
// Set the way a character is drawn.
|
||||||
void wxStyledTextCtrl::SetRepresentation(const wxString& encodedCharacter, const wxString& representation)
|
void wxStyledTextCtrl::SetRepresentation(const wxString& encodedCharacter, const wxString& representation)
|
||||||
{
|
{
|
||||||
SendMsg(SCI_SETREPRESENTATION, (sptr_t)(const char*)wx2stc(encodedCharacter), (sptr_t)(const char*)wx2stc(representation));
|
SendMsg(SCI_SETREPRESENTATION, (sptr_t)(const char*)wx2stc(encodedCharacter), (sptr_t)(const char*)wx2stc(representation));
|
||||||
}
|
}
|
||||||
|
|
||||||
// Get the way a character is drawn.
|
// Set the way a character is drawn.
|
||||||
wxString wxStyledTextCtrl::GetRepresentation(const wxString& encodedCharacter) const {
|
wxString wxStyledTextCtrl::GetRepresentation(const wxString& encodedCharacter) const {
|
||||||
int msg = SCI_GETREPRESENTATION;
|
int msg = SCI_GETREPRESENTATION;
|
||||||
int len = SendMsg(msg, (sptr_t)(const char*)wx2stc(encodedCharacter), (sptr_t)NULL);
|
int len = SendMsg(msg, (sptr_t)(const char*)wx2stc(encodedCharacter), (sptr_t)NULL);
|
||||||
@@ -4290,24 +4308,6 @@ wxString wxStyledTextCtrl::DescribeKeyWordSets() const {
|
|||||||
return stc2wx(buf);
|
return stc2wx(buf);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Set the line end types that the application wants to use. May not be used if incompatible with lexer or encoding.
|
|
||||||
void wxStyledTextCtrl::SetLineEndTypesAllowed(int lineEndBitSet)
|
|
||||||
{
|
|
||||||
SendMsg(SCI_SETLINEENDTYPESALLOWED, lineEndBitSet, 0);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Get the line end types currently allowed.
|
|
||||||
int wxStyledTextCtrl::GetLineEndTypesAllowed() const
|
|
||||||
{
|
|
||||||
return SendMsg(SCI_GETLINEENDTYPESALLOWED, 0, 0);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Get the line end types currently recognised. May be a subset of the allowed types due to lexer limitation.
|
|
||||||
int wxStyledTextCtrl::GetLineEndTypesActive() const
|
|
||||||
{
|
|
||||||
return SendMsg(SCI_GETLINEENDTYPESACTIVE, 0, 0);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Bit set of LineEndType enumertion for which line ends beyond the standard
|
// Bit set of LineEndType enumertion for which line ends beyond the standard
|
||||||
// LF, CR, and CRLF are supported by the lexer.
|
// LF, CR, and CRLF are supported by the lexer.
|
||||||
int wxStyledTextCtrl::GetLineEndTypesSupported() const
|
int wxStyledTextCtrl::GetLineEndTypesSupported() const
|
||||||
@@ -4903,9 +4903,6 @@ void wxStyledTextCtrl::OnSize(wxSizeEvent& WXUNUSED(evt)) {
|
|||||||
if (m_swx) {
|
if (m_swx) {
|
||||||
wxSize sz = GetClientSize();
|
wxSize sz = GetClientSize();
|
||||||
m_swx->DoSize(sz.x, sz.y);
|
m_swx->DoSize(sz.x, sz.y);
|
||||||
#if defined(__WXX11__)
|
|
||||||
PositionScrollbars();
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -5320,7 +5317,7 @@ wxStyledTextEvent::wxStyledTextEvent(const wxStyledTextEvent& event):
|
|||||||
|
|
||||||
/*static*/ wxVersionInfo wxStyledTextCtrl::GetLibraryVersionInfo()
|
/*static*/ wxVersionInfo wxStyledTextCtrl::GetLibraryVersionInfo()
|
||||||
{
|
{
|
||||||
return wxVersionInfo("Scintilla", 3, 3, 9, "Scintilla 3.3.9");
|
return wxVersionInfo("Scintilla", 3, 4, 1, "Scintilla 3.4.1");
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif // wxUSE_STC
|
#endif // wxUSE_STC
|
||||||
|
@@ -1205,7 +1205,7 @@ wxStyledTextEvent::wxStyledTextEvent(const wxStyledTextEvent& event):
|
|||||||
|
|
||||||
/*static*/ wxVersionInfo wxStyledTextCtrl::GetLibraryVersionInfo()
|
/*static*/ wxVersionInfo wxStyledTextCtrl::GetLibraryVersionInfo()
|
||||||
{
|
{
|
||||||
return wxVersionInfo("Scintilla", 3, 3, 9, "Scintilla 3.3.9");
|
return wxVersionInfo("Scintilla", 3, 4, 1, "Scintilla 3.4.1");
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif // wxUSE_STC
|
#endif // wxUSE_STC
|
||||||
|
Reference in New Issue
Block a user