Mercurial > emacs
annotate lisp/textmodes/reftex-global.el @ 88279:8ca01eaf0be8
(rmail-desc-default-attrs): New const.
(rmail-desc-get-default-attrs): Deleted.
author | Henrik Enberg <henrik.enberg@telia.com> |
---|---|
date | Sun, 22 Jan 2006 20:39:48 +0000 |
parents | d7ddb3e565de |
children |
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 |
88155 | 2 ;; Copyright (c) 1997, 1998, 1999, 2000, 2003, 2004, 2005 |
3 ;; Free Software Foundation, Inc. | |
27035 | 4 |
46612
7522419c4db0
Updated to reftex 4.17
Carsten Dominik <dominik@science.uva.nl>
parents:
42418
diff
changeset
|
5 ;; Author: Carsten Dominik <dominik@science.uva.nl> |
88155 | 6 ;; Version: VERSIONTAG |
27035 | 7 |
8 ;; This file is part of GNU Emacs. | |
9 | |
10 ;; GNU Emacs is free software; you can redistribute it and/or modify | |
11 ;; it under the terms of the GNU General Public License as published by | |
12 ;; the Free Software Foundation; either version 2, or (at your option) | |
13 ;; any later version. | |
14 | |
15 ;; GNU Emacs is distributed in the hope that it will be useful, | |
16 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of | |
17 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
18 ;; GNU General Public License for more details. | |
19 | |
20 ;; You should have received a copy of the GNU General Public License | |
21 ;; along with GNU Emacs; see the file COPYING. If not, write to the | |
88155 | 22 ;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, |
23 ;; Boston, MA 02110-1301, USA. | |
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)) | |
41 (cmd (format "etags %s" (mapconcat 'identity files " ")))) | |
42 (save-excursion | |
34402
5eec8d1d09f0
Update to RefTeX 4.15, see ChangeLog for details
Carsten Dominik <dominik@science.uva.nl>
parents:
29775
diff
changeset
|
43 (set-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 | |
88155 | 102 (eval-when-compile |
103 (defvar TeX-master) | |
104 (defvar isearch-next-buffer-function)) | |
105 | |
25280 | 106 (defun reftex-find-duplicate-labels () |
107 "Produce a list of all duplicate labels in the document." | |
108 | |
109 (interactive) | |
110 | |
111 ;; Rescan the document to make sure | |
112 (reftex-access-scan-info t) | |
113 | |
114 (let ((master (reftex-TeX-master-file)) | |
88155 | 115 (cnt 0) |
25280 | 116 (dlist |
117 (mapcar | |
88155 | 118 (lambda (x) |
119 (let (x1) | |
120 (cond | |
121 ((memq (car x) | |
122 '(toc bof eof bib thebib label-numbers xr xr-doc | |
123 master-dir file-error bibview-cache appendix | |
124 is-multi index)) | |
125 nil) | |
126 (t | |
127 (setq x1 (reftex-all-assoc-string | |
128 (car x) (symbol-value reftex-docstruct-symbol))) | |
129 (if (< 1 (length x1)) | |
130 (append (list (car x)) | |
131 (mapcar (lambda(x) | |
132 (abbreviate-file-name (nth 3 x))) | |
133 x1)) | |
134 (list nil)))))) | |
25280 | 135 (reftex-uniquify-by-car (symbol-value reftex-docstruct-symbol))))) |
136 | |
137 (setq dlist (reftex-uniquify-by-car dlist)) | |
138 (if (null dlist) (error "No duplicate labels in document")) | |
139 (switch-to-buffer-other-window "*Duplicate Labels*") | |
140 (set (make-local-variable 'TeX-master) master) | |
141 (erase-buffer) | |
142 (insert " MULTIPLE LABELS IN CURRENT DOCUMENT:\n") | |
88155 | 143 (insert |
25280 | 144 " Move point to label and type `r' to run a query-replace on the label\n" |
145 " and its references. Type `q' to exit this buffer.\n\n") | |
146 (insert " LABEL FILE\n") | |
147 (insert " -------------------------------------------------------------\n") | |
148 (use-local-map (make-sparse-keymap)) | |
149 (local-set-key [?q] (lambda () "Kill this buffer." (interactive) | |
88155 | 150 (kill-buffer (current-buffer)) (delete-window))) |
25280 | 151 (local-set-key [?r] 'reftex-change-label) |
152 (while dlist | |
153 (when (and (car (car dlist)) | |
154 (cdr (car dlist))) | |
88155 | 155 (incf cnt) |
25280 | 156 (insert (mapconcat 'identity (car dlist) "\n ") "\n")) |
157 (pop dlist)) | |
158 (goto-char (point-min)) | |
159 (when (= cnt 0) | |
160 (kill-buffer (current-buffer)) | |
161 (delete-window) | |
162 (message "Document does not contain duplicate labels.")))) | |
163 | |
164 (defun reftex-change-label (&optional from to) | |
88155 | 165 "Run `query-replace-regexp' of FROM with TO in all macro arguments. |
25280 | 166 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
|
167 If you exit (\\[keyboard-quit], RET or q), you can resume the query replace |
25280 | 168 with the command \\[tags-loop-continue]. |
169 No active TAGS table is required." | |
170 (interactive) | |
171 (let ((default (reftex-this-word "-a-zA-Z0-9_*.:"))) | |
172 (unless from | |
173 (setq from (read-string (format "Replace label globally [%s]: " | |
174 default)))) | |
175 (if (string= from "") (setq from default)) | |
176 (unless to | |
177 (setq to (read-string (format "Replace label %s with: " | |
178 from)))) | |
179 (reftex-query-replace-document | |
88155 | 180 (concat "{" (regexp-quote from) "}") |
181 (format "{%s}" to)))) | |
25280 | 182 |
183 (defun reftex-renumber-simple-labels () | |
184 "Renumber all simple labels in the document to make them sequentially. | |
185 Simple labels are the ones created by RefTeX, consisting only of the | |
186 prefix and a number. After the command completes, all these labels will | |
187 have sequential numbers throughout the document. Any references to | |
188 the labels will be changed as well. For this, RefTeX looks at the | |
189 arguments of any macros which either start or end in the string `ref'. | |
190 This command should be used with care, in particular in multifile | |
191 documents. You should not use it if another document refers to this | |
192 one with the `xr' package." | |
193 (interactive) | |
194 ;; Resan the entire document | |
195 (reftex-access-scan-info 1) | |
196 ;; Get some insurance | |
197 (if (and (reftex-is-multi) | |
88155 | 198 (not (yes-or-no-p "Replacing all simple labels in multiple files is risky. Continue? "))) |
25280 | 199 (error "Abort")) |
200 ;; Make the translation list | |
88155 | 201 (let* ((re-core (concat "\\(" |
202 (mapconcat 'cdr reftex-typekey-to-prefix-alist "\\|") | |
203 "\\)")) | |
204 (label-re (concat "\\`" re-core "\\([0-9]+\\)\\'")) | |
205 (search-re (concat "[{,]\\(" re-core "\\([0-9]+\\)\\)[,}]")) | |
206 (error-fmt "Undefined label or reference %s. Ignore and continue? ") | |
207 (label-numbers-alist (mapcar (lambda (x) (cons (cdr x) 0)) | |
208 reftex-typekey-to-prefix-alist)) | |
209 (files (reftex-all-document-files)) | |
210 (list (symbol-value reftex-docstruct-symbol)) | |
211 translate-alist n entry label new-label nr-cell changed-sequence) | |
25280 | 212 |
213 (while (setq entry (pop list)) | |
214 (when (and (stringp (car entry)) | |
88155 | 215 (string-match label-re (car entry))) |
216 (setq label (car entry) | |
217 nr-cell (assoc (match-string 1 (car entry)) | |
218 label-numbers-alist)) | |
219 (if (assoc label translate-alist) | |
220 (error "Duplicate label %s" label)) | |
221 (setq new-label (concat (match-string 1 (car entry)) | |
222 (int-to-string (incf (cdr nr-cell))))) | |
223 (push (cons label new-label) translate-alist) | |
224 (or (string= label new-label) (setq changed-sequence t)))) | |
25280 | 225 |
226 (unless changed-sequence | |
227 (error "Simple labels are already in correct sequence")) | |
228 | |
29775
31536c6cf2e3
* textmodes/reftex.el (reftex-find-citation-regexp-format):
Carsten Dominik <dominik@science.uva.nl>
parents:
27603
diff
changeset
|
229 (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
|
230 |
25280 | 231 ;; Save all document buffers before this operation |
232 (reftex-save-all-document-buffers) | |
233 | |
234 ;; First test to check for erros | |
88155 | 235 (setq n (reftex-translate |
236 files search-re translate-alist error-fmt 'test)) | |
25280 | 237 |
238 ;; Now the real thing. | |
88155 | 239 (if (yes-or-no-p |
240 (format "Replace %d items at %d places in %d files? " | |
241 (length translate-alist) n (length files))) | |
242 (progn | |
243 (let ((inhibit-quit t)) ;; Do not disturb... | |
244 (reftex-translate | |
245 files search-re translate-alist error-fmt nil) | |
246 (setq quit-flag nil)) | |
247 (if (and (reftex-is-multi) | |
248 (yes-or-no-p "Save entire document? ")) | |
249 (reftex-save-all-document-buffers)) | |
250 ;; Rescan again... | |
251 (reftex-access-scan-info 1) | |
252 (message "Done replacing simple labels.")) | |
25280 | 253 (message "No replacements done")))) |
254 | |
255 (defun reftex-translate (files search-re translate-alist error-fmt test) | |
256 ;; In FILES, look for SEARCH-RE and replace match 1 of it with | |
88155 | 257 ;; its association in TRANSLATE-ALSIT. |
25280 | 258 ;; If we do not find an association and TEST is non-nil, query |
88155 | 259 ;; to ignore the problematic string. |
25280 | 260 ;; If TEST is nil, it is ignored without query. |
261 ;; Return the number of replacements. | |
262 (let ((n 0) file label match-data buf macro pos cell) | |
263 (while (setq file (pop files)) | |
264 (setq buf (reftex-get-file-buffer-force file)) | |
265 (unless buf | |
88155 | 266 (error "No such file %s" file)) |
25280 | 267 (set-buffer buf) |
268 (save-excursion | |
88155 | 269 (save-restriction |
270 (widen) | |
271 (goto-char (point-min)) | |
272 (while (re-search-forward search-re nil t) | |
273 (backward-char) | |
274 (save-excursion | |
275 (setq label (reftex-match-string 1) | |
276 cell (assoc label translate-alist) | |
277 match-data (match-data) | |
278 macro (reftex-what-macro 1) | |
279 pos (cdr macro)) | |
280 (goto-char (or pos (point))) | |
281 (when (and macro | |
282 (or (looking-at "\\\\ref") | |
283 (looking-at "\\\\[a-zA-Z]*ref\\(range\\)?[^a-zA-Z]") | |
284 (looking-at "\\\\ref[a-zA-Z]*[^a-zA-Z]") | |
285 (looking-at (format | |
286 reftex-find-label-regexp-format | |
287 (regexp-quote label))))) | |
288 ;; OK, we should replace it. | |
289 (set-match-data match-data) | |
290 (cond | |
291 ((and test (not cell)) | |
292 ;; We've got a problem | |
293 (unwind-protect | |
294 (progn | |
295 (reftex-highlight 1 (match-beginning 0) (match-end 0)) | |
296 (ding) | |
297 (or (y-or-n-p (format error-fmt label)) | |
298 (error "Abort"))) | |
299 (reftex-unhighlight 1))) | |
300 ((and test cell) | |
301 (incf n)) | |
302 ((and (not test) cell) | |
303 ;; Replace | |
304 (goto-char (match-beginning 1)) | |
305 (delete-region (match-beginning 1) (match-end 1)) | |
306 (insert (cdr cell))) | |
307 (t nil)))))))) | |
25280 | 308 n)) |
309 | |
310 (defun reftex-save-all-document-buffers () | |
311 "Save all documents associated with the current document. | |
312 The function is useful after a global action like replacing or renumbering | |
313 labels." | |
314 (interactive) | |
315 (let ((files (reftex-all-document-files)) | |
88155 | 316 file buffer) |
25280 | 317 (save-excursion |
318 (while (setq file (pop files)) | |
88155 | 319 (setq buffer (reftex-get-buffer-visiting file)) |
320 (when buffer | |
321 (set-buffer buffer) | |
322 (save-buffer)))))) | |
25280 | 323 |
29775
31536c6cf2e3
* textmodes/reftex.el (reftex-find-citation-regexp-format):
Carsten Dominik <dominik@science.uva.nl>
parents:
27603
diff
changeset
|
324 (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
|
325 "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
|
326 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
|
327 (let (file buf) |
31536c6cf2e3
* textmodes/reftex.el (reftex-find-citation-regexp-format):
Carsten Dominik <dominik@science.uva.nl>
parents:
27603
diff
changeset
|
328 (while (setq file (pop files)) |
31536c6cf2e3
* textmodes/reftex.el (reftex-find-citation-regexp-format):
Carsten Dominik <dominik@science.uva.nl>
parents:
27603
diff
changeset
|
329 (unless (file-exists-p file) |
88155 | 330 (ding) |
331 (or (y-or-n-p (format "No such file %s. Continue? " file)) | |
332 (error "Abort"))) | |
29775
31536c6cf2e3
* textmodes/reftex.el (reftex-find-citation-regexp-format):
Carsten Dominik <dominik@science.uva.nl>
parents:
27603
diff
changeset
|
333 (unless (file-writable-p file) |
88155 | 334 (ding) |
335 (or (y-or-n-p (format "No write access to %s. Continue? " file)) | |
336 (error "Abort"))) | |
29775
31536c6cf2e3
* textmodes/reftex.el (reftex-find-citation-regexp-format):
Carsten Dominik <dominik@science.uva.nl>
parents:
27603
diff
changeset
|
337 (when (and (setq buf (reftex-get-buffer-visiting file)) |
88155 | 338 (save-excursion |
339 (set-buffer buf) | |
340 buffer-read-only)) | |
341 (ding) | |
342 (or (y-or-n-p (format "Buffer %s is read-only. Continue? " | |
343 (buffer-name buf))) | |
344 (error "Abort")))))) | |
345 | |
346 (defun reftex-isearch-wrap-function () | |
347 (if (not isearch-word) | |
348 (switch-to-buffer | |
349 (funcall isearch-next-buffer-function (current-buffer) t))) | |
350 (goto-char (if isearch-forward (point-min) (point-max)))) | |
351 | |
352 (defun reftex-isearch-push-state-function () | |
353 `(lambda (cmd) | |
354 (reftex-isearch-pop-state-function cmd ,(current-buffer)))) | |
355 | |
356 (defun reftex-isearch-pop-state-function (cmd buffer) | |
357 (switch-to-buffer buffer)) | |
358 | |
359 (defun reftex-isearch-isearch-search (string bound noerror) | |
360 (let ((nxt-buff nil) | |
361 (search-fun | |
362 (cond | |
363 (isearch-word | |
364 (if isearch-forward 'word-search-forward 'word-search-backward)) | |
365 (isearch-regexp | |
366 (if isearch-forward 're-search-forward 're-search-backward)) | |
367 (t | |
368 (if isearch-forward 'search-forward 'search-backward))))) | |
369 (or | |
370 (funcall search-fun string bound noerror) | |
371 (unless bound | |
372 (condition-case nil | |
373 (when isearch-next-buffer-function | |
374 (while (not (funcall search-fun string bound noerror)) | |
375 (cond | |
376 (isearch-forward | |
377 (setq nxt-buff | |
378 (funcall isearch-next-buffer-function | |
379 (current-buffer))) | |
380 (if (not nxt-buff) | |
381 (progn | |
382 (error "Wrap forward")) | |
383 (switch-to-buffer nxt-buff) | |
384 (goto-char (point-min)))) | |
385 (t | |
386 (setq nxt-buff | |
387 (funcall isearch-next-buffer-function | |
388 (current-buffer))) | |
389 (if (not nxt-buff) | |
390 (progn | |
391 (error "Wrap backward")) | |
392 (switch-to-buffer nxt-buff) | |
393 (goto-char (point-max)))))) | |
394 (point)) | |
395 (error nil)))))) | |
25280 | 396 |
88155 | 397 ;;; This function is called when isearch reaches the end of a |
398 ;;; buffer. For reftex what we want to do is not wrap to the | |
399 ;;; beginning, but switch to the next buffer in the logical order of | |
400 ;;; the document. This function looks through list of files in the | |
401 ;;; document (reftex-all-document-files), searches for the current | |
402 ;;; buffer and switches to the next/previous one in the logical order | |
403 ;;; of the document. If WRAPP is true then wrap the search to the | |
404 ;;; beginning/end of the file list, depending of the search direction. | |
405 (defun reftex-isearch-switch-to-next-file (crt-buf &optional wrapp) | |
406 (reftex-access-scan-info) | |
407 (let* ((cb (buffer-file-name crt-buf)) | |
408 (flist (reftex-all-document-files)) | |
409 (orig-flist flist)) | |
410 (when flist | |
411 (if wrapp | |
412 (unless isearch-forward | |
413 (setq flist (last flist))) | |
414 (unless isearch-forward | |
415 (setq flist (nreverse (copy-list flist))) | |
416 (setq orig-flist flist)) | |
417 (while (not (string= (car flist) cb)) | |
418 (setq flist (cdr flist))) | |
419 (setq flist (cdr flist))) | |
420 (when flist | |
421 (find-file (car flist)))))) | |
422 | |
423 ;;;###autoload | |
424 (defun reftex-isearch-minor-mode (&optional arg) | |
425 "When on, isearch searches the whole document, not only the current file. | |
426 This minor mode allows isearch to search through all the files of | |
427 the current TeX document. | |
428 | |
429 With no argument, this command toggles | |
430 `reftex-isearch-minor-mode'. With a prefix argument ARG, turn | |
431 `reftex-isearch-minor-mode' on iff ARG is positive." | |
432 (interactive "P") | |
433 (let ((old-reftex-isearch-minor-mode reftex-isearch-minor-mode)) | |
434 (setq reftex-isearch-minor-mode | |
435 (not (or (and (null arg) reftex-isearch-minor-mode) | |
436 (<= (prefix-numeric-value arg) 0)))) | |
437 (unless (eq reftex-isearch-minor-mode old-reftex-isearch-minor-mode) | |
438 (if reftex-isearch-minor-mode | |
439 (progn | |
440 (dolist (crt-buf (buffer-list)) | |
441 (with-current-buffer crt-buf | |
442 (when reftex-mode | |
443 (set (make-local-variable 'isearch-wrap-function) | |
444 'reftex-isearch-wrap-function) | |
445 (set (make-local-variable 'isearch-search-fun-function) | |
446 (lambda () 'reftex-isearch-isearch-search)) | |
447 (set (make-local-variable 'isearch-push-state-function) | |
448 'reftex-isearch-push-state-function) | |
449 (set (make-local-variable 'isearch-next-buffer-function) | |
450 'reftex-isearch-switch-to-next-file) | |
451 (setq reftex-isearch-minor-mode t)))) | |
452 (add-hook 'reftex-mode-hook 'reftex-isearch-minor-mode)) | |
453 (dolist (crt-buf (buffer-list)) | |
454 (with-current-buffer crt-buf | |
455 (when reftex-mode | |
456 (kill-local-variable 'isearch-wrap-function) | |
457 (kill-local-variable 'isearch-search-fun-function) | |
458 (kill-local-variable 'isearch-push-state-function) | |
459 (kill-local-variable 'isearch-next-buffer-function) | |
460 (setq reftex-isearch-minor-mode nil)))) | |
461 (remove-hook 'reftex-mode-hook 'reftex-isearch-minor-mode))) | |
462 ;; Force modeline redisplay. | |
463 (set-buffer-modified-p (buffer-modified-p)))) | |
464 | |
465 (add-minor-mode 'reftex-isearch-minor-mode "/I" nil nil | |
466 'reftex-isearch-minor-mode) | |
467 | |
468 ;;; arch-tag: 2dbf7633-92c8-4340-8656-7aa019d0f80d | |
25280 | 469 ;;; reftex-global.el ends here |