(refill-post-command-function):
[bpt/emacs.git] / lisp / textmodes / reftex-vars.el
index 39e2ffc..a7c0cb1 100644 (file)
@@ -1,8 +1,8 @@
 ;;; reftex-vars.el --- configuration variables for RefTeX
-;; Copyright (c) 1997, 1998, 1999, 2000 Free Software Foundation, Inc.
+;; Copyright (c) 1997, 1998, 1999, 2003, 2004 Free Software Foundation, Inc.
 
 ;; Author: Carsten Dominik <dominik@science.uva.nl>
-;; Version: 4.18
+;; Version: 4.26
 
 ;; This file is part of GNU Emacs.
 
 
 ;; GNU Emacs is distributed in the hope that it will be useful,
 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of
-;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE   See the
 ;; GNU General Public License for more details.
 
 ;; You should have received a copy of the GNU General Public License
-;; along with GNU Emacs; see the file COPYING.  If not, write to the
+;; along with GNU Emacs; see the file COPYING  If not, write to the
 ;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
 ;; Boston, MA 02111-1307, USA.
 
 ;;; Code:
 
 (eval-when-compile (require 'cl))
-(provide 'reftex-vars)
+(eval-and-compile
+  (defun reftex-set-dirty (symbol value)
+    (setq reftex-tables-dirty t)
+    (set symbol value)))
 
 ;; Define the two constants which are needed during compilation
 
@@ -90,9 +93,9 @@
     (LaTeX       "LaTeX default environments"
      (("section"   ?s "%S" "~\\ref{%s}" (nil . t)
        (regexp "parts?" "chapters?" "chap\\." "sections?" "sect?\\."
-              "paragraphs?" "par\\."
-              "\\\\S" "\247" "Teile?" "Kapitel" "Kap\\." "Abschnitte?"
-              "appendi\\(x\\|ces\\)" "App\\."  "Anh\"?ange?" "Anh\\."))
+               "paragraphs?" "par\\."
+               "\\\\S" "\247" "Teile?" "Kapitel" "Kap\\." "Abschnitte?"
+               "appendi\\(x\\|ces\\)" "App\\."  "Anh\"?ange?" "Anh\\."))
 
       ("enumerate" ?i "item:" "~\\ref{%s}" item
        (regexp "items?" "Punkte?"))
@@ -125,24 +128,37 @@ distribution.  Mixed-case symbols are convenience aliases.")
 
 (defconst reftex-cite-format-builtin
   '((default "Default macro \\cite{%l}"
-      "\\cite{%l}")
+      "\\cite[]{%l}")
     (natbib "The Natbib package"
-     ((?\C-m . "\\cite{%l}")
-      (?t    . "\\citet{%l}")
-      (?T    . "\\citet*{%l}")
-      (?p    . "\\citep{%l}")
-      (?P    . "\\citep*{%l}")
+     ((?\C-m . "\\cite[][]{%l}")
+      (?t    . "\\citet[][]{%l}")
+      (?T    . "\\citet*[][]{%l}")
+      (?p    . "\\citep[][]{%l}")
+      (?P    . "\\citep*[][]{%l}")
       (?e    . "\\citep[e.g.][]{%l}")
       (?s    . "\\citep[see][]{%l}")
       (?a    . "\\citeauthor{%l}")
       (?A    . "\\citeauthor*{%l}")
       (?y    . "\\citeyear{%l}")
       (?n    . "\\nocite{%l}")))
+    (amsrefs "The AMSRefs package"
+     ((?\C-m . "\\cite{%l}")
+      (?p    . "\\cite{%l}")
+      (?P    . "\\cites{%l}")
+      (?t    . "\\ocite{%l}")
+      (?T    . "\\ocites{%l}")
+      (?y    . "\\ycite{%l}")
+      (?Y    . "\\ycites{%l}")
+      (?a    . "\\citeauthor{%l}")
+      (?A    . "\\citeauthory{%l}")
+      (?f    . "\\fullcite{%l}")
+      (?F    . "\\fullocite{%l}")
+      (?n    . "\\nocite{%l}")))
     (bibentry "The Bibentry package"
       "\\bibentry{%l}")
     (harvard "The Harvard package"
-     ((?\C-m . "\\cite{%l}")
-      (?p    . "\\cite{%l}")
+     ((?\C-m . "\\cite[]{%l}")
+      (?p    . "\\cite[]{%l}")
       (?t    . "\\citeasnoun{%l}")
       (?n    . "\\citeasnoun{%l}")
       (?s    . "\\possessivecite{%l}")
@@ -150,17 +166,17 @@ distribution.  Mixed-case symbols are convenience aliases.")
       (?y    . "\\citeyear{%l}")
       (?a    . "\\citename{%l}")))
     (chicago "The Chicago package"
-     ((?\C-m . "\\cite{%l}")
-      (?t    . "\\citeN{%l}")
+     ((?\C-m . "\\cite[]{%l}")
+      (?t    . "\\citeN[]{%l}")
       (?T    . "\\shortciteN{%l}")
-      (?p    . "\\cite{%l}")
+      (?p    . "\\cite[]{%l}")
       (?P    . "\\shortcite{%l}")
       (?a    . "\\citeA{%l}")
       (?A    . "\\shortciteA{%l}")
       (?y    . "\\citeyear{%l}")))
     (astron "The Astron package"
-     ((?\C-m . "\\cite{%l}")
-      (?p    . "\\cite{%l}" )
+     ((?\C-m . "\\cite[]{%l}")
+      (?p    . "\\cite[]{%l}" )
       (?t    . "%2a (\\cite{%l})")))
     (author-year "Do-it-yourself Author-year"
      ((?\C-m . "\\cite{%l}")
@@ -182,13 +198,13 @@ The following conventions are valid for all alist entries:
     (multind "The multind.sty package"
        (("\\index{}{*}" 1 ?i "" nil t)))
     (index "The index.sty package"
-          (("\\index[]{*}" 1 ?i "" nil t)
-           ("\\index*[]{*}" 1 ?I "" nil nil)))
+           (("\\index[]{*}" 1 ?i "" nil t)
+            ("\\index*[]{*}" 1 ?I "" nil nil)))
     (Index-Shortcut "index.sty with \\shortindexingon"
        (("\\index[]{*}" 1 ?i "" nil t)
-       ("\\index*[]{*}" 1 ?I "" nil nil)
-       ("^[]{*}" 1 ?^ "" texmathp t)   
-       ("_[]{*}" 1 ?_ "" texmathp nil))))
+        ("\\index*[]{*}" 1 ?I "" nil nil)
+        ("^[]{*}" 1 ?^ "" texmathp t)   
+        ("_[]{*}" 1 ?_ "" texmathp nil))))
   "Builtin stuff for reftex-index-macros.
 Lower-case symbols correspond to a style file of the same name in the LaTeX
 distribution.  Mixed-case symbols are convenience aliases.")
@@ -200,7 +216,7 @@ distribution.  Mixed-case symbols are convenience aliases.")
   "LaTeX label and citation support."
   :tag "RefTeX"
   :link '(url-link :tag "Home Page" 
-                  "http://strw.leidenuniv.nl/~dominik/Tools/")
+                   "http://zon.astro.uva.nl/~dominik/Tools/")
   :link '(emacs-commentary-link :tag "Commentary in reftex.el" "reftex.el")
   :link '(custom-manual "(reftex)Top")
   :prefix "reftex-"
@@ -237,7 +253,6 @@ needs to be larger."
     ("subsubsection"   .  4)
     ("paragraph"       .  5)
     ("subparagraph"    .  6)
-    ("subsubparagraph" .  7)
     ("addchap"         . -1) ; KOMA-Script
     ("addsec"          . -2) ; KOMA-Script
 ;;; ("minisec"         . -7) ; KOMA-Script
@@ -248,14 +263,19 @@ The car of each cons cell is the name of the section macro (without
 the backslash).  The cdr is a number indicating its level.  A negative
 level means the same level as the positive value, but the section will
 never get a number.  The cdr may also be a function which will be called
-to after the section-re matched to determine the level."
+to after the section-re matched to determine the level.
+This list is also used for promotion and demption of sectioning commands.
+If you are using a document class which has several sets of sectioning
+commands, promotion only works correctly if this list is sorted first
+by set, then within each set by level.  The promotion commands always
+select the nearest entry with the correct new level."
   :group 'reftex-table-of-contents-browser
   :set 'reftex-set-dirty
   :type '(repeat
           (cons (string :tag "sectioning macro" "")
-               (choice
-                (number :tag "level           " 0)
-                (symbol :tag "function        " my-level-func)))))
+                (choice
+                 (number :tag "level           " 0)
+                 (symbol :tag "function        " my-level-func)))))
 
 (defcustom reftex-toc-max-level 100
   "*The maximum level of toc entries which will be included in the TOC.
@@ -275,27 +295,43 @@ and also do not show up in chapter numbers."
   :type 'boolean)
 
 
-(defcustom reftex-auto-recenter-toc nil
-  "*Non-nil means, initially turn automatic recentering of toc on.
-When active, the *TOC* buffer will always show the section you
+(defcustom reftex-auto-recenter-toc 'frame
+  "*Non-nil means, turn automatic recentering of *TOC* window on.
+When active, the *TOC* window will always show the section you
 are currently working in.  Recentering happens whenever Emacs is idle for
 more than `reftex-idle-time' seconds.
+
+Value t means, turn on immediately when RefTeX gets started.  Then,
+recentering will work for any toc window created during the session.
+
+Value 'frame (the default) means, turn automatic recentering on only while the
+dedicated TOC frame does exist, and do the recentering only in that frame.  So
+when creating that frame (with \"d\" key in an ordinary TOC window), the
+automatic recentering is turned on.  When the frame gets destroyed, automatic
+recentering is turned off again.
+
 This feature can be turned on and off from the menu 
-(Ref->Options)."
+\(Ref->Options)."
   :group 'reftex-table-of-contents-browser
-  :type 'boolean)
-
+  :type '(choice
+          (const :tag "never" nil)
+          (const :tag "always" t)
+          (const :tag "in dedicated frame only" frame)))
 (defcustom reftex-toc-split-windows-horizontally nil
   "*Non-nil means, create TOC window by splitting window horizontally."
   :group 'reftex-table-of-contents-browser
   :type 'boolean)
 
-(defcustom reftex-toc-split-windows-horizontally-fraction .5
-  "*Fraction of the horizontal width of the frame to be used for TOC window.
-Only relevant when `reftex-toc-split-windows-horizontally' is non-nil."
+(defcustom reftex-toc-split-windows-fraction .3
+  "*Fraction of the width or height of the frame to be used for TOC window.
+See also `reftex-toc-split-windows-horizontally'."
   :group 'reftex-table-of-contents-browser
   :type 'number)
 
+(defvar reftex-toc-split-windows-horizontally-fraction 0.5
+  "This variable is obsolete, use `reftex-toc-split-windows-fraction' instead.")
+
 (defcustom reftex-toc-keep-other-windows t
   "*Non-nil means, split the selected window to display the *toc* buffer.
 This helps to keep the window configuration, but makes the *toc* small.
@@ -322,6 +358,17 @@ This flag can be toggled from within the *toc* buffer with the `i' key."
   :group 'reftex-table-of-contents-browser
   :type 'boolean)
 
+(defcustom reftex-toc-confirm-promotion 2
+  "*Non-nil means, promotion/demotion commands first prompt for confirmation.
+When nil, the command is executed immediately.  When this is an integer
+N, ask for confirmation only if N or more section commands are going to be
+changed."
+  :group 'reftex-table-of-contents-browser
+  :type '(choice
+          (const  :tag "Never" nil)
+          (const  :tag "Always" t)
+          (number :tag "When more than N sections" :value 2)))
+
 (defcustom reftex-toc-include-context nil
   "*Non-nil means, include context with labels in the *toc* buffer.
 Context will only be shown when labels are visible as well.
@@ -360,7 +407,7 @@ When nil, follow-mode will be suspended for stuff in unvisited files."
 
 (defcustom reftex-default-label-alist-entries
   '(amsmath endnotes fancybox floatfig longtable picinpar
-           rotating sidecap subfigure supertab wrapfig LaTeX)
+            rotating sidecap subfigure supertab wrapfig LaTeX)
   "Default label alist specifications.  LaTeX should always be the last entry.
 The value of this variable is a list of symbols with associations in the 
 constant `reftex-label-alist-builtin'.  Check that constant for a full list
@@ -368,14 +415,14 @@ of options."
   :group 'reftex-defining-label-environments
   :set   'reftex-set-dirty
   :type `(set
-         :indent 4
+          :indent 4
           :inline t
           :greedy t
           ,@(mapcar
-            (lambda (x)
-              (list 'const :tag (concat (symbol-name (nth 0 x))
-                                        ": " (nth 1 x))
-                    (nth 0 x)))
+             (lambda (x)
+               (list 'const :tag (concat (symbol-name (nth 0 x))
+                                         ": " (nth 1 x))
+                     (nth 0 x)))
              reftex-label-alist-builtin)))
 
 (defcustom reftex-label-alist nil
@@ -437,6 +484,8 @@ LABEL-PREFIX
     empty string.  The prefix may contain the following `%' escapes:
        %f   Current file name with directory and extension stripped.
        %F   Current file name relative to directory of master file.
+       %m   Master file name, directory and extension stripped.
+       %M   Directory name (without path) where master file is located.
        %u   User login name, on systems which support this.
        %S   A section prefix derived with variable `reftex-section-prefixes'.
 
@@ -523,10 +572,10 @@ list.  However, builtin defaults should normally be set with the variable
            (choice    :tag "Environment or \\macro "
                       (const  :tag "Ignore, just use typekey" nil)
                       (string "")
-                     (symbol :tag "Special parser" my-parser))
-          (choice    :tag "Type specification    "
-                     (const :tag "unspecified, like in \\label" nil)
-                     (character :tag "Char  " ?a))
+                      (symbol :tag "Special parser" my-parser))
+           (choice    :tag "Type specification    "
+                      (const :tag "unspecified, like in \\label" nil)
+                      (character :tag "Char  " ?a))
            (choice    :tag "Label prefix string   "
                       (const  :tag "Default" nil)
                       (string :tag "String" "lab:"))
@@ -534,27 +583,27 @@ list.  However, builtin defaults should normally be set with the variable
                       (const  :tag "Default" nil)
                       (string :tag "String" "~\\ref{%s}"))
            (choice    :tag "Context method        "
-                     (const  :tag "Default position" t)
-                     (const  :tag "After label"      nil)
-                     (number :tag "Macro arg nr" 1)
-                     (regexp :tag "Regexp" "")
-                     (const  :tag "Caption in float" caption)
-                     (const  :tag "Item in list" item)
-                     (const  :tag "Eqnarray-like" eqnarray-like)
-                     (const  :tag "Alignat-like" alignat-like)
-                     (symbol :tag "Function" my-func))
-          (repeat :tag "Magic words" :extra-offset 2 (string))
-          (option (choice :tag "Make TOC entry     "
-                          (const :tag "No entry" nil)
-                          (integer :tag "Level" :value -3))))
+                      (const  :tag "Default position" t)
+                      (const  :tag "After label"      nil)
+                      (number :tag "Macro arg nr" 1)
+                      (regexp :tag "Regexp" "")
+                      (const  :tag "Caption in float" caption)
+                      (const  :tag "Item in list" item)
+                      (const  :tag "Eqnarray-like" eqnarray-like)
+                      (const  :tag "Alignat-like" alignat-like)
+                      (symbol :tag "Function" my-func))
+           (repeat :tag "Magic words" :extra-offset 2 (string))
+           (option (choice :tag "Make TOC entry     "
+                           (const :tag "No entry" nil)
+                           (integer :tag "Level" :value -3))))
      (choice
       :tag "Package"
       :value AMSTeX
       ,@(mapcar
-        (lambda (x)
-          (list 'const :tag (concat (symbol-name (nth 0 x)))
-                (nth 0 x)))
-        reftex-label-alist-builtin)))))
+         (lambda (x)
+           (list 'const :tag (concat (symbol-name (nth 0 x)))
+                 (nth 0 x)))
+         reftex-label-alist-builtin)))))
 
 (defcustom reftex-section-prefixes '((0 . "part:") (1 . "cha:") (t . "sec:"))
   "Prefixes for section labels.
@@ -563,15 +612,15 @@ this list is used to determine the correct prefix string depending on the
 current section level.
 The list is an alist, with each entry of the form (KEY . PREFIX)
 Possible keys are sectioning macro names like `chapter', section levels
-(as given in `reftex-section-levels'), and t for the default."
+\(as given in `reftex-section-levels'), and t for the default."
   :group 'reftex-defining-label-environments
   :type '(repeat
-         (cons :value (0 . "")
-               (choice
-                (string :tag  "macro name")
-                (integer :tag "section level")
-                (const :tag "default" t))
-               (string :tag "Prefix"))))
+          (cons :value (0 . "")
+                (choice
+                 (string :tag  "macro name")
+                 (integer :tag "section level")
+                 (const :tag "default" t))
+                (string :tag "Prefix"))))
 
 (defcustom reftex-default-context-regexps
   '((caption       . "\\\\\\(rot\\)?caption\\*?[[{]")
@@ -584,6 +633,43 @@ the final regular expression - so %s will be replaced with the environment
 or macro."
   :group 'reftex-defining-label-environments
   :type '(repeat (cons (symbol) (regexp))))
+
+(defcustom reftex-trust-label-prefix nil
+  "Non-nil means, trust the label prefix when determining label type.
+It is customary to use special label prefixes to distinguish different label
+types.  The label prefixes have no syntactic meaning in LaTeX (unless
+special packages like fancyref) are being used.  RefTeX can and by
+default does parse around each label to detect the correct label type,
+but this process can be slow when a document contains thousands of
+labels.  If you use label prefixes consistently, you may speed up
+document parsing by setting this variable to a non-nil value.  RefTeX
+will then compare the label prefix with the prefixes found in
+`reftex-label-alist' and derive the correct label type in this way.
+Possible values for this option are:
+
+t          This means to trust any label prefixes found.
+regexp     If a regexp, only prefixes matched by the regexp are trusted.
+list       List of accepted prefixes, as strings.  The colon is part of
+           the prefix, e.g. (\"fn:\" \"eqn:\" \"item:\").
+nil        Never trust a label prefix.
+
+The only disadvantage of using this feature is that the label context
+displayed in the label selection buffer along with each label is
+simply some text after the label definition.  This is no problem if you
+place labels keeping this in mind (e.g. *before* the equation, *at
+the beginning* of a fig/tab caption ...).  Anyway, it is probably best
+to use the regexp or the list value types to fine-tune this feature.
+For example, if your document contains thousands of footnotes with
+labels fn:xxx, you may want to set this variable to the value \"^fn:$\" or
+\(\"fn:\").  Then RefTeX will still do extensive parsing for any
+non-footnote labels."
+  :group 'reftex-defining-label-environments
+  :type '(choice
+          (const :tag "Always" t)
+          (const :tag "Never" nil)
+          (regexp)
+          (repeat :tag "List"
+                  (string :tag "prefix (with colon)"))))
   
 (defcustom reftex-special-environment-functions nil
   "List of functions to be called when trying to figure out current environment.
@@ -687,7 +773,7 @@ indicating the label types for which it should be true.  The strings work
 like character classes.
 Thus, the combination may be set differently for each label type.  The
 default settings \"s\" and \"sft\" mean: Derive section labels from headings
-(with confirmation).  Prompt for figure and table labels.  Use simple labels
+\(with confirmation).  Prompt for figure and table labels.  Use simple labels
 without confirmation for everything else.
 The available label types are: s (section), f (figure), t (table), i (item),
 e (equation), n (footnote), N (endnote), plus any definitions in
@@ -748,7 +834,7 @@ DOWNCASE    t:   Downcase words before using them."
                 (repeat  :tag "Ignore words"
                          :entry-format "           %i %d %v"
                          (string :tag ""))
-               (option (boolean :tag "Downcase words          "))))
+                (option (boolean :tag "Downcase words          "))))
 
 (defcustom reftex-label-illegal-re "[^-a-zA-Z0-9_+=:;,.]"
   "Regexp matching characters not legal in labels."
@@ -824,7 +910,7 @@ get one interactively during selection from the label menu."
     (choice :tag "Hide short context              " ,@reftex-tmp)
     (choice :tag "Follow context in other window  " ,@reftex-tmp)
     (choice :tag "Show commented labels           " ,@reftex-tmp)
-    (choice :tag "Obsolete flag.  Don't use.      " ,@reftex-tmp)
+    (choice :tag "Obsolete flag,  Don't use.      " ,@reftex-tmp)
     (choice :tag "Show begin/end of included files" ,@reftex-tmp)))
 
 (defcustom reftex-multiref-punctuation '((?, . ", ") (?- . "--") (?+ . " and "))
@@ -963,6 +1049,9 @@ display, and for (setq reftex-comment-citations t).
 %< as a special operator kills punctuation and space around it after the 
 string has been formatted.
 
+A pair of square brackets indicates an optional argument, and RefTeX
+will prompt for the values of these arguments.
+
 Beware that all this only works with BibTeX database files.  When
 citations are made from the \\bibitems in an explicit thebibliography
 environment, only %l is available.
@@ -995,6 +1084,42 @@ E.g.: (setq reftex-cite-format 'natbib)"
             (cons (character :tag "Key character" ?\r)
                   (string    :tag "Format string" "")))))
 
+(defcustom reftex-cite-prompt-optional-args 'maybe
+  "*Non-nil means, prompt for empty optional arguments in cite macros.
+When an entry in `reftex-cite-format' ist given with square brackets to
+indicate optional arguments (for example \\cite[][]{%l}), RefTeX can
+prompt for values.  Possible values are:
+
+nil     Never prompt for optional arguments
+t       Always prompt
+maybe   Prompt only if `reftex-citation' was called with C-u prefix arg
+
+Unnecessary empty optional arguments are removed before insertion into
+the buffer.  See `reftex-cite-cleanup-optional-args'."
+  :group 'reftex-citation-support
+  :type '(choice
+          (const :tag "Always" t)
+          (const :tag "When called with prefix arg" maybe)
+          (const :tag "Never" nil)))
+
+(defcustom reftex-cite-cleanup-optional-args t
+  "*Non-nil means, remove unnecessary empty optional arguments in cite macros.
+The cite macros provided by some packages (for example
+natbib) allow specifying two optional arguments, one for a prefix to
+the citation, and a second for a postfix.  When only one optional
+argument is given, it is interpreted as postfix.  When this option is
+t, RefTeX removes unnecessary empty optional arguments from the cite
+macro before insertion.  For example, it will change
+    \\cite[][]{Jones}              -> \\cite{Jones}
+    \\cite[][Chapter 1]{Jones}     -> \\cite[Chapter 1]{Jones}
+    \\cite[see][]{Jones}           -> \\cite[see][]{Jones}
+    \\cite[see][Chapter 1]{Jones}  -> \\cite{Jones}
+Is is possible that other packages have other conventions about which
+optional argument is interpreted how - that is why this cleaning up
+can be turned off."
+  :group 'reftex-citation-support
+  :type 'boolean)
+
 (defcustom reftex-comment-citations nil
   "*Non-nil means add a comment for each citation describing the full entry.
 The comment is formatted according to `reftex-cite-comment-format'."
@@ -1063,16 +1188,16 @@ you will be asked for confirmation to turn it on and rescan the document."
 These correspond to the makeindex keywords LEVEL ENCAP ACTUAL QUOTE ESCAPE."
   :group 'reftex-index-support
   :type '(list
-         (string :tag "LEVEL  separator")
-         (string :tag "ENCAP  char     ")
-         (string :tag "ACTUAL char     ")
-         (string :tag "QUOTE  char     ")
-         (string :tag "ESCAPE char     ")))
+          (string :tag "LEVEL  separator")
+          (string :tag "ENCAP  char     ")
+          (string :tag "ACTUAL char     ")
+          (string :tag "QUOTE  char     ")
+          (string :tag "ESCAPE char     ")))
 
 (defcustom reftex-index-macros nil
   "Macros which define index entries.  The structure is
 
-(MACRO INDEX-TAG KEY PREFIX EXCLUDE REPEAT)
+\(MACRO INDEX-TAG KEY PREFIX EXCLUDE REPEAT)
 
 MACRO is the macro.  Arguments should be denoted by empty braces like
 \\index[]{*}.  Use square brackets to denote optional arguments.  The star
@@ -1113,27 +1238,27 @@ package here."
   :group 'reftex-index-support
   :set 'reftex-set-dirty
   :type `(list
-         (repeat 
-          :inline t
-          (list :value ("" "idx" ?a "" nil)
-                (string  :tag "Macro with args")
-                (choice  :tag "Index Tag      "
-                        (string)
-                        (integer :tag "Macro arg Nr" :value 1))
-                (character :tag "Access Key     ")
-                (string  :tag "Key Prefix     ")
-                (symbol  :tag "Exclusion hook ")
+          (repeat 
+           :inline t
+           (list :value ("" "idx" ?a "" nil)
+                 (string  :tag "Macro with args")
+                 (choice  :tag "Index Tag      "
+                         (string)
+                         (integer :tag "Macro arg Nr" :value 1))
+                 (character :tag "Access Key     ")
+                 (string  :tag "Key Prefix     ")
+                 (symbol  :tag "Exclusion hook ")
                  (boolean :tag "Repeat Outside ")))
-         (option
-          :tag "Package:"
-          (choice :tag "Package"
-                  :value index
-                  ,@(mapcar
-                     (lambda (x)
-                       (list 'const :tag (concat (symbol-name (nth 0 x))
-                                                 ": " (nth 1 x))
-                             (nth 0 x)))
-                     reftex-index-macros-builtin)))))
+          (option
+           :tag "Package:"
+           (choice :tag "Package"
+                   :value index
+                   ,@(mapcar
+                      (lambda (x)
+                        (list 'const :tag (concat (symbol-name (nth 0 x))
+                                                  ": " (nth 1 x))
+                              (nth 0 x)))
+                      reftex-index-macros-builtin)))))
 
 (defcustom reftex-index-default-macro '(?i "idx")
   "The default index macro for \\[reftex-index-selection-or-word].
@@ -1146,10 +1271,10 @@ DEFAULT-TAG: This is the tag to be used if the macro requires a TAG argument.
              macro is optional, the TAG argument will be omitted."
   :group 'reftex-index-support
   :type '(list
-         (character :tag "Character identifying default macro")
-         (choice    :tag "Default index tag                  "
-                 (const nil)
-                 (string))))
+          (character :tag "Character identifying default macro")
+          (choice    :tag "Default index tag                  "
+                  (const nil)
+                  (string))))
 
 (defcustom reftex-index-default-tag "idx"
   "Default index tag.
@@ -1163,16 +1288,16 @@ nil       Do not provide a default index
 last      The last used index tag will be offered as default."
   :group 'reftex-index-support
   :type '(choice
-         (const :tag  "no default" nil)
-         (const :tag  "last used " 'last)
-         (string :tag "index tag " "idx")))
+          (const :tag  "no default" nil)
+          (const :tag  "last used " 'last)
+          (string :tag "index tag " "idx")))
 
 (defcustom reftex-index-math-format "$%s$"
   "Format of index entries when copied from inside math mode.
 When `reftex-index-selection-or-word' is executed inside TeX math mode,
 the index key copied from the buffer is processed with this format string
 through the `format' function.  This can be used to add the math delimiters
-(e.g. `$') to the string.
+\(e.g. `$') to the string.
 Requires the `texmathp.el' library which is part of AUCTeX."
   :group 'reftex-index-support
   :type 'string)
@@ -1226,8 +1351,8 @@ at one of these points, no word boundary is required there."
 If the function returns nil, the current match is skipped."
   :group 'reftex-index-support
   :type '(choice
-         (const :tag "No verification" nil)
-         (function)))
+          (const :tag "No verification" nil)
+          (function)))
 
 (defcustom reftex-index-phrases-skip-indexed-matches nil
   "*Non-nil means, skip matches which appear to be indexed already.
@@ -1235,7 +1360,7 @@ When doing global indexing from the phrases buffer, searches for some
 phrases may match at places where that phrase was already indexed.  In
 particular when indexing an already processed document again, this
 will even be the norm.  When this variable is non-nil, RefTeX checks if
-the match is an index macro argument, or if an index macro is directly
+the match is inside an index macro argument, or if an index macro is directly
 before or after the phrase.  If that is the case, that match will
 be ignored."
   :group 'reftex-index-support
@@ -1304,7 +1429,7 @@ references (both ways) and index entries is hard-coded.  This variable
 is only to configure additional structures for which crossreference
 viewing can be useful.  Each entry has the structure 
 
-(MACRO-RE SEARCH-RE HIGHLIGHT).
+\(MACRO-RE SEARCH-RE HIGHLIGHT).
 
 MACRO-RE is matched against the macro.  SEARCH-RE is the regexp used
 to search for cross references.  `%s' in this regexp is replaced with
@@ -1312,8 +1437,8 @@ with the macro argument at point.  HIGHLIGHT is an integer indicating
 which subgroup of the match should be highlighted."
   :group 'reftex-viewing-cross-references
   :type '(repeat (group (regexp  :tag "Macro  Regexp  ")
-                       (string  :tag "Search Regexp  ")
-                       (integer :tag "Highlight Group"))))
+                        (string  :tag "Search Regexp  ")
+                        (integer :tag "Highlight Group"))))
 
 (defcustom reftex-auto-view-crossref t
   "*Non-nil means, initially turn automatic viewing of crossref info on.
@@ -1324,11 +1449,11 @@ displayed, the echo area will display information about that cross
 reference.  You can also set the variable to the symbol `window'.  In
 this case a small temporary window is used for the display.
 This feature can be turned on and off from the menu 
-(Ref->Options)."
+\(Ref->Options)."
   :group 'reftex-viewing-cross-references
   :type '(choice (const :tag "off" nil)
-                (const :tag "in Echo Area" t)
-                (const :tag "in Other Window" window)))
+                 (const :tag "in Echo Area" t)
+                 (const :tag "in Other Window" window)))
 
 (defcustom reftex-idle-time 1.2
   "*Time (secs) Emacs has to be idle before automatic crossref display is done.
@@ -1395,7 +1520,7 @@ See also `reftex-use-external-file-finders'."
   :type '(repeat (string :tag "Specification")))
 
 (defcustom reftex-file-extensions '(("tex" . (".tex" ".ltx"))
-                                   ("bib" . (".bib")))
+                                    ("bib" . (".bib")))
   "*Association list with file extensions for different file types.
 This is a list of items, each item is like: (TYPE . (DEF-EXT OTHER-EXT ...))
 
@@ -1410,7 +1535,7 @@ If you are using AUCTeX, you also need to add new extensions to
 TeX-file-extensions."
   :group 'reftex-finding-files
   :type '(repeat (cons (string :tag "File type")
-                      (repeat (string :tag "Extension")))))
+                       (repeat (string :tag "Extension")))))
 
 (defcustom reftex-search-unrecursed-path-first t
   "*Non-nil means, search all specified directories before trying recursion.
@@ -1435,7 +1560,7 @@ the variables `reftex-texpath-environment-variables' and
   :type 'boolean)
 
 (defcustom reftex-external-file-finders '(("tex" . "kpsewhich -format=.tex %f")
-                                         ("bib" . "kpsewhich -format=.bib %f"))
+                                          ("bib" . "kpsewhich -format=.bib %f"))
   "*Association list with external programs to call for finding files.
 Each entry is a cons cell (TYPE . PROGRAM).
 TYPE is either \"tex\" or \"bib\".  PROGRAM is the external program to use with
@@ -1444,7 +1569,7 @@ Note that these commands will be executed directly, not via a shell.
 Only relevant when `reftex-use-external-file-finders' is non-nil."
   :group 'reftex-finding-files
   :type '(repeat (cons (string :tag "File type")
-                      (string :tag "Program  "))))
+                       (string :tag "Program  "))))
 
 ;; Tuning the parser ----------------------------------------------------
 
