[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