Обработка escape-символов в строках макросов

Здесь обсуждается всё, что касается макросов.
Post Reply
User avatar
Aidar
Posts: 541
Joined: Mon 09 Mar, 2009 22:43
Location: Kazan
Has thanked: 8 times
Been thanked: 7 times
Contact:

Обработка escape-символов в строках макросов

Post by Aidar »

Far30b3627.x86.20130831: при запуске FAR выдаются ошибки

Code: Select all

 D:\Programs\FarNew\Profile\Macros\scripts\TestEscapes.lua:1: invalid escape sequence near '"'
, если в макросах есть код следующего вида
  1. local s = "\."
Аналогично при запуске такого макроса через пункт "Lua-скрипт" из LuaFAR for Editor:

Code: Select all

[?]:[string "<expression"]:136: ►[J1]:[string "all text"]:1: invalid escape sequence
near '"'
stack traceback:
[C]: in function 'xpcall'
[?]:[string "<boot"]:171: in function 'RunMenuItem'
[?]:[string "<boot"]:244: in function <[string "<boot"]:216>
В Far30b3608.x86.20130813 такого нет.
Последняя версия без такого поведения - Far30b3619.x86.20130820.
В Far30b3620.x86.20130821 уже выдаётся ошибка.
Shmuel
Posts: 6836
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 530 times

Re: Обработка escape-символов в строках макросов

Post by Shmuel »

Code: Select all

local s = "\."
Это - невалидный код, как для "стандартного" Lua 5.1, так и для LuaJIT 2.0. Разница в том, что Lua 5.1 во время парсинга просто проигнорирует (удалит) символ "\", а LuaJIT - более строгий, он это вообще не пропускает. Короче, должно быть
local s = "\\."

Эта "неисправность" - вовсе не с последних билдов Фара, а ещё с ночной сборки от 18 мая сего года, когда LuaJIT 2.0 заменил "стандартный" Lua 5.1.
User avatar
Aidar
Posts: 541
Joined: Mon 09 Mar, 2009 22:43
Location: Kazan
Has thanked: 8 times
Been thanked: 7 times
Contact:

Re: Обработка escape-символов в строках макросов

Post by Aidar »

Shmuel wrote:

Code: Select all

local s = "\."
Это - невалидный код, как для "стандартного" Lua 5.1, так и для LuaJIT 2.0. Разница в том, что Lua 5.1 во время парсинга просто проигнорирует (удалит) символ "\", а LuaJIT - более строгий, он это вообще не пропускает. Короче, должно быть
local s = "\\."
Это я вставил слеш вместо '%'.
Shmuel wrote:Эта "неисправность" - вовсе не с последних билдов Фара, а ещё с ночной сборки от 18 мая сего года, когда LuaJIT 2.0 заменил "стандартный" Lua 5.1.
Проверил, в предыдущих версиях макросы тоже не загружались, но и ошибка не выдавалась.
Так что текущее поведение более корректное.
Post Reply

Return to “Обсуждение макросов”