Кастомная строка приглашения (prompt)

Хотите говорить о Far и не знаете, куда обратиться?
xeno.by
Posts: 14
Joined: Sun 16 Oct, 2011 19:49

Кастомная строка приглашения (prompt)

Post by xeno.by » Fri 13 Apr, 2012 00:14

Возможно ли при помощи Far кастомизировать строку приглашения консоли? (например, показывать текущий бранч в гите)
Last edited by HaRT on Sun 22 Apr, 2012 20:33, edited 1 time in total.
Reason: Дополнен заголовок Темы

User avatar
cmd.exe
Posts: 333
Joined: Fri 16 Apr, 2010 18:26
Location: Нижний Новгород
Has thanked: 170 times
Been thanked: 5 times
Contact:

Re: Кастомная строка приглашения

Post by cmd.exe » Fri 13 Apr, 2012 01:14

Code: Select all

Far Manager, version 3.0 (build 2605) x86
Copyright © 1996-2000 Eugene Roshal, Copyright © 2000-2012 Far Group 
причём тут git branch я понять пока не могу, через cmd/bat можно запускать любые комманды...
Самый простой вариант:
Написать bat который запускает FAR.exe но при этом после запуска FAR пишет n строчек символов(у меня их чуть больше 80) для того, что-бы очистить консоль...
Самый средний вариант:
Написать програмульку использующюю вывод текста на консоль, тем самым сдвигая копирайты FAR за приделы окна, а дальше выводить что вам нравится...
Самый злостный вариант:
Обычными способами нельзя, но если сильно захотеть, и нарушить лицензию BSD, то возможно, поправив либо в исходниках, либо PE, но правильным редактором...
I've been using Vim for about 2 years now, mostly because I can't figure out how to exit it. (c) I Am Devloper
I know nothing except the fact of my ignorance. (с) Socrates

AlexII
Posts: 260
Joined: Mon 10 Apr, 2006 00:53
Location: станица Григорополисская
Has thanked: 59 times
Contact:

Re: Кастомная строка приглашения

Post by AlexII » Fri 13 Apr, 2012 01:36

Гм…

xeno.by, строка приглашения настраивается здесь: F9, \Параметры\Настройки командной строки:

Code: Select all

╔══════ Настройки командной строки ═══════╗
…
║ [x] Установить формат командной строки  ║
║     $p$g                                ║
╟─────────────────────────────────────────╢
Касательно «показывать текущий бранч в гите» — не могу сказать ничего вразумительного.

xeno.by
Posts: 14
Joined: Sun 16 Oct, 2011 19:49

Re: Кастомная строка приглашения

Post by xeno.by » Fri 13 Apr, 2012 08:31

cmd.exe wrote:причём тут git branch я понять пока не могу, через cmd/bat можно запускать любые комманды...
Сейчас у меня вот так:

Code: Select all

╟─────────────────────────────────
║Macros.scala
╚═══════════════ 886 580 bytes in 23 files ═
C:\Projects\Kepler>
Хочется, чтобы было вот так:

Code: Select all

╟─────────────────────────────────
║Macros.scala
╚═══════════════ 886 580 bytes in 23 files ═
C:\Projects\Kepler @ pullrequest/macros>
То есть чтобы в приглашении командной строки рядом с текущим путем отображался текущий бранч гита. Так можно в баше (http://stackoverflow.com/questions/4133 ... and-colors), но вроде бы нельзя сделать в cmd.exe. Отсюда вопрос: возможно ли это сделать средствами фара?

xeno.by
Posts: 14
Joined: Sun 16 Oct, 2011 19:49

Re: Кастомная строка приглашения

Post by xeno.by » Fri 13 Apr, 2012 08:43

Окей, вроде бы prompt в винде можно настроить так, чтобы он показывал значения переменных окружений: http://blog.paulgu.com/blogroll/customi ... ll-prompt/. Может ли это помочь в решении ребуса?

2useven10
Posts: 3011
Joined: Mon 07 Sep, 2009 10:40
Has thanked: 2 times
Been thanked: 82 times

Re: Кастомная строка приглашения

Post by 2useven10 » Fri 13 Apr, 2012 09:15

только если напишете плагин (?макрос), который, например, при смене каталога в фар будет дергать git для вытаскивания бранча и перекладывать результат в переменную окружения в фаровском процессе.

User avatar
SUSim
Posts: 1477
Joined: Thu 18 Feb, 2010 17:32
Has thanked: 4 times
Been thanked: 4 times

Re: Кастомная строка приглашения

Post by SUSim » Fri 13 Apr, 2012 16:43

я не знаю что такое "git для вытаскивания бранча", но идея менять приглашение комстроки в зависимости от различных условий: плагинов, спецпапопок и т.п. мне понравилась :), с помощью макроса попробую... (если время будет :()
SimSU ··· ·· -- ··· ··-

2useven10
Posts: 3011
Joined: Mon 07 Sep, 2009 10:40
Has thanked: 2 times
Been thanked: 82 times

Re: Кастомная строка приглашения

Post by 2useven10 » Fri 13 Apr, 2012 20:26

имелось ввиду выполнить команду, например, 'git branch' и её результат (возможно отфильтрованный и форматированный) поместить в переменную окружения.
ps: может, есть возможность использования какого-нибудь git-api для этих целей - не знаю...

User avatar
cmd.exe
Posts: 333
Joined: Fri 16 Apr, 2010 18:26
Location: Нижний Новгород
Has thanked: 170 times
Been thanked: 5 times
Contact:

Re: Кастомная строка приглашения

Post by cmd.exe » Fri 13 Apr, 2012 21:04

В принципе реально и через cmd.exe например, использую фитчи ещё со времён DOS...
Example1 тут просто выведим на дисплей что у нас отработал наш крипт:

Code: Select all

@ECHOOFF
chcp 866
rem кодировку можешь выбрать сам, мне в данном случае была нужно 866
call ASM.EXE [тут могут быть любые параметры]>>ASM.LOG
rem А можно и так (не дописывая заменяем файлик новыми данными выходящими в ASM.LOG)
rem call ASM.EXE [тут могут быть любые параметры]>ASM.LOG
type "ASM.LOG"|more
del "ASM.LOG"
rem а можно не удалять, вдруг понадобится
Example2:
type "ASM.LOG"|more
Можно и даже нужно заменить на: FOR + DO command
дальше присваиваешь вынутое значение переменной через SET.
Фар поддерживает переменные из set
Например:
fromgit=%i
В настройках коммандной строки фара правим:
\p%fromgir%
Используйте FOR. См справку: for /?
I've been using Vim for about 2 years now, mostly because I can't figure out how to exit it. (c) I Am Devloper
I know nothing except the fact of my ignorance. (с) Socrates

xeno.by
Posts: 14
Joined: Sun 16 Oct, 2011 19:49

Re: Кастомная строка приглашения

Post by xeno.by » Fri 13 Apr, 2012 21:51

2useven10 wrote:имелось ввиду выполнить команду, например, 'git branch' и её результат (возможно отфильтрованный и форматированный) поместить в переменную окружения.
ps: может, есть возможность использования какого-нибудь git-api для этих целей - не знаю...
git branch будет достаточно, но команду надо выполнять автоматически каждый раз когда показывается command prompt. пример:

Code: Select all

C:\Projects\Kepler @ master>git branch
* master
develop

C:\Projects\Kepler @ master>git checkout develop
Switched to branch 'develop'

C:\Projects\Kepler @ develop>cd C:\Projects\ScalaIDE

C:\Projects\ScalaIDE @ master>
Итак, по порядку. Вначале я нахожусь в бранче master и промпт показывает @master. Переключаюсь на develop, и промпт автоматически обновляется (за кулисами он вызывает git branch, и тот ему говорит, в каком бранче я нахожусь). Делаю cd в другой проект, который тоже находится под гитом - автоматически показывается текущий бранч этого проекта.

AlexII
Posts: 260
Joined: Mon 10 Apr, 2006 00:53
Location: станица Григорополисская
Has thanked: 59 times
Contact:

Re: Кастомная строка приглашения

Post by AlexII » Sat 14 Apr, 2012 00:12

xeno.by wrote:но команду надо выполнять автоматически каждый раз когда показывается command prompt.
Как сказал выше 2useven10 — каждый раз, когда меняется каталог. А этого — пока нет.

User avatar
cmd.exe
Posts: 333
Joined: Fri 16 Apr, 2010 18:26
Location: Нижний Новгород
Has thanked: 170 times
Been thanked: 5 times
Contact:

Re: Кастомная строка приглашения

Post by cmd.exe » Sat 14 Apr, 2012 01:08

Из того, что я слышал или знаю о гит ничего умнее пока не придумал, выводит комманду git branch при условии, что папка содержит файлик *.git и был нажат Enter или NumEnter...
Выполнение команды отстает на 1-ну директорию, что в принципе не сильно мешает как Я понял, ведь вы наверное не часто по директориям скачите?
Вариант на NumEnter наверно больше подойдет...



Наилучшем решением может являться колонка C0, и настройка DizC0 под маску *.git
14.04.2012 9:48
Если редактировать по уму, то лучше заставить cmdline.cpp и cmdline.hpp принимать хоть какие-то значение из макросов вот тут...

Code: Select all

void CommandLine::GetPrompt(string &strDestStr)
I've been using Vim for about 2 years now, mostly because I can't figure out how to exit it. (c) I Am Devloper
I know nothing except the fact of my ignorance. (с) Socrates

AlexII
Posts: 260
Joined: Mon 10 Apr, 2006 00:53
Location: станица Григорополисская
Has thanked: 59 times
Contact:

Re: Кастомная строка приглашения

Post by AlexII » Sat 14 Apr, 2012 02:30

cmd.exe, этак нужно обрабатывать «Ctrl-\», «Ctrl-PgUp/PgDn» и ещё много чего. На мой взгляд, проще повесить команду в UserMenu.

2useven10
Posts: 3011
Joined: Mon 07 Sep, 2009 10:40
Has thanked: 2 times
Been thanked: 82 times

Re: Кастомная строка приглашения

Post by 2useven10 » Sat 14 Apr, 2012 05:26

каждый раз, когда меняется каталог...
Это уже попытка оптимизации, после выполнения команды тоже надо, это может быть команда git - смена бранча. Перед показом промпта - это было бы правильно... В любом случае, как это сделать сейчас - я не знаю.

AlexII
Posts: 260
Joined: Mon 10 Apr, 2006 00:53
Location: станица Григорополисская
Has thanked: 59 times
Contact:

Re: Кастомная строка приглашения

Post by AlexII » Sat 14 Apr, 2012 07:34

2useven10 wrote:…после выполнения команды тоже надо,
С этим-то как раз проблем нет — посредством обработки в «HKCU(HKLM)\Software\Microsoft\Command Processor\AutoRun».

Хотя, помнится, что-то меняли в обработке исполнения.

xeno.by
Posts: 14
Joined: Sun 16 Oct, 2011 19:49

Re: Кастомная строка приглашения

Post by xeno.by » Sat 14 Apr, 2012 10:13

Уважаемые разработчики, не могли бы вы прокомментировать, пожалуйста?

В последнее время работаю с кучей бранчей, поэтому фича стала очень актуальной. Как отметил cmd.exe, можно было бы форкнуть фар и подпилить CommandLine::GetPrompt. Но хочется сделать все по уму и для пользы коммьюнити, поэтому я бы предпочел альтернативный вариант, но я не в курсе как это сделать макросами/плагинами. Возможно, вы сможете подсказать.

Post Reply

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