Возможность ввода мультистрочных команд

Хотите говорить о Far и не знаете, куда обратиться?
gene.pavlovsky
Posts: 157
Joined: Tue 11 Aug, 2015 16:53
Has thanked: 11 times

Возможность ввода мультистрочных команд

Postby gene.pavlovsky » Tue 28 Jun, 2016 23:22

Как бы получить возможность вводить команды на более, чем одну строчку?
Например, в bash в конце строчки можно поставить \, в cmd можно поставить ^; нажать на Enter и можно продолжать вводить команду на следующей строке. В обоих, правда, нет возможности вернуться на уже введённую строчку.
Думаю, в Фаре мог бы быть удобный интерфейс для ввода многострочных команд, с возможностью "гулять" по команде вверх и вниз.
Есть такие планы, идеи по реализации?

User avatar
zg
zero-gravity
Posts: 5187
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 40 times
Contact:

Возможность ввода мультистрочных команд

Postby zg » Wed 29 Jun, 2016 08:22

макрос, открывающий редактор с текущим содержимым комстроки и устанавливающий её после закрытия пишется легко.

gene.pavlovsky
Posts: 157
Joined: Tue 11 Aug, 2015 16:53
Has thanked: 11 times

Возможность ввода мультистрочных команд

Postby gene.pavlovsky » Wed 29 Jun, 2016 12:18

zg wrote:макрос, открывающий редактор с текущим содержимым комстроки и устанавливающий её после закрытия пишется легко.
Пожалуй, это может быть наиболее простым, и вполне удобным решением. В этом случае, правда, потеряется auto-completion путей и переменных окружения. Было бы здорово, если бы редактор мог запускаться в режиме редактирования командной строки (в контексте текущего пути) - с поддержкой auto-completion и синтаксической подсветки.
Я более-менее разобрался с lua, но не настолько сведущ в написании Фар-макросов, чтобы для меня это было "легко". Получить/установить комстроку я могу, а как вызвать редактор с текущим содержимым, в выбранном режиме синтакс подсветки (скажем batch file если ComSpec == cmd, или bash script если у меня ComSpec == bash), а потом получить результат этого редактирования?
Для теста написал макрос, заменяющий в ком строке символы ; на \n.

echo 1; echo 2 превращается в echo 1◙ echo 2. В истории команд выглядит так же. Было бы здорово, если Фар отображал бы этот символ как U+240A, правда для этого надо будет его отображать из какого-то другого шрифта. Но в целом это вполне юзабельно. Полагаю, если запустить макрос опять, в редакторе всё будет выглядит так же, как и было при первом редактировании (т.е. с сохранением многострочности и индентов).

Одно но - попытка выполнить команду через cmd не приводит к успеху - cmd выполняет только echo 1. Вот как с этим быть, неясно. Добавлять в макросе символ & перед каждым переводом строки?
Я свой wrapper для использования Far с bash только что доработал, многострочные команды выполняются. В принципе мне этого достаточно, осталось дописать макрос.
Last edited by HaRT on Wed 29 Jun, 2016 12:28, edited 1 time in total.
Reason: [spoiler]

User avatar
zg
zero-gravity
Posts: 5187
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 40 times
Contact:

Возможность ввода мультистрочных команд

Postby zg » Wed 29 Jun, 2016 14:06

gene.pavlovsky wrote:В этом случае, правда, потеряется auto-completion путей и переменных окружения.
текущие макровозможности позволяют реализовать и такое. возможно не так просто, но позволяют.

gene.pavlovsky
Posts: 157
Joined: Tue 11 Aug, 2015 16:53
Has thanked: 11 times

Возможность ввода мультистрочных команд

Postby gene.pavlovsky » Wed 29 Jun, 2016 14:35

Надо начать с малого. Как же всё-таки открыть редактор с нужным текстом (и установкой языка для синтакс-й подсветки), а потом получить результат редактирования? Через временный файл (если да, то как лучше выбрать его имя и местоположение)?

User avatar
HaRT
Moderator
Posts: 7884
Joined: Tue 30 Aug, 2005 17:21
Location: Санкт-Петербург
Has thanked: 62 times
Been thanked: 93 times

Возможность ввода мультистрочных команд

Postby HaRT » Wed 29 Jun, 2016 14:41

gene.pavlovsky, посмотритеx Edit из DialogTools — там код на Си, но аналогичный подход можно применить и на Луа.
Last edited by HaRT on Wed 29 Jun, 2016 14:43, edited 1 time in total.
Reason: Исправлена ссылка
Фар есть инструмент, а не нянька. © 2009 DrKnS

Shmuel
Posts: 4911
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 11 times
Been thanked: 118 times

Возможность ввода мультистрочных команд

Postby Shmuel » Wed 29 Jun, 2016 14:43

gene.pavlovsky wrote:Source of the post Как же всё-таки открыть редактор с нужным текстом (и установкой языка для синтакс-й подсветки), а потом получить результат редактирования?
Готовый код можете взять из postmacro.lua. Там, правда, не комстрока, а поле диалога обрабатывается, но это легко подправить для комстроки.

gene.pavlovsky
Posts: 157
Joined: Tue 11 Aug, 2015 16:53
Has thanked: 11 times

Возможность ввода мультистрочных команд

Postby gene.pavlovsky » Sat 02 Jul, 2016 10:33

Shmuel wrote:Готовый код можете взять из postmacro.lua. Там, правда, не комстрока, а поле диалога обрабатывается, но это легко подправить для комстроки.
Прекрасно! То, что доктор прописал. Теперь макрос делает всё, что нужно:

Попутно такой вопрос, что это за зелёная буква P в верхнем левом углу? Знак того, что редактор вызван из плаг-ина?
https://i.imgur.com/satk1MU.png

Кстати, а для чего вы обычно используете свой postmacro? Примеры из ежедневной жизни.

User avatar
zg
zero-gravity
Posts: 5187
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 40 times
Contact:

Возможность ввода мультистрочных команд

Postby zg » Sat 02 Jul, 2016 11:34

зелёная P - индикатор исполнения макроса.

gene.pavlovsky
Posts: 157
Joined: Tue 11 Aug, 2015 16:53
Has thanked: 11 times

Возможность ввода мультистрочных команд

Postby gene.pavlovsky » Sat 02 Jul, 2016 12:20

zg wrote:зелёная P - индикатор исполнения макроса.
Понял. На первый взгляд я подумал, что это буква диска (у меня R:\tmp) :)


Return to “Обсуждение Far Manager”

Who is online

Users browsing this forum: No registered users and 3 guests