osa1 feed

Vim için Clojure çalışma ortamı(vimclojure + SLIMV)

July 1, 2011 - Tagged as: vim, lisp, tr.

Islah olmaz bir Vim kullanıcısı olduğumdan(yine de Vim ile Java yazmayı denemiyorum, heh), her işimi Vim ile görmeye çalışıyorum. Şu ana kadar kullandığım diller arasında, Java’yı saymazsak, beni en çok uğraştıran Clojure oldu.

Genel olarak 2 yol var. Birincisi, Emacs’in SLIME klonu olan SLIMV. Common Lisp, Scheme ve Clojure için kullanılabiliyor. Fakat Clojure desteğinde bazı sorunlar var. İkincisi, vimclojure. Clojure düzenleme yetenekler SLIMV’e göre çok daha iyi, ama REPL kısmı biraz sıkıntılı. Lein REPL kullanamıyorsunuz, Nailgun kullanıyor. Yavaş çalışıyor. Göçtüğünde bir daha başlatması, bir işlemde takıldığında durdurması vb. şeyler zor.

Benim izlediğim yol, SLIMV üzerine vimclojure syntax renklendirme ve indentation scriptlerini kullanmak oldu. Normalde SLIMV’in Clojure indentation kısmında birkaç problemi var. Clojure keyword’lerini de tanıymıyor.

Bunu yapmanın en kolay yolu, benim vim ayar dosyalarımı çekip(github) veya ayar dosyalarımdan /bundles/slimv/i çekip gerekli yerlere atmak. Onun dışında, bir hata durumunda bana sövmeyin diye ne yaptığımı da açıklayayım. Standart SLIMV(0.8.4 kullandım, 0.8.5 REPL ekranı daha yavaş çalıştı nedense, yazarı olmaması gerektiğini söyledi ama, bir daha kurcalayacağım bir ara) altına, autoload klasörü oluşturup vimclojure autoload scriptini kopyaladım. Bu bana vimclojure fonksiyonlarını sağladı(syntax renklendirme ve indentation için gerekecek). Daha sonra slimv/indent/clojure.vim ve slimv/syntax/clojure/slimv-syntax-clojure.vim dosyalarının içeriğini vimclojure scriptlerininkiyle değiştirdim. Bu kadar.

SLIMV’in eksikleri var. Geliştiricisiyle stackoverflow’da karşılaştım ve şu anda birkaç eksikliği düzeltmek için uğraşıyor. Birincisi, lein repl kullanmasına rağmen, javadoc source gibi bazı fonksiyonları (use '[clojure.repl :only (source apropos dir pst doc find-doc)]) ile kullanmanız gerekiyor. Normalde terminalden lein repl ile çalıştırırsanız bunları direkt kullanabiliyorsunuz ama. İkincisi, program bir noktada takılırsa(uzun bir işlem vs) durdurmanın bir yolu yok(ya da ben bulamadım).

Aslında SLIMV varken sıfırdan bir Clojure scripti yazmak çok saçma geldi bana. Vimclojure yazılacağına SLIMV Clojure desteği üzerinde uğraşılsaymış çok daha güzel birşey olacakmış. Şimdi ben kendim ikisinin güzel özelliklerini kullanmaya çalışıyorum mesela.