• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /macosx-10.10.1/emacs-93/emacs/lisp/textmodes/

Lines Matching +defs:reftex +defs:mode

0 ;;; reftex.el --- minor mode for doing \label, \ref, \cite, \index in LaTeX
31 ;; RefTeX is a minor mode with distinct support for \ref, \label, \cite,
50 ;; To turn RefTeX Mode on and off in a buffer, use `M-x reftex-mode'.
55 ;; (add-hook 'LaTeX-mode-hook 'turn-on-reftex) ; AUCTeX LaTeX mode
56 ;; (add-hook 'latex-mode-hook 'turn-on-reftex) ; Emacs latex mode
65 ;; One way to view this documentation is `M-x reftex-info RET'.
104 ;; reftex-mode'. To turn on RefTeX Mode for all LaTeX files, add the
107 ;; (add-hook 'LaTeX-mode-hook 'turn-on-reftex) ; with AUCTeX LaTeX mode
108 ;; (add-hook 'latex-mode-hook 'turn-on-reftex) ; with Emacs latex mode
114 ;; Typing `C-c =' (`reftex-toc') will show a table of contents of the
125 ;; `reftex-label-alist').
128 ;; Type `C-c (' (`reftex-label') to insert a label at point.
137 ;; `reftex-insert-label-flags'.
140 ;; To make a reference, type `C-c )' (`reftex-reference'). This
147 ;; Typing `C-c [' (`reftex-citation') will let you specify a regular
152 ;; the variable `reftex-cite-format' if you want to insert different
160 ;; macros you have defined (`reftex-index-macros'). Multiple indices
165 ;; `C-c /' (`reftex-index-selection-or-word'). The default macro
166 ;; `reftex-index-default-macro' will be used. For a more
167 ;; complex entry type `C-c <' (`reftex-index'), select any of
171 ;; Type `C-c \' (`reftex-index-phrase-selection-or-word') to add
178 ;; >' (`reftex-display-index'). From that buffer you can check
185 ;; (`reftex-view-crossref') to display corresponding locations in the
201 ;; list internally when `reftex-label' and `reftex-index' are used.
208 ;; If your major LaTeX mode is AUCTeX, RefTeX can cooperate with it
209 ;; (see variable `reftex-plug-into-AUCTeX'). AUCTeX contains style
216 ;; (setq reftex-enable-partial-scans t)
217 ;; (setq reftex-save-parse-info t)
218 ;; (setq reftex-use-multiple-selection-buffers t)
221 ;; (setq reftex-plug-into-AUCTeX t)
225 ;; `reftex-label-alist' (for label macros/environments)
226 ;; `reftex-section-levels' (for sectioning commands)
227 ;; `reftex-cite-format' (for `\cite'-like macros)
228 ;; `reftex-index-macros' (for `\index'-like macros)
229 ;; `reftex-index-default-macro' (to set the default macro)
285 (defvar reftex-tables-dirty t
289 (defun reftex-set-dirty (symbol value)
290 (setq reftex-tables-dirty t)
298 (require 'reftex-vars)
303 ;;; Define the formal stuff for a minor mode named RefTeX.
306 (defconst reftex-version "RefTeX version 4.31"
309 (defvar reftex-mode nil
310 "Determines if RefTeX mode is active.")
311 (make-variable-buffer-local 'reftex-mode)
313 (defvar reftex-mode-map (make-sparse-keymap)
314 "Keymap for RefTeX mode.")
316 (defvar reftex-mode-menu nil)
317 (defvar reftex-syntax-table nil)
318 (defvar reftex-syntax-table-for-bib nil)
320 (unless reftex-syntax-table
321 (setq reftex-syntax-table (copy-syntax-table))
322 (modify-syntax-entry ?\( "." reftex-syntax-table)
323 (modify-syntax-entry ?\) "." reftex-syntax-table))
325 (unless reftex-syntax-table-for-bib
326 (setq reftex-syntax-table-for-bib
327 (copy-syntax-table reftex-syntax-table))
328 (modify-syntax-entry ?\' "." reftex-syntax-table-for-bib)
329 (modify-syntax-entry ?\" "." reftex-syntax-table-for-bib)
330 (modify-syntax-entry ?\[ "." reftex-syntax-table-for-bib)
331 (modify-syntax-entry ?\] "." reftex-syntax-table-for-bib))
334 ;; to make the compilation of reftex-mode not complain.
335 (defvar reftex-auto-view-crossref-timer nil
337 (defvar reftex-toc-auto-recenter-timer nil
341 (defun turn-on-reftex ()
342 "Turn on RefTeX mode."
343 (reftex-mode t))
346 (defun reftex-mode (&optional arg)
347 "Minor mode with distinct support for \\label, \\ref and \\cite in LaTeX.
349 \\<reftex-mode-map>A Table of Contents of the entire (multifile) document with browsing
350 capabilities is available with `\\[reftex-toc]'.
352 Labels can be created with `\\[reftex-label]' and referenced with `\\[reftex-reference]'.
357 Citations can be made with `\\[reftex-citation]' which will use a regular expression
361 Index entries can be made with `\\[reftex-index-selection-or-word]' which indexes the word at point
363 `\\[reftex-index]'. `\\[reftex-display-index]' displays the compiled index.
369 You can view this information with `\\[reftex-info]'.
371 \\{reftex-mode-map}
378 (setq reftex-mode (not (or (and (null arg) reftex-mode)
381 (if reftex-mode
384 (easy-menu-add reftex-mode-menu)
385 (and reftex-plug-into-AUCTeX
386 (reftex-plug-into-AUCTeX))
387 (unless (get 'reftex-auto-view-crossref 'initialized)
388 (and reftex-auto-view-crossref
389 (reftex-toggle-auto-view-crossref))
390 (put 'reftex-auto-view-crossref 'initialized t))
391 (unless (get 'reftex-auto-recenter-toc 'initialized)
392 (and (eq reftex-auto-recenter-toc t)
393 (reftex-toggle-auto-toc-recenter))
394 (put 'reftex-auto-recenter-toc 'initialized t))
397 (setq reftex-syntax-table (copy-syntax-table (syntax-table)))
398 (modify-syntax-entry ?\( "." reftex-syntax-table)
399 (modify-syntax-entry ?\) "." reftex-syntax-table)
401 (setq reftex-syntax-table-for-bib
402 (copy-syntax-table reftex-syntax-table))
403 (modify-syntax-entry ?\' "." reftex-syntax-table-for-bib)
404 (modify-syntax-entry ?\" "." reftex-syntax-table-for-bib)
405 (modify-syntax-entry ?\[ "." reftex-syntax-table-for-bib)
406 (modify-syntax-entry ?\] "." reftex-syntax-table-for-bib)
408 (run-hooks 'reftex-mode-hook))
410 (easy-menu-remove reftex-mode-menu)))
412 (if (fboundp 'add-minor-mode)
415 (put 'reftex-mode :included '(memq major-mode '(latex-mode tex-mode)))
416 (put 'reftex-mode :menu-tag "RefTeX Mode")
417 (add-minor-mode 'reftex-mode " Ref" reftex-mode-map))
419 (unless (assoc 'reftex-mode minor-mode-alist)
420 (push '(reftex-mode " Ref") minor-mode-alist))
421 (unless (assoc 'reftex-mode minor-mode-map-alist)
422 (push (cons 'reftex-mode reftex-mode-map) minor-mode-map-alist)))
424 (defvar reftex-docstruct-symbol)
425 (defun reftex-kill-buffer-hook ()
430 (when (and (boundp 'reftex-mode) reftex-mode
431 (boundp 'reftex-save-parse-info) reftex-save-parse-info
432 (boundp 'reftex-docstruct-symbol) reftex-docstruct-symbol
433 (symbol-value reftex-docstruct-symbol)
434 (get reftex-docstruct-symbol 'modified))
437 (reftex-access-parse-file 'write)
440 (defun reftex-kill-emacs-hook ()
441 "Call `reftex-kill-buffer-hook' on all buffers."
446 (reftex-kill-buffer-hook))
457 (defvar outline-minor-mode)
458 (defvar font-lock-mode)
469 ;;; `reftex-master-index-list' is an alist which connects the true file name
475 (defconst reftex-multifile-symbols
476 '(reftex-docstruct-symbol))
479 (defvar reftex-master-index-list nil)
482 (defvar reftex-multifile-index 0)
485 (defvar reftex-docstruct-symbol nil)
486 (make-variable-buffer-local 'reftex-docstruct-symbol)
488 (defun reftex-next-multifile-index ()
490 (incf reftex-multifile-index))
492 (defun reftex-tie-multifile-symbols ()
496 (let* ((master (file-truename (reftex-TeX-master-file)))
497 (index (assoc master reftex-master-index-list))
498 (symlist reftex-multifile-symbols)
505 (setq index (reftex-next-multifile-index)
507 (push (cons master index) reftex-master-index-list))
519 (put (symbol-value symbol) 'reftex-index-macros-style '(default))))
524 (defun reftex-untie-multifile-symbols ()
526 (let ((symlist reftex-multifile-symbols)
533 (defun reftex-TeX-master-file ()
545 ((fboundp 'tex-main-file) (tex-main-file)) ; Emacs LaTeX mode
573 (reftex-get-buffer-visiting (concat master ".tex")))
577 (reftex-get-buffer-visiting master))
585 (defun reftex-is-multi ()
587 (let ((entry (assq 'is-multi (symbol-value reftex-docstruct-symbol))))
592 (defun reftex-set-cite-format (value)
593 "Set the document-local value of `reftex-cite-format'.
595 `reftex-cite-format'. See the documentation of `reftex-cite-format'
597 (unless reftex-docstruct-symbol
598 (reftex-tie-multifile-symbols))
599 (when (and reftex-docstruct-symbol
600 (symbolp reftex-docstruct-symbol))
601 (put reftex-docstruct-symbol 'reftex-cite-format value)))
603 (defun reftex-get-cite-format ()
605 ;; reftex-cite-format-symbol, or the global value in reftex-cite-format.
606 (if (and reftex-docstruct-symbol
607 (symbolp reftex-docstruct-symbol)
608 (get reftex-docstruct-symbol 'reftex-cite-format))
609 (get reftex-docstruct-symbol 'reftex-cite-format)
610 reftex-cite-format))
612 (defun reftex-add-index-macros (entry-list)
613 "Add index macro descriptions to `reftex-index-macros-style'.
614 The format of ENTRY-LIST is exactly like `reftex-index-macros'. See there
618 `reftex-index-entries', and before the defaults. Any changes made to
619 `reftex-label-alist-style' will raise a flag to the effect that
621 (unless reftex-docstruct-symbol
622 (reftex-tie-multifile-symbols))
623 (when (and reftex-docstruct-symbol
624 (symbolp reftex-docstruct-symbol))
625 (let ((list (get reftex-docstruct-symbol 'reftex-index-macros-style))
632 (setq list (reftex-remove-symbols-from-list list)))
635 (setq reftex-tables-dirty t
639 (put reftex-docstruct-symbol 'reftex-index-macros-style list)))))
643 ;;; Functions to compile the tables, reset the mode etc.
645 ;; The following constants are derived from `reftex-label-alist'.
648 (defvar reftex-type-query-prompt nil)
651 (defvar reftex-type-query-help nil)
654 (defvar reftex-typekey-to-format-alist nil)
657 (defvar reftex-typekey-to-prefix-alist nil)
660 (defvar reftex-env-or-mac-alist nil)
663 (defvar reftex-special-env-parsers nil)
666 (defvar reftex-label-mac-list nil)
669 (defvar reftex-label-env-list nil)
672 (defvar reftex-typekey-list nil)
675 (defvar reftex-words-to-typekey-alist nil)
677 (defvar reftex-prefix-to-typekey-alist nil)
680 (defvar reftex-last-used-reference (list nil nil nil nil))
683 (defvar reftex-key-to-index-macro-alist nil)
685 (defvar reftex-query-index-macro-prompt nil)
687 (defvar reftex-query-index-macro-help nil)
689 ;; The message when follow-mode is suspended
690 (defvar reftex-no-follow-message
691 "No follow-mode into unvisited file. Press SPC to visit it.")
692 (defvar reftex-no-info-message
693 "%s: info not available, use `\\[reftex-view-crossref]' to get it.")
696 (defvar reftex-default-context-position nil)
697 (defvar reftex-location-start nil)
698 (defvar reftex-call-back-to-this-buffer nil)
699 (defvar reftex-select-return-marker (make-marker))
700 (defvar reftex-active-toc nil)
701 (defvar reftex-tex-path nil)
702 (defvar reftex-bib-path nil)
703 (defvar reftex-select-marked nil)
704 (defvar reftex-last-follow-point nil)
705 (defvar reftex-latex-syntax-table nil)
706 (defvar reftex-prefix nil)
707 (defvar reftex-section-levels-all nil)
708 (defvar reftex-buffers-with-changed-invisibility nil)
709 (defvar reftex-callback-fwd t)
710 (defvar reftex-last-toc-master nil
711 "Stores the name of the tex file that `reftex-toc' was last run on.")
713 (defvar reftex-recursive-edit-marker (make-marker))
716 (defvar reftex-buffers-to-kill nil)
719 (defvar reftex-section-regexp nil)
720 (defvar reftex-section-or-include-regexp nil)
721 (defvar reftex-index-macro-regexp nil)
722 (defvar reftex-index-level-re nil)
723 (defvar reftex-index-key-end-re nil)
724 (defvar reftex-find-index-entry-regexp-format nil)
725 (defvar reftex-everything-regexp nil)
726 (defvar reftex-everything-regexp-no-index nil)
727 (defvar reftex-index-re nil)
728 (defvar reftex-find-citation-regexp-format
730 (defvar reftex-find-reference-format
732 (defvar reftex-macros-with-labels nil)
733 (defvar reftex-macros-with-index nil)
734 (defvar reftex-index-macro-alist nil)
735 (defvar reftex-find-label-regexp-format nil)
736 (defvar reftex-find-label-regexp-format2 nil)
738 (defvar reftex-memory nil
743 (defconst reftex-cache-variables
744 '(reftex-memory ;; This MUST ALWAYS be the first!
747 reftex-section-levels-all
750 reftex-env-or-mac-alist
751 reftex-special-env-parsers
752 reftex-macros-with-labels
753 reftex-label-mac-list
754 reftex-label-env-list
755 reftex-typekey-list
756 reftex-typekey-to-format-alist
757 reftex-typekey-to-prefix-alist
758 reftex-words-to-typekey-alist
759 reftex-prefix-to-typekey-alist
760 reftex-type-query-prompt
761 reftex-type-query-help
764 reftex-index-macro-alist
765 reftex-macros-with-index
766 reftex-query-index-macro-prompt
767 reftex-query-index-macro-help
768 reftex-key-to-index-macro-alist
771 reftex-section-regexp
772 reftex-section-or-include-regexp
773 reftex-index-re
774 reftex-everything-regexp
775 reftex-everything-regexp-no-index
776 reftex-find-label-regexp-format
777 reftex-find-label-regexp-format2
778 reftex-find-index-entry-regexp-format
781 (defun reftex-ensure-compiled-variables ()
783 (let* ((mem reftex-memory)
784 (cache (get reftex-docstruct-symbol 'reftex-cache))
786 (alist reftex-label-alist)
787 (levels (get reftex-docstruct-symbol 'reftex-section-levels))
788 (style (get reftex-docstruct-symbol 'reftex-label-alist-style))
789 (default reftex-default-label-alist-entries)
790 (index reftex-index-macros)
791 (istyle (get reftex-docstruct-symbol 'reftex-index-macros-style)))
793 (reftex-tables-dirty (reftex-compile-variables))
808 (mapcar (lambda (sym) (set sym (pop cache))) reftex-cache-variables))
809 (t (reftex-compile-variables)))))
811 (defun reftex-reset-mode ()
820 (put 'reftex-tex-path prop nil)
821 (put 'reftex-bib-path prop nil))
832 (reftex-erase-all-selection-and-index-buffers))
835 (reftex-reset-scanning-information)
838 (reftex-access-parse-file 'kill)
841 (and reftex-plug-into-AUCTeX
842 (reftex-plug-into-AUCTeX))
844 (reftex-compile-variables))
847 (defun reftex-reset-scanning-information ()
850 (if (string= reftex-last-toc-master (reftex-TeX-master-file))
851 (reftex-erase-buffer "*toc*"))
852 (let ((symlist reftex-multifile-symbols)
861 (defun reftex-erase-all-selection-and-index-buffers ()
865 (reftex-erase-buffer (reftex-make-selection-buffer-name type)))
866 reftex-typekey-list)
870 (reftex-kill-buffer (reftex-make-index-buffer-name tag)))
871 (cdr (assoc 'index-tags (symbol-value reftex-docstruct-symbol)))))
873 (defun reftex-compile-variables ()
874 ;; Compile the information in reftex-label-alist & Co.
883 (setq reftex-tables-dirty nil)
884 (setq reftex-memory
885 (list reftex-label-alist
886 (get reftex-docstruct-symbol 'reftex-section-levels)
887 (get reftex-docstruct-symbol 'reftex-label-alist-style)
888 reftex-default-label-alist-entries
889 reftex-index-macros
890 (get reftex-docstruct-symbol 'reftex-index-macros-style)))
892 ;; Compile information in reftex-label-alist
893 (let ((all (reftex-uniquify-by-car
894 (reftex-splice-symbols-into-list
895 (append reftex-label-alist
896 (get reftex-docstruct-symbol
897 'reftex-label-alist-style)
898 reftex-default-label-alist-entries)
899 reftex-label-alist-builtin)
901 (all-index (reftex-uniquify-by-car
902 (reftex-splice-symbols-into-list
903 (append reftex-index-macros
904 (get reftex-docstruct-symbol
905 'reftex-index-macros-style)
907 reftex-index-macros-builtin)))
913 (setq reftex-words-to-typekey-alist nil
914 reftex-prefix-to-typekey-alist
916 reftex-typekey-list nil
917 reftex-typekey-to-format-alist nil
918 reftex-typekey-to-prefix-alist nil
919 reftex-env-or-mac-alist nil
920 reftex-label-env-list nil
921 reftex-label-mac-list nil)
956 (add-to-list 'reftex-typekey-list typekey))
958 (not (assoc prefix reftex-prefix-to-typekey-alist)))
959 (add-to-list 'reftex-prefix-to-typekey-alist
962 (not (assoc typekey reftex-typekey-to-prefix-alist)))
963 (add-to-list 'reftex-typekey-to-prefix-alist
973 (add-to-list 'reftex-special-env-parsers env-or-mac)
977 (let ((result (reftex-parse-args env-or-mac)))
983 (if typekey (add-to-list 'reftex-label-mac-list env-or-mac)))
991 (add-to-list 'reftex-label-env-list env-or-mac)
997 (when (assq context reftex-default-context-regexps)
1000 (cdr (assq context reftex-default-context-regexps))
1004 (not (assoc typekey reftex-typekey-to-format-alist))
1005 (push (cons typekey reffmt) reftex-typekey-to-format-alist))
1009 (not (assoc env-or-mac reftex-env-or-mac-alist))
1012 reftex-env-or-mac-alist))
1019 (or (assoc word reftex-words-to-typekey-alist)
1020 (push (cons word typekey) reftex-words-to-typekey-alist)))
1028 (setq reftex-typekey-to-prefix-alist
1029 (nreverse reftex-typekey-to-prefix-alist))
1036 (setq reftex-type-query-prompt
1042 (setq reftex-type-query-help
1062 (setq reftex-words-to-typekey-alist
1067 fmt (cdr (assoc typekey reftex-typekey-to-format-alist)))
1077 (nreverse reftex-words-to-typekey-alist)))
1080 (setq reftex-index-macro-alist nil
1081 reftex-key-to-index-macro-alist nil
1082 reftex-macros-with-index nil)
1094 ((and (eq key (car reftex-index-default-macro))
1095 (> (length reftex-index-default-macro) 2))
1097 (nth 2 reftex-index-default-macro))
1100 (let ((result (reftex-parse-args macro)))
1105 (unless (member macro reftex-macros-with-index)
1108 reftex-index-macro-alist)
1109 (or (assoc key reftex-key-to-index-macro-alist)
1110 (push (list key macro) reftex-key-to-index-macro-alist))
1111 (push macro reftex-macros-with-index))))
1113 (setq reftex-key-to-index-macro-alist
1114 (sort reftex-key-to-index-macro-alist
1116 (setq reftex-query-index-macro-prompt
1119 reftex-key-to-index-macro-alist "")
1122 reftex-query-index-macro-help
1129 reftex-key-to-index-macro-alist "")))
1132 (setq reftex-section-levels-all
1134 (get reftex-docstruct-symbol 'reftex-section-levels)
1135 reftex-section-levels))
1146 reftex-include-file-commands "\\|")
1151 reftex-section-levels-all "\\|")
1162 (mapconcat 'regexp-quote reftex-macros-with-index "\\|")
1166 (mapconcat 'regexp-quote reftex-macros-with-index "\\|")
1174 (regexp-quote (nth 0 reftex-index-special-chars)))
1176 (concat "[^" (nth 3 reftex-index-special-chars) "]"
1177 "[" (nth 1 reftex-index-special-chars)
1178 (nth 2 reftex-index-special-chars) "]"))
1180 (setq reftex-section-regexp section-re
1181 reftex-section-or-include-regexp
1183 reftex-everything-regexp
1188 reftex-everything-regexp-no-index
1193 reftex-index-re index-re
1194 reftex-index-level-re index-level-re
1195 reftex-index-key-end-re index-key-end-re
1196 reftex-macros-with-labels macros-with-labels
1197 reftex-find-index-entry-regexp-format find-index-re-format
1198 reftex-find-label-regexp-format find-label-re-format
1199 reftex-find-label-regexp-format2
1202 (put reftex-docstruct-symbol 'reftex-cache
1203 (mapcar 'symbol-value reftex-cache-variables)))
1205 (defun reftex-parse-args (macro)
1228 (defun reftex-access-scan-info (&optional rescan file)
1236 (if (and reftex-mode
1241 (if (eq reftex-docstruct-symbol nil)
1243 (reftex-tie-multifile-symbols))
1245 (reftex-ensure-compiled-variables)
1247 (when (or (null (symbol-value reftex-docstruct-symbol))
1251 (reftex-erase-buffer "*toc*")
1252 (reftex-erase-all-selection-and-index-buffers)))
1254 (if (and (null (symbol-value reftex-docstruct-symbol))
1256 reftex-save-parse-info)
1258 (reftex-access-parse-file 'read))
1262 ((not (symbol-value reftex-docstruct-symbol))
1264 (reftex-do-parse 1 file))
1267 (reftex-do-parse rescan file))))
1269 (defun reftex-scanning-info-available-p ()
1271 (unless reftex-docstruct-symbol
1272 (reftex-tie-multifile-symbols))
1273 (and (symbolp reftex-docstruct-symbol)
1274 (symbol-value reftex-docstruct-symbol)
1277 (defun reftex-silence-toc-markers (list n)
1285 (defun reftex-access-parse-file (action)
1288 (let* ((list (symbol-value reftex-docstruct-symbol))
1289 (docstruct-symbol reftex-docstruct-symbol)
1290 (master (reftex-TeX-master-file))
1294 reftex-parse-file-extension)
1295 (concat master reftex-parse-file-extension))))
1300 (put reftex-docstruct-symbol 'modified nil)
1301 (if (eq reftex-docstruct-symbol nil)
1303 (reftex-tie-multifile-symbols))
1308 (error (set reftex-docstruct-symbol nil)
1313 (put reftex-docstruct-symbol 'modified nil)
1319 (reftex-check-parse-consistency)
1322 (set reftex-docstruct-symbol nil)
1343 (insert "(set reftex-docstruct-symbol '(\n\n")
1355 ((and (not (eq t reftex-support-index))
1367 (defun reftex-check-parse-consistency ()
1371 (let* ((real-master (reftex-TeX-master-file))
1373 (nth 1 (assq 'bof (symbol-value reftex-docstruct-symbol)))))
1380 ;;; (let* ((all (symbol-value reftex-docstruct-symbol)))
1389 (defun reftex-select-external-document (xr-alist xr-index)
1408 (reftex-select-with-char
1429 (defun reftex-locate-file (file type master-dir &optional die)
1434 (let* ((rec-values (if reftex-search-unrecursed-path-first '(nil t) '(t)))
1435 (extensions (cdr (assoc type reftex-file-extensions)))
1442 (if reftex-try-all-extensions
1453 ((and reftex-use-external-file-finders
1454 (assoc type reftex-external-file-finders))
1455 (setq file1 (reftex-find-file-externally file type master-dir)))
1458 (setq path (reftex-access-search-path
1466 (setq file1 (reftex-find-file-on-path f path master-dir)))))))
1471 (defun reftex-find-file-externally (file type &optional master-dir)
1473 ;; The program is taken from `reftex-external-file-finders'.
1476 (prg (cdr (assoc type reftex-external-file-finders)))
1480 (setq out (apply 'reftex-process-string (split-string prg)))
1487 (defun reftex-process-string (program &rest args)
1495 (defun reftex-access-search-path (type &optional recurse master-dir file)
1503 (let* ((pathvar (intern (concat "reftex-" type "-path"))))
1507 (reftex-uniquify
1508 (reftex-parse-colon-path
1512 (apply 'reftex-process-string
1516 ;; (cdr (assoc type reftex-path-environment))
1519 (symbol-value (intern (concat "reftex-" type
1546 (reftex-expand-path (symbol-value pathvar) master-dir))
1555 (defun reftex-find-file-on-path (file path &optional def-dir)
1573 (defun reftex-parse-colon-path (path)
1583 (defun reftex-expand-path (path &optional default-dir)
1595 (setq path1 (append (reftex-recursive-directory-list dir) path1))
1600 (defun reftex-recursive-directory-list (dir)
1616 (autoload 'reftex-parse-one "reftex-parse"
1618 (autoload 'reftex-parse-all "reftex-parse"
1620 (autoload 'reftex-do-parse "reftex-parse")
1621 (autoload 'reftex-where-am-I "reftex-parse")
1622 (autoload 'reftex-init-section-numbers "reftex-parse")
1623 (autoload 'reftex-section-info "reftex-parse")
1624 (autoload 'reftex-section-number "reftex-parse")
1625 (autoload 'reftex-what-macro "reftex-parse")
1626 (autoload 'reftex-what-macro-safe "reftex-parse")
1627 (autoload 'reftex-index-info "reftex-parse")
1628 (autoload 'reftex-index-info-safe "reftex-parse")
1629 (autoload 'reftex-short-context "reftex-parse")
1630 (autoload 'reftex-what-environment "reftex-parse")
1631 (autoload 'reftex-what-special-env "reftex-parse")
1632 (autoload 'reftex-move-over-touching-args "reftex-parse")
1633 (autoload 'reftex-notice-new "reftex-parse")
1634 (autoload 'reftex-nth-arg "reftex-parse")
1635 (autoload 'reftex-locate-bibliography-files "reftex-parse")
1636 (autoload 'reftex-ensure-index-support "reftex-parse")
1637 (autoload 'reftex-everything-regexp "reftex-parse")
1644 (autoload 'reftex-label-location "reftex-ref")
1645 (autoload 'reftex-label-info-update "reftex-ref")
1646 (autoload 'reftex-label-info "reftex-ref")
1647 (autoload 'reftex-label "reftex-ref"
1649 (autoload 'reftex-reference "reftex-ref"
1651 (autoload 'reftex-varioref-vref "reftex-ref"
1653 (autoload 'reftex-fancyref-fref "reftex-ref"
1655 (autoload 'reftex-fancyref-Fref "reftex-ref"
1657 (autoload 'reftex-show-label-location "reftex-ref")
1658 (autoload 'reftex-query-label-type "reftex-ref")
1659 (autoload 'reftex-goto-label "reftex-ref"
1666 (autoload 'reftex-toc "reftex-toc"
1668 (autoload 'reftex-toc-recenter "reftex-toc"
1670 (autoload 'reftex-toggle-auto-toc-recenter "reftex-toc"
1677 (autoload 'reftex-citep "reftex-cite")
1678 (autoload 'reftex-citet "reftex-cite")
1679 (autoload 'reftex-make-cite-echo-string "reftex-cite")
1680 (autoload 'reftex-get-bibfile-list "reftex-cite")
1681 (autoload 'reftex-pop-to-bibtex-entry "reftex-cite")
1682 (autoload 'reftex-end-of-bib-entry "reftex-cite")
1683 (autoload 'reftex-parse-bibtex-entry "reftex-cite")
1684 (autoload 'reftex-citation "reftex-cite"
1686 (autoload 'reftex-default-bibliography "reftex-cite")
1687 (autoload 'reftex-bib-or-thebib "reftex-cite")
1688 (autoload 'reftex-create-bibtex-file "reftex-cite")
1694 (autoload 'reftex-select-label-mode "reftex-sel")
1695 (autoload 'reftex-select-bib-mode "reftex-sel")
1696 (autoload 'reftex-find-start-point "reftex-sel")
1697 (autoload 'reftex-insert-docstruct "reftex-sel")
1698 (autoload 'reftex-get-offset "reftex-sel")
1699 (autoload 'reftex-select-item "reftex-sel")
1706 (autoload 'reftex-index "reftex-index"
1708 (autoload 'reftex-index-selection-or-word "reftex-index"
1710 (autoload 'reftex-index-phrase-selection-or-word "reftex-index"
1712 (autoload 'reftex-display-index "reftex-index"
1714 (autoload 'reftex-index-visit-phrases-buffer "reftex-index"
1716 (autoload 'reftex-index-phrases-mode "reftex-index"
1717 "Major mode for managing the Index phrases of a LaTeX document." t)
1718 (autoload 'reftex-index-complete-tag "reftex-index")
1719 (autoload 'reftex-index-complete-key "reftex-index")
1720 (autoload 'reftex-index-show-entry "reftex-index")
1721 (autoload 'reftex-index-select-tag "reftex-index")
1728 (autoload 'reftex-view-crossref "reftex-dcr"
1730 (autoload 'reftex-mouse-view-crossref "reftex-dcr"
1732 (autoload 'reftex-toggle-auto-view-crossref "reftex-dcr")
1733 (autoload 'reftex-view-crossref-from-bibtex "reftex-dcr"
1741 (autoload 'reftex-create-tags-file "reftex-global"
1743 (autoload 'reftex-grep-document "reftex-global"
1745 (autoload 'reftex-search-document "reftex-global"
1747 (autoload 'reftex-query-replace-document "reftex-global"
1749 (autoload 'reftex-find-duplicate-labels "reftex-global"
1751 (autoload 'reftex-change-label "reftex-global"
1753 (autoload 'reftex-renumber-simple-labels "reftex-global"
1755 (autoload 'reftex-save-all-document-buffers "reftex-global"
1763 (autoload 'reftex-arg-label "reftex-auc")
1764 (autoload 'reftex-arg-cite "reftex-auc")
1765 (autoload 'reftex-arg-index-tag "reftex-auc")
1766 (autoload 'reftex-arg-index "reftex-auc")
1767 (autoload 'reftex-plug-into-AUCTeX "reftex-auc")
1768 (autoload 'reftex-toggle-plug-into-AUCTeX "reftex-auc"
1770 (autoload 'reftex-add-label-environments "reftex-auc")
1771 (autoload 'reftex-add-to-label-alist "reftex-auc")
1772 (autoload 'reftex-add-section-levels "reftex-auc")
1773 (autoload 'reftex-notice-new-section "reftex-auc")
1779 (defun reftex-typekey-check (typekey conf-variable &optional n)
1786 (defun reftex-check-recursive-edit ()
1789 (if (marker-position reftex-recursive-edit-marker)
1794 (defun reftex-in-comment ()
1799 (defun reftex-no-props (string)
1805 (defun reftex-match-string (n)
1810 (defun reftex-region-active-p ()
1811 "Is transient-mark-mode on and the region active?
1815 (and transient-mark-mode mark-active)))
1817 (defun reftex-kill-buffer (buffer)
1822 (defun reftex-erase-buffer (&optional buffer)
1835 (defun reftex-this-word (&optional class)
1843 (defun reftex-number (n unit &optional ending)
1848 (defun reftex-all-assq (key list)
1856 (defun reftex-all-assoc-string (key list)
1865 (defun reftex-last-assoc-before-elt (key elt list &optional exclusive)
1880 (defun reftex-sublist-nth (list nth predicate &optional completion)
1895 (defun reftex-make-selection-buffer-name (type &optional index)
1898 type (or index (get reftex-docstruct-symbol :master-index) 0)))
1900 (defun reftex-make-index-buffer-name (tag &optional cnt)
1903 tag (or cnt (get reftex-docstruct-symbol :master-index) 0)))
1905 (defun reftex-truncate (string ncols &optional ellipses padding)
1920 (defun reftex-nearest-match (regexp &optional max-length)
1942 (defun reftex-auto-mode-alist ()
1943 ;; Return an `auto-mode-alist' with only the .gz (etc) thingies.
1945 (let ((alist auto-mode-alist)
1953 (defun reftex-window-height ()
1958 (defun reftex-enlarge-to-fit (buf2 &optional keep-current)
1969 (reftex-window-height))))))
1977 (defun reftex-select-with-char (prompt help-string &optional delay-time scroll)
1987 (reftex-kill-buffer "*RefTeX Select*")
1994 (reftex-window-height)))))
2016 (defun reftex-make-regexp-allow-for-ctrl-m (string)
2024 (defun reftex-get-buffer-visiting (file)
2032 (t (error "This should not happen (reftex-get-buffer-visiting)"))))
2041 (defun reftex-visited-files (list)
2043 (delq nil (mapcar (lambda (x) (if (reftex-get-buffer-visiting x) x nil))
2046 (defun reftex-get-file-buffer-force (file &optional mark-to-kill)
2050 ;; initializations according to `reftex-initialize-temporary-buffers',
2053 (let ((buf (reftex-get-buffer-visiting file)))
2063 (eq t reftex-initialize-temporary-buffers))
2073 (auto-mode-alist (reftex-auto-mode-alist))
2074 (default-major-mode 'fundamental-mode)
2080 (when (listp reftex-initialize-temporary-buffers)
2083 (run-hooks 'reftex-initialize-temporary-buffers))))
2087 (add-to-list 'reftex-buffers-to-kill buf))
2095 (defun reftex-kill-temporary-buffers (&optional buffer)
2096 ;; Kill all buffers in the list reftex-kill-temporary-buffers.
2099 (when (member buffer reftex-buffers-to-kill)
2101 (setq reftex-buffers-to-kill
2102 (delete buffer reftex-buffers-to-kill))))
2104 (while (setq buffer (pop reftex-buffers-to-kill))
2113 (pop reftex-buffers-to-kill)))))
2115 (defun reftex-splice-symbols-into-list (list alist)
2127 (error "Cannot treat symbol %s in reftex-label-alist"
2132 (defun reftex-remove-symbols-from-list (list)
2141 (defun reftex-uniquify (list)
2150 (defun reftex-uniquify-by-car (alist &optional keep-list)
2161 (defun reftex-abbreviate-title (string)
2162 (reftex-convert-string string "[-~ \t\n\r,;]" nil t t
2163 5 40 nil 1 " " (nth 5 reftex-derive-label-parameters)))
2165 (defun reftex-convert-string (string split-re invalid-re dot keep-fp
2178 t: Always abbreviate words (see `reftex-abbrev-parameters').
2185 (reftex-label-illegal-re (or invalid-re "\000"))
2188 (make-string (nth 0 reftex-abbrev-parameters) ?.)
2189 "[" (nth 2 reftex-abbrev-parameters) "]*"
2191 "[" (nth 3 reftex-abbrev-parameters) "]"
2192 (make-string (1- (nth 1 reftex-abbrev-parameters)) ?.)))
2200 ((string-match reftex-label-illegal-re word)
2202 (while (string-match reftex-label-illegal-re word)
2241 (defun reftex-nicify-text (text)
2265 (defun reftex-use-fonts ()
2268 reftex-use-fonts
2271 (defun reftex-refontify ()
2273 (and (reftex-use-fonts)
2274 (or (eq t reftex-refontify-context)
2275 (and (eq 1 reftex-refontify-context)
2277 (and (featurep 'x-symbol-tex) (not (boundp 'x-symbol-mode)))))))
2280 (defun reftex-fontify-select-label-buffer (parent-buffer)
2283 (run-hook-with-args 'reftex-pre-refontification-functions
2284 parent-buffer 'reftex-ref)
2295 'reftex-select-font-lock-fontify-region)
2296 (let ((major-mode 'latex-mode))
2297 (font-lock-mode 1)))
2302 (let ((major-mode 'latex-mode)
2305 (reftex-select-font-lock-fontify-region (point-min) (point-max))))
2311 (defun reftex-select-font-lock-fontify-region (beg end &optional loudly)
2323 (defun reftex-select-font-lock-unfontify (&rest ignore) t)
2325 (defun reftex-verified-face (&rest faces)
2329 ;; fonts. Currently it is only used for reftex-label-face, which has
2342 (defalias 'reftex-make-overlay 'make-extent)
2343 (defalias 'reftex-overlay-put 'set-extent-property)
2344 (defalias 'reftex-move-overlay 'set-extent-endpoints)
2345 (defalias 'reftex-delete-overlay 'detach-extent))
2346 (defalias 'reftex-make-overlay 'make-overlay)
2347 (defalias 'reftex-overlay-put 'overlay-put)
2348 (defalias 'reftex-move-overlay 'move-overlay)
2349 (defalias 'reftex-delete-overlay 'delete-overlay))
2352 (defvar reftex-highlight-overlays [nil nil nil])
2355 (aset reftex-highlight-overlays 0 (reftex-make-overlay 1 1))
2356 (reftex-overlay-put (aref reftex-highlight-overlays 0)
2358 (aset reftex-highlight-overlays 1 (reftex-make-overlay 1 1))
2359 (reftex-overlay-put (aref reftex-highlight-overlays 1)
2360 'face reftex-cursor-selected-face)
2361 (aset reftex-highlight-overlays 2 (reftex-make-overlay 1 1))
2362 (reftex-overlay-put (aref reftex-highlight-overlays 2)
2363 'face reftex-cursor-selected-face)
2366 (defun reftex-highlight (index begin end &optional buffer)
2368 (reftex-move-overlay (aref reftex-highlight-overlays index)
2370 (defun reftex-unhighlight (index)
2372 (reftex-delete-overlay (aref reftex-highlight-overlays index)))
2374 (defun reftex-highlight-shall-die ()
2376 (remove-hook 'pre-command-hook 'reftex-highlight-shall-die)
2377 (reftex-unhighlight 0))
2383 ;; The default bindings in the mode map.
2385 '(("\C-c=" . reftex-toc)
2386 ("\C-c-" . reftex-toc-recenter)
2387 ("\C-c(" . reftex-label)
2388 ("\C-c)" . reftex-reference)
2389 ("\C-c[" . reftex-citation)
2390 ("\C-c<" . reftex-index)
2391 ("\C-c>" . reftex-display-index)
2392 ("\C-c/" . reftex-index-selection-or-word)
2393 ("\C-c\\" . reftex-index-phrase-selection-or-word)
2394 ("\C-c|" . reftex-index-visit-phrases-buffer)
2395 ("\C-c&" . reftex-view-crossref))
2396 do (define-key reftex-mode-map (car x) (cdr x)))
2398 ;; Bind `reftex-mouse-view-crossref' only when the key is still free
2401 (define-key reftex-mode-map [(shift button2)]
2402 'reftex-mouse-view-crossref))
2404 (define-key reftex-mode-map [(shift mouse-2)]
2405 'reftex-mouse-view-crossref)))
2407 ;; Bind `reftex-view-crossref-from-bibtex' in BibTeX mode map
2410 '(define-key bibtex-mode-map "\C-c&" 'reftex-view-crossref-from-bibtex))
2413 (when reftex-extra-bindings
2415 '(("\C-ct" . reftex-toc)
2416 ("\C-cl" . reftex-label)
2417 ("\C-cr" . reftex-reference)
2418 ("\C-cc" . reftex-citation)
2419 ("\C-cv" . reftex-view-crossref)
2420 ("\C-cg" . reftex-grep-document)
2421 ("\C-cs" . reftex-search-document))
2422 do (define-key reftex-mode-map (car x) (cdr x))))
2430 (defvar reftex-isearch-minor-mode nil)
2431 (make-variable-buffer-local 'reftex-isearch-minor-mode)
2435 (easy-menu-define reftex-mode-menu reftex-mode-map
2436 "Menu used in RefTeX mode"
2438 ["Table of Contents" reftex-toc t]
2439 ["Recenter TOC" reftex-toc-recenter t]
2441 ["\\label" reftex-label t]
2442 ["\\ref" reftex-reference t]
2443 ["\\cite" reftex-citation t]
2445 ["\\index" reftex-index t]
2446 ["\\index{THIS}" reftex-index-selection-or-word t]
2448 ["Add THIS to Index Phrases" reftex-index-phrase-selection-or-word t]
2449 ["Visit Phrase Buffer" reftex-index-visit-phrases-buffer t]
2450 ["Apply Phrases to Region" reftex-index-phrases-apply-to-region t]
2452 ["Display the Index" reftex-display-index t])
2454 ["View Crossref" reftex-view-crossref t]
2457 ["One File" reftex-parse-one reftex-enable-partial-scans]
2458 ["Entire Document" reftex-parse-all t]
2459 ["Save to File" (reftex-access-parse-file 'write)
2460 (> (length (symbol-value reftex-docstruct-symbol)) 0)]
2461 ["Restore from File" (reftex-access-parse-file 'restore) t])
2463 ["Search Whole Document" reftex-search-document t]
2465 ["Replace in Document" reftex-query-replace-document t]
2466 ["Grep on Document" reftex-grep-document t]
2468 ["Goto Label" reftex-goto-label t]
2469 ["Find Duplicate Labels" reftex-find-duplicate-labels t]
2470 ["Change Label and Refs" reftex-change-label t]
2471 ["Renumber Simple Labels" reftex-renumber-simple-labels t]
2473 ["Create BibTeX File" reftex-create-bibtex-file t]
2475 ["Create TAGS File" reftex-create-tags-file t]
2477 ["Save Document" reftex-save-all-document-buffers t])
2482 (setq reftex-enable-partial-scans (not reftex-enable-partial-scans))
2483 :style toggle :selected reftex-enable-partial-scans]
2485 (setq reftex-save-parse-info (not reftex-save-parse-info))
2486 :style toggle :selected reftex-save-parse-info]
2489 ["Automatic Recenter" reftex-toggle-auto-toc-recenter
2490 :style toggle :selected reftex-toc-auto-recenter-timer]
2493 ["Automatic Info" reftex-toggle-auto-view-crossref
2494 :style toggle :selected reftex-auto-view-crossref-timer]
2495 ["...in Echo Area" (setq reftex-auto-view-crossref t)
2496 :style radio :selected (eq reftex-auto-view-crossref t)]
2497 ["...in Other Window" (setq reftex-auto-view-crossref 'window)
2498 :style radio :selected (eq reftex-auto-view-crossref 'window)]
2501 ["AUC TeX Interface" reftex-toggle-plug-into-AUCTeX
2502 :style toggle :selected reftex-plug-into-AUCTeX]
2503 ["isearch whole document" reftex-isearch-minor-mode
2504 :style toggle :selected reftex-isearch-minor-mode])
2506 ["Default" (setq reftex-vref-is-default nil
2507 reftex-fref-is-default nil)
2508 :style radio :selected (not (or reftex-vref-is-default
2509 reftex-fref-is-default))]
2510 ["Varioref" (setq reftex-vref-is-default t
2511 reftex-fref-is-default nil)
2512 :style radio :selected reftex-vref-is-default]
2513 ["Fancyref" (setq reftex-fref-is-default t
2514 reftex-vref-is-default nil)
2515 :style radio :selected reftex-fref-is-default])
2521 (list 'reftex-set-cite-format (list 'quote (car x)))
2523 (list 'eq (list 'reftex-get-cite-format) (list 'quote (car x)))))
2524 reftex-cite-format-builtin)
2527 ["Not" (setq reftex-sort-bibtex-matches nil)
2528 :style radio :selected (eq reftex-sort-bibtex-matches nil)]
2529 ["by Author" (setq reftex-sort-bibtex-matches 'author)
2530 :style radio :selected (eq reftex-sort-bibtex-matches 'author)]
2531 ["by Year" (setq reftex-sort-bibtex-matches 'year)
2532 :style radio :selected (eq reftex-sort-bibtex-matches 'year)]
2533 ["by Year, reversed" (setq reftex-sort-bibtex-matches 'reverse-year)
2534 :style radio :selected (eq reftex-sort-bibtex-matches 'reverse-year)])
2540 (list 'reftex-add-index-macros (list 'list (list 'quote (car x))))
2543 (list 'get 'reftex-docstruct-symbol
2544 (list 'quote 'reftex-index-macros-style)))))
2545 reftex-index-macros-builtin))
2547 ["Reset RefTeX Mode" reftex-reset-mode t]
2550 ["Browse RefTeX Group" reftex-customize t]
2552 ["Build Full Customize Menu" reftex-create-customize-menu
2555 ["Info" reftex-info t]
2556 ["Commentary" reftex-show-commentary t])))
2558 (defun reftex-customize ()
2559 "Call the customize function with reftex as argument."
2561 (customize-browse 'reftex))
2563 (defun reftex-create-customize-menu ()
2570 `(["Browse RefTeX group" reftex-customize t]
2572 ,(customize-menu-create 'reftex)
2581 (defun reftex-show-commentary ()
2582 "Use the finder to view the file documentation from `reftex.el'."
2585 (finder-commentary "reftex.el"))
2587 (defun reftex-info (&optional node)
2592 (Info-goto-node (format "(reftex)%s" (or node ""))))
2596 (add-hook 'kill-buffer-hook 'reftex-kill-buffer-hook)
2597 (add-hook 'kill-emacs-hook 'reftex-kill-emacs-hook)
2601 (run-hooks 'reftex-load-hook)
2605 (setq reftex-tables-dirty t) ; in case this file is evaluated by hand
2606 (provide 'reftex)
2611 ;;; reftex.el ends here