+ upd: Scintilla ver 4.2.1

This commit is contained in:
Rainer Kottenhoff 2019-11-15 10:35:08 +01:00
parent 0c5e091e24
commit 1b1408bddb
15 changed files with 215 additions and 85 deletions

View File

@ -2292,6 +2292,7 @@ struct Sci_TextToFind {
<b id="SCI_GETWHITESPACESIZE">SCI_GETWHITESPACESIZE &rarr; int</b><br />
<code>SCI_SETWHITESPACESIZE</code> sets the size of the dots used for mark space characters.
The <code>SCI_GETWHITESPACESIZE</code> message retrieves the current size.
The value 0 is valid and makes the dots invisible.
</p>
<p><b id="SCI_SETTABDRAWMODE">SCI_SETTABDRAWMODE(int tabDrawMode)</b><br />
@ -3912,8 +3913,11 @@ struct Sci_TextToFind {
inserting a tab at the current character position and backspace unindents the line rather than
deleting a character. Scintilla can also display indentation guides (vertical lines) to help
you to generate code.</p>
<code><a class="message" href="#SCI_SETTABWIDTH">SCI_SETTABWIDTH(int tabWidth)</a><br />
<code>
<a class="message" href="#SCI_SETTABWIDTH">SCI_SETTABWIDTH(int tabWidth)</a><br />
<a class="message" href="#SCI_GETTABWIDTH">SCI_GETTABWIDTH &rarr; int</a><br />
<a class="message" href="#SCI_SETTABMINIMUMWIDTH">SCI_SETTABMINIMUMWIDTH(int pixels)</a><br />
<a class="message" href="#SCI_GETTABMINIMUMWIDTH">SCI_GETTABMINIMUMWIDTH &rarr; int</a><br />
<a class="message" href="#SCI_CLEARTABSTOPS">SCI_CLEARTABSTOPS(line line)</a><br />
<a class="message" href="#SCI_ADDTABSTOP">SCI_ADDTABSTOP(line line, int x)</a><br />
<a class="message" href="#SCI_GETNEXTTABSTOP">SCI_GETNEXTTABSTOP(line line, int x) &rarr; int</a><br />
@ -3936,6 +3940,15 @@ struct Sci_TextToFind {
<a class="message" href="#SCI_GETHIGHLIGHTGUIDE">SCI_GETHIGHLIGHTGUIDE &rarr; position</a><br />
</code>
<p><b id="SCI_SETTABMINIMUMWIDTH">SCI_SETTABMINIMUMWIDTH(int pixels)</b><br />
<b id="SCI_GETTABMINIMUMWIDTH">SCI_GETTABMINIMUMWIDTH &rarr; int</b><br />
<code>SCI_SETTABMINIMUMWIDTH</code> sets the minimum size of a tab in pixels to ensure that the tab
can be seen. The default value is 2. This is particularly useful with proportional fonts with fractional widths where
the character before the tab may end a fraction of a pixel before a tab stop, causing the tab to only be a fraction of
a pixel wide without this setting.
Where displaying a miniaturized version of the document, setting this to 0 may make the miniaturized
version lay out more like the normal size version.</p>
<p><b id="SCI_SETTABWIDTH">SCI_SETTABWIDTH(int tabWidth)</b><br />
<b id="SCI_GETTABWIDTH">SCI_GETTABWIDTH &rarr; int</b><br />
<code>SCI_SETTABWIDTH</code> sets the size of a tab as a multiple of the size of a space

View File

@ -26,9 +26,9 @@
<table bgcolor="#CCCCCC" width="100%" cellspacing="0" cellpadding="8" border="0">
<tr>
<td>
<font size="4"> <a href="https://www.scintilla.org/scintilla420.zip">
<font size="4"> <a href="https://www.scintilla.org/scintilla421.zip">
Windows</a>&nbsp;&nbsp;
<a href="https://www.scintilla.org/scintilla420.tgz">
<a href="https://www.scintilla.org/scintilla421.tgz">
GTK/Linux</a>&nbsp;&nbsp;
</font>
</td>
@ -42,7 +42,7 @@
containing very few restrictions.
</p>
<h3>
Release 4.2.0
Release 4.2.1
</h3>
<h4>
Source Code
@ -50,8 +50,8 @@
The source code package contains all of the source code for Scintilla but no binary
executable code and is available in
<ul>
<li><a href="https://www.scintilla.org/scintilla420.zip">zip format</a> (1.7M) commonly used on Windows</li>
<li><a href="https://www.scintilla.org/scintilla420.tgz">tgz format</a> (1.4M) commonly used on Linux and compatible operating systems</li>
<li><a href="https://www.scintilla.org/scintilla421.zip">zip format</a> (1.7M) commonly used on Windows</li>
<li><a href="https://www.scintilla.org/scintilla421.tgz">tgz format</a> (1.4M) commonly used on Linux and compatible operating systems</li>
</ul>
Instructions for building on both Windows and Linux are included in the readme file.
<h4>

View File

@ -562,12 +562,21 @@
</h3>
<ul>
<li>
Released 5 July 2019.
Released 24 October 2019.
</li>
<li>
Add SCI_SETTABMINIMUMWIDTH to set the minimum width of tabs.
This allows minimaps or overviews to be layed out to match the full size editing view.
<a href="https://sourceforge.net/p/scintilla/bugs/2118/">Bug #2118</a>.
</li>
<li>
SciTE enables use of SCI_ commands in user.context.menu.
</li>
<li>
XML folder adds fold.xml.at.tag.open option to fold tags at the start of the tag "&lt;" instead of the end "&gt;".
<a href="https://sourceforge.net/p/scintilla/bugs/2128/">Bug #2128</a>.
</li>
<li>
Metapost lexer fixes crash with 'interface=none' comment.
<a href="https://sourceforge.net/p/scintilla/bugs/2129/">Bug #2129</a>.
</li>
@ -580,9 +589,17 @@
<a href="https://sourceforge.net/p/scintilla/feature-requests/1306/">Feature #1306</a>.
</li>
<li>
TCL folder can turn off whitespace flag by setting fold.compact property to 0.
<a href="https://sourceforge.net/p/scintilla/bugs/2131/">Bug #2131</a>.
</li>
<li>
Optimize setting up keyword lists in lexers.
<a href="https://sourceforge.net/p/scintilla/feature-requests/1305/">Feature #1305</a>.
</li>
<li>
Updated case conversion and character categories to Unicode 12.1.
<a href="https://sourceforge.net/p/scintilla/feature-requests/1315/">Feature #1315</a>.
</li>
<li>
On Win32, stop the IME candidate window moving unnecessarily and position it better.<br />
Stop candidate window overlapping composition text and taskbar.<br />

View File

@ -9,7 +9,7 @@
<meta name="keywords" content="Scintilla, SciTE, Editing Component, Text Editor" />
<meta name="Description"
content="www.scintilla.org is the home of the Scintilla editing component and SciTE text editor application." />
<meta name="Date.Modified" content="20190705" />
<meta name="Date.Modified" content="20191024" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<style type="text/css">
#versionlist {
@ -56,8 +56,8 @@
GTK, and OS X</font>
</td>
<td width="40%" align="right">
<font color="#FFCC99" size="3"> Release version 4.2.0<br />
Site last modified July 5 2019</font>
<font color="#FFCC99" size="3"> Release version 4.2.1<br />
Site last modified October 24 2019</font>
</td>
<td width="20%">
&nbsp;
@ -72,12 +72,10 @@
</tr>
</table>
<ul id="versionlist">
<li>Version 4.2.1 allows miniaturized views to layout like normal size views.</li>
<li>Version 4.2.0 adds new types to Scintilla.iface.</li>
<li>Version 4.1.7 is just to match a bug-fix release of SciTE and changes nothing in Scintilla.</li>
<li>Version 4.1.6 adds an X12 lexer and improves performance on huge files.</li>
<li>Version 4.1.5 removes special handling of non-0 wParam to WM_PAINT on Win32 and changes
clipboard operations on GTK to avoid flickering.</li>
<li>Version 4.1.4 makes calltips work on Qt and adds a lexer for .NET's Common Intermediate Language CIL.</li>
</ul>
<ul id="menu">
<li id="remote1"><a href="https://www.scintilla.org/SciTEImage.html">Screenshot</a></li>

View File

@ -96,6 +96,8 @@ typedef sptr_t (*SciFnDirect)(sptr_t ptr, unsigned int iMessage, uptr_t wParam,
#define SCI_SETBUFFEREDDRAW 2035
#define SCI_SETTABWIDTH 2036
#define SCI_GETTABWIDTH 2121
#define SCI_SETTABMINIMUMWIDTH 2724
#define SCI_GETTABMINIMUMWIDTH 2725
#define SCI_CLEARTABSTOPS 2675
#define SCI_ADDTABSTOP 2676
#define SCI_GETNEXTTABSTOP 2677
@ -106,8 +108,8 @@ typedef sptr_t (*SciFnDirect)(sptr_t ptr, unsigned int iMessage, uptr_t wParam,
#define SCI_GETIMEINTERACTION 2678
#define SCI_SETIMEINTERACTION 2679
// >>>>>>>>>>>>>>> BEG NON STD SCI PATCH >>>>>>>>>>>>>>>
#define SCI_ISIMEOPEN 2724
#define SCI_ISIMEMODECJK 2725
#define SCI_ISIMEOPEN 2900
#define SCI_ISIMEMODECJK 2901
// <<<<<<<<<<<<<<< END NON STD SCI PATCH <<<<<<<<<<<<<<<
#define MARKER_MAX 31
#define SC_MARK_CIRCLE 0

View File

@ -252,6 +252,12 @@ set void SetTabWidth=2036(int tabWidth,)
# Retrieve the visible size of a tab.
get int GetTabWidth=2121(,)
# Set the minimum visual width of a tab.
set void SetTabMinimumWidth=2724(int pixels,)
# Get the minimum visual width of a tab.
get int GetTabMinimumWidth=2725(,)
# Clear explicit tabstops on a line.
fun void ClearTabStops=2675(line line,)
@ -280,8 +286,8 @@ get IMEInteraction GetIMEInteraction=2678(,)
set void SetIMEInteraction=2679(IMEInteraction imeInteraction,)
# >>>>>>>>>>>>>>> BEG NON STD SCI PATCH >>>>>>>>>>>>>>>
get bool IsIMEOpen=2724(,)
get bool IsIMEModeCJK=2725(,)
get bool IsIMEOpen=2900(,)
get bool IsIMEModeCJK=2901(,)
# <<<<<<<<<<<<<<< END NON STD SCI PATCH <<<<<<<<<<<<<<<
enu MarkerSymbol=SC_MARK_

View File

@ -170,7 +170,7 @@ static void ColouriseBatchLine(
// Reset Offset to re-process remainder of word
offset -= (wbl - 1);
// Colorize External Command / Program
if (!keywords2) {
if (!keywords2) {
styler.ColourTo(startLine + offset - 1, SCE_BAT_COMMAND);
} else if (keywords2.InList(wordBuffer)) {
styler.ColourTo(startLine + offset - 1, SCE_BAT_COMMAND);

View File

@ -562,6 +562,7 @@ struct OptionsHTML {
bool foldCompact = true;
bool foldComment = false;
bool foldHeredoc = false;
bool foldXmlAtTagOpen = false;
OptionsHTML() noexcept {
}
};
@ -626,6 +627,10 @@ struct OptionSetHTML : public OptionSet<OptionsHTML> {
"Allow folding for heredocs in scripts embedded in HTML. "
"The default is off.");
DefineProperty("fold.xml.at.tag.open", &OptionsHTML::foldXmlAtTagOpen,
"Enable folding for XML at the start of open tag. "
"The default is off.");
DefineWordListSets(isPHPScript_ ? phpscriptWordListDesc : htmlWordListDesc);
}
};
@ -991,6 +996,7 @@ void SCI_METHOD LexerHTML::Lex(Sci_PositionU startPos, Sci_Position length, int
const bool foldCompact = options.foldCompact;
const bool foldComment = fold && options.foldComment;
const bool foldHeredoc = fold && options.foldHeredoc;
const bool foldXmlAtTagOpen = isXml && fold && options.foldXmlAtTagOpen;
const bool caseSensitive = options.caseSensitive;
const bool allowScripts = options.allowScripts;
const bool isMako = options.isMako;
@ -1206,6 +1212,9 @@ void SCI_METHOD LexerHTML::Lex(Sci_PositionU startPos, Sci_Position length, int
i += 2;
visibleChars += 2;
tagClosing = true;
if (foldXmlAtTagOpen) {
levelCurrent--;
}
continue;
}
}
@ -1531,6 +1540,12 @@ void SCI_METHOD LexerHTML::Lex(Sci_PositionU startPos, Sci_Position length, int
// in HTML, fold on tag open and unfold on tag close
tagOpened = true;
tagClosing = (chNext == '/');
if (foldXmlAtTagOpen && !(chNext == '/' || chNext == '?' || chNext == '!' || chNext == '-' || chNext == '%')) {
levelCurrent++;
}
if (foldXmlAtTagOpen && chNext == '/') {
levelCurrent--;
}
styler.ColourTo(i - 1, StateToPrint);
if (chNext != '!')
state = SCE_H_TAGUNKNOWN;
@ -1727,7 +1742,7 @@ void SCI_METHOD LexerHTML::Lex(Sci_PositionU startPos, Sci_Position length, int
state = SCE_H_DEFAULT;
}
tagOpened = false;
if (!tagDontFold) {
if (!(foldXmlAtTagOpen || tagDontFold)) {
if (tagClosing) {
levelCurrent--;
} else {
@ -1746,6 +1761,9 @@ void SCI_METHOD LexerHTML::Lex(Sci_PositionU startPos, Sci_Position length, int
ch = chNext;
state = SCE_H_DEFAULT;
tagOpened = false;
if (foldXmlAtTagOpen) {
levelCurrent--;
}
} else {
if (eClass != SCE_H_TAGUNKNOWN) {
if (eClass == SCE_H_SGML_DEFAULT) {
@ -1775,7 +1793,7 @@ void SCI_METHOD LexerHTML::Lex(Sci_PositionU startPos, Sci_Position length, int
state = SCE_H_DEFAULT;
}
tagOpened = false;
if (!tagDontFold) {
if (!(foldXmlAtTagOpen || tagDontFold)) {
if (tagClosing) {
levelCurrent--;
} else {
@ -1801,7 +1819,7 @@ void SCI_METHOD LexerHTML::Lex(Sci_PositionU startPos, Sci_Position length, int
state = SCE_H_DEFAULT;
}
tagOpened = false;
if (!tagDontFold) {
if (!(foldXmlAtTagOpen || tagDontFold)) {
if (tagClosing) {
levelCurrent--;
} else {
@ -1825,6 +1843,9 @@ void SCI_METHOD LexerHTML::Lex(Sci_PositionU startPos, Sci_Position length, int
ch = chNext;
state = SCE_H_DEFAULT;
tagOpened = false;
if (foldXmlAtTagOpen) {
levelCurrent--;
}
} else if (ch == '?' && chNext == '>') {
styler.ColourTo(i - 1, StateToPrint);
styler.ColourTo(i + 1, SCE_H_XMLEND);

View File

@ -45,9 +45,9 @@ static inline bool IsANumberChar(int ch) {
static void ColouriseTCLDoc(Sci_PositionU startPos, Sci_Position length, int , WordList *keywordlists[], Accessor &styler) {
#define isComment(s) (s==SCE_TCL_COMMENT || s==SCE_TCL_COMMENTLINE || s==SCE_TCL_COMMENT_BOX || s==SCE_TCL_BLOCK_COMMENT)
bool fold = (styler.GetPropertyInt("fold") != 0);
bool foldComment = styler.GetPropertyInt("fold.comment") != 0;
const bool fold = (styler.GetPropertyInt("fold") != 0);
const bool foldComment = styler.GetPropertyInt("fold.comment") != 0;
const bool foldCompact = styler.GetPropertyInt("fold.compact", 1) != 0;
bool commentLevel = false;
bool subBrace = false; // substitution begin with a brace ${.....}
enum tLineState {LS_DEFAULT, LS_OPEN_COMMENT, LS_OPEN_DOUBLE_QUOTE, LS_COMMENT_BOX, LS_MASK_STATE = 0xf,
@ -202,11 +202,11 @@ next:
}
}
int flag = 0;
if (!visibleChars)
if (!visibleChars && foldCompact)
flag = SC_FOLDLEVELWHITEFLAG;
if (currentLevel > previousLevel)
flag = SC_FOLDLEVELHEADERFLAG;
if (fold) {
styler.SetLevel(currentLine, flag + previousLevel + SC_FOLDLEVELBASE + (currentLevel << 17) + (commentLevel << 16));
}

View File

@ -20,7 +20,7 @@ namespace {
const int catRanges[] = {
//++Autogenerated -- start of section automatically generated
// Created with Python 3.7.0, Unicode 11.0.0
// Created with Python 3.8.0, Unicode 12.1.0
25,
1046,
1073,
@ -1003,6 +1003,7 @@ const int catRanges[] = {
101533,
101576,
101917,
102129,
102154,
102389,
102404,
@ -1116,30 +1117,16 @@ const int catRanges[] = {
118909,
118916,
118973,
119012,
119101,
119108,
118980,
119165,
119204,
119261,
119428,
119581,
119588,
119837,
119844,
119172,
119965,
119972,
120029,
120036,
120093,
120132,
120221,
120228,
120357,
120388,
120453,
120669,
120677,
120740,
120797,
120836,
@ -1286,7 +1273,8 @@ const int catRanges[] = {
163805,
163852,
163876,
183729,
183733,
183761,
183780,
184342,
184356,
@ -1485,12 +1473,12 @@ const int catRanges[] = {
236836,
236965,
236996,
237126,
237189,
237220,
237286,
237317,
237405,
237380,
237437,
237569,
238979,
240993,
@ -2040,9 +2028,6 @@ const int catRanges[] = {
356053,
357085,
357141,
358717,
358741,
360445,
360448,
361981,
361985,
@ -2245,7 +2230,7 @@ const int catRanges[] = {
378929,
378957,
378993,
379389,
379421,
380949,
381789,
381813,
@ -2331,8 +2316,6 @@ const int catRanges[] = {
414037,
415274,
415765,
417789,
417813,
425988,
636637,
636949,
@ -2576,7 +2559,17 @@ const int catRanges[] = {
1373921,
1373952,
1373985,
1374045,
1374016,
1374049,
1374080,
1374113,
1374144,
1374177,
1374237,
1374272,
1374305,
1374336,
1374461,
1375972,
1376003,
1376065,
@ -2634,7 +2627,7 @@ const int catRanges[] = {
1390277,
1390406,
1390469,
1390502,
1390534,
1390641,
1391069,
1391075,
@ -2711,7 +2704,7 @@ const int catRanges[] = {
1403764,
1403779,
1403905,
1404125,
1404189,
1404417,
1406980,
1408102,
@ -3078,6 +3071,8 @@ const int catRanges[] = {
2222634,
2222769,
2222941,
2227204,
2227965,
2228230,
2228261,
2228294,
@ -3221,7 +3216,8 @@ const int catRanges[] = {
2263965,
2263985,
2264005,
2264061,
2264036,
2264093,
2265092,
2266630,
2266725,
@ -3271,7 +3267,8 @@ const int catRanges[] = {
2283013,
2283206,
2283237,
2283293,
2283268,
2283325,
2283528,
2283869,
2285572,
@ -3301,6 +3298,20 @@ const int catRanges[] = {
2301565,
2301924,
2301981,
2307076,
2307357,
2307396,
2308646,
2308741,
2308893,
2308933,
2308998,
2309125,
2309156,
2309201,
2309220,
2309254,
2309309,
2310148,
2310181,
2310500,
@ -3316,8 +3327,6 @@ const int catRanges[] = {
2312934,
2312997,
2313092,
2314397,
2314436,
2314565,
2314982,
2315013,
@ -3393,6 +3402,12 @@ const int catRanges[] = {
2350758,
2350833,
2350909,
2357258,
2357941,
2358195,
2358325,
2358877,
2359281,
2359300,
2388829,
2392073,
@ -3403,6 +3418,8 @@ const int catRanges[] = {
2402461,
2490372,
2524669,
2524698,
2524989,
2654212,
2672893,
2949124,
@ -3440,21 +3457,28 @@ const int catRanges[] = {
3003121,
3003261,
3006468,
3008701,
3008893,
3008997,
3009028,
3009062,
3010557,
3010845,
3011045,
3011171,
3011613,
3013635,
3013725,
3013713,
3013731,
3013789,
3014660,
3210845,
3211037,
3211268,
3235453,
3538948,
3548157,
3549700,
3549821,
3550340,
3550493,
3550724,
3563421,
3637252,
@ -3612,6 +3636,22 @@ const int catRanges[] = {
3933373,
3933381,
3933565,
3940356,
3941821,
3941893,
3942115,
3942365,
3942408,
3942749,
3942852,
3942901,
3942941,
3954692,
3956101,
3956232,
3956573,
3956723,
3956765,
3997700,
4004029,
4004074,
@ -3620,7 +3660,8 @@ const int catRanges[] = {
4005888,
4006977,
4008069,
4008317,
4008291,
4008349,
4008456,
4008797,
4008913,
@ -3631,6 +3672,10 @@ const int catRanges[] = {
4036115,
4036138,
4036285,
4038698,
4040149,
4040170,
4040669,
4046852,
4047005,
4047012,
@ -3714,7 +3759,7 @@ const int catRanges[] = {
4071434,
4071869,
4071957,
4074909,
4074941,
4075029,
4076989,
4078805,
@ -3730,15 +3775,17 @@ const int catRanges[] = {
4087829,
4095860,
4096021,
4119229,
4119261,
4119573,
4119997,
4120085,
4120413,
4120445,
4120597,
4124317,
4124693,
4127549,
4127765,
4128157,
4128789,
4129181,
4129301,
@ -3751,24 +3798,28 @@ const int catRanges[] = {
4134365,
4136981,
4137373,
4137493,
4139005,
4139029,
4140605,
4137397,
4140637,
4140661,
4140797,
4140885,
4140925,
4140949,
4142205,
4142613,
4142941,
4143125,
4143229,
4143637,
4145181,
4142261,
4142461,
4142549,
4143485,
4143541,
4147869,
4148245,
4148701,
4148757,
4148893,
4149013,
4149117,
4149269,
4149373,
4149781,
4149981,
4194308,
5561085,
5562372,

View File

@ -76,6 +76,7 @@ int symmetricCaseConversionRanges[] = {
42803,42802,31,2,
42879,42878,5,2,
42903,42902,10,2,
42933,42932,6,2,
65345,65313,26,1,
66600,66560,40,1,
66776,66736,36,1,
@ -158,6 +159,7 @@ int symmetricCaseConversions[] = {
629,415,
637,11364,
640,422,
642,42949,
643,425,
647,42929,
648,430,
@ -192,6 +194,7 @@ int symmetricCaseConversions[] = {
4351,7359,
7545,42877,
7549,11363,
7566,42950,
8017,8025,
8019,8027,
8021,8029,
@ -237,9 +240,8 @@ int symmetricCaseConversions[] = {
42892,42891,
42897,42896,
42899,42898,
42933,42932,
42935,42934,
42937,42936,
42900,42948,
42947,42946,
43859,42931,
//--Autogenerated -- end of section automatically generated

View File

@ -6548,6 +6548,13 @@ sptr_t Editor::WndProc(unsigned int iMessage, uptr_t wParam, sptr_t lParam) {
case SCI_GETTABWIDTH:
return pdoc->tabInChars;
case SCI_SETTABMINIMUMWIDTH:
SetAppearance(view.tabWidthMinimumPixels, static_cast<int>(wParam));
break;
case SCI_GETTABMINIMUMWIDTH:
return view.tabWidthMinimumPixels;
case SCI_CLEARTABSTOPS:
if (view.ClearTabstops(static_cast<Sci::Line>(wParam))) {
const DocModification mh(SC_MOD_CHANGETABSTOPS, 0, 0, 0, nullptr, static_cast<Sci::Line>(wParam));

View File

@ -598,6 +598,19 @@ protected: // ScintillaBase subclass needs access to much of Editor
static sptr_t StringResult(sptr_t lParam, const char *val) noexcept;
static sptr_t BytesResult(sptr_t lParam, const unsigned char *val, size_t len) noexcept;
// Set a variable controlling appearance to a value and invalidates the display
// if a change was made. Avoids extra text and the possibility of mistyping.
template <typename T>
bool SetAppearance(T &variable, T value) {
// Using ! and == as more types have == defined than !=.
const bool changed = !(variable == value);
if (changed) {
variable = value;
InvalidateStyleRedraw();
}
return changed;
}
public:
~Editor() override;

View File

@ -1 +1 @@
420
421

View File

@ -6,8 +6,8 @@
#include <windows.h>
#define VERSION_SCINTILLA "4.2.0"
#define VERSION_WORDS 4, 2, 0, 0
#define VERSION_SCINTILLA "4.2.1"
#define VERSION_WORDS 4, 2, 1, 0
VS_VERSION_INFO VERSIONINFO
FILEVERSION VERSION_WORDS