Tuesday, October 26, 2004

Emacs

Emacs hic kuşkusuz, bol özellikli, ve esnek bir editor. Emacs,

* LISP'i andıran bir dil ile her şeyini değiştirmenize izin veriyor.
* Gene LISP kullanarak özellik eklemenize izin veriyor (ne isterseniz).
* Her programlama dili icin bir 'kip' (mode) desteği var. Mesela 'sadece' Java yazarken "if kelimesinden sonra otomatik aşağı satıra git" gibi bir tanım Emacs için cok kolay. Bu gibi ayarlar, .emacs config dosyasından rahatça yapılıyor.
* Emacs ve dış dünya bağlantısı rahat. Unix komutlarını Emacs içinden işletmek mümkün. (Esc-x shell)
* Emacs içinden dış kaynak kodları derleme, ve sonuçları tarayıp hatalı olan satırı göstermek çok rahat.

Ekte göstereceğimiz kodlar, benim .emacs config dosyamdan alındı. İlk önce açıklamayı, sonra kodun kendisini sunacağım.

Örnek .emacs

Emacs içinden ANT programı ile derleme yapmak.

(setq compile-command "ant -emacs -find ")

Metin incelerken, Emacs göstergesinden, kaçıncı satırda olduğumuzu görmek:

(setq column-number-mode t)

Sevdiğim renkler..

(set-face-background 'modeline "darkred")
(set-face-foreground 'modeline "white")
(set-face-foreground 'region "lightgrey")
(set-face-background 'region "white")
(set-background-color "navyblue")
(set-foreground-color "white")
(set-cursor-color "turquoise")

Sevdiğim boyutlar..

(set-frame-width (selected-frame) 83)
(set-frame-height (selected-frame) 49)

Tuşların ne yaptığını tamamen değiştirebilirsiniz. Şahsen ben ok tusları yerine (uzak oldukları için) Control tuşu ile alfabe harflerine beraber basarak ileri-geri gitmeyi tercih ediyorum. 4 yön için, sol = control-J, sağ = control-L, yukarı = control-P ve aşağı = control-N kullandık.

(define-key global-map "\C-m" 'newline-and-indent)
(global-unset-key "\C-f")
(global-unset-key "\C-w")
(global-unset-key "\C-d")
(global-unset-key "\C-l")
(global-unset-key "\C-p")
(global-unset-key "\C-j")
(global-unset-key "\C-k")
(global-unset-key "\C-o")
(global-set-key "\C-o" 'other-window)
(global-set-key "\C-p" 'previous-line)
(global-set-key "\C-k" 'backward-delete-char-untabify)
(global-set-key "\C-n" 'next-line)
(global-set-key "\C-j" 'backward-char)
(global-set-key "\C-f" 'backward-kill-word) ;; geriye git, kelime sil
(global-set-key "\C-w" 'backward-word) ;; geri git, kelime atla
(global-set-key "\C-d" 'forward-word) ;; ileri kelime atla
(global-set-key "\C-l" 'forward-char) ;; ileri git
(global-set-key "\C-p" 'previous-line) ;; onceki satir
(global-set-key "\C-t" 'kill-line) ;; satir sil
(global-set-key "\C-x\c" 'compile) ;; derle
(global-set-key [f9] 'kill-buffer) ;; hafizadaki metni hafizadan cikar
(global-set-key "\C-c\i" 'indent-region) ;; dile gore, secilmis alani duzenle
(global-set-key "\C-c\k" 'kill-region) ;; secilmis alani sil
(global-set-key "\C-c\c" 'copy-region-as-kill) ;; secilmis alani kopyala
(global-set-key "\C-c\u" 'scroll-cursor-to-top)
(global-set-key "\C-x\q" 'query-replace) ;; ara ve degistir
(global-set-key "\C-x\g" 'goto-line) ;; satir no'ya atla

Emacs programlama dili kiplerinden bahsetmiştim. Bu kiplere geçmek için "Esc-x java-mode (enter)" gibi komut işletirseniz Emacs kipe geçecektir. Fakat eğer bu geçişin otomatik olmasını istiyorsanız, aşağıdakini yapabilirsiniz.

(setq auto-mode-alist
(append '(("\\.C$" . c++-mode)
("\\.cc$" . c++-mode)
("\\.cpp$" . c++-mode)
("\\.log$" . hscroll-mode)
("\\.cxx$" . c++-mode)
("\\.hxx$" . c++-mode)
("\\.h$" . c++-mode)
("\\.hh$" . c++-mode)
("\\.idl$" . c++-mode)
("\\.c$" . c-mode)
("\\.pl$" . perl-mode)
("\\.java$" . java-mode)
("\\.jsp$" . java-mode)
("\\.inc$" . html-mode)
("\\.rb$" . ruby-mode)
("\\.?[Ff][Aa][Qq]$" . faq-mode)
("\\.txt$" . text-mode))
auto-mode-alist))

Ayrıca, Emacs kullanırken Control tusunu çok kullanmak gerekiyor. Yeni bilgisayarların çogunda Control tuşu oldukça alttadır. Sürekli Ctrl tuşuna basacağım derken Emacs kullanıcıları el felci geçirmesin diye, çözüm olarak CAPS tuşunu Control tuşuna çevirmek iyi olabilir. CAPS düğmesi yukarıda olduğu için, sol serçe parmağı ile basmak çok rahhattır.

Bu değişimi Windows 2000 üzerinde yapmak için, ekteki dosyayi indirip, üzerine tıklayın. Sorulan soruya evet diye cevap verin. Bilgisayarı kapatıp açtıktan sonra, CAPS düğmeniz Control gibi işliyor olacak.


No comments: