Как не группировать историю (команд/...) по дате?

Столкнулись с проблемой в использовании макросов? Здесь можно получить помощь.
fml2
Posts: 518
Joined: Mon 09 Jul, 2012 22:10
Has thanked: 1 time
Been thanked: 7 times

Как не группировать историю (команд/...) по дате?

Post by fml2 » Fri 03 Jan, 2014 13:42

Здравствуйте.

В стандартной истории (команд / просмотра / ...) записи отсортированы и сгруппированы по дате, т.е. в списке имеются линии с датой, и под линиями уже перечислены сами записи соответствующего дня.

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

User avatar
John Doe
Бюрократ
Posts: 12323
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 33 times
Been thanked: 168 times

Re: Как не группировать историю (команд/...) по дате?

Post by John Doe » Fri 03 Jan, 2014 15:09

Очевидно что такая комбинация не предусмотрена.
А чем мешают линии?

fml2
Posts: 518
Joined: Mon 09 Jul, 2012 22:10
Has thanked: 1 time
Been thanked: 7 times

Re: Как не группировать историю (команд/...) по дате?

Post by fml2 » Fri 03 Jan, 2014 21:00

Они препятствуют скольжению глаз по списку. Чаще всего мне неважно, когда именно была запущена команда, главное, что она была одной из последних. Т.е. меня интересует именно список -- без указания дат.

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

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

User avatar
John Doe
Бюрократ
Posts: 12323
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 33 times
Been thanked: 168 times

Re: Как не группировать историю (команд/...) по дате?

Post by John Doe » Fri 03 Jan, 2014 21:14

fml2 wrote:Но иногда нужно удалить из истории ошибочно выполненную команду -- приходится пользоваться стандартной историей, т.к. эта функциональность есть только там.
Почему бы не выполнять это удаление макросом. Макросу всё равно есть разделительные линии или нет.
fml2 wrote:Но фильтр, помимо того, что его надо явно включать, еще и довольно примитивный (нет джокеров). И поэтому отказываться от плагина я пока все же не хочу.
Есть относительно простой плагин lf_history.
Там с фильтрацией всё хорошо: включёна сразу и джокеры работают.
Исходники на Lua, т.е. несложно доработать под свои нужды.

fml2
Posts: 518
Joined: Mon 09 Jul, 2012 22:10
Has thanked: 1 time
Been thanked: 7 times

Re: Как не группировать историю (команд/...) по дате?

Post by fml2 » Fri 03 Jan, 2014 21:57

John Doe wrote:Почему бы не выполнять это удаление макросом. Макросу всё равно есть разделительные линии или нет.
Я не очень понял, как вы это имеете в виду. Т.е. мне в моем макро (который показывает команды, запущенные из текущего каталога) нужно вызывать стандартную историю (при этом ее не показывая), искать в ней (с помощью эмуляции нажатия клавиш) запись, которую нужно удалить, а потом удалять ее (опять же, с помощью эмуляции нажатия клавиш)? Так?
John Doe wrote:Есть относительно простой плагин lf_history.
Там с фильтрацией всё хорошо: включёна сразу и джокеры работают.
Исходники на Lua, т.е. несложно доработать под свои нужды.
Спасибо за ссылку, посмотрю.

Update. Посмотрел плагин / макро. Его, по-моему, можно использовать как образец или учебник по написанию плагинов для Фар на Луа. Но в смысле функциональности там, по-моему, мало чего есть, чего нет, н-р, в AltHistory. И удаления записей из истории там тоже нет. Оно и не удивительно, ведь этой функции нет в фаровском АПИ для плагинов. Т.е. если это делать, не расширяя АПИ плагинов, то, по-моему, придется эмулировать нажатия клавиш.

User avatar
John Doe
Бюрократ
Posts: 12323
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 33 times
Been thanked: 168 times

Re: Как не группировать историю (команд/...) по дате?

Post by John Doe » Sat 04 Jan, 2014 00:35

fml2 wrote:Т.е. мне в моем макро (который показывает команды, запущенные из текущего каталога)...
Необязательно, точно так же можно составить совершенно отдельный макрос, который будет запускаться и в списках AltHistory/MoreHistory.
fml2 wrote:...нужно вызывать стандартную историю (при этом ее не показывая), искать в ней (с помощью эмуляции нажатия клавиш) запись, которую нужно удалить, а потом удалять ее (опять же, с помощью эмуляции нажатия клавиш)? Так?
Ага.
Причём всё перечисленное более чем элементарно. Разве что под вопросом надёжность поиска, т.к. искать судя по всему придётся по отображаемой строке меню.
fml2 wrote:Update. Посмотрел плагин / макро. [...]Но в смысле функциональности там, по-моему, мало чего есть, чего нет, н-р, в AltHistory.
Ага.
Зато нет разделителей и работают джокеры.

Shmuel
Posts: 5836
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 22 times
Been thanked: 213 times

Re: Как не группировать историю (команд/...) по дате?

Post by Shmuel » Sat 04 Jan, 2014 07:39

fml2 wrote:И удаления записей из истории там тоже нет.
Удаление есть, только не из фаровских историй, а из собственных (см. справку). Для пользователя плагина это есть самое настоящее удаление, т.е. удалённая запись исчезает навсегда.

fml2
Posts: 518
Joined: Mon 09 Jul, 2012 22:10
Has thanked: 1 time
Been thanked: 7 times

Re: Как не группировать историю (команд/...) по дате?

Post by fml2 » Sat 04 Jan, 2014 08:39

John Doe wrote:Необязательно, точно так же можно составить совершенно отдельный макрос, который будет запускаться и в списках AltHistory/MoreHistory.
Мне нужно запускать именно из моего макроса, т.к. удалять-то я хочу в его контексте. В упомянутых плагиных удаление уже есть. Но оно удаляет из собственной истории, а мой макрос пользуется родной фаровской историей (чтобы не изобретать велосипед). Интересно: если бы было возможно без всяких вывертов (т.е. через АПИ) удалять записи из фаровской истории, стали бы авторы плагинов реализовывать собственную историю?
John Doe wrote:Зато нет разделителей и работают джокеры.
Это же относится и к, н-р, AltHistory, т.е. необходимости в чем-то еще нет.

User avatar
John Doe
Бюрократ
Posts: 12323
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 33 times
Been thanked: 168 times

Re: Как не группировать историю (команд/...) по дате?

Post by John Doe » Sat 04 Jan, 2014 11:22

fml2 wrote:Мне нужно запускать именно из моего макроса, т.к. удалять-то я хочу в его контексте.
Если удаление нужно только в контексте своего макроса, то можно просто завести в нём список удалённых значений.
fml2 wrote:[...]
Не понял к чему было остальное. Ведь Shmuel разъяснил всё выше.

fml2
Posts: 518
Joined: Mon 09 Jul, 2012 22:10
Has thanked: 1 time
Been thanked: 7 times

Re: Как не группировать историю (команд/...) по дате?

Post by fml2 » Sat 04 Jan, 2014 13:02

Наверное, для того, чтобы понять меня окончательно, надо знать, что это за макрос у меня такой. Он описан вот здесь: http://forum.farmanager.com/viewtopic.php?f=60&t=8289.

Вкратце: там показывается родная история команд. Но не все команды, а только определенные. Но это делается с помощью родной фаровской истории, а не с помощью какой-то своей копии.

Хотелось бы предоставить пользователю (т.е. мне :-) возможность удалять оттуда записи. Т.к. для показа истории используется родная фаровская история, то удалять надо из нее. Я бы не хотел вести какую-то собственную бухгалтерию типа списка удаленных значени и т.д., а делать все через родную историю Фара. Т.е. если я удалил запись через родную историю (в смысле GUI), то эта запись не должна появляться и в случае вызова моего макро. И наоборот: если я удалил запись из моего макро, то ..... (долго писать). Короче: я хочу иметь толко одно хранилище записей истории -- родную историю Фара. А т.к. АПИ не предоставляет такой возможности, то приходится выкручиваться. А авторам другх плагинов пришлось делать собственное хранение.

User avatar
John Doe
Бюрократ
Posts: 12323
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 33 times
Been thanked: 168 times

Re: Как не группировать историю (команд/...) по дате?

Post by John Doe » Sat 04 Jan, 2014 13:17

fml2 wrote:А т.к. АПИ не предоставляет такой возможности, то приходится выкручиваться. А авторам другх плагинов пришлось делать собственное хранение.
Вы так говорите "выкручиваться" как будто это что-то плохое ;-)
В целом это нормально, а вашем случае даже есть даже 3 варианта на выбор.

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

fml2
Posts: 518
Joined: Mon 09 Jul, 2012 22:10
Has thanked: 1 time
Been thanked: 7 times

Re: Как не группировать историю (команд/...) по дате?

Post by fml2 » Sat 04 Jan, 2014 14:11

John Doe wrote:а вашем случае даже есть даже 3 варианта на выбор.
Если я все правильно понимаю, то при условии, что собственного хранения не требуется, вариант только один (эмуляция клавиш в родной истории).
John Doe wrote:Что касается других плагинов, то я сильно сомневаюсь что выбор собственного хранения истории обусловлен именно отсутствием в API функции удаления.
Было бы интересно услышать мотивацию от самих авторов.

Max Rusov
Posts: 3632
Joined: Wed 23 Nov, 2005 11:11
Location: Москва-Питер
Has thanked: 1 time
Been thanked: 10 times

Re: Как не группировать историю (команд/...) по дате?

Post by Max Rusov » Sat 04 Jan, 2014 14:37

fml2 wrote:Было бы интересно услышать мотивацию от самих авторов.
В основном - по историческим причинам, сейчас, возможно, уже не так актуально. Кроме того, MoreHistory к записям истории приписывает еще дополнительную информацию для различных представлений...

User avatar
John Doe
Бюрократ
Posts: 12323
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 33 times
Been thanked: 168 times

Re: Как не группировать историю (команд/...) по дате?

Post by John Doe » Sat 04 Jan, 2014 17:18

fml2 wrote:Если я все правильно понимаю [...] вариант только один (эмуляция клавиш в родной истории).
или использовать sqlite
или поучаствовать в доработке одного из плагинов

fml2
Posts: 518
Joined: Mon 09 Jul, 2012 22:10
Has thanked: 1 time
Been thanked: 7 times

Как вызвать стандартную историю команд, не показывая ее?

Post by fml2 » Sat 04 Jan, 2014 22:33

У меня в Фар комбинация клавиш Alt+F8 переназначена на вызов плагина AltHistory. Стандартную историю можно вызвать с помощью Ctrl+Alt+F8.

Как из макро, написанном на Луа, вызвать стандартную историю команд Фар так, чтобы это не зависело от того, есть переназначение клавиш или нет? Имеется ли у стандартной истории какой-то внутренний ID, и, если да, как по нему вызвать историю?

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

Такое возможно? Как?

Заранее спасибо за дельные советы.

Max Rusov
Posts: 3632
Joined: Wed 23 Nov, 2005 11:11
Location: Москва-Питер
Has thanked: 1 time
Been thanked: 10 times

Re: Как вызвать стандартную историю команд, не показывая ее?

Post by Max Rusov » Sat 04 Jan, 2014 23:11

Keys("AltF8")

Post Reply

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