Mercurial > emacs
annotate lisp/textmodes/reftex-ref.el @ 71710:dbbc0b93cfeb
(Forcing Redisplay, Displaying Messages, Temporary Displays, Font Selection,
Auto Faces, Font Lookup, Fringe Indicators, Display Margins, Image Descriptors,
Showing Images, Image Cache, Button Types, Making Buttons, Manipulating
Buttons, Button Buffer Commands, Display Table Format, Glyphs): Remove
@tindex.
author | Eli Zaretskii <eliz@gnu.org> |
---|---|
date | Sat, 08 Jul 2006 18:11:49 +0000 |
parents | bfd5c5e60410 |
children | f7702c5f335d 34c8b755296d |
rev | line source |
---|---|
38422
7a94f1c588c4
Some fixes to follow coding conventions.
Pavel Janík <Pavel@Janik.cz>
parents:
37998
diff
changeset
|
1 ;;; reftex-ref.el --- code to create labels and references with RefTeX |
68648
067115a6e738
Update years in copyright notice; nfc.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
65638
diff
changeset
|
2 ;; Copyright (C) 1997, 1998, 1999, 2000, 2003, 2004, 2005, |
067115a6e738
Update years in copyright notice; nfc.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
65638
diff
changeset
|
3 ;; 2006 Free Software Foundation, Inc. |
27035 | 4 |
46612
7522419c4db0
Updated to reftex 4.17
Carsten Dominik <dominik@science.uva.nl>
parents:
38422
diff
changeset
|
5 ;; Author: Carsten Dominik <dominik@science.uva.nl> |
69094
bfd5c5e60410
Version number change only
Carsten Dominik <dominik@science.uva.nl>
parents:
68648
diff
changeset
|
6 ;; Version: 4.31 |
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 | |
65638
e274642bf5d5
Update FSF street address; nfc.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
65548
diff
changeset
|
22 ;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, |
e274642bf5d5
Update FSF street address; nfc.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
65548
diff
changeset
|
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-ref) |
31 (require 'reftex) | |
62467
35f6599373fc
* textmodes/reftex-vars.el (reftex-cite-format-builtin): Support
Carsten Dominik <dominik@science.uva.nl>
parents:
60918
diff
changeset
|
32 (require 'reftex-parse) |
25280 | 33 ;;; |
34 | |
35 (defun reftex-label-location (&optional bound) | |
36 "Return the environment or macro which determines the label type at point. | |
37 If optional BOUND is an integer, limit backward searches to that point." | |
38 | |
39 (let* ((loc1 (reftex-what-macro reftex-label-mac-list bound)) | |
40 (loc2 (reftex-what-environment reftex-label-env-list bound)) | |
52170
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
41 (loc3 (reftex-what-special-env 1 bound)) |
25280 | 42 (p1 (or (cdr loc1) 0)) |
43 (p2 (or (cdr loc2) 0)) | |
52170
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
44 (p3 (or (cdr loc3) 0)) |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
45 (pmax (max p1 p2 p3))) |
25280 | 46 |
47 (setq reftex-location-start pmax) | |
48 (cond | |
49 ((= p1 pmax) | |
50 ;; A macro. Default context after macro name. | |
51 (setq reftex-default-context-position (+ p1 (length (car loc1)))) | |
52 (or (car loc1) "section")) | |
53 ((= p2 pmax) | |
54 ;; An environment. Default context after \begin{name}. | |
55 (setq reftex-default-context-position (+ p2 8 (length (car loc2)))) | |
56 (or (car loc2) "section")) | |
57 ((= p3 pmax) | |
58 ;; A special. Default context right there. | |
59 (setq reftex-default-context-position p3) | |
60 (setq loc3 (car loc3)) | |
61 (cond ((null loc3) "section") | |
52170
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
62 ((symbolp loc3) (symbol-name loc3)) |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
63 ((stringp loc3) loc3) |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
64 (t "section"))) |
25280 | 65 (t ;; This should not happen, I think? |
66 "section")))) | |
67 | |
68 (defun reftex-label-info-update (cell) | |
69 ;; Update information about just one label in a different file. | |
70 ;; CELL contains the old info list | |
71 (let* ((label (nth 0 cell)) | |
72 (typekey (nth 1 cell)) | |
73 ;; (text (nth 2 cell)) | |
74 (file (nth 3 cell)) | |
75 (comment (nth 4 cell)) | |
76 (note (nth 5 cell)) | |
77 (buf (reftex-get-file-buffer-force | |
78 file (not (eq t reftex-keep-temporary-buffers))))) | |
79 (if (not buf) | |
80 (list label typekey "" file comment "LOST LABEL. RESCAN TO FIX.") | |
81 (save-excursion | |
82 (set-buffer buf) | |
83 (save-restriction | |
84 (widen) | |
85 (goto-char 1) | |
86 | |
87 (if (or (re-search-forward | |
52170
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
88 (format reftex-find-label-regexp-format |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
89 (regexp-quote label)) nil t) |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
90 (re-search-forward |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
91 (format reftex-find-label-regexp-format2 |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
92 (regexp-quote label)) nil t)) |
25280 | 93 |
94 (progn | |
95 (backward-char 1) | |
96 (append (reftex-label-info label file) (list note))) | |
97 (list label typekey "" file "LOST LABEL. RESCAN TO FIX."))))))) | |
98 | |
99 (defun reftex-label-info (label &optional file bound derive env-or-mac) | |
100 ;; Return info list on LABEL at point. | |
59534
9bad65481674
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
52401
diff
changeset
|
101 (let* ((prefix (if (string-match "^[a-zA-Z0-9]+:" label) |
9bad65481674
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
52401
diff
changeset
|
102 (match-string 0 label))) |
9bad65481674
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
52401
diff
changeset
|
103 (typekey (cdr (assoc prefix reftex-prefix-to-typekey-alist))) |
25280 | 104 (file (or file (buffer-file-name))) |
59534
9bad65481674
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
52401
diff
changeset
|
105 (trust reftex-trust-label-prefix) |
52170
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
106 (in-comment (reftex-in-comment))) |
59534
9bad65481674
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
52401
diff
changeset
|
107 (if (and typekey |
9bad65481674
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
52401
diff
changeset
|
108 (cond ((eq trust t) t) |
9bad65481674
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
52401
diff
changeset
|
109 ((null trust) nil) |
9bad65481674
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
52401
diff
changeset
|
110 ((stringp trust) (string-match trust typekey)) |
9bad65481674
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
52401
diff
changeset
|
111 ((listp trust) (member typekey trust)) |
9bad65481674
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
52401
diff
changeset
|
112 (t nil))) |
9bad65481674
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
52401
diff
changeset
|
113 (list label typekey |
9bad65481674
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
52401
diff
changeset
|
114 (reftex-nicify-text (reftex-context-substring)) |
9bad65481674
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
52401
diff
changeset
|
115 file in-comment) |
9bad65481674
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
52401
diff
changeset
|
116 (let* ((env-or-mac (or env-or-mac (reftex-label-location bound))) |
9bad65481674
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
52401
diff
changeset
|
117 (typekey (nth 1 (assoc env-or-mac reftex-env-or-mac-alist))) |
9bad65481674
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
52401
diff
changeset
|
118 (parse (nth 2 (assoc env-or-mac reftex-env-or-mac-alist))) |
9bad65481674
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
52401
diff
changeset
|
119 (text (reftex-short-context env-or-mac parse reftex-location-start |
9bad65481674
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
52401
diff
changeset
|
120 derive))) |
9bad65481674
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
52401
diff
changeset
|
121 (list label typekey text file in-comment))))) |
25280 | 122 |
123 ;;; Creating labels --------------------------------------------------------- | |
124 | |
125 (defun reftex-label (&optional environment no-insert) | |
126 "Insert a unique label. Return the label. | |
127 If ENVIRONMENT is given, don't bother to find out yourself. | |
128 If NO-INSERT is non-nil, do not insert label into buffer. | |
129 With prefix arg, force to rescan document first. | |
130 When you are prompted to enter or confirm a label, and you reply with | |
131 just the prefix or an empty string, no label at all will be inserted. | |
132 A new label is also recorded into the label list. | |
133 This function is controlled by the settings of reftex-insert-label-flags." | |
134 | |
135 (interactive) | |
136 | |
137 ;; Ensure access to scanning info and rescan buffer if prefix are is '(4). | |
138 (reftex-access-scan-info current-prefix-arg) | |
139 | |
140 ;; Find out what kind of environment this is and abort if necessary. | |
141 (if (or (not environment) | |
142 (not (assoc environment reftex-env-or-mac-alist))) | |
143 (setq environment (reftex-label-location))) | |
144 (unless environment | |
145 (error "Can't figure out what kind of label should be inserted")) | |
146 | |
147 ;; Ok, go ahead. | |
148 (catch 'exit | |
149 (let* ((entry (assoc environment reftex-env-or-mac-alist)) | |
52170
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
150 (typekey (nth 1 entry)) |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
151 (format (nth 3 entry)) |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
152 (macro-cell (reftex-what-macro 1)) |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
153 (entry1 (assoc (car macro-cell) reftex-env-or-mac-alist)) |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
154 label naked prefix valid default force-prompt rescan-is-useful) |
25280 | 155 (when (and (or (nth 5 entry) (nth 5 entry1)) |
52170
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
156 (memq (preceding-char) '(?\[ ?\{))) |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
157 ;; This is an argument of a label macro. Insert naked label. |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
158 (setq naked t format "%s")) |
25280 | 159 |
160 (setq prefix (or (cdr (assoc typekey reftex-typekey-to-prefix-alist)) | |
52170
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
161 (concat typekey "-"))) |
25280 | 162 ;; Replace any escapes in the prefix |
163 (setq prefix (reftex-replace-prefix-escapes prefix)) | |
164 | |
165 ;; Make a default label. | |
166 (cond | |
167 | |
168 ((reftex-typekey-check typekey (nth 0 reftex-insert-label-flags)) | |
52170
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
169 ;; Derive a label from context. |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
170 (setq reftex-active-toc (reftex-last-assoc-before-elt |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
171 'toc (car (reftex-where-am-I)) |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
172 (symbol-value reftex-docstruct-symbol))) |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
173 (setq default (reftex-no-props |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
174 (nth 2 (reftex-label-info " " nil nil t)))) |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
175 ;; Catch the cases where the is actually no context available. |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
176 (if (or (string-match "NO MATCH FOR CONTEXT REGEXP" default) |
60918
58a53f588384
* textmodes/refbib.el, textmodes/refer.el, textmodes/reftex-cite.el,
Werner LEMBERG <wl@gnu.org>
parents:
59534
diff
changeset
|
177 (string-match "INVALID VALUE OF PARSE" default) |
52170
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
178 (string-match "SECTION HEADING NOT FOUND" default) |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
179 (string-match "HOOK ERROR" default) |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
180 (string-match "^[ \t]*$" default)) |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
181 (setq default prefix |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
182 force-prompt t) ; need to prompt |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
183 (setq default |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
184 (concat prefix |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
185 (funcall reftex-string-to-label-function default))) |
25280 | 186 |
52170
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
187 ;; Make it unique. |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
188 (setq default (reftex-uniquify-label default nil "-")))) |
25280 | 189 |
190 ((reftex-typekey-check typekey (nth 1 reftex-insert-label-flags)) | |
52170
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
191 ;; Minimal default: the user will be prompted. |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
192 (setq default prefix)) |
25280 | 193 |
194 (t | |
52170
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
195 ;; Make an automatic label. |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
196 (setq default (reftex-uniquify-label prefix t)))) |
25280 | 197 |
198 ;; Should we ask the user? | |
199 (if (or (reftex-typekey-check typekey | |
52170
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
200 (nth 1 reftex-insert-label-flags)) ; prompt |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
201 force-prompt) |
25280 | 202 |
52170
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
203 (while (not valid) |
62467
35f6599373fc
* textmodes/reftex-vars.el (reftex-cite-format-builtin): Support
Carsten Dominik <dominik@science.uva.nl>
parents:
60918
diff
changeset
|
204 ;; iterate until we get a valid label |
25280 | 205 |
52170
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
206 (setq label (read-string |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
207 (if naked "Naked Label: " "Label: ") |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
208 default)) |
25280 | 209 |
62467
35f6599373fc
* textmodes/reftex-vars.el (reftex-cite-format-builtin): Support
Carsten Dominik <dominik@science.uva.nl>
parents:
60918
diff
changeset
|
210 ;; Lets make sure that this is a valid label |
52170
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
211 (cond |
25280 | 212 |
52170
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
213 ((string-match (concat "\\`\\(" (regexp-quote prefix) |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
214 "\\)?[ \t]*\\'") |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
215 label) |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
216 ;; No label at all, please |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
217 (message "No label inserted.") |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
218 (throw 'exit nil)) |
25280 | 219 |
52170
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
220 ;; Test if label contains strange characters |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
221 ((string-match reftex-label-illegal-re label) |
60918
58a53f588384
* textmodes/refbib.el, textmodes/refer.el, textmodes/reftex-cite.el,
Werner LEMBERG <wl@gnu.org>
parents:
59534
diff
changeset
|
222 (message "Label \"%s\" contains invalid characters" label) |
52170
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
223 (ding) |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
224 (sit-for 2)) |
25280 | 225 |
52170
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
226 ;; Look it up in the label list |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
227 ((setq entry (assoc label |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
228 (symbol-value reftex-docstruct-symbol))) |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
229 (ding) |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
230 (if (y-or-n-p |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
231 (format "Label '%s' exists. Use anyway? " label)) |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
232 (setq valid t))) |
25280 | 233 |
52170
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
234 ;; Label is ok |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
235 (t |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
236 (setq valid t)))) |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
237 (setq label default)) |
25280 | 238 |
239 ;; Insert the label into the label list | |
52170
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
240 (let* ((here-I-am-info |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
241 (save-excursion |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
242 (if (and (or naked no-insert) |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
243 (integerp (cdr macro-cell))) |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
244 (goto-char (cdr macro-cell))) |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
245 (reftex-where-am-I))) |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
246 (here-I-am (car here-I-am-info)) |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
247 (note (if (cdr here-I-am-info) |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
248 "" |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
249 "POSITION UNCERTAIN. RESCAN TO FIX.")) |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
250 (file (buffer-file-name)) |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
251 (text nil) |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
252 (tail (memq here-I-am (symbol-value reftex-docstruct-symbol)))) |
25280 | 253 |
52170
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
254 (or (cdr here-I-am-info) (setq rescan-is-useful t)) |
25280 | 255 |
52170
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
256 (when tail |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
257 (push (list label typekey text file nil note) (cdr tail)) |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
258 (put reftex-docstruct-symbol 'modified t))) |
25280 | 259 |
260 ;; Insert the label into the buffer | |
261 (unless no-insert | |
52170
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
262 (insert |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
263 (if reftex-format-label-function |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
264 (funcall reftex-format-label-function label format) |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
265 (format format label))) |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
266 (if (and reftex-plug-into-AUCTeX |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
267 (fboundp 'LaTeX-add-labels)) |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
268 ;; Tell AUCTeX about this |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
269 (LaTeX-add-labels label))) |
25280 | 270 |
271 ;; Delete the corresponding selection buffers to force update on next use. | |
272 (when reftex-auto-update-selection-buffers | |
52170
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
273 (reftex-erase-buffer (reftex-make-selection-buffer-name typekey)) |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
274 (reftex-erase-buffer (reftex-make-selection-buffer-name " "))) |
25280 | 275 |
276 (when (and rescan-is-useful reftex-allow-automatic-rescan) | |
52170
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
277 (reftex-parse-one)) |
25280 | 278 |
279 ;; return value of the function is the label | |
280 label))) | |
281 | |
282 (defun reftex-string-to-label (string) | |
283 "Convert a string (a sentence) to a label. | |
284 Uses `reftex-derive-label-parameters' and `reftex-label-illegal-re'. It | |
285 also applies `reftex-translate-to-ascii-function' to the string." | |
286 (when (and reftex-translate-to-ascii-function | |
52170
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
287 (fboundp reftex-translate-to-ascii-function)) |
25280 | 288 (setq string (funcall reftex-translate-to-ascii-function string))) |
289 (apply 'reftex-convert-string string | |
52170
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
290 "[-~ \t\n\r,;]+" reftex-label-illegal-re nil nil |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
291 reftex-derive-label-parameters)) |
25280 | 292 |
293 (defun reftex-latin1-to-ascii (string) | |
294 ;; Translate the upper 128 chars in the Latin-1 charset to ASCII equivalents | |
295 (let ((tab "@@@@@@@@@@@@@@@@@@'@@@@@@@@@@@@@ icLxY|S\"ca<--R-o|23'uq..1o>423?AAAAAAACEEEEIIIIDNOOOOOXOUUUUYP3aaaaaaaceeeeiiiidnooooo:ouuuuypy") | |
52170
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
296 (emacsp (not (featurep 'xemacs)))) |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
297 (mapconcat |
25280 | 298 (lambda (c) |
299 (cond ((and (> c 127) (< c 256)) ; 8 bit Latin-1 | |
52170
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
300 (char-to-string (aref tab (- c 128)))) |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
301 ((and emacsp ; Not for XEmacs |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
302 (> c 2175) (< c 2304)) ; Mule Latin-1 |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
303 (char-to-string (aref tab (- c 2176)))) |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
304 (t (char-to-string c)))) |
25280 | 305 string ""))) |
306 | |
307 (defun reftex-replace-prefix-escapes (prefix) | |
308 ;; Replace %escapes in a label prefix | |
309 (save-match-data | |
310 (let (letter (num 0) replace) | |
311 (while (string-match "\\%\\([a-zA-Z]\\)" prefix num) | |
312 (setq letter (match-string 1 prefix)) | |
313 (setq replace | |
59534
9bad65481674
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
52401
diff
changeset
|
314 (save-match-data |
9bad65481674
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
52401
diff
changeset
|
315 (cond |
9bad65481674
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
52401
diff
changeset
|
316 ((equal letter "f") |
9bad65481674
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
52401
diff
changeset
|
317 (file-name-sans-extension |
9bad65481674
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
52401
diff
changeset
|
318 (file-name-nondirectory (buffer-file-name)))) |
9bad65481674
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
52401
diff
changeset
|
319 ((equal letter "F") |
9bad65481674
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
52401
diff
changeset
|
320 (let ((masterdir (file-name-directory (reftex-TeX-master-file))) |
9bad65481674
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
52401
diff
changeset
|
321 (file (file-name-sans-extension (buffer-file-name)))) |
9bad65481674
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
52401
diff
changeset
|
322 (if (string-match (concat "\\`" (regexp-quote masterdir)) |
9bad65481674
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
52401
diff
changeset
|
323 file) |
9bad65481674
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
52401
diff
changeset
|
324 (substring file (length masterdir)) |
9bad65481674
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
52401
diff
changeset
|
325 file))) |
9bad65481674
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
52401
diff
changeset
|
326 ((equal letter "m") |
9bad65481674
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
52401
diff
changeset
|
327 (file-name-sans-extension |
9bad65481674
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
52401
diff
changeset
|
328 (file-name-nondirectory (reftex-TeX-master-file)))) |
9bad65481674
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
52401
diff
changeset
|
329 ((equal letter "M") |
9bad65481674
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
52401
diff
changeset
|
330 (file-name-nondirectory |
9bad65481674
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
52401
diff
changeset
|
331 (substring (file-name-directory (reftex-TeX-master-file)) |
9bad65481674
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
52401
diff
changeset
|
332 0 -1))) |
9bad65481674
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
52401
diff
changeset
|
333 ((equal letter "u") |
9bad65481674
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
52401
diff
changeset
|
334 (or (user-login-name) "")) |
9bad65481674
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
52401
diff
changeset
|
335 ((equal letter "S") |
9bad65481674
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
52401
diff
changeset
|
336 (let* (macro level-exp level) |
9bad65481674
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
52401
diff
changeset
|
337 (save-excursion |
9bad65481674
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
52401
diff
changeset
|
338 (save-match-data |
9bad65481674
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
52401
diff
changeset
|
339 (when (re-search-backward reftex-section-regexp nil t) |
9bad65481674
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
52401
diff
changeset
|
340 (setq macro (reftex-match-string 2) |
9bad65481674
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
52401
diff
changeset
|
341 level-exp (cdr (assoc macro reftex-section-levels-all)) |
9bad65481674
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
52401
diff
changeset
|
342 level (if (symbolp level-exp) |
9bad65481674
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
52401
diff
changeset
|
343 (abs (save-match-data |
9bad65481674
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
52401
diff
changeset
|
344 (funcall level-exp))) |
9bad65481674
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
52401
diff
changeset
|
345 (abs level-exp)))) |
9bad65481674
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
52401
diff
changeset
|
346 (cdr (or (assoc macro reftex-section-prefixes) |
9bad65481674
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
52401
diff
changeset
|
347 (assoc level reftex-section-prefixes) |
9bad65481674
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
52401
diff
changeset
|
348 (assq t reftex-section-prefixes) |
9bad65481674
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
52401
diff
changeset
|
349 (list t "sec:"))))))) |
9bad65481674
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
52401
diff
changeset
|
350 (t "")))) |
25280 | 351 (setq num (1- (+ (match-beginning 1) (length replace))) |
352 prefix (replace-match replace nil nil prefix))) | |
353 prefix))) | |
354 | |
355 (defun reftex-uniquify-label (label &optional force separator) | |
356 ;; Make label unique by appending a number. | |
357 ;; Optional FORCE means, force appending a number, even if label is unique. | |
358 ;; Optional SEPARATOR is a string to stick between label and number. | |
359 | |
360 ;; Ensure access to scanning info | |
361 (reftex-access-scan-info) | |
362 | |
363 (cond | |
364 ((and (not force) | |
365 (not (assoc label (symbol-value reftex-docstruct-symbol)))) | |
366 label) | |
367 (t | |
368 (let* ((label-numbers (assq 'label-numbers | |
369 (symbol-value reftex-docstruct-symbol))) | |
370 (label-numbers-alist (cdr label-numbers)) | |
371 (cell (or (assoc label label-numbers-alist) | |
372 (car (setcdr label-numbers | |
373 (cons (cons label 0) | |
374 label-numbers-alist))))) | |
375 (num (1+ (cdr cell))) | |
376 (sep (or separator ""))) | |
377 (while (assoc (concat label sep (int-to-string num)) | |
378 (symbol-value reftex-docstruct-symbol)) | |
379 (incf num)) | |
380 (setcdr cell num) | |
381 (concat label sep (int-to-string num)))))) | |
382 | |
383 ;;; Referencing labels ------------------------------------------------------ | |
384 | |
385 ;; Help string for the reference label menu | |
386 (defconst reftex-select-label-prompt | |
387 "Select: [n]ext [p]revious [r]escan [ ]context e[x]tern [q]uit RET [?]HELP+more") | |
388 | |
389 (defconst reftex-select-label-help | |
390 " n / p Go to next/previous label (Cursor motion works as well) | |
391 C-c C-n/p Go to next/previous section heading. | |
392 b / l Jump back to previous selection / Reuse last referenced label. | |
37998
706af946b1e7
* reftex-ref.el (reftex-select-label-help): Added "z" key
Carsten Dominik <dominik@science.uva.nl>
parents:
34402
diff
changeset
|
393 z Jump to a specific section, e.g. '3 z' jumps to section 3. |
25280 | 394 g / s Update menu / Switch label type. |
395 r / C-u r Reparse document / Reparse entire document. | |
396 x Switch to label menu of external document (with LaTeX package `xr'). | |
397 F t c Toggle: [F]ile borders, [t]able of contents, [c]ontext | |
398 # % Toggle: [#] label counters, [%] labels in comments | |
399 SPC / f Show full context in other window / Toggle follow mode. | |
400 . Show insertion point in other window. | |
401 v / V Toggle \\ref <-> \\vref / Rotate \\ref <=> \\fref <=> \\Fref | |
402 TAB Enter a label with completion. | |
403 m , - + Mark entry. `,-+' also assign a separator. | |
404 a / A Put all marked entries into one/many \\ref commands. | |
405 q / RET Quit without referencing / Accept current label (also on mouse-2).") | |
406 | |
407 (defun reftex-reference (&optional type no-insert cut) | |
408 "Make a LaTeX reference. Look only for labels of a certain TYPE. | |
409 With prefix arg, force to rescan buffer for labels. This should only be | |
410 necessary if you have recently entered labels yourself without using | |
411 reftex-label. Rescanning of the buffer can also be requested from the | |
412 label selection menu. | |
413 The function returns the selected label or nil. | |
414 If NO-INSERT is non-nil, do not insert \\ref command, just return label. | |
415 When called with 2 C-u prefix args, disable magic word recognition." | |
416 | |
417 (interactive) | |
418 | |
419 ;; check for active recursive edits | |
420 (reftex-check-recursive-edit) | |
421 | |
52170
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
422 ;; Ensure access to scanning info and rescan buffer if prefix are is '(4) |
25280 | 423 (reftex-access-scan-info current-prefix-arg) |
424 | |
425 (unless type | |
426 ;; guess type from context | |
427 (if (and reftex-guess-label-type | |
428 (setq type (reftex-guess-label-type))) | |
52170
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
429 (setq cut (cdr type) |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
430 type (car type)) |
25280 | 431 (setq type (reftex-query-label-type)))) |
432 | |
52170
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
433 (let* ((refstyle |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
434 (cond ((reftex-typekey-check type reftex-vref-is-default) "\\vref") |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
435 ((reftex-typekey-check type reftex-fref-is-default) "\\fref") |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
436 (t "\\ref"))) |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
437 (reftex-format-ref-function reftex-format-ref-function) |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
438 (form "\\ref{%s}") |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
439 label labels sep sep1) |
25280 | 440 |
441 ;; Have the user select a label | |
442 (set-marker reftex-select-return-marker (point)) | |
443 (setq labels (save-excursion | |
52170
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
444 (reftex-offer-label-menu type))) |
25280 | 445 (reftex-ensure-compiled-variables) |
446 (set-marker reftex-select-return-marker nil) | |
47050
904fd28be439
Update to RefTeX 4.19
Carsten Dominik <dominik@science.uva.nl>
parents:
46683
diff
changeset
|
447 ;; If the first entry is the symbol 'concat, concat all labels. |
25280 | 448 ;; We keep the cdr of the first label for typekey etc information. |
449 (if (eq (car labels) 'concat) | |
52170
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
450 (setq labels (list (list (mapconcat 'car (cdr labels) ",") |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
451 (cdr (nth 1 labels)))))) |
25280 | 452 (setq type (nth 1 (car labels)) |
52170
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
453 form (or (cdr (assoc type reftex-typekey-to-format-alist)) |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
454 form)) |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
455 |
25280 | 456 (cond |
457 (no-insert | |
458 ;; Just return the first label | |
459 (car (car labels))) | |
460 ((null labels) | |
461 (message "Quit") | |
462 nil) | |
463 (t | |
464 (while labels | |
52170
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
465 (setq label (car (car labels)) |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
466 sep (nth 2 (car labels)) |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
467 sep1 (cdr (assoc sep reftex-multiref-punctuation)) |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
468 labels (cdr labels)) |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
469 (when cut |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
470 (backward-delete-char cut) |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
471 (setq cut nil)) |
25280 | 472 |
52170
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
473 ;; remove ~ if we do already have a space |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
474 (when (and (= ?~ (string-to-char form)) |
59534
9bad65481674
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
52401
diff
changeset
|
475 (member (preceding-char) '(?\ ?\t ?\n ?~))) |
52170
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
476 (setq form (substring form 1))) |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
477 ;; do we have a special format? |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
478 (setq reftex-format-ref-function |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
479 (cond |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
480 ((string= refstyle "\\vref") 'reftex-format-vref) |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
481 ((string= refstyle "\\fref") 'reftex-format-fref) |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
482 ((string= refstyle "\\Fref") 'reftex-format-Fref) |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
483 (t reftex-format-ref-function))) |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
484 ;; ok, insert the reference |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
485 (if sep1 (insert sep1)) |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
486 (insert |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
487 (if reftex-format-ref-function |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
488 (funcall reftex-format-ref-function label form) |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
489 (format form label label))) |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
490 ;; take out the initial ~ for good |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
491 (and (= ?~ (string-to-char form)) |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
492 (setq form (substring form 1)))) |
25280 | 493 (message "") |
494 label)))) | |
495 | |
496 (defun reftex-guess-label-type () | |
497 ;; Examine context to guess what a \ref might want to reference. | |
498 (let ((words reftex-words-to-typekey-alist) | |
52170
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
499 (case-fold-search t) |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
500 (bound (max (point-min) (- (point) 35))) |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
501 matched cell) |
25280 | 502 (save-excursion |
503 (while (and (setq cell (pop words)) | |
52170
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
504 (not (setq matched |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
505 (re-search-backward (car cell) bound t)))))) |
25280 | 506 (if matched |
52170
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
507 (cons (cdr cell) (- (match-end 0) (match-end 1))) |
25280 | 508 nil))) |
509 | |
510 (defvar reftex-select-label-map) | |
511 (defun reftex-offer-label-menu (typekey) | |
512 ;; Offer a menu with the appropriate labels. | |
513 (let* ((buf (current-buffer)) | |
52170
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
514 (xr-data (assq 'xr (symbol-value reftex-docstruct-symbol))) |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
515 (xr-alist (cons (cons "" (buffer-file-name)) (nth 1 xr-data))) |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
516 (xr-index 0) |
25280 | 517 (here-I-am (car (reftex-where-am-I))) |
52170
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
518 (here-I-am1 here-I-am) |
25280 | 519 (toc (reftex-typekey-check typekey reftex-label-menu-flags 0)) |
520 (files (reftex-typekey-check typekey reftex-label-menu-flags 7)) | |
521 (context (not (reftex-typekey-check | |
522 typekey reftex-label-menu-flags 3))) | |
523 (counter (reftex-typekey-check | |
524 typekey reftex-label-menu-flags 2)) | |
525 (follow (reftex-typekey-check | |
526 typekey reftex-label-menu-flags 4)) | |
527 (commented (nth 5 reftex-label-menu-flags)) | |
52170
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
528 (prefix "") |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
529 selection-buffers |
25280 | 530 offset rtn key data last-data entries) |
531 | |
532 (unwind-protect | |
533 (catch 'exit | |
534 (while t | |
535 (save-window-excursion | |
52170
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
536 (delete-other-windows) |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
537 (setq reftex-call-back-to-this-buffer buf |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
538 reftex-latex-syntax-table (syntax-table)) |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
539 (let ((default-major-mode 'reftex-select-label-mode)) |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
540 (if reftex-use-multiple-selection-buffers |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
541 (switch-to-buffer-other-window |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
542 (save-excursion |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
543 (set-buffer buf) |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
544 (reftex-make-selection-buffer-name typekey))) |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
545 (switch-to-buffer-other-window "*RefTeX Select*") |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
546 (reftex-erase-buffer))) |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
547 (unless (eq major-mode 'reftex-select-label-mode) |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
548 (reftex-select-label-mode)) |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
549 (add-to-list 'selection-buffers (current-buffer)) |
25280 | 550 (setq truncate-lines t) |
52170
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
551 (setq mode-line-format |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
552 (list "---- " 'mode-line-buffer-identification |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
553 " " 'global-mode-string " (" mode-name ")" |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
554 " S<" 'refstyle ">" |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
555 " -%-")) |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
556 (cond |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
557 ((= 0 (buffer-size)) |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
558 (let ((buffer-read-only nil)) |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
559 (message "Creating Selection Buffer...") |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
560 (setq offset (reftex-insert-docstruct |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
561 buf |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
562 toc |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
563 typekey |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
564 nil ; index |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
565 files |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
566 context |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
567 counter |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
568 commented |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
569 (or here-I-am offset) |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
570 prefix |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
571 nil ; no a toc buffer |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
572 )))) |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
573 (here-I-am |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
574 (setq offset (reftex-get-offset buf here-I-am typekey))) |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
575 (t (setq offset t))) |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
576 (setq buffer-read-only t) |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
577 (setq offset (or offset t)) |
25280 | 578 |
579 (setq here-I-am nil) ; turn off determination of offset | |
580 (setq rtn | |
581 (reftex-select-item | |
582 reftex-select-label-prompt | |
583 reftex-select-label-help | |
52170
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
584 reftex-select-label-map |
25280 | 585 offset |
586 'reftex-show-label-location follow)) | |
587 (setq key (car rtn) | |
588 data (nth 1 rtn) | |
589 last-data (nth 2 rtn) | |
52170
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
590 offset t) |
25280 | 591 (unless key (throw 'exit nil)) |
592 (cond | |
52170
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
593 ((eq key ?g) |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
594 ;; update buffer |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
595 (reftex-erase-buffer)) |
25280 | 596 ((or (eq key ?r) |
597 (eq key ?R)) | |
598 ;; rescan buffer | |
52170
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
599 (and current-prefix-arg (setq key ?R)) |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
600 (reftex-erase-buffer) |
25280 | 601 (reftex-reparse-document buf last-data key)) |
602 ((eq key ?c) | |
603 ;; toggle context mode | |
52170
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
604 (reftex-erase-buffer) |
25280 | 605 (setq context (not context))) |
606 ((eq key ?s) | |
607 ;; switch type | |
52170
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
608 (setq here-I-am here-I-am1) |
25280 | 609 (setq typekey (reftex-query-label-type))) |
610 ((eq key ?t) | |
26910
489a5439b988
* reftex.el (reftex-compile-variables): respect new structure of
Carsten Dominik <dominik@science.uva.nl>
parents:
25806
diff
changeset
|
611 ;; toggle table of contents display, or change depth |
52170
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
612 (reftex-erase-buffer) |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
613 (if current-prefix-arg |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
614 (setq reftex-toc-max-level (prefix-numeric-value |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
615 current-prefix-arg)) |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
616 (setq toc (not toc)))) |
25280 | 617 ((eq key ?F) |
618 ;; toggle display of included file borders | |
52170
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
619 (reftex-erase-buffer) |
25280 | 620 (setq files (not files))) |
621 ((eq key ?#) | |
622 ;; toggle counter display | |
52170
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
623 (reftex-erase-buffer) |
25280 | 624 (setq counter (not counter))) |
625 ((eq key ?%) | |
626 ;; toggle display of commented labels | |
52170
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
627 (reftex-erase-buffer) |
25280 | 628 (setq commented (not commented))) |
629 ((eq key ?l) | |
630 ;; reuse the last referenced label again | |
631 (setq entries reftex-last-used-reference) | |
632 (throw 'exit t)) | |
52170
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
633 ((eq key ?x) |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
634 ;; select an external document |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
635 (setq xr-index (reftex-select-external-document |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
636 xr-alist xr-index)) |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
637 (setq buf (or (reftex-get-file-buffer-force |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
638 (cdr (nth xr-index xr-alist))) |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
639 (error "Cannot switch document")) |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
640 prefix (or (car (nth xr-index xr-alist)) "")) |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
641 (set-buffer buf) |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
642 (reftex-access-scan-info)) |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
643 ((stringp key) |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
644 (setq entries |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
645 (list |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
646 (list |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
647 (or (assoc key (symbol-value reftex-docstruct-symbol)) |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
648 (list key typekey))))) |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
649 (throw 'exit t)) |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
650 ((memq key '(?a ?A return)) |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
651 (cond |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
652 (reftex-select-marked |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
653 (setq entries (nreverse reftex-select-marked))) |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
654 (data |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
655 (setq entries (list (list data)))) |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
656 (t (setq entries nil))) |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
657 (when entries |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
658 (if (equal key ?a) (push 'concat entries)) |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
659 (setq reftex-last-used-reference entries)) |
25280 | 660 (set-buffer buf) |
661 (throw 'exit t)) | |
52170
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
662 (t (error "This should not happen (reftex-offer-label-menu)")))))) |
25280 | 663 (save-excursion |
52170
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
664 (while reftex-buffers-with-changed-invisibility |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
665 (set-buffer (car (car reftex-buffers-with-changed-invisibility))) |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
666 (setq buffer-invisibility-spec |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
667 (cdr (pop reftex-buffers-with-changed-invisibility))))) |
25280 | 668 (mapcar (lambda (buf) (and (buffer-live-p buf) (bury-buffer buf))) |
52170
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
669 selection-buffers) |
25280 | 670 (reftex-kill-temporary-buffers)) |
671 ;; Add the prefixes, put together the relevant information in the form | |
46683
060f433ebf11
Updated to RefTeX 4.18
Carsten Dominik <dominik@science.uva.nl>
parents:
46612
diff
changeset
|
672 ;; (LABEL TYPEKEY SEPARATOR) and return a list of those. |
25280 | 673 (mapcar (lambda (x) |
52170
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
674 (if (listp x) |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
675 (list (concat prefix (car (car x))) |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
676 (nth 1 (car x)) |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
677 (nth 2 x)) |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
678 x)) |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
679 entries))) |
25280 | 680 |
681 (defun reftex-reparse-document (&optional buffer data key) | |
682 ;; Rescan the document. | |
683 (save-window-excursion | |
684 (save-excursion | |
685 (if buffer | |
686 (if (not (bufferp buffer)) | |
687 (error "No such buffer %s" (buffer-name buffer)) | |
688 (set-buffer buffer))) | |
689 (let ((arg (if (eq key ?R) '(16) '(4))) | |
690 (file (nth 3 data))) | |
691 (reftex-access-scan-info arg file))))) | |
692 | |
693 (defun reftex-query-label-type () | |
694 ;; Ask for label type | |
52170
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
695 (let ((key (reftex-select-with-char |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
696 reftex-type-query-prompt reftex-type-query-help 3))) |
25280 | 697 (unless (member (char-to-string key) reftex-typekey-list) |
698 (error "No such label type: %s" (char-to-string key))) | |
699 (char-to-string key))) | |
700 | |
52170
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
701 (defun reftex-show-label-location (data forward no-revisit |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
702 &optional stay error) |
25280 | 703 ;; View the definition site of a label in another window. |
704 ;; DATA is an entry from the docstruct list. | |
705 ;; FORWARD indicates if the label is likely forward from current point. | |
706 ;; NO-REVISIT means do not load a file to show this label. | |
707 ;; STAY means leave the new window selected. | |
708 ;; ERROR means throw an error exception when the label cannot be found. | |
709 ;; If ERROR is nil, the return value of this function indicates success. | |
710 (let* ((this-window (selected-window)) | |
52170
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
711 (errorf (if error 'error 'message)) |
25280 | 712 label file buffer re found) |
713 | |
714 (catch 'exit | |
715 (setq label (nth 0 data) | |
52170
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
716 file (nth 3 data)) |
25280 | 717 |
718 (unless file | |
52170
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
719 (funcall errorf "Unknown label - reparse might help") |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
720 (throw 'exit nil)) |
25280 | 721 |
722 ;; Goto the file in another window | |
52170
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
723 (setq buffer |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
724 (if no-revisit |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
725 (reftex-get-buffer-visiting file) |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
726 (reftex-get-file-buffer-force |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
727 file (not reftex-keep-temporary-buffers)))) |
25280 | 728 (if buffer |
729 ;; good - the file is available | |
730 (switch-to-buffer-other-window buffer) | |
731 ;; we have got a problem here. The file does not exist. | |
732 ;; Let' get out of here.. | |
52170
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
733 (funcall errorf "Label %s not found" label) |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
734 (throw 'exit nil)) |
25280 | 735 |
736 ;; search for that label | |
737 (setq re (format reftex-find-label-regexp-format (regexp-quote label))) | |
738 (setq found | |
52170
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
739 (if forward |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
740 (re-search-forward re nil t) |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
741 (re-search-backward re nil t))) |
25280 | 742 (unless found |
743 (goto-char (point-min)) | |
52170
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
744 (unless (setq found (re-search-forward re nil t)) |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
745 ;; Ooops. Must be in a macro with distributed args. |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
746 (setq found |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
747 (re-search-forward |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
748 (format reftex-find-label-regexp-format2 |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
749 (regexp-quote label)) nil t)))) |
25280 | 750 (if (match-end 3) |
52170
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
751 (progn |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
752 (reftex-highlight 0 (match-beginning 3) (match-end 3)) |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
753 (reftex-show-entry (match-beginning 3) (match-end 3)) |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
754 (recenter '(4)) |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
755 (unless stay (select-window this-window))) |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
756 (select-window this-window) |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
757 (funcall errorf "Label %s not found" label)) |
25280 | 758 found))) |
759 | |
760 (defvar font-lock-mode) | |
761 (defun reftex-show-entry (beg-hlt end-hlt) | |
762 ;; Show entry if point is hidden | |
763 (let* ((n (/ (reftex-window-height) 2)) | |
764 (beg (save-excursion | |
765 (re-search-backward "[\n\r]" nil 1 n) (point))) | |
766 (end (save-excursion | |
767 (re-search-forward "[\n\r]" nil 1 n) (point)))) | |
768 (cond | |
769 ((and (boundp 'buffer-invisibility-spec) buffer-invisibility-spec | |
52170
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
770 (get-char-property (1+ beg-hlt) 'invisible)) |
25280 | 771 ;; Invisible with text properties. That is easy to change. |
772 (push (cons (current-buffer) buffer-invisibility-spec) | |
52170
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
773 reftex-buffers-with-changed-invisibility) |
25280 | 774 (setq buffer-invisibility-spec nil)) |
775 ((string-match "\r" (buffer-substring beg end)) | |
776 ;; Invisible with selective display. We need to copy it. | |
777 (let ((string (buffer-substring-no-properties beg end))) | |
52170
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
778 (switch-to-buffer "*RefTeX Context Copy*") |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
779 (setq buffer-read-only nil) |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
780 (erase-buffer) |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
781 (insert string) |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
782 (subst-char-in-region (point-min) (point-max) ?\r ?\n t) |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
783 (goto-char (- beg-hlt beg)) |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
784 (reftex-highlight 0 (1+ (- beg-hlt beg)) (1+ (- end-hlt beg))) |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
785 (if (reftex-refontify) |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
786 (when (or (not (eq major-mode 'latex-mode)) |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
787 (not font-lock-mode)) |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
788 (latex-mode) |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
789 (run-hook-with-args |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
790 'reftex-pre-refontification-functions |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
791 reftex-call-back-to-this-buffer 'reftex-hidden) |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
792 (turn-on-font-lock)) |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
793 (when (or (not (eq major-mode 'fundamental-mode)) |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
794 font-lock-mode) |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
795 (fundamental-mode))) |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
796 (run-hooks 'reftex-display-copied-context-hook) |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
797 (setq buffer-read-only t)))))) |
25280 | 798 |
799 (defun reftex-varioref-vref () | |
37998
706af946b1e7
* reftex-ref.el (reftex-select-label-help): Added "z" key
Carsten Dominik <dominik@science.uva.nl>
parents:
34402
diff
changeset
|
800 "Insert a reference using the `\\vref' macro from the varioref package." |
25280 | 801 (interactive) |
802 (let ((reftex-format-ref-function 'reftex-format-vref)) | |
803 (reftex-reference))) | |
804 (defun reftex-fancyref-fref () | |
37998
706af946b1e7
* reftex-ref.el (reftex-select-label-help): Added "z" key
Carsten Dominik <dominik@science.uva.nl>
parents:
34402
diff
changeset
|
805 "Insert a reference using the `\\fref' macro from the fancyref package." |
25280 | 806 (interactive) |
807 (let ((reftex-format-ref-function 'reftex-format-fref) | |
52170
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
808 ;;(reftex-guess-label-type nil) ;FIXME do we want this???? |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
809 ) |
25280 | 810 (reftex-reference))) |
811 (defun reftex-fancyref-Fref () | |
37998
706af946b1e7
* reftex-ref.el (reftex-select-label-help): Added "z" key
Carsten Dominik <dominik@science.uva.nl>
parents:
34402
diff
changeset
|
812 "Insert a reference using the `\\Fref' macro from the fancyref package." |
25280 | 813 (interactive) |
814 (let ((reftex-format-ref-function 'reftex-format-Fref) | |
52170
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
815 ;;(reftex-guess-label-type nil) ;FIXME do we want this???? |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
816 ) |
25280 | 817 (reftex-reference))) |
818 | |
819 (defun reftex-format-vref (label fmt) | |
820 (while (string-match "\\\\ref{" fmt) | |
821 (setq fmt (replace-match "\\vref{" t t fmt))) | |
822 (format fmt label label)) | |
823 (defun reftex-format-Fref (label def-fmt) | |
824 (format "\\Fref{%s}" label)) | |
825 (defun reftex-format-fref (label def-fmt) | |
826 (format "\\fref{%s}" label)) | |
827 | |
47050
904fd28be439
Update to RefTeX 4.19
Carsten Dominik <dominik@science.uva.nl>
parents:
46683
diff
changeset
|
828 (defun reftex-goto-label (&optional other-window) |
904fd28be439
Update to RefTeX 4.19
Carsten Dominik <dominik@science.uva.nl>
parents:
46683
diff
changeset
|
829 "Prompt for a label (with completion) and jump to the location of this label. |
904fd28be439
Update to RefTeX 4.19
Carsten Dominik <dominik@science.uva.nl>
parents:
46683
diff
changeset
|
830 Optional prefix argument OTHER-WINDOW goes to the label in another window." |
904fd28be439
Update to RefTeX 4.19
Carsten Dominik <dominik@science.uva.nl>
parents:
46683
diff
changeset
|
831 (interactive "P") |
904fd28be439
Update to RefTeX 4.19
Carsten Dominik <dominik@science.uva.nl>
parents:
46683
diff
changeset
|
832 (reftex-access-scan-info) |
904fd28be439
Update to RefTeX 4.19
Carsten Dominik <dominik@science.uva.nl>
parents:
46683
diff
changeset
|
833 (let* ((wcfg (current-window-configuration)) |
52170
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
834 (docstruct (symbol-value reftex-docstruct-symbol)) |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
835 (label (completing-read "Label: " docstruct |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
836 (lambda (x) (stringp (car x))) t)) |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
837 (selection (assoc label docstruct)) |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
838 (where (progn |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
839 (reftex-show-label-location selection t nil 'stay) |
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
840 (point-marker)))) |
47050
904fd28be439
Update to RefTeX 4.19
Carsten Dominik <dominik@science.uva.nl>
parents:
46683
diff
changeset
|
841 (unless other-window |
904fd28be439
Update to RefTeX 4.19
Carsten Dominik <dominik@science.uva.nl>
parents:
46683
diff
changeset
|
842 (set-window-configuration wcfg) |
904fd28be439
Update to RefTeX 4.19
Carsten Dominik <dominik@science.uva.nl>
parents:
46683
diff
changeset
|
843 (switch-to-buffer (marker-buffer where)) |
52170
27340819ef07
Updated to version 4.21
Carsten Dominik <dominik@science.uva.nl>
parents:
50978
diff
changeset
|
844 (goto-char where)) |
47050
904fd28be439
Update to RefTeX 4.19
Carsten Dominik <dominik@science.uva.nl>
parents:
46683
diff
changeset
|
845 (reftex-unhighlight 0))) |
904fd28be439
Update to RefTeX 4.19
Carsten Dominik <dominik@science.uva.nl>
parents:
46683
diff
changeset
|
846 |
904fd28be439
Update to RefTeX 4.19
Carsten Dominik <dominik@science.uva.nl>
parents:
46683
diff
changeset
|
847 |
904fd28be439
Update to RefTeX 4.19
Carsten Dominik <dominik@science.uva.nl>
parents:
46683
diff
changeset
|
848 |
52401 | 849 ;;; arch-tag: 52f14032-fb76-4d31-954f-750c72415675 |
25280 | 850 ;;; reftex-ref.el ends here |