changeset 14760:c6e53d665cec

(texinfo-section-types-regexp) (texinfo-section-level-regexp, texinfo-subsection-level-regexp) (texinfo-subsubsection-level-regexp): Add defvars. (texinfo-section-list): New variable. (texinfo-outline-level): New function. (texinfo-mode): Use them.
author Richard M. Stallman <rms@gnu.org>
date Tue, 05 Mar 1996 21:42:17 +0000
parents f93ed65c0584
children bef2b46521de
files lisp/textmodes/texinfo.el
diffstat 1 files changed, 47 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/textmodes/texinfo.el	Tue Mar 05 21:19:11 1996 +0000
+++ b/lisp/textmodes/texinfo.el	Tue Mar 05 21:42:17 1996 +0000
@@ -223,6 +223,40 @@
     ("@\\(end\\|itemx?\\) +\\(.+\\)" 2 font-lock-function-name-face keep)
     )
   "Additional expressions to highlight in TeXinfo mode.")
+
+(defvar texinfo-section-list
+  '(("top" 1)
+    ("majorheading" 1)
+    ("chapter" 2)
+    ("unnumbered" 2)
+    ("appendix" 2)
+    ("chapheading" 2)
+    ("section" 3)
+    ("unnumberedsec" 3)
+    ("appendixsec" 3)
+    ("heading" 3)
+    ("subsection" 4)
+    ("unnumberedsubsec" 4)
+    ("appendixsubsec" 4)
+    ("subheading" 4)
+    ("subsubsection" 5)
+    ("unnumberedsubsubsec" 5)
+    ("appendixsubsubsec" 5)
+    ("subsubheading" 5))
+  "Alist of sectioning commands and their relative level.")
+
+(defun texinfo-outline-level ()
+  ;; Calculate level of current texinfo outline heading.
+  (save-excursion
+    (if (bobp)
+	0
+      (forward-char 1)
+      (let* ((word (buffer-substring-no-properties 
+		    (point) (progn (forward-word 1) (point))))
+	     (entry (assoc word texinfo-section-list)))
+	(if entry
+	    (nth 1 entry)
+	  5)))))
 
 ;;; Keybindings
 (defvar texinfo-mode-map nil)
@@ -401,6 +435,13 @@
   (setq imenu-generic-expression texinfo-imenu-generic-expression)
   (make-local-variable 'font-lock-defaults)
   (setq font-lock-defaults '(texinfo-font-lock-keywords t))
+  (make-local-variable 'outline-regexp)
+  (setq outline-regexp 
+	(concat "@\\("
+		(mapconcat 'car texinfo-section-list "\\>\\|")
+		"\\>\\)"))
+  (make-local-variable 'outline-level)
+  (setq outline-level 'texinfo-outline-level)
   (make-local-variable 'tex-start-of-header)
   (setq tex-start-of-header "%**start")
   (make-local-variable 'tex-end-of-header)
@@ -544,6 +585,12 @@
 
 ;;; Texinfo file structure
 
+;; These are defined in tenfo-upd.el.
+(defvar texinfo-section-types-regexp)
+(defvar texinfo-section-level-regexp)
+(defvar texinfo-subsection-level-regexp)
+(defvar texinfo-subsubsection-level-regexp)
+
 (defun texinfo-show-structure (&optional nodes-too) 
   "Show the structure of a Texinfo file.
 List the lines in the file that begin with the @-sign commands for