Что: 398f6985b90366c4fc0c2cc536922f681020109f
Когда: 2022-02-14 14:33:19+03:00
Темы: tip zsh
zsh 5.8.1, zsh-autosuggestions и history-incremental-pattern http://www.git.stargrave.org/?p=dotfiles.git;a=commitdiff;h=5e2205df9515fe28781e91896733a26d3441722f Пока игрался с PS1 (6ea149598ae74304104b558b8e0024acf2c3b01a), то перед сном обнаружил, что инкрементальный поиск по истории не работает. Точнее не работает моя быстрая инициализация онного: beginning-history-incremental-pattern-search-backward() { zle history-incremental-pattern-search-backward ${BUFFER:gs/ /*/} } zle -N beginning-history-incremental-pattern-search-backward bindkey "^[[1;2A" beginning-history-incremental-pattern-search-backward Когда я набрал "mu suck", нажал Shift-Up, то ожидаю что включится инкрементальный поиск с уже вставленным "mu*suck" текстом. Вот последнее действие упорно не выполняется. Подумал что сломал PS1 как-то. Откатил. Не помогло. Вспомнил что обновил zsh как-раз заодно с 5.8 до 5.8.1. Откатил до 5.8 -- помогло. Ну очевидно что бага в zsh. Полез в их репозиторий смотреть diff между релизами. Ничего подозрительного или странного, никаких обратно несовместимых изменений. Пока возился с этим, заметил что autosuggestions не всегда отображают suggestion текст разукрашенным -- текст есть, но без применения стиля. Явно и autosuggestions как будто сломался. Полез смотреть -- а у меня явный checkout его предыдущей версии сделан. Хотя в более новой явно сказано о поддержке zsh 5.8. Обновил autosuggestions, хотя и не помню почему откатывал. Подсветка починилась, но инкрементальная история нет. Вставляю print $BUFFER в функе -- всё имеется, всё на месте, явно беда с zle вызовом. Отключаю autosuggestions -- поиск по истории работает. Хотя бы понял что беда именно с этим плагином. Пошёл смотреть его исходный код на тему особенностей с поиском по истории, смутно понимая как он вообще устроен. Благо что в начале плагина есть массивы с перечислениями всяких widget-ов и что с ними надо как-то особо обходится. И в некоторых как-раз перечислены widget-ы связанные с поиском по истории, но не инкрементальной. Добавил их в ZSH_AUTOSUGGEST_IGNORE_WIDGETS -- всё заработало! Сегодня заметил что как-будто пропускаются некоторые нажатия up/down при поиске по истории. Действительно, чуть ли не каждый раз по два раза приходится нажимать. Когда я смотрел README autosuggestions плагина, то мне сразу не понравились фразы про асинхронную работу плагина. И оно включено по умолчанию. Отключил -- решило проблему. Обновление одного софта на минорнейшую версию, повлекло то, что другой софт ломает третий :-). Позже смотрел на bugtracker autosuggestions и там похожие проблемы наблюдались регулярно с widget-ами. Но, не смотря на его странное качество (или по другому просто без хаков не выйдет его сделать?), он über-полезнейший и must-have в моём арсенале!
Сгенерирован: SGBlog 0.34.0