«前の日記(2009-08-17) 最新 次の日記(2009-08-22)» 編集

ソフトウェアと本の覚え書き

2005|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|02|03|04|05|06|07|08|09|10|11|12|
2011|01|02|03|04|05|06|07|08|09|10|11|12|
2012|01|02|03|04|05|06|07|08|09|10|11|12|
2013|01|02|03|04|05|06|07|08|09|10|11|12|
2014|01|02|03|04|05|06|07|08|09|10|11|12|
2015|01|02|03|04|05|06|07|08|09|10|11|12|
2016|01|02|03|04|05|06|07|08|09|10|11|12|
2017|01|02|03|04|05|06|07|08|09|10|11|12|
2018|01|02|03|04|05|

2009-08-21 [長年日記]

_ [Emacs] imenu for yatex

yatex-modeのときにimenuを使って見出し一覧を取り出すための関数を作った。

(defun YaTeX-create-imenu-index ()
  (let ((index)
	(pattern (concat YaTeX-ec-regexp "\\(" YaTeX-sectioning-regexp "\\)\\*?{\\(.*\\)}")))
    (goto-char (point-min))
    (while (re-search-forward pattern (point-max) t)
      (push (cons (concat (match-string-no-properties 1) " - " (match-string-no-properties 6))
		  (match-beginning 0)) index))
    (nreverse index)))

あとはフックでimenu-create-index-functionに設定する。which-funcを使っている場合はで見出しを表示できるようにwhich-func-modesにyatex-modeを追加する。

(add-hook 'yatex-mode-hook
         '(lambda ()
	    (setq imenu-create-index-function 'YaTeX-create-imenu-index)))
(setq which-func-modes (append which-func-modes '(yatex-mode)))