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

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

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

Post by IgorZ »

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



В стандартной поставке идёт файл, добавляющий следующие возможности:
  • Пункт в меню плагинов.
Требуемая версия Far 3.0.4324+.

Attachments
DBEdit.3.1.0.7z
(19.02 KiB) Downloaded 73 times
DBEdit.2.1.8.7z
Последняя публичная версия не в виде модуля
(18.87 KiB) Downloaded 199 times
Last edited by IgorZ on Tue 23 May, 2023 06:39, edited 8 times in total.
User avatar
buniak_a_h
Posts: 4234
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 642 times
Contact:

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

Post by buniak_a_h »

Latest post of the previous page:

John Doe, нашёл третье соображение, которое меня немного извиняет: такая же фигня в скрипте DBEdit от IgorZ: одну ошибку я уже нашёл (первый параметр в функции far.Dialog передаётся символьным, а не байтовым).
Кстати, Ваш luacheck_editor.luaу меня тоже свалился. На скрипте, который в версии 5579 проходил проверку. Подробности будут в той ветке.
User avatar
buniak_a_h
Posts: 4234
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 642 times
Contact:

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

Post by buniak_a_h »

Shmuel wrote: Sun 12 Apr, 2020 12:22 Зачем вы сознательно вводите читателей форума в заблуждение?
Ведь вы прекрасно знаете, что причиной вылета Фара был плагин колорер, что и видно на скриншоте.
СТОП! Вы сами нашли у меня ошибку (win.Uuid в поле id таблицы-аргумента Macro), нет? И САМИ написали мне, чтоб я исправлял СВОИ ошибки! Не было?
Shmuel
Posts: 6815
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 526 times

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

Post by Shmuel »

buniak_a_h wrote: Sun 12 Apr, 2020 12:30
Shmuel wrote: Sun 12 Apr, 2020 12:22 Зачем вы сознательно вводите читателей форума в заблуждение?
Ведь вы прекрасно знаете, что причиной вылета Фара был плагин колорер, что и видно на скриншоте.
СТОП! Вы сами нашли у меня ошибку (win.Uuid в поле id таблицы-аргумента Macro), нет? И САМИ написали мне, чтоб я исправлял СВОИ ошибки! Не было?
Вы продолжаете передёргивать. Непонятно, зачем это вам.
User avatar
zg
zero-gravity
Posts: 6015
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 185 times
Contact:

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

Post by zg »

buniak_a_h wrote: Sun 12 Apr, 2020 12:30СТОП! Вы сами нашли у меня ошибку (win.Uuid в поле id таблицы-аргумента Macro), нет? И САМИ написали мне, чтоб я исправлял СВОИ ошибки! Не было?
от этих ошибок фар падал? или только показывал сообщение об ошибке? а если убрать колорер?
User avatar
buniak_a_h
Posts: 4234
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 642 times
Contact:

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

Post by buniak_a_h »

