+upd: Lexilla Lib v5.1.4

This commit is contained in:
METANEOCORTEX\Kotti 2021-12-07 12:44:04 +01:00
parent e8f490b3df
commit d33e1ed68d
28 changed files with 305 additions and 319 deletions

View File

@ -68,6 +68,7 @@
<ClCompile Include="lexers\LexHTML.cxx" />
<ClCompile Include="lexers\LexInno.cxx" />
<ClCompile Include="lexers\LexJulia.cxx" />
<ClCompile Include="lexers\LexKix.cxx" />
<ClCompile Include="lexers\LexLaTeX.cxx" />
<ClCompile Include="lexers\LexLua.cxx" />
<ClCompile Include="lexers\LexMake.cxx" />
@ -93,7 +94,6 @@
<ClCompile Include="lexers_x\LexDart.cxx" />
<ClCompile Include="lexers_x\LexerUtils.cxx" />
<ClCompile Include="lexers_x\LexJSON.cxx" />
<ClCompile Include="lexers_x\LexKix.cxx" />
<ClCompile Include="lexers_x\LexKotlin.cxx" />
<ClCompile Include="lexers_x\LexMarkdown.cxx" />
<ClCompile Include="lexers_x\LexPython.cxx" />

View File

@ -266,15 +266,15 @@
<ClCompile Include="lexlib\LexAccessor.cxx">
<Filter>lexlib</Filter>
</ClCompile>
<ClCompile Include="lexers_x\LexKix.cxx">
<Filter>lexers_x</Filter>
</ClCompile>
<ClCompile Include="lexers\LexFortran.cxx">
<Filter>lexers</Filter>
</ClCompile>
<ClCompile Include="lexers_x\LexAHK.cxx">
<Filter>lexers_x</Filter>
</ClCompile>
<ClCompile Include="lexers\LexKix.cxx">
<Filter>lexers</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<ResourceCompile Include="src\LexillaVersion.rc">

View File

@ -20,6 +20,10 @@ GCC and Clang work on Windows and Linux.
On macOS, only Apple Clang is available.
Lexilla requires some headers from Scintilla to build and expects a directory named
"scintilla" containing a copy of Scintilla 5+ to be a peer of the Lexilla top level
directory conventionally called "lexilla".
To use GCC, run lexilla/src/makefile:
make
@ -34,9 +38,9 @@ To use MSVC, run lexilla/test/lexilla.mak:
To build a debugging version of the library, add DEBUG=1 to the command:
make DEBUG=1
The built libraries are copied into scintilla/bin.
The built libraries are copied into lexilla/bin.
Lexilla relies on a list of lexers from the scintilla/lexers directory. If any changes are
Lexilla relies on a list of lexers from the lexilla/lexers directory. If any changes are
made to the set of lexers then source and build files can be regenerated with the
lexilla/scripts/LexillaGen.py script which requires Python 3 and is tested with 3.7+.
Unix:

View File

