auctex-diffs
[Top][All Lists]
Advanced

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

[AUCTeX-diffs] Changes to reftex/lisp/reftex-sel.el,v


From: Ralf Angeli
Subject: [AUCTeX-diffs] Changes to reftex/lisp/reftex-sel.el,v
Date: Sun, 27 Jan 2008 16:16:05 +0000

CVSROOT:        /sources/auctex
Module name:    reftex
Changes by:     Ralf Angeli <angeli>    08/01/27 16:16:05

Index: reftex-sel.el
===================================================================
RCS file: /sources/auctex/reftex/lisp/reftex-sel.el,v
retrieving revision 1.33
retrieving revision 1.34
diff -u -b -r1.33 -r1.34
--- reftex-sel.el       23 Aug 2007 21:36:02 -0000      1.33
+++ reftex-sel.el       27 Jan 2008 16:16:05 -0000      1.34
@@ -1,7 +1,7 @@
 ;;; reftex-sel.el --- the selection modes for RefTeX
 
 ;; Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
-;;   2006, 2007 Free Software Foundation, Inc.
+;;   2006, 2007, 2008 Free Software Foundation, Inc.
 
 ;; Author: Carsten Dominik <address@hidden>
 ;; Maintainer: address@hidden
@@ -533,21 +533,59 @@
   (interactive)
   (setq reftex-last-follow-point -1)
   (setq cb-flag (not cb-flag)))
-(defun reftex-select-toggle-varioref ()
-  "Toggle the macro used for referencing the label between \\ref and \\vref."
-  (interactive)
-  (if (string= refstyle "\\ref")
-      (setq refstyle "\\vref")
-    (setq refstyle "\\ref"))
+
+(defun reftex-select-cycle-active-ref-styles ()
+  "Return ordered alist of active reference styles."
+  (let (list)
+    (dolist (style reftex-ref-style-active-list)
+      (dolist (spec reftex-ref-style-alist)
+       (when (string= (nth 1 spec) style)
+         (add-to-list 'list spec t))))
+    list))
+
+(defun reftex-select-cycle-ref-style-internal (&optional reverse)
+  "Cycle through macros used for referencing.
+Reverse list if optional argument REVERSE is non-nil."
+  ;; First build a list containing only active styles, then reassemble
+  ;; the list so that the current entry is at the beginning, then
+  ;; traverse the list and find the next entry with the currently
+  ;; selected reference type.  (XXX: Possible optimizations: Walk
+  ;; through `reftex-ref-style-alist' for each active style in the
+  ;; order given in `reftex-ref-style-active-list' instead of building
+  ;; an ordered list each time or cache the ordered list somehow.)
+  (let* ((orig (reftex-select-cycle-active-ref-styles))
+        (orig (if reverse (reverse orig) orig))
+        (list (member (assoc refstyle orig) orig))
+        (list (append list (butlast orig (length list))))
+        (cur-type (nth 3 (assoc refstyle reftex-ref-style-alist))))
+    (catch 'found
+      (dolist (elt (cdr list))
+       (when (eq (nth 3 elt) cur-type)
+         (setq refstyle (car elt))
+         (throw 'found nil)))))
   (force-mode-line-update))
-(defun reftex-select-toggle-fancyref ()
-  "Toggle the macro used for referencing the label between \\ref and \\vref."
+
+(defun reftex-select-cycle-ref-style-forward ()
+  "Cycle forward through macros used for referencing."
+  (interactive)
+  (reftex-select-cycle-ref-style-internal))
+
+(defun reftex-select-cycle-ref-style-backward ()
+  "Cycle backward through macros used for referencing."
+  (interactive)
+  (reftex-select-cycle-ref-style-internal t))
+
+(defun reftex-select-toggle-numref-pageref ()
+  "Toggle between number and page reference types."
   (interactive)
-  (setq refstyle
-        (cond ((string= refstyle "\\ref") "\\fref")
-              ((string= refstyle "\\fref") "\\Fref")
-              (t "\\ref")))
+  (let ((cur-type (nth 3 (assoc refstyle reftex-ref-style-alist))))
+    (catch 'found
+      (dolist (elt reftex-ref-style-alist)
+       (unless (eq (nth 3 elt) cur-type)
+         (setq refstyle (car elt))
+         (throw 'found nil)))))
   (force-mode-line-update))
+
 (defun reftex-select-show-insertion-point ()
   "Show the point from where selection was started in another window."
   (interactive)
@@ -709,8 +747,9 @@
 (loop for x in
       '(("b"        . reftex-select-jump-to-previous)
         ("z"        . reftex-select-jump)
-        ("v"        . reftex-select-toggle-varioref)
-        ("V"        . reftex-select-toggle-fancyref)
+       ("p"        . reftex-select-toggle-numref-pageref)
+        ("v"        . reftex-select-cycle-ref-style-forward)
+        ("V"        . reftex-select-cycle-ref-style-backward)
         ("m"        . reftex-select-mark)
         ("u"        . reftex-select-unmark)
         (","        . reftex-select-mark-comma)




reply via email to

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