parent
6263ce5dec
commit
6a33bf6c4c
Binary file not shown.
Binary file not shown.
|
@ -30,6 +30,7 @@
|
||||||
**.d text
|
**.d text
|
||||||
**.erl text
|
**.erl text
|
||||||
**.gd text
|
**.gd text
|
||||||
|
**.gui text
|
||||||
**.iss text
|
**.iss text
|
||||||
**.jl text
|
**.jl text
|
||||||
**.json text
|
**.json text
|
||||||
|
@ -40,9 +41,12 @@
|
||||||
**.octave text
|
**.octave text
|
||||||
**.pl text
|
**.pl text
|
||||||
**.p6 text
|
**.p6 text
|
||||||
|
**.ps1 text
|
||||||
**.rb text
|
**.rb text
|
||||||
**.rs text
|
**.rs text
|
||||||
|
**.sql text
|
||||||
**.tcl text
|
**.tcl text
|
||||||
|
**.tsql text
|
||||||
**.err text
|
**.err text
|
||||||
**.mms text
|
**.mms text
|
||||||
**.tex text
|
**.tex text
|
||||||
|
|
|
@ -32,6 +32,7 @@ variableScope:lexilla/lexers/LexBash.cxx
|
||||||
variableScope:lexilla/lexers/LexCmake.cxx
|
variableScope:lexilla/lexers/LexCmake.cxx
|
||||||
knownConditionTrueFalse:lexilla/lexers/LexCmake.cxx
|
knownConditionTrueFalse:lexilla/lexers/LexCmake.cxx
|
||||||
constParameter:lexilla/lexers/LexCLW.cxx
|
constParameter:lexilla/lexers/LexCLW.cxx
|
||||||
|
knownConditionTrueFalse:lexilla/lexers/LexCLW.cxx
|
||||||
constParameter:lexilla/lexers/LexCoffeeScript.cxx
|
constParameter:lexilla/lexers/LexCoffeeScript.cxx
|
||||||
knownConditionTrueFalse:lexilla/lexers/LexCoffeeScript.cxx
|
knownConditionTrueFalse:lexilla/lexers/LexCoffeeScript.cxx
|
||||||
constParameter:lexilla/lexers/LexCPP.cxx
|
constParameter:lexilla/lexers/LexCPP.cxx
|
||||||
|
@ -93,12 +94,14 @@ constParameter:lexilla/lexers/LexSTTXT.cxx
|
||||||
knownConditionTrueFalse:lexilla/lexers/LexTACL.cxx
|
knownConditionTrueFalse:lexilla/lexers/LexTACL.cxx
|
||||||
clarifyCalculation:lexilla/lexers/LexTADS3.cxx
|
clarifyCalculation:lexilla/lexers/LexTADS3.cxx
|
||||||
constParameter:lexilla/lexers/LexTADS3.cxx
|
constParameter:lexilla/lexers/LexTADS3.cxx
|
||||||
|
unreadVariable:lexilla/lexers/LexTCL.cxx
|
||||||
invalidscanf:lexilla/lexers/LexTCMD.cxx
|
invalidscanf:lexilla/lexers/LexTCMD.cxx
|
||||||
constParameter:lexilla/lexers/LexTeX.cxx
|
constParameter:lexilla/lexers/LexTeX.cxx
|
||||||
variableScope:lexilla/lexers/LexTeX.cxx
|
variableScope:lexilla/lexers/LexTeX.cxx
|
||||||
knownConditionTrueFalse:lexilla/lexers/LexTxt2tags.cxx
|
knownConditionTrueFalse:lexilla/lexers/LexTxt2tags.cxx
|
||||||
knownConditionTrueFalse:lexilla/lexers/LexVB.cxx
|
knownConditionTrueFalse:lexilla/lexers/LexVB.cxx
|
||||||
constParameter:lexilla/lexers/LexVerilog.cxx
|
constParameter:lexilla/lexers/LexVerilog.cxx
|
||||||
|
variableScope:lexilla/lexers/LexVerilog.cxx
|
||||||
constParameter:lexilla/lexers/LexVHDL.cxx
|
constParameter:lexilla/lexers/LexVHDL.cxx
|
||||||
shadowVariable:lexilla/lexers/LexVHDL.cxx
|
shadowVariable:lexilla/lexers/LexVHDL.cxx
|
||||||
unreadVariable:lexilla/lexers/LexVHDL.cxx
|
unreadVariable:lexilla/lexers/LexVHDL.cxx
|
||||||
|
@ -142,9 +145,6 @@ constVariable:lexilla/lexers/LexTACL.cxx
|
||||||
constVariable:lexilla/lexers/LexTADS3.cxx
|
constVariable:lexilla/lexers/LexTADS3.cxx
|
||||||
constVariable:lexilla/lexers/LexTAL.cxx
|
constVariable:lexilla/lexers/LexTAL.cxx
|
||||||
|
|
||||||
// Suppress consting argv in main as non-const is standard
|
|
||||||
constParameter:lexilla/examples/CheckLexilla/CheckLexilla.c
|
|
||||||
|
|
||||||
// Suppress everything in test example files
|
// Suppress everything in test example files
|
||||||
*:lexilla/test/examples/*
|
*:lexilla/test/examples/*
|
||||||
|
|
||||||
|
|
|
@ -9,7 +9,7 @@
|
||||||
<meta name="keywords" content="Scintilla, SciTE, Editing Component, Text Editor" />
|
<meta name="keywords" content="Scintilla, SciTE, Editing Component, Text Editor" />
|
||||||
<meta name="Description"
|
<meta name="Description"
|
||||||
content="www.scintilla.org is the home of the Scintilla editing component and SciTE text editor application." />
|
content="www.scintilla.org is the home of the Scintilla editing component and SciTE text editor application." />
|
||||||
<meta name="Date.Modified" content="20220522" />
|
<meta name="Date.Modified" content="20220710" />
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||||
<style type="text/css">
|
<style type="text/css">
|
||||||
.logo {
|
.logo {
|
||||||
|
@ -61,8 +61,8 @@
|
||||||
<font color="#FFCC99" size="4"> A library of language lexers for use with Scintilla</font>
|
<font color="#FFCC99" size="4"> A library of language lexers for use with Scintilla</font>
|
||||||
</td>
|
</td>
|
||||||
<td width="40%" align="right">
|
<td width="40%" align="right">
|
||||||
<font color="#FFCC99" size="3">Release version 5.1.7<br />
|
<font color="#FFCC99" size="3">Release version 5.1.8<br />
|
||||||
Site last modified May 22 2022</font>
|
Site last modified July 10 2022</font>
|
||||||
</td>
|
</td>
|
||||||
<td width="20%">
|
<td width="20%">
|
||||||
|
|
||||||
|
@ -77,12 +77,11 @@
|
||||||
</tr>
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
<ul id="versionlist">
|
<ul id="versionlist">
|
||||||
|
<li>Version 5.1.8 improves F#, MS SQL, PowerShell, and Visual Prolog.</li>
|
||||||
<li>Version 5.1.7 improves CMake, HTML, Matlab, Raku, Ruby, and VHDL.</li>
|
<li>Version 5.1.7 improves CMake, HTML, Matlab, Raku, Ruby, and VHDL.</li>
|
||||||
<li>Version 5.1.6 improves Markdown and Ruby.</li>
|
<li>Version 5.1.6 improves Markdown and Ruby.</li>
|
||||||
<li>Version 5.1.5 improves Bash, Batch, F#, HTML, Inno Setup, and Python.</li>
|
<li>Version 5.1.5 improves Bash, Batch, F#, HTML, Inno Setup, and Python.</li>
|
||||||
<li>Version 5.1.4 adds lexers for AsciiDoc and GDScript.</li>
|
<li>Version 5.1.4 adds lexers for AsciiDoc and GDScript.</li>
|
||||||
<li>Version 5.1.3 improves Rust.</li>
|
|
||||||
<li>Version 5.1.2 improves CSS, F#, Inno Setup, Markdown, and PHP.</li>
|
|
||||||
</ul>
|
</ul>
|
||||||
<ul id="menu">
|
<ul id="menu">
|
||||||
<li id="remote1"><a href="https://www.scintilla.org/SciTEImage.html">Screenshot</a></li>
|
<li id="remote1"><a href="https://www.scintilla.org/SciTEImage.html">Screenshot</a></li>
|
||||||
|
|
|
@ -26,9 +26,9 @@
|
||||||
<table bgcolor="#CCCCCC" width="100%" cellspacing="0" cellpadding="8" border="0">
|
<table bgcolor="#CCCCCC" width="100%" cellspacing="0" cellpadding="8" border="0">
|
||||||
<tr>
|
<tr>
|
||||||
<td>
|
<td>
|
||||||
<font size="4"> <a href="https://www.scintilla.org/lexilla517.zip">
|
<font size="4"> <a href="https://www.scintilla.org/lexilla518.zip">
|
||||||
Windows</a>
|
Windows</a>
|
||||||
<a href="https://www.scintilla.org/lexilla517.tgz">
|
<a href="https://www.scintilla.org/lexilla518.tgz">
|
||||||
GTK/Linux</a>
|
GTK/Linux</a>
|
||||||
</font>
|
</font>
|
||||||
</td>
|
</td>
|
||||||
|
@ -42,7 +42,7 @@
|
||||||
containing very few restrictions.
|
containing very few restrictions.
|
||||||
</p>
|
</p>
|
||||||
<h3>
|
<h3>
|
||||||
Release 5.1.7
|
Release 5.1.8
|
||||||
</h3>
|
</h3>
|
||||||
<h4>
|
<h4>
|
||||||
Source Code
|
Source Code
|
||||||
|
@ -50,8 +50,8 @@
|
||||||
The source code package contains all of the source code for Lexilla but no binary
|
The source code package contains all of the source code for Lexilla but no binary
|
||||||
executable code and is available in
|
executable code and is available in
|
||||||
<ul>
|
<ul>
|
||||||
<li><a href="https://www.scintilla.org/lexilla517.zip">zip format</a> (1.1M) commonly used on Windows</li>
|
<li><a href="https://www.scintilla.org/lexilla518.zip">zip format</a> (1.1M) commonly used on Windows</li>
|
||||||
<li><a href="https://www.scintilla.org/lexilla517.tgz">tgz format</a> (0.9M) commonly used on Linux and compatible operating systems</li>
|
<li><a href="https://www.scintilla.org/lexilla518.tgz">tgz format</a> (0.9M) commonly used on Linux and compatible operating systems</li>
|
||||||
</ul>
|
</ul>
|
||||||
Instructions for building on both Windows and Linux are included in the readme file.
|
Instructions for building on both Windows and Linux are included in the readme file.
|
||||||
<h4>
|
<h4>
|
||||||
|
|
|
@ -583,6 +583,45 @@
|
||||||
</tr>
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
<h2>Releases</h2>
|
<h2>Releases</h2>
|
||||||
|
<h3>
|
||||||
|
<a href="https://www.scintilla.org/lexilla519.zip">Release 5.1.8</a>
|
||||||
|
</h3>
|
||||||
|
<ul>
|
||||||
|
<li>
|
||||||
|
Released 10 July 2022.
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
F#: Recognize nested comments in F#.
|
||||||
|
<a href="https://github.com/ScintillaOrg/lexilla/issues/93">Issue #93</a>.
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
MS SQL: Recognize nested comments in Transact-SQL.
|
||||||
|
<a href="https://github.com/ScintillaOrg/lexilla/issues/87">Issue #87</a>.
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
MS SQL: Preference data types more consistently to not depend on how lexing is broken
|
||||||
|
up into segments. This is needed because there are keywords that are both data type
|
||||||
|
names and function names such as 'CHAR'.
|
||||||
|
<a href="https://github.com/ScintillaOrg/lexilla/issues/90">Issue #90</a>.
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
PowerShell: Fix single quoted strings to not treat backtick as escape.
|
||||||
|
<a href="https://github.com/ScintillaOrg/lexilla/pull/92">Pull request #92</a>.
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
Visual Prolog: Treat \r\n line ends the same as \n. This makes testing easier.
|
||||||
|
Add test case.
|
||||||
|
<a href="https://github.com/ScintillaOrg/lexilla/issues/83">Issue #83</a>.
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
Visual Prolog: Allow disabling verbatim strings.
|
||||||
|
<a href="https://github.com/ScintillaOrg/lexilla/pull/89">Pull request #89</a>.
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
Visual Prolog: Support backquoted strings.
|
||||||
|
<a href="https://github.com/ScintillaOrg/lexilla/pull/89">Pull request #89</a>.
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
<h3>
|
<h3>
|
||||||
<a href="https://www.scintilla.org/lexilla517.zip">Release 5.1.7</a>
|
<a href="https://www.scintilla.org/lexilla517.zip">Release 5.1.7</a>
|
||||||
</h3>
|
</h3>
|
||||||
|
|
|
@ -372,12 +372,14 @@ Sci_Position SCI_METHOD LexerFSharp::WordListSet(int n, const char *wl) {
|
||||||
void SCI_METHOD LexerFSharp::Lex(Sci_PositionU start, Sci_Position length, int initStyle, IDocument *pAccess) {
|
void SCI_METHOD LexerFSharp::Lex(Sci_PositionU start, Sci_Position length, int initStyle, IDocument *pAccess) {
|
||||||
LexAccessor styler(pAccess);
|
LexAccessor styler(pAccess);
|
||||||
StyleContext sc(start, static_cast<Sci_PositionU>(length), initStyle, styler);
|
StyleContext sc(start, static_cast<Sci_PositionU>(length), initStyle, styler);
|
||||||
|
Sci_Position lineCurrent = styler.GetLine(start);
|
||||||
Sci_PositionU cursor = 0;
|
Sci_PositionU cursor = 0;
|
||||||
UnicodeChar uniCh = UnicodeChar();
|
UnicodeChar uniCh = UnicodeChar();
|
||||||
FSharpString fsStr = FSharpString();
|
FSharpString fsStr = FSharpString();
|
||||||
constexpr Sci_Position MAX_WORD_LEN = 64;
|
constexpr Sci_Position MAX_WORD_LEN = 64;
|
||||||
constexpr int SPACE = ' ';
|
constexpr int SPACE = ' ';
|
||||||
int currentBase = 10;
|
int currentBase = 10;
|
||||||
|
int levelNesting = (lineCurrent >= 1) ? styler.GetLineState(lineCurrent - 1) : 0;
|
||||||
bool isInterpolated = false;
|
bool isInterpolated = false;
|
||||||
|
|
||||||
while (sc.More()) {
|
while (sc.More()) {
|
||||||
|
@ -454,9 +456,22 @@ void SCI_METHOD LexerFSharp::Lex(Sci_PositionU start, Sci_Position length, int i
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case SCE_FSHARP_COMMENT:
|
case SCE_FSHARP_COMMENT:
|
||||||
|
if (MatchStreamCommentStart(sc)) {
|
||||||
|
sc.Forward();
|
||||||
|
sc.ch = SPACE;
|
||||||
|
levelNesting++;
|
||||||
|
} else if (MatchStreamCommentEnd(sc)) {
|
||||||
|
if (levelNesting > 0)
|
||||||
|
levelNesting--;
|
||||||
|
else {
|
||||||
|
state = SCE_FSHARP_DEFAULT;
|
||||||
|
colorSpan++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
case SCE_FSHARP_ATTRIBUTE:
|
case SCE_FSHARP_ATTRIBUTE:
|
||||||
case SCE_FSHARP_QUOTATION:
|
case SCE_FSHARP_QUOTATION:
|
||||||
if (MatchStreamCommentEnd(sc) || MatchTypeAttributeEnd(sc) || MatchQuotedExpressionEnd(sc)) {
|
if (MatchTypeAttributeEnd(sc) || MatchQuotedExpressionEnd(sc)) {
|
||||||
state = SCE_FSHARP_DEFAULT;
|
state = SCE_FSHARP_DEFAULT;
|
||||||
colorSpan++;
|
colorSpan++;
|
||||||
}
|
}
|
||||||
|
@ -598,6 +613,11 @@ void SCI_METHOD LexerFSharp::Lex(Sci_PositionU start, Sci_Position length, int i
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (sc.MatchLineEnd()) {
|
||||||
|
styler.SetLineState(lineCurrent++, (sc.state == SCE_FSHARP_COMMENT) ? levelNesting : 0);
|
||||||
|
advance = true;
|
||||||
|
}
|
||||||
|
|
||||||
if (state >= SCE_FSHARP_DEFAULT) {
|
if (state >= SCE_FSHARP_DEFAULT) {
|
||||||
styler.ColourTo(colorSpan, sc.state);
|
styler.ColourTo(colorSpan, sc.state);
|
||||||
sc.ChangeState(state);
|
sc.ChangeState(state);
|
||||||
|
@ -660,9 +680,15 @@ void SCI_METHOD LexerFSharp::Fold(Sci_PositionU start, Sci_Position length, int
|
||||||
}
|
}
|
||||||
|
|
||||||
if (options.foldCommentStream && style == SCE_FSHARP_COMMENT && !inLineComment) {
|
if (options.foldCommentStream && style == SCE_FSHARP_COMMENT && !inLineComment) {
|
||||||
if (stylePrev != SCE_FSHARP_COMMENT) {
|
if (stylePrev != SCE_FSHARP_COMMENT ||
|
||||||
|
(styler.Match(currentPos, "(*") &&
|
||||||
|
!LineContains(styler, "*)", lineCurrent, SCE_FSHARP_COMMENT))) {
|
||||||
levelNext++;
|
levelNext++;
|
||||||
} else if (styleNext != SCE_FSHARP_COMMENT && !atEOL) {
|
} else if ((styleNext != SCE_FSHARP_COMMENT ||
|
||||||
|
((styler.Match(currentPos, "*)") &&
|
||||||
|
!LineContains(styler, "(*", lineCurrent, SCE_FSHARP_COMMENT)) &&
|
||||||
|
styler.GetLineState(lineCurrent - 1) > 0)) &&
|
||||||
|
!atEOL) {
|
||||||
levelNext--;
|
levelNext--;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -116,9 +116,17 @@ static void ColouriseMSSQLDoc(Sci_PositionU startPos, Sci_Position length,
|
||||||
int prevState = initStyle;
|
int prevState = initStyle;
|
||||||
char chPrev = ' ';
|
char chPrev = ' ';
|
||||||
char chNext = styler[startPos];
|
char chNext = styler[startPos];
|
||||||
|
int nesting = 0;
|
||||||
|
|
||||||
|
if (lineCurrent >= 1) {
|
||||||
|
nesting = styler.GetLineState(lineCurrent - 1);
|
||||||
|
}
|
||||||
|
|
||||||
styler.StartSegment(startPos);
|
styler.StartSegment(startPos);
|
||||||
Sci_PositionU lengthDoc = startPos + length;
|
Sci_PositionU lengthDoc = startPos + length;
|
||||||
for (Sci_PositionU i = startPos; i < lengthDoc; i++) {
|
for (Sci_PositionU i = startPos; i < lengthDoc; i++) {
|
||||||
|
const Sci_Position lineStartNext = styler.LineStart(lineCurrent + 1);
|
||||||
|
const bool atEOL = (static_cast<Sci_Position>(i) == (lineStartNext - 1));
|
||||||
char ch = chNext;
|
char ch = chNext;
|
||||||
chNext = styler.SafeGetCharAt(i + 1);
|
chNext = styler.SafeGetCharAt(i + 1);
|
||||||
|
|
||||||
|
@ -185,7 +193,7 @@ static void ColouriseMSSQLDoc(Sci_PositionU startPos, Sci_Position length,
|
||||||
// If is the default or one of the above succeeded
|
// If is the default or one of the above succeeded
|
||||||
if (state == SCE_MSSQL_DEFAULT || state == SCE_MSSQL_DEFAULT_PREF_DATATYPE) {
|
if (state == SCE_MSSQL_DEFAULT || state == SCE_MSSQL_DEFAULT_PREF_DATATYPE) {
|
||||||
if (iswordstart(ch)) {
|
if (iswordstart(ch)) {
|
||||||
styler.ColourTo(i - 1, SCE_MSSQL_DEFAULT);
|
styler.ColourTo(i - 1, state);
|
||||||
prevState = state;
|
prevState = state;
|
||||||
state = SCE_MSSQL_IDENTIFIER;
|
state = SCE_MSSQL_IDENTIFIER;
|
||||||
} else if (ch == '/' && chNext == '*') {
|
} else if (ch == '/' && chNext == '*') {
|
||||||
|
@ -193,7 +201,7 @@ static void ColouriseMSSQLDoc(Sci_PositionU startPos, Sci_Position length,
|
||||||
prevState = state;
|
prevState = state;
|
||||||
state = SCE_MSSQL_COMMENT;
|
state = SCE_MSSQL_COMMENT;
|
||||||
} else if (ch == '-' && chNext == '-') {
|
} else if (ch == '-' && chNext == '-') {
|
||||||
styler.ColourTo(i - 1, SCE_MSSQL_DEFAULT);
|
styler.ColourTo(i - 1, state);
|
||||||
prevState = state;
|
prevState = state;
|
||||||
state = SCE_MSSQL_LINE_COMMENT;
|
state = SCE_MSSQL_LINE_COMMENT;
|
||||||
} else if (ch == '\'') {
|
} else if (ch == '\'') {
|
||||||
|
@ -209,7 +217,7 @@ static void ColouriseMSSQLDoc(Sci_PositionU startPos, Sci_Position length,
|
||||||
prevState = state;
|
prevState = state;
|
||||||
state = SCE_MSSQL_COLUMN_NAME_2;
|
state = SCE_MSSQL_COLUMN_NAME_2;
|
||||||
} else if (isoperator(ch)) {
|
} else if (isoperator(ch)) {
|
||||||
styler.ColourTo(i - 1, SCE_MSSQL_DEFAULT);
|
styler.ColourTo(i - 1, state);
|
||||||
styler.ColourTo(i, SCE_MSSQL_OPERATOR);
|
styler.ColourTo(i, SCE_MSSQL_OPERATOR);
|
||||||
//~ style = SCE_MSSQL_DEFAULT;
|
//~ style = SCE_MSSQL_DEFAULT;
|
||||||
prevState = state;
|
prevState = state;
|
||||||
|
@ -227,8 +235,12 @@ static void ColouriseMSSQLDoc(Sci_PositionU startPos, Sci_Position length,
|
||||||
|
|
||||||
// When the last char is part of the state...
|
// When the last char is part of the state...
|
||||||
} else if (state == SCE_MSSQL_COMMENT) {
|
} else if (state == SCE_MSSQL_COMMENT) {
|
||||||
if (ch == '/' && chPrev == '*') {
|
if (ch == '/' && chNext == '*')
|
||||||
if (((i > (styler.GetStartSegment() + 2)) || ((initStyle == SCE_MSSQL_COMMENT) &&
|
nesting++;
|
||||||
|
else if (ch == '/' && chPrev == '*') {
|
||||||
|
if (nesting > 0)
|
||||||
|
nesting--;
|
||||||
|
else if (((i > (styler.GetStartSegment() + 2)) || ((initStyle == SCE_MSSQL_COMMENT) &&
|
||||||
(styler.GetStartSegment() == startPos)))) {
|
(styler.GetStartSegment() == startPos)))) {
|
||||||
styler.ColourTo(i, state);
|
styler.ColourTo(i, state);
|
||||||
//~ state = SCE_MSSQL_COMMENT;
|
//~ state = SCE_MSSQL_COMMENT;
|
||||||
|
@ -273,6 +285,9 @@ static void ColouriseMSSQLDoc(Sci_PositionU startPos, Sci_Position length,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (atEOL)
|
||||||
|
styler.SetLineState(lineCurrent++, (state == SCE_MSSQL_COMMENT) ? nesting : 0);
|
||||||
|
|
||||||
chPrev = ch;
|
chPrev = ch;
|
||||||
}
|
}
|
||||||
styler.ColourTo(lengthDoc - 1, state);
|
styler.ColourTo(lengthDoc - 1, state);
|
||||||
|
|
|
@ -85,8 +85,6 @@ static void ColourisePowerShellDoc(Sci_PositionU startPos, Sci_Position length,
|
||||||
// This is a single quote string
|
// This is a single quote string
|
||||||
if (sc.ch == '\'') {
|
if (sc.ch == '\'') {
|
||||||
sc.ForwardSetState(SCE_POWERSHELL_DEFAULT);
|
sc.ForwardSetState(SCE_POWERSHELL_DEFAULT);
|
||||||
} else if (sc.ch == '`') {
|
|
||||||
sc.Forward(); // skip next escaped character
|
|
||||||
}
|
}
|
||||||
} else if (sc.state == SCE_POWERSHELL_HERE_STRING) {
|
} else if (sc.state == SCE_POWERSHELL_HERE_STRING) {
|
||||||
// This is a doubles quotes here-string
|
// This is a doubles quotes here-string
|
||||||
|
|
|
@ -48,7 +48,11 @@ using namespace Lexilla;
|
||||||
|
|
||||||
// Options used for LexerVisualProlog
|
// Options used for LexerVisualProlog
|
||||||
struct OptionsVisualProlog {
|
struct OptionsVisualProlog {
|
||||||
|
bool verbatimStrings;
|
||||||
|
bool backQuotedStrings;
|
||||||
OptionsVisualProlog() {
|
OptionsVisualProlog() {
|
||||||
|
verbatimStrings = true;
|
||||||
|
backQuotedStrings = false;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -62,6 +66,10 @@ static const char *const visualPrologWordLists[] = {
|
||||||
|
|
||||||
struct OptionSetVisualProlog : public OptionSet<OptionsVisualProlog> {
|
struct OptionSetVisualProlog : public OptionSet<OptionsVisualProlog> {
|
||||||
OptionSetVisualProlog() {
|
OptionSetVisualProlog() {
|
||||||
|
DefineProperty("lexer.visualprolog.verbatim.strings", &OptionsVisualProlog::verbatimStrings,
|
||||||
|
"Set to 0 to disable highlighting verbatim strings using '@'.");
|
||||||
|
DefineProperty("lexer.visualprolog.backquoted.strings", &OptionsVisualProlog::backQuotedStrings,
|
||||||
|
"Set to 1 to enable using back quotes (``) to delimit strings.");
|
||||||
DefineWordListSets(visualPrologWordLists);
|
DefineWordListSets(visualPrologWordLists);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
@ -333,7 +341,7 @@ void SCI_METHOD LexerVisualProlog::Lex(Sci_PositionU startPos, Sci_Position leng
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case SCE_VISUALPROLOG_COMMENT_LINE:
|
case SCE_VISUALPROLOG_COMMENT_LINE:
|
||||||
if (sc.atLineEnd) {
|
if (sc.MatchLineEnd()) {
|
||||||
int nextState = (nestLevel == 0) ? SCE_VISUALPROLOG_DEFAULT : SCE_VISUALPROLOG_COMMENT_BLOCK;
|
int nextState = (nestLevel == 0) ? SCE_VISUALPROLOG_DEFAULT : SCE_VISUALPROLOG_COMMENT_BLOCK;
|
||||||
sc.SetState(nextState);
|
sc.SetState(nextState);
|
||||||
} else if (sc.Match('@')) {
|
} else if (sc.Match('@')) {
|
||||||
|
@ -342,13 +350,13 @@ void SCI_METHOD LexerVisualProlog::Lex(Sci_PositionU startPos, Sci_Position leng
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case SCE_VISUALPROLOG_COMMENT_KEY_ERROR:
|
case SCE_VISUALPROLOG_COMMENT_KEY_ERROR:
|
||||||
if (!setDoxygen.Contains(sc.ch) || sc.atLineEnd) {
|
if (!setDoxygen.Contains(sc.ch) || sc.MatchLineEnd()) {
|
||||||
char s[1000];
|
char s[1000];
|
||||||
sc.GetCurrent(s, sizeof(s));
|
sc.GetCurrent(s, sizeof(s));
|
||||||
if (docKeywords.InList(s+1)) {
|
if (docKeywords.InList(s+1)) {
|
||||||
sc.ChangeState(SCE_VISUALPROLOG_COMMENT_KEY);
|
sc.ChangeState(SCE_VISUALPROLOG_COMMENT_KEY);
|
||||||
}
|
}
|
||||||
if (SCE_VISUALPROLOG_COMMENT_LINE == styleBeforeDocKeyword && sc.atLineEnd) {
|
if (SCE_VISUALPROLOG_COMMENT_LINE == styleBeforeDocKeyword && sc.MatchLineEnd()) {
|
||||||
// end line comment
|
// end line comment
|
||||||
int nextState = (nestLevel == 0) ? SCE_VISUALPROLOG_DEFAULT : SCE_VISUALPROLOG_COMMENT_BLOCK;
|
int nextState = (nestLevel == 0) ? SCE_VISUALPROLOG_DEFAULT : SCE_VISUALPROLOG_COMMENT_BLOCK;
|
||||||
sc.SetState(nextState);
|
sc.SetState(nextState);
|
||||||
|
@ -372,7 +380,7 @@ void SCI_METHOD LexerVisualProlog::Lex(Sci_PositionU startPos, Sci_Position leng
|
||||||
sc.SetState(SCE_VISUALPROLOG_STRING);
|
sc.SetState(SCE_VISUALPROLOG_STRING);
|
||||||
// Falls through.
|
// Falls through.
|
||||||
case SCE_VISUALPROLOG_STRING:
|
case SCE_VISUALPROLOG_STRING:
|
||||||
if (sc.atLineEnd) {
|
if (sc.MatchLineEnd()) {
|
||||||
sc.SetState(SCE_VISUALPROLOG_STRING_EOL_OPEN);
|
sc.SetState(SCE_VISUALPROLOG_STRING_EOL_OPEN);
|
||||||
} else if (sc.Match(closingQuote)) {
|
} else if (sc.Match(closingQuote)) {
|
||||||
sc.ForwardSetState(SCE_VISUALPROLOG_DEFAULT);
|
sc.ForwardSetState(SCE_VISUALPROLOG_DEFAULT);
|
||||||
|
@ -388,11 +396,13 @@ void SCI_METHOD LexerVisualProlog::Lex(Sci_PositionU startPos, Sci_Position leng
|
||||||
break;
|
break;
|
||||||
case SCE_VISUALPROLOG_STRING_VERBATIM_SPECIAL:
|
case SCE_VISUALPROLOG_STRING_VERBATIM_SPECIAL:
|
||||||
case SCE_VISUALPROLOG_STRING_VERBATIM_EOL:
|
case SCE_VISUALPROLOG_STRING_VERBATIM_EOL:
|
||||||
|
if(sc.state == SCE_VISUALPROLOG_STRING_VERBATIM_EOL && !sc.atLineStart)
|
||||||
|
break;
|
||||||
// return to SCE_VISUALPROLOG_STRING_VERBATIM and treat as such (fall-through)
|
// return to SCE_VISUALPROLOG_STRING_VERBATIM and treat as such (fall-through)
|
||||||
sc.SetState(SCE_VISUALPROLOG_STRING_VERBATIM);
|
sc.SetState(SCE_VISUALPROLOG_STRING_VERBATIM);
|
||||||
// Falls through.
|
// Falls through.
|
||||||
case SCE_VISUALPROLOG_STRING_VERBATIM:
|
case SCE_VISUALPROLOG_STRING_VERBATIM:
|
||||||
if (sc.atLineEnd) {
|
if (sc.MatchLineEnd()) {
|
||||||
sc.SetState(SCE_VISUALPROLOG_STRING_VERBATIM_EOL);
|
sc.SetState(SCE_VISUALPROLOG_STRING_VERBATIM_EOL);
|
||||||
} else if (sc.Match(closingQuote)) {
|
} else if (sc.Match(closingQuote)) {
|
||||||
if (closingQuote == sc.chNext) {
|
if (closingQuote == sc.chNext) {
|
||||||
|
@ -405,7 +415,7 @@ void SCI_METHOD LexerVisualProlog::Lex(Sci_PositionU startPos, Sci_Position leng
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (sc.atLineEnd) {
|
if (sc.MatchLineEnd()) {
|
||||||
// Update the line state, so it can be seen by next line
|
// Update the line state, so it can be seen by next line
|
||||||
int lineState = 0;
|
int lineState = 0;
|
||||||
if (SCE_VISUALPROLOG_STRING_VERBATIM_EOL == sc.state) {
|
if (SCE_VISUALPROLOG_STRING_VERBATIM_EOL == sc.state) {
|
||||||
|
@ -419,7 +429,7 @@ void SCI_METHOD LexerVisualProlog::Lex(Sci_PositionU startPos, Sci_Position leng
|
||||||
|
|
||||||
// Determine if a new state should be entered.
|
// Determine if a new state should be entered.
|
||||||
if (sc.state == SCE_VISUALPROLOG_DEFAULT) {
|
if (sc.state == SCE_VISUALPROLOG_DEFAULT) {
|
||||||
if (sc.Match('@') && isOpenStringVerbatim(sc.chNext, closingQuote)) {
|
if (options.verbatimStrings && sc.Match('@') && isOpenStringVerbatim(sc.chNext, closingQuote)) {
|
||||||
sc.SetState(SCE_VISUALPROLOG_STRING_VERBATIM);
|
sc.SetState(SCE_VISUALPROLOG_STRING_VERBATIM);
|
||||||
sc.Forward();
|
sc.Forward();
|
||||||
} else if (IsADigit(sc.ch) || (sc.Match('.') && IsADigit(sc.chNext))) {
|
} else if (IsADigit(sc.ch) || (sc.Match('.') && IsADigit(sc.chNext))) {
|
||||||
|
@ -442,9 +452,13 @@ void SCI_METHOD LexerVisualProlog::Lex(Sci_PositionU startPos, Sci_Position leng
|
||||||
} else if (sc.Match('"')) {
|
} else if (sc.Match('"')) {
|
||||||
closingQuote = '"';
|
closingQuote = '"';
|
||||||
sc.SetState(SCE_VISUALPROLOG_STRING);
|
sc.SetState(SCE_VISUALPROLOG_STRING);
|
||||||
|
} else if (options.backQuotedStrings && sc.Match('`')) {
|
||||||
|
closingQuote = '`';
|
||||||
|
sc.SetState(SCE_VISUALPROLOG_STRING);
|
||||||
} else if (sc.Match('#')) {
|
} else if (sc.Match('#')) {
|
||||||
sc.SetState(SCE_VISUALPROLOG_KEY_DIRECTIVE);
|
sc.SetState(SCE_VISUALPROLOG_KEY_DIRECTIVE);
|
||||||
} else if (isoperator(static_cast<char>(sc.ch)) || sc.Match('\\')) {
|
} else if (isoperator(static_cast<char>(sc.ch)) || sc.Match('\\') ||
|
||||||
|
(!options.verbatimStrings && sc.Match('@'))) {
|
||||||
sc.SetState(SCE_VISUALPROLOG_OPERATOR);
|
sc.SetState(SCE_VISUALPROLOG_OPERATOR);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -20,6 +20,7 @@ using namespace Lexilla;
|
||||||
namespace Lexilla {
|
namespace Lexilla {
|
||||||
|
|
||||||
bool LexAccessor::MatchIgnoreCase(Sci_Position pos, const char *s) {
|
bool LexAccessor::MatchIgnoreCase(Sci_Position pos, const char *s) {
|
||||||
|
assert(s);
|
||||||
for (; *s; s++, pos++) {
|
for (; *s; s++, pos++) {
|
||||||
if (*s != MakeLowerCase(SafeGetCharAt(pos))) {
|
if (*s != MakeLowerCase(SafeGetCharAt(pos))) {
|
||||||
return false;
|
return false;
|
||||||
|
@ -29,7 +30,8 @@ bool LexAccessor::MatchIgnoreCase(Sci_Position pos, const char *s) {
|
||||||
}
|
}
|
||||||
|
|
||||||
void LexAccessor::GetRange(Sci_PositionU startPos_, Sci_PositionU endPos_, char *s, Sci_PositionU len) {
|
void LexAccessor::GetRange(Sci_PositionU startPos_, Sci_PositionU endPos_, char *s, Sci_PositionU len) {
|
||||||
assert(startPos_ <= endPos_ && len != 0 && s != nullptr);
|
assert(s);
|
||||||
|
assert(startPos_ <= endPos_ && len != 0);
|
||||||
endPos_ = std::min(endPos_, startPos_ + len - 1);
|
endPos_ = std::min(endPos_, startPos_ + len - 1);
|
||||||
len = endPos_ - startPos_;
|
len = endPos_ - startPos_;
|
||||||
if (startPos_ >= static_cast<Sci_PositionU>(startPos) && endPos_ <= static_cast<Sci_PositionU>(endPos)) {
|
if (startPos_ >= static_cast<Sci_PositionU>(startPos) && endPos_ <= static_cast<Sci_PositionU>(endPos)) {
|
||||||
|
@ -42,6 +44,7 @@ void LexAccessor::GetRange(Sci_PositionU startPos_, Sci_PositionU endPos_, char
|
||||||
}
|
}
|
||||||
|
|
||||||
void LexAccessor::GetRangeLowered(Sci_PositionU startPos_, Sci_PositionU endPos_, char *s, Sci_PositionU len) {
|
void LexAccessor::GetRangeLowered(Sci_PositionU startPos_, Sci_PositionU endPos_, char *s, Sci_PositionU len) {
|
||||||
|
assert(s);
|
||||||
GetRange(startPos_, endPos_, s, len);
|
GetRange(startPos_, endPos_, s, len);
|
||||||
while (*s) {
|
while (*s) {
|
||||||
if (*s >= 'A' && *s <= 'Z') {
|
if (*s >= 'A' && *s <= 'Z') {
|
||||||
|
|
|
@ -69,6 +69,9 @@ public:
|
||||||
case 950:
|
case 950:
|
||||||
case 1361:
|
case 1361:
|
||||||
encodingType = EncodingType::dbcs;
|
encodingType = EncodingType::dbcs;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
char operator[](Sci_Position position) {
|
char operator[](Sci_Position position) {
|
||||||
|
@ -101,6 +104,7 @@ public:
|
||||||
return encodingType;
|
return encodingType;
|
||||||
}
|
}
|
||||||
bool Match(Sci_Position pos, const char *s) {
|
bool Match(Sci_Position pos, const char *s) {
|
||||||
|
assert(s);
|
||||||
for (int i=0; *s; i++) {
|
for (int i=0; *s; i++) {
|
||||||
if (*s != SafeGetCharAt(pos+i))
|
if (*s != SafeGetCharAt(pos+i))
|
||||||
return false;
|
return false;
|
||||||
|
|
|
@ -65,6 +65,8 @@ class OptionSet {
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
default:
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
|
@ -8,6 +8,7 @@
|
||||||
// Maintain a dictionary of properties
|
// Maintain a dictionary of properties
|
||||||
|
|
||||||
#include <cstdlib>
|
#include <cstdlib>
|
||||||
|
#include <cassert>
|
||||||
#include <cstring>
|
#include <cstring>
|
||||||
|
|
||||||
#include <string>
|
#include <string>
|
||||||
|
@ -68,6 +69,7 @@ const char *PropSetSimple::Get(std::string_view key) const {
|
||||||
|
|
||||||
int PropSetSimple::GetInt(std::string_view key, int defaultValue) const {
|
int PropSetSimple::GetInt(std::string_view key, int defaultValue) const {
|
||||||
const char *val = Get(key);
|
const char *val = Get(key);
|
||||||
|
assert(val);
|
||||||
if (*val) {
|
if (*val) {
|
||||||
return atoi(val);
|
return atoi(val);
|
||||||
}
|
}
|
||||||
|
|
|
@ -24,6 +24,7 @@ namespace {
|
||||||
* after each word.
|
* after each word.
|
||||||
*/
|
*/
|
||||||
std::unique_ptr<char *[]> ArrayFromWordList(char *wordlist, size_t slen, size_t *len, bool onlyLineEnds = false) {
|
std::unique_ptr<char *[]> ArrayFromWordList(char *wordlist, size_t slen, size_t *len, bool onlyLineEnds = false) {
|
||||||
|
assert(wordlist);
|
||||||
size_t words = 0;
|
size_t words = 0;
|
||||||
// For rapid determination of whether a character is a separator, build
|
// For rapid determination of whether a character is a separator, build
|
||||||
// a look up table.
|
// a look up table.
|
||||||
|
|
|
@ -90,12 +90,13 @@
|
||||||
<ItemDefinitionGroup>
|
<ItemDefinitionGroup>
|
||||||
<ClCompile>
|
<ClCompile>
|
||||||
<WarningLevel>Level4</WarningLevel>
|
<WarningLevel>Level4</WarningLevel>
|
||||||
<PreprocessorDefinitions>WIN32;SCI_LEXER;_CRT_SECURE_NO_DEPRECATE;_SCL_SECURE_NO_WARNINGS;_WINDOWS;_USRDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
<PreprocessorDefinitions>WIN32;SCI_LEXER;_CRT_SECURE_NO_DEPRECATE;_WINDOWS;_USRDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
<AdditionalIncludeDirectories>..\include;..\..\scintilla\include;..\lexlib;</AdditionalIncludeDirectories>
|
<AdditionalIncludeDirectories>..\include;..\..\scintilla\include;..\lexlib;</AdditionalIncludeDirectories>
|
||||||
<BrowseInformation>true</BrowseInformation>
|
<BrowseInformation>true</BrowseInformation>
|
||||||
<MultiProcessorCompilation>true</MultiProcessorCompilation>
|
<MultiProcessorCompilation>true</MultiProcessorCompilation>
|
||||||
<MinimalRebuild>false</MinimalRebuild>
|
<MinimalRebuild>false</MinimalRebuild>
|
||||||
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
|
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
|
||||||
|
<LanguageStandard>stdcpp17</LanguageStandard>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<Link>
|
<Link>
|
||||||
<SubSystem>Windows</SubSystem>
|
<SubSystem>Windows</SubSystem>
|
||||||
|
@ -108,7 +109,6 @@
|
||||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||||
<ClCompile>
|
<ClCompile>
|
||||||
<PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
<PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
<LanguageStandard>stdcpp17</LanguageStandard>
|
|
||||||
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
|
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<Link>
|
<Link>
|
||||||
|
@ -118,7 +118,6 @@
|
||||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||||
<ClCompile>
|
<ClCompile>
|
||||||
<PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
<PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
<LanguageStandard>stdcpp17</LanguageStandard>
|
|
||||||
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
|
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<Link>
|
<Link>
|
||||||
|
@ -128,7 +127,6 @@
|
||||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'">
|
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'">
|
||||||
<ClCompile>
|
<ClCompile>
|
||||||
<PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
<PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
<LanguageStandard>stdcpp17</LanguageStandard>
|
|
||||||
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
|
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<Link>
|
<Link>
|
||||||
|
@ -141,7 +139,6 @@
|
||||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||||
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
<LanguageStandard>stdcpp17</LanguageStandard>
|
|
||||||
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<Link>
|
<Link>
|
||||||
|
@ -154,7 +151,6 @@
|
||||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||||
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
<LanguageStandard>stdcpp17</LanguageStandard>
|
|
||||||
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<Link>
|
<Link>
|
||||||
|
@ -167,7 +163,6 @@
|
||||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||||
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
<LanguageStandard>stdcpp17</LanguageStandard>
|
|
||||||
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<Link>
|
<Link>
|
||||||
|
|
|
@ -15,7 +15,7 @@
|
||||||
<key>CFBundlePackageType</key>
|
<key>CFBundlePackageType</key>
|
||||||
<string>$(PRODUCT_BUNDLE_PACKAGE_TYPE)</string>
|
<string>$(PRODUCT_BUNDLE_PACKAGE_TYPE)</string>
|
||||||
<key>CFBundleShortVersionString</key>
|
<key>CFBundleShortVersionString</key>
|
||||||
<string>5.1.7</string>
|
<string>5.1.8</string>
|
||||||
<key>CFBundleVersion</key>
|
<key>CFBundleVersion</key>
|
||||||
<string>$(CURRENT_PROJECT_VERSION)</string>
|
<string>$(CURRENT_PROJECT_VERSION)</string>
|
||||||
<key>NSHumanReadableCopyright</key>
|
<key>NSHumanReadableCopyright</key>
|
||||||
|
|
|
@ -851,7 +851,7 @@
|
||||||
buildSettings = {
|
buildSettings = {
|
||||||
CLANG_CXX_LANGUAGE_STANDARD = "gnu++17";
|
CLANG_CXX_LANGUAGE_STANDARD = "gnu++17";
|
||||||
CODE_SIGN_STYLE = Automatic;
|
CODE_SIGN_STYLE = Automatic;
|
||||||
CURRENT_PROJECT_VERSION = 5.1.7;
|
CURRENT_PROJECT_VERSION = 5.1.8;
|
||||||
DEVELOPMENT_TEAM = 4F446KW87E;
|
DEVELOPMENT_TEAM = 4F446KW87E;
|
||||||
DYLIB_COMPATIBILITY_VERSION = 1;
|
DYLIB_COMPATIBILITY_VERSION = 1;
|
||||||
DYLIB_CURRENT_VERSION = 1;
|
DYLIB_CURRENT_VERSION = 1;
|
||||||
|
@ -877,7 +877,7 @@
|
||||||
buildSettings = {
|
buildSettings = {
|
||||||
CLANG_CXX_LANGUAGE_STANDARD = "gnu++17";
|
CLANG_CXX_LANGUAGE_STANDARD = "gnu++17";
|
||||||
CODE_SIGN_STYLE = Automatic;
|
CODE_SIGN_STYLE = Automatic;
|
||||||
CURRENT_PROJECT_VERSION = 5.1.7;
|
CURRENT_PROJECT_VERSION = 5.1.8;
|
||||||
DEVELOPMENT_TEAM = 4F446KW87E;
|
DEVELOPMENT_TEAM = 4F446KW87E;
|
||||||
DYLIB_COMPATIBILITY_VERSION = 1;
|
DYLIB_COMPATIBILITY_VERSION = 1;
|
||||||
DYLIB_CURRENT_VERSION = 1;
|
DYLIB_CURRENT_VERSION = 1;
|
||||||
|
|
|
@ -4,8 +4,8 @@
|
||||||
|
|
||||||
#include <windows.h>
|
#include <windows.h>
|
||||||
|
|
||||||
#define VERSION_LEXILLA "5.1.7"
|
#define VERSION_LEXILLA "5.1.8"
|
||||||
#define VERSION_WORDS 5, 1, 7, 0
|
#define VERSION_WORDS 5, 1, 8, 0
|
||||||
|
|
||||||
VS_VERSION_INFO VERSIONINFO
|
VS_VERSION_INFO VERSIONINFO
|
||||||
FILEVERSION VERSION_WORDS
|
FILEVERSION VERSION_WORDS
|
||||||
|
|
|
@ -35,7 +35,7 @@ SUBSYSTEM=-SUBSYSTEM:WINDOWS,10.00
|
||||||
!ENDIF
|
!ENDIF
|
||||||
!ENDIF
|
!ENDIF
|
||||||
|
|
||||||
CRTFLAGS=-D_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1 -D_CRT_SECURE_NO_DEPRECATE=1 -D_SCL_SECURE_NO_WARNINGS=1 $(ADD_DEFINE)
|
CRTFLAGS=-D_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1 -D_CRT_SECURE_NO_DEPRECATE=1 $(ADD_DEFINE)
|
||||||
CXXFLAGS=-Zi -TP -MP -W4 -EHsc -std:c++17 $(CRTFLAGS)
|
CXXFLAGS=-Zi -TP -MP -W4 -EHsc -std:c++17 $(CRTFLAGS)
|
||||||
CXXDEBUG=-Od -MTd -DDEBUG
|
CXXDEBUG=-Od -MTd -DDEBUG
|
||||||
CXXNDEBUG=-O1 -MT -DNDEBUG -GL
|
CXXNDEBUG=-O1 -MT -DNDEBUG -GL
|
||||||
|
|
|
@ -113,3 +113,5 @@ There is some support for running benchmarks on lexers and folders. The properti
|
||||||
testlexers.repeat.lex and testlexers.repeat.fold specify the number of times example
|
testlexers.repeat.lex and testlexers.repeat.fold specify the number of times example
|
||||||
documents are lexed or folded. Set to a large number like testlexers.repeat.lex=10000
|
documents are lexed or folded. Set to a large number like testlexers.repeat.lex=10000
|
||||||
then run with a profiler.
|
then run with a profiler.
|
||||||
|
|
||||||
|
A list of styles used in a lex can be displayed with testlexers.list.styles=1.
|
||||||
|
|
|
@ -807,6 +807,21 @@ bool TestFile(const std::filesystem::path &path, const PropertyMap &propertyMap)
|
||||||
success = false;
|
success = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (propertyMap.GetPropertyValue("testlexers.list.styles").value_or(0)) {
|
||||||
|
std::vector<bool> used(0x80);
|
||||||
|
for (Sci_Position pos = 0; pos < pdoc->Length(); pos++) {
|
||||||
|
const unsigned style = pdoc->StyleAt(pos);
|
||||||
|
used.at(style) = true;
|
||||||
|
}
|
||||||
|
std::cout << " ";
|
||||||
|
for (int style = 0; style < 0x80; style++) {
|
||||||
|
if (used.at(style)) {
|
||||||
|
std::cout << style << " ";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
std::cout << "\n";
|
||||||
|
}
|
||||||
|
|
||||||
const std::optional<int> perLineDisable = propertyMap.GetPropertyValue("testlexers.per.line.disable");
|
const std::optional<int> perLineDisable = propertyMap.GetPropertyValue("testlexers.per.line.disable");
|
||||||
const bool disablePerLineTests = perLineDisable.value_or(false);
|
const bool disablePerLineTests = perLineDisable.value_or(false);
|
||||||
|
|
||||||
|
|
|
@ -12,9 +12,9 @@ LIBS = ../bin/liblexilla.lib
|
||||||
!ENDIF
|
!ENDIF
|
||||||
|
|
||||||
!IFDEF DEBUG
|
!IFDEF DEBUG
|
||||||
DEBUG_OPTIONS = -Od -MTd -DDEBUG $(STATIC_FLAG)
|
DEBUG_OPTIONS = -Zi -DEBUG -Od -MTd -DDEBUG $(STATIC_FLAG)
|
||||||
!ELSE
|
!ELSE
|
||||||
DEBUG_OPTIONS=-O1 -MT -DNDEBUG $(STATIC_FLAG) -GL
|
DEBUG_OPTIONS = -O1 -MT -DNDEBUG $(STATIC_FLAG) -GL
|
||||||
!ENDIF
|
!ENDIF
|
||||||
|
|
||||||
CXXFLAGS = /EHsc /std:c++latest $(DEBUG_OPTIONS) $(INCLUDEDIRS)
|
CXXFLAGS = /EHsc /std:c++latest $(DEBUG_OPTIONS) $(INCLUDEDIRS)
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
517
|
518
|
|
@ -15,7 +15,7 @@
|
||||||
<key>CFBundlePackageType</key>
|
<key>CFBundlePackageType</key>
|
||||||
<string>$(PRODUCT_BUNDLE_PACKAGE_TYPE)</string>
|
<string>$(PRODUCT_BUNDLE_PACKAGE_TYPE)</string>
|
||||||
<key>CFBundleShortVersionString</key>
|
<key>CFBundleShortVersionString</key>
|
||||||
<string>5.2.3</string>
|
<string>5.2.4</string>
|
||||||
<key>CFBundleVersion</key>
|
<key>CFBundleVersion</key>
|
||||||
<string>$(CURRENT_PROJECT_VERSION)</string>
|
<string>$(CURRENT_PROJECT_VERSION)</string>
|
||||||
<key>NSHumanReadableCopyright</key>
|
<key>NSHumanReadableCopyright</key>
|
||||||
|
|
|
@ -565,7 +565,7 @@
|
||||||
CLANG_WARN_UNREACHABLE_CODE = YES;
|
CLANG_WARN_UNREACHABLE_CODE = YES;
|
||||||
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
|
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
|
||||||
COPY_PHASE_STRIP = NO;
|
COPY_PHASE_STRIP = NO;
|
||||||
CURRENT_PROJECT_VERSION = 5.2.3;
|
CURRENT_PROJECT_VERSION = 5.2.4;
|
||||||
DEBUG_INFORMATION_FORMAT = dwarf;
|
DEBUG_INFORMATION_FORMAT = dwarf;
|
||||||
ENABLE_STRICT_OBJC_MSGSEND = YES;
|
ENABLE_STRICT_OBJC_MSGSEND = YES;
|
||||||
ENABLE_TESTABILITY = YES;
|
ENABLE_TESTABILITY = YES;
|
||||||
|
@ -627,7 +627,7 @@
|
||||||
CLANG_WARN_UNREACHABLE_CODE = YES;
|
CLANG_WARN_UNREACHABLE_CODE = YES;
|
||||||
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
|
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
|
||||||
COPY_PHASE_STRIP = NO;
|
COPY_PHASE_STRIP = NO;
|
||||||
CURRENT_PROJECT_VERSION = 5.2.3;
|
CURRENT_PROJECT_VERSION = 5.2.4;
|
||||||
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
|
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
|
||||||
ENABLE_NS_ASSERTIONS = NO;
|
ENABLE_NS_ASSERTIONS = NO;
|
||||||
ENABLE_STRICT_OBJC_MSGSEND = YES;
|
ENABLE_STRICT_OBJC_MSGSEND = YES;
|
||||||
|
@ -657,7 +657,7 @@
|
||||||
CODE_SIGN_IDENTITY = "-";
|
CODE_SIGN_IDENTITY = "-";
|
||||||
CODE_SIGN_STYLE = Manual;
|
CODE_SIGN_STYLE = Manual;
|
||||||
COMBINE_HIDPI_IMAGES = YES;
|
COMBINE_HIDPI_IMAGES = YES;
|
||||||
CURRENT_PROJECT_VERSION = 5.2.3;
|
CURRENT_PROJECT_VERSION = 5.2.4;
|
||||||
DEFINES_MODULE = YES;
|
DEFINES_MODULE = YES;
|
||||||
DEVELOPMENT_TEAM = "";
|
DEVELOPMENT_TEAM = "";
|
||||||
DYLIB_COMPATIBILITY_VERSION = 1;
|
DYLIB_COMPATIBILITY_VERSION = 1;
|
||||||
|
@ -691,7 +691,7 @@
|
||||||
CODE_SIGN_IDENTITY = "-";
|
CODE_SIGN_IDENTITY = "-";
|
||||||
CODE_SIGN_STYLE = Manual;
|
CODE_SIGN_STYLE = Manual;
|
||||||
COMBINE_HIDPI_IMAGES = YES;
|
COMBINE_HIDPI_IMAGES = YES;
|
||||||
CURRENT_PROJECT_VERSION = 5.2.3;
|
CURRENT_PROJECT_VERSION = 5.2.4;
|
||||||
DEFINES_MODULE = YES;
|
DEFINES_MODULE = YES;
|
||||||
DEVELOPMENT_TEAM = "";
|
DEVELOPMENT_TEAM = "";
|
||||||
DYLIB_COMPATIBILITY_VERSION = 1;
|
DYLIB_COMPATIBILITY_VERSION = 1;
|
||||||
|
|
|
@ -4708,6 +4708,10 @@ struct Sci_TextToFindFull {
|
||||||
<p>If the call succeeded <code>SCI_GETBIDIRECTIONAL</code> will return the same value otherwise
|
<p>If the call succeeded <code>SCI_GETBIDIRECTIONAL</code> will return the same value otherwise
|
||||||
<code>SC_BIDIRECTIONAL_DISABLED</code> (0) is returned.
|
<code>SC_BIDIRECTIONAL_DISABLED</code> (0) is returned.
|
||||||
</p>
|
</p>
|
||||||
|
<p>Opaque selection drawing (<a class="seealso" href="#SCI_SETSELECTIONLAYER">SC_LAYER_BASE</a>)
|
||||||
|
is not supported in bidirectional mode.
|
||||||
|
Use <code>SC_LAYER_UNDER_TEXT</code> or <code>SC_LAYER_OVER_TEXT</code> instead.
|
||||||
|
</p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<p><b id="SCI_GRABFOCUS">SCI_GRABFOCUS</b><br />
|
<p><b id="SCI_GRABFOCUS">SCI_GRABFOCUS</b><br />
|
||||||
|
|
|
@ -26,9 +26,9 @@
|
||||||
<table bgcolor="#CCCCCC" width="100%" cellspacing="0" cellpadding="8" border="0">
|
<table bgcolor="#CCCCCC" width="100%" cellspacing="0" cellpadding="8" border="0">
|
||||||
<tr>
|
<tr>
|
||||||
<td>
|
<td>
|
||||||
<font size="4"> <a href="https://www.scintilla.org/scintilla523.zip">
|
<font size="4"> <a href="https://www.scintilla.org/scintilla524.zip">
|
||||||
Windows</a>
|
Windows</a>
|
||||||
<a href="https://www.scintilla.org/scintilla523.tgz">
|
<a href="https://www.scintilla.org/scintilla524.tgz">
|
||||||
GTK/Linux</a>
|
GTK/Linux</a>
|
||||||
</font>
|
</font>
|
||||||
</td>
|
</td>
|
||||||
|
@ -42,7 +42,7 @@
|
||||||
containing very few restrictions.
|
containing very few restrictions.
|
||||||
</p>
|
</p>
|
||||||
<h3>
|
<h3>
|
||||||
Release 5.2.3
|
Release 5.2.4
|
||||||
</h3>
|
</h3>
|
||||||
<h4>
|
<h4>
|
||||||
Source Code
|
Source Code
|
||||||
|
@ -50,8 +50,8 @@
|
||||||
The source code package contains all of the source code for Scintilla but no binary
|
The source code package contains all of the source code for Scintilla but no binary
|
||||||
executable code and is available in
|
executable code and is available in
|
||||||
<ul>
|
<ul>
|
||||||
<li><a href="https://www.scintilla.org/scintilla523.zip">zip format</a> (1.3M) commonly used on Windows</li>
|
<li><a href="https://www.scintilla.org/scintilla524.zip">zip format</a> (1.3M) commonly used on Windows</li>
|
||||||
<li><a href="https://www.scintilla.org/scintilla523.tgz">tgz format</a> (1.2M) commonly used on Linux and compatible operating systems</li>
|
<li><a href="https://www.scintilla.org/scintilla524.tgz">tgz format</a> (1.2M) commonly used on Linux and compatible operating systems</li>
|
||||||
</ul>
|
</ul>
|
||||||
Instructions for building on both Windows and Linux are included in the readme file.
|
Instructions for building on both Windows and Linux are included in the readme file.
|
||||||
<h4>
|
<h4>
|
||||||
|
|
|
@ -573,6 +573,29 @@
|
||||||
</tr>
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
<h2>Releases</h2>
|
<h2>Releases</h2>
|
||||||
|
<h3>
|
||||||
|
<a href="https://www.scintilla.org/scintilla524.zip">Release 5.2.4</a>
|
||||||
|
</h3>
|
||||||
|
<ul>
|
||||||
|
<li>
|
||||||
|
Released 10 July 2022.
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
Fix hiding selection when selection layer is SC_LAYER_UNDER_TEXT.
|
||||||
|
<a href="https://sourceforge.net/p/scintilla/bugs/2334/">Bug #2334</a>.
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
Fix bad background colour for additional, secondary, and inactive selections when printing.
|
||||||
|
<a href="https://sourceforge.net/p/scintilla/bugs/2335/">Bug #2335</a>.
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
Fix failures on GTK with non-UTF-8 text when multi-threading due to
|
||||||
|
character set conversion code that was not thread-safe.
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
Fix crash when printing on Win32 in bidirectional mode with a non-empty selection.
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
<h3>
|
<h3>
|
||||||
<a href="https://www.scintilla.org/scintilla523.zip">Release 5.2.3</a>
|
<a href="https://www.scintilla.org/scintilla523.zip">Release 5.2.3</a>
|
||||||
</h3>
|
</h3>
|
||||||
|
|
|
@ -9,7 +9,7 @@
|
||||||
<meta name="keywords" content="Scintilla, SciTE, Editing Component, Text Editor" />
|
<meta name="keywords" content="Scintilla, SciTE, Editing Component, Text Editor" />
|
||||||
<meta name="Description"
|
<meta name="Description"
|
||||||
content="www.scintilla.org is the home of the Scintilla editing component and SciTE text editor application." />
|
content="www.scintilla.org is the home of the Scintilla editing component and SciTE text editor application." />
|
||||||
<meta name="Date.Modified" content="20220522" />
|
<meta name="Date.Modified" content="20220710" />
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||||
<style type="text/css">
|
<style type="text/css">
|
||||||
#versionlist {
|
#versionlist {
|
||||||
|
@ -56,8 +56,8 @@
|
||||||
GTK, and macOS</font>
|
GTK, and macOS</font>
|
||||||
</td>
|
</td>
|
||||||
<td width="40%" align="right">
|
<td width="40%" align="right">
|
||||||
<font color="#FFCC99" size="3"> Release version 5.2.3<br />
|
<font color="#FFCC99" size="3"> Release version 5.2.4<br />
|
||||||
Site last modified May 22 2022</font>
|
Site last modified July 10 2022</font>
|
||||||
</td>
|
</td>
|
||||||
<td width="20%">
|
<td width="20%">
|
||||||
|
|
||||||
|
@ -72,6 +72,7 @@
|
||||||
</tr>
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
<ul id="versionlist">
|
<ul id="versionlist">
|
||||||
|
<li>Version 5.2.4 fixes failures on GTK with multi-threaded layout.</li>
|
||||||
<li>Version 5.2.3 adds 64-bit safe APIs and fixes scrollbar on GTK with Xorg.</li>
|
<li>Version 5.2.3 adds 64-bit safe APIs and fixes scrollbar on GTK with Xorg.</li>
|
||||||
<li>Version 5.2.2 on GTK, scroll horizontally with Shift + Scroll Wheel.</li>
|
<li>Version 5.2.2 on GTK, scroll horizontally with Shift + Scroll Wheel.</li>
|
||||||
<li>Version 5.2.1 fixes leaks on GTK.</li>
|
<li>Version 5.2.1 fixes leaks on GTK.</li>
|
||||||
|
|
|
@ -775,12 +775,11 @@ void SurfaceImpl::DrawTextBase(PRectangle rc, const Font *font_, XYPOSITION ybas
|
||||||
PenColourAlpha(fore);
|
PenColourAlpha(fore);
|
||||||
const XYPOSITION xText = rc.left;
|
const XYPOSITION xText = rc.left;
|
||||||
if (PFont(font_)->fd) {
|
if (PFont(font_)->fd) {
|
||||||
std::string utfForm;
|
|
||||||
if (et == EncodingType::utf8) {
|
if (et == EncodingType::utf8) {
|
||||||
LayoutSetText(layout.get(), text);
|
LayoutSetText(layout.get(), text);
|
||||||
} else {
|
} else {
|
||||||
SetConverter(PFont(font_)->characterSet);
|
SetConverter(PFont(font_)->characterSet);
|
||||||
utfForm = UTF8FromIconv(conv, text);
|
std::string utfForm = UTF8FromIconv(conv, text);
|
||||||
if (utfForm.empty()) { // iconv failed so treat as Latin1
|
if (utfForm.empty()) { // iconv failed so treat as Latin1
|
||||||
utfForm = UTF8FromLatin1(text);
|
utfForm = UTF8FromLatin1(text);
|
||||||
}
|
}
|
||||||
|
@ -897,14 +896,34 @@ void SurfaceImpl::MeasureWidths(const Font *font_, std::string_view text, XYPOSI
|
||||||
PLATFORM_ASSERT(static_cast<size_t>(i) == text.length());
|
PLATFORM_ASSERT(static_cast<size_t>(i) == text.length());
|
||||||
} else {
|
} else {
|
||||||
int positionsCalculated = 0;
|
int positionsCalculated = 0;
|
||||||
|
const char *charSetID = CharacterSetID(PFont(font_)->characterSet);
|
||||||
|
std::string utfForm;
|
||||||
|
{
|
||||||
|
gsize bytesRead = 0;
|
||||||
|
gsize bytesWritten = 0;
|
||||||
|
GError *error = nullptr;
|
||||||
|
UniqueStr textInUTF8(g_convert(text.data(), text.length(),
|
||||||
|
"UTF-8", charSetID,
|
||||||
|
&bytesRead,
|
||||||
|
&bytesWritten,
|
||||||
|
&error));
|
||||||
|
if ((bytesWritten > 0) && (bytesRead == text.length()) && !error) {
|
||||||
|
// Extra allocation here but avoiding it makes code more complex
|
||||||
|
utfForm.assign(textInUTF8.get(), bytesWritten);
|
||||||
|
}
|
||||||
|
if (error) {
|
||||||
|
#ifdef DEBUG
|
||||||
|
fprintf(stderr, "MeasureWidths: %s.\n", error->message);
|
||||||
|
#endif
|
||||||
|
g_error_free(error);
|
||||||
|
}
|
||||||
|
}
|
||||||
if (et == EncodingType::dbcs) {
|
if (et == EncodingType::dbcs) {
|
||||||
SetConverter(PFont(font_)->characterSet);
|
|
||||||
std::string utfForm = UTF8FromIconv(conv, text);
|
|
||||||
if (!utfForm.empty()) {
|
if (!utfForm.empty()) {
|
||||||
// Convert to UTF-8 so can ask Pango for widths, then
|
// Convert to UTF-8 so can ask Pango for widths, then
|
||||||
// Loop through UTF-8 and DBCS forms, taking account of different
|
// Loop through UTF-8 and DBCS forms, taking account of different
|
||||||
// character byte lengths.
|
// character byte lengths.
|
||||||
Converter convMeasure("UCS-2", CharacterSetID(characterSet), false);
|
Converter convMeasure("UCS-2", charSetID, false);
|
||||||
int i = 0;
|
int i = 0;
|
||||||
ClusterIterator iti(layoutMeasure.get(), utfForm);
|
ClusterIterator iti(layoutMeasure.get(), utfForm);
|
||||||
int clusterStart = iti.curIndex;
|
int clusterStart = iti.curIndex;
|
||||||
|
@ -916,7 +935,7 @@ void SurfaceImpl::MeasureWidths(const Font *font_, std::string_view text, XYPOSI
|
||||||
while (!iti.finished) {
|
while (!iti.finished) {
|
||||||
iti.Next();
|
iti.Next();
|
||||||
const int clusterEnd = iti.curIndex;
|
const int clusterEnd = iti.curIndex;
|
||||||
const int places = g_utf8_strlen(utfForm.c_str() + clusterStart, clusterEnd - clusterStart);
|
const int places = g_utf8_strlen(utfForm.data() + clusterStart, clusterEnd - clusterStart);
|
||||||
int place = 1;
|
int place = 1;
|
||||||
while (clusterStart < clusterEnd) {
|
while (clusterStart < clusterEnd) {
|
||||||
size_t lenChar = MultiByteLenFromIconv(convMeasure, text.data()+i, text.length()-i);
|
size_t lenChar = MultiByteLenFromIconv(convMeasure, text.data()+i, text.length()-i);
|
||||||
|
@ -934,12 +953,13 @@ void SurfaceImpl::MeasureWidths(const Font *font_, std::string_view text, XYPOSI
|
||||||
if (positionsCalculated < 1) {
|
if (positionsCalculated < 1) {
|
||||||
const size_t lenPositions = text.length();
|
const size_t lenPositions = text.length();
|
||||||
// Either 8-bit or DBCS conversion failed so treat as 8-bit.
|
// Either 8-bit or DBCS conversion failed so treat as 8-bit.
|
||||||
SetConverter(PFont(font_)->characterSet);
|
|
||||||
const bool rtlCheck = PFont(font_)->characterSet == CharacterSet::Hebrew ||
|
const bool rtlCheck = PFont(font_)->characterSet == CharacterSet::Hebrew ||
|
||||||
PFont(font_)->characterSet == CharacterSet::Arabic;
|
PFont(font_)->characterSet == CharacterSet::Arabic;
|
||||||
std::string utfForm = UTF8FromIconv(conv, text);
|
|
||||||
if (utfForm.empty()) {
|
if (utfForm.empty()) {
|
||||||
utfForm = UTF8FromLatin1(text);
|
utfForm = UTF8FromLatin1(text);
|
||||||
|
#ifdef DEBUG
|
||||||
|
fprintf(stderr, "MeasureWidths: Fall back to Latin1 [%s]\n", utfForm.c_str());
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
size_t i = 0;
|
size_t i = 0;
|
||||||
// Each 8-bit input character may take 1 or 2 bytes in UTF-8
|
// Each 8-bit input character may take 1 or 2 bytes in UTF-8
|
||||||
|
@ -954,9 +974,13 @@ void SurfaceImpl::MeasureWidths(const Font *font_, std::string_view text, XYPOSI
|
||||||
while (!iti.finished) {
|
while (!iti.finished) {
|
||||||
iti.Next();
|
iti.Next();
|
||||||
const int clusterEnd = iti.curIndex;
|
const int clusterEnd = iti.curIndex;
|
||||||
const int ligatureLength = g_utf8_strlen(utfForm.c_str() + clusterStart, clusterEnd - clusterStart);
|
const int ligatureLength = g_utf8_strlen(utfForm.data() + clusterStart, clusterEnd - clusterStart);
|
||||||
if (rtlCheck && ((clusterEnd <= clusterStart) || (ligatureLength == 0) || (ligatureLength > 3))) {
|
if (((i + ligatureLength) > lenPositions) ||
|
||||||
|
(rtlCheck && ((clusterEnd <= clusterStart) || (ligatureLength == 0) || (ligatureLength > 3)))) {
|
||||||
// Something has gone wrong: exit quickly but pretend all the characters are equally spaced:
|
// Something has gone wrong: exit quickly but pretend all the characters are equally spaced:
|
||||||
|
#ifdef DEBUG
|
||||||
|
fprintf(stderr, "MeasureWidths: result too long.\n");
|
||||||
|
#endif
|
||||||
EquallySpaced(layoutMeasure.get(), positions, lenPositions);
|
EquallySpaced(layoutMeasure.get(), positions, lenPositions);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -983,13 +1007,12 @@ void SurfaceImpl::MeasureWidths(const Font *font_, std::string_view text, XYPOSI
|
||||||
|
|
||||||
XYPOSITION SurfaceImpl::WidthText(const Font *font_, std::string_view text) {
|
XYPOSITION SurfaceImpl::WidthText(const Font *font_, std::string_view text) {
|
||||||
if (PFont(font_)->fd) {
|
if (PFont(font_)->fd) {
|
||||||
std::string utfForm;
|
|
||||||
pango_layout_set_font_description(layout.get(), PFont(font_)->fd.get());
|
pango_layout_set_font_description(layout.get(), PFont(font_)->fd.get());
|
||||||
if (et == EncodingType::utf8) {
|
if (et == EncodingType::utf8) {
|
||||||
LayoutSetText(layout.get(), text);
|
LayoutSetText(layout.get(), text);
|
||||||
} else {
|
} else {
|
||||||
SetConverter(PFont(font_)->characterSet);
|
SetConverter(PFont(font_)->characterSet);
|
||||||
utfForm = UTF8FromIconv(conv, text);
|
std::string utfForm = UTF8FromIconv(conv, text);
|
||||||
if (utfForm.empty()) { // iconv failed so treat as Latin1
|
if (utfForm.empty()) { // iconv failed so treat as Latin1
|
||||||
utfForm = UTF8FromLatin1(text);
|
utfForm = UTF8FromLatin1(text);
|
||||||
}
|
}
|
||||||
|
@ -1365,7 +1388,7 @@ class ListBoxX : public ListBox {
|
||||||
WindowID frame;
|
WindowID frame;
|
||||||
WindowID list;
|
WindowID list;
|
||||||
WindowID scroller;
|
WindowID scroller;
|
||||||
void *pixhash;
|
GHashTable *pixhash;
|
||||||
GtkCellRenderer *pixbuf_renderer;
|
GtkCellRenderer *pixbuf_renderer;
|
||||||
GtkCellRenderer *renderer;
|
GtkCellRenderer *renderer;
|
||||||
RGBAImageSet images;
|
RGBAImageSet images;
|
||||||
|
@ -1392,8 +1415,8 @@ public:
|
||||||
ListBoxX&operator=(ListBoxX&&) = delete;
|
ListBoxX&operator=(ListBoxX&&) = delete;
|
||||||
~ListBoxX() noexcept override {
|
~ListBoxX() noexcept override {
|
||||||
if (pixhash) {
|
if (pixhash) {
|
||||||
g_hash_table_foreach((GHashTable *) pixhash, list_image_free, nullptr);
|
g_hash_table_foreach(pixhash, list_image_free, nullptr);
|
||||||
g_hash_table_destroy((GHashTable *) pixhash);
|
g_hash_table_destroy(pixhash);
|
||||||
}
|
}
|
||||||
if (widCached) {
|
if (widCached) {
|
||||||
gtk_widget_destroy(GTK_WIDGET(widCached));
|
gtk_widget_destroy(GTK_WIDGET(widCached));
|
||||||
|
@ -1846,7 +1869,7 @@ static void init_pixmap(ListImage *list_image) noexcept {
|
||||||
void ListBoxX::Append(char *s, int type) {
|
void ListBoxX::Append(char *s, int type) {
|
||||||
ListImage *list_image = nullptr;
|
ListImage *list_image = nullptr;
|
||||||
if ((type >= 0) && pixhash) {
|
if ((type >= 0) && pixhash) {
|
||||||
list_image = static_cast<ListImage *>(g_hash_table_lookup((GHashTable *) pixhash,
|
list_image = static_cast<ListImage *>(g_hash_table_lookup(pixhash,
|
||||||
GINT_TO_POINTER(type)));
|
GINT_TO_POINTER(type)));
|
||||||
}
|
}
|
||||||
GtkTreeIter iter {};
|
GtkTreeIter iter {};
|
||||||
|
@ -2007,7 +2030,7 @@ void ListBoxX::RegisterRGBA(int type, std::unique_ptr<RGBAImage> image) {
|
||||||
if (!pixhash) {
|
if (!pixhash) {
|
||||||
pixhash = g_hash_table_new(g_direct_hash, g_direct_equal);
|
pixhash = g_hash_table_new(g_direct_hash, g_direct_equal);
|
||||||
}
|
}
|
||||||
ListImage *list_image = static_cast<ListImage *>(g_hash_table_lookup((GHashTable *) pixhash,
|
ListImage *list_image = static_cast<ListImage *>(g_hash_table_lookup(pixhash,
|
||||||
GINT_TO_POINTER(type)));
|
GINT_TO_POINTER(type)));
|
||||||
if (list_image) {
|
if (list_image) {
|
||||||
// Drop icon already registered
|
// Drop icon already registered
|
||||||
|
@ -2018,7 +2041,7 @@ void ListBoxX::RegisterRGBA(int type, std::unique_ptr<RGBAImage> image) {
|
||||||
} else {
|
} else {
|
||||||
list_image = g_new0(ListImage, 1);
|
list_image = g_new0(ListImage, 1);
|
||||||
list_image->rgba_data = observe;
|
list_image->rgba_data = observe;
|
||||||
g_hash_table_insert((GHashTable *) pixhash, GINT_TO_POINTER(type),
|
g_hash_table_insert(pixhash, GINT_TO_POINTER(type),
|
||||||
(gpointer) list_image);
|
(gpointer) list_image);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -3231,9 +3231,9 @@ void ScintillaGTK::ClassInit(OBJECT_CLASS *object_class, GtkWidgetClass *widget_
|
||||||
|
|
||||||
static void scintilla_class_init(ScintillaClass *klass) {
|
static void scintilla_class_init(ScintillaClass *klass) {
|
||||||
try {
|
try {
|
||||||
OBJECT_CLASS *object_class = (OBJECT_CLASS *) klass;
|
OBJECT_CLASS *object_class = reinterpret_cast<OBJECT_CLASS *>(klass);
|
||||||
GtkWidgetClass *widget_class = (GtkWidgetClass *) klass;
|
GtkWidgetClass *widget_class = reinterpret_cast<GtkWidgetClass *>(klass);
|
||||||
GtkContainerClass *container_class = (GtkContainerClass *) klass;
|
GtkContainerClass *container_class = reinterpret_cast<GtkContainerClass *>(klass);
|
||||||
|
|
||||||
const GSignalFlags sigflags = static_cast<GSignalFlags>(G_SIGNAL_ACTION | G_SIGNAL_RUN_LAST);
|
const GSignalFlags sigflags = static_cast<GSignalFlags>(G_SIGNAL_ACTION | G_SIGNAL_RUN_LAST);
|
||||||
scintilla_signals[COMMAND_SIGNAL] = g_signal_new(
|
scintilla_signals[COMMAND_SIGNAL] = g_signal_new(
|
||||||
|
|
|
@ -188,7 +188,7 @@ gchar *ScintillaGTKAccessible::GetTextRangeUTF8(Sci::Position startByte, Sci::Po
|
||||||
// like TargetAsUTF8, but avoids a double conversion
|
// like TargetAsUTF8, but avoids a double conversion
|
||||||
if (sci->IsUnicodeMode() || ! *(charSetBuffer = sci->CharacterSetID())) {
|
if (sci->IsUnicodeMode() || ! *(charSetBuffer = sci->CharacterSetID())) {
|
||||||
int len = endByte - startByte;
|
int len = endByte - startByte;
|
||||||
utf8Text = (char *) g_malloc(len + 1);
|
utf8Text = static_cast<gchar *>(g_malloc(len + 1));
|
||||||
sci->pdoc->GetCharRange(utf8Text, startByte, len);
|
sci->pdoc->GetCharRange(utf8Text, startByte, len);
|
||||||
utf8Text[len] = '\0';
|
utf8Text[len] = '\0';
|
||||||
} else {
|
} else {
|
||||||
|
@ -196,7 +196,7 @@ gchar *ScintillaGTKAccessible::GetTextRangeUTF8(Sci::Position startByte, Sci::Po
|
||||||
std::string s = sci->RangeText(startByte, endByte);
|
std::string s = sci->RangeText(startByte, endByte);
|
||||||
std::string tmputf = ConvertText(&s[0], s.length(), "UTF-8", charSetBuffer, false);
|
std::string tmputf = ConvertText(&s[0], s.length(), "UTF-8", charSetBuffer, false);
|
||||||
size_t len = tmputf.length();
|
size_t len = tmputf.length();
|
||||||
utf8Text = (char *) g_malloc(len + 1);
|
utf8Text = static_cast<gchar *>(g_malloc(len + 1));
|
||||||
memcpy(utf8Text, tmputf.c_str(), len);
|
memcpy(utf8Text, tmputf.c_str(), len);
|
||||||
utf8Text[len] = '\0';
|
utf8Text[len] = '\0';
|
||||||
}
|
}
|
||||||
|
@ -1085,11 +1085,11 @@ static GType scintilla_object_accessible_get_type(GType parent_type G_GNUC_UNUSE
|
||||||
static AtkObject *scintilla_object_accessible_new(GType parent_type, GObject *obj) {
|
static AtkObject *scintilla_object_accessible_new(GType parent_type, GObject *obj) {
|
||||||
g_return_val_if_fail(SCINTILLA_IS_OBJECT(obj), nullptr);
|
g_return_val_if_fail(SCINTILLA_IS_OBJECT(obj), nullptr);
|
||||||
|
|
||||||
AtkObject *accessible = (AtkObject *) g_object_new(scintilla_object_accessible_get_type(parent_type),
|
AtkObject *accessible = static_cast<AtkObject *>(g_object_new(scintilla_object_accessible_get_type(parent_type),
|
||||||
#if HAVE_WIDGET_SET_UNSET
|
#if HAVE_WIDGET_SET_UNSET
|
||||||
"widget", obj,
|
"widget", obj,
|
||||||
#endif
|
#endif
|
||||||
nullptr);
|
nullptr));
|
||||||
atk_object_initialize(accessible, obj);
|
atk_object_initialize(accessible, obj);
|
||||||
|
|
||||||
return accessible;
|
return accessible;
|
||||||
|
|
|
@ -13,7 +13,7 @@ TEMPLATE = lib
|
||||||
CONFIG += lib_bundle
|
CONFIG += lib_bundle
|
||||||
CONFIG += c++1z
|
CONFIG += c++1z
|
||||||
|
|
||||||
VERSION = 5.2.3
|
VERSION = 5.2.4
|
||||||
|
|
||||||
SOURCES += \
|
SOURCES += \
|
||||||
ScintillaEdit.cpp \
|
ScintillaEdit.cpp \
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
#!/usr/bin/env python3
|
#!/usr/bin/env python3
|
||||||
# WidgetGen.py - regenerate the ScintillaWidgetCpp.cpp and ScintillaWidgetCpp.h files
|
# WidgetGen.py - regenerate the ScintillaEdit.cpp and ScintillaEdit.h files
|
||||||
# Check that API includes all gtkscintilla2 functions
|
# Check that API includes all gtkscintilla2 functions
|
||||||
|
|
||||||
import sys
|
import sys
|
||||||
|
@ -92,20 +92,6 @@ def arguments(v, stringResult, options):
|
||||||
ret = ret + p2Type + " " + normalisedName(v["Param2Name"], options)
|
ret = ret + p2Type + " " + normalisedName(v["Param2Name"], options)
|
||||||
return ret
|
return ret
|
||||||
|
|
||||||
def printPyFile(f, options):
|
|
||||||
out = []
|
|
||||||
for name in f.order:
|
|
||||||
v = f.features[name]
|
|
||||||
if v["Category"] != "Deprecated":
|
|
||||||
feat = v["FeatureType"]
|
|
||||||
if feat in ["val"]:
|
|
||||||
out.append(name + "=" + v["Value"])
|
|
||||||
if feat in ["evt"]:
|
|
||||||
out.append("SCN_" + name.upper() + "=" + v["Value"])
|
|
||||||
if feat in ["fun"]:
|
|
||||||
out.append("SCI_" + name.upper() + "=" + v["Value"])
|
|
||||||
return out
|
|
||||||
|
|
||||||
def printHFile(f, options):
|
def printHFile(f, options):
|
||||||
out = []
|
out = []
|
||||||
for name in f.order:
|
for name in f.order:
|
||||||
|
@ -202,7 +188,7 @@ def gtkNames():
|
||||||
def usage():
|
def usage():
|
||||||
print("WidgetGen.py [-c|--clean][-h|--help][-u|--underscore-names]")
|
print("WidgetGen.py [-c|--clean][-h|--help][-u|--underscore-names]")
|
||||||
print("")
|
print("")
|
||||||
print("Generate full APIs for ScintillaEdit class and ScintillaConstants.py.")
|
print("Generate full APIs for ScintillaEdit class.")
|
||||||
print("")
|
print("")
|
||||||
print("options:")
|
print("options:")
|
||||||
print("")
|
print("")
|
||||||
|
@ -242,9 +228,6 @@ def main(argv):
|
||||||
"/* ", True, printCPPFile(f, options))
|
"/* ", True, printCPPFile(f, options))
|
||||||
GenerateFile("ScintillaEdit.h.template", "ScintillaEdit.h",
|
GenerateFile("ScintillaEdit.h.template", "ScintillaEdit.h",
|
||||||
"/* ", True, printHFile(f, options))
|
"/* ", True, printHFile(f, options))
|
||||||
GenerateFile("../ScintillaEditPy/ScintillaConstants.py.template",
|
|
||||||
"../ScintillaEditPy/ScintillaConstants.py",
|
|
||||||
"# ", True, printPyFile(f, options))
|
|
||||||
if checkGTK:
|
if checkGTK:
|
||||||
names = set(methodNames(f))
|
names = set(methodNames(f))
|
||||||
#~ print("\n".join(names))
|
#~ print("\n".join(names))
|
||||||
|
@ -259,7 +242,7 @@ def main(argv):
|
||||||
raise
|
raise
|
||||||
|
|
||||||
if cleanGenerated:
|
if cleanGenerated:
|
||||||
for file in ["ScintillaEdit.cpp", "ScintillaEdit.h", "../ScintillaEditPy/ScintillaConstants.py"]:
|
for file in ["ScintillaEdit.cpp", "ScintillaEdit.h"]:
|
||||||
try:
|
try:
|
||||||
os.remove(file)
|
os.remove(file)
|
||||||
except OSError:
|
except OSError:
|
||||||
|
|
|
@ -12,7 +12,7 @@ TEMPLATE = lib
|
||||||
CONFIG += lib_bundle
|
CONFIG += lib_bundle
|
||||||
CONFIG += c++1z
|
CONFIG += c++1z
|
||||||
|
|
||||||
VERSION = 5.2.3
|
VERSION = 5.2.4
|
||||||
|
|
||||||
SOURCES += \
|
SOURCES += \
|
||||||
PlatQt.cpp \
|
PlatQt.cpp \
|
||||||
|
|
|
@ -53,8 +53,8 @@ ScintillaQt::~ScintillaQt()
|
||||||
|
|
||||||
void ScintillaQt::execCommand(QAction *action)
|
void ScintillaQt::execCommand(QAction *action)
|
||||||
{
|
{
|
||||||
int command = action->data().toInt();
|
const int commandNum = action->data().toInt();
|
||||||
Command(command);
|
Command(commandNum);
|
||||||
}
|
}
|
||||||
|
|
||||||
#if defined(Q_OS_WIN)
|
#if defined(Q_OS_WIN)
|
||||||
|
|
|
@ -934,7 +934,7 @@ Sci::Position EditView::StartEndDisplayLine(Surface *surface, const EditModel &m
|
||||||
|
|
||||||
namespace {
|
namespace {
|
||||||
|
|
||||||
constexpr ColourRGBA bugColour = ColourRGBA(0xff, 0, 0xff, 0xf0);
|
constexpr ColourRGBA bugColour = ColourRGBA(0xff, 0, 0xfe, 0xf0);
|
||||||
|
|
||||||
// Selection background colours are always defined, the value_or is to show if bug
|
// Selection background colours are always defined, the value_or is to show if bug
|
||||||
|
|
||||||
|
@ -1974,18 +1974,20 @@ static void DrawTranslucentSelection(Surface *surface, const EditModel &model, c
|
||||||
model, vsDraw, model.sel.RangeType(r));
|
model, vsDraw, model.sel.RangeType(r));
|
||||||
const XYPOSITION spaceWidth = vsDraw.styles[ll->EndLineStyle()].spaceWidth;
|
const XYPOSITION spaceWidth = vsDraw.styles[ll->EndLineStyle()].spaceWidth;
|
||||||
if (model.BidirectionalEnabled()) {
|
if (model.BidirectionalEnabled()) {
|
||||||
const int selectionStart = static_cast<int>(portion.start.Position() - posLineStart - lineRange.start);
|
const Sci::Position selectionStart = portion.start.Position() - posLineStart - lineRange.start;
|
||||||
const int selectionEnd = static_cast<int>(portion.end.Position() - posLineStart - lineRange.start);
|
const Sci::Position selectionEnd = portion.end.Position() - posLineStart - lineRange.start;
|
||||||
|
|
||||||
const ScreenLine screenLine(ll, subLine, vsDraw, rcLine.right, tabWidthMinimumPixels);
|
const ScreenLine screenLine(ll, subLine, vsDraw, rcLine.right, tabWidthMinimumPixels);
|
||||||
std::unique_ptr<IScreenLineLayout> slLayout = surface->Layout(&screenLine);
|
std::unique_ptr<IScreenLineLayout> slLayout = surface->Layout(&screenLine);
|
||||||
|
|
||||||
const std::vector<Interval> intervals = slLayout->FindRangeIntervals(selectionStart, selectionEnd);
|
if (slLayout) {
|
||||||
for (const Interval &interval : intervals) {
|
const std::vector<Interval> intervals = slLayout->FindRangeIntervals(selectionStart, selectionEnd);
|
||||||
const XYPOSITION rcRight = interval.right + xStart;
|
for (const Interval &interval : intervals) {
|
||||||
const XYPOSITION rcLeft = interval.left + xStart;
|
const XYPOSITION rcRight = interval.right + xStart;
|
||||||
const PRectangle rcSelection(rcLeft, rcLine.top, rcRight, rcLine.bottom);
|
const XYPOSITION rcLeft = interval.left + xStart;
|
||||||
surface->FillRectangleAligned(rcSelection, selectionBack);
|
const PRectangle rcSelection(rcLeft, rcLine.top, rcRight, rcLine.bottom);
|
||||||
|
surface->FillRectangleAligned(rcSelection, selectionBack);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (portion.end.VirtualSpace()) {
|
if (portion.end.VirtualSpace()) {
|
||||||
|
@ -2355,7 +2357,9 @@ void EditView::DrawLine(Surface *surface, const EditModel &model, const ViewStyl
|
||||||
}
|
}
|
||||||
|
|
||||||
if (FlagSet(phase, DrawPhase::text)) {
|
if (FlagSet(phase, DrawPhase::text)) {
|
||||||
DrawTranslucentSelection(surface, model, vsDraw, ll, line, rcLine, subLine, lineRange, xStart, tabWidthMinimumPixels, Layer::UnderText);
|
if (!hideSelection) {
|
||||||
|
DrawTranslucentSelection(surface, model, vsDraw, ll, line, rcLine, subLine, lineRange, xStart, tabWidthMinimumPixels, Layer::UnderText);
|
||||||
|
}
|
||||||
DrawTranslucentLineState(surface, model, vsDraw, ll, line, rcLine, subLine, Layer::UnderText);
|
DrawTranslucentLineState(surface, model, vsDraw, ll, line, rcLine, subLine, Layer::UnderText);
|
||||||
DrawForeground(surface, model, vsDraw, ll, lineVisible, rcLine, lineRange, posLineStart, xStart,
|
DrawForeground(surface, model, vsDraw, ll, lineVisible, rcLine, lineRange, posLineStart, xStart,
|
||||||
subLine, background);
|
subLine, background);
|
||||||
|
@ -2694,8 +2698,12 @@ Sci::Position EditView::FormatRange(bool draw, CharacterRangeFull chrg, Rectangl
|
||||||
// Don't show the selection when printing
|
// Don't show the selection when printing
|
||||||
vsPrint.elementColours.clear();
|
vsPrint.elementColours.clear();
|
||||||
vsPrint.elementBaseColours.clear();
|
vsPrint.elementBaseColours.clear();
|
||||||
// Transparent:
|
// Set all selection background colours to be transparent.
|
||||||
vsPrint.elementBaseColours[Element::SelectionBack] = ColourRGBA(0xc0, 0xc0, 0xc0, 0x0);
|
constexpr ColourRGBA transparent(0xc0, 0xc0, 0xc0, 0x0);
|
||||||
|
vsPrint.elementBaseColours[Element::SelectionBack] = transparent;
|
||||||
|
vsPrint.elementBaseColours[Element::SelectionAdditionalBack] = transparent;
|
||||||
|
vsPrint.elementBaseColours[Element::SelectionSecondaryBack] = transparent;
|
||||||
|
vsPrint.elementBaseColours[Element::SelectionInactiveBack] = transparent;
|
||||||
vsPrint.caretLine.alwaysShow = false;
|
vsPrint.caretLine.alwaysShow = false;
|
||||||
// Don't highlight matching braces using indicators
|
// Don't highlight matching braces using indicators
|
||||||
vsPrint.braceHighlightIndicatorSet = false;
|
vsPrint.braceHighlightIndicatorSet = false;
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
523
|
524
|
||||||
|
|
|
@ -4,8 +4,8 @@
|
||||||
|
|
||||||
#include <windows.h>
|
#include <windows.h>
|
||||||
|
|
||||||
#define VERSION_SCINTILLA "5.2.3"
|
#define VERSION_SCINTILLA "5.2.4"
|
||||||
#define VERSION_WORDS 5, 2, 3, 0
|
#define VERSION_WORDS 5, 2, 4, 0
|
||||||
|
|
||||||
VS_VERSION_INFO VERSIONINFO
|
VS_VERSION_INFO VERSIONINFO
|
||||||
FILEVERSION VERSION_WORDS
|
FILEVERSION VERSION_WORDS
|
||||||
|
|
|
@ -70,6 +70,24 @@
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<LinkIncremental>false</LinkIncremental>
|
<LinkIncremental>false</LinkIncremental>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'">
|
||||||
|
<IntDir>Intermediates\$(Platform)\$(Configuration)\</IntDir>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'">
|
||||||
|
<IntDir>Intermediates\$(Platform)\$(Configuration)\</IntDir>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||||
|
<IntDir>Intermediates\$(Platform)\$(Configuration)\</IntDir>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||||
|
<IntDir>Intermediates\$(Platform)\$(Configuration)\</IntDir>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||||
|
<IntDir>Intermediates\$(Configuration)\</IntDir>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||||
|
<IntDir>Intermediates\$(Configuration)\</IntDir>
|
||||||
|
</PropertyGroup>
|
||||||
<ItemDefinitionGroup>
|
<ItemDefinitionGroup>
|
||||||
<ClCompile>
|
<ClCompile>
|
||||||
<WarningLevel>Level4</WarningLevel>
|
<WarningLevel>Level4</WarningLevel>
|
||||||
|
|
|
@ -99,6 +99,7 @@
|
||||||
#include "ScintillaWin.h"
|
#include "ScintillaWin.h"
|
||||||
#include "BoostRegexSearch.h"
|
#include "BoostRegexSearch.h"
|
||||||
|
|
||||||
|
//needed for gcc builds
|
||||||
#ifndef SPI_GETWHEELSCROLLLINES
|
#ifndef SPI_GETWHEELSCROLLLINES
|
||||||
#define SPI_GETWHEELSCROLLLINES 104
|
#define SPI_GETWHEELSCROLLLINES 104
|
||||||
#endif
|
#endif
|
||||||
|
|
Loading…
Reference in New Issue