Emacs rebirth?

Yeahh!. Probably all the hackers have been using Emacs all along in their caves since the eighties, but who knows. Now, with the inclusion of package repositories functionality (package.el) in Emacs, GitHub, the back-to-the-basics movement from Java over-architecting back to Ruby, JavaScript, SCRUM, TDD… etc.,  and the rise of plain text editors like TextMate or Sublime versus bloated IDEs, Emacs seems to be living a bit of a rebirth. Or is my usage of Emacs rebirthing (after some years out of software development) and I am confusing it?. I don’t really know. What I do know is that I open Chrome and I feel just an observer of the world, but I open Emacs and I feel I have all the power to create, like an artist that opens a blank page in his notebook.

Today I am going to share with you my list of installed packages:

File types support, pretty self-explaining:

  • apache-mode
  • cmake-mode
  • clojure-mode
  • scala-mode
  • go-mode
  • ruby-mode
  • python-mode
  • coffee-mode
  • csv-mode
  • feature-mode
  • js2-mode
  • json-mode
  • php-mode
  • scss-mode
  • markdown-mode
  • less-css-mode
  • stylus-mode
  • syslog-mode
  • web-mode

Configuration:

  • better-defaults: I used to use emacs-starter-kit, but, as I was understanding what it did, I kept wanting to get away from it. better-defaults are almost a couple of configuration tweaks by the same guy who made emacs-starter-kit, to which I was already accustomed to.

Utilities:

  • rainbow-mode: colors #RGB values it finds with the corresponding color, like this: #33CCCC
  • ack: an interface for the grep-like command line utility
  • auto-complete: automatically shows a pop up list with possible completions. It has a lot of plugins.
  • browse-kill-ring: show all the kill history.
  • editorconfig: support for the editorconfig standard that aims at mantaining a consistent coding style within a project (tabs vs spaces… etc.).
  • fic-ext-mode: highlights words like TODO, FIXME… etc.
  • fiplr: search files within a project. A project root is marked by the presence of a .git or similar folder in the current buffer’s file directory or any of its parents.
  • flymake: on the fly syntax checking.
  • free-keys: show what keys are free (not already binded) for the current mode.
  • guess-offset: tries to guess the indentation style of the file (tabs vs spaces… etc.).
  • idle-highlight-mode: highlights all the occurrences of the word under cursor.
  • ido-ubiquitous: use IDO whenever possible.
  • magit: good GIT integration.
  • smex: a slightly better M-x.
  • sr-speedbar: speedbar as a frame. 
  • yasnippet: code snippets everywhere. Mature and with lots of snippets for all the programming languages.

 

This is what I have installed for now, but a glance at the output of M-x list-packages is enough to entertain any Emacs enthusiast for countless hours (and probably to save quite a lot of time while doing ACTUAL work with Emacs ;)).

Lastly, you can use this little elisp code in your init.el to automatically download and install your packages:

 

(when (>= emacs-major-version 24)
(setq package-list '(ack apache-mode yasnippet))
(require 'package)

(add-to-list 'package-archives '("melpa" . "http://melpa.milkbox.net/packages/") t)
(add-to-list 'package-archives '("marmalade" . "http://marmalade-repo.org/packages/") t)
; activate all the packages (in particular autoloads)
(package-initialize)

; fetch the list of packages available
(unless package-archive-contents
(package-refresh-contents))
; install the missing packages
(dolist (package package-list)
(unless (package-installed-p package)
(package-install package)))
)

See you next time. Have fun ;).

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

w

Connecting to %s