Çarşamba, Ekim 08, 2008

Güncellenmiş Yeni Php Modu

Buradan indirebilirsiniz.

Sourceforge.net php-mode ile eski mewde php-mode karması; sourceforge php-mode özelliklerinin tümü destekleniyor; eski php-mode daki tab tuşuyla açık tüm bufferlardaki kelimeleri; tüm php fonksiyonlarını tamamlama; php fonksiyon şablonları desteği de sürüyor. Outline minor-mode ve imenu-speedbar desteği artık entegre; dotemacs yapılandırmasına gerek duymuyor.

Eskisinden iyi tarafı; tekli yorum satırı ardından renklendirme hatasının giderilmesi; girintilemenin hem c-modu kurallarıyla; hemde deboutv modundaki şekliyle yapılabilmesi ki bu esneklik hiç girintileme sorunu kalmaması anlamına geliyor; iki modun tüm güçlü özelliklerini üstünde toplaması.

Eskisinden eksik yanları; php templateleri otomatik girilmiyor : M-x php-template-TAB tuşuyla ilgili fonksiyonu açılan listeden seçip şablonlama desteğini kullanabiliyorsunuz. İstisna olarak Php Class ve Fonksiyon Şablonlarının öntanımlı kısayolları mevcut; Source(Kaynak) Dosyalar menüsü artık yok. 

Ama sourceforge php-mode menüsü; class ve fonksiyonlara göre öntanımlı kapalı foldingle gelen entegre outline-minor mode menüsü; php-template menüsü ki şablonunuzu bu menüden de seçip girebilirsiniz; header, footer ve date templateleri halen mevcut. Speedbar ve İmenü desteği de ayrıca dotemacs dosyası ayarı gerektirmiyor, modun içinde...Class ve Fonksiyon browserı php5 uyumlu; public, private ve protected fonksiyon ayrımı yapıyor(hem outline içinde; hem de imenü ve speedbarda).

İki aydır kullanıyorum. Oldukça stabil olduğunu söyleyebilirim. Flymake-php ile kullanıldığında sözdizimi hatalarını anında gösteriyor. Ayrıca yasnippet paketiyle de kullanılabiliyor. 

Bir ara vakit bulduğumda kısa bir screencastle nasıl kullanılabildiğini; özelliklerini tanıtmaya çalışacağım. 

Ayrıca Mewde projesi için de yakında geniş bir güncellemem var; oldukça değişiklik oldu:

Msf-abbrev yerine yas-snippets modu; geliştirilmiş css-modu ve css syntax checking özelliği; yeni js2 javascript modu(elisp-rhino-parseri üstünde-javascript için en benzersiz geliştirme ortamlarından biri); Actionscript3 ve mxml desteği; php-actionscript-mxml-csharp-java için flymake desteği(on-the-fly syntax checking), Güçlü outline ve sorgulama özellikleriyle javascript, actionscript ve css için flyparse modu, tırnak, parantez, köşeli parantez gibi unsurları otomatik çifter giren pair-mode(tinypair-mode yerine; buggy değil ve sorunsuz, kolay kurulumlu),versiyon kontrol desteği(bzr-darcs-svn-git)gibi. Emacs23 üstüne kurulu olması; Envy-Code VS Fontuyla çok şık ve daha iyi görünümlü olarak kullanabilmek gibi altyapısal ve kozmetik anlamda değişiklikler de mevcut. 

Eskisinden daha gelişkin ve kullanışlı bir web kodlama ortamı oldu; ama daha iyi  bir setup ve tanıtıma ihtiyacı var ki, yine zaman bulduğumda uğraşıp bu unsurlarıyla hazır hale getirip yayınlamayı ümit ediyorum. 



Çarşamba, Mayıs 23, 2007

Emacs Web Geliştirme Ortamı Neler Sağlıyor?

Emacs ile Web Sayfası Kodlama

Not: Javascript, Php ve Css modları an itibariyle Emacs Wiki projesinin ilgili sayfalarına eklenmiştir.

Eğer ilk yazıyı okuduysanız; bu yazı Emacs ile nasıl etkin bir şekilde statik ve dinamik web sayfaları hazırlayabileceğinizi göstermek amacıyla yazılmıştır. Bu seri ilgi halinde devam edecektir:) (Şimdilik kendi kes - yapıştır - bul/buluştur yeni GNU Emacs css-javascript-php-smarty modlarımı tanıtmaktan ibaret.)

Not : Xml ve Html kodlama için nxml ve nxhtml modları ayrı bir yazı konusudur. Benim için dünyanın en iyi xml ve html editörleridir. "On the Fly" Gerçek zamanlı validasyon-doğrulama yapabilmektedirler ki web standartlarına uyumlu web sayfası hazırlıyorsanız en çok ihtiyaç duyacağınız şeydir.

Yeni GNU Emacs CSS Mode

emacs_css_modeKarl Landstrom'un css-modu, Alex Shinn'in css-modu ve Stefan Monnier'in css-moduyla (nxhtml-paketiyle gelen) karışım bir yamalı bohçadır. Kazandırdıkları M-ENTER tuş kombinasyonuyla css öznitelik kodu tamamlama; C-c C-c belirli bir bölgeyi yorum satırı haline getirme, C-c C-u url ekleme ve tam imenu desteğidir.Ek olarak Speedbar içerisinden tüm CSS etiketlerine, class ve id'lerine erişim ve dolaşım imkanı sağlar. Ekran görüntüsü yandadır. Resme tıklayıp Flickr sayfasındaki resim notlarıyla daha iyi bir fikir edinebilirsiniz.

Bu modu özellikle nxhtml moduyla beraber kullanmak faydalıdır; çünkü herhangi bir css property için W3C sayfasından yardım sağlamaktadır. Eğer w3m tarayıcısını da kurduysanız Emacs içinden bu yardımdan faydalanırsınız. Ayrıca CSS renk tanımları da hexcolour-display modu ile Emacs içerisinden görülebilmektedir ki Css sayfası kodlamada benim için çok kullanışlı bir özellik. Tinypair-minor-mod ile beraber kullanıldığında parantez, ayraç. ve apostorol gibi karakterler de kendiliğinden siz yazarken tamamlanır. Hepsi projenin dotemacs dosyasında yapılandırılmış durumdadır. İlgili tüm modlar paketin içindedir. Kurulum için ilk yazıya bakınız.

Yeni GNU Emacs Javascript Modu

emacs_js_modeBu modu Xemacs'ın en son javascript modundan GNU Emacs için dönüştürdüm; Bu modla yeni ajax-javascript kütüphanelerini projelerinizde kullanırken (prototype-jquery gibi) Speedbar içinden nesne-fonksiyon dolaşımı ve erişimi sağlanmaktadır. Diğer Emacs Javascript Modları bu özelliği desteklemediklerinden çok kod yazıyorsanız iyi bir özellik:) Ek olarak; Mozilla SpiderMonkey javascript kabuğunun windows sürümü(ve daha fazlası) olarak niteleyebileceğimiz [http://www.jsdb.org jsdb for win32] kabuğuyla Emacs içinden çalışabilme olanağı mevcuttur. Tabii öncelikle ilgili adresten dosyasını indirip C:\ altına yerleştirmeniz ve XP'nin Environment Variables tanımları içinden çalıştığı dizinin "path" tanımını yapmanız gerekmektedir. Bunlar yapıldığında Emacs içinden dotemacs dosyasındaki kısayolla ya da M-x javascript-shell çağrısı yapılarak doğrudan Emacs içinden javascript kodunuzu test edebilirsiniz. Tabii sadece temel algoritmalar ve döngüler ile sınırlı olarak; çünkü "Browser" Nesnemiz ancak Firefox tarayıcınız açıkken kullanılabilir.

Bu sorunun da çözümü ve Mozilla-Firefox ortamlarında tam javascript debugging desteği küçük bir javascript-minor mod ile (ve tabii extension-developer firefox eklentisiyle) sağlanmaktadır. İlgili firefox eklentisini kurduğunuzda, önce firefox içinden bir debugging portu açabilir, sonra Emacs içinden firefox ile bağlantı kurup doğrudan kodlarınız gerçek bir debug ortamında test edebilirsiniz. (Bununla ilgili ekran görüntülü bir yazı hazırlamak ta yapılacak işler arasında.)

En ideali bu bağlantının "firebug" eklentisiyle sağlanması olur, şu an için böyle bir destek mevcut değil.(Belki ben denerim:)) Ayrıntılar için flickr resmine tıklayıp fotonotlarıyla daha fazla fikir edinin...

Yeni GNU Emacs PHP Modu


php_mode_with_w3mÖncelikle iyi haberden başlayayım; geliştiricisi proje sayfamı da bildirdikten sonra bir cevap gönderdi. Hafta sonuna kadar Emacs için yaptığım düzeltmeyi yayınlayıp sonraki sürümde de Xemacs ve Emacs desteğini aynı paket içerisinde vereceğini duyurdu ki; olay benim acemi ellerimden kurtulmuş olacağından iyi haberdir:)Aynı durum altta açıklaması verilen "Smarty-Modu" için de geçerlidir.

