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

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

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

Post by IgorZ »

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


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



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

Attachments
DBEdit.2.1.6.7z
(18.75 KiB) Downloaded 16 times
Last edited by IgorZ on Wed 22 Apr, 2020 05:57, edited 4 times in total.

buniak_a_h
Posts: 1859
Joined: Sat 20 Apr, 2013 00:17
Location: Питер
Has thanked: 118 times
Been thanked: 165 times
Contact:

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

Post by buniak_a_h »

Latest post of the previous page:

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

buniak_a_h
Posts: 1859
Joined: Sat 20 Apr, 2013 00:17
Location: Питер
Has thanked: 118 times
Been thanked: 165 times
Contact:

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

Post by buniak_a_h »

Shmuel wrote:
Sun 12 Apr, 2020 12:22
Зачем вы сознательно вводите читателей форума в заблуждение?
Ведь вы прекрасно знаете, что причиной вылета Фара был плагин колорер, что и видно на скриншоте.
СТОП! Вы сами нашли у меня ошибку (win.Uuid в поле id таблицы-аргумента Macro), нет? И САМИ написали мне, чтоб я исправлял СВОИ ошибки! Не было?

Shmuel
Posts: 6127
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 31 times
Been thanked: 309 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: 5818
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 147 times
Contact:

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

Post by zg »

buniak_a_h wrote:
Sun 12 Apr, 2020 12:30
СТОП! Вы сами нашли у меня ошибку (win.Uuid в поле id таблицы-аргумента Macro), нет? И САМИ написали мне, чтоб я исправлял СВОИ ошибки! Не было?
от этих ошибок фар падал? или только показывал сообщение об ошибке? а если убрать колорер?

buniak_a_h
Posts: 1859
Joined: Sat 20 Apr, 2013 00:17
Location: Питер
Has thanked: 118 times
Been thanked: 165 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
Вы продолжаете передёргивать
Я доказал. Хочу подробностей.

buniak_a_h
Posts: 1859
Joined: Sat 20 Apr, 2013 00:17
Location: Питер
Has thanked: 118 times
Been thanked: 165 times
Contact:

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

Post by buniak_a_h »

zg wrote:
Sun 12 Apr, 2020 12:40
от этих ошибок фар падал? или только показывал сообщение об ошибке? а если убрать колорер?
Откуда я знаю? Меня учили, что почти всегда виновник тот, кто сделал ПЕРВУЮ ошибку. Остальные могут быть наведёнными. Исправил указанную Shmuel-ем ошибку - валиться перестало (ну, в этом месте, как выяснилось). Откатил Colorer на предыдущую версию - вообще валиться перестало (как выяснилось - тоже не навсегда. Падает синтаксическая проверка скриптов). Пришлось откатить ФАР.

User avatar
zg
zero-gravity
Posts: 5818
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 147 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: 415
Joined: Mon 07 Aug, 2006 08:23
Has thanked: 18 times
Been thanked: 14 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: 415
Joined: Mon 07 Aug, 2006 08:23
Has thanked: 18 times
Been thanked: 14 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: 415
Joined: Mon 07 Aug, 2006 08:23
Has thanked: 18 times
Been thanked: 14 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: 689
Joined: Wed 13 Jul, 2011 03:32
Has thanked: 13 times
Been thanked: 60 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: 6127
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 31 times
Been thanked: 309 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: 415
Joined: Mon 07 Aug, 2006 08:23
Has thanked: 18 times
Been thanked: 14 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: 689
Joined: Wed 13 Jul, 2011 03:32
Has thanked: 13 times
Been thanked: 60 times

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

Post by IgorZ »

Версия 2.1.5 -
  • Исправлена ошибка с обработкой действий в пустом подключе. Теперь не падает при попытке редактировать пустоту.
  • Переделана обработка FST_DATA. Поскольку, как оказалось, нельзя рассчитывать, что данный тип данных можно всегда считать строкой, то добавлено представление в виде дампа, а строковое представление показывается только, если строка корректна.
  • Рефакторинг. Много всего по мелочи.

DV
Posts: 415
Joined: Mon 07 Aug, 2006 08:23
Has thanked: 18 times
Been thanked: 14 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: 689
Joined: Wed 13 Jul, 2011 03:32
Has thanked: 13 times
Been thanked: 60 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 “Полезные макросы и скрипты”