far2l icon indicating copy to clipboard operation
far2l copied to clipboard

2 small ideas for the Сommand history window

Open atolismesh opened this issue 2 years ago • 49 comments

2 идеи для окна вывода истории команд (Alt-F8) и, возможно, окна истории каталогов (Alt-F12):

  1. Сделать скрываемую колонку в которую выводить дату и время выполнения команды
  2. Сделать скрываемую колонку в которую выводить каталог в которой эта команда запускалась.

Колонки отражать/скрывать по аналогии как в файловых панелях - Ctrl-0...3

atolismesh avatar Apr 17 '23 11:04 atolismesh

@atolismesh В windows far3 в истории уже давно идёт разбивка по датам (см. скриншот). изображение Возможно такое поведение будет быстрее портировать. Да и привычнее пересаживаться между far'ами в windows и linux.

akruphi avatar Apr 17 '23 12:04 akruphi

Возможно такое поведение будет быстрее портировать. Да и привычнее пересаживаться между far'ами в windows и linux.

Не всегда far для windows нужно брать для образца. :) Под linux часто важно и время выполнения команды, чтобы сравнить со временем измененных файлов и записями в log-ах. Особенно если это рабочий инструмент. Я бы сделал как я описал выше.

atolismesh avatar Apr 17 '23 14:04 atolismesh

1 Сделал пока можно считать в черновом виде, по Ctrl+T. Ньюансы:

  • колонка таймстампов первая, так как когда длина строки айтема шире самой менюшки то текущая реализация меню не позволяет сделать вторую колонку чтоб она была видна всегда, а не была задвинута гдето далеко справа.
  • механизм автохоткеев назначает горячие буквы по всей строке менюшки, то есть - использует и таймстампы. Не эстетично, по хорошему надо както расширять этот механизм для избирательности по колонкам.
  • таймстампы сделал в сокращенном виде: для команд исполненных сегодня выводится только время, для исполненных в текущем месяце - число + время и так далее. Вроде глаз режет не сильно, но зато визуально разделяет сегодняшние и прочие команды. И место экономится опять же...

elfmz avatar Jun 04 '23 21:06 elfmz

Посмотрел - удобно. @elfmz можно ли текст в первой колонке с датой и разделителем | выводить другим цветом (например черным), чтобы визуально сразу различать дату и имя файла? Сейчас при пролистывании из-за одного цвета высматривание нужной записи в истории достаточно быстро утомляет.

akruphi avatar Jun 05 '23 07:06 akruphi

Еще идея появилась - писать даты в разделителях, как в фар3, но по Ctrl+T показывать колонку с временем. Как такой вариант?

elfmz avatar Jun 05 '23 10:06 elfmz

Еще идея появилась - писать даты в разделителях, как в фар3, но по Ctrl+T показывать колонку с временем. Как такой вариант?

Я за. Но хотелось бы фичу с разделителями дат выключаемой (например по Ctrl+D, по умолчанию достойно быть ВКЛ). Иногда из этого окна часть команд надо скопом быстро экспортнуть - я делаю через Alt+Ins и затем вырезать строки с разделителями дат напрягает. Кстати, в far3 и фильтрация по Ctrl+Alt+F на такие разделители адекватно действует.

Также в far3 в истории команд по F3 показывается доп информация (в настоящий момент каталог выполнения команды) - эту фичу быстрее и полезнее перетащить чем мудрить с добавлением третьей колонки.

akruphi avatar Jun 05 '23 11:06 akruphi

можно чтоб Ctrl+T по циклу переключало - простой список, список с разделителями-датами, список с разделителями-датами и временем в префиксе.

elfmz avatar Jun 05 '23 11:06 elfmz

Посмотрел первый вариант.

Еще идея появилась - писать даты в разделителях, как в фар3, но по Ctrl+T показывать колонку с временем. Как такой вариант?

можно чтоб Ctrl+T по циклу переключало - простой список, список с разделителями-датами, список с разделителями-датами и временем в префиксе.

Я за !

atolismesh avatar Jun 05 '23 12:06 atolismesh

Иногда из этого окна часть команд надо скопом быстро экспортнуть - я делаю через Alt+Ins

Кстати, а вот бы возможность часть команд из этого окна скопом быстро экспортнуть без Alt+Ins, а нормально как-то, без обрезки по правому краю.

unxed avatar Jun 05 '23 12:06 unxed

можно чтоб Ctrl+T по циклу переключало - простой список, список с разделителями-датами, список с разделителями-датами и временем в префиксе.

Согласен. Но по умолчанию первым вариант как far3 - список с разделителями-датами, а затем уже по кругу: -> список с разделителями-датами -> список с разделителями-датами и временем в префиксе -> простой список ->

Кстати, а вот бы возможность часть команд из этого окна скопом быстро экспортнуть без Alt+Ins, а нормально как-то, без обрезки по правому краю.

Если сюда ещё и выделение нескольких строк с Shift приделавать, то совсем уж комбайн получится. Пока наверное не надо. Давайте сначала посмотрим как зайдут циклическое переключение по Ctrl+T, текст в столбце дат черным цветом и доп.инфа по F3.

akruphi avatar Jun 05 '23 13:06 akruphi

Посмотрел вариант из https://github.com/elfmz/far2l/commit/f7b387712e2e310645771ec408cab207a8e6f7e8 С разделителями дней получилось хорошо! Небольшие замечания к текущей версии:

  • при нажатии Ctrl+T перебрасывает на последний элемент списка, было бы хорошо сохранять позицию выбранной записи;
  • пропали даты из первой колонки для предыдущих дней, что неудобно в случае, когда в один день было много команд превышающих высоту окна и совершенно не видно какой день. Предыдущий вариант в этом отношении функциональнее и рванность ширины колонки тут меньшее зло.
  • если есть возможность, то текст другим цветом (наверное черным?) как время в первой колонке (включая разделитель |), так и строки с разделителями дней

akruphi avatar Jun 06 '23 21:06 akruphi

Ну все же рваная раскладка с датами в первой колонке не красиво выглядит. Выделения цветом в менюшном классе пока не предусмотрено, но попробую сделать.

elfmz avatar Jun 06 '23 22:06 elfmz

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

elfmz avatar Jun 08 '23 20:06 elfmz

Что касается информативности даты, которой не видно когда много команд, есть идея текст последнего невидимого разделителя добавлять к заголовку меню, типа ═════════════════════ History ─ 2023-06-08 ═════════════════

elfmz avatar Jun 08 '23 21:06 elfmz

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

Спасибо. Сейчас получилось слишком бледно. Если не заморачиваться с введением нового цвета в теме, то можно взять из текущих Color items: Horizontal menu -> Normal text

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

Замеченный баг: для самой древней (верхней) даты не показывается строка --- дата ---

Offtop: Позволю себя попросить Вас посоветовать путь решения в https://github.com/elfmz/far2l/issues/1179#issuecomment-1576149932 - уж очень хочется закрыть тот Issue, к тому же вроде бы элегантный путь наметился.

akruphi avatar Jun 09 '23 19:06 akruphi

Раз уж тут идёт работа с историей допишу следующее неудобство:

При использовании истории (наткнулся в Alt+F12) и перехода на NetRocks-каталог ВСЕГДА появляется окно login/password. Даже, если уже открыто в этой же панели это же соединение! Причем безальтернативно, даже если в настройках NetRocks пароль сохранён или выбран альтернативный способ соединения (по ключу).

Соответственно перейти благополучно удаётся только в случае, если допустим вход по login/password и сам пароль помнишь - резко сужает юзабельность и удобство.

Если есть возможность, то было бы удобно следующее поведение:

  • если это соединение открыто на текущей или противоположной панели, то переходить сразу без диалогового окна
  • если соединение не открыто, то обязательно выдавать диалог, но с возможностью использовать запомненные параметры соединения из NetRocks

akruphi avatar Jun 10 '23 06:06 akruphi

После последних изменений в окнах слетела центровка разделителей:

  • в Location слетела центровка разделителя Plugins (см. скриншот - сдвиг на один символ). изображение
  • в выборе кодировок также сдвижка на 1 символ изображение

В какой момент сломалось не обратил внимание. В версии far2l 12b9e9e (заведомо до введения и времени и цвета) разделители центрировались правильно.

