Emacsで折りたたみを行う

なんか悔しいので、ちょっと便利かも知れない Emacs Lisp の紹介。上のURLから folding.el をダウンロードしてきて、load-path の通ったところにおいておく。.emacs には

(autoload 'folding-mode "folding-mode" nil t)

とでも書いておいて、適当なファイルで M-x folding-mode とやると。
すると、

// {{{ includes

#include <iostream>

// }}}
// {{{ constants

#define MESSAGE "Hello World"

// }}}
// {{{ main()

int main(int argc, char** argv)
{
    std::cout << MESSAGE << std::endl;
    return 0;
}

// }}}

と書いてあるファイルが折りたたまれて、

// {{{ includes...
// {{{ constants...
// {{{ main()...

見たいになる。あとは C-c @ C-x で折り畳み、 C-c @ C-s で折り畳みを展開。
vim の set fdm=marker したときの zc zo の挙動に近いかな。というか vim の fold が Emacs にもないかな、と探して見つけたのがこの Emacs Lisp なんだけど。
どうでもいいけど、このマークの付け方はどこから来てるんだろ。