@@ -1604,10 +1729,10 @@ Changing this variable requires to rebuild the selection and *toc* buffers
 to become effective (keys `g' or `r')."
   :group 'reftex-fontification-configurations
   :type '(choice
-         (const :tag "Never" nil)
-         (const :tag "Cursor driven" cursor)
-         (const :tag "Mouse driven" mouse)
-         (const :tag "Mouse and Cursor driven." both)))
+          (const :tag "Never" nil)
+          (const :tag "Cursor driven" cursor)
+          (const :tag "Mouse driven" mouse)
+          (const :tag "Mouse and Cursor driven." both)))
 
 (defcustom reftex-cursor-selected-face 'highlight
   "Face name to highlight cursor selected item in toc and selection buffers.
@@ -1714,17 +1839,17 @@ may require a restart of Emacs in order to become effective."
   :group 'reftex-miscellaneous-configurations
   :group 'LaTeX
   :type '(choice 
-         (const :tag "No plug-ins" nil)
-         (const :tag "All possible plug-ins" t)
-         (list
-          :tag "Individual choice"
-          :value (t t t t t)
-          (boolean :tag "supply label in new sections and environments")
-          (boolean :tag "supply argument for macros like `\\label'     ")
-          (boolean :tag "supply argument for macros like `\\ref'       ")
-          (boolean :tag "supply argument for macros like `\\cite'      ")
-          (boolean :tag "supply argument for macros like `\\index'     ")
-          )))
+          (const :tag "No plug-ins" nil)
+          (const :tag "All possible plug-ins" t)
+          (list
+           :tag "Individual choice"
+           :value (t t t t t)
+           (boolean :tag "supply label in new sections and environments")
+           (boolean :tag "supply argument for macros like `\\label'     ")
+           (boolean :tag "supply argument for macros like `\\ref'       ")
+           (boolean :tag "supply argument for macros like `\\cite'      ")
+           (boolean :tag "supply argument for macros like `\\index'     ")
+           )))
 
 (defcustom reftex-allow-detached-macro-args nil
   "*Non-nil means, allow arguments of macros to be detached by whitespace.
@@ -1744,4 +1869,8 @@ construct:  \\bbb [xxx] {aaa}."
   :group 'reftex-miscellaneous-configurations
   :type 'hook)
 
+
+(provide 'reftex-vars)
+
+;;; arch-tag: 9591ea34-ef39-4431-90b7-c115eaf5e16f
 ;;; reftex-vars.el ends here