mf.EnumScripts (предложения по api)

Здесь обсуждается всё, что касается макросов.
IgorZ
Posts: 790
Joined: Wed 13 Jul, 2011 03:32
Has thanked: 15 times
Been thanked: 93 times

mf.EnumScripts (предложения по api)

Post by IgorZ »

Дошли руки посмотреть ContentColumns на предмет добавления в LuaManager. В результате родилось два предложения и пожелание (наверное, даже, скорее, мечта).
  1. Доработать в utils.lua функцию следующим образом: .
    Это добавит к ContentColumns имя файла, что позволит более корректно находить исходный код (код функций, в общем случае, может быть и в другом файле), а также даст возможность описывать, что именно позволяют выводить данные колонки.
  2. Добавить в macroapi_manual.*.chm соответствующие изменения в описание и пример ContentColumns.
  3. Хотелось бы, конечно, иметь возможность получать стандартным образом список имён колонок, которые обрабатывает данный скрипт. Но, похоже, для этого надо пилить АПИ самого Фар-а. Я за это точно не возьмусь.
User avatar
John Doe
Бюрократ
Posts: 13847
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 428 times
Contact:

LuaFAR — библиотека для создания плагинов на языке Lua

Post by John Doe »

Edit: считаю предложенные изменения полезными, т.к. они способствуют консистентности.

1. Надо бы посмотреть где ещё не хватает информации об исходном файле, и описания.
2. Вероятно не помешает id, возможно что-то ещё.
Last edited by John Doe on Fri 11 Jun, 2021 09:26, edited 1 time in total.
https://t.me/FarManager — Telegram чат
User avatar
John Doe
Бюрократ
Posts: 13847
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 428 times
Contact:

LuaMacro — Lua как язык макросов

Post by John Doe »

IgorZ wrote: Fri 11 Jun, 2021 05:29 Добавить в macroapi_manual.*.chm соответствующие изменения в описание и пример ContentColumns.
А вот тут совсем не уверен: кажется преждевременным документировать поля, которые невозможно никак получить (через оф. апи).

Возможно стоит начать с https://bugs.farmanager.com/view.php?id=3536
https://t.me/FarManager — Telegram чат
IgorZ
Posts: 790
Joined: Wed 13 Jul, 2011 03:32
Has thanked: 15 times
Been thanked: 93 times

LuaMacro — Lua как язык макросов

Post by IgorZ »

John Doe wrote: Fri 11 Jun, 2021 09:01 1. Надо бы посмотреть где ещё не хватает информации об исходном файле, и описания.
Везде, кроме колонок, есть.
John Doe wrote: Fri 11 Jun, 2021 09:01 2. Вероятно не помешает id, возможно что-то ещё.
Согласен. Кроме того, он бы и в префиксах не помешал.
John Doe wrote:
IgorZ wrote: Fri 11 Jun, 2021 05:29 Добавить в macroapi_manual.*.chm соответствующие изменения в описание и пример ContentColumns.
А вот тут совсем не уверен: кажется преждевременным документировать поля, которые невозможно никак получить (через оф. апи).
Если поддержка description будет добавлена в колонки, то что преждевременного будет в строке

Code: Select all

description  = "описание";                               -- string (опциональное поле)
в разделе Контент-колонки и

Code: Select all

description  = "Вывод первых 512 символов файла";
в его подразделе Пример применения?
John Doe wrote: Возможно стоит начать с https://bugs.farmanager.com/view.php?id=3536
Ответил там. Но, всё же, стоит сначала доработать колонки, чтобы там два раза не переделывать.
User avatar
John Doe
Бюрократ
Posts: 13847
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 428 times
Contact:

LuaMacro — Lua как язык макросов

Post by John Doe »

IgorZ wrote: Tue 15 Jun, 2021 06:38 Если поддержка description будет добавлена в колонки, то что преждевременного будет[...]
Всё что пользователь не может увидеть в интерфейсе или использовать через апи - это "особенности реализации", описывать которые бессмысленно.
IgorZ wrote: Tue 15 Jun, 2021 06:38 Но, всё же, стоит сначала доработать колонки, чтобы там два раза не переделывать.
"Доработать" это очень громко сказано, применительно к предложенным тривиальным изменениям.
Если изменения колонок, наряду с прочими, рассматривать как подзадачу 3536, то два раза не понадобится.
Last edited by John Doe on Tue 15 Jun, 2021 08:47, edited 1 time in total.
https://t.me/FarManager — Telegram чат
IgorZ
Posts: 790
Joined: Wed 13 Jul, 2011 03:32
Has thanked: 15 times
Been thanked: 93 times

LuaMacro — Lua как язык макросов

Post by IgorZ »

John Doe wrote: Всё что пользователь не может увидеть в интерфейсе или использовать через апи - это "особенности реализации", описывать которые бессмысленно.
То есть, описание поля description в разделе справки Добавление префиксов командной строки
- бессмысленно?
John Doe wrote: "Доработать" это очень громко сказано, применительно к предложенным тривиальным изменениям.
Если изменения колонок, наряду с прочими, рассматривать как подзадачу 3536, то два раза не понадобится.
3536 сделаю. Думаю, завтра выложу вариант.
User avatar
John Doe
Бюрократ
Posts: 13847
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 428 times
Contact:

