git: 6e414cd4409c - main - editors/imhex: Update to 1.19.3

From: MANTANI Nobutaka <nobutaka_at_FreeBSD.org>
Date: Wed, 27 Jul 2022 16:28:08 UTC
The branch main has been updated by nobutaka:

URL: https://cgit.FreeBSD.org/ports/commit/?id=6e414cd4409cbde9532bc1cebcef8d3d1d372508

commit 6e414cd4409cbde9532bc1cebcef8d3d1d372508
Author:     MANTANI Nobutaka <nobutaka@FreeBSD.org>
AuthorDate: 2022-07-27 16:26:09 +0000
Commit:     MANTANI Nobutaka <nobutaka@FreeBSD.org>
CommitDate: 2022-07-27 16:27:41 +0000

    editors/imhex: Update to 1.19.3
---
 editors/imhex/Makefile                             |   4 +-
 editors/imhex/distinfo                             |  10 +-
 editors/imhex/files/patch-CMakeLists.txt           |   4 +-
 .../imhex/files/patch-cmake_build__helpers.cmake   |   8 +-
 ...rnal_pattern__language_lib_include_pl_token.hpp | 235 +++++++++++++++++++++
 ...ltin_source_content_views_view__hex__editor.cpp |   6 +-
 6 files changed, 251 insertions(+), 16 deletions(-)

diff --git a/editors/imhex/Makefile b/editors/imhex/Makefile
index d823d727e532..204dfc6a66c1 100644
--- a/editors/imhex/Makefile
+++ b/editors/imhex/Makefile
@@ -1,5 +1,5 @@
 PORTNAME=	imhex
-PORTVERSION=	1.19.2
+PORTVERSION=	1.19.3
 DISTVERSIONPREFIX=	v
 CATEGORIES=	editors
 MASTER_SITES=	https://git.sr.ht/~danyspin97/xdgpp/blob/f01f810714443d0f10c333d4d1d9c0383be41375/:xdg
@@ -53,7 +53,7 @@ GH_TAG_FMT=	c4ee726
 GH_TAG_IMHEX_PATTERNS=	f40943c
 GH_TAG_LIBROMFS=	58757f6
 GH_TAG_NATIVEFILEDIALOG=	3311592
-GH_TAG_PATTERN_LANGUAGE=	5524ad4
+GH_TAG_PATTERN_LANGUAGE=	1b0de5e
 GH_TAG_YARA=	d5a7565
 
 CMAKE_ARGS=	-DUSE_SYSTEM_CURL=ON -DUSE_SYSTEM_NLOHMANN_JSON=ON
diff --git a/editors/imhex/distinfo b/editors/imhex/distinfo
index 8ccbf86c30d2..e0f6a947a91c 100644
--- a/editors/imhex/distinfo
+++ b/editors/imhex/distinfo
@@ -1,8 +1,8 @@
-TIMESTAMP = 1658074717
+TIMESTAMP = 1658850000
 SHA256 (imhex/xdg.hpp) = 2e08ce74adb71ff9b9aa9e1c999733fccd4b00967b9cf0c0e51dbf049392a9ec
 SIZE (imhex/xdg.hpp) = 7674
-SHA256 (imhex/WerWolv-ImHex-v1.19.2_GH0.tar.gz) = 4f5e87264fc4a33c00812e0fffbb13ef5bc7d5be80db11278cdbed06f27f3b1f
-SIZE (imhex/WerWolv-ImHex-v1.19.2_GH0.tar.gz) = 10622186
+SHA256 (imhex/WerWolv-ImHex-v1.19.3_GH0.tar.gz) = fe196a2075b2849a61b4dd566fa5d3a3089a65c107a9f356267c46e94983ba36
+SIZE (imhex/WerWolv-ImHex-v1.19.3_GH0.tar.gz) = 10622398
 SHA256 (imhex/btzy-nativefiledialog-extended-3311592_GH0.tar.gz) = 8485f3ef81f0882f357482178f29360e29a2957507b35dec7057dcf33e6f628b
 SIZE (imhex/btzy-nativefiledialog-extended-3311592_GH0.tar.gz) = 411759
 SHA256 (imhex/capstone-engine-capstone-d5141c0_GH0.tar.gz) = 435d40757928fa73dec19c6d0fbf171bd76341391c8525ce1286927dab44c3e7
