Add 2012 to FSF copyright years for Emacs files
[bpt/emacs.git] / lisp / textmodes / reftex-toc.el
index 2090370..5d293d4 100644 (file)
@@ -1,7 +1,6 @@
 ;;; reftex-toc.el --- RefTeX's table of contents mode
 
-;; Copyright (C) 1997, 1998, 1999, 2000, 2003, 2004, 2005, 2006, 2007,
-;;   2008, 2009, 2010  Free Software Foundation, Inc.
+;; Copyright (C) 1997-2000, 2003-2012  Free Software Foundation, Inc.
 
 ;; Author: Carsten Dominik <dominik@science.uva.nl>
 ;; Maintainer: auctex-devel@gnu.org
 (require 'reftex)
 ;;;
 
-(defvar reftex-toc-map (make-sparse-keymap)
+(defvar reftex-toc-mode-map
+  (let ((map (make-sparse-keymap)))
+
+    (define-key map (if (featurep 'xemacs) [(button2)] [(mouse-2)])
+      'reftex-toc-mouse-goto-line-and-hide)
+    (define-key map [follow-link] 'mouse-face)
+
+    (substitute-key-definition
+     'next-line 'reftex-toc-next map global-map)
+    (substitute-key-definition
+     'previous-line 'reftex-toc-previous map global-map)
+
+    (loop for x in
+          '(("n"        . reftex-toc-next)
+            ("p"        . reftex-toc-previous)
+            ("?"        . reftex-toc-show-help)
+            (" "        . reftex-toc-view-line)
+            ("\C-m"     . reftex-toc-goto-line-and-hide)
+            ("\C-i"     . reftex-toc-goto-line)
+            ("\C-c>"    . reftex-toc-display-index)
+            ("r"        . reftex-toc-rescan)
+            ("R"        . reftex-toc-Rescan)
+            ("g"        . revert-buffer)
+            ("q"        . reftex-toc-quit) ;
+            ("k"        . reftex-toc-quit-and-kill)
+            ("f"        . reftex-toc-toggle-follow) ;
+            ("a"        . reftex-toggle-auto-toc-recenter)
+            ("d"        . reftex-toc-toggle-dedicated-frame)
+            ("F"        . reftex-toc-toggle-file-boundary)
+            ("i"        . reftex-toc-toggle-index)
+            ("l"        . reftex-toc-toggle-labels)
+            ("t"        . reftex-toc-max-level)
+            ("c"        . reftex-toc-toggle-context)
+            ;; ("%"        . reftex-toc-toggle-commented)
+            ("\M-%"     . reftex-toc-rename-label)
+            ("x"        . reftex-toc-external)
+            ("z"        . reftex-toc-jump)
+            ("."        . reftex-toc-show-calling-point)
+            ("\C-c\C-n" . reftex-toc-next-heading)
+            ("\C-c\C-p" . reftex-toc-previous-heading)
+            (">"        . reftex-toc-demote)
+            ("<"        . reftex-toc-promote))
+          do (define-key map (car x) (cdr x)))
+
+    (loop for key across "0123456789" do
+          (define-key map (vector (list key)) 'digit-argument))
+    (define-key map "-" 'negative-argument)
+
+    (easy-menu-define
+      reftex-toc-menu map
+      "Menu for Table of Contents buffer"
+      '("TOC"
+        ["Show Location" reftex-toc-view-line t]
+        ["Go To Location" reftex-toc-goto-line t]
+        ["Exit & Go To Location" reftex-toc-goto-line-and-hide t]
+        ["Show Calling Point" reftex-toc-show-calling-point t]
+        ["Quit" reftex-toc-quit t]
+        "--"
+        ("Edit"
+         ["Promote" reftex-toc-promote t]
+         ["Demote" reftex-toc-demote t]
+         ["Rename Label" reftex-toc-rename-label t])
+        "--"
+        ["Index" reftex-toc-display-index t]
+        ["External Document TOC  " reftex-toc-external t]
+        "--"
+        ("Update"
+         ["Rebuilt *toc* Buffer" revert-buffer t]
+         ["Rescan One File" reftex-toc-rescan reftex-enable-partial-scans]
+         ["Rescan Entire Document" reftex-toc-Rescan t])
+        ("Options"
+         "TOC Items"
+         ["File Boundaries" reftex-toc-toggle-file-boundary :style toggle
+          :selected reftex-toc-include-file-boundaries]
+         ["Labels" reftex-toc-toggle-labels :style toggle
+          :selected reftex-toc-include-labels]
+         ["Index Entries" reftex-toc-toggle-index :style toggle
+          :selected reftex-toc-include-index-entries]
+         ["Context" reftex-toc-toggle-context :style toggle
+          :selected reftex-toc-include-context]
+         "--"
+         ["Follow Mode" reftex-toc-toggle-follow :style toggle
+          :selected reftex-toc-follow-mode]
+         ["Auto Recenter" reftex-toggle-auto-toc-recenter :style toggle
+          :selected reftex-toc-auto-recenter-timer]
+         ["Dedicated Frame" reftex-toc-toggle-dedicated-frame t])
+        "--"
+        ["Help" reftex-toc-show-help t]))
+
+    map)
   "Keymap used for *toc* buffer.")
+(define-obsolete-variable-alias 'reftex-toc-map 'reftex-toc-mode-map "24.1")
 
 (defvar reftex-toc-menu)
 (defvar reftex-last-window-height nil)
 (defvar reftex-toc-include-index-indicator nil)
 (defvar reftex-toc-max-level-indicator nil)
 
-(defun reftex-toc-mode ()
+(define-derived-mode reftex-toc-mode fundamental-mode "TOC"
   "Major mode for managing Table of Contents for LaTeX files.
 This buffer was created with RefTeX.
 Press `?' for a summary of important key bindings.
 
 Here are all local bindings.
 
-\\{reftex-toc-map}"
-  (interactive)
-  (kill-all-local-variables)
-  (setq major-mode 'reftex-toc-mode
-        mode-name "TOC")
-  (use-local-map reftex-toc-map)
+\\{reftex-toc-mode-map}"
   (set (make-local-variable 'transient-mark-mode) t)
   (when (featurep 'xemacs)
     (set (make-local-variable 'zmacs-regions) t))
@@ -79,23 +163,22 @@ Here are all local bindings.
   (make-local-variable 'reftex-last-follow-point)
   (add-hook 'post-command-hook 'reftex-toc-post-command-hook nil t)
   (add-hook 'pre-command-hook  'reftex-toc-pre-command-hook nil t)
-  (easy-menu-add reftex-toc-menu reftex-toc-map)
-  (run-hooks 'reftex-toc-mode-hook))
+  (easy-menu-add reftex-toc-menu reftex-toc-mode-map))
 
 (defvar reftex-last-toc-file nil
   "Stores the file name from which `reftex-toc' was called.  For redo command.")
 
 
 (defvar reftex-toc-return-marker (make-marker)
-  "Marker which makes it possible to return from toc to old position.")
+  "Marker which makes it possible to return from TOC to old position.")
 
 (defconst reftex-toc-help
 "                      AVAILABLE KEYS IN TOC BUFFER
                       ============================
 n / p      next-line / previous-line
 SPC        Show the corresponding location of the LaTeX document.
-TAB        Goto the location and keep the *toc* window.
-RET        Goto the location and hide the *toc* window (also on mouse-2).
+TAB        Goto the location and keep the TOC window.
+RET        Goto the location and hide the TOC window (also on mouse-2).
 < / >      Promote / Demote section, or all sections in region.
 C-c >      Display Index. With prefix arg, restrict index to current section.
 q / k      Hide/Kill *toc* buffer, return to position of reftex-toc command.
@@ -164,10 +247,10 @@ When called with a raw C-u prefix, rescan the document first."
 
       (unless unsplittable
         (if reftex-toc-split-windows-horizontally
-            (split-window-horizontally
+            (split-window-right
              (floor (* (window-width)
                        reftex-toc-split-windows-fraction)))
-          (split-window-vertically
+          (split-window-below
            (floor (* (window-height)
                      reftex-toc-split-windows-fraction)))))
 
@@ -204,7 +287,7 @@ SPC=view TAB=goto RET=goto+hide [q]uit [r]escan [l]abels [f]ollow [x]r [?]Help
       (setq offset
             (reftex-insert-docstruct
              this-buf
-             t ; include toc
+             t ; include TOC
              reftex-toc-include-labels
              reftex-toc-include-index-entries
              reftex-toc-include-file-boundaries
@@ -213,7 +296,7 @@ SPC=view TAB=goto RET=goto+hide [q]uit [r]escan [l]abels [f]ollow [x]r [?]Help
              nil ; commented
              here-I-am
              ""     ; xr-prefix
-             t      ; a toc buffer
+             t      ; a TOC buffer
              ))
 
       (run-hooks 'reftex-display-copied-context-hook)
@@ -308,7 +391,7 @@ SPC=view TAB=goto RET=goto+hide [q]uit [r]escan [l]abels [f]ollow [x]r [?]Help
                 (frame-parameter  frame 'name))
               "RefTeX TOC Frame")))
     (if (and res error)
-        (error "This frame is view-only.  Use `C-c =' to create toc window for commands"))
+        (error "This frame is view-only.  Use `C-c =' to create TOC window for commands"))
     res))
 
 (defun reftex-toc-show-help ()
@@ -338,14 +421,14 @@ SPC=view TAB=goto RET=goto+hide [q]uit [r]escan [l]abels [f]ollow [x]r [?]Help
   (goto-char (or (previous-single-property-change (point) :data)
                  (point))))
 (defun reftex-toc-next-heading (&optional arg)
-  "Move to next table of contentes line."
+  "Move to next table of contents line."
   (interactive "p")
   (when (featurep 'xemacs) (setq zmacs-region-stays t))
   (end-of-line)
   (re-search-forward "^ " nil t arg)
   (beginning-of-line))
 (defun reftex-toc-previous-heading (&optional arg)
-  "Move to previous table of contentes line."
+  "Move to previous table of contents line."
   (interactive "p")
   (when (featurep 'xemacs) (setq zmacs-region-stays t))
   (re-search-backward "^ " nil t arg))
@@ -385,9 +468,9 @@ Label context is only displayed when the labels are there as well."
   (setq reftex-toc-include-context (not reftex-toc-include-context))
   (reftex-toc-revert))
 (defun reftex-toc-max-level (arg)
-  "Set the maximum level of toc lines in this buffer to value of prefix ARG.
+  "Set the maximum level of TOC lines in this buffer to value of prefix ARG.
 When no prefix is given, set the max level to a large number, so that all
-levels are shown.  For eaxample, to set the level to 3, type `3 m'."
+levels are shown.  For example, to set the level to 3, type `3 m'."
   (interactive "P")
   (setq reftex-toc-max-level (if arg
                                  (prefix-numeric-value arg)
@@ -401,23 +484,23 @@ levels are shown.  For eaxample, to set the level to 3, type `3 m'."
   (reftex-toc-dframe-p nil 'error)
   (reftex-toc-visit-location))
 (defun reftex-toc-goto-line-and-hide ()
-  "Go to document location in other window.  Hide the *toc* window."
+  "Go to document location in other window.  Hide the TOC window."
   (interactive)
   (reftex-toc-dframe-p nil 'error)
   (reftex-toc-visit-location 'hide))
 (defun reftex-toc-goto-line ()
-  "Go to document location in other window. *toc* window stays."
+  "Go to document location in other window.  TOC window stays."
   (interactive)
   (reftex-toc-dframe-p nil 'error)
   (reftex-toc-visit-location t))
 (defun reftex-toc-mouse-goto-line-and-hide (ev)
-  "Go to document location in other window.  Hide the *toc* window."
+  "Go to document location in other window.  Hide the TOC window."
   (interactive "e")
   (mouse-set-point ev)
   (reftex-toc-dframe-p nil 'error)
   (reftex-toc-visit-location 'hide))
 (defun reftex-toc-show-calling-point ()
-  "Show point where reftex-toc was called from."
+  "Show point where `reftex-toc' was called from."
   (interactive)
   (reftex-toc-dframe-p nil 'error)
   (let ((this-window (selected-window)))
@@ -429,8 +512,8 @@ levels are shown.  For eaxample, to set the level to 3, type `3 m'."
           (recenter '(4)))
       (select-window this-window))))
 (defun reftex-toc-quit ()
-  "Hide the *toc* window and do not move point.
-If the toc window is the only window on the dedicated TOC frame, the frame
+  "Hide the TOC window and do not move point.
+If the TOC window is the only window on the dedicated TOC frame, the frame
 is destroyed."
   (interactive)
   (if (and (one-window-p)
@@ -501,7 +584,7 @@ With prefix arg 1, restrict index to the section at point."
     (reftex-toc)))
 
 (defun reftex-toc-revert (&rest ignore)
-  "Regenerate the *toc* from the internal lists."
+  "Regenerate the TOC from the internal lists."
   (interactive)
   (let ((unsplittable
          (if (fboundp 'frame-property)
@@ -535,7 +618,7 @@ With prefix arg 1, restrict index to the section at point."
 
 (defun reftex-toc-jump (arg)
   "Jump to a specific section.  E.g. '3 z' jumps to section 3.
-Useful for large TOC's."
+Useful for large TOCs."
   (interactive "P")
   (goto-char (point-min))
   (re-search-forward
@@ -559,7 +642,7 @@ Useful for large TOC's."
   (interactive "p")
   (reftex-toc-do-promote -1))
 (defun reftex-toc-do-promote (delta)
-  "Workhorse for reftex-toc-promote and reftex-to-demote.
+  "Workhorse for `reftex-toc-promote' and `reftex-toc-demote'.
 Changes the level of sections in the current region, or just the section at
 point."
   ;; We should not do anything unless we are sure this is going to work for
@@ -577,7 +660,7 @@ point."
     (setq msg
           (catch 'exit
             (if (reftex-region-active-p)
-                ;; A region is dangerous, check if we have a brandnew scan,
+                ;; A region is dangerous, check if we have a brand new scan,
                 ;; to make sure we are not missing any section statements.
                 (if (not (reftex-toc-check-docstruct))
                     (reftex-toc-load-all-files-for-promotion)   ;; exits
@@ -645,8 +728,8 @@ point."
               deactivate-mark nil)))))
 
 (defun reftex-toc-promote-prepare (x delta)
-  "Look at a toc entry and see if we could pro/demote it.
-This function prepares everything for the changes, but does not do it.
+  "Look at a TOC entry and see if we could pro/demote it.
+This function prepares everything for the change, but does not do it.
 The return value is a list with information needed when doing the
 promotion/demotion later.  DELTA is the level change."
   (let* ((data (car x))
@@ -696,7 +779,7 @@ promotion/demotion later.  DELTA is the level change."
       (error "Cannot %smote \\%s" pro-or-de name))))
 
 (defun reftex-toc-promote-action (x)
-  "Change the level of a toc entry.
+  "Change the level of a TOC entry.
 PRO-OR-DE is assumed to be dynamically scoped into this function."
   (let* ((data (car x))
          (name (nth 1 x))
@@ -709,7 +792,7 @@ PRO-OR-DE is assumed to be dynamically scoped into this function."
         (error "Fatal error during %smotion" pro-or-de)))))
 
 (defun reftex-toc-extract-section-number (entry)
-  "Get the numbering of a toc entry, for message purposes."
+  "Get the numbering of a TOC entry, for message purposes."
   (if (string-match "\\s-*\\(\\S-+\\)" (nth 2 (car entry)))
       (match-string 1 (nth 2 (car entry)))
     "?"))
@@ -755,7 +838,7 @@ if these sets are sorted blocks in the alist."
 (defun reftex-toc-load-all-files-for-promotion ()
   "Make sure all files of the document are being visited by buffers,
 and that the scanning info is absolutely up to date.
-We do this by rescanning with reftex-keep-temporary-buffers bound to t.
+We do this by rescanning with `reftex-keep-temporary-buffers' bound to t.
 The variable PRO-OR-DE is assumed to be dynamically scoped into this function.
 When finished, we exit with an error message."
   (let ((reftex-keep-temporary-buffers t))
@@ -765,9 +848,9 @@ When finished, we exit with an error message."
            "TOC had to be updated first.  Please check selection and repeat the command.")))
 
 (defun reftex-toc-rename-label ()
-  "Rename the currently selected label in the *TOC* buffer.
+  "Rename the currently selected label in the *toc* buffer.
 This launches a global search and replace in order to rename a label.
-Renaming a label is hardly ever necessary - the only exeption is after
+Renaming a label is hardly ever necessary - the only exception is after
 promotion/demotion in connection with a package like fancyref, where the
 label prefix determines the wording of a reference."
   (interactive)
@@ -778,7 +861,7 @@ label prefix determines the wording of a reference."
     (setq newlabel (read-string (format "Rename label \"%s\" to:" label)))
     (if (assoc newlabel (symbol-value reftex-docstruct-symbol))
         (if (not (y-or-n-p
-                  (format "Label '%s' exists. Use anyway? " label)))
+                  (format "Label '%s' exists.  Use anyway? " label)))
             (error "Abort")))
     (save-excursion
       (save-window-excursion
@@ -792,10 +875,10 @@ label prefix determines the wording of a reference."
 
 
 (defun reftex-toc-visit-location (&optional final no-revisit)
-  ;; Visit the tex file corresponding to the toc entry on the current line.
+  ;; Visit the tex file corresponding to the TOC entry on the current line.
   ;; If FINAL is t, stay there
-  ;; If FINAL is 'hide, hide the *toc* window.
-  ;; Otherwise, move cursor back into *toc* window.
+  ;; If FINAL is 'hide, hide the TOC window.
+  ;; Otherwise, move cursor back into TOC window.
   ;; NO-REVISIT means don't visit files, just use live buffers.
   ;; This function is pretty clever about finding back a section heading,
   ;; even if the buffer is not live, or things like outline, x-symbol etc.
@@ -805,7 +888,7 @@ label prefix determines the wording of a reference."
          (toc-window (selected-window))
          show-window show-buffer match)
 
-    (unless toc (error "Don't know which toc line to visit"))
+    (unless toc (error "Don't know which TOC line to visit"))
 
     (cond
 
@@ -929,8 +1012,8 @@ label prefix determines the wording of a reference."
          (reftex-toc-recenter))))
 
 (defun reftex-toggle-auto-toc-recenter ()
-  "Toggle the automatic recentering of the toc window.
-When active, leaving point idle will make the toc window jump to the correct
+  "Toggle the automatic recentering of the TOC window.
+When active, leaving point idle will make the TOC window jump to the correct
 section."
   (interactive)
   (if reftex-toc-auto-recenter-timer
@@ -939,7 +1022,7 @@ section."
             (delete-itimer reftex-toc-auto-recenter-timer)
           (cancel-timer reftex-toc-auto-recenter-timer))
         (setq reftex-toc-auto-recenter-timer nil)
-        (message "Automatic recentering of toc windwo was turned off"))
+        (message "Automatic recentering of TOC window was turned off"))
     (setq reftex-toc-auto-recenter-timer
           (if (featurep 'xemacs)
               (start-itimer "RefTeX Idle Timer for recenter"
@@ -947,7 +1030,7 @@ section."
                             reftex-idle-time reftex-idle-time t)
             (run-with-idle-timer
              reftex-idle-time t 'reftex-recenter-toc-when-idle)))
-    (message "Automatic recentering of toc window was turned on")))
+    (message "Automatic recentering of TOC window was turned on")))
 
 (defun reftex-toc-toggle-dedicated-frame ()
   "Toggle the display of a separate frame for the TOC.
@@ -969,7 +1052,7 @@ always show the current section in connection with the option
       (reftex-make-separate-toc-frame))))
 
 (defun reftex-make-separate-toc-frame ()
-  ;; Create a new fame showing only the toc buffer.
+  ;; Create a new fame showing only the TOC buffer.
   (let ((current-frame (selected-frame))
         (current-window (selected-window))
         (current-toc-window (get-buffer-window "*toc*" 'visible))
@@ -1006,92 +1089,4 @@ always show the current section in connection with the option
       (progn
       (reftex-toggle-auto-toc-recenter))))
 
-;; Table of Contents map
-(define-key reftex-toc-map (if (featurep 'xemacs) [(button2)] [(mouse-2)])
-  'reftex-toc-mouse-goto-line-and-hide)
-(define-key reftex-toc-map [follow-link] 'mouse-face)
-
-(substitute-key-definition
- 'next-line 'reftex-toc-next reftex-toc-map global-map)
-(substitute-key-definition
- 'previous-line 'reftex-toc-previous reftex-toc-map global-map)
-
-(loop for x in
-      '(("n"        . reftex-toc-next)
-        ("p"        . reftex-toc-previous)
-        ("?"        . reftex-toc-show-help)
-        (" "        . reftex-toc-view-line)
-        ("\C-m"     . reftex-toc-goto-line-and-hide)
-        ("\C-i"     . reftex-toc-goto-line)
-        ("\C-c>"    . reftex-toc-display-index)
-        ("r"        . reftex-toc-rescan)
-        ("R"        . reftex-toc-Rescan)
-        ("g"        . revert-buffer)
-        ("q"        . reftex-toc-quit);
-        ("k"        . reftex-toc-quit-and-kill)
-        ("f"        . reftex-toc-toggle-follow);
-        ("a"        . reftex-toggle-auto-toc-recenter)
-        ("d"        . reftex-toc-toggle-dedicated-frame)
-        ("F"        . reftex-toc-toggle-file-boundary)
-        ("i"        . reftex-toc-toggle-index)
-        ("l"        . reftex-toc-toggle-labels)
-        ("t"        . reftex-toc-max-level)
-        ("c"        . reftex-toc-toggle-context)
-;        ("%"        . reftex-toc-toggle-commented)
-        ("\M-%"     . reftex-toc-rename-label)
-        ("x"        . reftex-toc-external)
-        ("z"        . reftex-toc-jump)
-        ("."        . reftex-toc-show-calling-point)
-        ("\C-c\C-n" . reftex-toc-next-heading)
-        ("\C-c\C-p" . reftex-toc-previous-heading)
-        (">"        . reftex-toc-demote)
-        ("<"        . reftex-toc-promote))
-      do (define-key reftex-toc-map (car x) (cdr x)))
-
-(loop for key across "0123456789" do
-      (define-key reftex-toc-map (vector (list key)) 'digit-argument))
-(define-key reftex-toc-map "-" 'negative-argument)
-
-(easy-menu-define
- reftex-toc-menu reftex-toc-map
- "Menu for Table of Contents buffer"
- '("TOC"
-   ["Show Location" reftex-toc-view-line t]
-   ["Go To Location" reftex-toc-goto-line t]
-   ["Exit & Go To Location" reftex-toc-goto-line-and-hide t]
-   ["Show Calling Point" reftex-toc-show-calling-point t]
-   ["Quit" reftex-toc-quit t]
-   "--"
-   ("Edit"
-    ["Promote" reftex-toc-promote t]
-    ["Demote" reftex-toc-demote t]
-    ["Rename Label" reftex-toc-rename-label t])
-   "--"
-   ["Index" reftex-toc-display-index t]
-   ["External Document TOC  " reftex-toc-external t]
-   "--"
-   ("Update"
-    ["Rebuilt *toc* Buffer" revert-buffer t]
-    ["Rescan One File" reftex-toc-rescan reftex-enable-partial-scans]
-    ["Rescan Entire Document" reftex-toc-Rescan t])
-   ("Options"
-    "TOC Items"
-    ["File Boundaries" reftex-toc-toggle-file-boundary :style toggle
-     :selected reftex-toc-include-file-boundaries]
-    ["Labels" reftex-toc-toggle-labels :style toggle
-     :selected reftex-toc-include-labels]
-    ["Index Entries" reftex-toc-toggle-index :style toggle
-     :selected reftex-toc-include-index-entries]
-    ["Context" reftex-toc-toggle-context :style toggle
-     :selected reftex-toc-include-context]
-    "--"
-    ["Follow Mode" reftex-toc-toggle-follow :style toggle
-     :selected reftex-toc-follow-mode]
-    ["Auto Recenter" reftex-toggle-auto-toc-recenter :style toggle
-     :selected reftex-toc-auto-recenter-timer]
-    ["Dedicated Frame" reftex-toc-toggle-dedicated-frame t])
-   "--"
-   ["Help" reftex-toc-show-help t]))
-
-
 ;;; reftex-toc.el ends here