Как удалить запись из истории команд?

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

Как удалить запись из истории команд?

Post by fml2 »

Как из макро, написанном на Луа, удалить запись из истории запущенных команд? Команда, которую требуется удалить, была получена с помощью следующего фрагмента (это один из элементов массива "historyItems"):


Заранее спасибо за дельные советы.
Shmuel
Posts: 6820
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 528 times

Re: Как удалить запись из истории команд?

Post by Shmuel »

fml2 wrote:Как из макро, написанном на Луа, удалить запись из истории запущенных команд?
Насколько я знаю, Фар не позволяет удаления из своих историй через API. Плагин может удалять из своих историй, но не из фаровских.
fml2
Posts: 534
Joined: Mon 09 Jul, 2012 22:10
Has thanked: 2 times
Been thanked: 8 times

Re: Как удалить запись из истории команд?

Post by fml2 »

Хо-хо, интересно! Действительно, попробовал запустить команду, а потом удалить ее через историю команд AltHistory. Из плагиновской истории она удалилась, а из родной фаровской -- нет. Т.е. все плагины вынуждены вести собственную историю? А как же они синхронизируют ее с фаровской -- например, если была выполнена команда? Фар посылает об этом какие-то уведомления, которые обрабатываются плагинами (я понимаю, что это все вопросы к авторам соответствующих плагинов)? Как-то это не очень удобно, мне кажется (хотя и плюсы есть: каждый плагин может "украшать" историю по своему усмотрению). А сложно было бы добавить в АПИ функцию для удаления команды?
User avatar
zg
zero-gravity
Posts: 6016
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 185 times
Contact:

Re: Как удалить запись из истории команд?

Post by zg »

fml2 wrote:А сложно было бы добавить в АПИ функцию для удаления команды?
сложно.
Shmuel
Posts: 6820
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 528 times

Re: Как удалить запись из истории команд?

Post by Shmuel »

fml2 wrote:Т.е. все плагины вынуждены вести собственную историю? А как же они синхронизируют ее с фаровской -- например, если была выполнена команда? Фар посылает об этом какие-то уведомления, которые обрабатываются плагинами (я понимаю, что это все вопросы к авторам соответствующих плагинов)?
Фар не посылает уведомлений. Плагин может использовать поле Time, чтобы определить, какие команды добавились в истории Фара после его (плагина) предыдущего запуска.
fml2
Posts: 534
Joined: Mon 09 Jul, 2012 22:10
Has thanked: 2 times
Been thanked: 8 times

Re: Как удалить запись из истории команд?

Post by fml2 »

Ладно, буду тогда удалять через стандартную фаровскую историю. Хотя, казалось бы, функция удаления уже есть (иначе как это делает фаровская история?), и мне не очень понятно, почему очень сложно предоставить ее через плагиновское АПИ. Или это делается из идеологических соображений (чтобы плагины ее не попортили)? Но плагины могут и в других областях уже много чего напортить, т.е. "доверие" к ним все-таки есть. Непонятно.
User avatar
zg
zero-gravity
Posts: 6016
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 185 times
Contact:

Re: Как удалить запись из истории команд?

Post by zg »

fml2 wrote:Но плагины могут и в других областях уже много чего напортить
например?
fml2
Posts: 534
Joined: Mon 09 Jul, 2012 22:10
Has thanked: 2 times
Been thanked: 8 times

Re: Как удалить запись из истории команд?

Post by fml2 »

zg wrote:
fml2 wrote:Но плагины могут и в других областях уже много чего напортить
например?
Например, плагин может поудалять кучу файлов. Или попортить настройки Фара (либо через встроенное АПИ, либо, если такового нет, путем прямого манипулирования файлов настроек -- ведь известно, где они находятся). Я это все к тому, что если доверия к плагинам нет, то стоит их вообще исключить как класс. Но из того, что они до сих пор существуют, я залючаю, что доверие все же есть. Так почему бы его не распространить и на настройки и, в частности, на историю команд?
User avatar
zg
zero-gravity
Posts: 6016
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 185 times
Contact:

Re: Как удалить запись из истории команд?

Post by zg »

fml2 wrote:Например, плагин может поудалять кучу файлов.
при помощи farapi?
Или попортить настройки Фара (либо через встроенное АПИ
ссылку на описание этого апи можно?
fml2
Posts: 534
Joined: Mon 09 Jul, 2012 22:10
Has thanked: 2 times
Been thanked: 8 times

Re: Как удалить запись из истории команд?

Post by fml2 »

Я же сказал, что плагины могут это делать и НЕ черз фаровское АПИ. Какая разница как? Главное -- есть к плагинам доверие или нет. Фаровское АПИ все равно не сможет гарантировать, что плагин не выполняет никаких вредоносных действий. Еще раз: речь, по-моему, идет о доверии к плагинам. Если оно есть, то можно расширить АПИ. Если его нет, то лучше уничтожить концепцию плагинов как таковую, потому что мало ли что они там наделают.
Shmuel
Posts: 6820
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 528 times

Re: Как удалить запись из истории команд?

Post by Shmuel »

zg wrote:
fml2 wrote:Например, плагин может поудалять кучу файлов.
при помощи farapi?
  1. editor.Editor(filename,nil,nil,nil,nil,nil,{EF_DELETEONCLOSE=1,EF_NONMODAL=1,EF_IMMEDIATERETURN=1})
  2.  
  3. editor.Quit()
Итерацию по файлам также легко сделать с помощью Фар API.
User avatar
zg
zero-gravity
Posts: 6016
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 185 times
Contact:

Re: Как удалить запись из истории команд?

Post by zg »

а чего не через просмотр? но в любом случае, да, одна дыра есть, надо закрывать, да.
Shmuel
Posts: 6820
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 528 times

Re: Как удалить запись из истории команд?

Post by Shmuel »

zg wrote:но в любом случае, да, одна дыра есть, надо закрывать, да.
Ну и заодно отменить ECTL_DELETEBLOCK, ECTL_DELETESTRING, ECTL_SETSTRING и особенно ECTL_SAVEFILE. Ибо удалять файл станет нельзя, но портить всё ещё можно.
2useven10
Posts: 5211
Joined: Mon 07 Sep, 2009 10:40
Has thanked: 18 times
Been thanked: 310 times

Re: Как удалить запись из истории команд?

Post by 2useven10 »

но в любом случае, да, одна дыра есть, надо закрывать, да.
да, надо отменить луа.
fml2
Posts: 534
Joined: Mon 09 Jul, 2012 22:10
Has thanked: 2 times
Been thanked: 8 times

Re: Как удалить запись из истории команд?

Post by fml2 »

zg wrote:надо закрывать, да.
Либо вы выросли в махровые советские времена, либо вы системный администратор: основное решение проблем -- взять и запретить :-)
Но мне кажется, что перед фаровским АПИ не должна стоять задача обеспечить невозможность нанесения плагинами вреда. Ибо такая задача, скорее всего, невыполнима. Ведь, насколько я понимаю, плагины могут пользоваться и другими АПИ и работать с файловой системой напрямую (или это не так?). Либо надо отменять плагины как таковые, либо разрешать им все, что они хотят. Я не говорю, что надо делать огромный АПИ впрок. Но если возникла конкретная потребность, то почему бы его и не расширить?

Интересно, что думают по этому поводу другие разработчики. Мне кажется, это вопрос не технический, а вопрос подхода.
Post Reply

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