Source

reftex / reftex-global.el

Diff from to

File reftex-global.el

 ;;; reftex-global.el --- operations on entire documents with RefTeX
-;; Copyright (c) 1997, 1998, 1999, 2000 Free Software Foundation, Inc.
+;; Copyright (c) 1997, 1998, 1999, 2000, 2003 Free Software Foundation, Inc.
 
 ;; Author: Carsten Dominik <dominik@science.uva.nl>
-;; Version: 4.18
+;; Version: 4.21
 
 ;; This file is part of GNU Emacs.
 
   (reftex-access-scan-info t)
 
   (let ((master (reftex-TeX-master-file))
-	(cnt 0)
+        (cnt 0)
         (dlist
          (mapcar
-	  (lambda (x)
-	    (let (x1)
-	      (cond
-	       ((memq (car x)
-		      '(toc bof eof bib thebib label-numbers xr xr-doc
-			    master-dir file-error bibview-cache appendix
-			    is-multi index))
-		nil)
-	       (t
-		(setq x1 (reftex-all-assoc-string
-			  (car x) (symbol-value reftex-docstruct-symbol)))
-		(if (< 1 (length x1))
-		    (append (list (car x))
-			    (mapcar (lambda(x)
-				      (abbreviate-file-name (nth 3 x)))
-				    x1))
-		  (list nil))))))
+          (lambda (x)
+            (let (x1)
+              (cond
+               ((memq (car x)
+                      '(toc bof eof bib thebib label-numbers xr xr-doc
+                            master-dir file-error bibview-cache appendix
+                            is-multi index))
+                nil)
+               (t
+                (setq x1 (reftex-all-assoc-string
+                          (car x) (symbol-value reftex-docstruct-symbol)))
+                (if (< 1 (length x1))
+                    (append (list (car x))
+                            (mapcar (lambda(x)
+                                      (abbreviate-file-name (nth 3 x)))
+                                    x1))
+                  (list nil))))))
           (reftex-uniquify-by-car (symbol-value reftex-docstruct-symbol)))))
 
     (setq dlist (reftex-uniquify-by-car dlist))
     (insert " -------------------------------------------------------------\n")
     (use-local-map (make-sparse-keymap))
     (local-set-key [?q] (lambda () "Kill this buffer." (interactive)
-			  (kill-buffer (current-buffer)) (delete-window)))
+                          (kill-buffer (current-buffer)) (delete-window)))
     (local-set-key [?r] 'reftex-change-label)
     (while dlist
       (when (and (car (car dlist))
                  (cdr (car dlist)))
-	(incf cnt)
+        (incf cnt)
         (insert (mapconcat 'identity (car dlist) "\n    ") "\n"))
       (pop dlist))
     (goto-char (point-min))
       (message "Document does not contain duplicate labels."))))
 
 (defun reftex-change-label (&optional from to)
-  "Run `query-replace-regexp' of FROM with TO in all \\label and \\ref commands.
+  "Run `query-replace-regexp' of FROM with TO in all macro arguments.
 Works on the entire multifile document.
 If you exit (\\[keyboard-quit], RET or q), you can resume the query replace
 with the command \\[tags-loop-continue].
       (setq to (read-string (format "Replace label %s with: "
                                     from))))
     (reftex-query-replace-document
-     (concat "\\\\\\(label\\|[a-zA-Z]*ref\\){" (regexp-quote from) "}")
-     (format "\\\\\\1{%s}" to))))
+     (concat "{" (regexp-quote from) "}")
+     (format "{%s}" to))))
 
 (defun reftex-renumber-simple-labels ()
   "Renumber all simple labels in the document to make them sequentially.
   (reftex-access-scan-info 1)
   ;; Get some insurance
   (if (and (reftex-is-multi)
-	   (not (yes-or-no-p "Replacing all simple labels in multiple files is risky.  Continue? ")))
+           (not (yes-or-no-p "Replacing all simple labels in multiple files is risky.  Continue? ")))
       (error "Abort"))
   ;; Make the translation list
   (let* ((re-core (concat "\\(" 
-			  (mapconcat 'cdr reftex-typekey-to-prefix-alist "\\|") 
-			  "\\)"))
-	 (label-re (concat "\\`" re-core "\\([0-9]+\\)\\'"))
-	 (search-re (concat "[{,]\\(" re-core "\\([0-9]+\\)\\)[,}]"))
-	 (error-fmt "Undefined label or reference %s. Ignore and continue? ")
-	 (label-numbers-alist (mapcar (lambda (x) (cons (cdr x) 0))
-				      reftex-typekey-to-prefix-alist))
-	 (files (reftex-all-document-files))
-	 (list (symbol-value reftex-docstruct-symbol))
-	 translate-alist n entry label new-label nr-cell changed-sequence)
+                          (mapconcat 'cdr reftex-typekey-to-prefix-alist "\\|") 
+                          "\\)"))
+         (label-re (concat "\\`" re-core "\\([0-9]+\\)\\'"))
+         (search-re (concat "[{,]\\(" re-core "\\([0-9]+\\)\\)[,}]"))
+         (error-fmt "Undefined label or reference %s. Ignore and continue? ")
+         (label-numbers-alist (mapcar (lambda (x) (cons (cdr x) 0))
+                                      reftex-typekey-to-prefix-alist))
+         (files (reftex-all-document-files))
+         (list (symbol-value reftex-docstruct-symbol))
+         translate-alist n entry label new-label nr-cell changed-sequence)
 
     (while (setq entry (pop list))
       (when (and (stringp (car entry))
-		 (string-match label-re (car entry)))
-	(setq label (car entry)
-	      nr-cell (assoc (match-string 1 (car entry))
-			     label-numbers-alist))
-	(if (assoc label translate-alist)
-	    (error "Duplicate label %s" label))
-	(setq new-label (concat (match-string 1 (car entry))
-				(int-to-string (incf (cdr nr-cell)))))
-	(push (cons label new-label) translate-alist)
-	(or (string= label new-label) (setq changed-sequence t))))
+                 (string-match label-re (car entry)))
+        (setq label (car entry)
+              nr-cell (assoc (match-string 1 (car entry))
+                             label-numbers-alist))
+        (if (assoc label translate-alist)
+            (error "Duplicate label %s" label))
+        (setq new-label (concat (match-string 1 (car entry))
+                                (int-to-string (incf (cdr nr-cell)))))
+        (push (cons label new-label) translate-alist)
+        (or (string= label new-label) (setq changed-sequence t))))
 
     (unless changed-sequence
       (error "Simple labels are already in correct sequence"))
 
     ;; First test to check for erros
     (setq n (reftex-translate 
-	     files search-re translate-alist error-fmt 'test))
+             files search-re translate-alist error-fmt 'test))
 
     ;; Now the real thing.
     (if (yes-or-no-p 
-	 (format "Replace %d items at %d places in %d files? "
-		 (length translate-alist) n (length files)))
-	(progn
-	  (let ((inhibit-quit t))  ;; Do not disturb...
-	    (reftex-translate
-	     files search-re translate-alist error-fmt nil)
-	    (setq quit-flag nil))
-	  (if (and (reftex-is-multi)
-		   (yes-or-no-p "Save entire document? "))
-	      (reftex-save-all-document-buffers))
-	  ;; Rescan again...
-	  (reftex-access-scan-info 1)
-	  (message "Done replacing simple labels."))
+         (format "Replace %d items at %d places in %d files? "
+                 (length translate-alist) n (length files)))
+        (progn
+          (let ((inhibit-quit t))  ;; Do not disturb...
+            (reftex-translate
+             files search-re translate-alist error-fmt nil)
+            (setq quit-flag nil))
+          (if (and (reftex-is-multi)
+                   (yes-or-no-p "Save entire document? "))
+              (reftex-save-all-document-buffers))
+          ;; Rescan again...
+          (reftex-access-scan-info 1)
+          (message "Done replacing simple labels."))
       (message "No replacements done"))))
 
 (defun reftex-translate (files search-re translate-alist error-fmt test)
     (while (setq file (pop files))
       (setq buf (reftex-get-file-buffer-force file))
       (unless buf
-	(error "No such file %s" file))
+        (error "No such file %s" file))
       (set-buffer buf)
       (save-excursion
-	(save-restriction
-	  (widen)
-	  (goto-char (point-min))
-	  (while (re-search-forward search-re nil t)
-	    (backward-char)
-	    (save-excursion
-	      (setq label (reftex-match-string 1)
-		    cell (assoc label translate-alist)
-		    match-data (match-data)
-		    macro (reftex-what-macro 1)
-		    pos (cdr macro))
-	      (goto-char (or pos (point)))
-	      (when (and macro
-			 (or (looking-at "\\\\ref")
-			     (looking-at "\\\\[a-zA-Z]*ref\\(range\\)?[^a-zA-Z]")
-			     (looking-at "\\\\ref[a-zA-Z]*[^a-zA-Z]")
-			     (looking-at (format 
-					  reftex-find-label-regexp-format
-					  (regexp-quote label)))))
-		;; OK, we should replace it.
-		(set-match-data match-data)
-		(cond
-		 ((and test (not cell))
-		  ;; We've got a problem
-		  (unwind-protect
-		      (progn
-			(reftex-highlight 1 (match-beginning 0) (match-end 0))
-			(ding)
-			(or (y-or-n-p (format error-fmt label))
-			    (error "Abort")))
-		    (reftex-unhighlight 1)))
-		 ((and test cell)
-		  (incf n))
-		 ((and (not test) cell)
-		  ;; Replace
-		  (goto-char (match-beginning 1))
-		  (delete-region (match-beginning 1) (match-end 1))
-		  (insert (cdr cell)))
-		 (t nil))))))))
+        (save-restriction
+          (widen)
+          (goto-char (point-min))
+          (while (re-search-forward search-re nil t)
+            (backward-char)
+            (save-excursion
+              (setq label (reftex-match-string 1)
+                    cell (assoc label translate-alist)
+                    match-data (match-data)
+                    macro (reftex-what-macro 1)
+                    pos (cdr macro))
+              (goto-char (or pos (point)))
+              (when (and macro
+                         (or (looking-at "\\\\ref")
+                             (looking-at "\\\\[a-zA-Z]*ref\\(range\\)?[^a-zA-Z]")
+                             (looking-at "\\\\ref[a-zA-Z]*[^a-zA-Z]")
+                             (looking-at (format 
+                                          reftex-find-label-regexp-format
+                                          (regexp-quote label)))))
+                ;; OK, we should replace it.
+                (set-match-data match-data)
+                (cond
+                 ((and test (not cell))
+                  ;; We've got a problem
+                  (unwind-protect
+                      (progn
+                        (reftex-highlight 1 (match-beginning 0) (match-end 0))
+                        (ding)
+                        (or (y-or-n-p (format error-fmt label))
+                            (error "Abort")))
+                    (reftex-unhighlight 1)))
+                 ((and test cell)
+                  (incf n))
+                 ((and (not test) cell)
+                  ;; Replace
+                  (goto-char (match-beginning 1))
+                  (delete-region (match-beginning 1) (match-end 1))
+                  (insert (cdr cell)))
+                 (t nil))))))))
     n))
 
 (defun reftex-save-all-document-buffers ()
 labels."
   (interactive)
   (let ((files (reftex-all-document-files))
-	file buffer)
+        file buffer)
     (save-excursion
       (while (setq file (pop files))
-	(setq buffer (reftex-get-buffer-visiting file))
-	(when buffer
-	  (set-buffer buffer)
-	  (save-buffer))))))
+        (setq buffer (reftex-get-buffer-visiting file))
+        (when buffer
+          (set-buffer buffer)
+          (save-buffer))))))
 
 (defun reftex-ensure-write-access (files)
   "Make sure we have write access to all files in FILES.
   (let (file buf)
     (while (setq file (pop files))
       (unless (file-exists-p file)
-	(ding)
-	(or (y-or-n-p (format "No such file %s. Continue? " file))
-	    (error "Abort")))
+        (ding)
+        (or (y-or-n-p (format "No such file %s. Continue? " file))
+            (error "Abort")))
       (unless (file-writable-p file)
-	(ding)
-	(or (y-or-n-p (format "No write access to %s. Continue? " file))
-	    (error "Abort")))
+        (ding)
+        (or (y-or-n-p (format "No write access to %s. Continue? " file))
+            (error "Abort")))
       (when (and (setq buf (reftex-get-buffer-visiting file))
-		 (save-excursion
-		   (set-buffer buf)
-		   buffer-read-only))
-	(ding)
-	(or (y-or-n-p (format "Buffer %s is read-only. Continue? "
-			      (buffer-name buf)))
-	    (error "Abort"))))))
+                 (save-excursion
+                   (set-buffer buf)
+                   buffer-read-only))
+        (ding)
+        (or (y-or-n-p (format "Buffer %s is read-only. Continue? "
+                              (buffer-name buf)))
+            (error "Abort"))))))
 
 ;;; reftex-global.el ends here