ещё раз про completion в zsh
Всем привет. Хочется двух вещей: когда я нажимаю на таб: если есть что дописать --- то дописать и показать возможные варианты. если дописать нечего --- показать возможные варианты. если дописать нечего и список уже показан --- включить menu-select. показывать возможные варианты после первого нажатия на TAB делается при помощи setopt no_list_ambiguous дальше сложнее. была попытка написать вот так, это не то, что хотелось бы.. (по первому нажатию на таб --- делается expand-or-complete-prefix по второму -- включается menu-select) ( это не то потому, что если что-нить подредактировать после нажатия на таб -- следующее нажатие на таб будет делать menu-select а не дополнять) более того, в этом месте zsh сигфолтится. % ls asdf asdlkjg % ls # ls жмём tab % ls asd # дописываем l и жмём таб. хотелось бы что бы вызывалсяexpand-or-complete-prefix но вызывается menu-select и zsh падает foo(){ _main_complete; bindkey '\t' my-menu-select } zle -C my-expand-or-complete-prefix .expand-or-complete-prefix foo bindkey '\t' my-expand-or-complete-prefix zle -N my-menu-select my-menu-select(){ zle menu-select; bindkey '\t' my-expand-or-complete-prefix } ПОМОГИИТЕ.. хотя я так понимаю, здесь только один человек может давать ответы про zsh -- sergio. -- To UNSUBSCRIBE, email to [EMAIL PROTECTED] with a subject of unsubscribe. Trouble? Contact [EMAIL PROTECTED]
ещё раз про completion в zsh
At Tue, 09 Oct 2007 11:23:04 +0400, sergio wrote: s хотя я так понимаю, здесь только один человек может давать ответы про zsh Очередное нажатие на таб даже в zsh-users ажиотажа не вызывает. Michael -- To UNSUBSCRIBE, email to [EMAIL PROTECTED] with a subject of unsubscribe. Trouble? Contact [EMAIL PROTECTED]
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: [EMAIL PROTECTED] Проспрягайте, хлопцы, коней... М. Черкашин -- To UNSUBSCRIBE, email to [EMAIL PROTECTED] with a subject of unsubscribe. Trouble? Contact [EMAIL PROTECTED]
Re: ещё раз про completion в zsh
Artem Chuprina wrote: s когда я нажимаю на таб: s если есть что дописать --- то дописать и показать возможные варианты. s если дописать нечего --- показать возможные варианты. s если дописать нечего и список уже показан --- включить menu-select. Ну, общий-то принцип понятен - надо не перевешивать биндинги, а вешать биндинг на функцию, аккуратно запоминающую состояние. И не забывающую его своевременно сбросить, главное. Подозреваю, что она должна смотреть на $LASTWIDGET. не спорю. (: но я пока плохо понимаю как это сделать одной функцией. о! придумал (: zle -N my-tab bindkey '\t' my-tab my-tab(){ if [[ $LASTWIDGET == $WIDGET ]]; then zle menu-select else zle expand-or-complete-prefix fi } это то, что хочется. только всё равно сегфолтится в определённые моменты. ls TAB -- всё ok. ещё раз таб --- тоже всё ok ls /tmTAB -- всё ok. ещё раз таб --- сегфолт. -- sergio. -- To UNSUBSCRIBE, email to [EMAIL PROTECTED] with a subject of unsubscribe. Trouble? Contact [EMAIL PROTECTED]