Юникод в LuaFAR

Здесь обсуждается всё, что касается макросов.
Shmuel
Posts: 5202
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 16 times
Been thanked: 148 times

Почему не работает макрос c os.execute

Post by Shmuel » Wed 28 Jan, 2015 18:22

Latest post of the previous page:

Добавлена функция win.system.

fml2
Posts: 490
Joined: Mon 09 Jul, 2012 22:10
Has thanked: 1 time
Been thanked: 5 times

Почему не работает макрос c os.execute

Post by fml2 » Wed 28 Jan, 2015 22:47

А это действительно функция из WinAPI (как сказано в документации по luafar) или из CRT? По написанию (с маленькой буквы) скорее похоже на CRT.

Shmuel
Posts: 5202
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 16 times
Been thanked: 148 times

Почему не работает макрос c os.execute

Post by Shmuel » Wed 28 Jan, 2015 23:26

fml2 wrote: скорее похоже на CRT.
Поправил.

User avatar
John Doe
Бюрократ
Posts: 11246
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 14 times
Been thanked: 81 times

Юникод в LuaFAR

Post by John Doe » Wed 30 Aug, 2017 11:39

Существует ли сейчас простой способ отключить юникодные функции, т.е. что бы a:len() стало эквивалентно string.len(a)?

edit:

Code: Select all

    for k,v in pairs(unicode.utf8) do
      unicode.utf8[k] = string [k]
    end
Вот так в лоб работает, но может быть я что-то упускаю?
Last edited by John Doe on Wed 30 Aug, 2017 11:50, edited 1 time in total.

Shmuel
Posts: 5202
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 16 times
Been thanked: 148 times

Юникод в LuaFAR

Post by Shmuel » Wed 30 Aug, 2017 11:54

debug.setmetatable("", {__index=string})

User avatar
John Doe
Бюрократ
Posts: 11246
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 14 times
Been thanked: 81 times

Юникод в LuaFAR

Post by John Doe » Wed 30 Aug, 2017 14:10

Размышления вслух:
Это может понадобиться при использовании сторонних библиотек, не рассчитывающих на Selene Unicode.
Но в данный момент нейтрализовать так "подмену" не получится, поскольку luamacro сам в некоторых случаях рассчитывает на utf8-функции.
Разве что если в коде плагина адресовать их не через ":", а напрямую (через unicode.utf8).

Shmuel
Posts: 5202
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 16 times
Been thanked: 148 times

Юникод в LuaFAR

Post by Shmuel » Wed 30 Aug, 2017 14:56

Трудно усидеть на двух стульях :)
Даже если в плагине сделать то, что вы говорите, а как же макросы? Практически любой из них, использующий строковые функции, рассчитывает именно на обработку строк в UTF-8.

User avatar
John Doe
Бюрократ
Posts: 11246
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 14 times
Been thanked: 81 times

Юникод в LuaFAR

Post by John Doe » Wed 30 Aug, 2017 16:15

Shmuel wrote:
Wed 30 Aug, 2017 14:56
а как же макросы?
Я думал о том, чтобы кратковременно менять метатаблицу, на время выполнения какой-либо функции сторонней библиотеки.

Shmuel
Posts: 5202
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 16 times
Been thanked: 148 times

Юникод в LuaFAR

Post by Shmuel » Wed 30 Aug, 2017 16:26

Я в общем-то догадывался.
Вообще-то это должно быть безопасно и сейчас (сторонняя библиотека изнутри своей функции не обращается к LuaMacro), но необходимо принять меры, чтобы даже в случае ошибки, "брошенной" из библиотечной функции, восстанавливать исходную метатаблицу.
Но в целом мне такие игры кажутся опасными.

User avatar
John Doe
Бюрократ
Posts: 11246
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 14 times
Been thanked: 81 times

Юникод в LuaFAR

Post by John Doe » Wed 30 Aug, 2017 21:13

Shmuel wrote:
Wed 30 Aug, 2017 16:26
Но в целом мне такие игры кажутся опасными.
Безусловно..
Shmuel wrote:
Wed 30 Aug, 2017 16:26
но необходимо принять меры
Буду иметь ввиду, спасибо.

Кстати аналогичную проблему представляет и переопределённая функция print...

Post Reply

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