Bu mod Xemacs ile gelen PHP Modu değildir; Deboutv tarafından hazırlanmış ve çok iyi belgelenmiş bir moddur. İlgili Adreste tüm detayları hakkında hem html, hem de pdf formatında belgelendirme mevcuttur. Bu belgeler indirdiğiniz paket içerisinde de beraber geliyorlar. Bunu keşfettiğim anki sevincimi tarif edemem:) Bu mode hem tüm bilinen php fonksiyonlarını Apple MacOSX bilgisayarların meşhur Metin Düzenleyicisi "Textmate" gibi şablon olarak yazmanıza, hem de otomatik kod tamamlamaya imkan veriyor ki GNU Emacs için bu kapsamda bir PHP Modu yoktu. Emacs ile php yazanlar Vim karşısında ezikti:) vs.vs. Şimdiki hali ise "Gelsin Zend Studio" kıvamında, üstelik Yüzlerce MB sistem kaynağınız harcanmadan ve ücretsiz.(Eclipse PHPIDE'den hiç bahsetmiycem, evet herşeyi var ama 1gb raminizi çalışırken yiyebilen çok fazla uygulama örneği de yok:(.

Bittabii ki GNU Emacs ile çalışmıyor, üstelik GNU Emacs ile gelen PHP Modunun bazı avantajlarını da bünyesinde barındırmıyordu. Acemi Emacsçı olarak sorunu nasıl çözebilirim diye bakındım; yine kes-yapıştır-tak takıştır taktiği ile işin içinden çıkmayı başardım. Şöyle ki:

GNU Emacs php modundan; browse manual, check syntax, find documentation, speedbar ve imenu desteği sağlayan fonksiyonları alıp içine kopyaladım.XEmacs bağımlı mod yapısını da Emacs içindeki karşılıkları ile değiştirdim. (Merak edenler orjinalini adresinden indirip karşılaştırabilir, Bu da aslında win32 içinden güzel bir "Emacs ve ediff" örneği olurdu ama an itibariyle fazla gelecek:). Tüm şablonlar, kod tamamlama ve renklendirme gerektiği gibi çalışıyor. Şablonlar tüm php fonksiyonlarını, sınıf ve döngü yapılarını "Textmate stili ekleyebilmenize imkan veriyor.TAB tuşuyla otomatik olarak tamamlanıyor.Eğer cygwin+w3m desteğini kurduysanız, php kodunuzdaki ilgili fonksiyonu gösteren satırdan w3m ile Emacs içinden ilgili PHP Manual sayfasına gidebiliyorsunuz. Yine PHP yolunuzu win32 enviroment variable içinde tanımladıysanız; f12 tuşuna basarak hatalı sözdizimi var mı kontrolü yapabiliyorsunuz.Ayrıca, tüm özellikleri kendinize göre özelleştirebiliyorsunuz. Xemacs php-modu belgelendirme sayfasını muhakkak kontrol edin: http://deboutv.free.fr/lisp/php/index.php Yine Flickr Resmine tıklayarak Fotonotlarını izleyip daha iyi bir fikir sahibi olabilirsiniz.

Yeni GNU Emacs Smarty Modu

Bu da php-modu ile aynı yerden gelme. Sadece Xemacs ile çalışıyordu, şimdi GNU-Emacs ile de çalışıyor:) Tüm Smarty fonksiyon ve şablonları yine textmate stiliyle ve tab tamamlamayla kullanılabiliyor. Bu modu html modu ile aynı dosyada dönüşümlü kullanabilmek için dotemacs dosyamızda iki adet tuş kısayolu tanımı da mevcuttur. Ayrıntılı bilgi ve belgelendirme : http://deboutv.free.fr/lisp/smarty/index.php

MSF-ABBREV MODU

Bu mod için hiç bir emeğim yoktur; Sözkonusu mucizenin adresi şuradır:) http://www.bloomington.in.us/~brutt/msf-abbrev.html İşte Emacs kullanıcılarının MAC kullananlar karşısında kompleks duymamalarını sağlayan moddur. İlgili adreste hem de C dili kodlamasında nasıl kullanıldığını gösteren detaylı bir animasyonlu gif demosu mevcuttur.Ben sadece bazı temel html abbrevleri ekledim. Bu "snippetler" link-style-page-doctype-script-img-a etiketleri ve sıfırdan sayfa girme için page şablonudur.

En güzel tarafı sağladığı olanaklardır. Eğer Herhangi bir programlama framework altyapısı kullanıyorsanız, textmate için sağlanan "snippetları" örnek alarak, kendi abbrevlerinizi oluşturabilir ve çok hızlı kod üretebilirsiniz. Örneğin PHP için Symfony, Cake-PHP, Code Igniter, Zend; Javascript ve Ajax için Prototype, Jquery, Mootools, Dojo, Python için Django, Turbo Gears; Ruby için Rails(ki bunun harika bir Emacs Modu var, kasmanıza lüzum yok). Ben henüz hiçbirini kullanmadığımdan çevirisini yapmadım. Ama cidden kolay, demosunu ve belgelendirmesini inceleyin, hak vereceksiniz...

Diğer Yardımcı modlar ve Yapılandırma için Dotemacs Dosyam:

Tüm diğer modlar site-lisp dizini içindedir.

  • Apache-Mode : Apache yapılandırma dosyalarını düzenleme için
  • Ascii-Table : Ascii karakterleri kolayca tarayıp ekleyebilmek için
  • Color-Theme : Emacs ortamınızın iyi görünmesi için.
  • CSV Mode : Virgülle ayrılmış dosyaları düzenlemenizi ve tablo şeklinde görmenizi sağlar.
  • Hexcolour Mode : CSS dosyalarınızdaki renk kodlarını görüntüler.
  • Linkd Mode : Emacs içinden dosya sisteminizdeki herhangi bir dosyaya türüne göre anlaşılabilecek bir resimle bağlantı vermenizi ve bu bağlantılar arasında dolaşabilmenizi sağlar. Proje dolaşımı için mükemmel bir mod.
  • Pabbrev Mode: Bulunduğunuz buffer içerisindeki her kelimeyi tarayıp tabla otomatik tamamlar.
  • Textile Mode : Textile formatındaki dosyaları WYSWIG olarak görüp yazabilmenizi sağlar.
  • Tinypair Mode : Otomatik parantez, köşeli parantez, apostorol işareti vb. kendiliğinden tamamlar.
  • Wcy-swbuff.el : Emacs bufferları arasında Ctrl+TAB kestirmesiyle dolaşmanızı sağlar.
  • Webblogger Mode: Blogger türü yazılımlara Emacs içinden doğal xml-rpc arayüzünden erişim ileyazı ekleme ve düzenleme imkanı verir.

Dot Emacs Dosyam

(custom-set-variables
;; custom-set-variables was added by Custom.
;; If you edit it by hand, you could mess it up, so be careful.
;; Your init file should contain only one such instance.
;; If there is more than one, they won't work right.
'(TeX-DVI-via-PDFTeX nil)
'(TeX-PDF-mode nil)
'(TeX-show-compilation t)
'(buffer-encoding (quote utf-8))
'(debug-on-error t)
'(htmlize-view-print-visible t t)
'(ispell-program-name "aspell")
'(javascript-shell-command "jsdb");;Javascript Shell from jsdb.org
'(javascript-shell-command-args (quote ("eval")))
'(menu-bar-mode nil)
'(nxhtml-default-encoding (quote utf-8))
'(nxhtml-load t);;Autoloading NXHTML Mode with css-js-php support
'(nxhtml-skip-welcome t)
'(nxml-slash-auto-complete-flag t)
'(pr-gs-command "c:\\gs\\gs8.56\\bin\\gswin32c.exe")
'(pr-gv-command "C:\\Program Files\\Ghostgum\\gsview\\gsview32.exe")
'(prefer-coding-system (quote utf-8))
'(recentf-mode t)
'(scroll-bar-mode nil)
'(selection-coding-system (quote utf-8-dos))
'(show-paren-mode t)
'(speedbar-show-unknown-files t);;All file can view inside speedbar
'(tidy-shell-command "c:/WINDOWS/tidy.exe");; For html tidy
'(tool-bar-mode nil)
'(transient-mark-mode t)
'(tumme-cmd-create-temp-image-program "c:/ImageMagick/convert.exe");;Picture vieving emacs inside (Emacs w32 Mode Addition
'(tumme-cmd-create-thumbnail-program "c:/ImageMagick/convert.exe")
'(tumme-cmd-rotate-thumbnail-program "c:/ImageMagick/mogrify.exe")
'(unibyte-display-via-language-environment t)
'(unify-8859-on-decoding-mode t)
'(utf-8-compose-scripts t)
'(utf-fragment-on-decoding t)
'(w32-print-menu-show-print nil)
'(w32-print-menu-show-ps-print nil)
'(w32shell-cygwin-bin "C:\\cygwin\\bin") ;;Emacs W32 Cygwin Shell Support
'(w32shell-msys-bin "C:\\msys\\1.0\\bin");;Emacs W32 MSYS Shell Support
'(w32shell-shell (quote cmd));;Emacs W32 Shell support
'(w3m-command "C:\\cygwin\\bin\\w3m.exe");;Emacs W32 W3M Support
'(w3m-use-tab t))

(custom-set-faces
;; custom-set-faces was added by Custom.
;; If you edit it by hand, you could mess it up, so be careful.
;; Your init file should contain only one such instance.
;; If there is more than one, they won't work right.
)
(set-default-font "-outline-Bitstream Vera Sans Mono-normal-r-normal-normal-13-97-96-96-c-*-utf-8")

(require 'color-theme)

;; Extra Color Themes from org mode author

(load "color-theme-cl-frame.el")
(load "color-theme-rlx.el")
(load "color-theme-colorful-obsolescence")

;(color-theme-charcoal-black)
;(color-theme-rlx)
;(color-theme-cl-frame)
(color-theme-colorful-obsolescence)
;(color-theme-blippblopp)
;(color-theme-charcoal-black)
;(color-theme-infodoc)
;(color-theme-jb-simple)
;(color-theme-digital-ofs1)
;(color-theme-goldenrod)
;(color-theme-comidia)

(setq query-replace-highlight t)
(setq search-highlight t)
(setq font-lock-maximum-decoration t)


;; My Global Key shorcuts

(global-set-key [f5] 'smarty-mode)
(global-set-key [(C f5)] 'surround-region-with-tag)

(global-set-key [f6] 'php-mode)
(global-set-key [(M f6)] 'list-colors-display)
(global-set-key [(shift f6)] 'tinypair-mode)
(global-set-key [(C f6)] 'cua-mode)


(global-set-key [f7] 'fold-dwim-toggle)
(global-set-key [(shift f7)] 'fold-dwim-show-all)
(global-set-key [(C f7)] 'fold-dwim-hide-all)
(global-set-key [(M f7)] 'setnu-mode)

(global-set-key [(shift f8)] 'color-theme-colorful-obsolescence)
(global-set-key [(C f8)] 'color-theme-rlx)
(global-set-key [(M f8)] 'color-theme-cl-frame)

(global-set-key [f9] 'nxhtml-mode)
(global-set-key [(shift f9)] 'html-mode)
(global-set-key [(C f9)] 'comment-region)
(global-set-key [(M f9)] 'uncomment-region)

(global-set-key [(f11)] 'pabbrev-mode)
(global-set-key [(shift f11)] 'hs-minor-mode)
(global-set-key [(C f11)] 'imenu-add-menubar-index)
(global-set-key [(M f11)] 'javascript-shell)

(global-set-key [(shift f12)] 'php-browse-manual)
(global-set-key [(M f12)] 'php-search-documentation)
(global-set-key [(f12)] 'php-check-syntax)
(global-set-key [(C f12)] 'speedbar)


;; Hexcolour Mode, showing colors inside css mode

(require 'palette);; This is palette.el

(autoload 'hexcolour-mode "hexcolour" nil t nil)
(defvar hexcolour-keywords
'(("#[abcdef[:digit:]]\\{6\\}"
(0 (put-text-property (match-beginning 0)
(match-end 0)
'face (list :background
(match-string-no-properties 0)))))))

(defun hexcolour-add-to-font-lock ()
(font-lock-add-keywords nil hexcolour-keywords))


(add-hook 'css-mode-hook 'hexcolour-add-to-font-lock)
(add-hook 'css-mode-hook 'imenu-add-menubar-index)


;;rnc mode - nxml dosyalarini duzenleme icin

(autoload 'rnc-mode "rnc-mode")
(setq auto-mode-alist
(cons '("\\.rnc\\'" . rnc-mode) auto-mode-alist))

;; DTD mode
(autoload 'dtd-mode "tdtd" "Major mode for SGML and XML DTDs." t)
(autoload 'dtd-etags "tdtd"
"Execute etags on FILESPEC and match on DTD-specific regular expressions."
t)
(autoload 'dtd-grep "tdtd" "Grep for PATTERN in files matching FILESPEC." t)
(setq auto-mode-alist (append (list
'("\\.dcl$" . dtd-mode)
'("\\.dec$" . dtd-mode)
'("\\.dtd$" . dtd-mode)
'("\\.ele$" . dtd-mode)
'("\\.ent$" . dtd-mode)
'("\\.mod$" . dtd-mode))
auto-mode-alist))

;;open office ve mozilla arsiv dosyalarını diredde acik gormek icin

(setq auto-mode-alist (cons '("\\.xpi$" . archive-mode) auto-mode-alist))

(setq auto-mode-alist (cons '("\\.sx$" . archive-mode) auto-mode-alist))

;; Ctrl+Tab for buffer switching

(require 'swbuff)

(require 'wcy-swbuff)
(global-set-key (kbd "") 'wcy-switch-buffer-forward)
(global-set-key (kbd "") 'wcy-switch-buffer-backward)


;; PHP Mode handling drupal module and other content-types

(setq auto-mode-alist
(append '(("\\.\\(php\\|module\\|engine\\|inc\\|thtml\\)\\'" . php-mode)) auto-mode-alist))

(setq interpreter-mode-alist (append '(("php" . php-mode))
interpreter-mode-alist))


;; Po files edit mode

(autoload 'po-mode "po-mode"
"Major mode for translators to edit PO files" t)
(setq auto-mode-alist (cons '("\\.po\\'\\|\\.po\\." . po-mode)
auto-mode-alist))

;; CSS, Javascript, php and txt mode use tinypair mode for automatic insert brackets, " characters, this tinypair.el file comes with tinytools

(require 'tinypair)

;; Match Paren function

(global-set-key "%" 'match-paren)
(defun match-paren (arg)
"Go to the matching paren if on a paren; otherwise insert %."
(interactive "p")
(cond ((looking-at "\\s\(") (forward-list 1) (backward-char 1))
((looking-at "\\s\)") (forward-char 1) (backward-list 1))
(t (self-insert-command (or arg 1)))))

;; Cygwin w3m loading

(require 'w3m)
(setq browse-url-browser-function 'w3m-browse-url)

(require 'w3m-load)
(require 'pabbrev)
(require 'setnu)

;; show ascii table
;; optained from http://www.chrislott.org/geek/emacs/dotemacs.html
(defun ascii-table ()
"Print the ascii table. Based on a defun by Alex Schroeder "
(interactive)
(switch-to-buffer "*ASCII*")
(erase-buffer)
(insert (format "ASCII characters up to number %d.\n" 254))
(let ((i 0))
(while (<>")
(goto-char (+ end 2 (length tag-name)))
(insert "")))


;;Apache Mode-Handling Apache files

(autoload 'apache-mode "apache-mode" "autoloaded" t)
(add-to-list 'auto-mode-alist '("\\.htaccess$" . apache-mode))
(add-to-list 'auto-mode-alist '("httpd\\.conf$" . apache-mode))
(add-to-list 'auto-mode-alist '("srm\\.conf$" . apache-mode))
(add-to-list 'auto-mode-alist '("access\\.conf$" . apache-mode))


;; Automatic imenu support for some modules

(setq javascript-load-hook (quote (imenu-add-menubar-index)))
(setq javascript-mode-hook (quote (imenu-add-menubar-index)))
(setq html-load-hook (quote (imenu-add-menubar-index)))
(setq html-mode-hook (quote (imenu-add-menubar-index)))
(setq emacs-lisp-load-hook (quote (imenu-add-menubar-index)))
(setq emacs-lisp-mode-hook (quote (imenu-add-menubar-index)))
(setq latex-load-hook (quote (imenu-add-menubar-index)))


;; Mozilla javascript console connection

(add-hook 'javascript-mode-hook 'js-mode)
(autoload 'js-mode "js-mode" nil t)


;; MSF-ABBREVS Mode- Textmate like snippets:)

;; ensure abbrev mode is always on

(setq-default abbrev-mode t)

;(msf-abbrev-load-tree "c:/Program Files/Emacs/site-lisp/mode-abbrevs")

(require 'msf-abbrev)
(setq msf-abbrev-verbose t) ;; optional
(setq msf-abbrev-root "c:/Program Files/Emacs/site-lisp/mode-abbrevs")
(global-set-key (kbd "C-c l") 'msf-abbrev-goto-root)
(global-set-key (kbd "C-c a") 'msf-abbrev-define-new-abbrev-this-mode)
(msf-abbrev-load)

;;Linkd Mode : Very useful for project managament-form org mode author

(require 'linkd)

(setq linkd-use-icons t)
(setq linkd-icons-directory "~/.linkd-icons")

(add-hook 'emacs-lisp-mode-hook 'linkd-mode)
(add-hook 'lisp-mode-hook 'linkd-mode)
(add-hook 'sh-mode-hook 'linkd-mode)
(add-hook 'text-mode-hook 'linkd-mode)

(global-set-key [(control \&)] 'linkd-follow-on-this-line)
(global-set-key [(control f3)] 'linkd-process-block)
(global-set-key (kbd "M-[") 'linkd-previous-link)
(global-set-key (kbd "M-]") 'linkd-next-link)
(global-set-key (kbd "M-RET") 'linkd-follow-at-point)

;; Paredit Mode for Lisp and Elisp

(require 'paredit)

(autoload 'paredit-mode "paredit"
"Minor mode for pseudo-structurally editing Lisp code."
t)


(mapc (lambda (mode)
(let ((hook (intern (concat (symbol-name mode)
"-mode-hook"))))
(add-hook hook (lambda () (paredit-mode +1)))))
'(emacs-lisp lisp inferior-lisp))

(load "auctex.el" nil t t)
(load "preview-latex.el" nil t t)


;; Auctex Mode Conf with Reftex support

(setq TeX-auto-save t)
(setq TeX-parse-self t)
(setq-default TeX-master nil)

(add-hook 'LaTeX-mode-hook 'turn-on-reftex)
(setq reftex-plug-into-AUCTeX t)
(setq mode-line-format nil)

;; CSV Files viewing and editing

(require 'csv-mode)


(add-to-list 'auto-mode-alist '("\\.[Cc][Ss][Vv]\\'" . csv-mode))
(autoload 'csv-mode "csv-mode"
"Major mode for editing comma-separated value files." t)


(require 'csv)

(load "csv.el" nil t t)

;; ERC Extras

(add-to-list 'load-path "/erc-extras" t)

(require 'erc)

;; Very funny window effects:)

(require 'windzoom);;This is windzoom.el from Japan:)

;; Tramp extras- I use tramp for ftp connections

(require 'tramp-util)

;;Textile file editing

(require 'textile-mode)

(add-to-list 'auto-mode-alist '("\\.textile\\'" . textile-mode))


;; XML-RPC Service for Blog Software

(require 'weblogger)


(require 'keywiz)

;;Drupal Minor Mode

(defun drupal-minor-mode ()
(interactive)
(php-mode)
(setq c-basic-offset 2)
(setq indent-tabs-mode nil)
(setq fill-column 78)
(c-set-offset 'case-label 2)
(c-set-offset 'arglist-close 0))


(setq auto-mode-alist
(append '(("\\.\\(php\\|module\\|template\\|engine\\|inc\\|thtml\\)\\'" . drupal-minor-mode)) auto-mode-alist))

(autoload 'drupal-minor-mode "drupal-minor-mode" nil t)

;; Smarty Mode
(require 'smarty-mode)

(autoload 'smarty-mode "smarty-mode" "SmartyMode" t)

(setq auto-mode-alist
(append '(("\\.\\(template\\|tpl\\)\\'" . smarty-mode)) auto-mode-alist))


;; Note: PHP-Javascript and CSS Modes load with nxhtml-mode start file...
;; Auctex Mode have self conf files...

Hepsi Budur.....

Emacs Web Geliştirme Ortamı

Bir yılı aşkın zamandır Emacs ile uğraşa uğraşa, biraz bir şeyler yapabilmeye başladım. Amacım Emacs ile kendime "bereketli" bir web geliştirme ortamı oluşturmaktı. Nihayet bir şeyler şekillendi ve paylaşma zamanı geldi.

Öncelikle, bazı hususları baştan söylemeliyim; programcı, elisp hacker'ı ya da çok uzman biri değilim. Weble uğraşıyorum, sorunlarımı da açık kaynaklı "özgür" yazılımlar ile çözmek iki yıldır en büyük hobim. Editör olarak Emacs kullanmak ta bunun en büyük parçası...

Peki, "madem böyle gpl kokan hareketler yapıyorsun, ne halt etmeye windows kullanıyorsun." diyeceklere öncelikle "Haklısınız, bu ne perhiz, bu ne lahana turşusu" diyerek haklarını teslim eder, sonra da herşeye rağmen yetersiz mazeretlerimi sıralarım:

  1. Kamuda çalışıyorum; tüm yaptığım siteleri malum Windowsun ve weble uğraşanların en büyük baş belası Internet Explorer denilen saygı değmez yazılımının 5-6-ve dahi 7. sürümlerinde düzgün görünmeli, bu ilk şart. Bana "ie4linux" demeyin; bunu irc.freenode.net #emacs kanalında zaten dediler, kontrolü yapıldı, ie6-ve 7 beraber hala problemli, hallolsun söz geçecem daha medeni GNU ortamlarına:)
  2. Hakikaten başka bulamadım:)
Zaten Win32 ortamını adam etmeyi öğrenmek epey zaman aldı. Bu da detaylı bir yazı konusu, şu an için kısaca; Shell olarak cygwin ve msys, terminal olarak Console ve Terminator projesi terminalleri, Emacs içinde cygwinle kurulu ve çalışan w3m tarayıcı, Latex düzenleyebilmek için Tam Kurulum Miktex (tüm paketler ve utf-8 çalışmakta) Emacs-Auctex ortamı, Yanblokta Linklerini verdiğim Emacs Win32 projesi ki bunu düzgün yapılandırıp kullanabilmek işin en önemli parçası; ImageMagicK Win32 sürümünün kurulumu (Emacs içinden resimleri ancak bu şekilde görebiliyorsunuz) Ghost Scriptler, GNU Win32 tüm paketlerin kurulumu, XAMPP ile php-mysql-phpmyadmin kurulumu, Firefox + Web Developer + Firebug + Firephp eklentilerinin kurulumu, ie5-6 sürümlerine beraber sahip olabilmek için MultipleIE kurulumu ve orijinal ie'nin 7 sürümüne güncelleme; Paint.NET ve Gimp Win32 kurulumu, TortoiseCVS ve SVN Kurulumu, Filezilla...üff, yoruldum...Bitmez, cidden başka yazı konusu, linklerini de yazıp bir rehber oluşturmak gerekli, Çünkü bide bu yazılımlarımız pathlerini tanımlamadığınızda düzgün çalışmazlar:) Yazının başlığı da belli: Özgür Yazılımlarla Hapishane Ortamında Nasıl Web Geliştirilir:)

Neticede ben bu ortamda şu anda "efektif" web kodlaması yapabiliyorum, Emacs saolsun. Bunu benim gibi başka GNU takıntılı! arkadaşlara yardımcı olabilmesi için küçük çapta bir rehber haline getirmeye çalıştım, ilerde kısmet olursa genişleteceğim. Ayrıca konuyla ilgili dosyaları "Google" saolsun küçük bir proje haline getirip yayınlamak ta mümkün oldu . Bazı eklerin örneği; evvelliyatta bu gelişkin halleriyle mevcut olmadığı için (bakınız Yeni css-mode, javascript-mode,php-mode, smarty-mode) ve de kendi yaptığım geliştirmeleri gönderdiğim orjinal elisp hackerları'ndan henüz cevap alamadığımdan ; "yedekleme" sorununun da çözüleceğini düşünerek bu yola başvurdum.

Verimli Emacs Win32 Geliştirme Ortamı Kurulumu için öncelikle:

  • Cygwin kurmalısınız.
  • Msys kurmalısınız.
  • Ghostscript ve Ghostview kurmalısınız.
  • ImageMagick kurmalısınız.
  • Cygwin içinden w3m kurmalısınız.
  • Zipli arşiv dosyamı açmak için 7zip kurmalısınız.
  • Tüm bunlardan sonra ilk olarak http://ourcomments.org/cgi-bin/emacsw32-dl-latest.pl adresinden EmacsW32 projesinin son "patched" sürümünü çekmelisiniz.
  • Bu paketi kurmalısınız, ama daha Emacs'ı başlatmayın:)
  • Bir de Emacs içinde güzel font görünümü için Bitstream Vera Sans Mono Fontuna ihtiyacınız var, onu da bulup çekmeli ve kurmalısınız.
  • Herşey tamamsa buradan mewde.7z arşivini indirip 7ziple herhangi bir yere açın.
  • emacs.el dosyasını .emacs olarak yeniden adlandırın ve .abbrev_defs dosyasıyla beraber, kendi ev dizininizin /Application Data dizinine kopyalayın- Bu dizin öntanımlı olarak "gizli"dir; Explorer ayarlarınızdan "Gizli Dosyaları Göster seçeneğini işaretleyerek dizine erişebilirsiniz.
  • Emacs Win32 Öntanımlı kurulum Dizininiz C:\Program Files\Emacs olmalı.
  • Arşivimizden çıkan site-lisp dizinini C:\Program Files\Emacs dizini altına kopyalayın.
  • Arşivimizdeki nxhtml dizini içeriğini C:\Program Files\Emacs\EmacsW32\nxhtml\ dizini altına kopyalayın.
  • Hepsi bu. Flickr Sayfamdan Emacs'ın nasıl görünmesi gerektiği hakkında fikir sahibi olabilirsiniz: http://www.flickr.com/photos/ahmetusal/ Herşey tamamsa aynen buradaki Ekran görüntülerindeki gibi görünmeli:)
  • Herşeyi eksiksiz yazıldığı gibi kurarsanız hiç bir ayar yapmanıza gerek yok, örnekteki işlevsellik ve görünüm emrinize amade:)
Şimdi sabrınıza değeceğini göreceğiniz ikinci yazıya geldi sıra:) Sonraki yazıda Paketin içeriği, ne tür faydalara sebebiyet verdiği gibi umumu aydınlatacak bilgiler sıralanacaktır.