View Issue Details

IDProjectCategoryView StatusLast Update
0003536Wishes.PluginsLuaMacro / Macro Browserpublic2023-06-10 17:30
ReporterJohnDoe Assigned To 
PrioritynormalSeverityfeatureReproducibilityN/A
Status closedResolutionfixed 
Platformx86OSWindowsOS VersionXP SP3
Product Version3.0 
Summary0003536: GetMacroCopy: возвращать все типы определений, не только макросы
DescriptionСейчас mf.GetMacroCopy возвращает определения (1) стационарных/клавиатурных/программных макросов и (2) обработчиков событий.

Хочется же получать также информацию об остальных типах определений:
3. MenuItem - добавочные пункты меню конфигурации/плагинов
4. CommandLine - добавочные префиксы командной строки
5. PanelModule
6. ContentColumns

Учитывая многообразие разных типов предлагаю также добавить в возвращаемую таблицу служебное поле, однозначно определяющее тип.
Additional InformationНезависимое пожелание: отображать эту информацию в макробраузере
TagsNo tags attached.

Activities

IgorZ

2021-06-15 05:33

reporter   bugnote:0017086

Last edited: 2021-06-15 05:44

Будут определённые сложности: если макросы и обработчики событий хранятся в одной таблице, то пункты меню плагинов, префиксы, панельные модули и контент-колонки помещаются каждый тип в свою таблицу, и единого номера, как для GetMacroCopy, просто не может быть. Кроме того, префиксы вообще индексируются в своей таблице не по номеру, а по имени префикса, что добавит дополнительных сложностей. Можно, в принципе, добавить GetMacroCopy второй аргумент: тип запрашиваемого скрипта, но с префиксами, опять же, будут проблема: их, перебирая номера, не вытянешь. Так что наиболее логично было бы добавить функцию mf.GetAllScriptsCopy() с необязательным параметром "тип скрипта". Я бы даже написал её для utils (благо, в LuaManager это всё есть), но как добавить её в mf[], я не в курсе.

P. S. Разобрался, добавляется через api.lua. Ну, тогда, без проблем, набросаю, если надо.

JohnDoe

2021-06-15 07:57

updater   bugnote:0017087

Last edited: 2021-06-15 10:18

макросы и обработчики событий хранятся в одной таблице

IgorZ
Нам не очень интересно как они храняться внутри, главное чтобы возвращались последовательно и консистентно.

пункты меню плагинов, префиксы, панельные модули и контент-колонки помещаются каждый тип в свою таблицу, и единого номера, как для GetMacroCopy, просто не может быть.

IgorZ
Очень даже может, достаточно инкрементировать индекс.
Возможно, что стоит дублировать и в единую таблицу.

 но с префиксами, опять же, будут проблема: их, перебирая номера, не вытянешь.
Его можно хранить, а не вытягивать.

Можно, в принципе, добавить GetMacroCopy второй аргумент: тип запрашиваемого скрипта,

IgorZ
Тут есть нюанс: сейчас индексы элементов постоянны, а если фильтровать, то будет несоответствие. Поэтому да, лучше отдельную функцию завести, с обязательным вторым аргументом (возможно его стоит сделать первым).

набросаю, если надо.

IgorZ
Полагаю что надо.

JohnDoe

2021-06-16 09:19

updater   bugnote:0017089

Для удобства обсуждения кода открыл PR: https://github.com/FarGroup/FarManager/pull/417

JohnDoe

2021-06-20 14:16

updater   bugnote:0017090

@IgorZ

А про кастомные сортировки забыли?

IgorZ

2021-06-21 11:01

reporter   bugnote:0017091

А про кастомные сортировки забыли?

JohnDoe
А зачем они? Я как-то слабо представляю писателя на Lua, который нуждается в списке скриптов, но при этом не в состоянии воспользоваться table.sort. А тот, кто в состоянии, скорее предпочтёт сам написать нужную сортировку, чем использовать готовую, которая вряд ли устроит его на 100%. Или предусмотреть дополнительный параметр, для указания функции сортировки?

JohnDoe

2021-06-21 11:07

updater   bugnote:0017092

Last edited: 2021-06-22 08:41

Как минимум для того чтобы макробраузер знал где они определены, и пользователь мог бы к ним переходить.
Edit: сделал так https://github.com/FarGroup/FarManager/pull/420/commits/3e02c63428a3a331f251351c08555c3defde3397

JohnDoe

2021-06-22 08:44

updater   bugnote:0017093

@IgorZ
Речь не о сортировке таблицы, а о кастомных сортировках панели (Panel.LoadCustomSortMode)

IgorZ

2021-06-25 06:47

reporter   bugnote:0017094

GetAllScriptsCopy снимаем с дистанции? Вариант с итератором мне и самому понравился больше.

JohnDoe

2021-06-25 07:51

updater   bugnote:0017095

@IgorZ
https://github.com/FarGroup/FarManager/pull/420

Issue History

Date Modified Username Field Change
2017-10-23 13:19 JohnDoe New Issue
2021-06-12 10:08 JohnDoe Description Updated
2021-06-15 05:33 IgorZ Note Added: 0017086
2021-06-15 05:44 IgorZ Note Edited: 0017086
2021-06-15 07:57 JohnDoe Note Added: 0017087
2021-06-15 10:18 JohnDoe Note Edited: 0017087
2021-06-16 09:19 JohnDoe Note Added: 0017089
2021-06-20 14:16 JohnDoe Note Added: 0017090
2021-06-21 11:01 IgorZ Note Added: 0017091
2021-06-21 11:07 JohnDoe Note Added: 0017092
2021-06-22 08:41 JohnDoe Note Edited: 0017092
2021-06-22 08:44 JohnDoe Note Added: 0017093
2021-06-25 06:47 IgorZ Note Added: 0017094
2021-06-25 07:51 JohnDoe Note Added: 0017095
2023-06-10 17:30 JohnDoe Status new => closed
2023-06-10 17:30 JohnDoe Resolution open => fixed