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

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

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

Post by John Doe »

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

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

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

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

Полезное по теме: См. также:
Shmuel
Posts: 6836
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 530 times

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

Post by Shmuel »

Latest post of the previous page:

John Doe wrote:Если по делу высказываться не желаете, это ещё недостаточное основание для перехода на личности
Это не переход на личности. Это намёк, чтобы вы хоть на время оставили меня в покое.
User avatar
John Doe
Бюрократ
Posts: 13855
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 428 times
Contact:

Post by John Doe »

Не знаю о чём вы.
Сервера этого форума достаточно далеко от вас.
В личной переписке я вам тоже не докучаю.
Last edited by Guest on Wed 08 May, 2013 17:18, edited 1 time in total.
Reason: Добавлено спец-оформление
User avatar
HaRT
Moderator
Posts: 10865
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 221 times
Been thanked: 358 times

Post by HaRT »

Shmuel wrote:Это намёк, чтобы вы хоть на время оставили меня в покое.
Вы вольны сделать передышку в любое время.
Фар есть инструмент, а не нянька. © 2009 DrKnS
Shmuel
Posts: 6836
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 530 times

Re:

Post by Shmuel »

HaRT wrote:
Shmuel wrote:Это намёк, чтобы вы хоть на время оставили меня в покое.
Вы вольны сделать передышку в любое время.
Передышку от John Doe, или вы имели в виду что-то другое?
User avatar
WARP ItSelf
Самый умный
Posts: 1011
Joined: Tue 15 Mar, 2005 23:19
Contact:

Post by WARP ItSelf »

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: 13855
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 428 times
Contact:

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

Post by John Doe »

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

Не знаю баг ли это.
Если нет, то посоветуйте как распознавать такие строки.
User avatar
John Doe
Бюрократ
Posts: 13855
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 428 times
Contact:

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

Post by John Doe »

Проблема проявляется на Windows XP, но не проявляется на Windows 7
Shmuel
Posts: 6836
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 530 times

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

Post by Shmuel »

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: 13855
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 428 times
Contact:

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

Post by John Doe »

Shmuel wrote:4. Разница между XP и семёркой объясняется (скорее всего) разным поведением функции MultiByteToWideChar в этих системах.
Похоже на то.
В lua_explorer вставил pcall
User avatar
John Doe
Бюрократ
Posts: 13855
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 428 times
Contact:

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

Post by John Doe »

editor.GetString
При отсутствии выделения в результирующей таблице поля SelStart и SelEnd равны 0
Удобнее было бы в этом случае получать nil
User avatar
John Doe
Бюрократ
Posts: 13855
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 428 times
Contact:

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

Post by John Doe »

Code: Select all

LuaFAR: в функции editor.GetString добавлено значение параметра mode==3
(не меняет текущую позицию в редакторе, возвращает: StringText,StringEOL).
Может быть стоит добавить третье возвращаемое значение: StringSel
Shmuel
Posts: 6836
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 530 times

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

Post by Shmuel »

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

Последнее добавление было вызвано тем, что бенчмарк показал, что "быстрый" режим 1 работает медленнее режима 0 (в своё время DrKnS пофиксил аномально медленное чтение строк в редакторе, из-за которого в Луафаре и создавались режимы 1 и 2). Поэтому логично было добавить режим 3, который оказался заметно быстрее режима 2.
User avatar
John Doe
Бюрократ
Posts: 13855
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 428 times
Contact:

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

Post by John Doe »

Shmuel wrote:Навряд ли это будет сделано.
Соображения производительности?
Shmuel
Posts: 6836
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 530 times

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

Post by Shmuel »

John Doe wrote:
Shmuel wrote:Навряд ли это будет сделано.
Соображения производительности?
И это тоже. И усложнение API. И то, что режимы 0 и 1 позволяют написать любой Lua-враппер, который практически не замедлит работу. Хотя да, всё это субъективно.
Shmuel
Posts: 6836
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 530 times

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

Post by Shmuel »

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: 13855
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 428 times
Contact:

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

Post by John Doe »

Code: Select all

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

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

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

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