vim: snipmate eklentisini ekle (dikkat: sekme tuşunun davranışı değişti)

Bu eklentinin özgün deposu https://github.com/msanders/snipmate.vim.  Fakat
yeterli ilgiyle geliştirilmediğinden bu projeden "fork" edilen bir başka
eklentiyi kullandık: https://github.com/garbas/vim-snipmate.  Aktif şekilde
geliştirilen bu eklenti iki eklenti daha gerektiriyordu, onları da bundle
listesine ekledik.  Ayrıca bu yeni eklentide "snippet"ler ayrı bir depoya
alınmış: https://github.com/honza/snipmate-snippets.  Bunu da ekledik.  Sonuç
olarak "snipmate" desteği için şu eklentilerin kurulu olması gerekiyor:

- https://github.com/garbas/vim-snipmate
- https://github.com/tomtom/tlib_vim
- https://github.com/MarcWeber/vim-addon-mw-utils
- https://github.com/honza/snipmate-snippets

**Dikkat!**  Snipmate eklentisinde sekme tuşu snippet eklemek ve doldurmak için
kullanıldığından halihazırda bu tuşu "otomatik tamamlama" yapacak şekilde
ayarlayan SuperTab eklentisini kaldırdık.  Otomatik tamamlama için lütfen
özgün Vim tuşunu kullanın: `<ctrl-x><ctrl-n>`
vim: 19/x snippet'lerine başla
vim: syntastic eklenti adresini değiştir

vim-scripts deposu yavaş güncelleniyor.  Bu eklenti için özgün depoyu kullan.
vim: gocode desteği için ön hazırlık

Gocode Vim ve Emacs'ta otomatik tamamlama yapan (Go ile yazılmış) bir program:

https://github.com/nsf/gocode

Bu sayede Vim'de Go ile kodlama yaparken `<ctrl-x><ctrl-n>` tuşu ile fonksiyon
damgalarını görerek otomatik tamamlama yapmak mümkün olacak.

Gocode desteği için öncelikle ilgili git deposunda bulunan Vim dosyalarını
ekliyoruz.  Bu özelliğin kullanılabilmesi için Gocode'un derlenmesi ve
kurulması gerekiyor (bunu şimdilik bir 19/x görevine dönüştüreceğiz)
vim: bazı eklenti/kısayolları makefile tabanlı projelerle uyumlu yap

Özellikle statik tipli dillerde (ör. C, Go) yapılan kodlamaları kolaylaştıran
bazı eklenti ve kısayollarda şöyle bir sorunumuz var:

- Syntastic eklentisi Makefile'larla derlenen kodlarda gürültü çıkarıyor.
  Örneğin C veya Go ile geliştirilmiş bir projen,n kod ağacında herhangi bir
  kaynak dosya açıldığında Syntastic eklentisi sözdizimi denetimi yaptığında
  hata üretiyor.  Çünkü eklenti daha çok dinamik tipli (ör. Ruby, Python) diller
  için tasarlanmış ve statik tipli dillerde doğru bir sözdizimi denetimi için
  gereken başlık dosyalarının ve kitaplıkların bulunmasında (doğal olarak)
  yetersiz kalıyor.

- Benzer şekilde SingleCompile eklentisi Makefile temelli projelerde yetersiz
  kalıyor, inşa bilgisinin bulunduğu Makefile'ı kullanmıyor.

Çözüm olarak:

- Syntastic eklentisinin "proje"leri algılaması ve proje olması durumunda sessiz
  kalması sağlandı.  Kod ağacı içinde bir Makefile varsa eklenti devre dışı
  kalıyor.  Go dili için küçük bir istisna: Makefile ile derlenen Go
  projelerinde Syntastic tamamen devre dışı kalmıyor, `govet` ile basit
  sözdizimi denetimi yapıyor.  Bu denetim ancak baştan sona derlemek yoluyla
  yakalanabilecek hataları bulamıyor ama yine de hiç yoktan iyi.

- SingleCompile eklentisinin kullandığı kısayolların projelerde "make" yapması
  sağlandı.  Yani aynı kısayol tek dosyalık basit kodlarda SingleCompile
  eklentisini kullanırken projelerde Makefile ile derleme yapıyor.

Bu değişikliklere ilave olarak her iki eklenti için Go desteği (basit düzeyde)
eklendi.
lib:sh: yeni işlev `isnull`, değişken ilklendirilmiş mi?
lib:sh: `usetempdir`'ın reentrant olmasını sağla

Bu işlev her çağrıldığında henüz sonlanmamış (kabuk devam ediyor) önceki
çağrının çıkışta geçici dizini silen `trap` eyleminin üzerine yazıyordu.  Yeni
gerçeklemede tüm geçici dizinler bir dizide toplanıyor ve toplu halde siliniyor.

Dikkat!  İşlev bu haliyle Bash'e özgü.
x: kitaplık değişikliğinden dolayı yeniden üret
lib:sh:git depo güncellemelerini algılayan yeni işlevler

Depo güncellendiğinde tetiklenen bazı işlemler var.  Kod tekrarını önlemek için
değişiklikleri algılayan kodları bir kaç işlevde topladık.
x: kitaplıklardaki değişikliklere uyarla
task:depo: kitaplık işlevlerini kullan
task:vim: gocode ve command-t eklentilerini derle

- Command-T eklentisi (\t tuşu) kod ağacında belirli bir dosyayı çok çabuk
  şekilde bulmaya ve açmaya yarayan bir eklenti.  Eklentinin çalışması için C
  ile yazılmış ve Ruby'den çağrılan bir kodun derlenmesi gerekiyor.  Dikkat!  Bu
  kod ruby1.8 ile çalışıyor, ruby1.9'da sorun çıkarıyor (Vim çöküyor).
  Dolayısıyla ruby1.8 kurulu olmalı (görevde bu da denetleniyor).

- Gocode Vim omni-completion'da (C-X C-O kısayolu) işlev damgalarını gösteren
  önemli bir yardımcı program.  Bu programın Vim'de kullanılması için derlenmesi
  ve kurulması gerekiyordu.  Bu işlem artık bu görev kapsamında
  gerçekleştiriliyor.  Dikkat!  golang-weekly paketi kurulu olmalı.
task:debian: golang-weekly paketini tam kuruluma ekle
task:vim: command-t eklentisinde ext.so dosyasının yokluğunu dikkate al

Aksi halde eski kurulumlarda bu görev çalışmaz.
task:vim: gocode deposunu doğru şekilde güncelle

Sudo'nun bir özelliği var, kabuk işlevlerini sudo ile çağıramıyorsunuz.  Bu
sorunu aşmak için mecburen ilgili işlevin yaptığı işlemi açarak gerçekleştirdik.
vim: yeni dosya make.snippets
vim: yeni eklenti vim-space

Tekrarlı eylemlerin boşluk tuşu kullanarak yapılmasını sağlıyor.  Örneğin
arama'da "sonraki/önceki" bulunanlara "n/p" tuşlarıyla geçmek yerine
"boşluk/shift-boşluk" kullanabilirsiniz.  Tekrarlı eylem arama ile sınırlı
değil, quickfix'de sonraki/önceki hatalara geçişler gibi başka eylemler de var.
task:ruby: debian'da alternatif sistemine geçildi, görevi uyarla

Eski sistemde Ruby için Debian alternatif sistemi kullanılmıyordu, bunu biz
kuruyorduk.  Artık yeni paketlerde bu sistem kullanıldığına göre görevi buna
uyarlamamız gerekiyor.  Bu uyarlama sırasında eski görevde kullanılan alternatif
şemasındaki bazı hatalar da düzeltildi.  Bu görev eski sistemlerde de iş görmeye
devam edecek.
vim: Obvious-Mode eklentisini sil
vim: hata düzelt; vim'den çıkıldığında ekran temizlenmiyor