annotate lisp/textmodes/reftex-dcr.el @ 110410:f2e111723c3a

Merge changes made in Gnus trunk. Reimplement nnimap, and do tweaks to the rest of the code to support that. * gnus-int.el (gnus-finish-retrieve-group-infos) (gnus-retrieve-group-data-early): New functions. * gnus-range.el (gnus-range-nconcat): New function. * gnus-start.el (gnus-get-unread-articles): Support early retrieval of data. (gnus-read-active-for-groups): Support finishing the early retrieval of data. * gnus-sum.el (gnus-summary-move-article): Pass the move-to group name if the move is internal, so that nnimap can do fast internal moves. * gnus.el (gnus-article-special-mark-lists): Add uid/active tuples, for nnimap usage. * nnimap.el: Rewritten. * nnmail.el (nnmail-inhibit-default-split-group): New internal variable to allow the mail splitting to not return a default group. This is useful for nnimap, which will leave unmatched mail in the inbox. * utf7.el (utf7-encode): Autoload. Implement shell connection. * nnimap.el (nnimap-open-shell-stream): New function. (nnimap-open-connection): Use it. Get the number of lines by using BODYSTRUCTURE. (nnimap-transform-headers): Get the number of lines in each message. (nnimap-retrieve-headers): Query for BODYSTRUCTURE so that we get the number of lines. Not all servers return UIDNEXT. Work past this problem. Remove junk from end of file. Fix typo in "bogus" section. Make capabilties be case-insensitive. Require cl when compiling. Don't bug out if the LIST command doesn't have any parameters. 2010-09-17 Knut Anders Hatlen <kahatlen@gmail.com> (tiny change) * nnimap.el (nnimap-get-groups): Don't bug out if the LIST command doesn't have any parameters. (mm-text-html-renderer): Document gnus-article-html. 2010-09-17 Julien Danjou <julien@danjou.info> (tiny fix) * mm-decode.el (mm-text-html-renderer): Document gnus-article-html. * dgnushack.el: Define netrc-credentials. If the user doesn't have a /etc/services, supply some sensible port defaults. Have `unseen-or-unread' select an unread unseen article first. (nntp-open-server): Return whether the open was successful or not. Throughout all files, replace (save-excursion (set-buffer ...)) with (with-current-buffer ... ). Save result so that it doesn't say "failed" all the time. Add ~/.authinfo to the default, since that's probably most useful for users. Don't use the "finish" method when we're reading from the agent. Add some more nnimap-relevant agent stuff to nnagent.el. * nnimap.el (nnimap-with-process-buffer): Removed. Revert one line that was changed by mistake in the last checkin. (nnimap-open-connection): Don't error out when we can't make a connection nnimap-related changes to avoid bugging out if we can't contact a server. * gnus-start.el (gnus-get-unread-articles): Don't try to scan groups from methods that are denied. * nnimap.el (nnimap-possibly-change-group): Return nil if we can't log in. (nnimap-finish-retrieve-group-infos): Make sure we're not waiting for nothing. * gnus-sum.el (gnus-select-newsgroup): Indent.
author Katsumi Yamaoka <yamaoka@jpl.org>
date Sat, 18 Sep 2010 10:02:19 +0000
parents 280c8ae2476d
children 417b1e4d63cd
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
38422
7a94f1c588c4 Some fixes to follow coding conventions.
Pavel Janík <Pavel@Janik.cz>
parents: 37998
diff changeset
1 ;;; reftex-dcr.el --- viewing cross references and citations with RefTeX
74506
7f5b7fa0f836 Update copyright years.
Glenn Morris <rgm@gnu.org>
parents: 69094
diff changeset
2
74507
1753078e0ea2 Fix previous change.
Glenn Morris <rgm@gnu.org>
parents: 74506
diff changeset
3 ;; Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
106815
1d1d5d9bd884 Add 2010 to copyright years.
Glenn Morris <rgm@gnu.org>
parents: 105813
diff changeset
4 ;; 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
27170
3cba3e588544 renamed reftex-vcr.el to reftex-dcr.el
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
5
46612
7522419c4db0 Updated to reftex 4.17
Carsten Dominik <dominik@science.uva.nl>
parents: 38422
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
110015
280c8ae2476d Add "Package:" file headers to denote built-in packages.
Chong Yidong <cyd@stupidchicken.com>
parents: 106815
diff changeset
9 ;; Package: reftex
27170
3cba3e588544 renamed reftex-vcr.el to reftex-dcr.el
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
10
3cba3e588544 renamed reftex-vcr.el to reftex-dcr.el
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
11 ;; This file is part of GNU Emacs.
3cba3e588544 renamed reftex-vcr.el to reftex-dcr.el
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
12
94670
f4a69fedbd46 Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 93975
diff changeset
13 ;; GNU Emacs is free software: you can redistribute it and/or modify
27170
3cba3e588544 renamed reftex-vcr.el to reftex-dcr.el
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
14 ;; 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: 93975
diff changeset
15 ;; 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: 93975
diff changeset
16 ;; (at your option) any later version.
27170
3cba3e588544 renamed reftex-vcr.el to reftex-dcr.el
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
17
3cba3e588544 renamed reftex-vcr.el to reftex-dcr.el
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
18 ;; GNU Emacs is distributed in the hope that it will be useful,
3cba3e588544 renamed reftex-vcr.el to reftex-dcr.el
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
19 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of
3cba3e588544 renamed reftex-vcr.el to reftex-dcr.el
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
20 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
3cba3e588544 renamed reftex-vcr.el to reftex-dcr.el
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
21 ;; GNU General Public License for more details.
3cba3e588544 renamed reftex-vcr.el to reftex-dcr.el
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
22
3cba3e588544 renamed reftex-vcr.el to reftex-dcr.el
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
23 ;; 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: 93975
diff changeset
24 ;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
27170
3cba3e588544 renamed reftex-vcr.el to reftex-dcr.el
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
25
38422
7a94f1c588c4 Some fixes to follow coding conventions.
Pavel Janík <Pavel@Janik.cz>
parents: 37998
diff changeset
26 ;;; Commentary:
7a94f1c588c4 Some fixes to follow coding conventions.
Pavel Janík <Pavel@Janik.cz>
parents: 37998
diff changeset
27
7a94f1c588c4 Some fixes to follow coding conventions.
Pavel Janík <Pavel@Janik.cz>
parents: 37998
diff changeset
28 ;;; Code:
7a94f1c588c4 Some fixes to follow coding conventions.
Pavel Janík <Pavel@Janik.cz>
parents: 37998
diff changeset
29
27170
3cba3e588544 renamed reftex-vcr.el to reftex-dcr.el
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
30 (eval-when-compile (require 'cl))
27192
f70a80cecdd3 New version number.
Carsten Dominik <dominik@science.uva.nl>
parents: 27170
diff changeset
31 (provide 'reftex-dcr)
27170
3cba3e588544 renamed reftex-vcr.el to reftex-dcr.el
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
32 (provide 'reftex-vcr)
3cba3e588544 renamed reftex-vcr.el to reftex-dcr.el
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
33 (require 'reftex)
3cba3e588544 renamed reftex-vcr.el to reftex-dcr.el
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
34 ;;;
3cba3e588544 renamed reftex-vcr.el to reftex-dcr.el
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
35
69094
bfd5c5e60410 Version number change only
Carsten Dominik <dominik@science.uva.nl>
parents: 68648
diff changeset
36 (defun reftex-view-crossref (&optional arg auto-how fail-quietly)
27170
3cba3e588544 renamed reftex-vcr.el to reftex-dcr.el
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
37 "View cross reference of macro at point. Point must be on the KEY
36877
701567828afa (reftex-view-crossref): Doc fix.
Andreas Schwab <schwab@suse.de>
parents: 34707
diff changeset
38 argument. When at at `\\ref' macro, show corresponding `\\label'
27170
3cba3e588544 renamed reftex-vcr.el to reftex-dcr.el
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
39 definition, also in external documents (`xr'). When on a label, show
3cba3e588544 renamed reftex-vcr.el to reftex-dcr.el
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
40 a locations where KEY is referenced. Subsequent calls find additional
36877
701567828afa (reftex-view-crossref): Doc fix.
Andreas Schwab <schwab@suse.de>
parents: 34707
diff changeset
41 locations. When on a `\\cite', show the associated `\\bibitem' macro or
701567828afa (reftex-view-crossref): Doc fix.
Andreas Schwab <schwab@suse.de>
parents: 34707
diff changeset
42 the BibTeX database entry. When on a `\\bibitem', show a `\\cite' macro
701567828afa (reftex-view-crossref): Doc fix.
Andreas Schwab <schwab@suse.de>
parents: 34707
diff changeset
43 which uses this KEY. When on an `\\index', show other locations marked
27170
3cba3e588544 renamed reftex-vcr.el to reftex-dcr.el
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
44 by the same index entry.
3cba3e588544 renamed reftex-vcr.el to reftex-dcr.el
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
45 To define additional cross referencing items, use the option
3cba3e588544 renamed reftex-vcr.el to reftex-dcr.el
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
46 `reftex-view-crossref-extra'. See also `reftex-view-crossref-from-bibtex'.
3cba3e588544 renamed reftex-vcr.el to reftex-dcr.el
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
47 With one or two C-u prefixes, enforce rescanning of the document.
3cba3e588544 renamed reftex-vcr.el to reftex-dcr.el
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
48 With argument 2, select the window showing the cross reference.
3cba3e588544 renamed reftex-vcr.el to reftex-dcr.el
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
49 AUTO-HOW is only for the automatic crossref display and is handed through
3cba3e588544 renamed reftex-vcr.el to reftex-dcr.el
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
50 to the functions `reftex-view-cr-cite' and `reftex-view-cr-ref'."
3cba3e588544 renamed reftex-vcr.el to reftex-dcr.el
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
51
3cba3e588544 renamed reftex-vcr.el to reftex-dcr.el
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
52 (interactive "P")
3cba3e588544 renamed reftex-vcr.el to reftex-dcr.el
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
53 ;; See where we are.
3cba3e588544 renamed reftex-vcr.el to reftex-dcr.el
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
54 (let* ((macro (car (reftex-what-macro-safe 1)))
34707
315a42c87d8d (reftex-view-crossref): added SPACE and TAB as key separators.
Carsten Dominik <dominik@science.uva.nl>
parents: 34402
diff changeset
55 (key (reftex-this-word "^{}%\n\r, \t"))
52170
27340819ef07 Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents: 49599
diff changeset
56 dw)
27170
3cba3e588544 renamed reftex-vcr.el to reftex-dcr.el
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
57
3cba3e588544 renamed reftex-vcr.el to reftex-dcr.el
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
58 (if (or (null macro) (reftex-in-comment))
69094
bfd5c5e60410 Version number change only
Carsten Dominik <dominik@science.uva.nl>
parents: 68648
diff changeset
59 (or fail-quietly
bfd5c5e60410 Version number change only
Carsten Dominik <dominik@science.uva.nl>
parents: 68648
diff changeset
60 (error "Not on a crossref macro argument"))
27170
3cba3e588544 renamed reftex-vcr.el to reftex-dcr.el
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
61
69094
bfd5c5e60410 Version number change only
Carsten Dominik <dominik@science.uva.nl>
parents: 68648
diff changeset
62 (setq reftex-call-back-to-this-buffer (current-buffer))
bfd5c5e60410 Version number change only
Carsten Dominik <dominik@science.uva.nl>
parents: 68648
diff changeset
63
bfd5c5e60410 Version number change only
Carsten Dominik <dominik@science.uva.nl>
parents: 68648
diff changeset
64 (cond
bfd5c5e60410 Version number change only
Carsten Dominik <dominik@science.uva.nl>
parents: 68648
diff changeset
65 ((string-match "\\`\\\\cite\\|cite\\*?\\'\\|bibentry" macro)
bfd5c5e60410 Version number change only
Carsten Dominik <dominik@science.uva.nl>
parents: 68648
diff changeset
66 ;; A citation macro: search for bibitems or BibTeX entries
bfd5c5e60410 Version number change only
Carsten Dominik <dominik@science.uva.nl>
parents: 68648
diff changeset
67 (setq dw (reftex-view-cr-cite arg key auto-how)))
bfd5c5e60410 Version number change only
Carsten Dominik <dominik@science.uva.nl>
parents: 68648
diff changeset
68 ((string-match "\\`\\\\ref\\|ref\\(range\\)?\\*?\\'" macro)
bfd5c5e60410 Version number change only
Carsten Dominik <dominik@science.uva.nl>
parents: 68648
diff changeset
69 ;; A reference macro: search for labels
bfd5c5e60410 Version number change only
Carsten Dominik <dominik@science.uva.nl>
parents: 68648
diff changeset
70 (setq dw (reftex-view-cr-ref arg key auto-how)))
bfd5c5e60410 Version number change only
Carsten Dominik <dominik@science.uva.nl>
parents: 68648
diff changeset
71 (auto-how nil) ;; No further action for automatic display (speed)
bfd5c5e60410 Version number change only
Carsten Dominik <dominik@science.uva.nl>
parents: 68648
diff changeset
72 ((or (equal macro "\\label")
bfd5c5e60410 Version number change only
Carsten Dominik <dominik@science.uva.nl>
parents: 68648
diff changeset
73 (member macro reftex-macros-with-labels))
bfd5c5e60410 Version number change only
Carsten Dominik <dominik@science.uva.nl>
parents: 68648
diff changeset
74 ;; A label macro: search for reference macros
bfd5c5e60410 Version number change only
Carsten Dominik <dominik@science.uva.nl>
parents: 68648
diff changeset
75 (reftex-access-scan-info arg)
bfd5c5e60410 Version number change only
Carsten Dominik <dominik@science.uva.nl>
parents: 68648
diff changeset
76 (setq dw (reftex-view-regexp-match
bfd5c5e60410 Version number change only
Carsten Dominik <dominik@science.uva.nl>
parents: 68648
diff changeset
77 (format reftex-find-reference-format (regexp-quote key))
bfd5c5e60410 Version number change only
Carsten Dominik <dominik@science.uva.nl>
parents: 68648
diff changeset
78 4 nil nil)))
bfd5c5e60410 Version number change only
Carsten Dominik <dominik@science.uva.nl>
parents: 68648
diff changeset
79 ((equal macro "\\bibitem")
bfd5c5e60410 Version number change only
Carsten Dominik <dominik@science.uva.nl>
parents: 68648
diff changeset
80 ;; A bibitem macro: search for citations
bfd5c5e60410 Version number change only
Carsten Dominik <dominik@science.uva.nl>
parents: 68648
diff changeset
81 (reftex-access-scan-info arg)
bfd5c5e60410 Version number change only
Carsten Dominik <dominik@science.uva.nl>
parents: 68648
diff changeset
82 (setq dw (reftex-view-regexp-match
bfd5c5e60410 Version number change only
Carsten Dominik <dominik@science.uva.nl>
parents: 68648
diff changeset
83 (format reftex-find-citation-regexp-format (regexp-quote key))
bfd5c5e60410 Version number change only
Carsten Dominik <dominik@science.uva.nl>
parents: 68648
diff changeset
84 4 nil nil)))
bfd5c5e60410 Version number change only
Carsten Dominik <dominik@science.uva.nl>
parents: 68648
diff changeset
85 ((member macro reftex-macros-with-index)
bfd5c5e60410 Version number change only
Carsten Dominik <dominik@science.uva.nl>
parents: 68648
diff changeset
86 (reftex-access-scan-info arg)
bfd5c5e60410 Version number change only
Carsten Dominik <dominik@science.uva.nl>
parents: 68648
diff changeset
87 (setq dw (reftex-view-regexp-match
bfd5c5e60410 Version number change only
Carsten Dominik <dominik@science.uva.nl>
parents: 68648
diff changeset
88 (format reftex-find-index-entry-regexp-format
bfd5c5e60410 Version number change only
Carsten Dominik <dominik@science.uva.nl>
parents: 68648
diff changeset
89 (regexp-quote key))
bfd5c5e60410 Version number change only
Carsten Dominik <dominik@science.uva.nl>
parents: 68648
diff changeset
90 3 nil nil)))
bfd5c5e60410 Version number change only
Carsten Dominik <dominik@science.uva.nl>
parents: 68648
diff changeset
91 (t
bfd5c5e60410 Version number change only
Carsten Dominik <dominik@science.uva.nl>
parents: 68648
diff changeset
92 (reftex-access-scan-info arg)
bfd5c5e60410 Version number change only
Carsten Dominik <dominik@science.uva.nl>
parents: 68648
diff changeset
93 (catch 'exit
bfd5c5e60410 Version number change only
Carsten Dominik <dominik@science.uva.nl>
parents: 68648
diff changeset
94 (let ((list reftex-view-crossref-extra)
bfd5c5e60410 Version number change only
Carsten Dominik <dominik@science.uva.nl>
parents: 68648
diff changeset
95 entry mre action group)
bfd5c5e60410 Version number change only
Carsten Dominik <dominik@science.uva.nl>
parents: 68648
diff changeset
96 (while (setq entry (pop list))
bfd5c5e60410 Version number change only
Carsten Dominik <dominik@science.uva.nl>
parents: 68648
diff changeset
97 (setq mre (car entry)
bfd5c5e60410 Version number change only
Carsten Dominik <dominik@science.uva.nl>
parents: 68648
diff changeset
98 action (nth 1 entry)
bfd5c5e60410 Version number change only
Carsten Dominik <dominik@science.uva.nl>
parents: 68648
diff changeset
99 group (nth 2 entry))
bfd5c5e60410 Version number change only
Carsten Dominik <dominik@science.uva.nl>
parents: 68648
diff changeset
100 (when (string-match mre macro)
bfd5c5e60410 Version number change only
Carsten Dominik <dominik@science.uva.nl>
parents: 68648
diff changeset
101 (setq dw (reftex-view-regexp-match
bfd5c5e60410 Version number change only
Carsten Dominik <dominik@science.uva.nl>
parents: 68648
diff changeset
102 (format action key) group nil nil))
bfd5c5e60410 Version number change only
Carsten Dominik <dominik@science.uva.nl>
parents: 68648
diff changeset
103 (throw 'exit t))))
bfd5c5e60410 Version number change only
Carsten Dominik <dominik@science.uva.nl>
parents: 68648
diff changeset
104 (error "Not on a crossref macro argument"))))
bfd5c5e60410 Version number change only
Carsten Dominik <dominik@science.uva.nl>
parents: 68648
diff changeset
105 (if (and (eq arg 2) (windowp dw)) (select-window dw)))))
52170
27340819ef07 Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents: 49599
diff changeset
106
27170
3cba3e588544 renamed reftex-vcr.el to reftex-dcr.el
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
107 (defun reftex-view-cr-cite (arg key how)
52170
27340819ef07 Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents: 49599
diff changeset
108 ;; View crossreference of a ref cite. HOW can have the values
27170
3cba3e588544 renamed reftex-vcr.el to reftex-dcr.el
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
109 ;; nil: Show in another window.
3cba3e588544 renamed reftex-vcr.el to reftex-dcr.el
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
110 ;; echo: Show one-line info in echo area.
3cba3e588544 renamed reftex-vcr.el to reftex-dcr.el
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
111 ;; tmp-window: Show in small window and arrange for window to disappear.
3cba3e588544 renamed reftex-vcr.el to reftex-dcr.el
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
112
3cba3e588544 renamed reftex-vcr.el to reftex-dcr.el
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
113 ;; Ensure access to scanning info
3cba3e588544 renamed reftex-vcr.el to reftex-dcr.el
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
114 (reftex-access-scan-info (or arg current-prefix-arg))
3cba3e588544 renamed reftex-vcr.el to reftex-dcr.el
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
115
3cba3e588544 renamed reftex-vcr.el to reftex-dcr.el
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
116 (if (eq how 'tmp-window)
3cba3e588544 renamed reftex-vcr.el to reftex-dcr.el
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
117 ;; Remember the window configuration
52170
27340819ef07 Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents: 49599
diff changeset
118 (put 'reftex-auto-view-crossref 'last-window-conf
27340819ef07 Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents: 49599
diff changeset
119 (current-window-configuration)))
27170
3cba3e588544 renamed reftex-vcr.el to reftex-dcr.el
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
120
46973
11e08f9901ea Update to RefTeX 4.18
Carsten Dominik <dominik@science.uva.nl>
parents: 46683
diff changeset
121 (let (files size item (pos (point)) (win (selected-window)) pop-win
52170
27340819ef07 Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents: 49599
diff changeset
122 (bibtype (reftex-bib-or-thebib)))
27170
3cba3e588544 renamed reftex-vcr.el to reftex-dcr.el
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
123 ;; Find the citation mode and the file list
3cba3e588544 renamed reftex-vcr.el to reftex-dcr.el
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
124 (cond
46973
11e08f9901ea Update to RefTeX 4.18
Carsten Dominik <dominik@science.uva.nl>
parents: 46683
diff changeset
125 ; ((assq 'bib (symbol-value reftex-docstruct-symbol))
11e08f9901ea Update to RefTeX 4.18
Carsten Dominik <dominik@science.uva.nl>
parents: 46683
diff changeset
126 ((eq bibtype 'bib)
27170
3cba3e588544 renamed reftex-vcr.el to reftex-dcr.el
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
127 (setq item nil
52170
27340819ef07 Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents: 49599
diff changeset
128 files (reftex-get-bibfile-list)))
46973
11e08f9901ea Update to RefTeX 4.18
Carsten Dominik <dominik@science.uva.nl>
parents: 46683
diff changeset
129 ; ((assq 'thebib (symbol-value reftex-docstruct-symbol))
11e08f9901ea Update to RefTeX 4.18
Carsten Dominik <dominik@science.uva.nl>
parents: 46683
diff changeset
130 ((eq bibtype 'thebib)
27170
3cba3e588544 renamed reftex-vcr.el to reftex-dcr.el
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
131 (setq item t
52170
27340819ef07 Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents: 49599
diff changeset
132 files (reftex-uniquify
27340819ef07 Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents: 49599
diff changeset
133 (mapcar 'cdr
27340819ef07 Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents: 49599
diff changeset
134 (reftex-all-assq
27340819ef07 Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents: 49599
diff changeset
135 'thebib (symbol-value reftex-docstruct-symbol))))))
27170
3cba3e588544 renamed reftex-vcr.el to reftex-dcr.el
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
136 (reftex-default-bibliography
3cba3e588544 renamed reftex-vcr.el to reftex-dcr.el
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
137 (setq item nil
52170
27340819ef07 Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents: 49599
diff changeset
138 files (reftex-default-bibliography)))
27170
3cba3e588544 renamed reftex-vcr.el to reftex-dcr.el
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
139 (how) ;; don't throw for special display
3cba3e588544 renamed reftex-vcr.el to reftex-dcr.el
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
140 (t (error "Cannot display crossref")))
3cba3e588544 renamed reftex-vcr.el to reftex-dcr.el
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
141
3cba3e588544 renamed reftex-vcr.el to reftex-dcr.el
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
142 (if (eq how 'echo)
52170
27340819ef07 Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents: 49599
diff changeset
143 ;; Display in Echo area
27340819ef07 Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents: 49599
diff changeset
144 (reftex-echo-cite key files item)
27170
3cba3e588544 renamed reftex-vcr.el to reftex-dcr.el
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
145 ;; Display in a window
3cba3e588544 renamed reftex-vcr.el to reftex-dcr.el
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
146 (if (not (eq how 'tmp-window))
52170
27340819ef07 Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents: 49599
diff changeset
147 ;; Normal display
27340819ef07 Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents: 49599
diff changeset
148 (reftex-pop-to-bibtex-entry key files nil t item)
27340819ef07 Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents: 49599
diff changeset
149 ;; A temporary window
27340819ef07 Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents: 49599
diff changeset
150 (condition-case nil
27340819ef07 Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents: 49599
diff changeset
151 (reftex-pop-to-bibtex-entry key files nil t item)
27340819ef07 Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents: 49599
diff changeset
152 (error (goto-char pos)
27340819ef07 Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents: 49599
diff changeset
153 (message "cite: no such citation key %s" key)
27340819ef07 Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents: 49599
diff changeset
154 (error "")))
27340819ef07 Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents: 49599
diff changeset
155 ;; Resize the window
27340819ef07 Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents: 49599
diff changeset
156 (setq size (max 1 (count-lines (point)
27340819ef07 Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents: 49599
diff changeset
157 (reftex-end-of-bib-entry item))))
27340819ef07 Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents: 49599
diff changeset
158 (let ((window-min-height 2))
27340819ef07 Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents: 49599
diff changeset
159 (shrink-window (1- (- (window-height) size)))
27340819ef07 Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents: 49599
diff changeset
160 (recenter 0))
27340819ef07 Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents: 49599
diff changeset
161 ;; Arrange restoration
27340819ef07 Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents: 49599
diff changeset
162 (add-hook 'pre-command-hook 'reftex-restore-window-conf))
27170
3cba3e588544 renamed reftex-vcr.el to reftex-dcr.el
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
163
52170
27340819ef07 Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents: 49599
diff changeset
164 ;; Normal display in other window
27170
3cba3e588544 renamed reftex-vcr.el to reftex-dcr.el
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
165 (add-hook 'pre-command-hook 'reftex-highlight-shall-die)
3cba3e588544 renamed reftex-vcr.el to reftex-dcr.el
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
166 (setq pop-win (selected-window))
3cba3e588544 renamed reftex-vcr.el to reftex-dcr.el
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
167 (select-window win)
3cba3e588544 renamed reftex-vcr.el to reftex-dcr.el
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
168 (goto-char pos)
3cba3e588544 renamed reftex-vcr.el to reftex-dcr.el
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
169 (when (equal arg 2)
52170
27340819ef07 Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents: 49599
diff changeset
170 (select-window pop-win)))))
27170
3cba3e588544 renamed reftex-vcr.el to reftex-dcr.el
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
171
3cba3e588544 renamed reftex-vcr.el to reftex-dcr.el
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
172 (defun reftex-view-cr-ref (arg label how)
52170
27340819ef07 Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents: 49599
diff changeset
173 ;; View crossreference of a ref macro. HOW can have the values
27170
3cba3e588544 renamed reftex-vcr.el to reftex-dcr.el
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
174 ;; nil: Show in another window.
3cba3e588544 renamed reftex-vcr.el to reftex-dcr.el
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
175 ;; echo: Show one-line info in echo area.
3cba3e588544 renamed reftex-vcr.el to reftex-dcr.el
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
176 ;; tmp-window: Show in small window and arrange for window to disappear.
3cba3e588544 renamed reftex-vcr.el to reftex-dcr.el
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
177
3cba3e588544 renamed reftex-vcr.el to reftex-dcr.el
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
178 ;; Ensure access to scanning info
3cba3e588544 renamed reftex-vcr.el to reftex-dcr.el
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
179 (reftex-access-scan-info (or arg current-prefix-arg))
52170
27340819ef07 Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents: 49599
diff changeset
180
27170
3cba3e588544 renamed reftex-vcr.el to reftex-dcr.el
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
181 (if (eq how 'tmp-window)
3cba3e588544 renamed reftex-vcr.el to reftex-dcr.el
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
182 ;; Remember the window configuration
52170
27340819ef07 Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents: 49599
diff changeset
183 (put 'reftex-auto-view-crossref 'last-window-conf
27340819ef07 Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents: 49599
diff changeset
184 (current-window-configuration)))
27170
3cba3e588544 renamed reftex-vcr.el to reftex-dcr.el
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
185
3cba3e588544 renamed reftex-vcr.el to reftex-dcr.el
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
186 (let* ((xr-data (assoc 'xr (symbol-value reftex-docstruct-symbol)))
52170
27340819ef07 Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents: 49599
diff changeset
187 (xr-re (nth 2 xr-data))
27340819ef07 Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents: 49599
diff changeset
188 (entry (assoc label (symbol-value reftex-docstruct-symbol)))
27340819ef07 Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents: 49599
diff changeset
189 (win (selected-window)) pop-win (pos (point)))
27170
3cba3e588544 renamed reftex-vcr.el to reftex-dcr.el
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
190
3cba3e588544 renamed reftex-vcr.el to reftex-dcr.el
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
191 (if (and (not entry) (stringp label) xr-re (string-match xr-re label))
52170
27340819ef07 Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents: 49599
diff changeset
192 ;; Label is defined in external document
27340819ef07 Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents: 49599
diff changeset
193 (save-excursion
27340819ef07 Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents: 49599
diff changeset
194 (save-match-data
27340819ef07 Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents: 49599
diff changeset
195 (set-buffer
27340819ef07 Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents: 49599
diff changeset
196 (or (reftex-get-file-buffer-force
27340819ef07 Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents: 49599
diff changeset
197 (cdr (assoc (match-string 1 label) (nth 1
27340819ef07 Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents: 49599
diff changeset
198 xr-data))))
27340819ef07 Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents: 49599
diff changeset
199 (error "Problem with external label %s" label))))
27340819ef07 Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents: 49599
diff changeset
200 (setq label (substring label (match-end 1)))
27340819ef07 Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents: 49599
diff changeset
201 (reftex-access-scan-info)
27340819ef07 Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents: 49599
diff changeset
202 (setq entry
27340819ef07 Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents: 49599
diff changeset
203 (assoc label (symbol-value reftex-docstruct-symbol)))))
27170
3cba3e588544 renamed reftex-vcr.el to reftex-dcr.el
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
204 (if (eq how 'echo)
52170
27340819ef07 Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents: 49599
diff changeset
205 ;; Display in echo area
27340819ef07 Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents: 49599
diff changeset
206 (reftex-echo-ref label entry (symbol-value reftex-docstruct-symbol))
27170
3cba3e588544 renamed reftex-vcr.el to reftex-dcr.el
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
207 (let ((window-conf (current-window-configuration)))
52170
27340819ef07 Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents: 49599
diff changeset
208 (condition-case nil
27340819ef07 Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents: 49599
diff changeset
209 (reftex-show-label-location entry t nil t t)
27340819ef07 Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents: 49599
diff changeset
210 (error (set-window-configuration window-conf)
27340819ef07 Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents: 49599
diff changeset
211 (message "ref: Label %s not found" label)
27340819ef07 Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents: 49599
diff changeset
212 (error "ref: Label %s not found" label)))) ;; 2nd is line OK
27170
3cba3e588544 renamed reftex-vcr.el to reftex-dcr.el
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
213 (add-hook 'pre-command-hook 'reftex-highlight-shall-die)
3cba3e588544 renamed reftex-vcr.el to reftex-dcr.el
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
214
3cba3e588544 renamed reftex-vcr.el to reftex-dcr.el
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
215 (when (eq how 'tmp-window)
52170
27340819ef07 Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents: 49599
diff changeset
216 ;; Resize window and arrange restauration
27340819ef07 Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents: 49599
diff changeset
217 (shrink-window (1- (- (window-height) 9)))
27340819ef07 Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents: 49599
diff changeset
218 (recenter '(4))
27340819ef07 Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents: 49599
diff changeset
219 (add-hook 'pre-command-hook 'reftex-restore-window-conf))
27170
3cba3e588544 renamed reftex-vcr.el to reftex-dcr.el
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
220 (setq pop-win (selected-window))
3cba3e588544 renamed reftex-vcr.el to reftex-dcr.el
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
221 (select-window win)
3cba3e588544 renamed reftex-vcr.el to reftex-dcr.el
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
222 (goto-char pos)
3cba3e588544 renamed reftex-vcr.el to reftex-dcr.el
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
223 (when (equal arg 2)
52170
27340819ef07 Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents: 49599
diff changeset
224 (select-window pop-win)))))
27170
3cba3e588544 renamed reftex-vcr.el to reftex-dcr.el
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
225
3cba3e588544 renamed reftex-vcr.el to reftex-dcr.el
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
226 (defun reftex-mouse-view-crossref (ev)
3cba3e588544 renamed reftex-vcr.el to reftex-dcr.el
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
227 "View cross reference of \\ref or \\cite macro where you click.
3cba3e588544 renamed reftex-vcr.el to reftex-dcr.el
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
228 If the macro at point is a \\ref, show the corresponding label definition.
3cba3e588544 renamed reftex-vcr.el to reftex-dcr.el
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
229 If it is a \\cite, show the BibTeX database entry.
3cba3e588544 renamed reftex-vcr.el to reftex-dcr.el
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
230 If there is no such macro at point, search forward to find one.
3cba3e588544 renamed reftex-vcr.el to reftex-dcr.el
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
231 With argument, actually select the window showing the cross reference."
3cba3e588544 renamed reftex-vcr.el to reftex-dcr.el
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
232 (interactive "e")
3cba3e588544 renamed reftex-vcr.el to reftex-dcr.el
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
233 (mouse-set-point ev)
3cba3e588544 renamed reftex-vcr.el to reftex-dcr.el
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
234 (reftex-view-crossref current-prefix-arg))
3cba3e588544 renamed reftex-vcr.el to reftex-dcr.el
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
235
3cba3e588544 renamed reftex-vcr.el to reftex-dcr.el
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
236 (defun reftex-view-crossref-when-idle ()
3cba3e588544 renamed reftex-vcr.el to reftex-dcr.el
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
237 ;; Display info about crossref at point in echo area or a window.
3cba3e588544 renamed reftex-vcr.el to reftex-dcr.el
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
238 ;; This function was desigend to work with an idle timer.
3cba3e588544 renamed reftex-vcr.el to reftex-dcr.el
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
239 ;; We try to get out of here as quickly as possible if the call is useless.
3cba3e588544 renamed reftex-vcr.el to reftex-dcr.el
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
240 (and reftex-mode
3cba3e588544 renamed reftex-vcr.el to reftex-dcr.el
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
241 ;; Make sure message area is free if we need it.
3cba3e588544 renamed reftex-vcr.el to reftex-dcr.el
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
242 (or (eq reftex-auto-view-crossref 'window) (not (current-message)))
3cba3e588544 renamed reftex-vcr.el to reftex-dcr.el
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
243 ;; Make sure we are not already displaying this one
3cba3e588544 renamed reftex-vcr.el to reftex-dcr.el
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
244 (not (memq last-command '(reftex-view-crossref
52170
27340819ef07 Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents: 49599
diff changeset
245 reftex-mouse-view-crossref)))
27170
3cba3e588544 renamed reftex-vcr.el to reftex-dcr.el
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
246 ;; Quick precheck if this might be a relevant spot
69094
bfd5c5e60410 Version number change only
Carsten Dominik <dominik@science.uva.nl>
parents: 68648
diff changeset
247 ;; `reftex-view-crossref' will do a more thorough check.
52170
27340819ef07 Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents: 49599
diff changeset
248 (save-excursion
27340819ef07 Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents: 49599
diff changeset
249 (search-backward "\\" nil t)
27340819ef07 Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents: 49599
diff changeset
250 (looking-at "\\\\[a-zA-Z]*\\(cite\\|ref\\|bibentry\\)"))
27170
3cba3e588544 renamed reftex-vcr.el to reftex-dcr.el
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
251
3cba3e588544 renamed reftex-vcr.el to reftex-dcr.el
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
252 (condition-case nil
52170
27340819ef07 Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents: 49599
diff changeset
253 (let ((current-prefix-arg nil))
27340819ef07 Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents: 49599
diff changeset
254 (cond
27340819ef07 Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents: 49599
diff changeset
255 ((eq reftex-auto-view-crossref t)
69094
bfd5c5e60410 Version number change only
Carsten Dominik <dominik@science.uva.nl>
parents: 68648
diff changeset
256 (reftex-view-crossref -1 'echo 'quiet))
52170
27340819ef07 Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents: 49599
diff changeset
257 ((eq reftex-auto-view-crossref 'window)
69094
bfd5c5e60410 Version number change only
Carsten Dominik <dominik@science.uva.nl>
parents: 68648
diff changeset
258 (reftex-view-crossref -1 'tmp-window 'quiet))
52170
27340819ef07 Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents: 49599
diff changeset
259 (t nil)))
27340819ef07 Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents: 49599
diff changeset
260 (error nil))))
27170
3cba3e588544 renamed reftex-vcr.el to reftex-dcr.el
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
261
3cba3e588544 renamed reftex-vcr.el to reftex-dcr.el
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
262 (defun reftex-restore-window-conf ()
3cba3e588544 renamed reftex-vcr.el to reftex-dcr.el
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
263 (set-window-configuration (get 'reftex-auto-view-crossref 'last-window-conf))
3cba3e588544 renamed reftex-vcr.el to reftex-dcr.el
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
264 (put 'reftex-auto-view-crossref 'last-window-conf nil)
3cba3e588544 renamed reftex-vcr.el to reftex-dcr.el
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
265 (remove-hook 'pre-command-hook 'reftex-restore-window-conf))
52170
27340819ef07 Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents: 49599
diff changeset
266
27170
3cba3e588544 renamed reftex-vcr.el to reftex-dcr.el
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
267 (defun reftex-echo-ref (label entry docstruct)
3cba3e588544 renamed reftex-vcr.el to reftex-dcr.el
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
268 ;; Display crossref info in echo area.
3cba3e588544 renamed reftex-vcr.el to reftex-dcr.el
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
269 (cond
3cba3e588544 renamed reftex-vcr.el to reftex-dcr.el
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
270 ((null docstruct)
69094
bfd5c5e60410 Version number change only
Carsten Dominik <dominik@science.uva.nl>
parents: 68648
diff changeset
271 (message "%s"
bfd5c5e60410 Version number change only
Carsten Dominik <dominik@science.uva.nl>
parents: 68648
diff changeset
272 (substitute-command-keys (format reftex-no-info-message "ref"))))
27170
3cba3e588544 renamed reftex-vcr.el to reftex-dcr.el
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
273 ((null entry)
3cba3e588544 renamed reftex-vcr.el to reftex-dcr.el
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
274 (message "ref: unknown label: %s" label))
3cba3e588544 renamed reftex-vcr.el to reftex-dcr.el
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
275 (t
3cba3e588544 renamed reftex-vcr.el to reftex-dcr.el
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
276 (when (stringp (nth 2 entry))
3cba3e588544 renamed reftex-vcr.el to reftex-dcr.el
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
277 (message "ref(%s): %s" (nth 1 entry) (nth 2 entry)))
3cba3e588544 renamed reftex-vcr.el to reftex-dcr.el
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
278 (let ((buf (get-buffer " *Echo Area*")))
3cba3e588544 renamed reftex-vcr.el to reftex-dcr.el
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
279 (when buf
105813
df4934f25eef * textmodes/two-column.el (2C-split):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 100908
diff changeset
280 (with-current-buffer buf
52170
27340819ef07 Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents: 49599
diff changeset
281 (run-hooks 'reftex-display-copied-context-hook)))))))
27170
3cba3e588544 renamed reftex-vcr.el to reftex-dcr.el
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
282
3cba3e588544 renamed reftex-vcr.el to reftex-dcr.el
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
283 (defun reftex-echo-cite (key files item)
3cba3e588544 renamed reftex-vcr.el to reftex-dcr.el
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
284 ;; Display citation info in echo area.
3cba3e588544 renamed reftex-vcr.el to reftex-dcr.el
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
285 (let* ((cache (assq 'bibview-cache (symbol-value reftex-docstruct-symbol)))
52170
27340819ef07 Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents: 49599
diff changeset
286 (cache-entry (assoc key (cdr cache)))
27340819ef07 Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents: 49599
diff changeset
287 entry string buf (all-files files))
27170
3cba3e588544 renamed reftex-vcr.el to reftex-dcr.el
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
288
3cba3e588544 renamed reftex-vcr.el to reftex-dcr.el
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
289 (if (and reftex-cache-cite-echo cache-entry)
52170
27340819ef07 Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents: 49599
diff changeset
290 ;; We can just use the cache
27340819ef07 Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents: 49599
diff changeset
291 (setq string (cdr cache-entry))
27170
3cba3e588544 renamed reftex-vcr.el to reftex-dcr.el
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
292
3cba3e588544 renamed reftex-vcr.el to reftex-dcr.el
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
293 ;; Need to look in the database
3cba3e588544 renamed reftex-vcr.el to reftex-dcr.el
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
294 (unless reftex-revisit-to-echo
52170
27340819ef07 Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents: 49599
diff changeset
295 (setq files (reftex-visited-files files)))
27170
3cba3e588544 renamed reftex-vcr.el to reftex-dcr.el
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
296
52170
27340819ef07 Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents: 49599
diff changeset
297 (setq entry
27340819ef07 Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents: 49599
diff changeset
298 (condition-case nil
27340819ef07 Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents: 49599
diff changeset
299 (save-excursion
27340819ef07 Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents: 49599
diff changeset
300 (reftex-pop-to-bibtex-entry key files nil nil item t))
27340819ef07 Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents: 49599
diff changeset
301 (error
27340819ef07 Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents: 49599
diff changeset
302 (if (and files (= (length all-files) (length files)))
27340819ef07 Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents: 49599
diff changeset
303 (message "cite: no such database entry: %s" key)
65583
703495630901 Message format spec fixes (2)
Deepak Goel <deego@gnufans.org>
parents: 65548
diff changeset
304 (message "%s" (substitute-command-keys
69094
bfd5c5e60410 Version number change only
Carsten Dominik <dominik@science.uva.nl>
parents: 68648
diff changeset
305 (format reftex-no-info-message "cite"))))
52170
27340819ef07 Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents: 49599
diff changeset
306 nil)))
27170
3cba3e588544 renamed reftex-vcr.el to reftex-dcr.el
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
307 (when entry
52170
27340819ef07 Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents: 49599
diff changeset
308 (if item
27340819ef07 Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents: 49599
diff changeset
309 (setq string (reftex-nicify-text entry))
27340819ef07 Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents: 49599
diff changeset
310 (setq string (reftex-make-cite-echo-string
27340819ef07 Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents: 49599
diff changeset
311 (reftex-parse-bibtex-entry entry)
27340819ef07 Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents: 49599
diff changeset
312 reftex-docstruct-symbol)))))
27170
3cba3e588544 renamed reftex-vcr.el to reftex-dcr.el
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
313 (unless (or (null string) (equal string ""))
3cba3e588544 renamed reftex-vcr.el to reftex-dcr.el
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
314 (message "cite: %s" string))
3cba3e588544 renamed reftex-vcr.el to reftex-dcr.el
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
315 (when (setq buf (get-buffer " *Echo Area*"))
105813
df4934f25eef * textmodes/two-column.el (2C-split):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 100908
diff changeset
316 (with-current-buffer buf
52170
27340819ef07 Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents: 49599
diff changeset
317 (run-hooks 'reftex-display-copied-context-hook)))))
27170
3cba3e588544 renamed reftex-vcr.el to reftex-dcr.el
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
318
3cba3e588544 renamed reftex-vcr.el to reftex-dcr.el
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
319 (defvar reftex-use-itimer-in-xemacs nil
3cba3e588544 renamed reftex-vcr.el to reftex-dcr.el
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
320 "*Non-nil means use the idle timers in XEmacs for crossref display.
3cba3e588544 renamed reftex-vcr.el to reftex-dcr.el
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
321 Currently, idle timer restart is broken and we use the post-command-hook.")
3cba3e588544 renamed reftex-vcr.el to reftex-dcr.el
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
322
3cba3e588544 renamed reftex-vcr.el to reftex-dcr.el
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
323 (defun reftex-toggle-auto-view-crossref ()
3cba3e588544 renamed reftex-vcr.el to reftex-dcr.el
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
324 "Toggle the automatic display of crossref information in the echo area.
3cba3e588544 renamed reftex-vcr.el to reftex-dcr.el
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
325 When active, leaving point idle in the argument of a \\ref or \\cite macro
3cba3e588544 renamed reftex-vcr.el to reftex-dcr.el
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
326 will display info in the echo area."
3cba3e588544 renamed reftex-vcr.el to reftex-dcr.el
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
327 (interactive)
3cba3e588544 renamed reftex-vcr.el to reftex-dcr.el
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
328 (if reftex-auto-view-crossref-timer
3cba3e588544 renamed reftex-vcr.el to reftex-dcr.el
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
329 (progn
52170
27340819ef07 Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents: 49599
diff changeset
330 (if (featurep 'xemacs)
27340819ef07 Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents: 49599
diff changeset
331 (if reftex-use-itimer-in-xemacs
27340819ef07 Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents: 49599
diff changeset
332 (delete-itimer reftex-auto-view-crossref-timer)
27340819ef07 Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents: 49599
diff changeset
333 (remove-hook 'post-command-hook 'reftex-start-itimer-once))
27340819ef07 Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents: 49599
diff changeset
334 (cancel-timer reftex-auto-view-crossref-timer))
27340819ef07 Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents: 49599
diff changeset
335 (setq reftex-auto-view-crossref-timer nil)
27340819ef07 Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents: 49599
diff changeset
336 (message "Automatic display of crossref information was turned off"))
27170
3cba3e588544 renamed reftex-vcr.el to reftex-dcr.el
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
337 (setq reftex-auto-view-crossref-timer
52170
27340819ef07 Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents: 49599
diff changeset
338 (if (featurep 'xemacs)
27340819ef07 Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents: 49599
diff changeset
339 (if reftex-use-itimer-in-xemacs
27340819ef07 Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents: 49599
diff changeset
340 (start-itimer "RefTeX Idle Timer"
27340819ef07 Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents: 49599
diff changeset
341 'reftex-view-crossref-when-idle
27340819ef07 Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents: 49599
diff changeset
342 reftex-idle-time reftex-idle-time t)
27340819ef07 Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents: 49599
diff changeset
343 (add-hook 'post-command-hook 'reftex-start-itimer-once)
27340819ef07 Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents: 49599
diff changeset
344 t)
27340819ef07 Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents: 49599
diff changeset
345 (run-with-idle-timer
27340819ef07 Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents: 49599
diff changeset
346 reftex-idle-time t 'reftex-view-crossref-when-idle)))
27170
3cba3e588544 renamed reftex-vcr.el to reftex-dcr.el
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
347 (unless reftex-auto-view-crossref
3cba3e588544 renamed reftex-vcr.el to reftex-dcr.el
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
348 (setq reftex-auto-view-crossref t))
3cba3e588544 renamed reftex-vcr.el to reftex-dcr.el
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
349 (message "Automatic display of crossref information was turned on")))
3cba3e588544 renamed reftex-vcr.el to reftex-dcr.el
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
350
3cba3e588544 renamed reftex-vcr.el to reftex-dcr.el
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
351 (defun reftex-start-itimer-once ()
86154
1cdfc94602cb * smime.el (from):
Dan Nicolaescu <dann@ics.uci.edu>
parents: 78225
diff changeset
352 (and (featurep 'xemacs) reftex-mode
52170
27340819ef07 Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents: 49599
diff changeset
353 (not (itimer-live-p reftex-auto-view-crossref-timer))
27340819ef07 Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents: 49599
diff changeset
354 (setq reftex-auto-view-crossref-timer
27340819ef07 Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents: 49599
diff changeset
355 (start-itimer "RefTeX Idle Timer"
27340819ef07 Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents: 49599
diff changeset
356 'reftex-view-crossref-when-idle
27340819ef07 Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents: 49599
diff changeset
357 reftex-idle-time nil t))))
27170
3cba3e588544 renamed reftex-vcr.el to reftex-dcr.el
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
358
86243
4d615a83cee2 * progmodes/idlw-help.el: Require browse-url unconditionally, it
Dan Nicolaescu <dann@ics.uci.edu>
parents: 86154
diff changeset
359 (declare-function bibtex-beginning-of-entry "bibtex" ())
4d615a83cee2 * progmodes/idlw-help.el: Require browse-url unconditionally, it
Dan Nicolaescu <dann@ics.uci.edu>
parents: 86154
diff changeset
360
27170
3cba3e588544 renamed reftex-vcr.el to reftex-dcr.el
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
361 (defun reftex-view-crossref-from-bibtex (&optional arg)
3cba3e588544 renamed reftex-vcr.el to reftex-dcr.el
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
362 "View location in a LaTeX document which cites the BibTeX entry at point.
3cba3e588544 renamed reftex-vcr.el to reftex-dcr.el
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
363 Since BibTeX files can be used by many LaTeX documents, this function
3cba3e588544 renamed reftex-vcr.el to reftex-dcr.el
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
364 prompts upon first use for a buffer in RefTeX mode. To reset this
3cba3e588544 renamed reftex-vcr.el to reftex-dcr.el
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
365 link to a document, call the function with with a prefix arg.
3cba3e588544 renamed reftex-vcr.el to reftex-dcr.el
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
366 Calling this function several times find successive citation locations."
3cba3e588544 renamed reftex-vcr.el to reftex-dcr.el
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
367 (interactive "P")
52170
27340819ef07 Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents: 49599
diff changeset
368 (when arg
27170
3cba3e588544 renamed reftex-vcr.el to reftex-dcr.el
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
369 ;; Break connection to reference buffer
29775
31536c6cf2e3 * textmodes/reftex.el (reftex-find-citation-regexp-format):
Carsten Dominik <dominik@science.uva.nl>
parents: 27604
diff changeset
370 (put 'reftex-bibtex-view-cite-locations :ref-buffer nil))
27170
3cba3e588544 renamed reftex-vcr.el to reftex-dcr.el
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
371 (let ((ref-buffer (get 'reftex-bibtex-view-cite-locations :ref-buffer)))
3cba3e588544 renamed reftex-vcr.el to reftex-dcr.el
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
372 ;; Establish connection to reference buffer
3cba3e588544 renamed reftex-vcr.el to reftex-dcr.el
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
373 (unless ref-buffer
3cba3e588544 renamed reftex-vcr.el to reftex-dcr.el
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
374 (setq ref-buffer
105813
df4934f25eef * textmodes/two-column.el (2C-split):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 100908
diff changeset
375 (save-current-buffer
52170
27340819ef07 Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents: 49599
diff changeset
376 (completing-read
27340819ef07 Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents: 49599
diff changeset
377 "Reference buffer: "
27340819ef07 Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents: 49599
diff changeset
378 (delq nil
27340819ef07 Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents: 49599
diff changeset
379 (mapcar
27340819ef07 Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents: 49599
diff changeset
380 (lambda (b)
27340819ef07 Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents: 49599
diff changeset
381 (set-buffer b)
27340819ef07 Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents: 49599
diff changeset
382 (if reftex-mode (list (buffer-name b)) nil))
27340819ef07 Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents: 49599
diff changeset
383 (buffer-list)))
27340819ef07 Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents: 49599
diff changeset
384 nil t)))
27170
3cba3e588544 renamed reftex-vcr.el to reftex-dcr.el
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
385 (put 'reftex-bibtex-view-cite-locations :ref-buffer ref-buffer))
3cba3e588544 renamed reftex-vcr.el to reftex-dcr.el
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
386 ;; Search for citations
3cba3e588544 renamed reftex-vcr.el to reftex-dcr.el
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
387 (bibtex-beginning-of-entry)
3cba3e588544 renamed reftex-vcr.el to reftex-dcr.el
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
388 (if (looking-at
52170
27340819ef07 Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents: 49599
diff changeset
389 "@[a-zA-Z]+[ \t\n\r]*[{(][ \t\n\r]*\\([^, \t\r\n}]+\\)")
27340819ef07 Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents: 49599
diff changeset
390 (progn
27340819ef07 Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents: 49599
diff changeset
391 (goto-char (match-beginning 1))
27340819ef07 Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents: 49599
diff changeset
392 (reftex-view-regexp-match
27340819ef07 Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents: 49599
diff changeset
393 (format reftex-find-citation-regexp-format
27340819ef07 Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents: 49599
diff changeset
394 (regexp-quote (match-string 1)))
27340819ef07 Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents: 49599
diff changeset
395 4 arg ref-buffer))
27170
3cba3e588544 renamed reftex-vcr.el to reftex-dcr.el
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
396 (error "Cannot find citation key in BibTeX entry"))))
3cba3e588544 renamed reftex-vcr.el to reftex-dcr.el
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
397
3cba3e588544 renamed reftex-vcr.el to reftex-dcr.el
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
398 (defun reftex-view-regexp-match (re &optional highlight-group new ref-buffer)
3cba3e588544 renamed reftex-vcr.el to reftex-dcr.el
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
399 ;; Search for RE in current document or in the document of REF-BUFFER.
3cba3e588544 renamed reftex-vcr.el to reftex-dcr.el
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
400 ;; Continue the search, if the same re was searched last.
3cba3e588544 renamed reftex-vcr.el to reftex-dcr.el
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
401 ;; Highlight the group HIGHLIGHT-GROUP of the match.
3cba3e588544 renamed reftex-vcr.el to reftex-dcr.el
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
402 ;; When NEW is non-nil, start a new search regardless.
3cba3e588544 renamed reftex-vcr.el to reftex-dcr.el
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
403 ;; Match point is displayed in another window.
3cba3e588544 renamed reftex-vcr.el to reftex-dcr.el
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
404 ;; Upon success, returns the window which displays the match.
3cba3e588544 renamed reftex-vcr.el to reftex-dcr.el
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
405
3cba3e588544 renamed reftex-vcr.el to reftex-dcr.el
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
406 ;;; Decide if new search or continued search
3cba3e588544 renamed reftex-vcr.el to reftex-dcr.el
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
407 (let* ((oldprop (get 'reftex-view-regexp-match :props))
52170
27340819ef07 Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents: 49599
diff changeset
408 (newprop (list (current-buffer) re))
27340819ef07 Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents: 49599
diff changeset
409 (cont (and (not new) (equal oldprop newprop)))
27340819ef07 Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents: 49599
diff changeset
410 (cnt (if cont (get 'reftex-view-regexp-match :cnt) 0))
27340819ef07 Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents: 49599
diff changeset
411 (current-window (selected-window))
27340819ef07 Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents: 49599
diff changeset
412 (window-conf (current-window-configuration))
27340819ef07 Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents: 49599
diff changeset
413 match pop-window)
27170
3cba3e588544 renamed reftex-vcr.el to reftex-dcr.el
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
414 (switch-to-buffer-other-window (or ref-buffer (current-buffer)))
3cba3e588544 renamed reftex-vcr.el to reftex-dcr.el
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
415 ;; Search
3cba3e588544 renamed reftex-vcr.el to reftex-dcr.el
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
416 (condition-case nil
52170
27340819ef07 Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents: 49599
diff changeset
417 (if cont
27340819ef07 Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents: 49599
diff changeset
418 (setq match (reftex-global-search-continue))
27340819ef07 Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents: 49599
diff changeset
419 (reftex-access-scan-info)
27340819ef07 Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents: 49599
diff changeset
420 (setq match (reftex-global-search re (reftex-all-document-files))))
27170
3cba3e588544 renamed reftex-vcr.el to reftex-dcr.el
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
421 (error nil))
3cba3e588544 renamed reftex-vcr.el to reftex-dcr.el
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
422 ;; Evaluate the match.
3cba3e588544 renamed reftex-vcr.el to reftex-dcr.el
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
423 (if match
52170
27340819ef07 Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents: 49599
diff changeset
424 (progn
27340819ef07 Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents: 49599
diff changeset
425 (put 'reftex-view-regexp-match :props newprop)
27340819ef07 Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents: 49599
diff changeset
426 (put 'reftex-view-regexp-match :cnt (incf cnt))
27340819ef07 Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents: 49599
diff changeset
427 (reftex-highlight 0 (match-beginning highlight-group)
27340819ef07 Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents: 49599
diff changeset
428 (match-end highlight-group))
27340819ef07 Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents: 49599
diff changeset
429 (add-hook 'pre-command-hook 'reftex-highlight-shall-die)
27340819ef07 Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents: 49599
diff changeset
430 (setq pop-window (selected-window)))
29775
31536c6cf2e3 * textmodes/reftex.el (reftex-find-citation-regexp-format):
Carsten Dominik <dominik@science.uva.nl>
parents: 27604
diff changeset
431 (put 'reftex-view-regexp-match :props nil)
27170
3cba3e588544 renamed reftex-vcr.el to reftex-dcr.el
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
432 (or cont (set-window-configuration window-conf)))
3cba3e588544 renamed reftex-vcr.el to reftex-dcr.el
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
433 (select-window current-window)
3cba3e588544 renamed reftex-vcr.el to reftex-dcr.el
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
434 (if match
52170
27340819ef07 Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents: 49599
diff changeset
435 (progn
27340819ef07 Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents: 49599
diff changeset
436 (message "Match Nr. %s" cnt)
27340819ef07 Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents: 49599
diff changeset
437 pop-window)
27170
3cba3e588544 renamed reftex-vcr.el to reftex-dcr.el
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
438 (if cont
52170
27340819ef07 Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents: 49599
diff changeset
439 (error "No further matches (total number of matches: %d)" cnt)
27340819ef07 Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents: 49599
diff changeset
440 (error "No matches")))))
27170
3cba3e588544 renamed reftex-vcr.el to reftex-dcr.el
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
441
3cba3e588544 renamed reftex-vcr.el to reftex-dcr.el
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
442 (defvar reftex-global-search-marker (make-marker))
3cba3e588544 renamed reftex-vcr.el to reftex-dcr.el
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
443 (defun reftex-global-search (regexp file-list)
3cba3e588544 renamed reftex-vcr.el to reftex-dcr.el
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
444 ;; Start a search for REGEXP in all files of FILE-LIST
3cba3e588544 renamed reftex-vcr.el to reftex-dcr.el
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
445 (put 'reftex-global-search :file-list file-list)
3cba3e588544 renamed reftex-vcr.el to reftex-dcr.el
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
446 (put 'reftex-global-search :regexp regexp)
3cba3e588544 renamed reftex-vcr.el to reftex-dcr.el
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
447 (move-marker reftex-global-search-marker nil)
3cba3e588544 renamed reftex-vcr.el to reftex-dcr.el
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
448 (reftex-global-search-continue))
3cba3e588544 renamed reftex-vcr.el to reftex-dcr.el
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
449
3cba3e588544 renamed reftex-vcr.el to reftex-dcr.el
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
450 (defun reftex-global-search-continue ()
3cba3e588544 renamed reftex-vcr.el to reftex-dcr.el
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
451 ;; Continue a global search started with `reftex-global-search'
3cba3e588544 renamed reftex-vcr.el to reftex-dcr.el
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
452 (unless (get 'reftex-global-search :file-list)
3cba3e588544 renamed reftex-vcr.el to reftex-dcr.el
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
453 (error "No global search to continue"))
3cba3e588544 renamed reftex-vcr.el to reftex-dcr.el
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
454 (let* ((file-list (get 'reftex-global-search :file-list))
52170
27340819ef07 Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents: 49599
diff changeset
455 (regexp (get 'reftex-global-search :regexp))
27340819ef07 Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents: 49599
diff changeset
456 (buf (or (marker-buffer reftex-global-search-marker)
27340819ef07 Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents: 49599
diff changeset
457 (reftex-get-file-buffer-force (car file-list))))
27340819ef07 Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents: 49599
diff changeset
458 (pos (or (marker-position reftex-global-search-marker) 1))
27340819ef07 Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents: 49599
diff changeset
459 file)
27170
3cba3e588544 renamed reftex-vcr.el to reftex-dcr.el
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
460 ;; Take up starting position
3cba3e588544 renamed reftex-vcr.el to reftex-dcr.el
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
461 (unless buf (error "No such buffer %s" buf))
3cba3e588544 renamed reftex-vcr.el to reftex-dcr.el
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
462 (switch-to-buffer buf)
3cba3e588544 renamed reftex-vcr.el to reftex-dcr.el
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
463 (widen)
3cba3e588544 renamed reftex-vcr.el to reftex-dcr.el
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
464 (goto-char pos)
3cba3e588544 renamed reftex-vcr.el to reftex-dcr.el
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
465 ;; Search and switch file if necessary
3cba3e588544 renamed reftex-vcr.el to reftex-dcr.el
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
466 (if (catch 'exit
52170
27340819ef07 Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents: 49599
diff changeset
467 (while t
27340819ef07 Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents: 49599
diff changeset
468 (when (re-search-forward regexp nil t)
27340819ef07 Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents: 49599
diff changeset
469 (move-marker reftex-global-search-marker (point))
27340819ef07 Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents: 49599
diff changeset
470 (throw 'exit t))
27340819ef07 Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents: 49599
diff changeset
471 ;; No match - goto next file
27340819ef07 Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents: 49599
diff changeset
472 (pop file-list)
27340819ef07 Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents: 49599
diff changeset
473 (or file-list (throw 'exit nil))
27340819ef07 Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents: 49599
diff changeset
474 (setq file (car file-list)
27340819ef07 Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents: 49599
diff changeset
475 buf (reftex-get-file-buffer-force file))
27340819ef07 Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents: 49599
diff changeset
476 (unless buf (error "Cannot access file %s" file))
27340819ef07 Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents: 49599
diff changeset
477 (put 'reftex-global-search :file-list file-list)
27340819ef07 Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents: 49599
diff changeset
478 (switch-to-buffer buf)
27340819ef07 Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents: 49599
diff changeset
479 (widen)
27340819ef07 Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents: 49599
diff changeset
480 (goto-char 1)))
27340819ef07 Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents: 49599
diff changeset
481 t
27170
3cba3e588544 renamed reftex-vcr.el to reftex-dcr.el
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
482 (move-marker reftex-global-search-marker nil)
3cba3e588544 renamed reftex-vcr.el to reftex-dcr.el
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
483 (error "All files processed"))))
3cba3e588544 renamed reftex-vcr.el to reftex-dcr.el
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
484
93975
1e3a407766b9 Fix up comment convention on the arch-tag lines.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 87649
diff changeset
485 ;; arch-tag: d2f52b56-744e-44ad-830d-1fc193b90eda
27170
3cba3e588544 renamed reftex-vcr.el to reftex-dcr.el
Carsten Dominik <dominik@science.uva.nl>
parents:
diff changeset
486 ;;; reftex-dcr.el ends here