LuaMacro — Lua как язык макросов

Post by John Doe »

IgorZ wrote: Tue 15 Jun, 2021 10:25 То есть, описание поля description в разделе справки Добавление префиксов командной строки
- бессмысленно?
Ну.. найти можно. Как комментарий.
https://t.me/FarManager — Telegram чат
IgorZ
Posts: 790
Joined: Wed 13 Jul, 2011 03:32
Has thanked: 15 times
Been thanked: 93 times

LuaMacro — Lua как язык макросов

Post by IgorZ »

IgorZ wrote: Tue 15 Jun, 2021 10:25 3536 сделаю. Думаю, завтра выложу вариант.
Сделал и выложил на Мантисе
User avatar
John Doe
Бюрократ
Posts: 13847
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 428 times
Contact:

LuaMacro — Lua как язык макросов

Post by John Doe »

Что если вместо GetAllScriptsCopy предоставить итератор.
И предлагаю небольшое упрощение: параметр type не таблица, а строка, т.е. тип можно будет запросить один за раз.

Примерно так (нуждается в тестировании):

А пользоваться так:

Code: Select all

local dump = require"moon".dump
for m in mf.EnumScripts('Event') do
  far.Message(dump(m))
end
Edit: https://github.com/FarGroup/FarManager/pull/420
Last edited by John Doe on Sat 19 Jun, 2021 15:45, edited 1 time in total.
https://t.me/FarManager — Telegram чат
IgorZ
Posts: 790
Joined: Wed 13 Jul, 2011 03:32
Has thanked: 15 times
Been thanked: 93 times

LuaMacro — Lua как язык макросов

Post by IgorZ »

Почему-то сообщения об ответах то приходят на почту, то нет. Обнаружил ответ только сегодня. Потестирую.

Раньше не пользовался coroutine, так что плохо представляю, что именно даст их применение здесь. Параллельное одновременное копирование всех элементов таблицы (с соответствующим ускорением процесса), или я неправильно понял?
User avatar
John Doe
Бюрократ
Posts: 13847
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 428 times
Contact:

LuaMacro — Lua как язык макросов

Post by John Doe »

IgorZ wrote: Fri 18 Jun, 2021 06:23 так что плохо представляю, что именно даст их применение здесь
Корутина тут используется исключительно для простого создания итератора.
Параллельности не придаёт.
https://t.me/FarManager — Telegram чат
User avatar
buniak_a_h
Posts: 4259
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 644 times
Contact:

LuaMacro — Lua как язык макросов

Post by buniak_a_h »

John Doe, я с корутинами тоже незнаком, но в описании языка написано:
coroutine.yield (···)
Приостанавливает выполнение вызываемой подпрограммы. coroutine не может быть выполняющейся C функцией, метаметодом или итератором(выделено мной - BAX). <…>.
Или в данном случае под "итератором" понимается что-то другое?
User avatar
John Doe
Бюрократ
Posts: 13847
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 428 times
Contact:

LuaMacro — Lua как язык макросов

Post by John Doe »

https://t.me/FarManager — Telegram чат
User avatar
citRiks
Posts: 1733
Joined: Fri 25 Oct, 2019 18:18
Has thanked: 610 times
Been thanked: 102 times

LuaMacro — Lua как язык макросов

Post by citRiks »

buniak_a_h, в довесок:
multithreading - Would using coroutines improve my code?
https://softwareengineering.stackexchan ... ve-my-code
... или если совсем вкратце:
"если можно обойтись без корутин, значит надо обойтись без корутин"
При этом корутины там где они нужны, это давняя и сильная сторона Луа, и даже преимущсетво перед многими другими скрипт-языками где все не так просто с корутинами как в Луа
User avatar
John Doe
Бюрократ
Posts: 13847
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 428 times
Contact:

LuaMacro — Lua как язык макросов

Post by John Doe »

citRiks wrote: Sat 19 Jun, 2021 08:36 "если можно обойтись без корутин, значит надо обойтись без корутин"
Справедливо, и в нашем случае как раз обойтись легко. Исправил.

Но хотелось бы обсудить по существу.
  1. Сама идея предоставиить апи в виде итератора
    + Простое апи, удобное для использования на практике. Простая реализация.
    - Это пока единственное место c итератором.
    ? Альтернативу вижу пока одну - формировать и возвращать таблицу со списком скриптов (мне не нравится)
  2. Имя функции (EnumScripts)
    Другие варианты?
  3. Возвращаемые значения (macro, index)
    Порядок мог бы быть обратным (как pairs/ipairs), но на практике индекс не особо полезен
    Нужно ли его вообще возвращать?
https://t.me/FarManager — Telegram чат
Post Reply

Return to “Обсуждение макросов”