LuaFAR for Editor

Здесь можно обсудить ваш любимый плагин.
Shmuel
Posts: 6126
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 31 times
Been thanked: 309 times

Re: LuaFAR for Editor

Post by Shmuel »

Latest post of the previous page:

maxdrfl wrote:Ты можешь сказать, что еще в плагине появится? Планируешь ли ты запоминание функций? Что-бы файлы несколько раз не перечитывать?
Ну, например, хочу дать возможность пользовательским утилитам на время их исполнения иметь свои экспортируемые функции (на текущий момент, если утилита захочет это сделать, она обязана перед окончанием работы восстановить исходное состояние, а вообще-то это должен делать сам плагин).

Ещё - возможно добавление утилит, в том числе и твоих (а может быть ещё кто-то подключится). :)

Запоминание функций сделать очень просто. Я сознательно откладываю это на потом, так как преждевременная оптимизация - это зло. А главное, при отладке придётся делать много лишних телодвижений. Тем не менее, это запланировано в таком виде: будет два режима ("нормальный" и "отладочный"), переключение между ними должно быть без перезапуска FAR.
maxdrfl wrote:Я тут проверил вот такой код:

Code: Select all

if not EditorID then EditorID=far.EditorGetInfo().EditorID end
if math.mod(EditorID,2)==0 then
    AddToMenu("",  "calc.lua", "calculator|Alt+a")
else
    AddToMenu("",  "calc.lua", "calculator|Alt+b")
end
получается забавно. Предыдущий хоткей запоминается и работает до выхова меню.
Ну ничего забавного нет, если разобраться. Почитай вот это: http://api.farmanager.com/ru/exported_f ... event.html
Кстати, вместо math.mod(EditorID,2) проще писать EditorID % 2

maxdrfl
Posts: 484
Joined: Mon 04 Apr, 2005 14:36
Location: Иркутск

Re: LuaFAR for Editor

Post by maxdrfl »

Тем не менее, это запланировано в таком виде: будет два режима ("нормальный" и "отладочный"), переключение между ними должно быть без перезапуска FAR.
то, что надо (:
Ну ничего забавного нет, если разобраться. Почитай вот это: http://api.farmanager.com/ru/exported_f ... event.html
ага, не хватает EDITORGOTFOCUS.
Кстати, вместо math.mod(EditorID,2) проще писать EditorID % 2
ага.

а AdvControl и EditorSetParameter будут?

Shmuel
Posts: 6126
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 31 times
Been thanked: 309 times

Re: LuaFAR for Editor

Post by Shmuel »

maxdrfl wrote:не хватает EDITORGOTFOCUS.
[...]
а AdvControl и EditorSetParameter будут?
EDITORGOTFOCUS нету, потому что используется только API Far 1.70 release, всё, что новее, я не трогаю до тех пор, пока LuaFAR API не охватит вышеуказанный API.

Насчёт AdvControl и проч. - должно добавляться, естественно, при наличии времени. Проект LuaFAR открыт для кооперации, так что если кто-либо захочет помочь, буду только благодарен.

Немного упростил dialog.lua (выкинул лишнее) - файл приложен.
Attachments
dialog.zip
(916 Bytes) Downloaded 151 times

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

Re: LuaFAR for Editor

Post by HaRT »

Shmuel
Только сейчас заметил, что LuaFar и LuaFar for Editor — это отдельные плагины. Правильно ли я понимаю, что второй — это фактически под-плагин для первого? Если нет, то как оно на самом деле?
Фар есть инструмент, а не нянька. © 2009 DrKnS

Shmuel
Posts: 6126
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 31 times
Been thanked: 309 times

Re: LuaFAR for Editor

Post by Shmuel »

HaRT wrote:Только сейчас заметил, что LuaFar и LuaFar for Editor — это отдельные плагины. Правильно ли я понимаю, что второй — это фактически под-плагин для первого? Если нет, то как оно на самом деле?
На самом деле так:

1. LuaFAR
Это не плагин вообще. Это - библиотека (luafar.dll), которой могут пользоваться плагины. Она имеет Си-интерфейс (для взаимодействия с плагинами) и Луа-интерфейс (для взаимодействия с Луа-скриптами). Одна luafar.dll может обслуживать произвольное количество плагинов.

Плагин (который на Си) обычно является простейшей оболочкой, которая переадресует фаровские вызовы экспортируемых ф-ций на luafar.dll, а она, в свою очередь, вызывает соответствующие функции из Луа-скриптов. Поскольку функциональность - в Луа-скриптах, то копии этого плагина-оболочки (он весит несколько KB) могут использоваться для разных плагинов.

2. LuaFAR for Editor
Это - плагин, набор утилит для редактора. Поначалу задумывался именно как набор утилит, затем стал ещё и мини-платформой для добавления новых утилит. То-есть, новую утилиту (написанную на Луа) можно добавить одной строчкой в файле _usermenu.lua, и сразу пользоваться, без перезагрузки Фара.

Для того, чтобы не морочить голову пользователю с установкой, всё встроено в одну DLL:
lua.dll + luafar.dll + "плагин оболочка" + утилиты на Луа.

maxdrfl
Posts: 484
Joined: Mon 04 Apr, 2005 14:36
Location: Иркутск

Re: LuaFAR for Editor

Post by maxdrfl »

А в каком случае появляется кнопка --- перейти на строку с ошибкой? Что-то я ошибки везде расставляю, но кроме OK ничего нет.

Shmuel
Posts: 6126
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 31 times
Been thanked: 309 times

Re: LuaFAR for Editor

Post by Shmuel »

maxdrfl wrote:А в каком случае появляется кнопка --- перейти на строку с ошибкой? Что-то я ошибки везде расставляю, но кроме OK ничего нет.
Дай, пожалуйста, пример.

maxdrfl
Posts: 484
Joined: Mon 04 Apr, 2005 14:36
Location: Иркутск

Re: LuaFAR for Editor

Post by maxdrfl »

Ни в одном из этих случаев не видел кнопки:
1) пишу 'dgdfh' в любой строке _usermenu.lua
2) пишу 'sdfj kjhf ljsdf' в пустом lua файле и пытаюсь выполнить как скрипт.
3) пишу 'sdf' в nav.lua, открываю другой файл и пытаюсь вызвать навигацию.

