Редактор БД плагинов

Здесь выкладываются готовые к использованию макросы и скрипты.
IgorZ
Posts: 704
Joined: Wed 13 Jul, 2011 03:32
Has thanked: 13 times
Been thanked: 66 times

Редактор БД плагинов

Post by IgorZ »

(бывший "Экспорт / импорт данных LuaMacro")
Описание:
Данный скрипт позволяет просматривать данные плагинов, хранящиеся в локальном и глобальном профилях Far-а, редактировать их, экспортировать в файл, а также импортировать из ранее экспортированного файла. По умолчанию предлагаются данные LuaMacro. После выбора другого плагина умолчание меняется до перезагрузки макросов. Формат файла импорта/экспорта текстовый, довольно простой - фактически, .ini-формат с некоторыми дополнительным ограничениями, так что, в принципе, легко редактируемый при надобности. Можно последовательно сохранить несколько разрозненных кусков данных в один файл путём дописывания в конец. Полученный файл можно импортировать в Far.


Скрипт добавляет себя в меню плагинов.



Требуемая версия Far 3.0.4324+.

Attachments
DBEdit.2.1.6.7z
(18.75 KiB) Downloaded 39 times
Last edited by IgorZ on Wed 22 Apr, 2020 05:57, edited 4 times in total.
DV
Posts: 438
Joined: Mon 07 Aug, 2006 08:23
Has thanked: 23 times
Been thanked: 15 times

Редактор БД плагинов

Post by DV »

Latest post of the previous page:

Спасибо за обновление!
И, напоминаю:
DV wrote:Макрос глобально (??) использует сочетания AltShiftF2 и AltShiftF3, что негативно сказывается на работе со временной панелью, использующей эти сочетания клавиш для своих целей.
IgorZ
Posts: 704
Joined: Wed 13 Jul, 2011 03:32
Has thanked: 13 times
Been thanked: 66 times

Редактор БД плагинов

Post by IgorZ »

DV wrote: Fri 16 Nov, 2018 11:32 Спасибо за обновление!
И, напоминаю:
DV wrote:Макрос глобально (??) использует сочетания AltShiftF2 и AltShiftF3, что негативно сказывается на работе со временной панелью, использующей эти сочетания клавиш для своих целей.
Любое сочетание может оказаться кем-то занято. Рекомендую использовать модуль rebind. Он позволяет переназначать клавиши, как удобно, "на лету". А в LuaManager есть удобный интерфейс для этого.
IgorZ
Posts: 704
Joined: Wed 13 Jul, 2011 03:32
Has thanked: 13 times
Been thanked: 66 times

Редактор БД плагинов

Post by IgorZ »

Версия 2.1.4 -
  • Доработан вызов action-функций с учётом введённых в build 717 параметров для condition/action.
  • Рефакторинг.
DV
Posts: 438
Joined: Mon 07 Aug, 2006 08:23
Has thanked: 23 times
Been thanked: 15 times

Редактор БД плагинов

Post by DV »

Far 3.0.0.5580 x86, плагин RESearch 8.70, макрос DBEdit 2.1.4.
При открытии базы RESearch получаем
buniak_a_h
Posts: 2137
Joined: Sat 20 Apr, 2013 00:17
Location: Питер
Has thanked: 131 times
Been thanked: 212 times
Contact:

Редактор БД плагинов

Post by buniak_a_h »

DV, Это обсуждалось в "Глюки ночной сборки". Shmuel нашёл ошибку в моих скриптах: Macro{… id = win.Uuid … } - тут win.Uuid лишнее. Поверьте у себя во всех скриптах на такое. И не перепутайте: в вызове far.Dialog надо именно win.Uuid!
User avatar
John Doe
Бюрократ
Posts: 12897
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 38 times
Been thanked: 296 times

Редактор БД плагинов

Post by John Doe »

А если бы не падал, то вы и не узнали бы о своих ошибках.
https://t.me/FarManager — Telegram чат
buniak_a_h
Posts: 2137
Joined: Sat 20 Apr, 2013 00:17
Location: Питер
Has thanked: 131 times
Been thanked: 212 times
Contact:

Редактор БД плагинов

Post by buniak_a_h »

John Doe wrote: Sun 12 Apr, 2020 07:16 А если бы не падал, то вы и не узнали бы о своих ошибках.
Узнал бы, если б потребовалось с id работать (искать макрос по id, например). А так-то - не использую, вот и не узнал. Подозреваю, у меня на компе много не работающих вещей, о которых я не знаю, потому что не использую.
Вот как объяснить логикой, что в вызове Macro используется "внешний" GUID, а в far.Dialog - внутренний? Просто вспоминается
Shmuel
Posts: 6167
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 31 times
Been thanked: 330 times

Редактор БД плагинов

Post by Shmuel »

buniak_a_h wrote: Sun 12 Apr, 2020 07:56 Вот как объяснить логикой, что в вызове Macro используется "внешний" GUID, а в far.Dialog - внутренний?
Логика здесь простейшая, и об этом неоднократно уже писали на форуме. Напишу ещё раз:

Для макросов из коробки доступно 2 библиотеки: макро-API и LuaFAR. Эти 2 библиотеки разрабатывались разными людьми, в разные периоды времени, независимо друг от друга, и они имеют отдельную документацию. Естественно, что "правила игры" в этих библиотеках разные. Но я не вижу в этом особой проблемы: практически любой программист имеет дело с разными языками и разными библиотеками, и обязан "играть" по правилам этих языков и библиотек.
User avatar
John Doe
Бюрократ
Posts: 12897
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 38 times
Been thanked: 296 times

Редактор БД плагинов

Post by John Doe »

buniak_a_h wrote: Sun 12 Apr, 2020 07:56 А так-то - не использую, вот и не узнал.
А тем временем другие пользователи скачивают ваши скрипты, и берут некоректный код как пример для собственных макросов.
https://t.me/FarManager — Telegram чат
buniak_a_h
Posts: 2137
Joined: Sat 20 Apr, 2013 00:17
Location: Питер
Has thanked: 131 times
Been thanked: 212 times
Contact:

Редактор БД плагинов

Post by buniak_a_h »

Shmuel, первое, что приходит в голову - ну хоть в документации как-то отразить, где внешний GUID, а где скомпилированный! Ведь вообще нигде не написано!
Я, честно говоря, думал, что LeaFAR - прослойка ("переходник") для использования функций из API (ну, или наоборот). На эту мысль наводит тот факт, что многие функции из LeaFAR, похоже, используют функции из API (преобразовывая параметры из таблиц, например, в похожие структуры). Я не утверждаю - просто представил, как бы делал я. Ну и, соответственно, привёл бы по возможности к стандарту.
И даже сделал бы гибче. Например, если признак панели 0 или 1 - это старый вызов, сохранённый для совместимости. А если far.Flags.PANEL_ACTIVE или far.Flags.PANEL_PASSIVE (-1 или -2 соответственно) - ву зависимости от вызываемой функции подменять на нужное.
Для GUID-а в зависимости от длины или преобразовывал, или нет (для разных надобностей) Увы, такой посредник не всегда знает, для каких надобностей…
John Doe, ну устыдили. Извиняет меня 2 соображения: (а) я искренне заблуждался и (б) эти скрипты я не публиковал.
Last edited by buniak_a_h on Sun 12 Apr, 2020 08:32, edited 1 time in total.
DV
Posts: 438
Joined: Mon 07 Aug, 2006 08:23
Has thanked: 23 times
Been thanked: 15 times

Редактор БД плагинов

Post by DV »

buniak_a_h wrote: Sun 12 Apr, 2020 03:53Это обсуждалось в "Глюки ночной сборки". Shmuel нашёл ошибку в моих скриптах: Macro{… id = win.Uuid … } - тут win.Uuid лишнее. Поверьте у себя во всех скриптах на такое. И не перепутайте: в вызове far.Dialog надо именно win.Uuid!
Что-то я сильно не в теме, потому что ничего не понял... :oops:
buniak_a_h
Posts: 2137
Joined: Sat 20 Apr, 2013 00:17
Location: Питер
Has thanked: 131 times
Been thanked: 212 times
Contact:

