View Issue Details

IDProjectCategoryView StatusLast Update
0002084WishesHistorypublic2019-05-30 10:26
ReporterCyberShadowAssigned To 
PrioritynormalSeverityfeatureReproducibilityN/A
Status newResolutionopen 
Product Version3.0 
Target VersionFixed in Version 
Summary0002084: Локальная история команд, как в Far 2
DescriptionВ FAR 2, стрелки вверх/вниз искали по истории команд из текущей сессии FAR. В FAR 3, история - глобальная, и запущенная команда в одном окне сразу появляется в истории других окон.

Хотя это в теории классно, мне это крайне неудобно, т.к. в подавляющем большинстве случаев работа в разных окнах идет по своим независимым направлениям (напр. в одном окне правим код и запускаем компилятор, в другом работаем с входными/выходными данными, в третьем что-то совсем иное).

В FAR 2 у меня был настроен плагин AltHistory на Ctrl+X / Ctrl+E. Получалось что стрелки - прокрутка по локальной истории, а Ctrl+X/E - по глобальной. Так было намного удобнее.
Additional InformationОбсуждение #1:
http://forum.farmanager.com/viewtopic.php?f=4&t=7046&p=92488

Обсуждение #2 (чего не хватает в API для реализации в плагине):
http://forum.farmanager.com/viewtopic.php?f=5&t=1608&p=92489#p92489
TagsNo tags attached.
Build

Activities

JohnDoe

2012-04-23 18:24

updater   bugnote:0009025

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

Обратите внимание, что нужное вам поведение сейчас реализуемо при таких настройках
[ ] Save commands history
[ ] Save folders history
[ ] Save view and edit history

(Естественно так невозможно сохранить историю между сессиями).

CyberShadow

2012-04-23 18:31

reporter   bugnote:0009027

Конкретные предложения не стал предлагать, так как мне неведомо сложность (и "правильность") их исполнения. Но возможностей немало:

1) Просто добавить опцию: стрелки = прокрутка по локальной истории
2) Добавить пункты меню / макрокоманды / итд. для прокрутки по локальной истории, чтобы можно было самому настроить макросы
3) Добавить в FAR API чего не хватает для реализации в плагине, например:
  а) передача исполняемых команд / переходов по папкам / открытие файлов плагинам, чтобы они сами могли вести локальную либо глобальную историю
  б) передача плагинам, считывающих историю FAR, флаг если этот пункт истории был добавлен в течении текущей сессии

> (Естественно так невозможно сохранить историю между сессиями).

Вариантов которые "решают" проблему взамен на другие, более весомые проблемы, тоже немало, и они никому не интересны. В обсуждении #1 было также предложено использование разных профилей, но это настолько же непрактично.

JohnDoe

2012-04-23 20:01

updater   bugnote:0009028

Практика показывает что у тикетов сформулированных конкретно - на порядок больше шансов.

1) Очевидно что это не "просто". Например продумайте в деталях поведение фара(-ов) с этой опцией и без неё, и учтите разные состояния [ ] Save commands history.
При этом не забудьте, что эти опции можно включать/выключать неоднократно в течении сеанса.

zg

2012-04-23 22:08

developer   bugnote:0009034

в морг.

CyberShadow

2012-04-23 22:32

reporter   bugnote:0009035

Если хотите просто и конкретно - "Как в FAR 2".

> Например продумайте в деталях поведение фара(-ов) с этой опцией и без неё, и учтите разные состояния [ ] Save commands history.

Что тут непонятного? Ясно, что если глобальная история нигде не используется, любая фича которая различает между локальной и глобальной истории не имеет смысла. Если проще сказать: [ ] Save commands history делает недоступной гипотетическую опцию "стрелки = прокрутка по локальной истории", и когда последняя выключена или недоступна - стрелки работают как сейчас.

> в морг.

Мне придется форкать, что ли? Трудно поверить что я - единственный usecase.

JohnDoe

2012-04-23 23:00

updater   bugnote:0009037

>Если хотите просто и конкретно - "Как в FAR 2".
Это значит сохранять историю только того экземпляра фара, из которого мы вышли последним?
Нет, спасибо.

CyberShadow

2012-04-23 23:04

reporter   bugnote:0009038

Ну так давайте спокойно обсудим как это лучше сделать. Я не хочу прислать патч который сразу же получит очередной "в морг. -- zg".

Вот конкретное предложение: в таблице истории добавляем колонку "сессия", где указывается время запуска FAR с точностью до микросекунды. Оттуда, можно либо эту информацию сделать доступным плагинам (тогда это повесить на стрелки - элементарно), либо просто добавить выше-обсужденный checkbox.

zg

2012-04-24 03:43

developer   bugnote:0009039

> Я не хочу прислать патч который сразу же получит очередной "в морг. -- zg".
а можно ссылки на предыдущие _хорошие_ патчи, которые "в морг. -- zg"?
> Вот конкретное предложение: в таблице истории добавляем колонку "сессия", где указывается время запуска FAR с точностью до микросекунды. Оттуда, можно либо эту информацию сделать доступным плагинам
жду патч.

JohnDoe

2012-04-24 09:58

updater   bugnote:0009041

>Вот конкретное предложение
Мне нравится

CyberShadow

2012-04-25 17:50

reporter   bugnote:0009056

Проблема в том, что я не могу знать какие патчи вы посчитаете хорошими (и не только в субъективном смысле), т.к. не знаком с кодом и не слежу за разработкой (например, на этой стадии развития FAR 3 изменения схемы БД может быть табу, и мне это было бы неведомо).

Обратно на тему:

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

> Вот если бы разработчики FAR добавили аналог ProcessPanelEventInfo/FE_COMMAND так, чтобы плагин мог получить информацию о запускаемых командах на любых панелях - тогда не вопрос. Ну, и дополнительные фишки стали бы доступны - вроде как "при запуске команды из истории перейти в каталог, откуда она выполнялась" и пр. и пр.

CyberShadow

2012-04-29 22:50

reporter  

pf_allpanelevents.diff (8,623 bytes)
pf_allpanelevents.diff (8,623 bytes)

CyberShadow

2012-04-29 22:55

reporter   bugnote:0009079

Вот патч. Обобщил до всех панельных событий.

Также поправил документацию OpenW. Неужели так трудно доки вместе с API подправить? Убило 10 минут поиска бага.

Плагин: https://github.com/CyberShadow/localcmdhistory/blob/master/src/localcmdhistory.cpp

Maximus

2012-04-30 08:10

reporter   bugnote:0009080

А зачем "время запуска"? Есть же PID - чего проще и удобнее?

CyberShadow

2012-04-30 08:12

reporter   bugnote:0009081

Last edited: 2012-04-30 08:12

View 2 revisions

PID не уникальный за всё время. Эффект будет, что если стелкой докрутить после конца истории этой сессии, дальше пойдет история предыдущей сессии в которой по случайности FAR имел тот же PID.

Но это уже неважно, патч по другому пути.

CyberShadow

2012-05-01 20:42

reporter   bugnote:0009082

Если от меня чего-либо ожидается для продвижения этой идеи, буду рад это исполнить.

Denis

2012-05-12 13:10

reporter   bugnote:0009164

А что скажут разработчики Far'a? Текущие плагины патч не ломает. Или патч не принимается из соображений "безопасности" - можно будет перехватить всё и вся?

zg

2012-05-12 13:31

developer   bugnote:0009165

разработчиков фара в первую очередь волнуют изменения, которые ломают текущие плагины. как с ними будет покончено, так сразу и за те, которые не ломают примемся.

Denis

2013-02-21 02:26

reporter   bugnote:0010357

Вроде как ломающие изменения позади. Не пришло ли время патча?

CyberShadow

2014-01-11 22:15

reporter  

CyberShadow

2014-01-11 22:17

reporter   bugnote:0011624

Обновил патч.

CyberShadow

2014-01-30 18:20

reporter   bugnote:0011802

Оригинальная проблема отлично решается отключением истории Far и использованием плагина AltHistory. Таким образом на стрелках - локальная история, на Ctrl+X/E и AltF8 - глобальная.

Предложенный патч и демо-плагин проблему решают плохо, т.к. все равно не перехватываются команды, выполненные нажатием Enter над файлом.

JohnDoe

2014-02-04 16:04

updater   bugnote:0011818

CyberShadow
Может быть не стоит торопиться и закрывать тикет?

Если ваш первый комментарий (0002084:0009027) актуален, то предлагается решить 2 независимые проблемы:

3а. Передавать плагинам информацию о смене папок, открытии файлов и др.
3б. Сохранять в истории вместе с прочей информацией и идентификатор сессии

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

Для решения задачи заявленой в описании тикета достаточно и б)
Ведь если в апи будет возможность получить id сессии, то макросом несложно реализовать фильтр по истории.

(Обратите внимание на недавний тикет 0002208, реализующий сохранение текущей папки, и на макрос http://forum.farmanager.com/viewtopic.php?f=60&t=8289)

JohnDoe

2019-05-30 10:26

updater   bugnote:0016513

> 3б. Сохранять в истории вместе с прочей информацией и идентификатор сессии

А в идеале ещё и различать панели, тогда появится возможность восстановить сторию переходов для каждой

Issue History

Date Modified Username Field Change
2012-04-23 18:11 CyberShadow New Issue
2012-04-23 18:24 JohnDoe Note Added: 0009025
2012-04-23 18:31 CyberShadow Note Added: 0009027
2012-04-23 20:01 JohnDoe Note Added: 0009028
2012-04-23 22:08 zg Note Added: 0009034
2012-04-23 22:32 CyberShadow Note Added: 0009035
2012-04-23 23:00 JohnDoe Note Added: 0009037
2012-04-23 23:04 CyberShadow Note Added: 0009038
2012-04-24 03:43 zg Note Added: 0009039
2012-04-24 09:58 JohnDoe Note Added: 0009041
2012-04-25 17:50 CyberShadow Note Added: 0009056
2012-04-29 22:50 CyberShadow File Added: pf_allpanelevents.diff
2012-04-29 22:55 CyberShadow Note Added: 0009079
2012-04-30 08:10 Maximus Note Added: 0009080
2012-04-30 08:12 CyberShadow Note Added: 0009081
2012-04-30 08:12 CyberShadow Note Edited: 0009081 View Revisions
2012-05-01 20:42 CyberShadow Note Added: 0009082
2012-05-12 13:10 Denis Note Added: 0009164
2012-05-12 13:31 zg Note Added: 0009165
2013-02-03 04:31 alexy Severity minor => feature
2013-02-21 02:26 Denis Note Added: 0010357
2014-01-11 22:15 CyberShadow File Added: 0001-Add-PF_ALLPANELEVENTS.patch
2014-01-11 22:17 CyberShadow Note Added: 0011624
2014-01-30 18:20 CyberShadow Note Added: 0011802
2014-01-30 18:20 CyberShadow Status new => resolved
2014-02-04 16:04 JohnDoe Note Added: 0011818
2019-05-30 10:26 JohnDoe Note Added: 0016513
2019-05-30 10:26 JohnDoe Status resolved => new