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

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 /tm<TAB> -- всё ok. ещё раз таб --- сегфолт.

--
sergio.



Reply to: