Ç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.....

Hiç yorum yok: