Skip to content
ecco is a port of docco for emacs
Emacs Lisp
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.



ecco is a literate-programming style documentation generator for emacs. Its a port of the very excellent docco.

Docco is mainly for javascript, and already has many language-specific ports like shocco for shell-scripts, rocco for ruby, among others.

The idea is to write comments and in-code documentation as markdown, and, then type M-x ecco and see pretty docs in your browser.

To understand what it does, look here for ecco-generated documentation for the ecco program itself.

An advantage of ecco is that it uses emacs's built-in comment processing funcionality and highlighting functionality and so it works for any language.

Installation and usage

To get it

$ pwd
$ git clone git://

Then, in your .emacs or .emacs.d/init.el

(require 'ecco)

Skip the next line if you have a "markdown" program in your path

(setq ecco-markdown-program "/path/to/your/markdown/interpreter")

Inside emacs, open any file where you have comments as markdown, try this

M-x ecco

To generate documentation for many files try

M-x ecco-files

I haven't (yet) included ecco in any package-management system (plan to do so soon, el-get and melpa are good candidates)

A good markdown interpreter

If you have a working markdown interpreter in your path, you can skip the next step. Otherwise a good, fast markdown interpreter for many operating systems, including Windows, is peg-markdown. So once you have installed it, add this line to .emacs as well.

Some notes

For the moment, ecco, still depends on an external markdown program that you may have to install in your system and configure ecco to use it by setting the variable ecco-markdown-program.

In the future I'll try to make it work with org-mode, which is included with recent emacsen and provides mechanisms for exporting to html alternatively maybe someone wants to write a markdown interpreter in emacs-lisp!

You can’t perform that action at this time.