Mercurial > emacs
annotate lisp/textmodes/reftex-global.el @ 112246:a60d544f1222
Explain why directory-abbrev-alist should be anchored (Bug#7777).
* files.texi (Directory Names): Explain why directory-abbrev-alist
elements should be anchored (Bug#7777).
author | Chong Yidong <cyd@stupidchicken.com> |
---|---|
date | Sat, 08 Jan 2011 16:37:20 -0500 |
parents | 376148b31b5e |
children | 417b1e4d63cd |
rev | line source |
---|---|
38422
7a94f1c588c4
Some fixes to follow coding conventions.
Pavel Janík <Pavel@Janik.cz>
parents:
37998
diff
changeset
|
1 ;;; reftex-global.el --- operations on entire documents with RefTeX |
74509 | 2 |
3 ;; Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, | |
112218
376148b31b5e
Add 2011 to FSF/AIST copyright years.
Glenn Morris <rgm@gnu.org>
parents:
106815
diff
changeset
|
4 ;; 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc. |
27035 | 5 |
46612
7522419c4db0
Updated to reftex 4.17
Carsten Dominik <dominik@science.uva.nl>
parents:
42418
diff
changeset
|
6 ;; Author: Carsten Dominik <dominik@science.uva.nl> |
76672
690423f53b08
* textmodes/reftex.el: Add maintainer address.
David Kastrup <dak@gnu.org>
parents:
75347
diff
changeset
|
7 ;; Maintainer: auctex-devel@gnu.org |
69094
bfd5c5e60410
Version number change only
Carsten Dominik <dominik@science.uva.nl>
parents:
68648
diff
changeset
|
8 ;; Version: 4.31 |
27035 | 9 |
10 ;; This file is part of GNU Emacs. | |
11 | |
94670
f4a69fedbd46
Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents:
94415
diff
changeset
|
12 ;; GNU Emacs is free software: you can redistribute it and/or modify |
27035 | 13 ;; it under the terms of the GNU General Public License as published by |
94670
f4a69fedbd46
Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents:
94415
diff
changeset
|
14 ;; the Free Software Foundation, either version 3 of the License, or |
f4a69fedbd46
Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents:
94415
diff
changeset
|
15 ;; (at your option) any later version. |
27035 | 16 |
17 ;; GNU Emacs is distributed in the hope that it will be useful, | |
18 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of | |
19 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
20 ;; GNU General Public License for more details. | |
21 | |
22 ;; You should have received a copy of the GNU General Public License | |
94670
f4a69fedbd46
Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents:
94415
diff
changeset
|
23 ;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. |
25280 | 24 |
38422
7a94f1c588c4
Some fixes to follow coding conventions.
Pavel Janík <Pavel@Janik.cz>
parents:
37998
diff
changeset
|
25 ;;; Commentary: |
7a94f1c588c4
Some fixes to follow coding conventions.
Pavel Janík <Pavel@Janik.cz>
parents:
37998
diff
changeset
|
26 |
7a94f1c588c4
Some fixes to follow coding conventions.
Pavel Janík <Pavel@Janik.cz>
parents:
37998
diff
changeset
|
27 ;;; Code: |
7a94f1c588c4
Some fixes to follow coding conventions.
Pavel Janík <Pavel@Janik.cz>
parents:
37998
diff
changeset
|
28 |
26910
489a5439b988
* reftex.el (reftex-compile-variables): respect new structure of
Carsten Dominik <dominik@science.uva.nl>
parents:
25806
diff
changeset
|
29 (eval-when-compile (require 'cl)) |
25280 | 30 (provide 'reftex-global) |
31 (require 'reftex) | |
32 ;;; | |
33 | |
34 (defun reftex-create-tags-file () | |
35 "Create TAGS file by running `etags' on the current document. | |
36 The TAGS file is also immediately visited with `visit-tags-table'." | |
37 (interactive) | |
38 (reftex-access-scan-info current-prefix-arg) | |
39 (let* ((master (reftex-TeX-master-file)) | |
40 (files (reftex-all-document-files)) | |
73345
6761fc81448f
textmodes/reftex-global.el (reftex-create-tags-file): Quote file
Carsten Dominik <dominik@science.uva.nl>
parents:
69094
diff
changeset
|
41 (cmd (format "etags %s" (mapconcat 'shell-quote-argument |
6761fc81448f
textmodes/reftex-global.el (reftex-create-tags-file): Quote file
Carsten Dominik <dominik@science.uva.nl>
parents:
69094
diff
changeset
|
42 files " ")))) |
105813
df4934f25eef
* textmodes/two-column.el (2C-split):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
100908
diff
changeset
|
43 (with-current-buffer (reftex-get-file-buffer-force master) |
25280 | 44 (message "Running etags to create TAGS file...") |
45 (shell-command cmd) | |
46 (visit-tags-table "TAGS")))) | |
47 | |
48 ;; History of grep commands. | |
49 (defvar reftex-grep-history nil) | |
50 (defvar reftex-grep-command "grep -n " | |
51 "Last grep command used in \\[reftex-grep-document]; default for next grep.") | |
52 | |
53 (defun reftex-grep-document (grep-cmd) | |
54 "Run grep query through all files related to this document. | |
55 With prefix arg, force to rescan document. | |
56 No active TAGS table is required." | |
57 | |
58 (interactive | |
59 (list (read-from-minibuffer "Run grep on document (like this): " | |
60 reftex-grep-command nil nil | |
61 'reftex-grep-history))) | |
62 (reftex-access-scan-info current-prefix-arg) | |
63 (let* ((files (reftex-all-document-files t)) | |
64 (cmd (format | |
65 "%s %s" grep-cmd | |
66 (mapconcat 'identity files " ")))) | |
67 (grep cmd))) | |
68 | |
69 (defun reftex-search-document (&optional regexp) | |
70 "Regexp search through all files of the current document. | |
71 Starts always in the master file. Stops when a match is found. | |
72 To continue searching for next match, use command \\[tags-loop-continue]. | |
73 No active TAGS table is required." | |
74 (interactive) | |
75 (let ((default (reftex-this-word))) | |
76 (unless regexp | |
77 (setq regexp (read-string (format "Search regexp in document [%s]: " | |
78 default)))) | |
79 (if (string= regexp "") (setq regexp (regexp-quote default))) | |
80 | |
81 (reftex-access-scan-info current-prefix-arg) | |
82 (tags-search regexp (list 'reftex-all-document-files)))) | |
83 | |
84 (defun reftex-query-replace-document (&optional from to delimited) | |
42418
07e5765f1141
(reftex-query-replace-document, reftex-change-label): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
38422
diff
changeset
|
85 "Do `query-replace-regexp' of FROM with TO over the entire document. |
25280 | 86 Third arg DELIMITED (prefix arg) means replace only word-delimited matches. |
42418
07e5765f1141
(reftex-query-replace-document, reftex-change-label): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
38422
diff
changeset
|
87 If you exit (\\[keyboard-quit], RET or q), you can resume the query replace |
25280 | 88 with the command \\[tags-loop-continue]. |
89 No active TAGS table is required." | |
90 (interactive) | |
91 (let ((default (reftex-this-word))) | |
92 (unless from | |
93 (setq from (read-string (format "Replace regexp in document [%s]: " | |
94 default))) | |
95 (if (string= from "") (setq from (regexp-quote default)))) | |
96 (unless to | |
97 (setq to (read-string (format "Replace regexp %s with: " from)))) | |
98 (reftex-access-scan-info current-prefix-arg) | |
99 (tags-query-replace from to (or delimited current-prefix-arg) | |
100 (list 'reftex-all-document-files)))) | |
101 | |
93097 | 102 (defvar TeX-master) |
103 (defvar isearch-next-buffer-function) | |
65548
253cad16882d
Little fixes to remove compiler warnings
Carsten Dominik <dominik@science.uva.nl>
parents:
65265
diff
changeset
|
104 |
25280 | 105 (defun reftex-find-duplicate-labels () |
106 "Produce a list of all duplicate labels in the document." | |
107 | |
108 (interactive) | |
109 | |
110 ;; Rescan the document to make sure | |
111 (reftex-access-scan-info t) | |
112 | |
113 (let ((master (reftex-TeX-master-file)) | |
52170
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
49599
diff
changeset
|
114 (cnt 0) |
25280 | 115 (dlist |
116 (mapcar | |
52170
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
49599
diff
changeset
|
117 (lambda (x) |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
49599
diff
changeset
|
118 (let (x1) |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
49599
diff
changeset
|
119 (cond |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
49599
diff
changeset
|
120 ((memq (car x) |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
49599
diff
changeset
|
121 '(toc bof eof bib thebib label-numbers xr xr-doc |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
49599
diff
changeset
|
122 master-dir file-error bibview-cache appendix |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
49599
diff
changeset
|
123 is-multi index)) |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
49599
diff
changeset
|
124 nil) |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
49599
diff
changeset
|
125 (t |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
49599
diff
changeset
|
126 (setq x1 (reftex-all-assoc-string |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
49599
diff
changeset
|
127 (car x) (symbol-value reftex-docstruct-symbol))) |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
49599
diff
changeset
|
128 (if (< 1 (length x1)) |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
49599
diff
changeset
|
129 (append (list (car x)) |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
49599
diff
changeset
|
130 (mapcar (lambda(x) |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
49599
diff
changeset
|
131 (abbreviate-file-name (nth 3 x))) |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
49599
diff
changeset
|
132 x1)) |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
49599
diff
changeset
|
133 (list nil)))))) |
25280 | 134 (reftex-uniquify-by-car (symbol-value reftex-docstruct-symbol))))) |
135 | |
136 (setq dlist (reftex-uniquify-by-car dlist)) | |
137 (if (null dlist) (error "No duplicate labels in document")) | |
138 (switch-to-buffer-other-window "*Duplicate Labels*") | |
139 (set (make-local-variable 'TeX-master) master) | |
140 (erase-buffer) | |
141 (insert " MULTIPLE LABELS IN CURRENT DOCUMENT:\n") | |
65548
253cad16882d
Little fixes to remove compiler warnings
Carsten Dominik <dominik@science.uva.nl>
parents:
65265
diff
changeset
|
142 (insert |
25280 | 143 " Move point to label and type `r' to run a query-replace on the label\n" |
144 " and its references. Type `q' to exit this buffer.\n\n") | |
145 (insert " LABEL FILE\n") | |
146 (insert " -------------------------------------------------------------\n") | |
147 (use-local-map (make-sparse-keymap)) | |
148 (local-set-key [?q] (lambda () "Kill this buffer." (interactive) | |
52170
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
49599
diff
changeset
|
149 (kill-buffer (current-buffer)) (delete-window))) |
25280 | 150 (local-set-key [?r] 'reftex-change-label) |
151 (while dlist | |
152 (when (and (car (car dlist)) | |
153 (cdr (car dlist))) | |
52170
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
49599
diff
changeset
|
154 (incf cnt) |
25280 | 155 (insert (mapconcat 'identity (car dlist) "\n ") "\n")) |
156 (pop dlist)) | |
157 (goto-char (point-min)) | |
158 (when (= cnt 0) | |
159 (kill-buffer (current-buffer)) | |
160 (delete-window) | |
161 (message "Document does not contain duplicate labels.")))) | |
162 | |
163 (defun reftex-change-label (&optional from to) | |
52170
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
49599
diff
changeset
|
164 "Run `query-replace-regexp' of FROM with TO in all macro arguments. |
25280 | 165 Works on the entire multifile document. |
42418
07e5765f1141
(reftex-query-replace-document, reftex-change-label): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
38422
diff
changeset
|
166 If you exit (\\[keyboard-quit], RET or q), you can resume the query replace |
25280 | 167 with the command \\[tags-loop-continue]. |
168 No active TAGS table is required." | |
169 (interactive) | |
170 (let ((default (reftex-this-word "-a-zA-Z0-9_*.:"))) | |
171 (unless from | |
172 (setq from (read-string (format "Replace label globally [%s]: " | |
173 default)))) | |
174 (if (string= from "") (setq from default)) | |
175 (unless to | |
176 (setq to (read-string (format "Replace label %s with: " | |
177 from)))) | |
178 (reftex-query-replace-document | |
52170
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
49599
diff
changeset
|
179 (concat "{" (regexp-quote from) "}") |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
49599
diff
changeset
|
180 (format "{%s}" to)))) |
25280 | 181 |
182 (defun reftex-renumber-simple-labels () | |
183 "Renumber all simple labels in the document to make them sequentially. | |
184 Simple labels are the ones created by RefTeX, consisting only of the | |
185 prefix and a number. After the command completes, all these labels will | |
186 have sequential numbers throughout the document. Any references to | |
187 the labels will be changed as well. For this, RefTeX looks at the | |
188 arguments of any macros which either start or end in the string `ref'. | |
189 This command should be used with care, in particular in multifile | |
190 documents. You should not use it if another document refers to this | |
191 one with the `xr' package." | |
192 (interactive) | |
193 ;; Resan the entire document | |
194 (reftex-access-scan-info 1) | |
195 ;; Get some insurance | |
196 (if (and (reftex-is-multi) | |
52170
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
49599
diff
changeset
|
197 (not (yes-or-no-p "Replacing all simple labels in multiple files is risky. Continue? "))) |
25280 | 198 (error "Abort")) |
199 ;; Make the translation list | |
65548
253cad16882d
Little fixes to remove compiler warnings
Carsten Dominik <dominik@science.uva.nl>
parents:
65265
diff
changeset
|
200 (let* ((re-core (concat "\\(" |
253cad16882d
Little fixes to remove compiler warnings
Carsten Dominik <dominik@science.uva.nl>
parents:
65265
diff
changeset
|
201 (mapconcat 'cdr reftex-typekey-to-prefix-alist "\\|") |
52170
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
49599
diff
changeset
|
202 "\\)")) |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
49599
diff
changeset
|
203 (label-re (concat "\\`" re-core "\\([0-9]+\\)\\'")) |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
49599
diff
changeset
|
204 (search-re (concat "[{,]\\(" re-core "\\([0-9]+\\)\\)[,}]")) |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
49599
diff
changeset
|
205 (error-fmt "Undefined label or reference %s. Ignore and continue? ") |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
49599
diff
changeset
|
206 (label-numbers-alist (mapcar (lambda (x) (cons (cdr x) 0)) |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
49599
diff
changeset
|
207 reftex-typekey-to-prefix-alist)) |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
49599
diff
changeset
|
208 (files (reftex-all-document-files)) |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
49599
diff
changeset
|
209 (list (symbol-value reftex-docstruct-symbol)) |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
49599
diff
changeset
|
210 translate-alist n entry label new-label nr-cell changed-sequence) |
25280 | 211 |
212 (while (setq entry (pop list)) | |
213 (when (and (stringp (car entry)) | |
52170
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
49599
diff
changeset
|
214 (string-match label-re (car entry))) |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
49599
diff
changeset
|
215 (setq label (car entry) |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
49599
diff
changeset
|
216 nr-cell (assoc (match-string 1 (car entry)) |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
49599
diff
changeset
|
217 label-numbers-alist)) |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
49599
diff
changeset
|
218 (if (assoc label translate-alist) |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
49599
diff
changeset
|
219 (error "Duplicate label %s" label)) |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
49599
diff
changeset
|
220 (setq new-label (concat (match-string 1 (car entry)) |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
49599
diff
changeset
|
221 (int-to-string (incf (cdr nr-cell))))) |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
49599
diff
changeset
|
222 (push (cons label new-label) translate-alist) |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
49599
diff
changeset
|
223 (or (string= label new-label) (setq changed-sequence t)))) |
25280 | 224 |
225 (unless changed-sequence | |
226 (error "Simple labels are already in correct sequence")) | |
227 | |
29775
31536c6cf2e3
* textmodes/reftex.el (reftex-find-citation-regexp-format):
Carsten Dominik <dominik@science.uva.nl>
parents:
27603
diff
changeset
|
228 (reftex-ensure-write-access (reftex-all-document-files)) |
31536c6cf2e3
* textmodes/reftex.el (reftex-find-citation-regexp-format):
Carsten Dominik <dominik@science.uva.nl>
parents:
27603
diff
changeset
|
229 |
25280 | 230 ;; Save all document buffers before this operation |
231 (reftex-save-all-document-buffers) | |
232 | |
233 ;; First test to check for erros | |
65548
253cad16882d
Little fixes to remove compiler warnings
Carsten Dominik <dominik@science.uva.nl>
parents:
65265
diff
changeset
|
234 (setq n (reftex-translate |
52170
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
49599
diff
changeset
|
235 files search-re translate-alist error-fmt 'test)) |
25280 | 236 |
237 ;; Now the real thing. | |
65548
253cad16882d
Little fixes to remove compiler warnings
Carsten Dominik <dominik@science.uva.nl>
parents:
65265
diff
changeset
|
238 (if (yes-or-no-p |
52170
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
49599
diff
changeset
|
239 (format "Replace %d items at %d places in %d files? " |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
49599
diff
changeset
|
240 (length translate-alist) n (length files))) |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
49599
diff
changeset
|
241 (progn |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
49599
diff
changeset
|
242 (let ((inhibit-quit t)) ;; Do not disturb... |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
49599
diff
changeset
|
243 (reftex-translate |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
49599
diff
changeset
|
244 files search-re translate-alist error-fmt nil) |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
49599
diff
changeset
|
245 (setq quit-flag nil)) |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
49599
diff
changeset
|
246 (if (and (reftex-is-multi) |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
49599
diff
changeset
|
247 (yes-or-no-p "Save entire document? ")) |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
49599
diff
changeset
|
248 (reftex-save-all-document-buffers)) |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
49599
diff
changeset
|
249 ;; Rescan again... |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
49599
diff
changeset
|
250 (reftex-access-scan-info 1) |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
49599
diff
changeset
|
251 (message "Done replacing simple labels.")) |
25280 | 252 (message "No replacements done")))) |
253 | |
254 (defun reftex-translate (files search-re translate-alist error-fmt test) | |
255 ;; In FILES, look for SEARCH-RE and replace match 1 of it with | |
65548
253cad16882d
Little fixes to remove compiler warnings
Carsten Dominik <dominik@science.uva.nl>
parents:
65265
diff
changeset
|
256 ;; its association in TRANSLATE-ALSIT. |
25280 | 257 ;; If we do not find an association and TEST is non-nil, query |
65548
253cad16882d
Little fixes to remove compiler warnings
Carsten Dominik <dominik@science.uva.nl>
parents:
65265
diff
changeset
|
258 ;; to ignore the problematic string. |
25280 | 259 ;; If TEST is nil, it is ignored without query. |
260 ;; Return the number of replacements. | |
261 (let ((n 0) file label match-data buf macro pos cell) | |
262 (while (setq file (pop files)) | |
263 (setq buf (reftex-get-file-buffer-force file)) | |
264 (unless buf | |
52170
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
49599
diff
changeset
|
265 (error "No such file %s" file)) |
25280 | 266 (set-buffer buf) |
267 (save-excursion | |
52170
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
49599
diff
changeset
|
268 (save-restriction |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
49599
diff
changeset
|
269 (widen) |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
49599
diff
changeset
|
270 (goto-char (point-min)) |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
49599
diff
changeset
|
271 (while (re-search-forward search-re nil t) |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
49599
diff
changeset
|
272 (backward-char) |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
49599
diff
changeset
|
273 (save-excursion |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
49599
diff
changeset
|
274 (setq label (reftex-match-string 1) |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
49599
diff
changeset
|
275 cell (assoc label translate-alist) |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
49599
diff
changeset
|
276 match-data (match-data) |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
49599
diff
changeset
|
277 macro (reftex-what-macro 1) |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
49599
diff
changeset
|
278 pos (cdr macro)) |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
49599
diff
changeset
|
279 (goto-char (or pos (point))) |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
49599
diff
changeset
|
280 (when (and macro |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
49599
diff
changeset
|
281 (or (looking-at "\\\\ref") |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
49599
diff
changeset
|
282 (looking-at "\\\\[a-zA-Z]*ref\\(range\\)?[^a-zA-Z]") |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
49599
diff
changeset
|
283 (looking-at "\\\\ref[a-zA-Z]*[^a-zA-Z]") |
65548
253cad16882d
Little fixes to remove compiler warnings
Carsten Dominik <dominik@science.uva.nl>
parents:
65265
diff
changeset
|
284 (looking-at (format |
52170
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
49599
diff
changeset
|
285 reftex-find-label-regexp-format |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
49599
diff
changeset
|
286 (regexp-quote label))))) |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
49599
diff
changeset
|
287 ;; OK, we should replace it. |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
49599
diff
changeset
|
288 (set-match-data match-data) |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
49599
diff
changeset
|
289 (cond |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
49599
diff
changeset
|
290 ((and test (not cell)) |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
49599
diff
changeset
|
291 ;; We've got a problem |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
49599
diff
changeset
|
292 (unwind-protect |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
49599
diff
changeset
|
293 (progn |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
49599
diff
changeset
|
294 (reftex-highlight 1 (match-beginning 0) (match-end 0)) |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
49599
diff
changeset
|
295 (ding) |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
49599
diff
changeset
|
296 (or (y-or-n-p (format error-fmt label)) |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
49599
diff
changeset
|
297 (error "Abort"))) |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
49599
diff
changeset
|
298 (reftex-unhighlight 1))) |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
49599
diff
changeset
|
299 ((and test cell) |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
49599
diff
changeset
|
300 (incf n)) |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
49599
diff
changeset
|
301 ((and (not test) cell) |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
49599
diff
changeset
|
302 ;; Replace |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
49599
diff
changeset
|
303 (goto-char (match-beginning 1)) |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
49599
diff
changeset
|
304 (delete-region (match-beginning 1) (match-end 1)) |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
49599
diff
changeset
|
305 (insert (cdr cell))) |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
49599
diff
changeset
|
306 (t nil)))))))) |
25280 | 307 n)) |
308 | |
309 (defun reftex-save-all-document-buffers () | |
310 "Save all documents associated with the current document. | |
311 The function is useful after a global action like replacing or renumbering | |
312 labels." | |
313 (interactive) | |
314 (let ((files (reftex-all-document-files)) | |
52170
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
49599
diff
changeset
|
315 file buffer) |
105813
df4934f25eef
* textmodes/two-column.el (2C-split):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
100908
diff
changeset
|
316 (save-current-buffer |
25280 | 317 (while (setq file (pop files)) |
52170
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
49599
diff
changeset
|
318 (setq buffer (reftex-get-buffer-visiting file)) |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
49599
diff
changeset
|
319 (when buffer |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
49599
diff
changeset
|
320 (set-buffer buffer) |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
49599
diff
changeset
|
321 (save-buffer)))))) |
25280 | 322 |
29775
31536c6cf2e3
* textmodes/reftex.el (reftex-find-citation-regexp-format):
Carsten Dominik <dominik@science.uva.nl>
parents:
27603
diff
changeset
|
323 (defun reftex-ensure-write-access (files) |
31536c6cf2e3
* textmodes/reftex.el (reftex-find-citation-regexp-format):
Carsten Dominik <dominik@science.uva.nl>
parents:
27603
diff
changeset
|
324 "Make sure we have write access to all files in FILES. |
31536c6cf2e3
* textmodes/reftex.el (reftex-find-citation-regexp-format):
Carsten Dominik <dominik@science.uva.nl>
parents:
27603
diff
changeset
|
325 Also checks if buffers visiting the files are in read-only mode." |
31536c6cf2e3
* textmodes/reftex.el (reftex-find-citation-regexp-format):
Carsten Dominik <dominik@science.uva.nl>
parents:
27603
diff
changeset
|
326 (let (file buf) |
31536c6cf2e3
* textmodes/reftex.el (reftex-find-citation-regexp-format):
Carsten Dominik <dominik@science.uva.nl>
parents:
27603
diff
changeset
|
327 (while (setq file (pop files)) |
31536c6cf2e3
* textmodes/reftex.el (reftex-find-citation-regexp-format):
Carsten Dominik <dominik@science.uva.nl>
parents:
27603
diff
changeset
|
328 (unless (file-exists-p file) |
52170
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
49599
diff
changeset
|
329 (ding) |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
49599
diff
changeset
|
330 (or (y-or-n-p (format "No such file %s. Continue? " file)) |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
49599
diff
changeset
|
331 (error "Abort"))) |
29775
31536c6cf2e3
* textmodes/reftex.el (reftex-find-citation-regexp-format):
Carsten Dominik <dominik@science.uva.nl>
parents:
27603
diff
changeset
|
332 (unless (file-writable-p file) |
52170
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
49599
diff
changeset
|
333 (ding) |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
49599
diff
changeset
|
334 (or (y-or-n-p (format "No write access to %s. Continue? " file)) |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
49599
diff
changeset
|
335 (error "Abort"))) |
29775
31536c6cf2e3
* textmodes/reftex.el (reftex-find-citation-regexp-format):
Carsten Dominik <dominik@science.uva.nl>
parents:
27603
diff
changeset
|
336 (when (and (setq buf (reftex-get-buffer-visiting file)) |
105813
df4934f25eef
* textmodes/two-column.el (2C-split):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
100908
diff
changeset
|
337 (with-current-buffer buf |
52170
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
49599
diff
changeset
|
338 buffer-read-only)) |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
49599
diff
changeset
|
339 (ding) |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
49599
diff
changeset
|
340 (or (y-or-n-p (format "Buffer %s is read-only. Continue? " |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
49599
diff
changeset
|
341 (buffer-name buf))) |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
49599
diff
changeset
|
342 (error "Abort")))))) |
25280 | 343 |
100738
fdd1168c1df6
(reftex-isearch-switch-to-next-file):
Juri Linkov <juri@jurta.org>
parents:
94670
diff
changeset
|
344 ;;; Multi-file RefTeX Isearch |
fdd1168c1df6
(reftex-isearch-switch-to-next-file):
Juri Linkov <juri@jurta.org>
parents:
94670
diff
changeset
|
345 |
105813
df4934f25eef
* textmodes/two-column.el (2C-split):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
100908
diff
changeset
|
346 ;; `reftex-isearch-wrap-function', `reftex-isearch-push-state-function', |
df4934f25eef
* textmodes/two-column.el (2C-split):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
100908
diff
changeset
|
347 ;; `reftex-isearch-pop-state-function', `reftex-isearch-isearch-search' |
df4934f25eef
* textmodes/two-column.el (2C-split):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
100908
diff
changeset
|
348 ;; functions remain here only for backward-compatibility with Emacs 22 |
df4934f25eef
* textmodes/two-column.el (2C-split):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
100908
diff
changeset
|
349 ;; and are obsolete since Emacs 23 that supports a single function |
df4934f25eef
* textmodes/two-column.el (2C-split):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
100908
diff
changeset
|
350 ;; variable `multi-isearch-next-buffer-function'. |
100738
fdd1168c1df6
(reftex-isearch-switch-to-next-file):
Juri Linkov <juri@jurta.org>
parents:
94670
diff
changeset
|
351 |
59736
fc3483d0f93e
* textmodes/reftex-global.el (reftex-isearch-push-state-function)
Carsten Dominik <dominik@science.uva.nl>
parents:
59534
diff
changeset
|
352 (defun reftex-isearch-wrap-function () |
fc3483d0f93e
* textmodes/reftex-global.el (reftex-isearch-push-state-function)
Carsten Dominik <dominik@science.uva.nl>
parents:
59534
diff
changeset
|
353 (if (not isearch-word) |
65548
253cad16882d
Little fixes to remove compiler warnings
Carsten Dominik <dominik@science.uva.nl>
parents:
65265
diff
changeset
|
354 (switch-to-buffer |
59736
fc3483d0f93e
* textmodes/reftex-global.el (reftex-isearch-push-state-function)
Carsten Dominik <dominik@science.uva.nl>
parents:
59534
diff
changeset
|
355 (funcall isearch-next-buffer-function (current-buffer) t))) |
fc3483d0f93e
* textmodes/reftex-global.el (reftex-isearch-push-state-function)
Carsten Dominik <dominik@science.uva.nl>
parents:
59534
diff
changeset
|
356 (goto-char (if isearch-forward (point-min) (point-max)))) |
fc3483d0f93e
* textmodes/reftex-global.el (reftex-isearch-push-state-function)
Carsten Dominik <dominik@science.uva.nl>
parents:
59534
diff
changeset
|
357 |
fc3483d0f93e
* textmodes/reftex-global.el (reftex-isearch-push-state-function)
Carsten Dominik <dominik@science.uva.nl>
parents:
59534
diff
changeset
|
358 (defun reftex-isearch-push-state-function () |
fc3483d0f93e
* textmodes/reftex-global.el (reftex-isearch-push-state-function)
Carsten Dominik <dominik@science.uva.nl>
parents:
59534
diff
changeset
|
359 `(lambda (cmd) |
fc3483d0f93e
* textmodes/reftex-global.el (reftex-isearch-push-state-function)
Carsten Dominik <dominik@science.uva.nl>
parents:
59534
diff
changeset
|
360 (reftex-isearch-pop-state-function cmd ,(current-buffer)))) |
fc3483d0f93e
* textmodes/reftex-global.el (reftex-isearch-push-state-function)
Carsten Dominik <dominik@science.uva.nl>
parents:
59534
diff
changeset
|
361 |
fc3483d0f93e
* textmodes/reftex-global.el (reftex-isearch-push-state-function)
Carsten Dominik <dominik@science.uva.nl>
parents:
59534
diff
changeset
|
362 (defun reftex-isearch-pop-state-function (cmd buffer) |
fc3483d0f93e
* textmodes/reftex-global.el (reftex-isearch-push-state-function)
Carsten Dominik <dominik@science.uva.nl>
parents:
59534
diff
changeset
|
363 (switch-to-buffer buffer)) |
fc3483d0f93e
* textmodes/reftex-global.el (reftex-isearch-push-state-function)
Carsten Dominik <dominik@science.uva.nl>
parents:
59534
diff
changeset
|
364 |
fc3483d0f93e
* textmodes/reftex-global.el (reftex-isearch-push-state-function)
Carsten Dominik <dominik@science.uva.nl>
parents:
59534
diff
changeset
|
365 (defun reftex-isearch-isearch-search (string bound noerror) |
fc3483d0f93e
* textmodes/reftex-global.el (reftex-isearch-push-state-function)
Carsten Dominik <dominik@science.uva.nl>
parents:
59534
diff
changeset
|
366 (let ((nxt-buff nil) |
fc3483d0f93e
* textmodes/reftex-global.el (reftex-isearch-push-state-function)
Carsten Dominik <dominik@science.uva.nl>
parents:
59534
diff
changeset
|
367 (search-fun |
fc3483d0f93e
* textmodes/reftex-global.el (reftex-isearch-push-state-function)
Carsten Dominik <dominik@science.uva.nl>
parents:
59534
diff
changeset
|
368 (cond |
fc3483d0f93e
* textmodes/reftex-global.el (reftex-isearch-push-state-function)
Carsten Dominik <dominik@science.uva.nl>
parents:
59534
diff
changeset
|
369 (isearch-word |
fc3483d0f93e
* textmodes/reftex-global.el (reftex-isearch-push-state-function)
Carsten Dominik <dominik@science.uva.nl>
parents:
59534
diff
changeset
|
370 (if isearch-forward 'word-search-forward 'word-search-backward)) |
fc3483d0f93e
* textmodes/reftex-global.el (reftex-isearch-push-state-function)
Carsten Dominik <dominik@science.uva.nl>
parents:
59534
diff
changeset
|
371 (isearch-regexp |
fc3483d0f93e
* textmodes/reftex-global.el (reftex-isearch-push-state-function)
Carsten Dominik <dominik@science.uva.nl>
parents:
59534
diff
changeset
|
372 (if isearch-forward 're-search-forward 're-search-backward)) |
fc3483d0f93e
* textmodes/reftex-global.el (reftex-isearch-push-state-function)
Carsten Dominik <dominik@science.uva.nl>
parents:
59534
diff
changeset
|
373 (t |
fc3483d0f93e
* textmodes/reftex-global.el (reftex-isearch-push-state-function)
Carsten Dominik <dominik@science.uva.nl>
parents:
59534
diff
changeset
|
374 (if isearch-forward 'search-forward 'search-backward))))) |
fc3483d0f93e
* textmodes/reftex-global.el (reftex-isearch-push-state-function)
Carsten Dominik <dominik@science.uva.nl>
parents:
59534
diff
changeset
|
375 (or |
fc3483d0f93e
* textmodes/reftex-global.el (reftex-isearch-push-state-function)
Carsten Dominik <dominik@science.uva.nl>
parents:
59534
diff
changeset
|
376 (funcall search-fun string bound noerror) |
fc3483d0f93e
* textmodes/reftex-global.el (reftex-isearch-push-state-function)
Carsten Dominik <dominik@science.uva.nl>
parents:
59534
diff
changeset
|
377 (unless bound |
fc3483d0f93e
* textmodes/reftex-global.el (reftex-isearch-push-state-function)
Carsten Dominik <dominik@science.uva.nl>
parents:
59534
diff
changeset
|
378 (condition-case nil |
fc3483d0f93e
* textmodes/reftex-global.el (reftex-isearch-push-state-function)
Carsten Dominik <dominik@science.uva.nl>
parents:
59534
diff
changeset
|
379 (when isearch-next-buffer-function |
fc3483d0f93e
* textmodes/reftex-global.el (reftex-isearch-push-state-function)
Carsten Dominik <dominik@science.uva.nl>
parents:
59534
diff
changeset
|
380 (while (not (funcall search-fun string bound noerror)) |
fc3483d0f93e
* textmodes/reftex-global.el (reftex-isearch-push-state-function)
Carsten Dominik <dominik@science.uva.nl>
parents:
59534
diff
changeset
|
381 (cond |
fc3483d0f93e
* textmodes/reftex-global.el (reftex-isearch-push-state-function)
Carsten Dominik <dominik@science.uva.nl>
parents:
59534
diff
changeset
|
382 (isearch-forward |
fc3483d0f93e
* textmodes/reftex-global.el (reftex-isearch-push-state-function)
Carsten Dominik <dominik@science.uva.nl>
parents:
59534
diff
changeset
|
383 (setq nxt-buff |
fc3483d0f93e
* textmodes/reftex-global.el (reftex-isearch-push-state-function)
Carsten Dominik <dominik@science.uva.nl>
parents:
59534
diff
changeset
|
384 (funcall isearch-next-buffer-function |
fc3483d0f93e
* textmodes/reftex-global.el (reftex-isearch-push-state-function)
Carsten Dominik <dominik@science.uva.nl>
parents:
59534
diff
changeset
|
385 (current-buffer))) |
fc3483d0f93e
* textmodes/reftex-global.el (reftex-isearch-push-state-function)
Carsten Dominik <dominik@science.uva.nl>
parents:
59534
diff
changeset
|
386 (if (not nxt-buff) |
fc3483d0f93e
* textmodes/reftex-global.el (reftex-isearch-push-state-function)
Carsten Dominik <dominik@science.uva.nl>
parents:
59534
diff
changeset
|
387 (progn |
fc3483d0f93e
* textmodes/reftex-global.el (reftex-isearch-push-state-function)
Carsten Dominik <dominik@science.uva.nl>
parents:
59534
diff
changeset
|
388 (error "Wrap forward")) |
fc3483d0f93e
* textmodes/reftex-global.el (reftex-isearch-push-state-function)
Carsten Dominik <dominik@science.uva.nl>
parents:
59534
diff
changeset
|
389 (switch-to-buffer nxt-buff) |
fc3483d0f93e
* textmodes/reftex-global.el (reftex-isearch-push-state-function)
Carsten Dominik <dominik@science.uva.nl>
parents:
59534
diff
changeset
|
390 (goto-char (point-min)))) |
fc3483d0f93e
* textmodes/reftex-global.el (reftex-isearch-push-state-function)
Carsten Dominik <dominik@science.uva.nl>
parents:
59534
diff
changeset
|
391 (t |
fc3483d0f93e
* textmodes/reftex-global.el (reftex-isearch-push-state-function)
Carsten Dominik <dominik@science.uva.nl>
parents:
59534
diff
changeset
|
392 (setq nxt-buff |
fc3483d0f93e
* textmodes/reftex-global.el (reftex-isearch-push-state-function)
Carsten Dominik <dominik@science.uva.nl>
parents:
59534
diff
changeset
|
393 (funcall isearch-next-buffer-function |
fc3483d0f93e
* textmodes/reftex-global.el (reftex-isearch-push-state-function)
Carsten Dominik <dominik@science.uva.nl>
parents:
59534
diff
changeset
|
394 (current-buffer))) |
fc3483d0f93e
* textmodes/reftex-global.el (reftex-isearch-push-state-function)
Carsten Dominik <dominik@science.uva.nl>
parents:
59534
diff
changeset
|
395 (if (not nxt-buff) |
fc3483d0f93e
* textmodes/reftex-global.el (reftex-isearch-push-state-function)
Carsten Dominik <dominik@science.uva.nl>
parents:
59534
diff
changeset
|
396 (progn |
fc3483d0f93e
* textmodes/reftex-global.el (reftex-isearch-push-state-function)
Carsten Dominik <dominik@science.uva.nl>
parents:
59534
diff
changeset
|
397 (error "Wrap backward")) |
fc3483d0f93e
* textmodes/reftex-global.el (reftex-isearch-push-state-function)
Carsten Dominik <dominik@science.uva.nl>
parents:
59534
diff
changeset
|
398 (switch-to-buffer nxt-buff) |
fc3483d0f93e
* textmodes/reftex-global.el (reftex-isearch-push-state-function)
Carsten Dominik <dominik@science.uva.nl>
parents:
59534
diff
changeset
|
399 (goto-char (point-max)))))) |
fc3483d0f93e
* textmodes/reftex-global.el (reftex-isearch-push-state-function)
Carsten Dominik <dominik@science.uva.nl>
parents:
59534
diff
changeset
|
400 (point)) |
fc3483d0f93e
* textmodes/reftex-global.el (reftex-isearch-push-state-function)
Carsten Dominik <dominik@science.uva.nl>
parents:
59534
diff
changeset
|
401 (error nil)))))) |
fc3483d0f93e
* textmodes/reftex-global.el (reftex-isearch-push-state-function)
Carsten Dominik <dominik@science.uva.nl>
parents:
59534
diff
changeset
|
402 |
105813
df4934f25eef
* textmodes/two-column.el (2C-split):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
100908
diff
changeset
|
403 ;; This function is called when isearch reaches the end of a |
df4934f25eef
* textmodes/two-column.el (2C-split):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
100908
diff
changeset
|
404 ;; buffer. For reftex what we want to do is not wrap to the |
df4934f25eef
* textmodes/two-column.el (2C-split):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
100908
diff
changeset
|
405 ;; beginning, but switch to the next buffer in the logical order of |
df4934f25eef
* textmodes/two-column.el (2C-split):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
100908
diff
changeset
|
406 ;; the document. This function looks through list of files in the |
df4934f25eef
* textmodes/two-column.el (2C-split):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
100908
diff
changeset
|
407 ;; document (reftex-all-document-files), searches for the current |
df4934f25eef
* textmodes/two-column.el (2C-split):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
100908
diff
changeset
|
408 ;; buffer and switches to the next/previous one in the logical order |
df4934f25eef
* textmodes/two-column.el (2C-split):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
100908
diff
changeset
|
409 ;; of the document. If WRAPP is true then wrap the search to the |
df4934f25eef
* textmodes/two-column.el (2C-split):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
100908
diff
changeset
|
410 ;; beginning/end of the file list, depending of the search direction. |
59736
fc3483d0f93e
* textmodes/reftex-global.el (reftex-isearch-push-state-function)
Carsten Dominik <dominik@science.uva.nl>
parents:
59534
diff
changeset
|
411 (defun reftex-isearch-switch-to-next-file (crt-buf &optional wrapp) |
fc3483d0f93e
* textmodes/reftex-global.el (reftex-isearch-push-state-function)
Carsten Dominik <dominik@science.uva.nl>
parents:
59534
diff
changeset
|
412 (reftex-access-scan-info) |
94415
8173b23112ae
(reftex-isearch-switch-to-next-file): Remove un-needed local `orig-list'.
Glenn Morris <rgm@gnu.org>
parents:
93975
diff
changeset
|
413 (let ((cb (buffer-file-name crt-buf)) |
8173b23112ae
(reftex-isearch-switch-to-next-file): Remove un-needed local `orig-list'.
Glenn Morris <rgm@gnu.org>
parents:
93975
diff
changeset
|
414 (flist (reftex-all-document-files))) |
59736
fc3483d0f93e
* textmodes/reftex-global.el (reftex-isearch-push-state-function)
Carsten Dominik <dominik@science.uva.nl>
parents:
59534
diff
changeset
|
415 (when flist |
fc3483d0f93e
* textmodes/reftex-global.el (reftex-isearch-push-state-function)
Carsten Dominik <dominik@science.uva.nl>
parents:
59534
diff
changeset
|
416 (if wrapp |
fc3483d0f93e
* textmodes/reftex-global.el (reftex-isearch-push-state-function)
Carsten Dominik <dominik@science.uva.nl>
parents:
59534
diff
changeset
|
417 (unless isearch-forward |
fc3483d0f93e
* textmodes/reftex-global.el (reftex-isearch-push-state-function)
Carsten Dominik <dominik@science.uva.nl>
parents:
59534
diff
changeset
|
418 (setq flist (last flist))) |
fc3483d0f93e
* textmodes/reftex-global.el (reftex-isearch-push-state-function)
Carsten Dominik <dominik@science.uva.nl>
parents:
59534
diff
changeset
|
419 (unless isearch-forward |
94415
8173b23112ae
(reftex-isearch-switch-to-next-file): Remove un-needed local `orig-list'.
Glenn Morris <rgm@gnu.org>
parents:
93975
diff
changeset
|
420 (setq flist (reverse flist))) |
59736
fc3483d0f93e
* textmodes/reftex-global.el (reftex-isearch-push-state-function)
Carsten Dominik <dominik@science.uva.nl>
parents:
59534
diff
changeset
|
421 (while (not (string= (car flist) cb)) |
fc3483d0f93e
* textmodes/reftex-global.el (reftex-isearch-push-state-function)
Carsten Dominik <dominik@science.uva.nl>
parents:
59534
diff
changeset
|
422 (setq flist (cdr flist))) |
fc3483d0f93e
* textmodes/reftex-global.el (reftex-isearch-push-state-function)
Carsten Dominik <dominik@science.uva.nl>
parents:
59534
diff
changeset
|
423 (setq flist (cdr flist))) |
fc3483d0f93e
* textmodes/reftex-global.el (reftex-isearch-push-state-function)
Carsten Dominik <dominik@science.uva.nl>
parents:
59534
diff
changeset
|
424 (when flist |
100738
fdd1168c1df6
(reftex-isearch-switch-to-next-file):
Juri Linkov <juri@jurta.org>
parents:
94670
diff
changeset
|
425 (find-file-noselect (car flist)))))) |
59736
fc3483d0f93e
* textmodes/reftex-global.el (reftex-isearch-push-state-function)
Carsten Dominik <dominik@science.uva.nl>
parents:
59534
diff
changeset
|
426 |
fc3483d0f93e
* textmodes/reftex-global.el (reftex-isearch-push-state-function)
Carsten Dominik <dominik@science.uva.nl>
parents:
59534
diff
changeset
|
427 ;;;###autoload |
fc3483d0f93e
* textmodes/reftex-global.el (reftex-isearch-push-state-function)
Carsten Dominik <dominik@science.uva.nl>
parents:
59534
diff
changeset
|
428 (defun reftex-isearch-minor-mode (&optional arg) |
fc3483d0f93e
* textmodes/reftex-global.el (reftex-isearch-push-state-function)
Carsten Dominik <dominik@science.uva.nl>
parents:
59534
diff
changeset
|
429 "When on, isearch searches the whole document, not only the current file. |
fc3483d0f93e
* textmodes/reftex-global.el (reftex-isearch-push-state-function)
Carsten Dominik <dominik@science.uva.nl>
parents:
59534
diff
changeset
|
430 This minor mode allows isearch to search through all the files of |
fc3483d0f93e
* textmodes/reftex-global.el (reftex-isearch-push-state-function)
Carsten Dominik <dominik@science.uva.nl>
parents:
59534
diff
changeset
|
431 the current TeX document. |
fc3483d0f93e
* textmodes/reftex-global.el (reftex-isearch-push-state-function)
Carsten Dominik <dominik@science.uva.nl>
parents:
59534
diff
changeset
|
432 |
fc3483d0f93e
* textmodes/reftex-global.el (reftex-isearch-push-state-function)
Carsten Dominik <dominik@science.uva.nl>
parents:
59534
diff
changeset
|
433 With no argument, this command toggles |
fc3483d0f93e
* textmodes/reftex-global.el (reftex-isearch-push-state-function)
Carsten Dominik <dominik@science.uva.nl>
parents:
59534
diff
changeset
|
434 `reftex-isearch-minor-mode'. With a prefix argument ARG, turn |
78482
80e300a489d6
Replace `iff' in doc-strings and comments.
Glenn Morris <rgm@gnu.org>
parents:
78225
diff
changeset
|
435 `reftex-isearch-minor-mode' on if ARG is positive, otherwise turn it off." |
59736
fc3483d0f93e
* textmodes/reftex-global.el (reftex-isearch-push-state-function)
Carsten Dominik <dominik@science.uva.nl>
parents:
59534
diff
changeset
|
436 (interactive "P") |
fc3483d0f93e
* textmodes/reftex-global.el (reftex-isearch-push-state-function)
Carsten Dominik <dominik@science.uva.nl>
parents:
59534
diff
changeset
|
437 (let ((old-reftex-isearch-minor-mode reftex-isearch-minor-mode)) |
65548
253cad16882d
Little fixes to remove compiler warnings
Carsten Dominik <dominik@science.uva.nl>
parents:
65265
diff
changeset
|
438 (setq reftex-isearch-minor-mode |
59736
fc3483d0f93e
* textmodes/reftex-global.el (reftex-isearch-push-state-function)
Carsten Dominik <dominik@science.uva.nl>
parents:
59534
diff
changeset
|
439 (not (or (and (null arg) reftex-isearch-minor-mode) |
fc3483d0f93e
* textmodes/reftex-global.el (reftex-isearch-push-state-function)
Carsten Dominik <dominik@science.uva.nl>
parents:
59534
diff
changeset
|
440 (<= (prefix-numeric-value arg) 0)))) |
fc3483d0f93e
* textmodes/reftex-global.el (reftex-isearch-push-state-function)
Carsten Dominik <dominik@science.uva.nl>
parents:
59534
diff
changeset
|
441 (unless (eq reftex-isearch-minor-mode old-reftex-isearch-minor-mode) |
fc3483d0f93e
* textmodes/reftex-global.el (reftex-isearch-push-state-function)
Carsten Dominik <dominik@science.uva.nl>
parents:
59534
diff
changeset
|
442 (if reftex-isearch-minor-mode |
fc3483d0f93e
* textmodes/reftex-global.el (reftex-isearch-push-state-function)
Carsten Dominik <dominik@science.uva.nl>
parents:
59534
diff
changeset
|
443 (progn |
fc3483d0f93e
* textmodes/reftex-global.el (reftex-isearch-push-state-function)
Carsten Dominik <dominik@science.uva.nl>
parents:
59534
diff
changeset
|
444 (dolist (crt-buf (buffer-list)) |
fc3483d0f93e
* textmodes/reftex-global.el (reftex-isearch-push-state-function)
Carsten Dominik <dominik@science.uva.nl>
parents:
59534
diff
changeset
|
445 (with-current-buffer crt-buf |
fc3483d0f93e
* textmodes/reftex-global.el (reftex-isearch-push-state-function)
Carsten Dominik <dominik@science.uva.nl>
parents:
59534
diff
changeset
|
446 (when reftex-mode |
100738
fdd1168c1df6
(reftex-isearch-switch-to-next-file):
Juri Linkov <juri@jurta.org>
parents:
94670
diff
changeset
|
447 (if (boundp 'multi-isearch-next-buffer-function) |
fdd1168c1df6
(reftex-isearch-switch-to-next-file):
Juri Linkov <juri@jurta.org>
parents:
94670
diff
changeset
|
448 (set (make-local-variable 'multi-isearch-next-buffer-function) |
fdd1168c1df6
(reftex-isearch-switch-to-next-file):
Juri Linkov <juri@jurta.org>
parents:
94670
diff
changeset
|
449 'reftex-isearch-switch-to-next-file) |
fdd1168c1df6
(reftex-isearch-switch-to-next-file):
Juri Linkov <juri@jurta.org>
parents:
94670
diff
changeset
|
450 (set (make-local-variable 'isearch-wrap-function) |
fdd1168c1df6
(reftex-isearch-switch-to-next-file):
Juri Linkov <juri@jurta.org>
parents:
94670
diff
changeset
|
451 'reftex-isearch-wrap-function) |
fdd1168c1df6
(reftex-isearch-switch-to-next-file):
Juri Linkov <juri@jurta.org>
parents:
94670
diff
changeset
|
452 (set (make-local-variable 'isearch-search-fun-function) |
fdd1168c1df6
(reftex-isearch-switch-to-next-file):
Juri Linkov <juri@jurta.org>
parents:
94670
diff
changeset
|
453 (lambda () 'reftex-isearch-isearch-search)) |
fdd1168c1df6
(reftex-isearch-switch-to-next-file):
Juri Linkov <juri@jurta.org>
parents:
94670
diff
changeset
|
454 (set (make-local-variable 'isearch-push-state-function) |
fdd1168c1df6
(reftex-isearch-switch-to-next-file):
Juri Linkov <juri@jurta.org>
parents:
94670
diff
changeset
|
455 'reftex-isearch-push-state-function) |
fdd1168c1df6
(reftex-isearch-switch-to-next-file):
Juri Linkov <juri@jurta.org>
parents:
94670
diff
changeset
|
456 (set (make-local-variable 'isearch-next-buffer-function) |
fdd1168c1df6
(reftex-isearch-switch-to-next-file):
Juri Linkov <juri@jurta.org>
parents:
94670
diff
changeset
|
457 'reftex-isearch-switch-to-next-file)) |
59736
fc3483d0f93e
* textmodes/reftex-global.el (reftex-isearch-push-state-function)
Carsten Dominik <dominik@science.uva.nl>
parents:
59534
diff
changeset
|
458 (setq reftex-isearch-minor-mode t)))) |
fc3483d0f93e
* textmodes/reftex-global.el (reftex-isearch-push-state-function)
Carsten Dominik <dominik@science.uva.nl>
parents:
59534
diff
changeset
|
459 (add-hook 'reftex-mode-hook 'reftex-isearch-minor-mode)) |
fc3483d0f93e
* textmodes/reftex-global.el (reftex-isearch-push-state-function)
Carsten Dominik <dominik@science.uva.nl>
parents:
59534
diff
changeset
|
460 (dolist (crt-buf (buffer-list)) |
fc3483d0f93e
* textmodes/reftex-global.el (reftex-isearch-push-state-function)
Carsten Dominik <dominik@science.uva.nl>
parents:
59534
diff
changeset
|
461 (with-current-buffer crt-buf |
fc3483d0f93e
* textmodes/reftex-global.el (reftex-isearch-push-state-function)
Carsten Dominik <dominik@science.uva.nl>
parents:
59534
diff
changeset
|
462 (when reftex-mode |
100738
fdd1168c1df6
(reftex-isearch-switch-to-next-file):
Juri Linkov <juri@jurta.org>
parents:
94670
diff
changeset
|
463 (if (boundp 'multi-isearch-next-buffer-function) |
fdd1168c1df6
(reftex-isearch-switch-to-next-file):
Juri Linkov <juri@jurta.org>
parents:
94670
diff
changeset
|
464 (kill-local-variable 'multi-isearch-next-buffer-function) |
fdd1168c1df6
(reftex-isearch-switch-to-next-file):
Juri Linkov <juri@jurta.org>
parents:
94670
diff
changeset
|
465 (kill-local-variable 'isearch-wrap-function) |
fdd1168c1df6
(reftex-isearch-switch-to-next-file):
Juri Linkov <juri@jurta.org>
parents:
94670
diff
changeset
|
466 (kill-local-variable 'isearch-search-fun-function) |
fdd1168c1df6
(reftex-isearch-switch-to-next-file):
Juri Linkov <juri@jurta.org>
parents:
94670
diff
changeset
|
467 (kill-local-variable 'isearch-push-state-function) |
fdd1168c1df6
(reftex-isearch-switch-to-next-file):
Juri Linkov <juri@jurta.org>
parents:
94670
diff
changeset
|
468 (kill-local-variable 'isearch-next-buffer-function)) |
59736
fc3483d0f93e
* textmodes/reftex-global.el (reftex-isearch-push-state-function)
Carsten Dominik <dominik@science.uva.nl>
parents:
59534
diff
changeset
|
469 (setq reftex-isearch-minor-mode nil)))) |
fc3483d0f93e
* textmodes/reftex-global.el (reftex-isearch-push-state-function)
Carsten Dominik <dominik@science.uva.nl>
parents:
59534
diff
changeset
|
470 (remove-hook 'reftex-mode-hook 'reftex-isearch-minor-mode))) |
fc3483d0f93e
* textmodes/reftex-global.el (reftex-isearch-push-state-function)
Carsten Dominik <dominik@science.uva.nl>
parents:
59534
diff
changeset
|
471 ;; Force modeline redisplay. |
fc3483d0f93e
* textmodes/reftex-global.el (reftex-isearch-push-state-function)
Carsten Dominik <dominik@science.uva.nl>
parents:
59534
diff
changeset
|
472 (set-buffer-modified-p (buffer-modified-p)))) |
fc3483d0f93e
* textmodes/reftex-global.el (reftex-isearch-push-state-function)
Carsten Dominik <dominik@science.uva.nl>
parents:
59534
diff
changeset
|
473 |
65548
253cad16882d
Little fixes to remove compiler warnings
Carsten Dominik <dominik@science.uva.nl>
parents:
65265
diff
changeset
|
474 (add-minor-mode 'reftex-isearch-minor-mode "/I" nil nil |
59736
fc3483d0f93e
* textmodes/reftex-global.el (reftex-isearch-push-state-function)
Carsten Dominik <dominik@science.uva.nl>
parents:
59534
diff
changeset
|
475 'reftex-isearch-minor-mode) |
fc3483d0f93e
* textmodes/reftex-global.el (reftex-isearch-push-state-function)
Carsten Dominik <dominik@science.uva.nl>
parents:
59534
diff
changeset
|
476 |
93975
1e3a407766b9
Fix up comment convention on the arch-tag lines.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
93097
diff
changeset
|
477 ;; arch-tag: 2dbf7633-92c8-4340-8656-7aa019d0f80d |
25280 | 478 ;;; reftex-global.el ends here |