Emacs as an unbeatable IDE (Integrated Dev. Environment)

Do not feel obliged to use V*s**l C++ to benefit from just a few goodies...

Eclispe can be seen as a good alternative to Emacs, but its approach seems radically different. First, it is limited to a few languages only, then, the idea is rather offering a complete and extensive development environment (from conception to testing) on specific purposes.
The approach Emacs uses rather consists in merging all text/code edition problems together so as to use a common basis of tools/commands as far as possible, in order to make specialisation lighter and easier, hence broader.

Once again, the big advantage of emacs against its competitors is the available degree of customization that its emacs-lisp architecture allows. It could only be matched by another lisp-based project, and it is sad to say that Eclispe is still far far behind...


  • Shell under emacs. M-x shell lets you open a shell session in an emacs window to test (or compile) your programs without switching windows. Please notice all emacs functionalities still apply in the *shell* buffer, making this option valuable in any context.
    Also consider eshell mode (emacs only). Have a look on my configuration to seek for n-shell, in order to open several shells in a single emacs session (simple but so cool, though I'm not the author).

  • Compile project and track errors over files: TODO.
    For now, on my config, f9. can just compile current buffer and display compiler output on another window. f10 can navigate in your code to match spotted errors. Here, we just scratch the surface ;(

  • Debug a program with gdb in gdb-mode.
    First, please consider this minimal gdb tutorial that covers what gdb can make from command-line. The purpose of Emacs interface is essentially to automatically track the code lines being executed, which is really tedious in shell mode).

  • Navigate through current file hierarchy using a graphical tree: M-x speedbar.
    On emacs, OO-Browser and func-menu external packages can also be considered.

  • Process function, variable and type names in many programming languages: etags
    • $>etags -t *.c *.h creates a TAGS file indexing your symbols (-t for emacs).
    • M-x find-tag: drives you directly to tag definition (e.g function declaration). See also find-tag-other-window. By default, the entry under cursor is proposed. Notice you can use completion as typing tagname.
    • M-x pop-tag-mark drives you back to your previous location.
    • M-x list-tags lists all the tags from current project (M-x visit-tags-table to change project).
    • M-x tags-search drives you directly to tag occurences in all your registered files (M-, for next occurence).
    • M-x tags-query-replace(M-, again for next occurence).
    • M-x complete-tag (emacs) and M-x tag-complete-symbol (xemacs) enable completion of word on cursor position looking for names in current TAGS table.


  • dabbrev-expand (emacs) and expand-abbrev (xemacs) allow completion of current word using contents of any opened buffer (very useful for text, but consider instead tag commands for programming). Several calls allows you to cycle among propositions.


Last modified: 01 March 2006