LuaFAR — библиотека для создания плагинов на языке Lua

Здесь обсуждается всё, что касается макросов.
User avatar
John Doe
Бюрократ
Posts: 11075
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 11 times
Been thanked: 64 times

LuaFAR — библиотека для создания плагинов на языке Lua

Post by John Doe » Wed 29 Jul, 2009 21:41

Библиотека LuaFAR делает возможным написание плагинов на языке Lua, предоставляя им адаптированную версию FAR API.

Входит в состав FAR manager (начиная с 3.0 build 2851), и доступна для использования в макросах.

Справка по функциям библиотеки — luafar_manual.chm (в дистрибутиве, папка Encyclopedia).
Мануал весьма лаконичен, предполагает что вы ориентируетесь в FAR Plugins API (FarEncyclopedia.ru.chm, в дистрибутиве)

Дополнения к мануалу:

Полезное по теме: См. также:

Shmuel
Posts: 5041
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 11 times
Been thanked: 133 times

Re: LuaFAR — библиотека для создания плагинов на языке Lua

Post by Shmuel » Wed 08 May, 2013 16:54

Latest post of the previous page:

John Doe wrote:Если по делу высказываться не желаете, это ещё недостаточное основание для перехода на личности
Это не переход на личности. Это намёк, чтобы вы хоть на время оставили меня в покое.

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

Post by John Doe » Wed 08 May, 2013 17:00

Не знаю о чём вы.
Сервера этого форума достаточно далеко от вас.
В личной переписке я вам тоже не докучаю.
Last edited by Guest on Wed 08 May, 2013 17:18, edited 1 time in total.
Reason: Добавлено спец-оформление

User avatar
HaRT
Moderator
Posts: 7980
Joined: Tue 30 Aug, 2005 17:21
Location: Санкт-Петербург
Has thanked: 66 times
Been thanked: 97 times

Post by HaRT » Wed 08 May, 2013 17:15

Shmuel wrote:Это намёк, чтобы вы хоть на время оставили меня в покое.
Вы вольны сделать передышку в любое время.
Фар есть инструмент, а не нянька. © 2009 DrKnS

Shmuel
Posts: 5041
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 11 times
Been thanked: 133 times

Re:

Post by Shmuel » Wed 08 May, 2013 17:27

HaRT wrote:
Shmuel wrote:Это намёк, чтобы вы хоть на время оставили меня в покое.
Вы вольны сделать передышку в любое время.
Передышку от John Doe, или вы имели в виду что-то другое?

User avatar
WARP ItSelf
Самый умный
Posts: 1011
Joined: Tue 15 Mar, 2005 23:19
Contact:

Post by WARP ItSelf » Wed 08 May, 2013 17:27

2 Shmuel

А вот не надо так делать.

2 все

Прекратите бокс в прямом эфире.
Last edited by WARP ItSelf on Thu 01 Jan, 1970 01:00, edited 0 times in total.
Reason: Добавлено спец-оформление
Никто не знал, а я...

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

Re: LuaMacro — Lua как язык макросов

Post by John Doe » Mon 20 May, 2013 14:31

Дано: файл в кодировке 1251, содержащий far.Show"фыва"
При выполнении получаю ошибку: bad argument #1 to 'Show' (invalid multibyte string)
Та же проблема присутствует в других функциях, например в юникодном format.
В то же время некоторые функции проглатывают это без ошибок, например far.Message или string.format

Не знаю баг ли это.
Если нет, то посоветуйте как распознавать такие строки.

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

Re: LuaMacro — Lua как язык макросов

Post by John Doe » Mon 20 May, 2013 17:18

Проблема проявляется на Windows XP, но не проявляется на Windows 7

Shmuel
Posts: 5041
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 11 times
Been thanked: 133 times

Re: LuaMacro — Lua как язык макросов

Post by Shmuel » Mon 20 May, 2013 17:42

John Doe wrote:Дано: файл в кодировке 1251, содержащий far.Show"фыва"
При выполнении получаю ошибку: bad argument #1 to 'Show' (invalid multibyte string)
Та же проблема присутствует в других функциях, например в юникодном format.
В то же время некоторые функции проглатывают это без ошибок, например far.Message или string.format

Не знаю баг ли это.
Если нет, то посоветуйте как распознавать такие строки.
1. Это не баг. Может быть неконсистентное поведение - это обсуждаемо.

2. Вопрос, что делать со стрингами, которые подаются на вход функции, проверяющей их на предмет валидного UTF-8, и данная проверка не проходит. Можно прерывать скрипт с ошибкой, а можно "глотать". Действительно, far.Message "глотает", а far.Show прерывает скрипт с ошибкой.

