手軽にimenuの候補生成設定を行なうための拡張、easy-imenu-index-generator.elを公開しました。
動機
UnrealScript、Scala、Howmなど日頃良く使用しているフォーマットのもののimenu用の設定が見つからず、
自作する際に手軽に作れるように作成しました。
現状文法上の階層構造を考慮していない作りになっています。
機能
使い方は、
- imenuの候補を生成する際に使用する設定用変数を作成。(以降、設定用変数をsettingとした場合)
- 設定を有効にしたいタイミングで (easy-imenu-index-generator-set-for-current-buffer setting) とするとそのバッファに対して設定されます。
(***-mode-hookなどへのadd-hookを利用するとmode別設定をしやすいです。)
という感じです。
scala用の設定例は、
(defvar easy-imenu-index-generator-scala (make-easy-imenu-index-generator-setting :alist `( ((caption . "[CLASS] ") (regexp . "^[ \t]*\\(abstract \\)?\\(case \\)?class[ \t]+\\([a-zA-Z_]+[a-zA-Z0-9_]*\\)")) ((caption . "[OBJECT] ") (regexp . "^[ \t]*object[ \t]+\\([a-zA-Z_]+[a-zA-Z0-9_]*\\)")) ((caption . "[TRAIT] ") (regexp . "^[ \t]*trait[ \t]+\\([a-zA-Z_]+[a-zA-Z0-9_]*\\)")) ((caption . "[FUNC] ") (regexp . "^[ \t]*\\(private \\)?\\(override \\)?\\(final \\)?\\(def \\)+\\([a-zA-Z_]+[a-zA-Z0-9_]*\\)")) ((caption . "[VAR] ") (regexp . "^[ \t]*\\(private \\)?\\var[ \t]")) ((caption . "[VAL] ") (regexp . "^[ \t]*\\(private \\)?\\val[ \t]")) ) :add-line-number-to-item t )) (add-hook 'scala-mode-hook (lambda () (easy-imenu-index-generator-set-for-current-buffer easy-imenu-index-generator-scala)))
のような感じになります。
(こちらの設定例は、easy-imenu-index-generator-config.elにはいっています。)
導入
でソースの入手。
もしくは
http://github.com/tm8st/emacs-easy-imenu-index-generator/raw/master/easy-imenu-index-generator-config.el
をダウンロードして、パスを通し、
.emacs等に、
(require 'easy-imenu-index-generator-config) (add-hook 'scala-mode-hook (lambda () (easy-imenu-index-generator-set-for-current-buffer easy-imenu-index-generator-scala)))
のような感じのコードを追加してください。
設定については、お好みに合せ調整してください。