Редактор БД плагинов

Post by buniak_a_h »

В версии 5580 заменили библиотеку LuaUTF8 (так, кажется) и сделали контроль за корректностью текста в кодировке UTF-8. Как Вы знаете, GUID может быть в двух ипостасях: во внешнем представлении (4 16-ричных числа, разделённых дефисами) и во внутреннем (хотя это на самом деле число, но представляется в виде 16-символьной строки). Перевод туда-обратно - функцией win.Uuid.
В моих скриптах я в двух файлах вместо внешнего ГУИДа передавал внутренний; если функция ожидает символьную строку в кодировке UTF-8 (например, функция utf8.gsub или <строка>:gsub), а получит внутренний ГУИД, то вполне может вылететь с приведённой Вами диагностикой. Первое, что приходит в голову - именно это как раз и произошло.
--
Посмотрел я указанный скрипт (DBEdit.lua). Увидел следующую странность:
Guids.diEdit - это GUID во внешнем (строковом) виде. Но в строке 290 написано:
if far.Dialog(Guids.diEdit, … ), хотя именно там должен быть внутренний GUID (проверено опытным путём). Отсюда я делаю вывод, что автор этого скрипта, так же как я ранний, вполне мог перепутать ГУИДы. В предыдущих версиях ФАРа это игнорировалось до тех пор, пока ГУИД не использовался. Теперь эта ситуация вызывает неприятную ошибку, которая может валить ФАР. Так как-то …
Shmuel
Posts: 6167
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 31 times
Been thanked: 330 times

Редактор БД плагинов

Post by Shmuel »

buniak_a_h wrote: Sun 12 Apr, 2020 11:22 Отсюда я делаю вывод, что автор этого скрипта, так же как я ранний, вполне мог перепутать ГУИДы. В предыдущих версиях ФАРа это игнорировалось до тех пор, пока ГУИД не использовался. Теперь эта ситуация вызывает неприятную ошибку, которая может валить ФАР.
Эта ошибка не может валить Фар.
buniak_a_h
Posts: 2137
Joined: Sat 20 Apr, 2013 00:17
Location: Питер
Has thanked: 131 times
Been thanked: 212 times
Contact:

Редактор БД плагинов

Post by buniak_a_h »

Shmuel wrote: Sun 12 Apr, 2020 11:29 Эта ошибка не может валить Фар.
Ну, я привёл скриншоты вылета. Кажется, забыл там добавить, что фар закрывался.
Ещё. Есть скрипт проверки скрипта luacheck. Так вот он внезапно стал падать на тех скриптах, на которых работал в версии 5579. Этодля меня стало совершенно неприемлемо; откатился на 5579. Такая вот грусть…
Shmuel
Posts: 6167
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 31 times
Been thanked: 330 times

Редактор БД плагинов

Post by Shmuel »

buniak_a_h wrote: Sun 12 Apr, 2020 12:07
Shmuel wrote: Sun 12 Apr, 2020 11:29 Эта ошибка не может валить Фар.
Ну, я привёл скриншоты вылета. Кажется, забыл там добавить, что фар закрывался.
Зачем вы сознательно вводите читателей форума в заблуждение?
Ведь вы прекрасно знаете, что причиной вылета Фара был плагин колорер, что и видно на скриншоте.
buniak_a_h
Posts: 2137
Joined: Sat 20 Apr, 2013 00:17
Location: Питер
Has thanked: 131 times
Been thanked: 212 times
Contact:

Редактор БД плагинов

Post by buniak_a_h »

John Doe, нашёл третье соображение, которое меня немного извиняет: такая же фигня в скрипте DBEdit от IgorZ: одну ошибку я уже нашёл (первый параметр в функции far.Dialog передаётся символьным, а не байтовым).
Кстати, Ваш luacheck_editor.luaу меня тоже свалился. На скрипте, который в версии 5579 проходил проверку. Подробности будут в той ветке.
Post Reply

Return to “Полезные макросы и скрипты”