;;索引を生成するコマンド ;;HTML ファイルが長くなってくると、先頭に索引を入れて、見通しを ;;良くしよう とすることがあります。例えば、こんな風に。 ;; ;; 第1章 ;; 第2章 ;;ところが、このタグをきちんと書くのが結構うっとうしいんですよね…。 ;;という訳で、カレントバッファに含まれている bar ;;形式のタグを調べて、上記のような索引を生成してくれるコマンドを ;;書いてみました。 (defun yahtml-insert-index () (interactive) (let ((item)(case-fold-search t)) (save-excursion (goto-char (point-min)) (setq item (let ((f)(l)(p)(s)) (setq f (if yahtml-prefer-upcases "
  • %s\n" "
  • %s\n")) (while (re-search-forward "<\\(a\\s-+name\\|!--\\s-+" nil t) (setq p (point)) (setq s (buffer-substring (match-beginning 2) (match-end 2))) (if (char-equal ?a (char-after (match-beginning 1))) (setq s (concat "#" s))) (and (re-search-forward "" (min (+ p 100) (point-max)) t) (setq l (cons (format f s (buffer-substring p (+ (point) (- 4)))) l)))) (reverse l)))) (insert (if yahtml-prefer-upcases "\n")) ))