Shmuel
Posts: 6126
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 31 times
Been thanked: 309 times

Re: LuaFAR for Editor

Post by Shmuel »

1) _usermenu.lua - это особый случай, "системный" файл. Он должен быть простым, поэтому в нём можно обойтись без "интерактивной" отладки.

2) это можно будет поправить, подумаю

3) исправил, будет в след. версии

Если же ты хочешь уже сейчас увидеть, как выглядят эти новые кнопки и переходы на строку с ошибкой, вставь вызов error("foo") или assert(false, "bar").

maxdrfl
Posts: 484
Joined: Mon 04 Apr, 2005 14:36
Location: Иркутск

Re: LuaFAR for Editor

Post by maxdrfl »

Shmuel wrote:1) _usermenu.lua - это особый случай, "системный" файл. Он должен быть простым, поэтому в нём можно обойтись без "интерактивной" отладки.
Это понятно. Просто я уже всё перебрал.

maxdrfl
Posts: 484
Joined: Mon 04 Apr, 2005 14:36
Location: Иркутск

Re: LuaFAR for Editor

Post by maxdrfl »

В последнем релизе отвалился searchmenu. Встроенный я не использую, он выключен. Используется локальная копия. Ты там ничего не менял?

А jump --- это просто обалденно (: . Может можно ещё в меню добавить кнопку F4 --- редактировать файл, связанный с текущим пунктом меню.

Shmuel
Posts: 6126
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 31 times
Been thanked: 309 times

Re: LuaFAR for Editor

Post by Shmuel »

maxdrfl wrote:В последнем релизе отвалился searchmenu.
Открой searchmenu.lua в редакторе и замени все VK_ на пустую строку. После этого должно заработать. (Это описано в разделе "incompatibilities" мануала LuaFAR).

Кроме этого, сейчас доступны все клавиши, включая те что с пунктуацией.
maxdrfl wrote:Может можно ещё в меню добавить кнопку F4 --- редактировать файл, связанный с текущим пунктом меню.
Положил в "wish list" :)

maxdrfl
Posts: 484
Joined: Mon 04 Apr, 2005 14:36
Location: Иркутск

Re: LuaFAR for Editor

Post by maxdrfl »

Shmuel wrote:Открой searchmenu.lua в редакторе и замени все VK_ на пустую строку. После этого должно заработать. (Это описано в разделе "incompatibilities" мануала LuaFAR).
вот. В мане к lf4ed посмотрел incompatibilities, а в мане к lf, забыл (: .
Спасибо.

maxdrfl
Posts: 484
Joined: Mon 04 Apr, 2005 14:36
Location: Иркутск

Re: LuaFAR for Editor

Post by maxdrfl »

Что касается знаков препинания и т.д.. Я не могу найти как их использовать. В файле service.cpp к символам кажется ничего нового не добавлено.

Shmuel
Posts: 6126
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 31 times
Been thanked: 309 times

Re: LuaFAR for Editor

Post by Shmuel »

Извиняюсь, конечно я мог указать это в предыдущем посте. На самом деле - добавлено, то-есть массив VirtualKeyStrings приведен (почти) в полное соответствие вот с этим:
http://api.farmanager.com/ru/winapi/vir ... codes.html

Другое дело, что эти клавиши имеют неинтуитивные названия, типа OEM_1, OEM_PLUS и т.д., но я не решился их сразу переименовать. Предложения принимаются :wink:

maxdrfl
Posts: 484
Joined: Mon 04 Apr, 2005 14:36
Location: Иркутск

Re: LuaFAR for Editor

Post by maxdrfl »

точно, нашел. Спасибо.

позабавило: OEM_PA3 (:
надо добавить OEM_ДВА и т. д.
Shmuel wrote:Другое дело, что эти клавиши имеют неинтуитивные названия, типа OEM_1, OEM_PLUS и т.д., но я не решился их сразу переименовать. Предложения принимаются :wink:
С одной стороны с этим можно вообще не заморачиваться.
С другой, можно сделать таблицу, где интуитивно понятным названиям соответствуют интуитивно-непонятные. И в меню подставлять элементы таблицы, как это сделано с флагами.

Post Reply

Return to “Обсуждение плагинов”