emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] Changes to emacs/lisp/textmodes/reftex-auc.el [gnus-5_10-b


From: Miles Bader
Subject: [Emacs-diffs] Changes to emacs/lisp/textmodes/reftex-auc.el [gnus-5_10-branch]
Date: Sat, 04 Sep 2004 08:19:40 -0400

Index: emacs/lisp/textmodes/reftex-auc.el
diff -c /dev/null emacs/lisp/textmodes/reftex-auc.el:1.15.2.1
*** /dev/null   Sat Sep  4 12:02:29 2004
--- emacs/lisp/textmodes/reftex-auc.el  Sat Sep  4 12:01:13 2004
***************
*** 0 ****
--- 1,214 ----
+ ;;; reftex-auc.el --- RefTeX's interface to AUCTeX
+ ;; Copyright (c) 1997, 1998, 1999, 2000, 2003 Free Software Foundation, Inc.
+ 
+ ;; Author: Carsten Dominik <address@hidden>
+ ;; Version: 4.21
+ 
+ ;; This file is part of GNU Emacs.
+ 
+ ;; GNU Emacs is free software; you can redistribute it and/or modify
+ ;; it under the terms of the GNU General Public License as published by
+ ;; the Free Software Foundation; either version 2, or (at your option)
+ ;; any later version.
+ 
+ ;; 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
+ ;; 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
+ ;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ ;; Boston, MA 02111-1307, USA.
+ 
+ ;;; Commentary:
+ 
+ ;;; Code:
+ 
+ (eval-when-compile (require 'cl))
+ (provide 'reftex-auc)
+ (require 'reftex)
+ ;;;
+ 
+ (defun reftex-plug-flag (which)
+   ;; Tell if a certain flag is set in reftex-plug-into-AUCTeX
+   (or (eq t reftex-plug-into-AUCTeX)
+       (and (listp reftex-plug-into-AUCTeX)
+            (nth which reftex-plug-into-AUCTeX))))
+ 
+ (defun reftex-arg-label (optional &optional prompt definition)
+   "Use `reftex-label', `reftex-reference' or AUCTeX's code to insert label 
arg.
+ What is being used depends upon `reftex-plug-into-AUCTeX'."
+   (let (label)
+     (cond
+      ((and definition (reftex-plug-flag 1))
+       ;; Create a new label, with a temporary brace for `reftex-what-macro'
+       (unwind-protect
+           (progn (insert "{") (setq label (or (reftex-label nil t) "")))
+         (delete-backward-char 1)))
+      ((and (not definition) (reftex-plug-flag 2))
+       ;; Reference a label with RefTeX
+       (setq label (reftex-reference nil t)))
+      (t
+       ;; AUCTeX's default mechanism
+       (setq label (completing-read (TeX-argument-prompt optional prompt "Key")
+                                    (LaTeX-label-list)))))
+     (if (and definition (not (string-equal "" label)))
+         (LaTeX-add-labels label))
+     (TeX-argument-insert label optional)))
+ 
+ (defun reftex-arg-cite (optional &optional prompt definition)
+   "Use `reftex-citation' or AUCTeX's code to insert a cite-key macro argument.
+ What is being used depends upon `reftex-plug-into-AUCTeX'."
+   (let (items)
+     (cond
+      ((and (not definition) (reftex-plug-flag 3))
+       (setq items (list (or (reftex-citation t) ""))))
+      (t
+       (setq prompt (concat (if optional "(Optional) " "")
+                            (if prompt prompt "Add key")
+                            ": (default none) "))
+       (setq items (multi-prompt "," t prompt (LaTeX-bibitem-list)))))
+     (apply 'LaTeX-add-bibitems items)
+     (TeX-argument-insert (mapconcat 'identity items ",") optional)))
+ 
+ 
+ (defun reftex-arg-index-tag (optional &optional prompt &rest args)
+   "Prompt for an index tag with completion. 
+ This is the name of an index, not the entry."
+   (let (tag taglist)
+     (setq prompt (concat (if optional "(Optional) " "")
+                          (if prompt prompt "Index tag")
+                          ": (default none) "))
+     (if (and reftex-support-index (reftex-plug-flag 4))
+         ;; Use RefTeX completion
+         (progn
+           (reftex-access-scan-info nil)
+           (setq taglist 
+                 (cdr (assoc 'index-tags 
+                             (symbol-value reftex-docstruct-symbol)))
+                 tag (completing-read prompt (mapcar 'list taglist))))
+       ;; Just ask like AUCTeX does.
+       (setq tag (read-string prompt)))
+     (TeX-argument-insert tag optional)))
+ 
+ (defun reftex-arg-index (optional &optional prompt &rest args)
+   "Prompt for an index entry completing with known entries.
+ Completion is specific for just one index, if the macro or a tag
+ argument identify one of multiple indices."
+   (let* (tag key)
+     (if (and reftex-support-index (reftex-plug-flag 4))
+         (progn
+           (reftex-access-scan-info nil)
+           (setq tag (reftex-what-index-tag)
+                 key (reftex-index-complete-key (or tag "idx"))))
+       (setq key (completing-read (TeX-argument-prompt optional prompt "Key")
+                                  (LaTeX-index-entry-list))))
+     (unless (string-equal "" key)
+       (LaTeX-add-index-entries key))
+     (TeX-argument-insert key optional)))
+ 
+ (defun reftex-what-index-tag ()
+   ;; Look backward to find out what index the macro at point belongs to
+   (let ((macro (save-excursion
+                  (and (re-search-backward "\\\\[a-zA-Z*]+" nil t)
+                       (match-string 0))))
+         tag entry)
+     (when (and macro
+                (setq entry (assoc macro reftex-index-macro-alist)))
+       (setq tag (nth 1 entry))
+       (cond
+        ((stringp tag) tag)
+        ((integerp tag)
+         (save-excursion
+           (goto-char (match-end 1))
+           (or (reftex-nth-arg tag (nth 6 entry)) "idx")))
+        (t "idx")))))
+ 
+ (defvar LaTeX-label-function)
+ (defun reftex-plug-into-AUCTeX ()
+   ;; Replace AUCTeX functions with RefTeX functions.
+   ;; Which functions are replaced is controlled by the variable
+   ;; `reftex-plug-into-AUCTeX'.
+   
+   (if (reftex-plug-flag 0)
+       (setq LaTeX-label-function 'reftex-label)
+     (setq LaTeX-label-function nil))
+ 
+   (and (or (reftex-plug-flag 1) (reftex-plug-flag 2))
+        (fboundp 'TeX-arg-label)
+        (fset 'TeX-arg-label 'reftex-arg-label))
+ 
+   (and (reftex-plug-flag 3)
+        (fboundp 'TeX-arg-cite)
+        (fset 'TeX-arg-cite 'reftex-arg-cite))
+   
+   (and (reftex-plug-flag 4) 
+        (fboundp 'TeX-arg-index-tag)
+        (fset 'TeX-arg-index-tag 'reftex-arg-index-tag))
+   (and (reftex-plug-flag 4) 
+        (fboundp 'TeX-arg-index)
+        (fset 'TeX-arg-index 'reftex-arg-index)))
+ 
+ (defun reftex-toggle-plug-into-AUCTeX ()
+   "Toggle Interface between AUCTeX and RefTeX on and off."
+   (interactive)
+   (unless (and (featurep 'tex-site) (featurep 'latex))
+     (error "AUCTeX's LaTeX mode does not seem to be loaded"))
+   (setq reftex-plug-into-AUCTeX (not reftex-plug-into-AUCTeX))
+   (reftex-plug-into-AUCTeX)
+   (if reftex-plug-into-AUCTeX
+       (message "RefTeX has been plugged into AUCTeX.")
+     (message "RefTeX no longer interacts with AUCTeX.")))
+ 
+ (defun reftex-add-label-environments (entry-list)
+   "Add label environment descriptions to `reftex-label-alist-style'.
+ The format of ENTRY-LIST is exactly like `reftex-label-alist'.  See there
+ for details.
+ This function makes it possible to support RefTeX from AUCTeX style files.
+ The entries in ENTRY-LIST will be processed after the user settings in
+ `reftex-label-alist', and before the defaults (specified in
+ `reftex-default-label-alist-entries').  Any changes made to
+ `reftex-label-alist-style' will raise a flag to the effect that
+ the label information is recompiled on next use."
+   (unless reftex-docstruct-symbol
+     (reftex-tie-multifile-symbols))
+   (when (and reftex-docstruct-symbol
+              (symbolp reftex-docstruct-symbol))
+     (let ((list (get reftex-docstruct-symbol 'reftex-label-alist-style))
+           entry changed)
+       (while entry-list
+         (setq entry (pop entry-list))
+         (unless (member entry list)
+           (setq reftex-tables-dirty t
+                 changed t)
+           (push entry list)))
+       (when changed
+         (put reftex-docstruct-symbol 'reftex-label-alist-style list)))))
+ (defalias 'reftex-add-to-label-alist 'reftex-add-label-environments)
+ 
+ (defun reftex-add-section-levels (entry-list)
+   "Add entries to the value of `reftex-section-levels'.
+ The added values are kept local to the current document.  The format
+ of ENTRY-LIST is a list of cons cells (\"MACRONAME\" . LEVEL).  See
+ `reftex-section-levels' for an example."
+   (unless reftex-docstruct-symbol
+     (reftex-tie-multifile-symbols))
+   (when (and reftex-docstruct-symbol
+              (symbolp reftex-docstruct-symbol))
+     (let ((list (get reftex-docstruct-symbol 'reftex-section-levels))
+           entry changed)
+       (while entry-list
+         (setq entry (pop entry-list))
+         (unless (member entry list)
+           (setq reftex-tables-dirty t
+                 changed t)
+           (push entry list)))
+       (when changed
+         (put reftex-docstruct-symbol 'reftex-section-levels list)))))
+ 
+ (defun reftex-notice-new-section ()
+   (reftex-notice-new 1 'force))
+ 
+ ;;; arch-tag: 4a798e68-3405-421c-a09b-0269aac64ab4
+ ;;; reftex-auc.el ends here




reply via email to

[Prev in Thread] Current Thread [Next in Thread]