akruphi avatar Jun 10 '23 06:06 akruphi

вроде поправил

elfmz avatar Jun 10 '23 11:06 elfmz

вроде поправил

Ага. Сдвижка разделителей в диалогах Location, Code pages и т.п. вроде полностью поправлена.

Также частично поправлено пропадание самой верхней строки с датой. Изначально сразу после запуска far2l при первом открытии Alt+F8, Alt+F11 или Alt+F12 её нет, хотя ползунок справа не на самом вверху, но выше не прокручивает: изображение После Ctrl+T сверху разделитель с самой старой датой расталкивается, но не сразу - необходимо закрыть и снова открыть историю.

Обнаружилась ещё одна свежая особенность в меню в текущей версии по сравнению 12b9e9e все строки имеют отступ слева 1 символ (ранее были 2 символа), тогда как справа после комбинаций клавиш отступ остался 2 символа. И теперь галочки в меню Left и Right прижаты к тексту (ранее имели пробел). Попробовал сам исправить, но не сообразил где.

Также углядел отсутствие отступа после текста заголовка . Это исправил и заслал в #1699

akruphi avatar Jun 10 '23 11:06 akruphi

Да отступ я уменьшил, этот отступ был нужен только для рисования треугольничка горизонтального скролла длинной строки по Alt+влев\вправо, мне показалось это черезчур расточительным, при скролле вправо вполне можно съедать самый левый символ.

elfmz avatar Jun 10 '23 11:06 elfmz

Да отступ я уменьшил, этот отступ был нужен только для рисования треугольничка горизонтального скролла длинной строки по Alt+влев\вправо, мне показалось это черезчур расточительным, при скролле вправо вполне можно съедать самый левый символ.

Тогда ясно. Можно для симметрии ещё и справа уменьшить.

Ранее было симметрично: изображение

Теперь же получаются несоразмерно бъющие в глаза отступы в меню слева и справа (после комбинаций клавиш): изображение

akruphi avatar Jun 10 '23 12:06 akruphi

@elfmz спасибо за исправление с разделителем самой древней (верхней) даты. Ещё сопуствующая мелочь: сейчас, если перейти на самые древние даты, то в заголовке окна только History без даты. Или это так и задумано, чтобы дата засоряла заголовок только если прокрутились ниже чем на окно?

akruphi avatar Jun 11 '23 05:06 akruphi

Или это так и задумано, чтобы дата засоряла заголовок только если прокрутились ниже чем на окно?

ага

elfmz avatar Jun 11 '23 06:06 elfmz

Предложения по юзабельности истории вызревшие при обсуждении нововведений в тг-чате:

  1. Из истории, например, по Tab переходить на активной панели к
    • из History command переходить к каталогу в котором была запущена команда
    • из File view history переходить к каталогу и подсвечивать файл который смотрелся/редактировался (в случае если Alt+F11 открыт из просмоторщика/редактора дискуссионно делать ли и, если делать, то перебрасывать ли сразу на панель или предупреждать как-то пользователя и просить согласие).

Именно в использовании для этого Tab нет полной уверенности, но вроде она здесь наиболее логична из свободных, хотя во избежании случайного нажатия может навесить на Ctrl+Tab.

  1. Сейчас история команд также засоряется результатами нажатия Enter на панели, что не всегда удобно.

В исходнике https://github.com/elfmz/far2l/blob/0e41eeca3676828afc752240bf9311a206498e53/far2l/src/cfg/config.hpp#L66 присутствуют флаги

EXCLUDECMDHISTORY_NOTPANEL   = 0x00000004,		// не помещать в историю команды выполнения с панели
EXCLUDECMDHISTORY_NOTCMDLINE = 0x00000008,		// не помещать в историю команды выполнения с ком.строки

Однако вроде бы нигде это не вкл/выкл для пользователя в настройках - поправьте, если не нашел.

Было бы неплохо добавить управление ими в окно System settings (возможно в будущем вообще перенести все настройки Истории из перегруженного System settings в относительно свободный AutoComplete & History settings).

akruphi avatar Jun 11 '23 08:06 akruphi

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

elfmz avatar Jun 11 '23 22:06 elfmz

