For a while, I've been envious of some of the project and file navigation features in emacs for browsing bigger projects/programs, things like imenu and tags have always seems awesome but given that I spend most of time editing restructured text and markdown files (I'm a technical writer), these tools have been distant and not a part of my day to day work.
It's not that it would be impossible to write interfaces for imenu or etags, for the formats I use regularly, but more that I've never gotten around to it until now.
We're still a ways away on the question of etags, but it turns out that when I wasn't looking rst mode got imenu support, and with the following little bit of elisp you can get imenu for markdown.
(setq markdown-imenu-generic-expression '(("title" "^\\(.*\\)[\n]=+$" 1) ("h2-" "^\\(.*\\)[\n]-+$" 1) ("h1" "^# \\(.*\\)$" 1) ("h2" "^## \\(.*\\)$" 1) ("h3" "^### \\(.*\\)$" 1) ("h4" "^#### \\(.*\\)$" 1) ("h5" "^##### \\(.*\\)$" 1) ("h6" "^###### \\(.*\\)$" 1) ("fn" "^\\[\\^\\(.*\\)\\]" 1) )) (add-hook 'markdown-mode-hook (lambda () (setq imenu-generic-expression markdown-imenu-generic-expression)))
Pretty awesome! I hope it helps you make awesome things.