Завершение без учета регистра для git в zsh

У меня есть настройка zsh для выполнения завершения без учета регистра, но каким-то образом сопоставление файлов для завершения git остается чувствительным к регистру:

% zsh -f
% autoload -U compinit && compinit
% zstyle ':completion:*' matcher-list 'm:{a-zA-Z}={A-Za-z}' 'r:|[._-]=* r:|=*' 'l:|=* r:|=*'
% setopt nocasematch
% touch Foo
% ls fo[TAB]
% ls Foo # completes to foo
Foo
% git add fo[TAB] # does not complete

Любые идеи?


person Francisco    schedule 11.06.2014    source источник


Ответы (2)


Попробуй это:

% zstyle ':completion:*:*:git:files' matcher-list 'm:{a-zA-Z}={A-Za-z}' 'r:|[._-]=* r:|=*' 'l:|=* r:|=*'

Я не знаю, зачем это нужно, возможно, что-то в реализации кода завершения _git. Эта штука длиной более 6000 строк.

person msteed-ac    schedule 24.06.2014
comment
Это исправило это для вас? Здесь не работает. Ни с zsh -f, ни с моим сложным zshrc привыкать. - person Francisco; 25.06.2014
comment
Извините, я тестировал с помощью git diff вместо git add. Получается, что вышеизложенное не имеет реального эффекта. Я попытался копаться в коде завершения, но довольно быстро потерялся. - person msteed-ac; 25.06.2014

Решение: возьмите _git из ветки 'master' Zsh. Последняя версия Zsh на сегодня — 5.0.5, мастер zsh, из которого я взял _git, находится на коммите c8e5be9d0fbbc6fb1cf06175b7c3d4757f6d973c.

Репозиторий находится по адресу git://git.code.sf.net/p/zsh/code.

С этими невыпущенными изменениями завершение для git-add нечувствительно к регистру.

В Zsh-5.0.5 такие вещи, как git-diff, нечувствительны к регистру, а git-add — нет.

person Francisco    schedule 03.07.2014