Release notes are here https://scintilla.org/ScintillaHistory.html
The update was pretty straightforward, there doesn't seem to be anything special we'd need to address.
I only added some mappings for newly introduced styles. As I added several lexers in this release, the version of SciLexer.h in Geany is pretty much up to date so I checked out the commit of the previous Scintilla update and diffed against it. This is the result:
<details> <summary>Full diff</summary>
```diff --- geany2/geany/scintilla/lexilla/include/SciLexer.h 2024-12-20 22:42:18.933032000 +0100 +++ geany/scintilla/lexilla/include/SciLexer.h 2024-12-17 22:42:38.000000000 +0100 @@ -148,6 +148,11 @@ #define SCLEX_JULIA 133 #define SCLEX_ASCIIDOC 134 #define SCLEX_GDSCRIPT 135 +#define SCLEX_TOML 136 +#define SCLEX_TROFF 137 +#define SCLEX_DART 138 +#define SCLEX_ZIG 139 +#define SCLEX_NIX 140 #define SCLEX_AUTOMATIC 1000 #define SCE_P_DEFAULT 0 #define SCE_P_COMMENTLINE 1 @@ -198,6 +203,19 @@ #define SCE_C_USERLITERAL 25 #define SCE_C_TASKMARKER 26 #define SCE_C_ESCAPESEQUENCE 27 +#define SCE_COBOL_DEFAULT 0 +#define SCE_COBOL_COMMENT 1 +#define SCE_COBOL_COMMENTLINE 2 +#define SCE_COBOL_COMMENTDOC 3 +#define SCE_COBOL_NUMBER 4 +#define SCE_COBOL_WORD 5 +#define SCE_COBOL_STRING 6 +#define SCE_COBOL_CHARACTER 7 +#define SCE_COBOL_WORD3 8 +#define SCE_COBOL_PREPROCESSOR 9 +#define SCE_COBOL_OPERATOR 10 +#define SCE_COBOL_IDENTIFIER 11 +#define SCE_COBOL_WORD2 16 #define SCE_D_DEFAULT 0 #define SCE_D_COMMENT 1 #define SCE_D_COMMENTLINE 2 @@ -288,6 +306,7 @@ #define SCE_HJ_SYMBOLS 50 #define SCE_HJ_STRINGEOL 51 #define SCE_HJ_REGEX 52 +#define SCE_HJ_TEMPLATELITERAL 53 #define SCE_HJA_START 55 #define SCE_HJA_DEFAULT 56 #define SCE_HJA_COMMENT 57 @@ -301,6 +320,7 @@ #define SCE_HJA_SYMBOLS 65 #define SCE_HJA_STRINGEOL 66 #define SCE_HJA_REGEX 67 +#define SCE_HJA_TEMPLATELITERAL 68 #define SCE_HB_START 70 #define SCE_HB_DEFAULT 71 #define SCE_HB_COMMENTLINE 72 @@ -1790,6 +1810,8 @@ #define SCE_RUST_BYTESTRING 21 #define SCE_RUST_BYTESTRINGR 22 #define SCE_RUST_BYTECHARACTER 23 +#define SCE_RUST_CSTRING 24 +#define SCE_RUST_CSTRINGR 25 #define SCE_DMAP_DEFAULT 0 #define SCE_DMAP_COMMENT 1 #define SCE_DMAP_NUMBER 2 @@ -2058,6 +2080,110 @@ #define SCE_GD_WORD2 14 #define SCE_GD_ANNOTATION 15 #define SCE_GD_NODEPATH 16 +#define SCE_TOML_DEFAULT 0 +#define SCE_TOML_COMMENT 1 +#define SCE_TOML_IDENTIFIER 2 +#define SCE_TOML_KEYWORD 3 +#define SCE_TOML_NUMBER 4 +#define SCE_TOML_TABLE 5 +#define SCE_TOML_KEY 6 +#define SCE_TOML_ERROR 7 +#define SCE_TOML_OPERATOR 8 +#define SCE_TOML_STRING_SQ 9 +#define SCE_TOML_STRING_DQ 10 +#define SCE_TOML_TRIPLE_STRING_SQ 11 +#define SCE_TOML_TRIPLE_STRING_DQ 12 +#define SCE_TOML_ESCAPECHAR 13 +#define SCE_TOML_DATETIME 14 +#define SCE_TROFF_DEFAULT 0 +#define SCE_TROFF_REQUEST 1 +#define SCE_TROFF_COMMAND 2 +#define SCE_TROFF_NUMBER 3 +#define SCE_TROFF_OPERATOR 4 +#define SCE_TROFF_STRING 5 +#define SCE_TROFF_COMMENT 6 +#define SCE_TROFF_IGNORE 7 +#define SCE_TROFF_ESCAPE_STRING 8 +#define SCE_TROFF_ESCAPE_MACRO 9 +#define SCE_TROFF_ESCAPE_FONT 10 +#define SCE_TROFF_ESCAPE_NUMBER 11 +#define SCE_TROFF_ESCAPE_COLOUR 12 +#define SCE_TROFF_ESCAPE_GLYPH 13 +#define SCE_TROFF_ESCAPE_ENV 14 +#define SCE_TROFF_ESCAPE_SUPPRESSION 15 +#define SCE_TROFF_ESCAPE_SIZE 16 +#define SCE_TROFF_ESCAPE_TRANSPARENT 17 +#define SCE_TROFF_ESCAPE_ISVALID 18 +#define SCE_TROFF_ESCAPE_DRAW 19 +#define SCE_TROFF_ESCAPE_MOVE 20 +#define SCE_TROFF_ESCAPE_HEIGHT 21 +#define SCE_TROFF_ESCAPE_OVERSTRIKE 22 +#define SCE_TROFF_ESCAPE_SLANT 23 +#define SCE_TROFF_ESCAPE_WIDTH 24 +#define SCE_TROFF_ESCAPE_VSPACING 25 +#define SCE_TROFF_ESCAPE_DEVICE 26 +#define SCE_TROFF_ESCAPE_NOMOVE 27 +#define SCE_DART_DEFAULT 0 +#define SCE_DART_COMMENTLINE 1 +#define SCE_DART_COMMENTLINEDOC 2 +#define SCE_DART_COMMENTBLOCK 3 +#define SCE_DART_COMMENTBLOCKDOC 4 +#define SCE_DART_STRING_SQ 5 +#define SCE_DART_STRING_DQ 6 +#define SCE_DART_TRIPLE_STRING_SQ 7 +#define SCE_DART_TRIPLE_STRING_DQ 8 +#define SCE_DART_RAWSTRING_SQ 9 +#define SCE_DART_RAWSTRING_DQ 10 +#define SCE_DART_TRIPLE_RAWSTRING_SQ 11 +#define SCE_DART_TRIPLE_RAWSTRING_DQ 12 +#define SCE_DART_ESCAPECHAR 13 +#define SCE_DART_IDENTIFIER 14 +#define SCE_DART_IDENTIFIER_STRING 15 +#define SCE_DART_OPERATOR 16 +#define SCE_DART_OPERATOR_STRING 17 +#define SCE_DART_SYMBOL_IDENTIFIER 18 +#define SCE_DART_SYMBOL_OPERATOR 19 +#define SCE_DART_NUMBER 20 +#define SCE_DART_KEY 21 +#define SCE_DART_METADATA 22 +#define SCE_DART_KW_PRIMARY 23 +#define SCE_DART_KW_SECONDARY 24 +#define SCE_DART_KW_TERTIARY 25 +#define SCE_DART_KW_TYPE 26 +#define SCE_ZIG_DEFAULT 0 +#define SCE_ZIG_COMMENTLINE 1 +#define SCE_ZIG_COMMENTLINEDOC 2 +#define SCE_ZIG_COMMENTLINETOP 3 +#define SCE_ZIG_NUMBER 4 +#define SCE_ZIG_OPERATOR 5 +#define SCE_ZIG_CHARACTER 6 +#define SCE_ZIG_STRING 7 +#define SCE_ZIG_MULTISTRING 8 +#define SCE_ZIG_ESCAPECHAR 9 +#define SCE_ZIG_IDENTIFIER 10 +#define SCE_ZIG_FUNCTION 11 +#define SCE_ZIG_BUILTIN_FUNCTION 12 +#define SCE_ZIG_KW_PRIMARY 13 +#define SCE_ZIG_KW_SECONDARY 14 +#define SCE_ZIG_KW_TERTIARY 15 +#define SCE_ZIG_KW_TYPE 16 +#define SCE_ZIG_IDENTIFIER_STRING 17 +#define SCE_NIX_DEFAULT 0 +#define SCE_NIX_COMMENTLINE 1 +#define SCE_NIX_COMMENTBLOCK 2 +#define SCE_NIX_STRING 3 +#define SCE_NIX_STRING_MULTILINE 4 +#define SCE_NIX_ESCAPECHAR 5 +#define SCE_NIX_IDENTIFIER 6 +#define SCE_NIX_OPERATOR 7 +#define SCE_NIX_OPERATOR_STRING 8 +#define SCE_NIX_NUMBER 9 +#define SCE_NIX_KEY 10 +#define SCE_NIX_PATH 11 +#define SCE_NIX_KEYWORD1 12 +#define SCE_NIX_KEYWORD2 13 +#define SCE_NIX_KEYWORD3 14 +#define SCE_NIX_KEYWORD4 15 /* --Autogenerated -- end of section automatically generated from Scintilla.iface */
#endif ```
</details>
The Cobol styles are identical to C styles (https://github.com/ScintillaOrg/lexilla/commit/50373fa73489b3b4d5691d7d71bae...) so we can keep reusing them.
I also fixed a a problem in Rust raw byte string mapping that was introduced some time in the past.
Fixes #2750 Fixes #3658 Fixes #3310
Closes #4080 Closes #4034 You can view, comment on, or merge this pull request online at:
https://github.com/geany/geany/pull/4168
-- Commit Summary --
* Update to Scintilla 5.5.4 and Lexilla 5.4.2 * Add mappings for newly introduced styles
-- File Changes --
M data/filedefs/filetypes.html (2) M data/filedefs/filetypes.rust (2) M meson.build (4) M scintilla/Makefile.am (4) M scintilla/gtk/PlatGTK.cxx (30) M scintilla/gtk/ScintillaGTK.cxx (14) M scintilla/gtk/ScintillaGTK.h (2) M scintilla/include/ILoader.h (13) M scintilla/include/Scintilla.h (42) M scintilla/include/Scintilla.iface (102) M scintilla/include/ScintillaCall.h (41) M scintilla/include/ScintillaMessages.h (27) M scintilla/include/ScintillaTypes.h (16) M scintilla/lexilla/include/Lexilla.h (16) M scintilla/lexilla/include/SciLexer.h (2) M scintilla/lexilla/lexers/LexAU3.cxx (2) M scintilla/lexilla/lexers/LexAbaqus.cxx (2) M scintilla/lexilla/lexers/LexAda.cxx (2) M scintilla/lexilla/lexers/LexAsciidoc.cxx (2) M scintilla/lexilla/lexers/LexAsm.cxx (89) M scintilla/lexilla/lexers/LexBash.cxx (86) M scintilla/lexilla/lexers/LexBasic.cxx (6) M scintilla/lexilla/lexers/LexBatch.cxx (74) M scintilla/lexilla/lexers/LexCIL.cxx (2) M scintilla/lexilla/lexers/LexCOBOL.cxx (262) M scintilla/lexilla/lexers/LexCPP.cxx (313) M scintilla/lexilla/lexers/LexCSS.cxx (2) M scintilla/lexilla/lexers/LexCaml.cxx (2) M scintilla/lexilla/lexers/LexCmake.cxx (2) M scintilla/lexilla/lexers/LexCoffeeScript.cxx (2) M scintilla/lexilla/lexers/LexD.cxx (5) M scintilla/lexilla/lexers/LexDart.cxx (2) M scintilla/lexilla/lexers/LexDiff.cxx (2) M scintilla/lexilla/lexers/LexErlang.cxx (2) M scintilla/lexilla/lexers/LexForth.cxx (2) M scintilla/lexilla/lexers/LexFortran.cxx (4) M scintilla/lexilla/lexers/LexGDScript.cxx (7) M scintilla/lexilla/lexers/LexHTML.cxx (690) M scintilla/lexilla/lexers/LexHaskell.cxx (4) M scintilla/lexilla/lexers/LexJulia.cxx (7) M scintilla/lexilla/lexers/LexLaTeX.cxx (2) M scintilla/lexilla/lexers/LexLisp.cxx (2) M scintilla/lexilla/lexers/LexLua.cxx (419) M scintilla/lexilla/lexers/LexMake.cxx (2) M scintilla/lexilla/lexers/LexMarkdown.cxx (2) M scintilla/lexilla/lexers/LexMatlab.cxx (4) M scintilla/lexilla/lexers/LexNim.cxx (2) M scintilla/lexilla/lexers/LexNsis.cxx (2) M scintilla/lexilla/lexers/LexNull.cxx (2) M scintilla/lexilla/lexers/LexPO.cxx (2) M scintilla/lexilla/lexers/LexPascal.cxx (2) M scintilla/lexilla/lexers/LexPerl.cxx (90) M scintilla/lexilla/lexers/LexPowerShell.cxx (2) M scintilla/lexilla/lexers/LexProps.cxx (50) M scintilla/lexilla/lexers/LexPython.cxx (197) M scintilla/lexilla/lexers/LexR.cxx (5) M scintilla/lexilla/lexers/LexRaku.cxx (7) M scintilla/lexilla/lexers/LexRuby.cxx (29) M scintilla/lexilla/lexers/LexRust.cxx (152) M scintilla/lexilla/lexers/LexSQL.cxx (115) M scintilla/lexilla/lexers/LexSmalltalk.cxx (13) M scintilla/lexilla/lexers/LexTCL.cxx (2) M scintilla/lexilla/lexers/LexTxt2tags.cxx (2) M scintilla/lexilla/lexers/LexVHDL.cxx (2) M scintilla/lexilla/lexers/LexVerilog.cxx (4) M scintilla/lexilla/lexers/LexVisualProlog.cxx (2) M scintilla/lexilla/lexers/LexYAML.cxx (2) M scintilla/lexilla/lexers/LexZig.cxx (2) M scintilla/lexilla/lexlib/CatalogueModules.h (6) M scintilla/lexilla/lexlib/CharacterCategory.cxx (106) M scintilla/lexilla/lexlib/CharacterCategory.h (12) M scintilla/lexilla/lexlib/CharacterSet.cxx (14) M scintilla/lexilla/lexlib/CharacterSet.h (1) A scintilla/lexilla/lexlib/InList.cxx (37) A scintilla/lexilla/lexlib/InList.h (18) M scintilla/lexilla/lexlib/LexAccessor.cxx (13) M scintilla/lexilla/lexlib/LexAccessor.h (8) M scintilla/lexilla/lexlib/LexerSimple.cxx (14) M scintilla/lexilla/lexlib/LexerSimple.h (4) M scintilla/lexilla/lexlib/OptionSet.h (9) M scintilla/lexilla/lexlib/SparseState.h (3) M scintilla/lexilla/lexlib/StyleContext.cxx (6) M scintilla/lexilla/lexlib/StyleContext.h (9) M scintilla/lexilla/lexlib/SubStyles.h (23) M scintilla/lexilla/lexlib/WordList.cxx (10) M scintilla/lexilla/lexlib/WordList.h (4) M scintilla/lexilla/src/Lexilla.cxx (282) M scintilla/lexilla/version.txt (2) M scintilla/src/AutoComplete.cxx (83) M scintilla/src/AutoComplete.h (5) M scintilla/src/CallTip.cxx (39) M scintilla/src/CallTip.h (2) M scintilla/src/CellBuffer.cxx (551) M scintilla/src/CellBuffer.h (113) M scintilla/src/ChangeHistory.cxx (157) M scintilla/src/ChangeHistory.h (30) M scintilla/src/CharacterCategoryMap.cxx (106) M scintilla/src/CharacterCategoryMap.h (12) M scintilla/src/Decoration.cxx (1) M scintilla/src/Document.cxx (462) M scintilla/src/Document.h (55) M scintilla/src/EditModel.cxx (1) M scintilla/src/EditModel.h (3) M scintilla/src/EditView.cxx (69) M scintilla/src/Editor.cxx (851) M scintilla/src/Editor.h (15) M scintilla/src/Geometry.h (40) M scintilla/src/Indicator.cxx (1) M scintilla/src/Indicator.h (6) M scintilla/src/KeyMap.cxx (1) M scintilla/src/LineMarker.cxx (1) M scintilla/src/LineMarker.h (6) M scintilla/src/MarginView.cxx (2) M scintilla/src/Partitioning.h (2) M scintilla/src/PerLine.cxx (1) M scintilla/src/Platform.h (7) M scintilla/src/PositionCache.cxx (15) M scintilla/src/PositionCache.h (4) M scintilla/src/RESearch.cxx (237) M scintilla/src/RESearch.h (25) M scintilla/src/RunStyles.cxx (26) M scintilla/src/ScintillaBase.cxx (36) M scintilla/src/ScintillaBase.h (4) M scintilla/src/Selection.cxx (49) M scintilla/src/Selection.h (16) M scintilla/src/SparseVector.h (4) M scintilla/src/Style.cxx (9) M scintilla/src/Style.h (1) A scintilla/src/UndoHistory.cxx (635) A scintilla/src/UndoHistory.h (160) M scintilla/src/UniConversion.cxx (32) M scintilla/src/UniConversion.h (17) M scintilla/src/ViewStyle.cxx (135) M scintilla/src/ViewStyle.h (1) M scintilla/src/XPM.cxx (3) M scintilla/version.txt (2) M src/highlighting.c (4) M src/highlightingmappings.h (8)
-- Patch Links --
https://github.com/geany/geany/pull/4168.patch https://github.com/geany/geany/pull/4168.diff
@rdipardo commented on this pull request.
@@ -1079,7 +833,7 @@
const Sci::Line lineStart = lineInsert;
// s may not NULL-terminated, ensure *ptr == '\n' or *next == '\n' is valid. - const char * const end = s + insertLength - 1; + const char *const end = s + insertLength - 1;
Pesky bot.
If anyone has 12 GB of RAM to spare and at least 8 cores, you can run the analyzers locally like this:
~~~sh set -e
CODEQL="$(command -v codeql)" || CODEQL='../codeql-cli/codeql/codeql' [ -x "$CODEQL" ] ||\ { CODEQL_CLI="$(dirname "$0")/codeql-linux64.zip" &&\ curl -SJL 'https://github.com/github/codeql-cli-binaries/releases/download/v2.20.0/code...' -o "$CODEQL_CLI" &&\ unzip -q "$CODEQL_CLI" -d "$(dirname "$0")/codeql-cli"; }
[ -d "$(dirname "$0")/codeql" ] ||\ git clone 'https://github.com/github/codeql.git' "$(dirname "$0")/codeql"
[ -n "$1" ] && DATABASE="$1" || DATABASE="$(dirname "$0")/geany-codeql-db" [ -n "$2" ] && CODEQL_DIR="$2" || CODEQL_DIR="$(dirname "$0")/codeql" [ -n "$3" ] && BUILD_ROOT="$3" || BUILD_ROOT='_build'
[ -d "$DATABASE" ] ||\ { NOCONFIGURE=1 ./autogen.sh &&\ mkdir -p "$BUILD_ROOT" "$BUILD_ROOT"/share/geany &&\ pushd "$BUILD_ROOT" &&\ CFLAGS='-g -O0' \ ../configure --prefix="$(pwd)" \ --exec-prefix="$(pwd)" \ --with-geany-libdir="$(pwd)/src/.libs" \ --disable-html-docs \ --disable-pdf-docs \ --disable-api-docs \ --disable-gtkdoc-header \ --enable-binreloc=no &&\ # only full builds can be analyzed make clean && popd &&\ $CODEQL database create "$DATABASE" --language=c-cpp --source-root="$BUILD_ROOT" --command="make -j8" --overwrite; }
CONFIG="$CODEQL_DIR/cpp/ql/src/codeql-suites/cpp-security-and-quality.qls" $CODEQL database analyze "$DATABASE" --output="/tmp/$(basename "$DATABASE")" "$CONFIG" --format=csv --threads=0 --download
~~~
I just noticed
With a document that does not have the SC_DOCUMENTOPTION_TEXT_LARGE option set, allocating more than 2G (calling SCI_ALLOCATE or similar) will now fail with SC_STATUS_FAILURE.
in 5.4.1 release notes. I'm not sure how geany behaves for large files and whether we should set this flag or not.
@techee commented on this pull request.
@@ -1079,7 +833,7 @@
const Sci::Line lineStart = lineInsert;
// s may not NULL-terminated, ensure *ptr == '\n' or *next == '\n' is valid. - const char * const end = s + insertLength - 1; + const char *const end = s + insertLength - 1;
Not sure if this is something we have to worry about - the code is the same as in the previous Scintilla version apart from the whitespace change.
@nyamatongwe commented on this pull request.
@@ -1079,7 +833,7 @@
const Sci::Line lineStart = lineInsert;
// s may not NULL-terminated, ensure *ptr == '\n' or *next == '\n' is valid. - const char * const end = s + insertLength - 1; + const char *const end = s + insertLength - 1;
`CreateLoader` (the target of `this cast`) ***is*** a type-safety hole but that is just part of Scintilla's API being non-type-safe. So its OK for a linter to highlight that.
However, I can't see the link to `CellBuffer::BasicInsertString` where `end` is defined from the arguments. Maybe `s` is from some memory owned by the `Document` in the cast which is now questionable. If there isn't something more specific, with a trail of actions (like Clang analyze shows) or a stack trace, there isn't much that can be done.
I just noticed
With a document that does not have the SC_DOCUMENTOPTION_TEXT_LARGE option set, allocating more than 2G (calling SCI_ALLOCATE or similar) will now fail with SC_STATUS_FAILURE.
in 5.4.1 release notes. I'm not sure how geany behaves for large files and whether we should set this flag or not.
It won't be as easy as setting a flag; for eample, you would need `SCI_GETTEXTRANGEFULL` here:
https://github.com/geany/geany/blob/7a017c764038bcdfcb99db7365c3196fd8aebdbf...
And then every plugin has to start using the [64-bit character range APIs][0] to safely handle >2GiB files on Windows, because on that platform the legacy `Sci_CharacterRange` struct can only hold 32-bit positions (`sizeof(long) == 4`).
When Notepad++ decided to support huge files the ABI breakage was a [total clusterf**k][1].
[0]: https://groups.google.com/g/scintilla-interest/c/mPLwYdC0-FE [1]: https://github.com/notepad-plus-plus/notepad-plus-plus/issues/11198
@techee pushed 1 commit.
631c5d7752cd3ee5beafb0d7f931ac273ca11d32 Update HACKING with Lexilla update in addition to Scintilla
LGTM. I'm testing this now on daily usage but for me it's fine to merge as sooner as we get into master, the more testing we will get.
for me it's fine to merge as sooner as we get into master, the more testing we will get.
Alright, so I'll give it the usual "one week for possible objections" and will merge it afterwards if nothing appears.
Merged #4168 into master.
github-comments@lists.geany.org