3. Распознавать можно, например, с помощью pcall(win.Utf8ToUtf16, str).

4. Разница между XP и семёркой объясняется (скорее всего) разным поведением функции MultiByteToWideChar в этих системах.

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

Re: LuaMacro — Lua как язык макросов

Post by John Doe » Tue 21 May, 2013 14:38

Shmuel wrote:4. Разница между XP и семёркой объясняется (скорее всего) разным поведением функции MultiByteToWideChar в этих системах.
Похоже на то.
В lua_explorer вставил pcall

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

Re: LuaFAR — библиотека для создания плагинов на языке Lua

Post by John Doe » Fri 24 May, 2013 14:18

editor.GetString
При отсутствии выделения в результирующей таблице поля SelStart и SelEnd равны 0
Удобнее было бы в этом случае получать nil

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

Re: LuaFAR — библиотека для создания плагинов на языке Lua

Post by John Doe » Sun 26 May, 2013 19:48

Code: Select all

LuaFAR: в функции editor.GetString добавлено значение параметра mode==3
(не меняет текущую позицию в редакторе, возвращает: StringText,StringEOL).
Может быть стоит добавить третье возвращаемое значение: StringSel

Shmuel
Posts: 5041
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 11 times
Been thanked: 133 times

Re: LuaFAR — библиотека для создания плагинов на языке Lua

Post by Shmuel » Sun 26 May, 2013 20:48

John Doe wrote:Может быть стоит добавить третье возвращаемое значение: StringSel
Навряд ли это будет сделано.

Последнее добавление было вызвано тем, что бенчмарк показал, что "быстрый" режим 1 работает медленнее режима 0 (в своё время DrKnS пофиксил аномально медленное чтение строк в редакторе, из-за которого в Луафаре и создавались режимы 1 и 2). Поэтому логично было добавить режим 3, который оказался заметно быстрее режима 2.

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

Re: LuaFAR — библиотека для создания плагинов на языке Lua

Post by John Doe » Sun 26 May, 2013 21:00

Shmuel wrote:Навряд ли это будет сделано.
Соображения производительности?

Shmuel
Posts: 5041
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 11 times
Been thanked: 133 times

Re: LuaFAR — библиотека для создания плагинов на языке Lua

Post by Shmuel » Sun 26 May, 2013 21:10

John Doe wrote:
Shmuel wrote:Навряд ли это будет сделано.
Соображения производительности?
И это тоже. И усложнение API. И то, что режимы 0 и 1 позволяют написать любой Lua-враппер, который практически не замедлит работу. Хотя да, всё это субъективно.

Shmuel
Posts: 5041
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 11 times
Been thanked: 133 times

Re: LuaMacro — Lua как язык макросов

Post by Shmuel » Sun 09 Jun, 2013 11:17

John Doe wrote:Дано: файл в кодировке 1251, содержащий far.Show"фыва"
При выполнении получаю ошибку: bad argument #1 to 'Show' (invalid multibyte string)
[......]
Не знаю баг ли это.
Если нет, то посоветуйте как распознавать такие строки.
Для распознавания добавлена функция:
LuaMacro changelog wrote:1. LuaFAR: добавлена функция unicode.utf8.utf8valid. Описание - в мануале LuaFAR.

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

Re: LuaFAR — библиотека для создания плагинов на языке Lua

Post by John Doe » Fri 14 Jun, 2013 11:40

Code: Select all

shmuel 14.06.2013 00:22:19 +0200 - build 183

1. Поддержка MCTL_EXECSTRING.

2. LuaFAR: добавлена функция far.MacroExecute.
Какая от этого практическая польза, учитывая что стандартные loadstring и loadfile имеют больше возможностей?

Shmuel
Posts: 5041
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 11 times
Been thanked: 133 times

Re: LuaFAR — библиотека для создания плагинов на языке Lua

Post by Shmuel » Fri 14 Jun, 2013 12:10

John Doe wrote:

Code: Select all

shmuel 14.06.2013 00:22:19 +0200 - build 183

1. Поддержка MCTL_EXECSTRING.

2. LuaFAR: добавлена функция far.MacroExecute.
Какая от этого практическая польза, учитывая что стандартные loadstring и loadfile имеют больше возможностей?
Вопрос, видимо, по пункту 2 (учитывая тему сообщения).

far.MacroExecute позволяет LuaFAR-плагинам исполнять код в контексте плагина LuaMacro, но, в отличие от far.MacroPost:
-- исполнение этого кода не является отложенным
-- можно получить возвращённые скриптом величины

Использование far.MacroExecute из контекста плагина LuaMacro действительно выгоды не даёт (разве что для тестирования самой функции).

Post Reply

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

Who is online

Users browsing this forum: No registered users and 5 guests