diff options
| author | Silas <silas_git@nocafe.net> | 2020-12-08 17:37:43 -0300 |
|---|---|---|
| committer | Silas <silas_git@nocafe.net> | 2020-12-08 17:37:43 -0300 |
| commit | e57851806592f5ea4ee48303b97a5f59731370c5 (patch) | |
| tree | a4a03e32f43057f1093ae6d72426a7a2353e71dd /lua/lexers | |
| parent | 247b799b7cd272f20b2c6f9b4e60bf8b57775985 (diff) | |
| download | vis-e57851806592f5ea4ee48303b97a5f59731370c5.tar.gz vis-e57851806592f5ea4ee48303b97a5f59731370c5.tar.xz | |
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.
Diffstat (limited to 'lua/lexers')
| -rw-r--r-- | lua/lexers/bash.lua | 16 |
1 files 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 |
