;;; reftex-global.el --- operations on entire documents with RefTeX
;; Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
-;; 2006, 2007 Free Software Foundation, Inc.
+;; 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
;; Author: Carsten Dominik <dominik@science.uva.nl>
;; Maintainer: auctex-devel@gnu.org
;; This file is part of GNU Emacs.
-;; GNU Emacs is free software; you can redistribute it and/or modify
+;; 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.
+;; the Free Software Foundation, either version 3 of the License, 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
;; 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., 51 Franklin Street, Fifth Floor,
-;; Boston, MA 02110-1301, USA.
+;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
;;; Commentary:
(files (reftex-all-document-files))
(cmd (format "etags %s" (mapconcat 'shell-quote-argument
files " "))))
- (save-excursion
- (set-buffer (reftex-get-file-buffer-force master))
+ (with-current-buffer (reftex-get-file-buffer-force master)
(message "Running etags to create TAGS file...")
(shell-command cmd)
(visit-tags-table "TAGS"))))
(tags-query-replace from to (or delimited current-prefix-arg)
(list 'reftex-all-document-files))))
-(eval-when-compile
- (defvar TeX-master)
- (defvar isearch-next-buffer-function))
+(defvar TeX-master)
+(defvar isearch-next-buffer-function)
(defun reftex-find-duplicate-labels ()
"Produce a list of all duplicate labels in the document."
(interactive)
(let ((files (reftex-all-document-files))
file buffer)
- (save-excursion
+ (save-current-buffer
(while (setq file (pop files))
(setq buffer (reftex-get-buffer-visiting file))
(when buffer
(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)
+ (with-current-buffer buf
buffer-read-only))
(ding)
(or (y-or-n-p (format "Buffer %s is read-only. Continue? "
(buffer-name buf)))
(error "Abort"))))))
+;;; Multi-file RefTeX Isearch
+
+;; `reftex-isearch-wrap-function', `reftex-isearch-push-state-function',
+;; `reftex-isearch-pop-state-function', `reftex-isearch-isearch-search'
+;; functions remain here only for backward-compatibility with Emacs 22
+;; and are obsolete since Emacs 23 that supports a single function
+;; variable `multi-isearch-next-buffer-function'.
+
(defun reftex-isearch-wrap-function ()
(if (not isearch-word)
(switch-to-buffer
(point))
(error nil))))))
-;;; This function is called when isearch reaches the end of a
-;;; buffer. For reftex what we want to do is not wrap to the
-;;; beginning, but switch to the next buffer in the logical order of
-;;; the document. This function looks through list of files in the
-;;; document (reftex-all-document-files), searches for the current
-;;; buffer and switches to the next/previous one in the logical order
-;;; of the document. If WRAPP is true then wrap the search to the
-;;; beginning/end of the file list, depending of the search direction.
+;; This function is called when isearch reaches the end of a
+;; buffer. For reftex what we want to do is not wrap to the
+;; beginning, but switch to the next buffer in the logical order of
+;; the document. This function looks through list of files in the
+;; document (reftex-all-document-files), searches for the current
+;; buffer and switches to the next/previous one in the logical order
+;; of the document. If WRAPP is true then wrap the search to the
+;; beginning/end of the file list, depending of the search direction.
(defun reftex-isearch-switch-to-next-file (crt-buf &optional wrapp)
(reftex-access-scan-info)
- (let* ((cb (buffer-file-name crt-buf))
- (flist (reftex-all-document-files))
- (orig-flist flist))
+ (let ((cb (buffer-file-name crt-buf))
+ (flist (reftex-all-document-files)))
(when flist
(if wrapp
(unless isearch-forward
(setq flist (last flist)))
(unless isearch-forward
- (setq flist (nreverse (copy-list flist)))
- (setq orig-flist flist))
+ (setq flist (reverse flist)))
(while (not (string= (car flist) cb))
(setq flist (cdr flist)))
(setq flist (cdr flist)))
(when flist
- (find-file (car flist))))))
+ (find-file-noselect (car flist))))))
;;;###autoload
(defun reftex-isearch-minor-mode (&optional arg)
With no argument, this command toggles
`reftex-isearch-minor-mode'. With a prefix argument ARG, turn
-`reftex-isearch-minor-mode' on iff ARG is positive."
+`reftex-isearch-minor-mode' on if ARG is positive, otherwise turn it off."
(interactive "P")
(let ((old-reftex-isearch-minor-mode reftex-isearch-minor-mode))
(setq reftex-isearch-minor-mode
(dolist (crt-buf (buffer-list))
(with-current-buffer crt-buf
(when reftex-mode
- (set (make-local-variable 'isearch-wrap-function)
- 'reftex-isearch-wrap-function)
- (set (make-local-variable 'isearch-search-fun-function)
- (lambda () 'reftex-isearch-isearch-search))
- (set (make-local-variable 'isearch-push-state-function)
- 'reftex-isearch-push-state-function)
- (set (make-local-variable 'isearch-next-buffer-function)
- 'reftex-isearch-switch-to-next-file)
+ (if (boundp 'multi-isearch-next-buffer-function)
+ (set (make-local-variable 'multi-isearch-next-buffer-function)
+ 'reftex-isearch-switch-to-next-file)
+ (set (make-local-variable 'isearch-wrap-function)
+ 'reftex-isearch-wrap-function)
+ (set (make-local-variable 'isearch-search-fun-function)
+ (lambda () 'reftex-isearch-isearch-search))
+ (set (make-local-variable 'isearch-push-state-function)
+ 'reftex-isearch-push-state-function)
+ (set (make-local-variable 'isearch-next-buffer-function)
+ 'reftex-isearch-switch-to-next-file))
(setq reftex-isearch-minor-mode t))))
(add-hook 'reftex-mode-hook 'reftex-isearch-minor-mode))
(dolist (crt-buf (buffer-list))
(with-current-buffer crt-buf
(when reftex-mode
- (kill-local-variable 'isearch-wrap-function)
- (kill-local-variable 'isearch-search-fun-function)
- (kill-local-variable 'isearch-push-state-function)
- (kill-local-variable 'isearch-next-buffer-function)
+ (if (boundp 'multi-isearch-next-buffer-function)
+ (kill-local-variable 'multi-isearch-next-buffer-function)
+ (kill-local-variable 'isearch-wrap-function)
+ (kill-local-variable 'isearch-search-fun-function)
+ (kill-local-variable 'isearch-push-state-function)
+ (kill-local-variable 'isearch-next-buffer-function))
(setq reftex-isearch-minor-mode nil))))
(remove-hook 'reftex-mode-hook 'reftex-isearch-minor-mode)))
;; Force modeline redisplay.
(add-minor-mode 'reftex-isearch-minor-mode "/I" nil nil
'reftex-isearch-minor-mode)
-;;; arch-tag: 2dbf7633-92c8-4340-8656-7aa019d0f80d
+;; arch-tag: 2dbf7633-92c8-4340-8656-7aa019d0f80d
;;; reftex-global.el ends here