aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEli Zaretskii2002-02-19 11:21:23 +0000
committerEli Zaretskii2002-02-19 11:21:23 +0000
commitdf8f2eb0c07bce29628b6b0b58894bc465230304 (patch)
tree35463641c2746c35f4bfa5ddbba1eddfea680974
parentf1ec00075657b5a578b48ed4877695e5abbf1714 (diff)
downloademacs-df8f2eb0c07bce29628b6b0b58894bc465230304.tar.gz
emacs-df8f2eb0c07bce29628b6b0b58894bc465230304.zip
(bibtex-parse-keys): Put save-match-data around function body.
-rw-r--r--lisp/textmodes/bibtex.el115
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)