SaveAndRun - запуск команд в редакторе

Здесь обсуждается всё, что касается макросов.
User avatar
John Doe
Бюрократ
Posts: 14267
Joined: Wed 27 Apr, 2005 20:42
Location: github.com/FarManagerLegacy
Has thanked: 80 times
Been thanked: 468 times
Contact:

Piper — запуск консольных программ с передачей input и удобным доступом к output

Post by John Doe »

Latest post of the previous page:

phidel wrote: Sun 20 Apr, 2025 13:29 а как мне прочитать текст ошибки - выйти из редактора?
Пользовательский экран доступен отовсюду через panel.GetUserScreen.
phidel wrote: Sun 20 Apr, 2025 13:29 Если ошибки не было, меня вообще не волнует что там на фоне происходит.
Тогда подход с piper предпочтительнее, всё верно.
Но piper тут тоже может быть избыточным: он даёт больше контроля над обработкой вывода, и возможность одновременно подать данные на стандартный ввод.
Если вы просто исполняете скрипт, то может быть достаточно обычного io.popen.
https://t.me/FarManager — Telegram чат
User avatar
phidel
Posts: 41
Joined: Wed 29 Jun, 2011 17:21
Has thanked: 17 times

Piper — запуск консольных программ с передачей input и удобным доступом к output

Post by phidel »

John Doe wrote: Sun 20 Apr, 2025 13:46 Пользовательский экран доступен отовсюду через panel.GetUserScreen.
круто, не знал, поэкспериментирую с этим
User avatar
John Doe
Бюрократ
Posts: 14267
Joined: Wed 27 Apr, 2005 20:42
Location: github.com/FarManagerLegacy
Has thanked: 80 times
Been thanked: 468 times
Contact:

Piper — запуск консольных программ с передачей input и удобным доступом к output

Post by John Doe »

Сделал пару экспериментальных изменений.
  1. Можно указать в опциях свою функцию toUtf8.
  2. Или можно использовать Utf-16 вывод:

Code: Select all

[py]
run = cmd /w /c "run_python.cmd $file"
Обратите внимание на ключ /w.
https://t.me/FarManager — Telegram чат
User avatar
phidel
Posts: 41
Joined: Wed 29 Jun, 2011 17:21
Has thanked: 17 times

Piper — запуск консольных программ с передачей input и удобным доступом к output

Post by phidel »

John Doe wrote: Sun 20 Apr, 2025 13:19 win.system кстати возвращает ExitCode.
сделал второй вариант через win.system, что решило все проблемы. добавил сюда
User avatar
John Doe
Бюрократ
Posts: 14267
Joined: Wed 27 Apr, 2005 20:42
Location: github.com/FarManagerLegacy
Has thanked: 80 times
Been thanked: 468 times
Contact:

Piper — запуск консольных программ с передачей input и удобным доступом к output

Post by John Doe »

phidel wrote: Sat 19 Apr, 2025 10:37 Перекодировка в случае необходимости решается через вызов внешней программы iconv (конфигурируется в конфиге).
Зачем же так, всё ведь из коробки уже есть
https://t.me/FarManager — Telegram чат
User avatar
phidel
Posts: 41
Joined: Wed 29 Jun, 2011 17:21
Has thanked: 17 times

Piper — запуск консольных программ с передачей input и удобным доступом к output

Post by phidel »

John Doe wrote: Tue 22 Apr, 2025 19:27 Зачем же так, всё ведь из коробки уже есть
возможно, но не нашел ansi -> utf-8. Но мне лично не надо - все современные программы выводят в utf-8, включая питон (узнал об этом благодаря вашей подсказке). В случае необходиомсти желающие могут вместо вызова iconv подставить вызов функции, делов на 2 минуты
Shmuel
Posts: 7011
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 42 times
Been thanked: 569 times

Piper — запуск консольных программ с передачей input и удобным доступом к output

Post by Shmuel »

не нашел ansi -> utf-8
win.MultiByteToWideChar, затем win.Utf16ToUtf8
User avatar
phidel
Posts: 41
Joined: Wed 29 Jun, 2011 17:21
Has thanked: 17 times

SaveAndRun

Post by phidel »

всегда казалось, что 1251 — это однобайтовая кодировка, но спорить не буду
Shmuel
Posts: 7011
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 42 times
Been thanked: 569 times

SaveAndRun

Post by Shmuel »

phidel wrote: Tue 22 Apr, 2025 19:57 всегда казалось, что 1251 — это однобайтовая кодировка
Безусловно однобайтовая, но MultiByteToWideChar работает и с однобайтовыми.
User avatar
phidel
Posts: 41
Joined: Wed 29 Jun, 2011 17:21
Has thanked: 17 times

SaveAndRun

Post by phidel »

Добавлена возможность вызвать форматировщик.
topmo3
Posts: 158
Joined: Mon 21 Aug, 2006 15:36
Has thanked: 49 times
Been thanked: 8 times

SaveAndRun - запуск команд в редакторе

Post by topmo3 »

судя по доке

Code: Select all

debug.getinfo(1).short_src
выдает не полное имя, а сокращенное:

Code: Select all

short_src - a shorter version of "source" (up to 60 characters), useful for error messages
типа "...g\Far Manager\Profile\Macros\scripts\Editor.RunPiper.lua"
поэтому настройки в папке скрипта не работают если путь к скрипту длиннее 60 символов
наверное нужно брать

Code: Select all

debug.getinfo(1).source

Code: Select all

source - where the function was defined. If in a file, it is the file name prefixed by "@"
и отрезать @

Code: Select all

local scriptDir = debug.getinfo(1, "S").source:sub(2):match("^(.*[\\/])") or ""
Last edited by topmo3 on Thu 01 May, 2025 15:45, edited 1 time in total.
User avatar
phidel
Posts: 41
Joined: Wed 29 Jun, 2011 17:21
Has thanked: 17 times

SaveAndRun - запуск команд в редакторе

Post by phidel »

topmo3, спасибо, исправил

Выложил сопутствующий скрипт для создания бекапов редактируемого файла при сохранении, с поддержкой ротации (ссылка на репозиторий в первом сообщении).
User avatar
phidel
Posts: 41
Joined: Wed 29 Jun, 2011 17:21
Has thanked: 17 times

SaveAndRun - запуск команд в редакторе

Post by phidel »

Добавлена возможность настройки линтинга.
Post Reply

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