diff options
| author | Eli Zaretskii | 2002-02-19 11:21:23 +0000 |
|---|---|---|
| committer | Eli Zaretskii | 2002-02-19 11:21:23 +0000 |
| commit | df8f2eb0c07bce29628b6b0b58894bc465230304 (patch) | |
| tree | 35463641c2746c35f4bfa5ddbba1eddfea680974 | |
| parent | f1ec00075657b5a578b48ed4877695e5abbf1714 (diff) | |
| download | emacs-df8f2eb0c07bce29628b6b0b58894bc465230304.tar.gz emacs-df8f2eb0c07bce29628b6b0b58894bc465230304.zip | |
(bibtex-parse-keys): Put save-match-data around function body.
| -rw-r--r-- | lisp/textmodes/bibtex.el | 115 |
1 files changed, 58 insertions, 57 deletions
diff --git a/lisp/textmodes/bibtex.el b/lisp/textmodes/bibtex.el index 66264a60faf..8012d643683 100644 --- a/lisp/textmodes/bibtex.el +++ b/lisp/textmodes/bibtex.el | |||
| @@ -2324,63 +2324,64 @@ The generation algorithm works as follows: | |||
| 2324 | (let* ((case-fold-search t) | 2324 | (let* ((case-fold-search t) |
| 2325 | (reference-keys (if add bibtex-reference-keys))) | 2325 | (reference-keys (if add bibtex-reference-keys))) |
| 2326 | (save-excursion | 2326 | (save-excursion |
| 2327 | (goto-char (point-min)) | 2327 | (save-match-data |
| 2328 | (if verbose | 2328 | (goto-char (point-min)) |
| 2329 | (bibtex-progress-message | ||
| 2330 | (concat (buffer-name) ": parsing reference keys"))) | ||
| 2331 | (if (catch 'userkey | ||
| 2332 | (bibtex-skip-to-valid-entry) | ||
| 2333 | (while (not (eobp)) | ||
| 2334 | (if (and | ||
| 2335 | abortable | ||
| 2336 | (input-pending-p)) | ||
| 2337 | (throw 'userkey t)) | ||
| 2338 | (if verbose | ||
| 2339 | (bibtex-progress-message)) | ||
| 2340 | (let (reference-key | ||
| 2341 | xrefd-reference-key) | ||
| 2342 | (cond | ||
| 2343 | ((looking-at bibtex-entry-head) | ||
| 2344 | (setq | ||
| 2345 | reference-key | ||
| 2346 | (buffer-substring-no-properties | ||
| 2347 | (match-beginning bibtex-key-in-head) | ||
| 2348 | (match-end bibtex-key-in-head))) | ||
| 2349 | (let ((p (point)) | ||
| 2350 | (m (bibtex-end-of-entry))) | ||
| 2351 | (goto-char p) | ||
| 2352 | (let ((bounds (bibtex-search-forward-field "crossref" m))) | ||
| 2353 | (if bounds | ||
| 2354 | (setq | ||
| 2355 | xrefd-reference-key | ||
| 2356 | (buffer-substring-no-properties | ||
| 2357 | (1+ (bibtex-start-of-text-in-field bounds)) | ||
| 2358 | (1- (bibtex-end-of-text-in-field bounds)))))))) | ||
| 2359 | ((bibtex-parse-string) | ||
| 2360 | (let ((bounds (bibtex-parse-string))) | ||
| 2361 | (setq | ||
| 2362 | reference-key | ||
| 2363 | (buffer-substring-no-properties | ||
| 2364 | (bibtex-start-of-reference-key-in-string bounds) | ||
| 2365 | (bibtex-end-of-reference-key-in-string bounds)))))) | ||
| 2366 | (forward-char) | ||
| 2367 | (bibtex-skip-to-valid-entry) | ||
| 2368 | (if (not (assoc reference-key reference-keys)) | ||
| 2369 | (setq reference-keys | ||
| 2370 | (cons (list reference-key) reference-keys))) | ||
| 2371 | (if (and xrefd-reference-key | ||
| 2372 | (not (assoc xrefd-reference-key reference-keys))) | ||
| 2373 | (setq reference-keys | ||
| 2374 | (cons (list xrefd-reference-key) reference-keys)))))) | ||
| 2375 | ;; user has aborted by typing a key --> return nil | ||
| 2376 | nil | ||
| 2377 | ;; successful operation --> return t | ||
| 2378 | (setq | ||
| 2379 | bibtex-buffer-last-parsed-tick (buffer-modified-tick) | ||
| 2380 | bibtex-reference-keys reference-keys) | ||
| 2381 | (if verbose | 2329 | (if verbose |
| 2382 | (bibtex-progress-message 'done)) | 2330 | (bibtex-progress-message |
| 2383 | t))))) | 2331 | (concat (buffer-name) ": parsing reference keys"))) |
| 2332 | (if (catch 'userkey | ||
| 2333 | (bibtex-skip-to-valid-entry) | ||
| 2334 | (while (not (eobp)) | ||
| 2335 | (if (and | ||
| 2336 | abortable | ||
| 2337 | (input-pending-p)) | ||
| 2338 | (throw 'userkey t)) | ||
| 2339 | (if verbose | ||
| 2340 | (bibtex-progress-message)) | ||
| 2341 | (let (reference-key | ||
| 2342 | xrefd-reference-key) | ||
| 2343 | (cond | ||
| 2344 | ((looking-at bibtex-entry-head) | ||
| 2345 | (setq | ||
| 2346 | reference-key | ||
| 2347 | (buffer-substring-no-properties | ||
| 2348 | (match-beginning bibtex-key-in-head) | ||
| 2349 | (match-end bibtex-key-in-head))) | ||
| 2350 | (let ((p (point)) | ||
| 2351 | (m (bibtex-end-of-entry))) | ||
| 2352 | (goto-char p) | ||
| 2353 | (let ((bounds (bibtex-search-forward-field "crossref" m))) | ||
| 2354 | (if bounds | ||
| 2355 | (setq | ||
| 2356 | xrefd-reference-key | ||
| 2357 | (buffer-substring-no-properties | ||
| 2358 | (1+ (bibtex-start-of-text-in-field bounds)) | ||
| 2359 | (1- (bibtex-end-of-text-in-field bounds)))))))) | ||
| 2360 | ((bibtex-parse-string) | ||
| 2361 | (let ((bounds (bibtex-parse-string))) | ||
| 2362 | (setq | ||
| 2363 | reference-key | ||
| 2364 | (buffer-substring-no-properties | ||
| 2365 | (bibtex-start-of-reference-key-in-string bounds) | ||
| 2366 | (bibtex-end-of-reference-key-in-string bounds)))))) | ||
| 2367 | (forward-char) | ||
| 2368 | (bibtex-skip-to-valid-entry) | ||
| 2369 | (if (not (assoc reference-key reference-keys)) | ||
| 2370 | (setq reference-keys | ||
| 2371 | (cons (list reference-key) reference-keys))) | ||
| 2372 | (if (and xrefd-reference-key | ||
| 2373 | (not (assoc xrefd-reference-key reference-keys))) | ||
| 2374 | (setq reference-keys | ||
| 2375 | (cons (list xrefd-reference-key) reference-keys)))))) | ||
| 2376 | ;; user has aborted by typing a key --> return nil | ||
| 2377 | nil | ||
| 2378 | ;; successful operation --> return t | ||
| 2379 | (setq | ||
| 2380 | bibtex-buffer-last-parsed-tick (buffer-modified-tick) | ||
| 2381 | bibtex-reference-keys reference-keys) | ||
| 2382 | (if verbose | ||
| 2383 | (bibtex-progress-message 'done)) | ||
| 2384 | t)))))) | ||
| 2384 | 2385 | ||
| 2385 | (defun bibtex-parse-buffers-stealthily () | 2386 | (defun bibtex-parse-buffers-stealthily () |
| 2386 | ;; Called by bibtex-run-with-idle-timer. Whenever emacs has been idle | 2387 | ;; Called by bibtex-run-with-idle-timer. Whenever emacs has been idle |
| @@ -2700,7 +2701,7 @@ non-nil. | |||
| 2700 | (bibtex-run-with-idle-timer | 2701 | (bibtex-run-with-idle-timer |
| 2701 | 1 nil | 2702 | 1 nil |
| 2702 | (lambda () | 2703 | (lambda () |
| 2703 | (bibtex-parse-keys nil t t)))) | 2704 | (bibtex-parse-keys nil nil t)))) |
| 2704 | ;; to get buffer parsed once if everything else (including things | 2705 | ;; to get buffer parsed once if everything else (including things |
| 2705 | ;; installed in bibtex-mode-hook) has done its work | 2706 | ;; installed in bibtex-mode-hook) has done its work |
| 2706 | (if (not bibtex-parse-idle-timer) | 2707 | (if (not bibtex-parse-idle-timer) |