@@ -13,7 +13,7 @@ SHA256 (imhex/VirusTotal-yara-d5a7565_GH0.tar.gz) = 1c908b160f2432a25aefc1e94147
 SIZE (imhex/VirusTotal-yara-d5a7565_GH0.tar.gz) = 1287317
 SHA256 (imhex/WerWolv-ImHex-Patterns-f40943c_GH0.tar.gz) = b0df6d4024f4440c4a1c592535fadae8624d8a303960eabbd31836d5d20d000c
 SIZE (imhex/WerWolv-ImHex-Patterns-f40943c_GH0.tar.gz) = 323448
-SHA256 (imhex/WerWolv-PatternLanguage-5524ad4_GH0.tar.gz) = 2377bcf3e03ac704b04f02002247d1cbb74fc7517f9603fe531bfd7ed286ac21
-SIZE (imhex/WerWolv-PatternLanguage-5524ad4_GH0.tar.gz) = 264643
+SHA256 (imhex/WerWolv-PatternLanguage-1b0de5e_GH0.tar.gz) = ece922828b7798529badc88e61caae1ab1a6e824c1347596d73498148a348a69
+SIZE (imhex/WerWolv-PatternLanguage-1b0de5e_GH0.tar.gz) = 265064
 SHA256 (imhex/WerWolv-libromfs-58757f6_GH0.tar.gz) = be53d72ac61c75cfb1b6f0cd8d961ab4a25b1cae95c43aae9a67feb0f185e3a1
 SIZE (imhex/WerWolv-libromfs-58757f6_GH0.tar.gz) = 3864
diff --git a/editors/imhex/files/patch-CMakeLists.txt b/editors/imhex/files/patch-CMakeLists.txt
index 84c6e2851835..ac388c1a6235 100644
--- a/editors/imhex/files/patch-CMakeLists.txt
+++ b/editors/imhex/files/patch-CMakeLists.txt
@@ -1,6 +1,6 @@
---- CMakeLists.txt.orig	2022-07-16 11:41:37 UTC
+--- CMakeLists.txt.orig	2022-07-26 14:13:07 UTC
 +++ CMakeLists.txt
-@@ -14,7 +14,6 @@ option(IMHEX_OFFLINE_BUILD "Enable offline build" OFF)
+@@ -15,7 +15,6 @@ option(IMHEX_PATTERNS_PULL_MASTER "Download latest fil
  
  # Make sure project is configured correctly
  setDefaultBuiltTypeIfUnset()
diff --git a/editors/imhex/files/patch-cmake_build__helpers.cmake b/editors/imhex/files/patch-cmake_build__helpers.cmake
index 61cc245f4922..8044a67043e1 100644
--- a/editors/imhex/files/patch-cmake_build__helpers.cmake
+++ b/editors/imhex/files/patch-cmake_build__helpers.cmake
@@ -1,9 +1,9 @@
---- cmake/build_helpers.cmake.orig	2022-07-16 11:41:37 UTC
+--- cmake/build_helpers.cmake.orig	2022-07-26 14:13:07 UTC
 +++ cmake/build_helpers.cmake
-@@ -291,17 +291,9 @@ endmacro()
+@@ -297,17 +297,9 @@ function(downloadImHexPatternsFiles dest)
+             set(PATTERNS_BRANCH ImHex-v${IMHEX_VERSION})
+         endif ()
  
- function(downloadImHexPatternsFiles dest)
-     if (NOT IMHEX_OFFLINE_BUILD)
 -        FetchContent_Declare(
 -            imhex_patterns
 -            GIT_REPOSITORY https://github.com/WerWolv/ImHex-Patterns.git
diff --git a/editors/imhex/files/patch-lib_external_pattern__language_lib_include_pl_token.hpp b/editors/imhex/files/patch-lib_external_pattern__language_lib_include_pl_token.hpp
new file mode 100644
index 000000000000..d8832acb9a55
--- /dev/null
+++ b/editors/imhex/files/patch-lib_external_pattern__language_lib_include_pl_token.hpp
@@ -0,0 +1,235 @@
+--- lib/external/pattern_language/lib/include/pl/token.hpp.orig	2022-07-26 16:45:45 UTC
++++ lib/external/pattern_language/lib/include/pl/token.hpp
+@@ -148,9 +148,9 @@ namespace pl {
+ 
+         using Literal    = std::variant<char, bool, u128, i128, double, std::string, Pattern *>;
+         using ValueTypes = std::variant<Keyword, Identifier, Operator, Literal, ValueType, Separator>;
++        // These changes are necessary for Clang
++        inline Token(Type type, auto value, u32 line, u32 column) : type(type), value(std::move(value)), line(line), column(column) {}
+ 
+-        constexpr Token(Type type, auto value, u32 line, u32 column) : type(type), value(std::move(value)), line(line), column(column) {}
+-
+         [[nodiscard]] constexpr static inline bool isInteger(const ValueType &type) {
+             return isUnsigned(type) || isSigned(type);
+         }
+@@ -306,128 +306,128 @@ namespace pl {
+ 
+     namespace tkn {
+ 
+-        constexpr inline Token createToken(const pl::Token::Type type, const pl::Token::ValueTypes &value) {
++        inline Token createToken(const pl::Token::Type type, const pl::Token::ValueTypes &value) {
+             return { type, value, 0, 0 };
+         }
+ 
+         namespace Keyword {
+ 
+-            constexpr auto If           = createToken(pl::Token::Type::Keyword, Token::Keyword::If);
+-            constexpr auto Else         = createToken(pl::Token::Type::Keyword, Token::Keyword::Else);
+-            constexpr auto While        = createToken(pl::Token::Type::Keyword, Token::Keyword::While);
+-            constexpr auto For          = createToken(pl::Token::Type::Keyword, Token::Keyword::For);
+-            constexpr auto Return       = createToken(pl::Token::Type::Keyword, Token::Keyword::Return);
+-            constexpr auto Break        = createToken(pl::Token::Type::Keyword, Token::Keyword::Break);
+-            constexpr auto Continue     = createToken(pl::Token::Type::Keyword, Token::Keyword::Continue);
+-            constexpr auto Struct       = createToken(pl::Token::Type::Keyword, Token::Keyword::Struct);
+-            constexpr auto Enum         = createToken(pl::Token::Type::Keyword, Token::Keyword::Enum);
+-            constexpr auto Union        = createToken(pl::Token::Type::Keyword, Token::Keyword::Union);
+-            constexpr auto Function     = createToken(pl::Token::Type::Keyword, Token::Keyword::Function);
+-            constexpr auto Bitfield     = createToken(pl::Token::Type::Keyword, Token::Keyword::Bitfield);
+-            constexpr auto LittleEndian = createToken(pl::Token::Type::Keyword, Token::Keyword::LittleEndian);
+-            constexpr auto BigEndian    = createToken(pl::Token::Type::Keyword, Token::Keyword::BigEndian);
+-            constexpr auto Parent       = createToken(pl::Token::Type::Keyword, Token::Keyword::Parent);
+-            constexpr auto Namespace    = createToken(pl::Token::Type::Keyword, Token::Keyword::Namespace);
+-            constexpr auto Using        = createToken(pl::Token::Type::Keyword, Token::Keyword::Using);
+-            constexpr auto This         = createToken(pl::Token::Type::Keyword, Token::Keyword::This);
+-            constexpr auto In           = createToken(pl::Token::Type::Keyword, Token::Keyword::In);
+-            constexpr auto Out          = createToken(pl::Token::Type::Keyword, Token::Keyword::Out);
++            inline auto If           = createToken(pl::Token::Type::Keyword, Token::Keyword::If);
++            inline auto Else         = createToken(pl::Token::Type::Keyword, Token::Keyword::Else);
++            inline auto While        = createToken(pl::Token::Type::Keyword, Token::Keyword::While);
++            inline auto For          = createToken(pl::Token::Type::Keyword, Token::Keyword::For);
++            inline auto Return       = createToken(pl::Token::Type::Keyword, Token::Keyword::Return);
++            inline auto Break        = createToken(pl::Token::Type::Keyword, Token::Keyword::Break);
++            inline auto Continue     = createToken(pl::Token::Type::Keyword, Token::Keyword::Continue);
++            inline auto Struct       = createToken(pl::Token::Type::Keyword, Token::Keyword::Struct);
++            inline auto Enum         = createToken(pl::Token::Type::Keyword, Token::Keyword::Enum);
++            inline auto Union        = createToken(pl::Token::Type::Keyword, Token::Keyword::Union);
++            inline auto Function     = createToken(pl::Token::Type::Keyword, Token::Keyword::Function);
++            inline auto Bitfield     = createToken(pl::Token::Type::Keyword, Token::Keyword::Bitfield);
++            inline auto LittleEndian = createToken(pl::Token::Type::Keyword, Token::Keyword::LittleEndian);
++            inline auto BigEndian    = createToken(pl::Token::Type::Keyword, Token::Keyword::BigEndian);
++            inline auto Parent       = createToken(pl::Token::Type::Keyword, Token::Keyword::Parent);
++            inline auto Namespace    = createToken(pl::Token::Type::Keyword, Token::Keyword::Namespace);
++            inline auto Using        = createToken(pl::Token::Type::Keyword, Token::Keyword::Using);
++            inline auto This         = createToken(pl::Token::Type::Keyword, Token::Keyword::This);
++            inline auto In           = createToken(pl::Token::Type::Keyword, Token::Keyword::In);
++            inline auto Out          = createToken(pl::Token::Type::Keyword, Token::Keyword::Out);
+ 
+         }
+ 
+         namespace Literal {
+ 
+-            constexpr auto Identifier   = [](const std::string &name = { }) -> Token     { return createToken(pl::Token::Type::Identifier, Token::Identifier(name)); };
+-            constexpr auto Numeric      = [](const Token::Literal &value = { }) -> Token { return createToken(pl::Token::Type::Integer, value); };
+-            constexpr auto String       = [](const std::string &value = { }) -> Token    { return createToken(pl::Token::Type::String, Token::Literal(value)); };
++            inline auto Identifier   = [](const std::string &name = { }) -> Token     { return createToken(pl::Token::Type::Identifier, Token::Identifier(name)); };
++            inline auto Numeric      = [](const Token::Literal &value = { }) -> Token { return createToken(pl::Token::Type::Integer, value); };
++            inline auto String       = [](const std::string &value = { }) -> Token    { return createToken(pl::Token::Type::String, Token::Literal(value)); };
+ 
+         }
+ 
+         namespace Operator {
+ 
+-            constexpr auto Plus                     = createToken(pl::Token::Type::Operator, Token::Operator::Plus);
+-            constexpr auto Minus                    = createToken(pl::Token::Type::Operator, Token::Operator::Minus);
+-            constexpr auto Star                     = createToken(pl::Token::Type::Operator, Token::Operator::Star);
+-            constexpr auto Slash                    = createToken(pl::Token::Type::Operator, Token::Operator::Slash);
+-            constexpr auto Percent                  = createToken(pl::Token::Type::Operator, Token::Operator::Percent);
+-            constexpr auto LeftShift                = createToken(pl::Token::Type::Operator, Token::Operator::LeftShift);
+-            constexpr auto RightShift               = createToken(pl::Token::Type::Operator, Token::Operator::RightShift);
+-            constexpr auto BitAnd                   = createToken(pl::Token::Type::Operator, Token::Operator::BitAnd);
+-            constexpr auto BitOr                    = createToken(pl::Token::Type::Operator, Token::Operator::BitOr);
+-            constexpr auto BitXor                   = createToken(pl::Token::Type::Operator, Token::Operator::BitXor);
+-            constexpr auto BitNot                   = createToken(pl::Token::Type::Operator, Token::Operator::BitNot);
+-            constexpr auto BoolEqual                = createToken(pl::Token::Type::Operator, Token::Operator::BoolEqual);
+-            constexpr auto BoolNotEqual             = createToken(pl::Token::Type::Operator, Token::Operator::BoolNotEqual);
+-            constexpr auto BoolLessThan             = createToken(pl::Token::Type::Operator, Token::Operator::BoolLessThan);
+-            constexpr auto BoolGreaterThan          = createToken(pl::Token::Type::Operator, Token::Operator::BoolGreaterThan);
+-            constexpr auto BoolLessThanOrEqual      = createToken(pl::Token::Type::Operator, Token::Operator::BoolLessThanOrEqual);
+-            constexpr auto BoolGreaterThanOrEqual   = createToken(pl::Token::Type::Operator, Token::Operator::BoolGreaterThanOrEqual);
+-            constexpr auto BoolAnd                  = createToken(pl::Token::Type::Operator, Token::Operator::BoolAnd);
+-            constexpr auto BoolOr                   = createToken(pl::Token::Type::Operator, Token::Operator::BoolOr);
+-            constexpr auto BoolNot                  = createToken(pl::Token::Type::Operator, Token::Operator::BoolNot);
+-            constexpr auto BoolXor                  = createToken(pl::Token::Type::Operator, Token::Operator::BoolXor);
+-            constexpr auto Dollar                   = createToken(pl::Token::Type::Operator, Token::Operator::Dollar);
+-            constexpr auto Colon                    = createToken(pl::Token::Type::Operator, Token::Operator::Colon);
+-            constexpr auto ScopeResolution          = createToken(pl::Token::Type::Operator, Token::Operator::ScopeResolution);
+-            constexpr auto TernaryConditional       = createToken(pl::Token::Type::Operator, Token::Operator::TernaryConditional);
+-            constexpr auto AddressOf                = createToken(pl::Token::Type::Operator, Token::Operator::AddressOf);
+-            constexpr auto SizeOf                   = createToken(pl::Token::Type::Operator, Token::Operator::SizeOf);
+-            constexpr auto At                       = createToken(pl::Token::Type::Operator, Token::Operator::At);
+-            constexpr auto Assign                   = createToken(pl::Token::Type::Operator, Token::Operator::Assign);
++            inline auto Plus                     = createToken(pl::Token::Type::Operator, Token::Operator::Plus);
++            inline auto Minus                    = createToken(pl::Token::Type::Operator, Token::Operator::Minus);
++            inline auto Star                     = createToken(pl::Token::Type::Operator, Token::Operator::Star);
++            inline auto Slash                    = createToken(pl::Token::Type::Operator, Token::Operator::Slash);
++            inline auto Percent                  = createToken(pl::Token::Type::Operator, Token::Operator::Percent);
++            inline auto LeftShift                = createToken(pl::Token::Type::Operator, Token::Operator::LeftShift);
++            inline auto RightShift               = createToken(pl::Token::Type::Operator, Token::Operator::RightShift);
++            inline auto BitAnd                   = createToken(pl::Token::Type::Operator, Token::Operator::BitAnd);
++            inline auto BitOr                    = createToken(pl::Token::Type::Operator, Token::Operator::BitOr);
++            inline auto BitXor                   = createToken(pl::Token::Type::Operator, Token::Operator::BitXor);
++            inline auto BitNot                   = createToken(pl::Token::Type::Operator, Token::Operator::BitNot);
++            inline auto BoolEqual                = createToken(pl::Token::Type::Operator, Token::Operator::BoolEqual);
++            inline auto BoolNotEqual             = createToken(pl::Token::Type::Operator, Token::Operator::BoolNotEqual);
++            inline auto BoolLessThan             = createToken(pl::Token::Type::Operator, Token::Operator::BoolLessThan);
++            inline auto BoolGreaterThan          = createToken(pl::Token::Type::Operator, Token::Operator::BoolGreaterThan);
++            inline auto BoolLessThanOrEqual      = createToken(pl::Token::Type::Operator, Token::Operator::BoolLessThanOrEqual);
++            inline auto BoolGreaterThanOrEqual   = createToken(pl::Token::Type::Operator, Token::Operator::BoolGreaterThanOrEqual);
++            inline auto BoolAnd                  = createToken(pl::Token::Type::Operator, Token::Operator::BoolAnd);
++            inline auto BoolOr                   = createToken(pl::Token::Type::Operator, Token::Operator::BoolOr);
++            inline auto BoolNot                  = createToken(pl::Token::Type::Operator, Token::Operator::BoolNot);
++            inline auto BoolXor                  = createToken(pl::Token::Type::Operator, Token::Operator::BoolXor);
++            inline auto Dollar                   = createToken(pl::Token::Type::Operator, Token::Operator::Dollar);
++            inline auto Colon                    = createToken(pl::Token::Type::Operator, Token::Operator::Colon);
++            inline auto ScopeResolution          = createToken(pl::Token::Type::Operator, Token::Operator::ScopeResolution);
++            inline auto TernaryConditional       = createToken(pl::Token::Type::Operator, Token::Operator::TernaryConditional);
++            inline auto AddressOf                = createToken(pl::Token::Type::Operator, Token::Operator::AddressOf);
++            inline auto SizeOf                   = createToken(pl::Token::Type::Operator, Token::Operator::SizeOf);
++            inline auto At                       = createToken(pl::Token::Type::Operator, Token::Operator::At);
++            inline auto Assign                   = createToken(pl::Token::Type::Operator, Token::Operator::Assign);
+ 
+         }
+ 
+         namespace ValueType {
+ 
+-            constexpr auto CustomType       = createToken(pl::Token::Type::ValueType, Token::ValueType::CustomType);
+-            constexpr auto Padding          = createToken(pl::Token::Type::ValueType, Token::ValueType::Padding);
+-            constexpr auto Unsigned         = createToken(pl::Token::Type::ValueType, Token::ValueType::Unsigned);
+-            constexpr auto Signed           = createToken(pl::Token::Type::ValueType, Token::ValueType::Signed);
+-            constexpr auto FloatingPoint    = createToken(pl::Token::Type::ValueType, Token::ValueType::FloatingPoint);
+-            constexpr auto Auto             = createToken(pl::Token::Type::ValueType, Token::ValueType::Auto);
+-            constexpr auto Any              = createToken(pl::Token::Type::ValueType, Token::ValueType::Any);
++            inline auto CustomType       = createToken(pl::Token::Type::ValueType, Token::ValueType::CustomType);
++            inline auto Padding          = createToken(pl::Token::Type::ValueType, Token::ValueType::Padding);
++            inline auto Unsigned         = createToken(pl::Token::Type::ValueType, Token::ValueType::Unsigned);
++            inline auto Signed           = createToken(pl::Token::Type::ValueType, Token::ValueType::Signed);
++            inline auto FloatingPoint    = createToken(pl::Token::Type::ValueType, Token::ValueType::FloatingPoint);
++            inline auto Auto             = createToken(pl::Token::Type::ValueType, Token::ValueType::Auto);
++            inline auto Any              = createToken(pl::Token::Type::ValueType, Token::ValueType::Any);
+ 
+-            constexpr auto Unsigned8Bit     = createToken(pl::Token::Type::ValueType, Token::ValueType::Unsigned8Bit);
+-            constexpr auto Unsigned16Bit    = createToken(pl::Token::Type::ValueType, Token::ValueType::Unsigned16Bit);
+-            constexpr auto Unsigned24Bit    = createToken(pl::Token::Type::ValueType, Token::ValueType::Unsigned24Bit);
+-            constexpr auto Unsigned32Bit    = createToken(pl::Token::Type::ValueType, Token::ValueType::Unsigned32Bit);
+-            constexpr auto Unsigned48Bit    = createToken(pl::Token::Type::ValueType, Token::ValueType::Unsigned48Bit);
+-            constexpr auto Unsigned64Bit    = createToken(pl::Token::Type::ValueType, Token::ValueType::Unsigned64Bit);
+-            constexpr auto Unsigned96Bit    = createToken(pl::Token::Type::ValueType, Token::ValueType::Unsigned96Bit);
+-            constexpr auto Unsigned128Bit   = createToken(pl::Token::Type::ValueType, Token::ValueType::Unsigned128Bit);
++            inline auto Unsigned8Bit     = createToken(pl::Token::Type::ValueType, Token::ValueType::Unsigned8Bit);
++            inline auto Unsigned16Bit    = createToken(pl::Token::Type::ValueType, Token::ValueType::Unsigned16Bit);
++            inline auto Unsigned24Bit    = createToken(pl::Token::Type::ValueType, Token::ValueType::Unsigned24Bit);
++            inline auto Unsigned32Bit    = createToken(pl::Token::Type::ValueType, Token::ValueType::Unsigned32Bit);
++            inline auto Unsigned48Bit    = createToken(pl::Token::Type::ValueType, Token::ValueType::Unsigned48Bit);
++            inline auto Unsigned64Bit    = createToken(pl::Token::Type::ValueType, Token::ValueType::Unsigned64Bit);
++            inline auto Unsigned96Bit    = createToken(pl::Token::Type::ValueType, Token::ValueType::Unsigned96Bit);
++            inline auto Unsigned128Bit   = createToken(pl::Token::Type::ValueType, Token::ValueType::Unsigned128Bit);
+ 
+-            constexpr auto Signed8Bit       = createToken(pl::Token::Type::ValueType, Token::ValueType::Signed8Bit);
+-            constexpr auto Signed16Bit      = createToken(pl::Token::Type::ValueType, Token::ValueType::Signed16Bit);
+-            constexpr auto Signed24Bit      = createToken(pl::Token::Type::ValueType, Token::ValueType::Signed24Bit);
+-            constexpr auto Signed32Bit      = createToken(pl::Token::Type::ValueType, Token::ValueType::Signed32Bit);
+-            constexpr auto Signed48Bit      = createToken(pl::Token::Type::ValueType, Token::ValueType::Signed48Bit);
+-            constexpr auto Signed64Bit      = createToken(pl::Token::Type::ValueType, Token::ValueType::Signed64Bit);
+-            constexpr auto Signed96Bit      = createToken(pl::Token::Type::ValueType, Token::ValueType::Signed96Bit);
+-            constexpr auto Signed128Bit     = createToken(pl::Token::Type::ValueType, Token::ValueType::Signed128Bit);
++            inline auto Signed8Bit       = createToken(pl::Token::Type::ValueType, Token::ValueType::Signed8Bit);
++            inline auto Signed16Bit      = createToken(pl::Token::Type::ValueType, Token::ValueType::Signed16Bit);
++            inline auto Signed24Bit      = createToken(pl::Token::Type::ValueType, Token::ValueType::Signed24Bit);
++            inline auto Signed32Bit      = createToken(pl::Token::Type::ValueType, Token::ValueType::Signed32Bit);
++            inline auto Signed48Bit      = createToken(pl::Token::Type::ValueType, Token::ValueType::Signed48Bit);
++            inline auto Signed64Bit      = createToken(pl::Token::Type::ValueType, Token::ValueType::Signed64Bit);
++            inline auto Signed96Bit      = createToken(pl::Token::Type::ValueType, Token::ValueType::Signed96Bit);
++            inline auto Signed128Bit     = createToken(pl::Token::Type::ValueType, Token::ValueType::Signed128Bit);
+ 
+-            constexpr auto Float            = createToken(pl::Token::Type::ValueType, Token::ValueType::Float);
+-            constexpr auto Double           = createToken(pl::Token::Type::ValueType, Token::ValueType::Double);
++            inline auto Float            = createToken(pl::Token::Type::ValueType, Token::ValueType::Float);
++            inline auto Double           = createToken(pl::Token::Type::ValueType, Token::ValueType::Double);
+ 
+-            constexpr auto Boolean          = createToken(pl::Token::Type::ValueType, Token::ValueType::Boolean);
++            inline auto Boolean          = createToken(pl::Token::Type::ValueType, Token::ValueType::Boolean);
+ 
+-            constexpr auto Character        = createToken(pl::Token::Type::ValueType, Token::ValueType::Character);
+-            constexpr auto Character16      = createToken(pl::Token::Type::ValueType, Token::ValueType::Character16);
+-            constexpr auto String           = createToken(pl::Token::Type::ValueType, Token::ValueType::String);
++            inline auto Character        = createToken(pl::Token::Type::ValueType, Token::ValueType::Character);
++            inline auto Character16      = createToken(pl::Token::Type::ValueType, Token::ValueType::Character16);
++            inline auto String           = createToken(pl::Token::Type::ValueType, Token::ValueType::String);
+ 
+         }
+ 
+         namespace Separator {
+ 
+-            constexpr auto Comma            = createToken(pl::Token::Type::Separator, Token::Separator::Comma);
+-            constexpr auto LeftParenthesis  = createToken(pl::Token::Type::Separator, Token::Separator::LeftParenthesis);
+-            constexpr auto RightParenthesis = createToken(pl::Token::Type::Separator, Token::Separator::RightParenthesis);
+-            constexpr auto LeftBracket      = createToken(pl::Token::Type::Separator, Token::Separator::LeftBracket);
+-            constexpr auto RightBracket     = createToken(pl::Token::Type::Separator, Token::Separator::RightBracket);
+-            constexpr auto LeftBrace        = createToken(pl::Token::Type::Separator, Token::Separator::LeftBrace);
+-            constexpr auto RightBrace       = createToken(pl::Token::Type::Separator, Token::Separator::RightBrace);
+-            constexpr auto Dot              = createToken(pl::Token::Type::Separator, Token::Separator::Dot);
+-            constexpr auto Semicolon        = createToken(pl::Token::Type::Separator, Token::Separator::Semicolon);
+-            constexpr auto EndOfProgram     = createToken(pl::Token::Type::Separator, Token::Separator::EndOfProgram);
++            inline auto Comma            = createToken(pl::Token::Type::Separator, Token::Separator::Comma);
++            inline auto LeftParenthesis  = createToken(pl::Token::Type::Separator, Token::Separator::LeftParenthesis);
++            inline auto RightParenthesis = createToken(pl::Token::Type::Separator, Token::Separator::RightParenthesis);
++            inline auto LeftBracket      = createToken(pl::Token::Type::Separator, Token::Separator::LeftBracket);
++            inline auto RightBracket     = createToken(pl::Token::Type::Separator, Token::Separator::RightBracket);
++            inline auto LeftBrace        = createToken(pl::Token::Type::Separator, Token::Separator::LeftBrace);
++            inline auto RightBrace       = createToken(pl::Token::Type::Separator, Token::Separator::RightBrace);
++            inline auto Dot              = createToken(pl::Token::Type::Separator, Token::Separator::Dot);
++            inline auto Semicolon        = createToken(pl::Token::Type::Separator, Token::Separator::Semicolon);
++            inline auto EndOfProgram     = createToken(pl::Token::Type::Separator, Token::Separator::EndOfProgram);
+ 
+         }
+ 
diff --git a/editors/imhex/files/patch-plugins_builtin_source_content_views_view__hex__editor.cpp b/editors/imhex/files/patch-plugins_builtin_source_content_views_view__hex__editor.cpp
index c928949217e6..57f838771c5e 100644
--- a/editors/imhex/files/patch-plugins_builtin_source_content_views_view__hex__editor.cpp
+++ b/editors/imhex/files/patch-plugins_builtin_source_content_views_view__hex__editor.cpp
@@ -1,7 +1,7 @@
---- plugins/builtin/source/content/views/view_hex_editor.cpp.orig	2022-07-16 11:41:37 UTC
+--- plugins/builtin/source/content/views/view_hex_editor.cpp.orig	2022-07-26 14:13:07 UTC
 +++ plugins/builtin/source/content/views/view_hex_editor.cpp
-@@ -203,7 +203,7 @@ namespace hex::plugin::builtin {
-                 reader.seek(this->m_searchPosition.value_or(editor->getSelection().getEndAddress()));
+@@ -208,7 +208,7 @@ namespace hex::plugin::builtin {
+                 reader.seek(this->m_searchPosition.value_or(editor->getSelection().getStartAddress()));
  
              constexpr static auto searchFunction = [](const auto &haystackBegin, const auto &haystackEnd, const auto &needleBegin, const auto &needleEnd) {
 -                return std::search(haystackBegin, haystackEnd, std::boyer_moore_horspool_searcher(needleBegin, needleEnd));