Shmuel wrote: Sun 12 Apr, 2020 12:36 Вы продолжаете передёргивать. Непонятно, зачем это вам.
Цитирую.
Shmuel wrote: Sat 11 Apr, 2020 13:23 Уберите win.Uuid со строчки 286.
(это к тому, что ошибку нашли Вы)
Shmuel wrote: Sat 11 Apr, 2020 13:28 Я нашёл вам один баг. Следующие ищите сами.
(это к тому, что именно Вы написали мне,что ошибки мои. Или я неправильно Вас понял, а Вы на самом деле предлагали мне искать ошибки в colorer-е (и, как выяснилось, в luacheck_editor.lua от John Doe)? Последний вылетает, причем colorer откачен на старую версию и не валится.
Shmuel wrote: Sun 12 Apr, 2020 12:36 Вы продолжаете передёргивать
Я доказал. Хочу подробностей.
User avatar
buniak_a_h
Posts: 4234
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 642 times
Contact:

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

Post by buniak_a_h »

zg wrote: Sun 12 Apr, 2020 12:40 от этих ошибок фар падал? или только показывал сообщение об ошибке? а если убрать колорер?
Откуда я знаю? Меня учили, что почти всегда виновник тот, кто сделал ПЕРВУЮ ошибку. Остальные могут быть наведёнными. Исправил указанную Shmuel-ем ошибку - валиться перестало (ну, в этом месте, как выяснилось). Откатил Colorer на предыдущую версию - вообще валиться перестало (как выяснилось - тоже не навсегда. Падает синтаксическая проверка скриптов). Пришлось откатить ФАР.
User avatar
zg
zero-gravity
Posts: 6015
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 185 times
Contact:

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

Post by zg »

buniak_a_h wrote: Sun 12 Apr, 2020 12:50Меня учили, что почти всегда виновник тот, кто сделал ПЕРВУЮ ошибку.
я не знаю, как на это реагировать. я посмотрел ваше первое сообщение об ошибке: там два скриншота:
1. первый о сообщение об ошибке в макросе. очевидно это не падение.
2. вторая ошибка с исключением — исключение в колорере. фар падает. из-за колорера.
buniak_a_h wrote: Sun 12 Apr, 2020 12:50Откуда я знаю?
если не знаете, зачем распространяете недостоверную информацию? вам же люди, которые знают, сказали, что не роняет luamacro far в данной ситуации. а вы не знаете и настаиваете. это плохой признак.
DV
Posts: 455
Joined: Mon 07 Aug, 2006 08:23
Has thanked: 31 times
Been thanked: 15 times

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

Post by DV »

Возвращаясь к скрипту DBEdit.lua, сообщение об ошибке говорит:

Code: Select all

C:\FAR3\Profile\Macros\scripts\DBEdit.lua:451: invalid UTF-8 code
stack traceback:
   [C]: in function 'gsub'
   C:\FAR3\Profile\Macros\scripts\DBEdit.lua:451: in function 'ShowMenu'
На строке 451 следующий код:

Code: Select all

if not v.res then v.text = ("%-"..NL.."s│".."%s"):format(v.text,v.elem.type==F.FST_SUBKEY and "▼" or tostring(v.elem.value):gsub("\n","\\n")) end
в котором, судя по ошибке, нас интересует часть

Code: Select all

tostring(v.elem.value):gsub("\n","\\n")
Добавив команду far.Message(v.elem.value, ""), я выяснил, что значением v.elem.value непосредственно перед ошибкой является

Code: Select all

b♥
То есть ошибка всё-таки в неожиданном символе строки?
DV
Posts: 455
Joined: Mon 07 Aug, 2006 08:23
Has thanked: 31 times
Been thanked: 15 times

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

Post by DV »

Для выживания скрипта можно строку 451 разбить на несколько строк с использованием pcall вокруг tostring(v.elem.value):gsub("\n","\\n") :

Code: Select all

if not v.res then
      if v.elem.type==F.FST_SUBKEY then
        column2 = "▼"
      else
        if not pcall(function () column2 = tostring(v.elem.value):gsub("\n","\\n") end) then
          column2 = ""
        end
      end
      v.text = ("%-"..NL.."s│".."%s"):format(v.text,column2)
    end
Примечание 1: символ перевёрнутого треугольника в тексте скрипта имеет другой код и при вставке в этот форум превращается в нечитаемый символ.
Примечание 2: наверное, вместо инструкции column2 = "" следовало бы сделать что-то более осмысленное (например, какое-то преобразование строки?) - но тут я недостаточно разбираюсь как в специфике скрипта, так и в специфике преобразования символов в Lua.
Примечание 3: впрочем, тепер скрипт валится при попытке изменить это значение. Напомню, речь идёт о базе данных плагина RESearch версии 8.70. А параметр называется "AllCP" и имеет значение "b♥".
Last edited by DV on Tue 14 Apr, 2020 12:15, edited 1 time in total.
DV
Posts: 455
Joined: Mon 07 Aug, 2006 08:23
Has thanked: 31 times
Been thanked: 15 times

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

Post by DV »

В той же базе данных плагина RESearch версии 8.70, при заходе в пустой "каталог" EditorBatches или PanelBatches (пустой - потому что я не создавал ни EditorBatches, ни PanelBatches) и нажатии Enter внутри этого пустого "каталога" получаем:

Code: Select all

C:\FAR3\Profile\Macros\scripts\DBEdit.lua:468: attempt to index a nil value
(Примечание: строка 468 соответсвует уже модифицированному мной скрипту).
Так что скрипт явно нуждается во внимании его автора.
IgorZ
Posts: 790
Joined: Wed 13 Jul, 2011 03:32
Has thanked: 15 times
Been thanked: 93 times

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

Post by IgorZ »

DV wrote: Mon 13 Apr, 2020 11:28 Возвращаясь к скрипту DBEdit.lua,
Просьба: попробовать заменить строку 451на такой фрагмент:

Code: Select all

    local vv
    if type(v.elem.value)=="string" then
      vv = string.gsub(v.elem.value,"\n","\\n")
    else
      vv = tostring(v.elem.value)
    end
    if not v.res then v.text = ("%-"..NL.."s│".."%s"):format(v.text,v.elem.type==F.FST_SUBKEY and "" or vv) end
и описать результат. Кстати: есть ли у Вас плагин для просмотра баз данных SQLite? Если есть, то что он показывает в качестве значения для того параметра, который приводит к столь неожиданному результату? Тоже b♥, или что-то другое?

P. S. Остальное поправил, выложу, как только поборю вышеописанную ошибку.
Last edited by IgorZ on Fri 17 Apr, 2020 10:38, edited 1 time in total.
Shmuel
Posts: 6815
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 526 times

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

Post by Shmuel »

IgorZ wrote: Fri 17 Apr, 2020 10:36 Кстати: есть ли у Вас плагин для просмотра баз данных SQLite? Если есть, то что он показывает в качестве значения для того параметра, который приводит к столь неожиданному результату?
Плгин Polygon:

Code: Select all

╔══════════════════════════════ Edit row ═══════════════════════════════╗
║ key_id 1                                                              ║
║ name   'AllCP'                                                        ║
║ value  x'62030000b0040000e3040000e9fd0000'                            ║
╟───────────────────────────────────────────────────────────────────────╢
║                          { Save } [ Cancel ]                          ║
╚═══════════════════════════════════════════════════════════════════════╝
Кстати, это массив из четырёх 4-байтных интеджеров: 866, 1200, 1251, 65001.
Last edited by Shmuel on Fri 17 Apr, 2020 12:03, edited 2 times in total.
DV
Posts: 455
Joined: Mon 07 Aug, 2006 08:23
Has thanked: 31 times
Been thanked: 15 times

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

Post by DV »

IgorZ wrote: Fri 17 Apr, 2020 10:36Просьба: попробовать заменить строку 451на такой фрагмент
В этом случае отображает для параметра "AllCp" значение "b♥" (без кавычек).
При попытке редактирования этого значения - выдаёт ошибку

Code: Select all

C:\FAR3\Profile\Macros\scripts\DBEdit.lua:266: invalid UTF-8 code
stack traceback:
   [C]: in function '(for generator)'
   C:\FAR3\Profile\Macros\scripts\DBEdit.lua:266: in function <C:\FAR3\Profile\Macros\scripts\DBEdit.lua:237>
   [C]: in function 'DialogRun'
IgorZ
Posts: 790
Joined: Wed 13 Jul, 2011 03:32
Has thanked: 15 times
Been thanked: 93 times

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

Post by IgorZ »

Версия 2.1.5 -
  • Исправлена ошибка с обработкой действий в пустом подключе. Теперь не падает при попытке редактировать пустоту.
  • Переделана обработка FST_DATA. Поскольку, как оказалось, нельзя рассчитывать, что данный тип данных можно всегда считать строкой, то добавлено представление в виде дампа, а строковое представление показывается только, если строка корректна.
  • Рефакторинг. Много всего по мелочи.
DV
Posts: 455
Joined: Mon 07 Aug, 2006 08:23
Has thanked: 31 times
Been thanked: 15 times

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

Post by DV »

IgorZ wrote: Tue 21 Apr, 2020 09:28Версия 2.1.5
Спасибо - но, увы, всё с тем же RESearch:

Code: Select all

╔══════════════════════════════════════════════════════ Error ════════════════════════════════════════════════╗
║ C:\FAR3\Plugins\LuaMacro\LuaMacro.dll:                                                                      ║
║ C:\FAR3\Profile\Macros\scripts\DBEdit.lua:393: invalid UTF-8 code                                           ║
║ stack traceback:                                                                                            ║
║    [C]: in function 'byte'                                                                                  ║
║    C:\FAR3\Profile\Macros\scripts\DBEdit.lua:393: in function 'DATAToStrings'                               ║
║    C:\FAR3\Profile\Macros\scripts\DBEdit.lua:461: in function 'ShowMenu'                                    ║
║    C:\FAR3\Profile\Macros\scripts\DBEdit.lua:603: in function 'action'                                      ║
║    C:\FAR3\Plugins\LuaMacro\LuaMacro.lua:479: in function <C:\FAR3\Plugins\LuaMacro\LuaMacro.lua:428>       ║
╟─────────────────────────────────────────────────────────────────────────────────────────────────────────────╢
IgorZ
Posts: 790
Joined: Wed 13 Jul, 2011 03:32
Has thanked: 15 times
Been thanked: 93 times

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

Post by IgorZ »

DV wrote: Tue 21 Apr, 2020 11:23
IgorZ wrote: Tue 21 Apr, 2020 09:28Версия 2.1.5
Спасибо - но, увы, всё с тем же RESearch:
Упс... Прошу прощения, только сейчас дошло, что проверял на "условно-стабильной" сборке 5577, в которой этого нововведения ещё не было. Переделаю.

P. S. Собственно, переделка оказалась элементарной. Строку 393 меняем с

Code: Select all

res.str,res.dump = _G.unicode.utf8.utf8valid(elem.value) and elem.value:gsub("\n","\\n"),"["..table.concat({elem.value:byte(1,-1)},",").."]"
на

Code: Select all

res.str,res.dump = _G.unicode.utf8.utf8valid(elem.value) and elem.value:gsub("\n","\\n"),"["..table.concat({string.byte(elem.value,1,-1)},",").."]"
Last edited by IgorZ on Wed 22 Apr, 2020 05:49, edited 1 time in total.
Post Reply

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