Сделал пока чтобы из диалога с директорией который по F3 можно было перейти в директорию и вкопипастить в командную строку команду.

Радостно перекомпилировал, открыл Alt+F8 и упсс.... Пока не заглягул в 5f044fa и не увидел что F3 работает только для записей с Extra данными, а без них молча игнорирует. Пришлось позапускать новых команд.

Замечательная идея кнопка Run-up с перебросом не просто в каталог, но и команду в командную строку! изображение Предлагаю расширить окно показом полноценной информации:

╔═══════ History Command Info ══════╗
║   Command: тут команда            ║
║ Directory: тут каталог            ║
╟───────────────────────────────────╢
║ { Close } [ To dir ] [ Run-up ]   ║
╚═══════════════════════════════════╝

Строчка Command, чтобы видеть команду даже когда это окно перекрывает середину истории. Close - т.к. на кнопке слово OK немного путает, что по ней просто закрытие окна. To dir - не всегда надо засорять командную строку именно этой командой, а достаточно просто быстро попасть в нужный каталог.

В принципе можно и на таб какой это повесить, если прям надо..

Более насущно в Alt+F11 переходить на панели прицельно к файлу из истории (тут основные use cases скопировать его или переименовать) , а в Alt+F8 переход к каталогу уже придумался для аналогии.

UPD: С удивлением увидел, что в просмоторщике/редакторе подобное поведение навешено на Ctr+F10. Наверное и тут надо не плодить дублирующиеся сущности, а для переброса на панель использовать Ctrl+F10.

akruphi avatar Jun 12 '23 07:06 akruphi

Спасибо за https://github.com/elfmz/far2l/commit/ff0f7e55add3b52c6ec0ad267094fa5e15d81152 С командами набираемыми в командной строке всё замечательно! А для файлов, попадающих в историю после запуска с панелей по Enter, каталог не сохраняется и в строке Directory: пусто.

Для таких случаев, если не запомнен каталог может кнопки [ To dir ] и [ Run-up ] делать неактивными?

Также было бы неплохо поля Command и Directory сделать скроллируемыми read-only (на случай уж совсем длинных команд или каталогов).

С моей точки зрения данная фича приближается к идеалу, а какое мнение топикстартера @atolismesh ?

akruphi avatar Jun 14 '23 07:06 akruphi

Приветствую! Сделано шикарно! Уже пользуюсь. Но мне категорично не хватает 3-й колонки, открываемой по дополнительному Ctrl-T, в Command history (Alt-F8):

2. Сделать скрываемую колонку в которую выводить каталог в которой эта команда запускалась.

atolismesh avatar Jun 14 '23 22:06 atolismesh

Для меня по истории остались следующие пожелания (перечисляю в порядке убывания важности):

  • цвет колонки с временем сейчас очень блеклый - сделать, например, чёрный цвет символов
  • ~~для файлов, попадающих в историю после запуска с панелей по Enter, каталог не сохраняется и в строке Directory пусто~~ (fixed in #1718)
  • в F3 поля Command и Directory сделать скроллируемыми read-only (на случай уж совсем длинных команд или каталогов)
  • настраиваемость пользователем EXCLUDECMDHISTORY_NOTPANEL и возможно также EXCLUDECMDHISTORY_NOTCMDLINE
  • проблема Alt-F12 в NetRocks-каталог всегда требует логин пароль вместо использования настроек соединения из NetRocks)
  • поменять хранение истории c .hst на a-la более unix формат, например как в логах
    YYYY-MM-DD hh:mm:ss command SEP dir
    
    тогда поиск и фильтрацию истории можно будет делать не только вручную внутри far2l по Ctrl+Alt+F но и unix-way через grep и т.п.

Сам я не настолько знаком с кодом far2l, чтобы что-то из этого в ближайшее время начать расковыривать самостоятельно.

akruphi avatar Jun 15 '23 10:06 akruphi

В телеграм-чате привели вот такой скриншот с древностями с некорректной датой image который похоже связан с #1292

Вроде теперь уже не актуально, но добавить проверку корректности дат при выводе возможно имеет смысл.

akruphi avatar Jun 16 '23 08:06 akruphi