Как установить формат приглашения командной строки из макроса?

Столкнулись с проблемой в использовании макросов? Здесь можно получить помощь.
fps
Posts: 267
Joined: Wed 20 Apr, 2005 06:39
Has thanked: 27 times
Been thanked: 14 times

Как установить формат приглашения командной строки из макроса?

Post by fps »

Как установить формат приглашения командной строки из макроса?

Как его получить нашел: Far.GetConfig("Cmdline.PromptFormat")
Но нет команды Far.SetConfig().
Last edited by HaRT on Tue 17 Jul, 2018 12:42, edited 1 time in total.
Reason: Убрано спец. оформление Темы (Значок)
Shmuel
Posts: 6819
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 528 times

Как установить формат приглашения командной строки из макроса?

Post by Shmuel »

fps wrote: Tue 17 Jul, 2018 12:29 нет команды Far.SetConfig()
Её нет, поскольку среди разработчиков есть мнение, что это была бы опасная фича.
Конкретно я полагаю, что не более опасная, чем многое другое, но уважаю другие мнения.

Есть ещё одна важная причина - недокументированность большинства установок, что позволяет делать изменения и не бояться, что поломаются плагины/макросы.
Last edited by Shmuel on Tue 17 Jul, 2018 13:41, edited 1 time in total.
fps
Posts: 267
Joined: Wed 20 Apr, 2005 06:39
Has thanked: 27 times
Been thanked: 14 times

Как установить формат приглашения командной строки из макроса?

Post by fps »

Shmuel, понятно.
А другим способом можно это как-то сделать, кроме как Keys("F9 O и так далее")?
Интересует изменение приглашения текущей сессии (не глобальное)
Shmuel
Posts: 6819
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 528 times

Как установить формат приглашения командной строки из макроса?

Post by Shmuel »

В cmd.exe есть команда prompt. Как сделать в Фаре - не знаю, может кто другой подскажет.
User avatar
DrKnS
Posts: 6114
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 12 times
Been thanked: 426 times

Как установить формат приглашения командной строки из макроса?

Post by DrKnS »

В промпте поддерживаются переменные окружения. Можно поставить туда какую-нибудь %myvar% и менять её динамически.
fps
Posts: 267
Joined: Wed 20 Apr, 2005 06:39
Has thanked: 27 times
Been thanked: 14 times

Как установить формат приглашения командной строки из макроса?

Post by fps »

DrKnS, спасибо такой способ подошел бы. Но в случае, когда myvar имеет пустое значение, FAR вставляет в приглашение её название, а не значение.
Баг?
fps
Posts: 267
Joined: Wed 20 Apr, 2005 06:39
Has thanked: 27 times
Been thanked: 14 times

Как установить формат приглашения командной строки из макроса?

Post by fps »

В заголовке окна так же - туда можно прописать %myvar%, но если переменная не задана, то в заголовок так и выведется "%myvar%".
Похоже что это поведение так и задумано. Для отладки возможно это и удобно.
Но как его предполагалось пользоваться?
На мой взгляд, нелогично, что в зависимости от значения переменной выводится то её значение, то её название.
fps
Posts: 267
Joined: Wed 20 Apr, 2005 06:39
Has thanked: 27 times
Been thanked: 14 times

Как установить формат приглашения командной строки из макроса?

Post by fps »

Как-то можно настроить, чтобы пустое значение переменной тоже подставлялось в приглашение и/или заголовок окна?
IgorZ
Posts: 790
Joined: Wed 13 Jul, 2011 03:32
Has thanked: 15 times
Been thanked: 93 times

Как установить формат приглашения командной строки из макроса?

Post by IgorZ »

На всякий случай укажу ещё один способ.
  1. Скачиваем и ставим sqlite3.dll.
  2. Скачиваем и ставим модуль ljsqlite3.
  3. Простейший пример использования.
fps
Posts: 267
Joined: Wed 20 Apr, 2005 06:39
Has thanked: 27 times
Been thanked: 14 times

Как установить формат приглашения командной строки из макроса?

Post by fps »

IgorZ, этот ещё один способ вроде несколько про другое.
Вопрос был про изменение приглашения текущей сессии (не глобальное). Правка базы sqlite тут, насколько я понимаю, не поможет.

Вариант с использованием системной переменной меня устроил бы на 100%, если бы не описанное выше странное отображение пустых значений.
Shmuel
Posts: 6819
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 528 times

Как установить формат приглашения командной строки из макроса?

Post by Shmuel »

Покуда "фича" со вставкой имени переменной окружения существует, вы можете использовать компромиссный вариант, например:

1. Все ваши приглашения должны иметь в конце символ > (обозначаемый как $g.
2. Все варианты данной переменной окружения должны иметь в конце $g.
3. Для того варианта, когда переменная у вас сейчас пустая, она будет содержать только $g.

Это только пример-иллюстрация, его можно модифицировать с учётом ваших требований (которые мне в полном объёме не известны).
User avatar
DrKnS
Posts: 6114
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 12 times
Been thanked: 426 times

Как установить формат приглашения командной строки из макроса?

Post by DrKnS »

fps wrote: Fri 20 Jul, 2018 08:36странное отображение пустых значений
Чем оно странное?
https://msdn.microsoft.com/en-us/library/windows/desktop/ms724265.aspx wrote:If the name is not found, the %variableName% portion is left unexpanded.
Shmuel
Posts: 6819
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 528 times

Как установить формат приглашения командной строки из макроса?

Post by Shmuel »

DrKnS, "not found" это не то же самое, что переменная окружения, значение которой равно пустой строке.
fps wrote: Wed 18 Jul, 2018 03:19 Но в случае, когда myvar имеет пустое значение, FAR вставляет в приглашение её название, а не значение.
User avatar
DrKnS
Posts: 6114
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 12 times
Been thanked: 426 times

Как установить формат приглашения командной строки из макроса?

Post by DrKnS »

Shmuel, спасибо, я как бы в курсе.

На всякий случай:
set foo=bar - присвоить переменной foo значение bar
set foo= - удалить переменную foo
lua:win.SetEnv("foo", "") - присвоить переменной foo пустое значение.
fps
Posts: 267
Joined: Wed 20 Apr, 2005 06:39
Has thanked: 27 times
Been thanked: 14 times

Как установить формат приглашения командной строки из макроса?

Post by fps »

DrKnS wrote: Fri 20 Jul, 2018 10:45 set foo= - удалить переменную foo
lua:win.SetEnv("foo", "") - присвоить переменной foo пустое значение.
Странность на мой взгляд в том, что строка %foo% будет подставлена не только в первом но и во втором случае.
Наверное это поведение логично и как-то объяснимо, но ни в одном из известных мне языков при обращении к переменной мы не получаем ее имя в качестве её значения при условии если её значение равно пустой строке.
Я не могу представить себе реальной пользы от такого поведения (кроме как для отладки).
Last edited by fps on Fri 20 Jul, 2018 11:09, edited 3 times in total.
Post Reply

Return to “Нужна помощь”