Configurando o ambiente de desenvolvimento ideal

Antes de mais nada, o ambiente de desenvolvimento ideal é no momento, porque daqui a um mês posso mudar de opinião, mas o importante é que com as atuais modificações significaram muito para a minha produção, comecei a produzir com mais prazer e com mais agilidade, devido as novas modificações que eu fiz.

Atualmente tenho falado bastante sobre a minha mudança radical para o emacs. Mas o emacs puro não tem nada que modifique a sua produtividade em ruby e rails como um TextMate ou um Aptana RadRails, pois ele não tem os recursos específicos da linguagem e do framework, como console, MVC e autocomplete de código e marcação, ele só tem a coloração do código e de seus recursos próprios.

Foi então que neste fim de semana passado eu resolvi procurar configurações ideais para o emacs direcionado especificamente ao ruby e rails, bem como código xhtml + erb e css.

Na busca, encontrei este screencast fantástico em que o cara mostra o emacs funcionando como os famosos editores de ruby que já comentei anteriormente. Neste screencast dizia por cima os recursos que ele usou no screencast, foi aí que eu fui buscar de novo, e caí na wiki do rails, em um texto que mostra como deixar o emacs funcionando pra desenvolver em rails com alguns recursos do textmate, como o autocomplete de código, marcação erb e xhtml. Além desses recursos, existe uma integração do emacs com toda a estrutura do rails, como a possibilidade de trabalhar com o console do rails e o irb no emacs, iniciar o server em mongrel ou WEBrick, geradores do rails, entre outros, como é possível ver neste screencast linkado nesta wiki.

Vale lembrar que embora este usuário que está demonstrando utilize muito o mouse, o rails-mode pro emacs como os outros recursos que eu instalei, tem mapeamento de teclado e não é necessário se assustar com isto. O próprio emacs code browser, ou ECB, tem mapeamento de teclado.

Meu ambiente de desenvolvimento após as modificações:

* O importante é saber que o visual é você que faz. Eu utilzei neste caso o tema Gray30, presente no Color Themes do emacs e setei a fonte .emacs. Abaixo o meu arquivo de configuração do emacs.

;Set Font
(set-default-font "lucidasanstypewriter-10")

;Set Theme
(require 'color-theme)
(color-theme-gray30)

(mouse-wheel-mode)
(global-font-lock-mode 1)
(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.
(require 'php-mode)
'(column-number-mode t)
'(cua-mode t nil (cua-base))
'(ecb-options-version "2.32")
'(message-log-max 150)
'(rails-ws:default-server-type "webrick")
;; Habilitar scroll do mouse
'(scroll-bar-mode (quote right))
'(text-mode-hook (quote (text-mode-hook-identify)))
'(transient-mark-mode t))
'(mouse-wheel-mode t)

(defun up-slightly ()
(interactive)
(scroll-up 5)
)
(defun down-slightly ()
(interactive)
(scroll-down 5)
)

;; Relaciona a rolagem da rodinha com
;; as 2 funções acima

(global-set-key [mouse-4] 'down-slightly)
(global-set-key [mouse-5] 'up-slightly)

;; Show column-number in the mode line
(column-number-mode 1)

;; Line highlight
;; (global-hl-line-mode 1)

(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.
)

;carrega emacs code browser
(add-to-list 'load-path
"/usr/share/emacs22/site-lisp/ecb/")

;carrega css-mode
setq load-path (cons "~/.emacs.d/css-mode" load-path))
(require 'css-mode)
(autoload 'css-mode "css-mode")
(setq auto-mode-alist
(cons '("\\.css\\'" . css-mode) auto-mode-alist))

;carrega rails-mode
(setq load-path (cons "~/.emacs.d/rails" load-path))
(require 'rails)

;carrega ri-ruby
(setq ri-ruby-script (expand-file-name "~/emacs.d/ri/ri-emacs.rb"))
(autoload 'ri "ri-ruby.el" nil t)

;mmm-mode, suporte para marcacoes erb no html
(setq load-path (cons "~/.emacs.d/mmm-mode" load-path))
(require 'mmm-mode)
(require 'mmm-auto)
(setq mmm-global-mode 'maybe)
(setq mmm-submode-decoration-level 2)
(set-face-background 'mmm-output-submode-face  "Gray25")
(set-face-background 'mmm-code-submode-face    "MediumSlateBlue")
(set-face-background 'mmm-comment-submode-face "DarkOliveGreen")
(mmm-add-classes
  '((erb-code
  :submode ruby-mode
  :match-face (("<%#" . mmm-comment-submode-face)
  ("<%=" . mmm-output-submode-face)
  ("<%"  . mmm-code-submode-face))
  :front "<%[#=]?"
  :back "-?%>"
  :insert ((?% erb-code       nil @ "<%"  @ " " _ " " @ "%>" @)
  (?# erb-comment    nil @ "<%#" @ " " _ " " @ "%>" @)
  (?= erb-expression nil @ "<%=" @ " " _ " " @ "%>" @))
  )))
  (add-hook 'html-mode-hook
  (lambda ()
  (setq mmm-classes '(erb-code))
  (mmm-mode-on)))
  (add-to-list 'auto-mode-alist '("\\.rhtml$" . html-mode))

;Snippet Textmate like, deixar o emacs com os recursos do textmate
  (require 'snippet)

Leave a Reply

Your email address will not be published. Required fields are marked *

*

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>