[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: ещё раз про completion в zsh



sergio -> debian-russian@lists.debian.org  @ Tue, 09 Oct 2007 11:23:04 +0400:

 s> Хочется двух вещей:
 s> когда я нажимаю на таб:
 s> если есть что дописать --- то дописать и показать возможные варианты.
 s> если дописать нечего --- показать возможные варианты.
 s> если дописать нечего и список уже показан --- включить menu-select.

 s> показывать возможные варианты после первого нажатия на TAB делается при помощи
 s> setopt no_list_ambiguous
 s> дальше сложнее.


 s> была попытка написать вот так, это не то, что хотелось бы..
 s> (по первому нажатию на таб --- делается expand-or-complete-prefix
 s> по второму -- включается menu-select)
 s> ( это не то потому, что если что-нить подредактировать после нажатия на таб --
 s> следующее нажатие на таб будет делать menu-select а не дополнять)
 s> более того, в этом месте zsh сигфолтится.

 s> % ls
 s> asdf  asdlkjg
 s> % ls             # ls жмём <tab>
 s> % ls asd         # дописываем l и жмём таб. хотелось бы что бы
 s> вызывалсяexpand-or-complete-prefix но вызывается
 s> menu-select и zsh падает

 s> foo(){
 s>         _main_complete;
 s>         bindkey '\t' my-menu-select
 s> }
 s> zle -C my-expand-or-complete-prefix .expand-or-complete-prefix foo
 s> bindkey '\t' my-expand-or-complete-prefix

 s> zle -N my-menu-select
 s> my-menu-select(){
 s>         zle menu-select;
 s>         bindkey '\t' my-expand-or-complete-prefix
 s> }

 s> ПОМОГИИТЕ..
 s> хотя я так понимаю, здесь только один человек может давать ответы про zsh

... и у этого человека у самого, правда, в другом месте, "включаешь - не
работает".  Ну, общий-то принцип понятен - надо не перевешивать
биндинги, а вешать биндинг на функцию, аккуратно запоминающую
состояние.  И не забывающую его своевременно сбросить, главное.
Подозреваю, что она должна смотреть на $LASTWIDGET.

А зачем он падает - это думать надо...

-- 
Artem Chuprina
RFC2822: <ran{}ran.pp.ru> Jabber: ran@jabber.ran.pp.ru

Проспрягайте, хлопцы, коней...
	М. Черкашин



Reply to: