Best emacs features and modes (extensions)

I've been using emacs for nearly 10 years. Here are my favorite features in no particular order:

dired-mode is a mode to manage files and folders. It allows you to list the content of folders, mark files and do operations on them. The most common commands  (copy, move, chmod...) are accessible via bindings. And in order to execute more specific commands it's possible to enter a program name and arguments. The classic bindings like C-s work and for example, you can rename files using the search and replace command.

org-mode is a mode for todo list and agenda. I use it to organise my projects and save important information. The main advantage of this system is that it makes hierarchical lists editing very easy. It also allows you to count time spent on projects.

vc-* commands offer access to the main version control systems (svn, git, hg...) inside emacs. You can view the differences between versions of a file inside a buffer or check the change log of a file. Another cool thing is the vc-dired command. It lists the files of a repository and allows you to execute commands (commit, diff...) on a selection of files.

tramp is a system to open files on remote server using popular protocols like ssh or ftp. Once the file is opened, the buffer acts like a normal buffer. Saving the file will send the content of the file to the server and may feel a little slow. In order to use tramp, just type /protocol:user@example.com when you open a file. There is a wide list of protocols ssh, ftp...

Having hundred of files opened at once is another really cool thing about emacs. Instead of having to search files in directories, I open all the files I need and never kill any buffer. I have around 300 files opened and when I need something, I just selected a buffer using ido-mode. In order to improve the matching mechanism, you can turn ido-enable-flex-matching on and enable uniquify.

Emacs has a highly configurable user interface and you can get rid of all the pieces you don't use. I've personally removed all I could (no scrollbars, menus or toolbars). The result is more space for what you're working on. Finally, Emacs environment is dynamically editable with elisp. It makes hacking commands easy and fun.