[Gelistirici] Pisi.vim - Paketçilier için Vim eklentisi
Fatih Arslan
farslan at pardus.org.tr
13 Ara 2010 Pzt 23:47:23 EET
Merhaba,
Gerek ofiste, gerekse kişisel olarak kullandığım macrolardan yola
çıkarak, kapsamlı bir Vim eklentisi yazdım :) Kullandığım macroların çok
düzensiz olmasından dolayı da içim rahat etmedi. Neyse ki Vim'in güzel
bir Python eklenti desteği var. Eklentinin ne yaptığına gelirsek:
Şuradan indirip: http://cekirdek.pardus.org.tr/~farslan/pisi.vim
.vim/plugin/ altına atıyorsunuz.
Normal moda iken:
<F2>h pspec.xml'deki arşiv dosyalarını indiri ve sha1sum günceller
<F2>c history tag'in altına yeni bir <update> tag'i oluşturur
<F2>o pspec.xml'deki anasayfayı xdg-open ile açar
<F2>p files dizine konulan, .patch ve .diff uzantılarını ekler
<F2>w pscep.xml açıksa actions.py dikey olarak açar, ya da tam tersi
<F2>d vimdiff kullanarak yanyana dosyanın son halini gösterir
<F2>t comment tagina yazdığınız bölümden commit için dosya oluşturur
<F2>s bir üsteki dosyayı bir güzel commit eder :)
Tüm kısa yolları değişterebilirsiniz. Tamamen size bağlı. Gelelim
ayrıntı ve özellikle dikkat ettiğim bazı noktalara
**************************************************************************
<F2>h
-----
Bu fonksiyon Fatih'in kullandığı fonksiyonun aynısı. En güzel özelliği
birden fazla arşiv dosyası varsa hepsini birden indirmesi. Diğer bir
güzelliği ise, doğrudan pisi'yi kullandığı için, indirilmiş bir dosya
varsa tekrar indirmiyor.
<F2>c
-----
İlk defa kullanıyorsanız ~/.packagerinfo altında bir dosya oluşturacak.
Doğrudan _vim_ üzerinden isminizi gireceksiniz. Bunun için özel vim
fonksiyonu kullandım. Bunu bir kere yaptıktan sonra, hangi paketi
güncellerseniz güncelleyin her daim isminizle <Update> tag ekleyecek.
Burada güzel olan ise
release otomatik olarak artıyor
version bir öncekini alıyor
tarih ise o günün tarihini alıyor
Ve sizi boş bir <Comment></Comment> ortasına bırakıyor :)
<F2>o
-----
Homepage'de yazılan siteyi doğrudan öntanımlı olan tarayıcıda açıyor.
Bu da xdg-utils sayesinde oluyor
<F2>p
-----
Bu komutu çok seviyorum. _files_ klasörüne eklenen yamaları eklemenizi
sağlar. Burada doğrudan svn st'deki "?" ve "A" flaglarına ve ".patch" ,
".diff" son eklerine dikkat ettim. İleride daha ayrıntılı da
yapabiliriz. İmleçi <Patches> taglerinden birinin üstüne getirmeniz
gerekiyor. İlk yaptığım sürümde istediğiniz yerde ekliyordu, fakat bir
dosya'da birden fazla paket olma ihtimali, ve her paketin kendi patch
düzeneği ihtimali olacağından bunu eş geçtim(örnek: zlib).
İmleç <Patches> üzerinde ise altına level="1" attribute ile yapıştırıyor
İmleç </Patches> üzerinde ise üstüne level="1" attribute ile yapıştırıyor
<F2>w
-----
Bunu sıkça kullandığım için ekledim. pspec.xml dosyasını düzenliyorsanız
size dikey olarak actions.py açacak, eğer actions.py kurcalıyorsanız,
size diket olarak pscep.xml açacak. C'deki ,h gibi düşünebilirsiniz
<F2>d
-----
Bu özellik de _monoton_ "svn diff" özelliğinden çok daha iyi bir çıktı
veriyor. O an üzerinde olduğunuzda dosyanın bir önceki revision ile
diffini yanyana gösteriyor. vi -d dosya1 dosya2 çağırır gibi yani. Bunu
svn kontrolu altında olan her dosya için yapabilirsiniz.
<F2>t
-----
Belki de en güzel özelliklerden birisi. Comment tagina yazıdığınız
comment'den bir dosya oluşturuyor. Dosya adı commit-msg.tmp. Bu dosya
adı o anki dizinin içinde bulunuyor. Artık pencere,buffer,tab açarak
comment'deki yorumu kopyala/yapıştırmaya son. Bu fonksiyonu güzel yapan
özellikler ise:
* tıpkı svn gibi yazdığınız commit mesajı kaybolmuyor, commit-msg.tmp
dosyasına kaydediliyor
* otomatik olarak vim'in = indentationunu kullandım. Piksemel ile
gelen data malesef düzgün gelmiyor, bu şekilde düzelmiş oluyor
* bir sonraki komut ile bu mesajı doğrudan commit edebilirsiniz :)
<F2>s
-----
Oluşturduğunuz commit-msg.tmp'yinin içereğini commit etmenizi sağlar.
Sonra da dizin içindeki dosyayı siler.
**************************************************************************
Şu an için gayet güzel çalışıyor, gerçi eklenti 1-2 günlük yani çok test
edemedim, hatta commit fonksiyonu svn-hook ile test edebildim ancak, ama
şu 1-2 saatlik kullanımda bir sıkıntı yaşamadım. Zamanla olgunlaşır.
İleride eklenecek özellikler arasında şunları düşünüyorum:
checkelf ile bulunan runtime bağımlılıklar eklenecek
pspec.xml validation yapacak commit'den önce
devel/stable merge
Karşılaştığınız hataları bildirirseniz sevinirim. Bunun dışında şu olsa
güzel olur, şu olmazsa, şu şöyle olsa, ... tarzında mesajlarınızı da
yazarsanız sevinirim :)
Son olarak bu cümle'de Emacs'e gelsin:
"Float like a butterfly, sting like a bee" ;)
--
Fatih Arslan
Gelistirici mesaj listesiyle ilgili
daha fazla bilgi