[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Emacs-diffs] Changes to emacs/lisp/textmodes/reftex-global.el [lexbind]
From: |
Miles Bader |
Subject: |
[Emacs-diffs] Changes to emacs/lisp/textmodes/reftex-global.el [lexbind] |
Date: |
Tue, 14 Oct 2003 19:30:36 -0400 |
Index: emacs/lisp/textmodes/reftex-global.el
diff -c emacs/lisp/textmodes/reftex-global.el:1.11.4.1
emacs/lisp/textmodes/reftex-global.el:1.11.4.2
*** emacs/lisp/textmodes/reftex-global.el:1.11.4.1 Fri Apr 4 01:20:39 2003
--- emacs/lisp/textmodes/reftex-global.el Tue Oct 14 19:30:22 2003
***************
*** 1,8 ****
;;; reftex-global.el --- operations on entire documents with RefTeX
! ;; Copyright (c) 1997, 1998, 1999, 2000 Free Software Foundation, Inc.
;; Author: Carsten Dominik <address@hidden>
! ;; Version: 4.18
;; This file is part of GNU Emacs.
--- 1,8 ----
;;; reftex-global.el --- operations on entire documents with RefTeX
! ;; 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.
***************
*** 107,132 ****
(reftex-access-scan-info t)
(let ((master (reftex-TeX-master-file))
! (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))))))
(reftex-uniquify-by-car (symbol-value reftex-docstruct-symbol)))))
(setq dlist (reftex-uniquify-by-car dlist))
--- 107,132 ----
(reftex-access-scan-info t)
(let ((master (reftex-TeX-master-file))
! (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))))))
(reftex-uniquify-by-car (symbol-value reftex-docstruct-symbol)))))
(setq dlist (reftex-uniquify-by-car dlist))
***************
*** 135,153 ****
(set (make-local-variable 'TeX-master) master)
(erase-buffer)
(insert " MULTIPLE LABELS IN CURRENT DOCUMENT:\n")
! (insert
" Move point to label and type `r' to run a query-replace on the label\n"
" and its references. Type `q' to exit this buffer.\n\n")
(insert " LABEL FILE\n")
(insert "
-------------------------------------------------------------\n")
(use-local-map (make-sparse-keymap))
(local-set-key [?q] (lambda () "Kill this buffer." (interactive)
! (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)
(insert (mapconcat 'identity (car dlist) "\n ") "\n"))
(pop dlist))
(goto-char (point-min))
--- 135,153 ----
(set (make-local-variable 'TeX-master) master)
(erase-buffer)
(insert " MULTIPLE LABELS IN CURRENT DOCUMENT:\n")
! (insert
" Move point to label and type `r' to run a query-replace on the label\n"
" and its references. Type `q' to exit this buffer.\n\n")
(insert " LABEL FILE\n")
(insert "
-------------------------------------------------------------\n")
(use-local-map (make-sparse-keymap))
(local-set-key [?q] (lambda () "Kill this buffer." (interactive)
! (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)
(insert (mapconcat 'identity (car dlist) "\n ") "\n"))
(pop dlist))
(goto-char (point-min))
***************
*** 157,163 ****
(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.
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].
--- 157,163 ----
(message "Document does not contain duplicate labels."))))
(defun reftex-change-label (&optional from to)
! "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].
***************
*** 172,179 ****
(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))))
(defun reftex-renumber-simple-labels ()
"Renumber all simple labels in the document to make them sequentially.
--- 172,179 ----
(setq to (read-string (format "Replace label %s with: "
from))))
(reftex-query-replace-document
! (concat "{" (regexp-quote from) "}")
! (format "{%s}" to))))
(defun reftex-renumber-simple-labels ()
"Renumber all simple labels in the document to make them sequentially.
***************
*** 190,222 ****
(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? ")))
(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)
(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))))
(unless changed-sequence
(error "Simple labels are already in correct sequence"))
--- 190,222 ----
(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? ")))
(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)
(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))))
(unless changed-sequence
(error "Simple labels are already in correct sequence"))
***************
*** 227,305 ****
(reftex-save-all-document-buffers)
;; First test to check for erros
! (setq n (reftex-translate
! 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."))
(message "No replacements done"))))
(defun reftex-translate (files search-re translate-alist error-fmt test)
;; In FILES, look for SEARCH-RE and replace match 1 of it with
! ;; its association in TRANSLATE-ALSIT.
;; If we do not find an association and TEST is non-nil, query
! ;; to ignore the problematic string.
;; If TEST is nil, it is ignored without query.
;; Return the number of replacements.
(let ((n 0) file label match-data buf macro pos cell)
(while (setq file (pop files))
(setq buf (reftex-get-file-buffer-force file))
(unless buf
! (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))))))))
n))
(defun reftex-save-all-document-buffers ()
--- 227,305 ----
(reftex-save-all-document-buffers)
;; First test to check for erros
! (setq n (reftex-translate
! 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."))
(message "No replacements done"))))
(defun reftex-translate (files search-re translate-alist error-fmt test)
;; In FILES, look for SEARCH-RE and replace match 1 of it with
! ;; its association in TRANSLATE-ALSIT.
;; If we do not find an association and TEST is non-nil, query
! ;; to ignore the problematic string.
;; If TEST is nil, it is ignored without query.
;; Return the number of replacements.
(let ((n 0) file label match-data buf macro pos cell)
(while (setq file (pop files))
(setq buf (reftex-get-file-buffer-force file))
(unless buf
! (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))))))))
n))
(defun reftex-save-all-document-buffers ()
***************
*** 308,320 ****
labels."
(interactive)
(let ((files (reftex-all-document-files))
! file buffer)
(save-excursion
(while (setq file (pop files))
! (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.
--- 308,320 ----
labels."
(interactive)
(let ((files (reftex-all-document-files))
! file buffer)
(save-excursion
(while (setq file (pop files))
! (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.
***************
*** 322,341 ****
(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")))
(unless (file-writable-p file)
! (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"))))))
;;; reftex-global.el ends here
--- 322,342 ----
(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")))
(unless (file-writable-p file)
! (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"))))))
+ ;;; arch-tag: 2dbf7633-92c8-4340-8656-7aa019d0f80d
;;; reftex-global.el ends here
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Emacs-diffs] Changes to emacs/lisp/textmodes/reftex-global.el [lexbind],
Miles Bader <=