2016年4月13日水曜日

Emacsのimenuをmarkdownで活用する

imenuとは

Emacsには、構造化されたtextの目次を表示しそこへジャンプするimenuという機能がある。

Textによって「目次」とすべき内容が異なるので、imenuにはtextに応じたindexingを行うfunctionを渡せるように作られている。

imenuはprogramming languageには勿論、HTMLやMarkdownのようなtextにも応用できる。

markdown-modeにおけるimenu

markdown-modeはindexを作製するfunctionを2種類提供してくれている:

  • markdown-imenu-create-flat-index
  • markdown-imenu-create-nested-index

この2つの違いはfunction nameそのままで、flatの方はtreeのleaf nodeのみを列挙するのに対し、nestedは言わばleaf nodeへのfull pathを列挙する。

Defaultではflatがimenu-create-index-functionにbindされているので、markdown-modeのhookを使ってnestedをbindすればそちらを利用できる。


実際の活用に際して

imenuはそのままでは使いにくいので、helm-imenuを使うと良いだろう。

この際、which-function (which-funcはobsolete)で現在位置を表示させるのも便利だ。


Indexの実例

# H1
## H2-1
### H3-1
### H3-2
## H2-2
### H3-3

のようなMarkdown textがあるとする。


flat-index

H1
H2-1
H3-1
H3-2
H2-2
H3-3


nested-index

H1 / .
H1 / H2-1 / .
H1 / H2-1 / H3-1
H1 / H2-1 / H3-2
H1 / H2-2 / .
H1 / H2-2 / H3-3

参考Link




0 件のコメント:

コメントを投稿