From 5fb3b815f7c0bfdca107115f8c0e14dce1c8d972 Mon Sep 17 00:00:00 2001 From: dkwo Date: Wed, 5 Oct 2022 09:45:42 -0400 Subject: [PATCH] vis: backport upstream fix for bash lexer --- ...-bug-in-bash-lexer-for-last-here-doc.patch | 45 +++++++++++++++++++ srcpkgs/vis/template | 2 +- 2 files changed, 46 insertions(+), 1 deletion(-) create mode 100644 srcpkgs/vis/patches/0001-lexers-fix-bug-in-bash-lexer-for-last-here-doc.patch diff --git a/srcpkgs/vis/patches/0001-lexers-fix-bug-in-bash-lexer-for-last-here-doc.patch b/srcpkgs/vis/patches/0001-lexers-fix-bug-in-bash-lexer-for-last-here-doc.patch new file mode 100644 index 000000000000..826809840a48 --- /dev/null +++ b/srcpkgs/vis/patches/0001-lexers-fix-bug-in-bash-lexer-for-last-here-doc.patch @@ -0,0 +1,45 @@ +From e57851806592f5ea4ee48303b97a5f59731370c5 Mon Sep 17 00:00:00 2001 +From: Silas +Date: Tue, 8 Dec 2020 17:37:43 -0300 +Subject: [PATCH] lexers: fix bug in bash lexer for last here-doc + +f4f0f5b allowed "<<-EOF" heredocs to be parsed correctly, but it +introduced a bug that made the lexer fail when the beginning of a +here-doc was the last string in a file (optionally followed only +by blanks). + +In order to fix this, move everything regarding "delimiter" within +the block that is executed only if "delimiter" is not nil. +--- + lua/lexers/bash.lua | 16 ++++++++-------- + 1 file changed, 8 insertions(+), 8 deletions(-) + +diff --git a/lua/lexers/bash.lua b/lua/lexers/bash.lua +index 4dc4cf6..7927b4a 100644 +--- a/lua/lexers/bash.lua ++++ b/lua/lexers/bash.lua +@@ -20,15 +20,15 @@ local ex_str = l.delimited_range('`') + local heredoc = '<<' * P(function(input, index) + local s, e, minus, _, delimiter = + input:find('(-?)(["\']?)([%a_][%w_]*)%2[\n\r\f;]+', index) +- -- If the starting delimiter of a here-doc begins with "-", then +- -- spaces are allowed to come before the closing delimiter. +- local close_pattern +- if minus == '-' then +- close_pattern = '[\n\r\f%s]+'..delimiter..'\n' +- else +- close_pattern = '[\n\r\f]+'..delimiter..'\n' +- end + if s == index and delimiter then ++ -- If the starting delimiter of a here-doc begins with "-", then ++ -- spaces are allowed to come before the closing delimiter. ++ local close_pattern ++ if minus == '-' then ++ close_pattern = '[\n\r\f%s]+'..delimiter..'\n' ++ else ++ close_pattern = '[\n\r\f]+'..delimiter..'\n' ++ end + local _, e = input:find(close_pattern, e) + return e and e + 1 or #input + 1 + end + diff --git a/srcpkgs/vis/template b/srcpkgs/vis/template index e33ff9591487..02072dc6c515 100644 --- a/srcpkgs/vis/template +++ b/srcpkgs/vis/template @@ -1,7 +1,7 @@ # Template file for 'vis' pkgname=vis version=0.7 -revision=1 +revision=2 build_style=gnu-configure hostmakedepends="pkg-config" makedepends="acl-devel libtermkey-devel lua53-devel ncurses-devel"