From a5e2ae0112c49ab972ecb214b6d11e83233e6148 Mon Sep 17 00:00:00 2001 From: "Richard M. Stallman" Date: Wed, 15 May 1996 15:17:41 +0000 Subject: [PATCH] (latex-imenu-create-index): Change the regexp to match the * versions of commands. (latex-mode): Make imenu-create-index-function buffer-local. --- lisp/textmodes/tex-mode.el | 34 +++++++++++++++++++--------------- 1 file changed, 19 insertions(+), 15 deletions(-) diff --git a/lisp/textmodes/tex-mode.el b/lisp/textmodes/tex-mode.el index f0a99ba5c8f..565a8d13e76 100644 --- a/lisp/textmodes/tex-mode.el +++ b/lisp/textmodes/tex-mode.el @@ -179,19 +179,23 @@ Set by \\[tex-region], \\[tex-buffer], and \\[tex-file].") (defvar tex-mode-syntax-table nil "Syntax table used while in TeX mode.") -;; Written by Wolfgang Bangerth -(defvar latex-imenu-generic-expression - '( - ("Part" "\\\\part{\\([^}]*\\)}" 1) - ("Chapter" "\\\\chapter{\\([^}]*\\)}" 1) - ("Section" "\\\\[a-zA-Z]*section{\\([^}]*\\)}" 1) - ;; i put numbers like 3.15 before my - ;; \begin{equation}'s which tell me - ;; the number the equation will get when - ;; being printed. - ("Equations" "%[ \t]*\\([0-9]+\\.[0-9]+\\)[,;]?[ \t]?" 1)) - - "Imenu generic expression for LaTex mode. See `imenu-generic-expression'.") +(defun latex-imenu-create-index () + "Generates an alist for imenu from a LaTeX buffer." + (let (result temp) + (goto-char (point-max)) + (while (re-search-backward "\\\\\\(part\\|chapter\\|\ +\\(sub\\)?\\(\\(sub\\)?section\\|paragraph\\)\\)\\*?[ \t\n]*{\\([^}]*\\)}" nil t) + (setq temp + (assoc (buffer-substring-no-properties (match-beginning 1) + (match-end 1)) + '(("part" . "") ("chapter" . " ") + ("section" . " ") ("subsection" . " ") + ("subsubsection" . " ") + ("paragraph" . " ") ("subparagraph" . " ")))) + (setq result (cons (cons (concat (cdr temp) (match-string 5)) + (match-beginning 0)) + result))) + result)) (defun tex-define-common-keys (keymap) "Define the keys that we want defined both in TeX mode and in the TeX shell." @@ -430,8 +434,8 @@ subshell is initiated, `tex-shell-hook' is run." \\\\[a-z]*space\\|\\\\[a-z]*skip\\|\ \\\\newpage\\|\\\\[a-z]*page[a-z]*\\|\\\\footnote\\|\ \\\\marginpar\\|\\\\parbox\\|\\\\caption\\)[ \t]*\\($\\|%\\)") - (make-local-variable 'imenu-generic-expression) - (setq imenu-generic-expression latex-imenu-generic-expression) + (make-local-variable 'imenu-create-index-function) + (setq imenu-create-index-function 'latex-imenu-create-index) (make-local-variable 'tex-face-alist) (setq tex-face-alist tex-latex-face-alist) (run-hooks 'text-mode-hook 'tex-mode-hook 'latex-mode-hook)) -- 2.39.5