Check if "open" pattern is escaped
Previously this check was only done for "close" patterns.
This commit is contained in:
parent
99d328cfd7
commit
5b6b48320f
|
@ -192,15 +192,21 @@ function tokenizer.tokenize(incoming_syntax, text, state)
|
|||
end
|
||||
res[1] = next
|
||||
end
|
||||
if res[1] and close and target[3] then
|
||||
if res[1] and target[3] then
|
||||
-- Check to see if the escaped character is there,
|
||||
-- and if it is not itself escaped.
|
||||
local count = 0
|
||||
for i = res[1] - 1, 1, -1 do
|
||||
if text:byte(i) ~= target[3]:byte() then break end
|
||||
count = count + 1
|
||||
end
|
||||
-- Check to see if the escaped character is there,
|
||||
-- and if it is not itself escaped.
|
||||
if count % 2 == 0 then break end
|
||||
if count % 2 == 0 then
|
||||
-- The match is not escaped, so confirm it
|
||||
break
|
||||
elseif not close then
|
||||
-- The *open* match is escaped, so avoid it
|
||||
return
|
||||
end
|
||||
end
|
||||
until not res[1] or not close or not target[3]
|
||||
return table.unpack(res)
|
||||
|
|
Loading…
Reference in New Issue