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: