/[emacs]/emacs/lisp/textmodes/bibtex.el
ViewVC logotype

Diff of /emacs/lisp/textmodes/bibtex.el

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.66 by rms, Thu Feb 14 01:55:12 2002 UTC revision 1.67 by eliz, Tue Feb 19 11:21:23 2002 UTC
# Line 2324  The generation algorithm works as follow Line 2324  The generation algorithm works as follow
2324        (let* ((case-fold-search t)        (let* ((case-fold-search t)
2325               (reference-keys (if add bibtex-reference-keys)))               (reference-keys (if add bibtex-reference-keys)))
2326          (save-excursion          (save-excursion
2327            (goto-char (point-min))            (save-match-data
2328            (if verbose              (goto-char (point-min))
               (bibtex-progress-message  
                (concat (buffer-name) ": parsing reference keys")))  
           (if (catch 'userkey  
                 (bibtex-skip-to-valid-entry)  
                 (while (not (eobp))  
                   (if (and  
                        abortable  
                        (input-pending-p))  
                       (throw 'userkey t))  
                   (if verbose  
                       (bibtex-progress-message))  
                   (let (reference-key  
                         xrefd-reference-key)  
                     (cond  
                      ((looking-at bibtex-entry-head)  
                       (setq  
                        reference-key  
                        (buffer-substring-no-properties  
                         (match-beginning bibtex-key-in-head)  
                         (match-end bibtex-key-in-head)))  
                       (let ((p (point))  
                             (m (bibtex-end-of-entry)))  
                         (goto-char p)  
                         (let ((bounds (bibtex-search-forward-field "crossref" m)))  
                           (if bounds  
                               (setq  
                                xrefd-reference-key  
                                (buffer-substring-no-properties  
                                 (1+ (bibtex-start-of-text-in-field bounds))  
                                 (1- (bibtex-end-of-text-in-field bounds))))))))  
                      ((bibtex-parse-string)  
                       (let ((bounds (bibtex-parse-string)))  
                         (setq  
                          reference-key  
                          (buffer-substring-no-properties  
                           (bibtex-start-of-reference-key-in-string bounds)  
                           (bibtex-end-of-reference-key-in-string bounds))))))  
                     (forward-char)  
                     (bibtex-skip-to-valid-entry)  
                     (if (not (assoc reference-key reference-keys))  
                         (setq reference-keys  
                               (cons (list reference-key) reference-keys)))  
                     (if (and xrefd-reference-key  
                              (not (assoc xrefd-reference-key reference-keys)))  
                         (setq reference-keys  
                               (cons (list xrefd-reference-key) reference-keys))))))  
               ;; user has aborted by typing a key --> return nil  
               nil  
             ;; successful operation --> return t  
             (setq  
              bibtex-buffer-last-parsed-tick (buffer-modified-tick)  
              bibtex-reference-keys reference-keys)  
2329              (if verbose              (if verbose
2330                  (bibtex-progress-message 'done))                  (bibtex-progress-message
2331              t)))))                   (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))))))
2385    
2386  (defun bibtex-parse-buffers-stealthily ()  (defun bibtex-parse-buffers-stealthily ()
2387    ;; Called by bibtex-run-with-idle-timer. Whenever emacs has been idle    ;; Called by bibtex-run-with-idle-timer. Whenever emacs has been idle
# Line 2700  non-nil. Line 2701  non-nil.
2701        (bibtex-run-with-idle-timer        (bibtex-run-with-idle-timer
2702         1 nil         1 nil
2703         (lambda ()         (lambda ()
2704           (bibtex-parse-keys nil t t))))           (bibtex-parse-keys nil nil t))))
2705    ;; to get buffer parsed once if everything else (including things    ;; to get buffer parsed once if everything else (including things
2706    ;; installed in bibtex-mode-hook) has done its work    ;; installed in bibtex-mode-hook) has done its work
2707    (if (not bibtex-parse-idle-timer)    (if (not bibtex-parse-idle-timer)

Legend:
Removed from v.1.66  
changed lines
  Added in v.1.67

savannah-hackers-public@gnu.org
ViewVC Help
Powered by ViewVC 1.1.26