@ -27,9 +27,6 @@ unreadVariable:lexilla/lexers/LexBaan.cxx
constParameter:lexilla/lexers/LexBash.cxx
uninitMemberVar:lexilla/lexers/LexBash.cxx
variableScope:lexilla/lexers/LexBash.cxx
constParameter:lexilla/lexers/LexBatch.cxx
variableScope:lexilla/lexers/LexBatch.cxx
knownConditionTrueFalse:lexilla/lexers/LexBatch.cxx
variableScope:lexilla/lexers/LexCmake.cxx
knownConditionTrueFalse:lexilla/lexers/LexCmake.cxx
constParameter:lexilla/lexers/LexCLW.cxx
@ -44,6 +41,7 @@ knownConditionTrueFalse:lexilla/lexers/LexEScript.cxx
constParameter:lexilla/lexers/LexFortran.cxx
redundantCondition:lexilla/lexers/LexFSharp.cxx
knownConditionTrueFalse:lexilla/lexers/LexFSharp.cxx
constParameter:lexilla/lexers/LexGDScript.cxx
variableScope:lexilla/lexers/LexGui4Cli.cxx
constParameter:lexilla/lexers/LexHaskell.cxx
constParameter:lexilla/lexers/LexHex.cxx
@ -101,12 +99,14 @@ shadowVariable:lexilla/lexers/LexVHDL.cxx
unreadVariable:lexilla/lexers/LexVHDL.cxx
variableScope:lexilla/lexers/LexVHDL.cxx
unreadVariable:lexilla/lexers/LexVisualProlog.cxx
unreadVariable:lexilla/lexers/LexX12.cxx
constParameter:lexilla/lexers/LexYAML.cxx
knownConditionTrueFalse:lexilla/lexers/LexYAML.cxx
// These are due to Accessor::IndentAmount not declaring the callback as taking a const.
// Changing this could cause problems for downstream projects.
constParameterCallback:lexilla/lexers/LexEiffel.cxx
constParameterCallback:lexilla/lexers/LexGDScript.cxx
constParameterCallback:lexilla/lexers/LexPython.cxx
constParameterCallback:lexilla/lexers/LexScriptol.cxx
constParameterCallback:lexilla/lexers/LexVB.cxx

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="20211108" />
<meta name="Date.Modified" content="20211207" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<style type="text/css">
.logo {
@ -61,8 +61,8 @@
<font color="#FFCC99" size="4"> A library of language lexers for use with Scintilla</font>
</td>
<td width="40%" align="right">
<font color="#FFCC99" size="3">Release version 5.1.3<br />
Site last modified November 8 2021</font>
<font color="#FFCC99" size="3">Release version 5.1.4<br />
Site last modified December 7 2021</font>
</td>
<td width="20%">
&nbsp;
@ -77,6 +77,7 @@
</tr>
</table>
<ul id="versionlist">
<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>
<li>Version 5.1.1 improves C++, Julia, Markdown, Matlab, and PHP.</li>
@ -113,12 +114,11 @@ if (!IsRemote()) { //if NOT remote...
Originally, this functionality was incorporated inside Scintilla.
It has been extracted as a separate project to make it easier for contributors to work on
support for new languages and to fix bugs in existing lexers.
It also defines a protocol where projects can easily implement their own lexers and distribute
It also defines a protocol where projects can implement their own lexers and distribute
them as they wish.
</p>
<p>
Current development occurs on the default branch as 5.* which requires a recent
C++ compiler that supports C++17.
Current development requires a recent C++ compiler that supports C++17.
The testing framework uses some C++20 features but the basic library only uses C++17.
</p>
<p>
@ -134,9 +134,10 @@ if (!IsRemote()) { //if NOT remote...
<a href="https://github.com/ScintillaOrg/lexilla">Lexilla project page</a>.<br />
git clone https://github.com/ScintillaOrg/lexilla
</p>
<p>Current repository status:
<a href="https://github.com/ScintillaOrg/lexilla/actions/workflows/build-check.yml"><img src="https://github.com/ScintillaOrg/lexilla/actions/workflows/build-check.yml/badge.svg" /></a>
<a href="https://github.com/ScintillaOrg/lexilla/actions/workflows/build-check-win32.yml"><img src="https://github.com/ScintillaOrg/lexilla/actions/workflows/build-check-win32.yml/badge.svg" /></a>
<p>Current repository status:<br />
<a href="https://github.com/ScintillaOrg/lexilla/actions/workflows/build-check.yml"><img src="https://github.com/ScintillaOrg/lexilla/actions/workflows/build-check.yml/badge.svg" /></a><br />
<a href="https://github.com/ScintillaOrg/lexilla/actions/workflows/build-check-win32.yml"><img src="https://github.com/ScintillaOrg/lexilla/actions/workflows/build-check-win32.yml/badge.svg" /></a><br />
<a href="https://github.com/ScintillaOrg/lexilla/actions/workflows/build-check-macos.yml"><img src="https://github.com/ScintillaOrg/lexilla/actions/workflows/build-check-macos.yml/badge.svg" /></a>
</p>
<p>
<a href="https://www.scintilla.org/ScintillaRelated.html">Related sites.</a>
@ -155,8 +156,6 @@ if (!IsRemote()) { //if NOT remote...
This is a low traffic list, averaging less than 20 messages per week.
To avoid spam, only list members can write to the list.
New versions of Lexilla are announced on scintilla-interest.
Messages sent to my personal email address that could have been sent to the list
may receive no response.
<br />
</p>
</body>

View File

@ -143,6 +143,9 @@
<h2>Building Lexilla</h2>
<p>Before using Lexilla it must be built or downloaded.</p>
<p>Lexilla requires some headers from Scintilla to build and expects a directory named
"scintilla" containing a copy of Scintilla 5+ to be a peer of the Lexilla top level
directory conventionally called "lexilla".</p>
<div>To build Lexilla, in the lexilla/src directory, run make (for gcc or clang)</div>
<div class="console">make</div>

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/lexilla513.zip">
<font size="4"> <a href="https://www.scintilla.org/lexilla514.zip">
Windows</a>&nbsp;&nbsp;
<a href="https://www.scintilla.org/lexilla513.tgz">
<a href="https://www.scintilla.org/lexilla514.tgz">
GTK/Linux</a>&nbsp;&nbsp;
</font>
</td>
@ -50,8 +50,8 @@
The source code package contains all of the source code for Lexilla but no binary
executable code and is available in
<ul>
<li><a href="https://www.scintilla.org/lexilla513.zip">zip format</a> (1.1M) commonly used on Windows</li>
<li><a href="https://www.scintilla.org/lexilla513.tgz">tgz format</a> (0.8M) commonly used on Linux and compatible operating systems</li>
<li><a href="https://www.scintilla.org/lexilla514.zip">zip format</a> (1.1M) commonly used on Windows</li>
<li><a href="https://www.scintilla.org/lexilla514.tgz">tgz format</a> (0.8M) 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

@ -572,9 +572,36 @@
<td>vsl7</td>
</tr><tr>
<td>Michael Heath</td>
<td>Antonio Cebrián</td>
<td>David Yu Yang</td>
</tr>
</table>
<h2>Releases</h2>
<h3>
<a href="https://www.scintilla.org/lexilla514.zip">Release 5.1.4</a>
</h3>
<ul>
<li>
Released 7 December 2021.
</li>
<li>
Add AsciiDoc lexer.
<a href="https://github.com/ScintillaOrg/lexilla/pull/39">Pull request #39</a>.
</li>
<li>
Add GDScript lexer.
Some behaviour and lexical states may change before this lexer is stable.
<a href="https://github.com/ScintillaOrg/lexilla/pull/41">Pull request #41</a>.
</li>
<li>
Fix strings ending in escaped '\' in F#.
<a href="https://github.com/ScintillaOrg/lexilla/issues/38">Issue #38</a>,
</li>
<li>
Better handling of bad terminators and folding for X12.
<a href="https://sourceforge.net/p/scintilla/feature-requests/1420/">Feature #1420</a>.
</li>
</ul>
<h3>
<a href="https://www.scintilla.org/lexilla513.zip">Release 5.1.3</a>
</h3>
@ -584,15 +611,15 @@
</li>
<li>
Fix parsing of 128-bit integer literals in Rust.
<a href="https://github.com/ScintillaOrg/lexilla/issues/33">Issue #33</a>,
<a href="https://github.com/ScintillaOrg/lexilla/issues/33">Issue #33</a>.
</li>
<li>
Fix different styles between \r and \n at end of line comments for Rust.
<a href="https://github.com/ScintillaOrg/lexilla/issues/34">Issue #34</a>,
<a href="https://github.com/ScintillaOrg/lexilla/issues/34">Issue #34</a>.
</li>
<li>
For Rust, don't go past end when file ends with unterminated block comment.
<a href="https://github.com/ScintillaOrg/lexilla/issues/35">Issue #35</a>,
<a href="https://github.com/ScintillaOrg/lexilla/issues/35">Issue #35</a>.
</li>
</ul>
<h3>

View File

@ -142,6 +142,8 @@ val SCLEX_HOLLYWOOD=130
val SCLEX_RAKU=131
val SCLEX_FSHARP=132
val SCLEX_JULIA=133
val SCLEX_ASCIIDOC=134
val SCLEX_GDSCRIPT=135
# When a lexer specifies its language as SCLEX_AUTOMATIC it receives a
# value assigned in sequence from SCLEX_AUTOMATIC+1.
@ -2251,3 +2253,47 @@ val SCE_FSHARP_VERBATIM=16
val SCE_FSHARP_QUOTATION=17
val SCE_FSHARP_ATTRIBUTE=18
val SCE_FSHARP_FORMAT_SPEC=19
# Lexical states for SCLEX_ASCIIDOC
lex Asciidoc=SCLEX_ASCIIDOC SCE_ASCIIDOC_
val SCE_ASCIIDOC_DEFAULT=0
val SCE_ASCIIDOC_STRONG1=1
val SCE_ASCIIDOC_STRONG2=2
val SCE_ASCIIDOC_EM1=3
val SCE_ASCIIDOC_EM2=4
val SCE_ASCIIDOC_HEADER1=5
val SCE_ASCIIDOC_HEADER2=6
val SCE_ASCIIDOC_HEADER3=7
val SCE_ASCIIDOC_HEADER4=8
val SCE_ASCIIDOC_HEADER5=9
val SCE_ASCIIDOC_HEADER6=10
val SCE_ASCIIDOC_ULIST_ITEM=11
val SCE_ASCIIDOC_OLIST_ITEM=12
val SCE_ASCIIDOC_BLOCKQUOTE=13
val SCE_ASCIIDOC_LINK=14
val SCE_ASCIIDOC_CODEBK=15
val SCE_ASCIIDOC_PASSBK=16
val SCE_ASCIIDOC_COMMENT=17
val SCE_ASCIIDOC_COMMENTBK=18
val SCE_ASCIIDOC_LITERAL=19
val SCE_ASCIIDOC_LITERALBK=20
val SCE_ASCIIDOC_ATTRIB=21
val SCE_ASCIIDOC_ATTRIBVAL=22
val SCE_ASCIIDOC_MACRO=23
# Lexical states for SCLEX_GDSCRIPT
lex GDScript=SCLEX_GDSCRIPT SCE_GD_
val SCE_GD_DEFAULT=0
val SCE_GD_COMMENTLINE=1
val SCE_GD_NUMBER=2
val SCE_GD_STRING=3
val SCE_GD_CHARACTER=4
val SCE_GD_WORD=5
val SCE_GD_TRIPLE=6
val SCE_GD_TRIPLEDOUBLE=7
val SCE_GD_CLASSNAME=8
val SCE_GD_FUNCNAME=9
val SCE_GD_OPERATOR=10
val SCE_GD_IDENTIFIER=11
val SCE_GD_COMMENTBLOCK=12
val SCE_GD_STRINGEOL=13
val SCE_GD_WORD2=14
val SCE_GD_ANNOTATION=15

View File

@ -146,6 +146,8 @@
#define SCLEX_RAKU 131
#define SCLEX_FSHARP 132
#define SCLEX_JULIA 133
#define SCLEX_ASCIIDOC 134
#define SCLEX_GDSCRIPT 135
#define SCLEX_AUTOMATIC 1000
#define SCE_P_DEFAULT 0
#define SCE_P_COMMENTLINE 1
@ -2003,6 +2005,46 @@
#define SCE_FSHARP_QUOTATION 17
#define SCE_FSHARP_ATTRIBUTE 18
#define SCE_FSHARP_FORMAT_SPEC 19
#define SCE_ASCIIDOC_DEFAULT 0
#define SCE_ASCIIDOC_STRONG1 1
#define SCE_ASCIIDOC_STRONG2 2
#define SCE_ASCIIDOC_EM1 3
#define SCE_ASCIIDOC_EM2 4
#define SCE_ASCIIDOC_HEADER1 5
#define SCE_ASCIIDOC_HEADER2 6
#define SCE_ASCIIDOC_HEADER3 7
#define SCE_ASCIIDOC_HEADER4 8
#define SCE_ASCIIDOC_HEADER5 9
#define SCE_ASCIIDOC_HEADER6 10
#define SCE_ASCIIDOC_ULIST_ITEM 11
#define SCE_ASCIIDOC_OLIST_ITEM 12
#define SCE_ASCIIDOC_BLOCKQUOTE 13
#define SCE_ASCIIDOC_LINK 14
#define SCE_ASCIIDOC_CODEBK 15
#define SCE_ASCIIDOC_PASSBK 16
#define SCE_ASCIIDOC_COMMENT 17
#define SCE_ASCIIDOC_COMMENTBK 18
#define SCE_ASCIIDOC_LITERAL 19
#define SCE_ASCIIDOC_LITERALBK 20
#define SCE_ASCIIDOC_ATTRIB 21
#define SCE_ASCIIDOC_ATTRIBVAL 22
#define SCE_ASCIIDOC_MACRO 23
#define SCE_GD_DEFAULT 0
#define SCE_GD_COMMENTLINE 1
#define SCE_GD_NUMBER 2
#define SCE_GD_STRING 3
#define SCE_GD_CHARACTER 4
#define SCE_GD_WORD 5
#define SCE_GD_TRIPLE 6
#define SCE_GD_TRIPLEDOUBLE 7
#define SCE_GD_CLASSNAME 8
#define SCE_GD_FUNCNAME 9
#define SCE_GD_OPERATOR 10
#define SCE_GD_IDENTIFIER 11
#define SCE_GD_COMMENTBLOCK 12
#define SCE_GD_STRINGEOL 13
#define SCE_GD_WORD2 14
#define SCE_GD_ANNOTATION 15
/* --Autogenerated -- end of section automatically generated from Scintilla.iface */
#endif

View File

@ -28,36 +28,36 @@
using namespace Lexilla;
static bool Is0To9(char ch) {
namespace {
constexpr bool Is0To9(char ch) noexcept {
return (ch >= '0') && (ch <= '9');
}
static bool IsAlphabetic(int ch) {
bool IsAlphabetic(int ch) noexcept {
return IsASCII(ch) && isalpha(ch);
}
static inline bool AtEOL(Accessor &styler, Sci_PositionU i) {
inline bool AtEOL(Accessor &styler, Sci_PositionU i) {
return (styler[i] == '\n') ||
((styler[i] == '\r') && (styler.SafeGetCharAt(i + 1) != '\n'));
}
// Tests for BATCH Operators
static bool IsBOperator(char ch) {
constexpr bool IsBOperator(char ch) noexcept {
return (ch == '=') || (ch == '+') || (ch == '>') || (ch == '<') ||
(ch == '|') || (ch == '?') || (ch == '*') ||
(ch == '&') || (ch == '(') || (ch == ')') ||
(ch == '[') || (ch == ']');
(ch == '|') || (ch == '?') || (ch == '*')||
(ch == '&') || (ch == '(') || (ch == ')');
}
// Tests for BATCH Separators
static bool IsBSeparator(char ch) {
constexpr bool IsBSeparator(char ch) noexcept {
return (ch == '\\') || (ch == '.') || (ch == ';') ||
(ch == '\"') || (ch == '\'') || (ch == '/') ||
(ch == '&') || (ch == '|');
(ch == '\"') || (ch == '\'') || (ch == '/');
}
// Tests for escape character
static bool IsEscaped(char* wordStr, Sci_PositionU pos) {
bool IsEscaped(const char* wordStr, Sci_PositionU pos) noexcept {
bool isQoted=false;
while (pos>0){
pos--;
@ -70,14 +70,14 @@ static bool IsEscaped(char* wordStr, Sci_PositionU pos) {
}
// Tests for quote character
static bool textQuoted(char *lineBuffer, Sci_PositionU endPos) {
bool textQuoted(const char *lineBuffer, Sci_PositionU endPos) {
char strBuffer[1024];
strncpy(strBuffer, lineBuffer, endPos);
strBuffer[endPos] = '\0';
char *pQuote;
pQuote = strchr(strBuffer, '"');
bool CurrentStatus = false;
while (pQuote != nullptr)
while (pQuote != NULL)
{
if (!IsEscaped(strBuffer, pQuote - strBuffer)) {
CurrentStatus = !CurrentStatus;
@ -87,7 +87,7 @@ static bool textQuoted(char *lineBuffer, Sci_PositionU endPos) {
return CurrentStatus;
}
static void ColouriseBatchDoc(
void ColouriseBatchDoc(
Sci_PositionU startPos,
Sci_Position length,
int /*initStyle*/,
@ -111,7 +111,7 @@ static void ColouriseBatchDoc(
}
}
char lineBuffer[1024];
char lineBuffer[1024] {};
styler.StartAt(startPos);
styler.StartSegment(startPos);
@ -125,27 +125,18 @@ static void ColouriseBatchDoc(
if (AtEOL(styler, i) || (linePos >= sizeof(lineBuffer) - 1) || (i==startPos + length-1)) {
// End of line (or of line buffer) (or End of Last Line) met, colourise it
lineBuffer[linePos] = '\0';
Sci_PositionU lengthLine=linePos;
Sci_PositionU endPos=i;
Sci_PositionU offset = 0; // Line Buffer Offset
Sci_PositionU cmdLoc; // External Command / Program Location
char wordBuffer[81]; // Word Buffer - large to catch long paths
Sci_PositionU wbl; // Word Buffer Length
Sci_PositionU wbo; // Word Buffer Offset - also Special Keyword Buffer Length
WordList &keywords = *keywordlists[0]; // Internal Commands
WordList &keywords2 = *keywordlists[1]; // External Commands (optional)
const Sci_PositionU lengthLine=linePos;
const Sci_PositionU endPos=i;
const WordList &keywords = *keywordlists[0]; // Internal Commands
const WordList &keywords2 = *keywordlists[1]; // External Commands (optional)
// CHOICE, ECHO, GOTO, PROMPT and SET have Default Text that may contain Regular Keywords
// Toggling Regular Keyword Checking off improves readability
// Other Regular Keywords and External Commands / Programs might also benefit from toggling
// Need a more robust algorithm to properly toggle Regular Keyword Checking
bool stopLineProcessing=false; // Used to stop line processing if Comment or Drive Change found
// Special Keywords are those that allow certain characters without whitespace after the command
// Examples are: cd. cd\ md. rd. dir| dir> echo: echo. path=
// Special Keyword Buffer used to determine if the first n characters is a Keyword
char sKeywordBuffer[10]; // Special Keyword Buffer
bool sKeywordFound; // Exit Special Keyword for-loop if found
Sci_PositionU offset = 0; // Line Buffer Offset
// Skip initial spaces
while ((offset < lengthLine) && (isspacechar(lineBuffer[offset]))) {
offset++;
@ -153,7 +144,7 @@ static void ColouriseBatchDoc(
// Colorize Default Text
styler.ColourTo(startLine + offset - 1, SCE_BAT_DEFAULT);
// Set External Command / Program Location
cmdLoc = offset;
Sci_PositionU cmdLoc = offset;
// Check for Fake Label (Comment) or Real Label - return if found
if (lineBuffer[offset] == ':') {
@ -192,43 +183,21 @@ static void ColouriseBatchDoc(
// Colorize Default Text
styler.ColourTo(startLine + offset - 1, SCE_BAT_DEFAULT);
}
char wordBuffer[81]{}; // Word Buffer - large to catch long paths
// Copy word from Line Buffer into Word Buffer
wbl = 0;
Sci_PositionU wbl = 0; // Word Buffer Length
for (; offset < lengthLine && wbl < 80 &&
!isspacechar(lineBuffer[offset]); wbl++, offset++) {
wordBuffer[wbl] = static_cast<char>(tolower(lineBuffer[offset]));
wordBuffer[wbl] = tolower(lineBuffer[offset]);
}
wordBuffer[wbl] = '\0';
wbo = 0;
Sci_PositionU wbo = 0; // Word Buffer Offset - also Special Keyword Buffer Length
// Check for Comment - return if found
if ((CompareCaseInsensitive(wordBuffer, "rem") == 0) && continueProcessing) {
styler.ColourTo(endPos, SCE_BAT_COMMENT);
break;
}
else if ((wbl > 2) && (wordBuffer[0] == '&') && (wordBuffer[1] == ':') && (wordBuffer[2] == ':') && (continueProcessing)) {
styler.ColourTo(endPos, SCE_BAT_COMMENT);
return;
}
else if (wordBuffer[0] == '&') {
// check for comment
Sci_PositionU cmntLoc = offset - wbl + 1;
// Skip next spaces
while ((cmntLoc < lengthLine) &&
(isspacechar(lineBuffer[cmntLoc]))) {
cmntLoc++;
}
int p = 0;
char buffer[5];
while ((cmntLoc < lengthLine) && (p < 4)) {
buffer[p++] = lineBuffer[cmntLoc++];
}
buffer[p] = '\0';
if ((((buffer[0] == ':') && (buffer[1] == ':')) || (CompareCaseInsensitive(buffer, "rem ") == 0)) && (continueProcessing)) {
styler.ColourTo(endPos, SCE_BAT_COMMENT);
return;
}
}
// Check for Separator
if (IsBSeparator(wordBuffer[0])) {
// Check for External Command / Program
@ -312,12 +281,16 @@ static void ColouriseBatchDoc(
// Check for Special Keyword
// Affected Commands are in Length range 2-6
// Good that ERRORLEVEL, EXIST, CALL, DO, LOADHIGH, and LH are unaffected
sKeywordFound = false;
bool sKeywordFound = false; // Exit Special Keyword for-loop if found
for (Sci_PositionU keywordLength = 2; keywordLength < wbl && keywordLength < 7 && !sKeywordFound; keywordLength++) {
// Special Keywords are those that allow certain characters without whitespace after the command
// Examples are: cd. cd\ md. rd. dir| dir> echo: echo. path=
// Special Keyword Buffer used to determine if the first n characters is a Keyword
char sKeywordBuffer[10]{}; // Special Keyword Buffer
wbo = 0;
// Copy Keyword Length from Word Buffer into Special Keyword Buffer
for (; wbo < keywordLength; wbo++) {
sKeywordBuffer[wbo] = static_cast<char>(wordBuffer[wbo]);
sKeywordBuffer[wbo] = wordBuffer[wbo];
}
sKeywordBuffer[wbo] = '\0';
// Check for Special Keyword in list
@ -437,12 +410,12 @@ static void ColouriseBatchDoc(
if (cmdLoc == offset - wbl) {
cmdLoc = offset - (wbl - wbo);
}
bool isArgument = (wordBuffer[1] == '~');
const bool isArgument = (wordBuffer[1] == '~');
if (isArgument) {
Sci_PositionU expansionStopOffset = 2;
bool isValid = false;
for (; expansionStopOffset < wbl; expansionStopOffset++) {
if (isArgument && Is0To9(wordBuffer[expansionStopOffset])) {
if (Is0To9(wordBuffer[expansionStopOffset])) {
expansionStopOffset++;
isValid = true;
wbo = expansionStopOffset;
@ -643,10 +616,12 @@ static void ColouriseBatchDoc(
}
}
static const char *const batchWordListDesc[] = {
const char *const batchWordListDesc[] = {
"Internal Commands",
"External Commands",
nullptr
0
};
LexerModule lmBatch(SCLEX_BATCH, ColouriseBatchDoc, "batch", nullptr, batchWordListDesc);
}
LexerModule lmBatch(SCLEX_BATCH, ColouriseBatchDoc, "batch", 0, batchWordListDesc);

View File

@ -56,8 +56,13 @@
using namespace Lexilla;
namespace {
constexpr bool IsNewline(const int ch) {
return (ch == '\n' || ch == '\r' || ch == '\0'); // sc.GetRelative(i) returns '\0' if out of range
// sc.GetRelative(i) returns '\0' if out of range
return (ch == '\n' || ch == '\r' || ch == '\0');
}
}
// True if can follow ch down to the end with possibly trailing whitespace

View File

@ -151,13 +151,15 @@ int GetPyStringState(Accessor &styler, Sci_Position i, Sci_PositionU *nextIndex,
char ch = styler.SafeGetCharAt(i);
char chNext = styler.SafeGetCharAt(i + 1);
int firstIsF = (ch == 'f' || ch == 'F');
// Advance beyond r, u, or ur prefix (or r, b, or br in Python 2.7+ and r, f, or fr in Python 3.6+), but bail if there are any unexpected chars
// Advance beyond r, u, or ur prefix (or r, b, or br in Python 2.7+ and r, f, or fr in Python 3.6+), but bail if there are any unexpected chars
if (ch == 'r' || ch == 'R') {
if (chNext == 'f' || chNext == 'F') {
firstIsF = true;
i += 2;
} else
i += 1;
if (chNext == 'f' || chNext == 'F') {
firstIsF = true;
i += 2;
} else {
i += 1;
}
ch = styler.SafeGetCharAt(i);
chNext = styler.SafeGetCharAt(i + 1);
} else if (IsPyStringTypeChar(ch, allowed)) {
@ -238,7 +240,7 @@ struct OptionsPython {
bool foldCompact;
bool unicodeIdentifiers;
OptionsPython() {
OptionsPython() noexcept {
whingeLevel = 0;
base2or8Literals = true;
stringsU = true;
@ -442,6 +444,8 @@ Sci_Position SCI_METHOD LexerPython::WordListSet(int n, const char *wl) {
case 1:
wordListN = &keywords2;
break;
default:
break;
}
Sci_Position firstModification = -1;
if (wordListN) {
@ -641,7 +645,7 @@ void SCI_METHOD LexerPython::Lex(Sci_PositionU startPos, Sci_Position length, in
style = SCE_P_WORD2;
}
} else {
int subStyle = classifierIdentifiers.ValueFor(s);
const int subStyle = classifierIdentifiers.ValueFor(s);
if (subStyle >= 0) {
style = subStyle;
}
@ -901,8 +905,8 @@ void SCI_METHOD LexerPython::Fold(Sci_PositionU startPos, Sci_Position length, i
const int style = styler.StyleAt(lookAtPos) & 31;
quote = options.foldQuotes && IsPyTripleQuoteStringState(style);
}
const int quote_start = (quote && !prevQuote);
const int quote_continue = (quote && prevQuote);
const bool quote_start = (quote && !prevQuote);
const bool quote_continue = (quote && prevQuote);
if (!quote || !prevQuote)
indentCurrentLevel = indentCurrent & SC_FOLDLEVELNUMBERMASK;
if (quote)
@ -927,8 +931,7 @@ void SCI_METHOD LexerPython::Fold(Sci_PositionU startPos, Sci_Position length, i
int minCommentLevel = indentCurrentLevel;
while (!quote &&
(lineNext < docLines) &&
((indentNext & SC_FOLDLEVELWHITEFLAG) ||
(lineNext <= docLines && IsCommentLine(lineNext, styler)))) {
((indentNext & SC_FOLDLEVELWHITEFLAG) || (IsCommentLine(lineNext, styler)))) {
if (IsCommentLine(lineNext, styler) && indentNext < minCommentLevel) {
minCommentLevel = indentNext;

View File

@ -1,137 +0,0 @@
// Scintilla source code edit control
/** @file LexKix.cxx
** Lexer for KIX-Scripts.
**/
// Copyright 2004 by Manfred Becker <manfred@becker-trdf.de>
// The License.txt file describes the conditions under which this software may be distributed.
// Edited by Lee Wilmott (24-Jun-2014) added support for block comments
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
#include <stdarg.h>
#include <assert.h>
#include <ctype.h>
#include <string>
#include <string_view>
#include "ILexer.h"
#include "Scintilla.h"
#include "SciLexer.h"
#include "WordList.h"
#include "LexAccessor.h"
#include "Accessor.h"
#include "StyleContext.h"
#include "CharacterSet.h"
#include "LexerModule.h"
using namespace Lexilla;
// Extended to accept accented characters
static inline bool IsAWordChar(int ch) {
return ch >= 0x80 || isalnum(ch) || ch == '_';
}
static inline bool IsOperator(const int ch) {
return (ch == '+' || ch == '-' || ch == '*' || ch == '/' || ch == '&' || ch == '|' || ch == '<' || ch == '>' || ch == '=');
}
static void ColouriseKixDoc(Sci_PositionU startPos, Sci_Position length, int initStyle,
WordList *keywordlists[], Accessor &styler) {
WordList &keywords = *keywordlists[0];
WordList &keywords2 = *keywordlists[1];
WordList &keywords3 = *keywordlists[2];
// WordList &keywords4 = *keywordlists[3];
styler.StartAt(startPos);
StyleContext sc(startPos, length, initStyle, styler);
for (; sc.More(); sc.Forward()) {
if (sc.state == SCE_KIX_COMMENT) {
if (sc.atLineEnd) {
sc.SetState(SCE_KIX_DEFAULT);
}
} else if (sc.state == SCE_KIX_COMMENTSTREAM) {
if (sc.ch == '/' && sc.chPrev == '*') {
sc.ForwardSetState(SCE_KIX_DEFAULT);
}
} else if (sc.state == SCE_KIX_STRING1) {
// This is a doubles quotes string
if (sc.ch == '\"') {
sc.ForwardSetState(SCE_KIX_DEFAULT);
}
} else if (sc.state == SCE_KIX_STRING2) {
// This is a single quote string
if (sc.ch == '\'') {
sc.ForwardSetState(SCE_KIX_DEFAULT);
}
} else if (sc.state == SCE_KIX_NUMBER) {
if (!IsADigit(sc.ch)) {
sc.SetState(SCE_KIX_DEFAULT);
}
} else if (sc.state == SCE_KIX_VAR) {
if (!IsAWordChar(sc.ch)) {
sc.SetState(SCE_KIX_DEFAULT);
}
} else if (sc.state == SCE_KIX_MACRO) {
if (!IsAWordChar(sc.ch) && !IsADigit(sc.ch)) {
char s[100];
sc.GetCurrentLowered(s, sizeof(s));
if (!keywords3.InList(&s[1])) {
sc.ChangeState(SCE_KIX_DEFAULT);
}
sc.SetState(SCE_KIX_DEFAULT);
}
} else if (sc.state == SCE_KIX_OPERATOR) {
if (!IsOperator(sc.ch)) {
sc.SetState(SCE_KIX_DEFAULT);
}
} else if (sc.state == SCE_KIX_IDENTIFIER) {
if (!IsAWordChar(sc.ch)) {
char s[100];
sc.GetCurrentLowered(s, sizeof(s));
if (keywords.InList(s)) {
sc.ChangeState(SCE_KIX_KEYWORD);
} else if (keywords2.InList(s)) {
sc.ChangeState(SCE_KIX_FUNCTIONS);
}
sc.SetState(SCE_KIX_DEFAULT);
}
}
// Determine if a new state should be entered.
if (sc.state == SCE_KIX_DEFAULT) {
if (sc.ch == ';') {
sc.SetState(SCE_KIX_COMMENT);
} else if (sc.ch == '/' && sc.chNext == '*') {
sc.SetState(SCE_KIX_COMMENTSTREAM);
} else if (sc.ch == '\"') {
sc.SetState(SCE_KIX_STRING1);
} else if (sc.ch == '\'') {
sc.SetState(SCE_KIX_STRING2);
} else if (sc.ch == '$') {
sc.SetState(SCE_KIX_VAR);
} else if (sc.ch == '@') {
sc.SetState(SCE_KIX_MACRO);
} else if (IsADigit(sc.ch) || ((sc.ch == '.' || sc.ch == '&') && IsADigit(sc.chNext))) {
sc.SetState(SCE_KIX_NUMBER);
} else if (IsOperator(sc.ch)) {
sc.SetState(SCE_KIX_OPERATOR);
} else if (IsAWordChar(sc.ch)) {
sc.SetState(SCE_KIX_IDENTIFIER);
}
}
}
sc.Complete();
}
LexerModule lmKix(SCLEX_KIX, ColouriseKixDoc, "kix");

View File

@ -56,8 +56,13 @@
using namespace Lexilla;
static inline bool IsNewline(const int ch) {
return (ch == '\n' || ch == '\r');
namespace {
constexpr bool IsNewline(const int ch) {
// sc.GetRelative(i) returns '\0' if out of range
return (ch == '\n' || ch == '\r' || ch == '\0');
}
}
// True if can follow ch down to the end with possibly trailing whitespace

View File

@ -71,7 +71,7 @@ bool IsPyComment(Accessor &styler, Sci_Position pos, Sci_Position len) {
return len > 0 && styler[pos] == '#';
}
bool IsPyStringTypeChar(int ch, literalsAllowed allowed) noexcept {
constexpr bool IsPyStringTypeChar(int ch, literalsAllowed allowed) noexcept {
return
((allowed & litB) && (ch == 'b' || ch == 'B')) ||
((allowed & litU) && (ch == 'u' || ch == 'U')) ||
@ -93,17 +93,17 @@ bool IsPyStringStart(int ch, int chNext, int chNext2, literalsAllowed allowed) n
return false;
}
bool IsPyFStringState(int st) noexcept {
constexpr bool IsPyFStringState(int st) noexcept {
return ((st == SCE_P_FCHARACTER) || (st == SCE_P_FSTRING) ||
(st == SCE_P_FTRIPLE) || (st == SCE_P_FTRIPLEDOUBLE));
}
bool IsPySingleQuoteStringState(int st) noexcept {
constexpr bool IsPySingleQuoteStringState(int st) noexcept {
return ((st == SCE_P_CHARACTER) || (st == SCE_P_STRING) ||
(st == SCE_P_FCHARACTER) || (st == SCE_P_FSTRING));
}
bool IsPyTripleQuoteStringState(int st) noexcept {
constexpr bool IsPyTripleQuoteStringState(int st) noexcept {
return ((st == SCE_P_TRIPLE) || (st == SCE_P_TRIPLEDOUBLE) ||
(st == SCE_P_FTRIPLE) || (st == SCE_P_FTRIPLEDOUBLE));
}
@ -232,7 +232,7 @@ struct OptionsPython {
bool foldCompact;
bool unicodeIdentifiers;
OptionsPython() {
OptionsPython() noexcept {
whingeLevel = 0;
base2or8Literals = true;
stringsU = true;
@ -436,6 +436,8 @@ Sci_Position SCI_METHOD LexerPython::WordListSet(int n, const char *wl) {
case 1:
wordListN = &keywords2;
break;
default:
break;
}
Sci_Position firstModification = -1;
if (wordListN) {
@ -635,7 +637,7 @@ void SCI_METHOD LexerPython::Lex(Sci_PositionU startPos, Sci_Position length, in
style = SCE_P_WORD2;
}
} else {
int subStyle = classifierIdentifiers.ValueFor(s);
const int subStyle = classifierIdentifiers.ValueFor(s);
if (subStyle >= 0) {
style = subStyle;
}
@ -895,8 +897,8 @@ void SCI_METHOD LexerPython::Fold(Sci_PositionU startPos, Sci_Position length, i
const int style = styler.StyleAt(lookAtPos) & 31;
quote = options.foldQuotes && IsPyTripleQuoteStringState(style);
}
const int quote_start = (quote && !prevQuote);
const int quote_continue = (quote && prevQuote);
const bool quote_start = (quote && !prevQuote);
const bool quote_continue = (quote && prevQuote);
if (!quote || !prevQuote)
indentCurrentLevel = indentCurrent & SC_FOLDLEVELNUMBERMASK;
if (quote)
@ -921,8 +923,7 @@ void SCI_METHOD LexerPython::Fold(Sci_PositionU startPos, Sci_Position length, i
int minCommentLevel = indentCurrentLevel;
while (!quote &&
(lineNext < docLines) &&
((indentNext & SC_FOLDLEVELWHITEFLAG) ||
(lineNext <= docLines && IsCommentLine(lineNext, styler)))) {
((indentNext & SC_FOLDLEVELWHITEFLAG) || (IsCommentLine(lineNext, styler)))) {
if (IsCommentLine(lineNext, styler) && indentNext < minCommentLevel) {
minCommentLevel = indentNext;

View File

@ -10,8 +10,8 @@ pushd %_THISDIR_%
set _EXITCODE_=0
set _PYTHON_EXE=C:\PortablePrograms\Python396_x64_emb\python.exe
rem set _PYTHON_EXE=C:\PortablePrograms\Python396_x64_emb\python.exe
call :RESOLVE_PATH _PYTHON_EXE "%_THISDIR_%..\..\..\..\_python_emb\python.exe"
set _CMD_="%_PYTHON_EXE%" "%~dpn0.py"
echo.Calling: %_CMD_%

View File

@ -15,7 +15,7 @@
<key>CFBundlePackageType</key>
<string>$(PRODUCT_BUNDLE_PACKAGE_TYPE)</string>
<key>CFBundleShortVersionString</key>
<string>5.1.3</string>
<string>5.1.4</string>
<key>CFBundleVersion</key>
<string>$(CURRENT_PROJECT_VERSION)</string>
<key>NSHumanReadableCopyright</key>

View File

@ -154,13 +154,14 @@
28BA73AE24E34DBC00272C2D /* Lexilla.cxx in Sources */ = {isa = PBXBuildFile; fileRef = 28BA73AC24E34DBC00272C2D /* Lexilla.cxx */; };
70BF497C8D265026B77C97DA /* LexJulia.cxx in Sources */ = {isa = PBXBuildFile; fileRef = 315E4E969868C52C125686B2 /* LexJulia.cxx */; };
B32D4A2A9CEC222A5140E99F /* LexFSharp.cxx in Sources */ = {isa = PBXBuildFile; fileRef = F8E54626B22BD9493090F40B /* LexFSharp.cxx */; };
EC6A40EDB53BDA02ECD58989 /* LexAHKL.cxx in Sources */ = {isa = PBXBuildFile; fileRef = 1BCB4EB388CAB8BC57C8E524 /* LexAHKL.cxx */; };
1E0248FAAA68299AD73D6C2F /* LexCSV.cxx in Sources */ = {isa = PBXBuildFile; fileRef = 8FD24A478625FFC69BCF5611 /* LexCSV.cxx */; };
06F24059BEC5C74CD7536999 /* LexDart.cxx in Sources */ = {isa = PBXBuildFile; fileRef = 9B224055AF695FACF70C06EA /* LexDart.cxx */; };
08084D78A14ADD9A4E3BBF45 /* LexerUtils.cxx in Sources */ = {isa = PBXBuildFile; fileRef = 214542D293B8229DF76865BF /* LexerUtils.cxx */; };
5CC5494D93A9A27918106106 /* LexKotlin.cxx in Sources */ = {isa = PBXBuildFile; fileRef = 47A1492780FE119CF797F463 /* LexKotlin.cxx */; };
63104C2F805ED6F2623BA2DC /* LexTOML.cxx in Sources */ = {isa = PBXBuildFile; fileRef = 55A340DFB663EDFC048C3842 /* LexTOML.cxx */; };
5FC44C1DAAB2A99B8BFF4FF2 /* LexAHK.cxx in Sources */ = {isa = PBXBuildFile; fileRef = 09C9445A93AF2DE63F616464 /* LexAHK.cxx */; };
510D44AFB91EE873E86ABDD4 /* LexAsciidoc.cxx in Sources */ = {isa = PBXBuildFile; fileRef = 3AF14420BFC43876F16C5995 /* LexAsciidoc.cxx */; };
00D544CC992062D2E3CD4BF6 /* LexGDScript.cxx in Sources */ = {isa = PBXBuildFile; fileRef = A383409E9A994F461550FEC1 /* LexGDScript.cxx */; };
C9C044C2AB830C22CA34EC78 /* LexAHK.cxx in Sources */ = {isa = PBXBuildFile; fileRef = CB4443F190696B6C691056F7 /* LexAHK.cxx */; };
ACED40949FB0A8B8BC1D4F60 /* LexCSV.cxx in Sources */ = {isa = PBXBuildFile; fileRef = 8C844F27A3F578B7579F7D1E /* LexCSV.cxx */; };
816A4B98BCB2734616DFDF5C /* LexDart.cxx in Sources */ = {isa = PBXBuildFile; fileRef = FCF743259DD8126F29667664 /* LexDart.cxx */; };
128B4BECA39E41292DFD4C01 /* LexerUtils.cxx in Sources */ = {isa = PBXBuildFile; fileRef = 880E4A8CB5B776AA991C7BD2 /* LexerUtils.cxx */; };
57E44EEAB3E8A481F0BB71C0 /* LexKotlin.cxx in Sources */ = {isa = PBXBuildFile; fileRef = 39304F2BB5044664CC458D97 /* LexKotlin.cxx */; };
554840C68B6FD0C5DF4C0D0E /* LexTOML.cxx in Sources */ = {isa = PBXBuildFile; fileRef = 2DFD42CD8352E5FF62CDD9F1 /* LexTOML.cxx */; };
/* End PBXBuildFile section */
/* Begin PBXFileReference section */
@ -308,18 +309,19 @@
28BA733624E34D9700272C2D /* LexNimrod.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = LexNimrod.cxx; path = ../../lexers/LexNimrod.cxx; sourceTree = "<group>"; };
28BA733724E34D9700272C2D /* LexPerl.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = LexPerl.cxx; path = ../../lexers/LexPerl.cxx; sourceTree = "<group>"; };
28BA733824E34D9700272C2D /* LexRust.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = LexRust.cxx; path = ../../lexers/LexRust.cxx; sourceTree = "<group>"; };
28BA73AB24E34DBC00272C2D /* Lexilla.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Lexilla.h; path = ../Lexilla.h; sourceTree = "<group>"; };
28BA73AB24E34DBC00272C2D /* Lexilla.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Lexilla.h; path = ../../include/Lexilla.h; sourceTree = "<group>"; };
28BA73AC24E34DBC00272C2D /* Lexilla.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Lexilla.cxx; path = ../Lexilla.cxx; sourceTree = "<group>"; };
28BA73B024E3510900272C2D /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
315E4E969868C52C125686B2 /* LexJulia.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = LexJulia.cxx; path = ../../lexers/LexJulia.cxx; sourceTree = SOURCE_ROOT; };
F8E54626B22BD9493090F40B /* LexFSharp.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = LexFSharp.cxx; path = ../../lexers/LexFSharp.cxx; sourceTree = SOURCE_ROOT; };
1BCB4EB388CAB8BC57C8E524 /* LexAHKL.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = LexAHKL.cxx; path = ../../lexers/LexAHKL.cxx; sourceTree = SOURCE_ROOT; };
8FD24A478625FFC69BCF5611 /* LexCSV.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = LexCSV.cxx; path = ../../lexers/LexCSV.cxx; sourceTree = SOURCE_ROOT; };
9B224055AF695FACF70C06EA /* LexDart.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = LexDart.cxx; path = ../../lexers/LexDart.cxx; sourceTree = SOURCE_ROOT; };
214542D293B8229DF76865BF /* LexerUtils.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = LexerUtils.cxx; path = ../../lexers/LexerUtils.cxx; sourceTree = SOURCE_ROOT; };
47A1492780FE119CF797F463 /* LexKotlin.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = LexKotlin.cxx; path = ../../lexers/LexKotlin.cxx; sourceTree = SOURCE_ROOT; };
55A340DFB663EDFC048C3842 /* LexTOML.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = LexTOML.cxx; path = ../../lexers/LexTOML.cxx; sourceTree = SOURCE_ROOT; };
09C9445A93AF2DE63F616464 /* LexAHK.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = LexAHK.cxx; path = ../../lexers/LexAHK.cxx; sourceTree = SOURCE_ROOT; };
3AF14420BFC43876F16C5995 /* LexAsciidoc.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = LexAsciidoc.cxx; path = ../../lexers/LexAsciidoc.cxx; sourceTree = SOURCE_ROOT; };
A383409E9A994F461550FEC1 /* LexGDScript.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = LexGDScript.cxx; path = ../../lexers/LexGDScript.cxx; sourceTree = SOURCE_ROOT; };
CB4443F190696B6C691056F7 /* LexAHK.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = LexAHK.cxx; path = ../../lexers/LexAHK.cxx; sourceTree = SOURCE_ROOT; };
8C844F27A3F578B7579F7D1E /* LexCSV.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = LexCSV.cxx; path = ../../lexers/LexCSV.cxx; sourceTree = SOURCE_ROOT; };
FCF743259DD8126F29667664 /* LexDart.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = LexDart.cxx; path = ../../lexers/LexDart.cxx; sourceTree = SOURCE_ROOT; };
880E4A8CB5B776AA991C7BD2 /* LexerUtils.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = LexerUtils.cxx; path = ../../lexers/LexerUtils.cxx; sourceTree = SOURCE_ROOT; };
39304F2BB5044664CC458D97 /* LexKotlin.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = LexKotlin.cxx; path = ../../lexers/LexKotlin.cxx; sourceTree = SOURCE_ROOT; };
2DFD42CD8352E5FF62CDD9F1 /* LexTOML.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = LexTOML.cxx; path = ../../lexers/LexTOML.cxx; sourceTree = SOURCE_ROOT; };
/* End PBXFileReference section */
/* Begin PBXFrameworksBuildPhase section */
@ -367,9 +369,9 @@
28BA730624E34D9400272C2D /* LexA68k.cxx */,
28BA72EE24E34D9300272C2D /* LexAbaqus.cxx */,
28BA730024E34D9400272C2D /* LexAda.cxx */,
09C9445A93AF2DE63F616464 /* LexAHK.cxx */,
1BCB4EB388CAB8BC57C8E524 /* LexAHKL.cxx */,
CB4443F190696B6C691056F7 /* LexAHK.cxx */,
28BA72DF24E34D9200272C2D /* LexAPDL.cxx */,
3AF14420BFC43876F16C5995 /* LexAsciidoc.cxx */,
28BA72FF24E34D9400272C2D /* LexAsm.cxx */,
28BA72DB24E34D9200272C2D /* LexAsn1.cxx */,
28BA72D724E34D9200272C2D /* LexASY.cxx */,
@ -393,9 +395,9 @@
28BA730124E34D9400272C2D /* LexCrontab.cxx */,
28BA731524E34D9500272C2D /* LexCsound.cxx */,
28BA732924E34D9600272C2D /* LexCSS.cxx */,
8FD24A478625FFC69BCF5611 /* LexCSV.cxx */,
8C844F27A3F578B7579F7D1E /* LexCSV.cxx */,
28BA72E024E34D9200272C2D /* LexD.cxx */,
9B224055AF695FACF70C06EA /* LexDart.cxx */,
FCF743259DD8126F29667664 /* LexDart.cxx */,
28BA732C24E34D9600272C2D /* LexDataflex.cxx */,
28BA72DD24E34D9200272C2D /* LexDiff.cxx */,
28BA732024E34D9600272C2D /* LexDMAP.cxx */,
@ -405,13 +407,14 @@
28BA72D924E34D9200272C2D /* LexEiffel.cxx */,
28BA72E824E34D9200272C2D /* LexErlang.cxx */,
28BA72EB24E34D9300272C2D /* LexErrorList.cxx */,
214542D293B8229DF76865BF /* LexerUtils.cxx */,
880E4A8CB5B776AA991C7BD2 /* LexerUtils.cxx */,
28BA72F624E34D9300272C2D /* LexEScript.cxx */,
28BA72EC24E34D9300272C2D /* LexFlagship.cxx */,
28BA72CB24E34D9100272C2D /* LexForth.cxx */,
28BA72FB24E34D9400272C2D /* LexFortran.cxx */,
F8E54626B22BD9493090F40B /* LexFSharp.cxx */,
28BA72F224E34D9300272C2D /* LexGAP.cxx */,
A383409E9A994F461550FEC1 /* LexGDScript.cxx */,
28BA72CF24E34D9100272C2D /* LexGui4Cli.cxx */,
28BA731B24E34D9500272C2D /* LexHaskell.cxx */,
28BA731924E34D9500272C2D /* LexHex.cxx */,
@ -422,7 +425,7 @@
28BA733024E34D9600272C2D /* LexJSON.cxx */,
315E4E969868C52C125686B2 /* LexJulia.cxx */,
28BA731124E34D9500272C2D /* LexKix.cxx */,
47A1492780FE119CF797F463 /* LexKotlin.cxx */,
39304F2BB5044664CC458D97 /* LexKotlin.cxx */,
28BA72F824E34D9300272C2D /* LexKVIrc.cxx */,
28BA72ED24E34D9300272C2D /* LexLaTeX.cxx */,
28BA72E424E34D9200272C2D /* LexLisp.cxx */,
@ -479,7 +482,7 @@
28BA72C924E34D9100272C2D /* LexTCL.cxx */,
28BA730324E34D9400272C2D /* LexTCMD.cxx */,
28BA730824E34D9400272C2D /* LexTeX.cxx */,
55A340DFB663EDFC048C3842 /* LexTOML.cxx */,
2DFD42CD8352E5FF62CDD9F1 /* LexTOML.cxx */,
28BA730F24E34D9500272C2D /* LexTxt2tags.cxx */,
28BA731F24E34D9600272C2D /* LexVB.cxx */,
28BA731A24E34D9500272C2D /* LexVerilog.cxx */,
@ -741,13 +744,14 @@
28BA737C24E34D9700272C2D /* LexX12.cxx in Sources */,
B32D4A2A9CEC222A5140E99F /* LexFSharp.cxx in Sources */,
70BF497C8D265026B77C97DA /* LexJulia.cxx in Sources */,
EC6A40EDB53BDA02ECD58989 /* LexAHKL.cxx in Sources */,
1E0248FAAA68299AD73D6C2F /* LexCSV.cxx in Sources */,
06F24059BEC5C74CD7536999 /* LexDart.cxx in Sources */,
08084D78A14ADD9A4E3BBF45 /* LexerUtils.cxx in Sources */,
5CC5494D93A9A27918106106 /* LexKotlin.cxx in Sources */,
63104C2F805ED6F2623BA2DC /* LexTOML.cxx in Sources */,
5FC44C1DAAB2A99B8BFF4FF2 /* LexAHK.cxx in Sources */,
510D44AFB91EE873E86ABDD4 /* LexAsciidoc.cxx in Sources */,
00D544CC992062D2E3CD4BF6 /* LexGDScript.cxx in Sources */,
C9C044C2AB830C22CA34EC78 /* LexAHK.cxx in Sources */,
ACED40949FB0A8B8BC1D4F60 /* LexCSV.cxx in Sources */,
816A4B98BCB2734616DFDF5C /* LexDart.cxx in Sources */,
128B4BECA39E41292DFD4C01 /* LexerUtils.cxx in Sources */,
57E44EEAB3E8A481F0BB71C0 /* LexKotlin.cxx in Sources */,
554840C68B6FD0C5DF4C0D0E /* LexTOML.cxx in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@ -871,7 +875,7 @@
buildSettings = {
CLANG_CXX_LANGUAGE_STANDARD = "gnu++17";
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 5.1.3;
CURRENT_PROJECT_VERSION = 5.1.4;
DEVELOPMENT_TEAM = 4F446KW87E;
DYLIB_COMPATIBILITY_VERSION = 1;
DYLIB_CURRENT_VERSION = 1;
@ -897,7 +901,7 @@
buildSettings = {
CLANG_CXX_LANGUAGE_STANDARD = "gnu++17";
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 5.1.3;
CURRENT_PROJECT_VERSION = 5.1.4;
DEVELOPMENT_TEAM = 4F446KW87E;
DYLIB_COMPATIBILITY_VERSION = 1;
DYLIB_CURRENT_VERSION = 1;

View File

@ -4,8 +4,8 @@
#include <windows.h>
#define VERSION_LEXILLA "5.1.3"
#define VERSION_WORDS 5, 1, 3, 0
#define VERSION_LEXILLA "5.1.4"
#define VERSION_WORDS 5, 1, 4, 0
VS_VERSION_INFO VERSIONINFO
FILEVERSION VERSION_WORDS

View File

@ -312,6 +312,18 @@ LexJulia.o: \
../lexlib/LexerModule.h \
../lexlib/OptionSet.h \
../lexlib/DefaultLexer.h
LexKix.o: \
../lexers/LexKix.cxx \
../../scintilla/include/ILexer.h \
../../scintilla/include/Sci_Position.h \
../../scintilla/include/Scintilla.h \
../include/SciLexer.h \
../lexlib/WordList.h \
../lexlib/LexAccessor.h \
../lexlib/Accessor.h \
../lexlib/StyleContext.h \
../lexlib/CharacterSet.h \
../lexlib/LexerModule.h
LexLaTeX.o: \
../lexers/LexLaTeX.cxx \
../../scintilla/include/ILexer.h \
@ -649,18 +661,6 @@ LexJSON.o: \
../lexlib/CharacterSet.h \
../lexers_x/SciXLexer.h \
../include/SciLexer.h
LexKix.o: \
../lexers_x/LexKix.cxx \
../../scintilla/include/ILexer.h \
../../scintilla/include/Sci_Position.h \
../../scintilla/include/Scintilla.h \
../include/SciLexer.h \
../lexlib/WordList.h \
../lexlib/LexAccessor.h \
../lexlib/Accessor.h \
../lexlib/StyleContext.h \
../lexlib/CharacterSet.h \
../lexlib/LexerModule.h
LexKotlin.o: \
../lexers_x/LexKotlin.cxx \
../../scintilla/include/ILexer.h \

View File

@ -90,6 +90,7 @@ LEX_OBJS=\
$(DIR_O)\LexHTML.obj \
$(DIR_O)\LexInno.obj \
$(DIR_O)\LexJulia.obj \
$(DIR_O)\LexKix.obj \
$(DIR_O)\LexLaTeX.obj \
$(DIR_O)\LexLua.obj \
$(DIR_O)\LexMake.obj \
@ -115,7 +116,6 @@ LEX_OBJS=\
$(DIR_O)\LexDart.obj \
$(DIR_O)\LexerUtils.obj \
$(DIR_O)\LexJSON.obj \
$(DIR_O)\LexKix.obj \
$(DIR_O)\LexKotlin.obj \
$(DIR_O)\LexMarkdown.obj \
$(DIR_O)\LexPython.obj \

View File

@ -312,6 +312,18 @@ $(DIR_O)/LexJulia.obj: \
../lexlib/LexerModule.h \
../lexlib/OptionSet.h \
../lexlib/DefaultLexer.h
$(DIR_O)/LexKix.obj: \
../lexers/LexKix.cxx \
../../scintilla/include/ILexer.h \
../../scintilla/include/Sci_Position.h \
../../scintilla/include/Scintilla.h \
../include/SciLexer.h \
../lexlib/WordList.h \
../lexlib/LexAccessor.h \
../lexlib/Accessor.h \
../lexlib/StyleContext.h \
../lexlib/CharacterSet.h \
../lexlib/LexerModule.h
$(DIR_O)/LexLaTeX.obj: \
../lexers/LexLaTeX.cxx \
../../scintilla/include/ILexer.h \
@ -649,18 +661,6 @@ $(DIR_O)/LexJSON.obj: \
../lexlib/CharacterSet.h \
../lexers_x/SciXLexer.h \
../include/SciLexer.h
$(DIR_O)/LexKix.obj: \
../lexers_x/LexKix.cxx \
../../scintilla/include/ILexer.h \
../../scintilla/include/Sci_Position.h \
../../scintilla/include/Scintilla.h \
../include/SciLexer.h \
../lexlib/WordList.h \
../lexlib/LexAccessor.h \
../lexlib/Accessor.h \
../lexlib/StyleContext.h \
../lexlib/CharacterSet.h \
../lexlib/LexerModule.h
$(DIR_O)/LexKotlin.obj: \
../lexers_x/LexKotlin.cxx \
../../scintilla/include/ILexer.h \

View File

@ -1 +1 @@
513
514

View File

@ -9,7 +9,8 @@ pushd %_THISDIR_%
::cls
set _PYTHON_EXE=c:\PortablePrograms\Python396_x64_emb\python.exe
rem set _PYTHON_EXE=c:\PortablePrograms\Python396_x64_emb\python.exe
call :RESOLVE_PATH _PYTHON_EXE "%_THISDIR_%..\..\..\..\_python_emb\python.exe"
::set _CMD_="%_PYTHON_EXE%" -I -S -m "%~dpn0"

View File

@ -9,7 +9,8 @@ pushd %_THISDIR_%
::cls
set _PYTHON_EXE=c:\PortablePrograms\Python396_x64_emb\python.exe
rem set _PYTHON_EXE=c:\PortablePrograms\Python396_x64_emb\python.exe
call :RESOLVE_PATH _PYTHON_EXE "%_THISDIR_%..\..\..\..\_python_emb\python.exe"
::set _CMD_="%_PYTHON_EXE%" -I -S -m "%~dpn0"

View File

@ -105,6 +105,7 @@ typedef struct WININFO {
bool max;
int zoom;
UINT dpi;
} WININFO;
#define INIT_WININFO { CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, false, 100, USER_DEFAULT_SCREEN_DPI }
@ -288,8 +289,8 @@ typedef struct MRULIST {
DocPos iCaretPos[MRU_MAXITEMS];
DocPos iSelAnchPos[MRU_MAXITEMS];
LPWSTR pszBookMarks[MRU_MAXITEMS];
}
MRULIST, *PMRULIST, *LPMRULIST;
} MRULIST, *PMRULIST, *LPMRULIST;
// --------------------------------------------------------------------------
@ -335,6 +336,7 @@ typedef enum MARKER_ID {
MARKER_NP3_8,
// std bookmark -> counter is last
MARKER_NP3_BOOKMARK
} MARKER_ID;
// ASSERT( MARKER_NP3_BOOKMARK < SC_MARKNUM_FOLDEREND )
@ -359,6 +361,7 @@ typedef enum INDIC_ID {
INDIC_NP3_UNICODE_POINT,
// counter is last
INDIC_NP3_ID_CNT
} INDIC_ID;
// ASSERT( INDIC_NP3_ID_CNT < INDICATOR_IME )
@ -366,9 +369,11 @@ typedef enum INDIC_ID {
// --------------------------------------------------------------------------
#define ENCLDATA_SIZE 256
typedef struct _encloseselectiondata {
typedef struct ENCLOSESELDATA {
WCHAR pwsz1[ENCLDATA_SIZE];
WCHAR pwsz2[ENCLDATA_SIZE];
} ENCLOSESELDATA, *PENCLOSESELDATA;
// --------------------------------------------------------------------------
@ -757,6 +762,7 @@ typedef enum FileLoadFlags {
FLF_SkipUnicodeDetect = 1 << 3,
FLF_SkipANSICPDetection = 1 << 4,
FLF_ForceEncDetection = 1 << 5
} FileLoadFlags;
typedef enum FileSaveFlags {
@ -766,6 +772,7 @@ typedef enum FileSaveFlags {
FSF_Ask = 1 << 1,
FSF_SaveAs = 1 << 2,
FSF_SaveCopy = 1 << 3
} FileSaveFlags;
//=============================================================================