SaveAndRun - запуск команд в редакторе
SaveAndRun - запуск команд в редакторе
Скрипт читает файл конфигурации и по нажатию клавиши выполняет заданную в конфиге команду, в зависимости от расширения редактируемого файла. Результат показывает пользователю и переходит к строке с ошибкой (если она есть). Выражение для парсинга номера строки и колонки с ошибкой тоже задается в конфиге.
Также есть возможность настроить и вызвать форматировщик для редактируемого файла.
Дано несколько примеров настроек для разных языков (lua, python, pascal, cmd, powershell, ahk, markdown).
Перекодировка вывода программы в случае необходимости решается через вызов внешней программы iconv (настраивается в макросе, рассматривать как fallback, поскольку большинство современных программ умеют выводить в UTF-8).
Горячие клавиши и пути можно назначить, редактируя настройки в начале скрипта.
Скачать последнюю версию: https://github.com/elementiss/farmanager-dea
Подробнее в readme.
Также есть возможность настроить и вызвать форматировщик для редактируемого файла.
Дано несколько примеров настроек для разных языков (lua, python, pascal, cmd, powershell, ahk, markdown).
Перекодировка вывода программы в случае необходимости решается через вызов внешней программы iconv (настраивается в макросе, рассматривать как fallback, поскольку большинство современных программ умеют выводить в UTF-8).
Горячие клавиши и пути можно назначить, редактируя настройки в начале скрипта.
Скачать последнюю версию: https://github.com/elementiss/farmanager-dea
Подробнее в readme.
Last edited by phidel on Fri 02 May, 2025 12:35, edited 8 times in total.
- John Doe
- Бюрократ
- Posts: 14330
- Joined: Wed 27 Apr, 2005 20:42
- Location: github.com/FarManagerLegacy
- Has thanked: 80 times
- Been thanked: 473 times
- Contact:
Piper — запуск консольных программ с передачей input и удобным доступом к output
А если chcp 65001phidel wrote: Sat 19 Apr, 2025 10:37 если в пути к редактируемому файлу есть кириллица, то она выводится клякозябрами,
https://t.me/FarManager — Telegram чат
Piper — запуск консольных программ с передачей input и удобным доступом к output
John Doe, а куда его вставить?
- John Doe
- Бюрократ
- Posts: 14330
- Joined: Wed 27 Apr, 2005 20:42
- Location: github.com/FarManagerLegacy
- Has thanked: 80 times
- Been thanked: 473 times
- Contact:
Piper — запуск консольных программ с передачей input и удобным доступом к output
Запустить в командной строке
https://t.me/FarManager — Telegram чат
Piper — запуск консольных программ с передачей input и удобным доступом к output
не помогает. Вот минимальный пример для воспроизведения, если кто-то захочет помочь - при нажатии в редакторе shift-enter начинаются проблемы с кодировкой
смысл в том, чтобы находясь в редакторе выполнить команду, не выходя из него. из командной строки естественно работает
смысл в том, чтобы находясь в редакторе выполнить команду, не выходя из него. из командной строки естественно работает
- Attachments
-
- test.zip
- (7.11 KiB) Downloaded 37 times
- John Doe
- Бюрократ
- Posts: 14330
- Joined: Wed 27 Apr, 2005 20:42
- Location: github.com/FarManagerLegacy
- Has thanked: 80 times
- Been thanked: 473 times
- Contact:
Piper — запуск консольных программ с передачей input и удобным доступом к output
Вот такой вывод у меня: cmd выводит ????, а py - utf-8.
Code: Select all
╔══════════════════════════ Script Output ══════════════════════════╗
║ Script exited with code: 1 ║
║ C:\tmp\??????>chcp 65001 ║
║ Active code page: 65001 ║
║ C:\tmp\пример>py "C:\tmp\пример\test-with-error.py" ║
║ Hello from python! ║
║ Traceback (most recent call last): ║
║ 1 File "C:\tmp\пример\test-with-error.py", line 4, in <module> ║
║ print(f"Sum: {x + z}") ║
║ ^ ║
║ NameError: name 'z' is not defined ║
╚══════════════════ Enter: Go to line, Esc: Close ══════════════════╝
https://t.me/FarManager — Telegram чат
Piper — запуск консольных программ с передачей input и удобным доступом к output
у меня вываливается с ошибкой invalid UTF-8 code в строке gsub, gmatch
- John Doe
- Бюрократ
- Posts: 14330
- Joined: Wed 27 Apr, 2005 20:42
- Location: github.com/FarManagerLegacy
- Has thanked: 80 times
- Been thanked: 473 times
- Contact:
Piper — запуск консольных программ с передачей input и удобным доступом к output
Чтобы не вываливалось можно проверить :isvalid().phidel wrote: Sun 20 Apr, 2025 12:43 у меня вываливается с ошибкой invalid UTF-8 code в строке gsub, gmatch
Что за ОС у вас?
Кстати ещё рекомендую
set PYTHONUTF8=1
, иначе вывод такой:
Code: Select all
1 File "C:\tmp\\u043f\u0440\u0438\u043c\u0435\u0440\test-with-error.py", line 4, in <module>
https://t.me/FarManager — Telegram чат
Piper — запуск консольных программ с передачей input и удобным доступом к output
Windows 11, русская.
Вообще можно избавиться от gsub, тогда рисует клякозябры и нотки в конце строк. В принципе, меня и так устраивает, экономит массу теледвижений, а папки можно и латиницей называть
- John Doe
- Бюрократ
- Posts: 14330
- Joined: Wed 27 Apr, 2005 20:42
- Location: github.com/FarManagerLegacy
- Has thanked: 80 times
- Been thanked: 473 times
- Contact:
Piper — запуск консольных программ с передачей input и удобным доступом к output
Проблема с pas, py, чем ещё?
Каждый случай отдельно надо рассматривать, но это точно не проблема piper.
И если кодировка заведомо Ansi, то перед дальнейшей обработкой её необходимо перекодировать с помощью соответствующих функций из win.*
Если речь о выводе на экран, и на этом всё, то может быть.
Но если так рассуждать, то и piper незачем: запуская скрипты из редактора вместо перехвата из вывода, можно предоставить им свободу выводить всё на экране "под панелями".
Другое дело, если вы хотите перехватить ошибку, чтобы позиционировать редактор на нужное место (для lua у меня есть специальные макросы - MacroCheck, LuaCheck).
https://t.me/FarManager — Telegram чат
- John Doe
- Бюрократ
- Posts: 14330
- Joined: Wed 27 Apr, 2005 20:42
- Location: github.com/FarManagerLegacy
- Has thanked: 80 times
- Been thanked: 473 times
- Contact:
Piper — запуск консольных программ с передачей input и удобным доступом к output
Кстати я сделал бы именно так.John Doe wrote: Sun 20 Apr, 2025 13:11 можно предоставить им свободу выводить всё на экране "под панелями".
А для позиционирования в редакторе (при ошибке) можно даже отдельный макрос, читающий вывод с экрана.
win.system
кстати возвращает ExitCode.https://t.me/FarManager — Telegram чат
Piper — запуск консольных программ с передачей input и удобным доступом к output
спотыкаются на gsub: lua, python, pascal, powershell
ahk работает, так как имеет ключи для настройки кодировки вывода
cmd работает, так как в случае ошибки не выводит путь к исходному файлу
Не совсем понял - а как мне прочитать текст ошибки - выйти из редактора?
Но в целом это не моя цель. Мне нужен универсальный инструмент: я работаю в редакторе фара (оказалось, что не могу найти ему замену для текстов и небольших скриптов - перепробовал десятки). По нажатию клавиши документ сохраняется и происходит некое действие - отправка в репозиторий, конвертация маркдаун в html и отображение результата в браузере и т.п. В случае ошибки хочу получить обратную связь прямо в редакторе, не прерывая полет мысли (когда надо много написать в краткие сроки, это сильно помогает). Если ошибки не было, меня вообще не волнует что там на фоне происходит.
ahk работает, так как имеет ключи для настройки кодировки вывода
cmd работает, так как в случае ошибки не выводит путь к исходному файлу
John Doe wrote: Sun 20 Apr, 2025 13:19 А для позиционирования в редакторе (при ошибке) можно даже отдельный макрос, читающий вывод с экрана.
Не совсем понял - а как мне прочитать текст ошибки - выйти из редактора?
Но в целом это не моя цель. Мне нужен универсальный инструмент: я работаю в редакторе фара (оказалось, что не могу найти ему замену для текстов и небольших скриптов - перепробовал десятки). По нажатию клавиши документ сохраняется и происходит некое действие - отправка в репозиторий, конвертация маркдаун в html и отображение результата в браузере и т.п. В случае ошибки хочу получить обратную связь прямо в редакторе, не прерывая полет мысли (когда надо много написать в краткие сроки, это сильно помогает). Если ошибки не было, меня вообще не волнует что там на фоне происходит.
Last edited by phidel on Sun 20 Apr, 2025 13:30, edited 1 time in total.
- John Doe
- Бюрократ
- Posts: 14330
- Joined: Wed 27 Apr, 2005 20:42
- Location: github.com/FarManagerLegacy
- Has thanked: 80 times
- Been thanked: 473 times
- Contact:
Piper — запуск консольных программ с передачей input и удобным доступом к output
Пользовательский экран доступен отовсюду через panel.GetUserScreen.
Тогда подход с piper предпочтительнее, всё верно.phidel wrote: Sun 20 Apr, 2025 13:29 Если ошибки не было, меня вообще не волнует что там на фоне происходит.
Но piper тут тоже может быть избыточным: он даёт больше контроля над обработкой вывода, и возможность одновременно подать данные на стандартный ввод.
Если вы просто исполняете скрипт, то может быть достаточно обычного
io.popen
.https://t.me/FarManager — Telegram чат