complete -p git
'u çalıştırırsanız, varsayılan tamamlamanın git
için ne olduğunu görebilirsiniz.
$ complete -p git
complete -o bashdefault -o default -o nospace -F __git_wrap__git_main git
Burada önemli olan kısım -F __git_wrap__git_main
bittir.
Eğer __git_wrap__git_main
fonksiyonunu incelemek ise: Bunun sadece __git_func_wrap
işlevi aracılığıyla __git_main
işlevini çağırır görebilirsiniz
$ type __git_wrap__git_main
__git_wrap__git_main is a function
__git_wrap__git_main()
{
__git_func_wrap __git_main
}
. (İstersen kendin kontrol edebilirsiniz.)
__git_main
fonksiyonu baktığımızda bunu tabii ki, çalıştırılan ve komuta dayalı
_git_XXX
işlevlerini aramak çalışır görüyoruz, bir
_git_checkout
işlevi var (
type -t _git_checkout
==
function
).
Bu işlev, git checkout
için tamamlama desteğini sağlar. Özel işlevin için istediğin bu. Yani bu, tamamlanma kullanımına sahip olmanız gereken işlevdir.
Doğrudan bunu çağıramazsınız, hatırlamanıza rağmen, tüm bunları başlatan __git_func_wrap
numaralı çağrıdan biraz kurulum beklediğinden, kendiniz sarmanız gerekir.
Başladığımız __git_wrap__git_main
işlevinin tam anlamı nedir (__git_main
için).
__git_wrap_git_checkout() {
__git_func_wrap _git_checkout
}
ve ardından fonksiyonu için tamamlama fonksiyonu olarak kanca:
Öyleyse bunu bizim gibi bir işlev yazmak
complete -o bashdefault -o default -o nospace -F __git_wrap_git_checkout git_checkout
ve biz gitmek için iyi olmalıdır.
biz yararlanmak gelmesi anlamına gelecekti yerine bağımsız bir kabuk işlevinin bir git takma adı olarak bu işlevi uygulamak git tamamlama yerleşik destek ve sadece bizim __git_wrap_git_checkout
işleviyle aynı _git_git_checkout
fonksiyonunu (sağlamak yukarıda ve _git_
+ alias_name
için __git_main
beklediği gibi) ve git bu çağrıyı otomatik olarak yapar.
'Git checkout' için belirli bir tamamlama işlevi olup olmadığını bulup, bunu da işlevinize ekleyin. Ama sanırım yok.Git tamamlama işlevi tamamlanmış komut satırını test ettiğimi düşünüyorum, bu yüzden muhtemelen bir kısmı ile oynamak ve muhtemelen bunun için kendi küçük (küçük) tamamlama işlevini yazmanız gerekir. Bunu bir takma ad olarak yazarsanız yardımcı işlevinizi çağırmak için varsayılan tamamlama işlevini kullanabilirsiniz (ab). –