Редактор БД плагинов
Редактор БД плагинов
(бывший "Экспорт / импорт данных LuaMacro")
Описание:
Данный скрипт позволяет просматривать данные плагинов, хранящиеся в локальном и глобальном профилях Far-а, редактировать их, экспортировать в файл, а также импортировать из ранее экспортированного файла. По умолчанию предлагаются данные LuaMacro. После выбора другого плагина умолчание меняется до перезагрузки макросов. Формат файла импорта/экспорта текстовый, довольно простой - фактически, .ini-формат с некоторыми дополнительным ограничениями, так что, в принципе, легко редактируемый при надобности. Можно последовательно сохранить несколько разрозненных кусков данных в один файл путём дописывания в конец. Полученный файл можно импортировать в Far.
Скрипт добавляет себя в меню плагинов.
Требуемая версия Far 3.0.4324+.
Описание:
Данный скрипт позволяет просматривать данные плагинов, хранящиеся в локальном и глобальном профилях Far-а, редактировать их, экспортировать в файл, а также импортировать из ранее экспортированного файла. По умолчанию предлагаются данные LuaMacro. После выбора другого плагина умолчание меняется до перезагрузки макросов. Формат файла импорта/экспорта текстовый, довольно простой - фактически, .ini-формат с некоторыми дополнительным ограничениями, так что, в принципе, легко редактируемый при надобности. Можно последовательно сохранить несколько разрозненных кусков данных в один файл путём дописывания в конец. Полученный файл можно импортировать в Far.
Скрипт добавляет себя в меню плагинов.
Требуемая версия Far 3.0.4324+.
- Attachments
-
- DBEdit.2.1.6.7z
- (18.75 KiB) Downloaded 43 times
Last edited by IgorZ on Wed 22 Apr, 2020 05:57, edited 4 times in total.
-
- Posts: 2304
- Joined: Sat 20 Apr, 2013 00:17
- Location: Питер
- Has thanked: 139 times
- Been thanked: 248 times
- Contact:
Редактор БД плагинов
Latest post of the previous page:
John Doe, нашёл третье соображение, которое меня немного извиняет: такая же фигня в скрипте DBEdit от IgorZ: одну ошибку я уже нашёл (первый параметр в функции far.Dialog передаётся символьным, а не байтовым).Кстати, Ваш luacheck_editor.luaу меня тоже свалился. На скрипте, который в версии 5579 проходил проверку. Подробности будут в той ветке.
-
- Posts: 2304
- Joined: Sat 20 Apr, 2013 00:17
- Location: Питер
- Has thanked: 139 times
- Been thanked: 248 times
- Contact:
Редактор БД плагинов
СТОП! Вы сами нашли у меня ошибку (win.Uuid в поле id таблицы-аргумента Macro), нет? И САМИ написали мне, чтоб я исправлял СВОИ ошибки! Не было?
-
- Posts: 6194
- Joined: Thu 23 Mar, 2006 21:36
- Location: Israel
- Has thanked: 31 times
- Been thanked: 337 times
Редактор БД плагинов
Вы продолжаете передёргивать. Непонятно, зачем это вам.buniak_a_h wrote: ↑Sun 12 Apr, 2020 12:30СТОП! Вы сами нашли у меня ошибку (win.Uuid в поле id таблицы-аргумента Macro), нет? И САМИ написали мне, чтоб я исправлял СВОИ ошибки! Не было?
- zg
- zero-gravity
- Posts: 5878
- Joined: Tue 15 Mar, 2005 17:36
- Location: riga
- Been thanked: 158 times
- Contact:
Редактор БД плагинов
от этих ошибок фар падал? или только показывал сообщение об ошибке? а если убрать колорер?buniak_a_h wrote: ↑Sun 12 Apr, 2020 12:30СТОП! Вы сами нашли у меня ошибку (win.Uuid в поле id таблицы-аргумента Macro), нет? И САМИ написали мне, чтоб я исправлял СВОИ ошибки! Не было?
-
- Posts: 2304
- Joined: Sat 20 Apr, 2013 00:17
- Location: Питер
- Has thanked: 139 times
- Been thanked: 248 times
- Contact:
Редактор БД плагинов
Цитирую.
(это к тому, что ошибку нашли Вы)
(это к тому, что именно Вы написали мне,что ошибки мои. Или я неправильно Вас понял, а Вы на самом деле предлагали мне искать ошибки в colorer-е (и, как выяснилось, в luacheck_editor.lua от John Doe)? Последний вылетает, причем colorer откачен на старую версию и не валится.
Я доказал. Хочу подробностей.
-
- Posts: 2304
- Joined: Sat 20 Apr, 2013 00:17
- Location: Питер
- Has thanked: 139 times
- Been thanked: 248 times
- Contact:
Редактор БД плагинов
Откуда я знаю? Меня учили, что почти всегда виновник тот, кто сделал ПЕРВУЮ ошибку. Остальные могут быть наведёнными. Исправил указанную Shmuel-ем ошибку - валиться перестало (ну, в этом месте, как выяснилось). Откатил Colorer на предыдущую версию - вообще валиться перестало (как выяснилось - тоже не навсегда. Падает синтаксическая проверка скриптов). Пришлось откатить ФАР.
- zg
- zero-gravity
- Posts: 5878
- Joined: Tue 15 Mar, 2005 17:36
- Location: riga
- Been thanked: 158 times
- Contact:
Редактор БД плагинов
я не знаю, как на это реагировать. я посмотрел ваше первое сообщение об ошибке: там два скриншота:buniak_a_h wrote: ↑Sun 12 Apr, 2020 12:50Меня учили, что почти всегда виновник тот, кто сделал ПЕРВУЮ ошибку.
1. первый о сообщение об ошибке в макросе. очевидно это не падение.
2. вторая ошибка с исключением — исключение в колорере. фар падает. из-за колорера.
если не знаете, зачем распространяете недостоверную информацию? вам же люди, которые знают, сказали, что не роняет luamacro far в данной ситуации. а вы не знаете и настаиваете. это плохой признак.
Редактор БД плагинов
Возвращаясь к скрипту DBEdit.lua, сообщение об ошибке говорит:
На строке 451 следующий код:
в котором, судя по ошибке, нас интересует часть
Добавив команду far.Message(v.elem.value, ""), я выяснил, что значением v.elem.value непосредственно перед ошибкой является
То есть ошибка всё-таки в неожиданном символе строки?
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'
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")
Code: Select all
b♥
Редактор БД плагинов
Для выживания скрипта можно строку 451 разбить на несколько строк с использованием pcall вокруг tostring(v.elem.value):gsub("\n","\\n") :
Примечание 1: символ перевёрнутого треугольника в тексте скрипта имеет другой код и при вставке в этот форум превращается в нечитаемый символ.
Примечание 2: наверное, вместо инструкции column2 = "" следовало бы сделать что-то более осмысленное (например, какое-то преобразование строки?) - но тут я недостаточно разбираюсь как в специфике скрипта, так и в специфике преобразования символов в Lua.
Примечание 3: впрочем, тепер скрипт валится при попытке изменить это значение. Напомню, речь идёт о базе данных плагина RESearch версии 8.70. А параметр называется "AllCP" и имеет значение "b♥".
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
Примечание 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.
Редактор БД плагинов
В той же базе данных плагина RESearch версии 8.70, при заходе в пустой "каталог" EditorBatches или PanelBatches (пустой - потому что я не создавал ни EditorBatches, ни PanelBatches) и нажатии Enter внутри этого пустого "каталога" получаем:
(Примечание: строка 468 соответсвует уже модифицированному мной скрипту).
Так что скрипт явно нуждается во внимании его автора.
Code: Select all
C:\FAR3\Profile\Macros\scripts\DBEdit.lua:468: attempt to index a nil value
Так что скрипт явно нуждается во внимании его автора.
Редактор БД плагинов
Просьба: попробовать заменить строку 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
b♥
, или что-то другое?P. S. Остальное поправил, выложу, как только поборю вышеописанную ошибку.
Last edited by IgorZ on Fri 17 Apr, 2020 10:38, edited 1 time in total.
-
- Posts: 6194
- Joined: Thu 23 Mar, 2006 21:36
- Location: Israel
- Has thanked: 31 times
- Been thanked: 337 times
Редактор БД плагинов
Плгин Polygon:
Code: Select all
╔══════════════════════════════ Edit row ═══════════════════════════════╗
║ key_id 1 ║
║ name 'AllCP' ║
║ value x'62030000b0040000e3040000e9fd0000' ║
╟───────────────────────────────────────────────────────────────────────╢
║ { Save } [ Cancel ] ║
╚═══════════════════════════════════════════════════════════════════════╝
Last edited by Shmuel on Fri 17 Apr, 2020 12:03, edited 2 times in total.
Редактор БД плагинов
В этом случае отображает для параметра "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'
Редактор БД плагинов
Версия 2.1.5 -
- Исправлена ошибка с обработкой действий в пустом подключе. Теперь не падает при попытке редактировать пустоту.
- Переделана обработка FST_DATA. Поскольку, как оказалось, нельзя рассчитывать, что данный тип данных можно всегда считать строкой, то добавлено представление в виде дампа, а строковое представление показывается только, если строка корректна.
- Рефакторинг. Много всего по мелочи.
Редактор БД плагинов
Спасибо - но, увы, всё с тем же 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> ║
╟─────────────────────────────────────────────────────────────────────────────────────────────────────────────╢
Редактор БД плагинов
Упс... Прошу прощения, только сейчас дошло, что проверял на "условно-стабильной" сборке 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.