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

Lines Matching +defs:reftex +defs:mode

0 ;;; reftex-index.el --- index support with RefTeX
32 (provide 'reftex-index)
33 (require 'reftex)
39 (defvar transient-mark-mode)
42 (defun reftex-index-selection-or-word (&optional arg phrase)
44 This uses the information in `reftex-index-default-macro' to make an index
49 When called inside TeX math mode as determined by the `texmathp.el' library
51 `reftex-index-math-format', which see."
57 (and transient-mark-mode mark-active))) ; Emacs
68 (current-prefix-arg nil) ; we want to call reftex-index without prefix.
73 (reftex-index-visit-phrases-buffer)
74 (reftex-index-new-phrase sel))
77 ;; Nothing selected, no word, so use full reftex-index command
78 (reftex-index)
82 (format reftex-index-math-format sel)
84 ;; Get info from `reftex-index-default-macro'
85 (setq def-char (if use-default (car reftex-index-default-macro)))
86 (setq def-tag (if use-default (nth 1 reftex-index-default-macro)))
89 (reftex-index-complete-key
94 (reftex-index def-char full-entry def-tag sel)))))
96 (defun reftex-index (&optional char key tag sel no-insert)
98 The index macros available are those defined in `reftex-index-macro' or
99 by a call to `reftex-add-index-macros', typically from an AUCTeX style file.
106 (reftex-ensure-index-support t)
107 (reftex-access-scan-info current-prefix-arg)
111 (reftex-select-with-char reftex-query-index-macro-prompt
112 reftex-query-index-macro-help)))
113 (macro (nth 1 (assoc char reftex-key-to-index-macro-alist)))
114 (entry (or (assoc macro reftex-index-macro-alist)
127 (setq tag1 (or (reftex-index-complete-tag tag opt-args) "")))
129 (reftex-index-complete-key
146 (and key reftex-plug-into-AUCTeX (fboundp 'LaTeX-add-index-entries)
148 (reftex-index-update-taglist tag1)
149 (reftex-notice-new)))
151 (defun reftex-default-index ()
152 (cond ((null reftex-index-default-tag) nil)
153 ((stringp reftex-index-default-tag) reftex-index-default-tag)
154 (t (or (get reftex-docstruct-symbol 'default-index-tag)
157 (defun reftex-update-default-index (tag &optional tag-list)
160 (eq reftex-index-default-tag 'last)
163 (put reftex-docstruct-symbol 'default-index-tag tag)))
165 (defun reftex-index-complete-tag (&optional itag opt-args)
169 ;; `reftex-parse-args'.
172 (symbol-value reftex-docstruct-symbol))))
173 (default (reftex-default-index))
186 (reftex-update-default-index tag)
189 (defun reftex-index-select-tag ()
193 (symbol-value reftex-docstruct-symbol))))
194 (default (reftex-default-index)))
247 (setq rpl (reftex-select-with-char prompt help 3 t))
253 (reftex-update-default-index (nth 1 (assq rpl tag-alist)))
256 (t (error "This should not happen (reftex-index-select-tag)")))))
258 (defun reftex-index-complete-key (&optional tag optional initial)
262 (let* ((table (reftex-sublist-nth
263 (symbol-value reftex-docstruct-symbol) 6
271 (defun reftex-index-update-taglist (newtag)
273 (let ((cell (assoc 'index-tags (symbol-value reftex-docstruct-symbol))))
277 (defvar reftex-index-map (make-sparse-keymap)
280 (defvar reftex-index-menu)
282 (defvar reftex-last-index-file nil
283 "Stores the file name from which `reftex-display-index' was called.")
284 (defvar reftex-index-tag nil
287 (defvar reftex-index-return-marker (make-marker)
290 (defvar reftex-index-restriction-indicator nil)
291 (defvar reftex-index-restriction-data nil)
293 (defun reftex-index-mode ()
294 "Major mode for managing Index buffers for LaTeX files.
300 \\{reftex-index-map}"
303 (setq major-mode 'reftex-index-mode
304 mode-name "RefTeX Index")
305 (use-local-map reftex-index-map)
306 (set (make-local-variable 'revert-buffer-function) 'reftex-index-revert)
307 (set (make-local-variable 'reftex-index-restriction-data) nil)
308 (set (make-local-variable 'reftex-index-restriction-indicator) nil)
309 (setq mode-line-format
310 (list "---- " 'mode-line-buffer-identification
311 " " 'global-mode-string
312 " R<" 'reftex-index-restriction-indicator ">"
319 (make-local-variable 'reftex-last-follow-point)
320 (easy-menu-add reftex-index-menu reftex-index-map)
321 (add-hook 'post-command-hook 'reftex-index-post-command-hook nil t)
322 (add-hook 'pre-command-hook 'reftex-index-pre-command-hook nil t)
323 (run-hooks 'reftex-index-mode-hook))
325 (defconst reftex-index-help
334 f / c Toggle follow mode / Toggle display of [c]ontext.
346 (defun reftex-index-show-entry (data &optional no-revisit)
361 (reftex-get-buffer-visiting file))
363 (reftex-get-file-buffer-force file nil))
366 (reftex-nearest-match re (length literal))))
367 (t (message reftex-no-follow-message) nil))))
371 (reftex-highlight 0 (match-beginning 0) (match-end 0) (current-buffer)))
374 (defun reftex-display-index (&optional tag overriding-restriction redo
387 (reftex-ensure-index-support t)
388 (reftex-access-scan-info current-prefix-arg))
390 (set-marker reftex-index-return-marker (point))
391 (setq reftex-last-follow-point 1)
394 (let* ((docstruct (symbol-value reftex-docstruct-symbol))
395 (docstruct-symbol reftex-docstruct-symbol)
396 (index-tag (or tag (reftex-index-select-tag)))
397 (master (reftex-TeX-master-file))
402 (reftex-get-restriction current-prefix-arg docstruct))))
406 (let* ((what-macro (reftex-what-macro-safe 1))
408 (here-I-am (when (member macro reftex-macros-with-index)
412 (reftex-move-over-touching-args)
413 (reftex-where-am-I)))))
418 (setq buffer-name (reftex-make-index-buffer-name index-tag))
420 ;; Goto the buffer and put it into the correct mode
423 (reftex-kill-buffer buffer-name))
427 (let ((default-major-mode 'reftex-index-mode))
430 (or (eq major-mode 'reftex-index-mode) (reftex-index-mode))
433 (when reftex-index-restriction-data
434 (reftex-erase-buffer))
435 (set (make-local-variable 'reftex-last-index-file) calling-file)
436 (set (make-local-variable 'reftex-index-tag) index-tag)
437 (set (make-local-variable 'reftex-docstruct-symbol) docstruct-symbol)
439 (setq reftex-index-restriction-indicator (car restriction)
440 reftex-index-restriction-data (cdr restriction))
442 (setq reftex-index-restriction-indicator nil
443 reftex-index-restriction-data nil)))
455 (if (eq (car (car reftex-index-restriction-data)) 'toc)
456 (nth 2 (car reftex-index-restriction-data))
457 reftex-index-restriction-indicator)))
459 (if (reftex-use-fonts)
460 (put-text-property 1 (point) 'face reftex-index-header-face))
463 (reftex-insert-index docstruct index-tag)
465 (run-hooks 'reftex-display-copied-context-hook)
468 (and locations (apply 'reftex-find-start-point (point) locations))
469 (if reftex-index-restriction-indicator
470 (message "Index restricted: <%s>" reftex-index-restriction-indicator))))
472 (defun reftex-insert-index (docstruct tag &optional update-one remark)
481 (context reftex-index-include-context)
483 (section-chars (mapcar 'identity reftex-index-section-letters))
485 (font (reftex-use-fonts))
486 (bor (car reftex-index-restriction-data))
487 (eor (nth 1 reftex-index-restriction-data))
489 (if (memq reftex-highlight-selection '(mouse both))
490 reftex-mouse-selected-face
492 (index-face (reftex-verified-face reftex-label-face
524 (reftex-index-insert-new-letter first-char font)
529 (reftex-index-insert-new-letter this-section-char font)))
560 (defun reftex-index-insert-new-letter (letter &optional font)
566 (put-text-property from (point) 'face reftex-index-section-face))
569 (defun reftex-get-restriction (arg docstruct)
578 (setq here-I-am (car (reftex-where-am-I))
581 (reftex-last-assoc-before-elt
589 (setq bor (car (reftex-where-am-I)))
592 (setq eor (nth 1 (memq (car (reftex-where-am-I)) docstruct)))))
598 (defun reftex-index-pre-command-hook ()
600 (reftex-unhighlight 0)
601 (reftex-unhighlight 1))
603 (defun reftex-index-post-command-hook ()
608 (memq reftex-highlight-selection '(cursor both))
609 (reftex-highlight 1
614 (if (integerp reftex-index-follow-mode)
616 (setq reftex-index-follow-mode t)
617 (and reftex-index-follow-mode
618 (not (equal reftex-last-follow-point (point)))
620 (setq reftex-last-follow-point (point))
622 (reftex-index-visit-location nil (not reftex-revisit-to-follow))
625 (defun reftex-index-show-help ()
629 (princ reftex-index-help))
630 (reftex-enlarge-to-fit "*RefTeX Help*" t)
631 ;; If follow mode is active, arrange to delay it one command
632 (if reftex-index-follow-mode
633 (setq reftex-index-follow-mode 1)))
635 (defun reftex-index-next (&optional arg)
638 (setq reftex-callback-fwd t)
645 (defun reftex-index-previous (&optional arg)
648 (setq reftex-callback-fwd nil)
654 (defun reftex-index-toggle-follow ()
657 (setq reftex-last-follow-point -1)
658 (setq reftex-index-follow-mode (not reftex-index-follow-mode)))
659 (defun reftex-index-toggle-context ()
663 (setq reftex-index-include-context (not reftex-index-include-context))
664 (reftex-index-revert))
665 (defun reftex-index-view-entry ()
668 (reftex-index-visit-location))
669 (defun reftex-index-goto-entry-and-hide ()
672 (reftex-index-visit-location 'hide))
673 (defun reftex-index-goto-entry ()
676 (reftex-index-visit-location t))
677 (defun reftex-index-mouse-goto-line-and-hide (ev)
681 (reftex-index-visit-location 'hide))
682 (defun reftex-index-quit ()
686 (switch-to-buffer (marker-buffer reftex-index-return-marker))
687 (goto-char (or (marker-position reftex-index-return-marker) (point))))
688 (defun reftex-index-quit-and-kill ()
693 (switch-to-buffer (marker-buffer reftex-index-return-marker))
694 (goto-char (or (marker-position reftex-index-return-marker) (point))))
695 (defun reftex-index-goto-toc (&rest ignore)
700 (reftex-index-goto-entry)
701 (switch-to-buffer (marker-buffer reftex-index-return-marker)))
703 (reftex-toc))
704 (defun reftex-index-rescan (&rest ignore)
707 (let ((index-tag reftex-index-tag))
708 (if (and reftex-enable-partial-scans
715 (switch-to-buffer (reftex-get-file-buffer-force file))
717 (reftex-display-index index-tag nil 'redo line)))
718 (reftex-index-Rescan))
719 (reftex-kill-temporary-buffers)))
720 (defun reftex-index-Rescan (&rest ignore)
723 (let ((index-tag reftex-index-tag)
726 (reftex-get-file-buffer-force reftex-last-index-file))
728 (reftex-display-index index-tag nil 'redo line)))
729 (defun reftex-index-revert (&rest ignore)
733 (index-tag reftex-index-tag)
737 (reftex-get-file-buffer-force reftex-last-index-file))
738 (reftex-erase-buffer buf)
740 reftex-last-follow-point 1)
741 (reftex-display-index index-tag nil 'redo data line)))
742 (defun reftex-index-switch-index-tag (&rest ignore)
746 (reftex-get-file-buffer-force reftex-last-index-file))
748 (reftex-display-index nil nil 'redo))
750 (defun reftex-index-restrict-to-section (&optional force)
755 (docstruct (symbol-value reftex-docstruct-symbol))
760 (setq bor (reftex-last-assoc-before-elt 'toc data docstruct)
763 reftex-index-restriction-data (list bor eor)
764 reftex-index-restriction-indicator (nth 6 bor) )))
765 (reftex-index-revert))
767 (defun reftex-index-widen (&rest ignore)
770 (setq reftex-index-restriction-indicator nil
771 reftex-index-restriction-data nil)
772 (reftex-index-revert)
774 (defun reftex-index-restriction-forward (&rest ignore)
779 (let* ((docstruct (symbol-value reftex-docstruct-symbol))
780 (bor (nth 1 reftex-index-restriction-data)))
783 (reftex-index-restrict-to-section t)
784 (setq reftex-index-restriction-indicator (nth 6 bor)
785 reftex-index-restriction-data
789 (reftex-index-revert))))
790 (defun reftex-index-restriction-backward (&rest ignore)
795 (let* ((docstruct (symbol-value reftex-docstruct-symbol))
796 (eor (car reftex-index-restriction-data))
797 (bor (reftex-last-assoc-before-elt 'toc eor docstruct t)))
800 (reftex-index-restrict-to-section t)
801 (setq reftex-index-restriction-indicator (nth 6 bor)
802 reftex-index-restriction-data
804 (reftex-index-revert))))
806 (defun reftex-index-visit-location (&optional final no-revisit)
820 (setq match (reftex-index-show-entry data no-revisit)))
834 (reftex-unhighlight 0)
837 (reftex-unhighlight 0)
842 (defun reftex-index-analyze-entry (data)
848 (sc reftex-index-special-chars)
868 (defun reftex-index-edit ()
874 (reftex-index-view-entry)
876 (reftex-index-change-entry new)))
878 (defun reftex-index-toggle-range-beginning ()
882 (bor (concat (nth 1 reftex-index-special-chars) "("))
885 (setq analyze (reftex-index-analyze-entry data)
889 (reftex-index-change-entry
894 (defun reftex-index-toggle-range-end ()
898 (eor (concat (nth 1 reftex-index-special-chars) ")"))
901 (setq analyze (reftex-index-analyze-entry data)
905 (reftex-index-change-entry
910 (defun reftex-index-edit-key ()
913 (reftex-index-edit-part nil 1 "" "Key: " t))
915 (defun reftex-index-edit-attribute (&optional arg)
918 (reftex-index-edit-part arg 2 (nth 1 reftex-index-special-chars)
921 (defun reftex-index-edit-visual (&optional arg)
924 (reftex-index-edit-part arg 3 (nth 2 reftex-index-special-chars) "Visual: "))
926 (defun reftex-index-edit-part (arg n initial prompt &optional dont-allow-empty)
932 (setq analyze (reftex-index-analyze-entry data)
947 (reftex-index-change-entry
952 (defun reftex-index-level-down ()
956 (docstruct (symbol-value reftex-docstruct-symbol))
963 (reftex-sublist-nth
967 (string= (nth 1 x) reftex-index-tag))) t)))
969 (concat (regexp-quote (car reftex-index-special-chars)) "\\'")
971 (setq prefix (concat prefix (car reftex-index-special-chars))))
975 (reftex-index-change-entry new (format "Added prefix: %s" prefix))))
977 (defun reftex-index-level-up ()
984 (if (string-match (concat "{\\([^" (nth 0 reftex-index-special-chars) "]*"
985 "[^" (nth 3 reftex-index-special-chars) "]"
986 (regexp-quote (nth 0 reftex-index-special-chars))
993 (reftex-index-change-entry new (format "Removed prefix: %s" prefix))))
995 (defun reftex-index-kill ()
1000 (defun reftex-index-undo ()
1005 (defun reftex-index-change-entry (new &optional message)
1012 (reftex-index-view-entry)
1020 (error "This should not happen (reftex-index-change-entry)"))
1024 (when (and (re-search-forward (reftex-everything-regexp) nil t)
1027 (setq info (reftex-index-info-safe buffer-file-name)))
1031 (reftex-insert-index (list data) reftex-index-tag t
1033 (setq reftex-last-follow-point 1)
1037 (define-key reftex-index-map (if (featurep 'xemacs) [(button2)] [(mouse-2)])
1038 'reftex-index-mouse-goto-line-and-hide)
1039 (define-key reftex-index-map [follow-link] 'mouse-face)
1042 'next-line 'reftex-index-next reftex-index-map global-map)
1044 'previous-line 'reftex-index-previous reftex-index-map global-map)
1047 '(("n" . reftex-index-next)
1048 ("p" . reftex-index-previous)
1049 ("?" . reftex-index-show-help)
1050 (" " . reftex-index-view-entry)
1051 ("\C-m" . reftex-index-goto-entry-and-hide)
1052 ("\C-i" . reftex-index-goto-entry)
1053 ("\C-k" . reftex-index-kill)
1054 ("r" . reftex-index-rescan)
1055 ("R" . reftex-index-Rescan)
1057 ("q" . reftex-index-quit)
1058 ("k" . reftex-index-quit-and-kill)
1059 ("f" . reftex-index-toggle-follow)
1060 ("s" . reftex-index-switch-index-tag)
1061 ("e" . reftex-index-edit)
1062 ("^" . reftex-index-level-up)
1063 ("_" . reftex-index-level-down)
1064 ("}" . reftex-index-restrict-to-section)
1065 ("{" . reftex-index-widen)
1066 (">" . reftex-index-restriction-forward)
1067 ("<" . reftex-index-restriction-backward)
1068 ("(" . reftex-index-toggle-range-beginning)
1069 (")" . reftex-index-toggle-range-end)
1070 ("|" . reftex-index-edit-attribute)
1071 ("@" . reftex-index-edit-visual)
1072 ("*" . reftex-index-edit-key)
1073 ("\C-c=". reftex-index-goto-toc)
1074 ("c" . reftex-index-toggle-context))
1075 do (define-key reftex-index-map (car x) (cdr x)))
1078 (define-key reftex-index-map (vector (list key)) 'digit-argument))
1079 (define-key reftex-index-map "-" 'negative-argument)
1082 (loop for key across (concat "!" reftex-index-section-letters) do
1083 (define-key reftex-index-map (vector (list key))
1085 (list 'reftex-index-goto-letter key))))
1087 (defun reftex-index-goto-letter (char)
1096 (reftex-index-next))
1100 reftex-index-tag)
1102 reftex-index-tag char)))))
1105 reftex-index-menu reftex-index-map
1110 reftex-index-section-letters) t]
1111 ["Show Entry" reftex-index-view-entry t]
1112 ["Go To Entry" reftex-index-goto-entry t]
1113 ["Exit & Go To Entry" reftex-index-goto-entry-and-hide t]
1114 ["Table of Contents" reftex-index-goto-toc t]
1115 ["Quit" reftex-index-quit t]
1120 ["Rescan One File" reftex-index-rescan reftex-enable-partial-scans]
1121 ["Rescan Entire Document" reftex-index-Rescan t])
1123 ["Restrict to section" reftex-index-restrict-to-section t]
1124 ["Widen" reftex-index-widen reftex-index-restriction-indicator]
1125 ["Next Section" reftex-index-restriction-forward
1126 reftex-index-restriction-indicator]
1127 ["Previous Section" reftex-index-restriction-backward
1128 reftex-index-restriction-indicator])
1130 ["Edit Entry" reftex-index-edit t]
1131 ["Edit Key" reftex-index-edit-key t]
1132 ["Edit Attribute" reftex-index-edit-attribute t]
1133 ["Edit Visual" reftex-index-edit-visual t]
1135 ["Add Parentkey" reftex-index-level-down t]
1136 ["Remove Parentkey " reftex-index-level-up t]
1138 ["Make Start-of-Range" reftex-index-toggle-range-beginning t]
1139 ["Make End-of-Range" reftex-index-toggle-range-end t]
1141 ["Kill Entry" reftex-index-kill nil]
1143 ["Undo" reftex-index-undo nil])
1145 ["Context" reftex-index-toggle-context :style toggle
1146 :selected reftex-index-include-context]
1148 ["Follow Mode" reftex-index-toggle-follow :style toggle
1149 :selected reftex-index-follow-mode])
1151 ["Help" reftex-index-show-help t]))
1158 (defconst reftex-index-phrases-comment-regexp "^[ \t]*%.*"
1160 (defconst reftex-index-phrases-macrodef-regexp
1163 ;(defconst reftex-index-phrases-macrodef-regexp
1167 (defconst reftex-index-phrases-phrase-regexp1
1170 (defconst reftex-index-phrases-phrase-regexp2
1173 (defconst reftex-index-phrases-phrase-regexp12
1176 (defvar reftex-index-phrases-macro-data nil
1179 (defvar reftex-index-phrases-files nil
1182 (defvar reftex-index-phrases-font-lock-keywords nil
1183 "Font lock keywords for reftex-index-phrases-mode.")
1184 (defvar reftex-index-phrases-font-lock-defaults nil
1185 "Font lock defaults for reftex-index-phrases-mode.")
1186 (defvar reftex-index-phrases-map (make-sparse-keymap)
1190 (defun reftex-index-phrase-selection-or-word (arg)
1192 When you are in transient-mark-mode and the region is active, the
1197 (set-marker reftex-index-return-marker (point))
1198 (reftex-index-selection-or-word arg 'phrase)
1199 (if (eq major-mode 'reftex-index-phrases-mode)
1202 "Return to LaTeX with \\[reftex-index-phrases-save-and-return]"))))
1204 (defun reftex-index-visit-phrases-buffer ()
1207 (reftex-access-scan-info)
1208 (let* ((master (reftex-TeX-master-file))
1210 reftex-index-phrase-file-extension)))
1212 (unless (eq major-mode 'reftex-index-phrases-mode)
1213 (reftex-index-phrases-mode))
1215 (reftex-index-initialize-phrases-buffer master))))
1217 (defun reftex-index-initialize-phrases-buffer (&optional master)
1222 (default-key (car reftex-index-default-macro))
1224 reftex-key-to-index-macro-alist)))
1226 (sort (copy-sequence reftex-index-macro-alist)
1236 (while (re-search-forward reftex-index-phrases-macrodef-regexp nil t)
1239 (if (looking-at reftex-index-phrases-comment-regexp)
1248 ;; Insert the mode line
1250 (format "%% -*- mode: reftex-index-phrases; TeX-master: \"%s\" -*-\n"
1251 (file-name-nondirectory (reftex-index-phrase-tex-master))))
1261 reftex-key-to-index-macro-alist))))
1268 (defun reftex-index-phrase-tex-master (&optional dir)
1278 (defun reftex-index-phrases-save-and-return ()
1279 "Return to where the `reftex-index-phrase-selection-or-word' was called."
1282 (switch-to-buffer (marker-buffer reftex-index-return-marker))
1283 (goto-char (or (marker-position reftex-index-return-marker) (point))))
1286 (defvar reftex-index-phrases-menu)
1287 (defvar reftex-index-phrases-marker)
1288 (defvar reftex-index-phrases-restrict-file nil)
1290 (defun reftex-index-phrases-mode ()
1291 "Major mode for managing the Index phrases of a LaTeX document.
1296 - `\\[reftex-index-new-phrase]' in the phrases buffer.
1300 \\[reftex-index-this-phrase] index current phrase
1301 \\[reftex-index-next-phrase] index next phrase (or N with prefix arg)
1302 \\[reftex-index-all-phrases] index all phrases
1303 \\[reftex-index-remaining-phrases] index current and following phrases
1304 \\[reftex-index-region-phrases] index the phrases in the region
1306 You can sort the phrases in this buffer with \\[reftex-index-sort-phrases].
1307 To display information about the phrase at point, use \\[reftex-index-phrases-info].
1313 \\{reftex-index-phrases-map}"
1316 (setq major-mode 'reftex-index-phrases-mode
1317 mode-name "Phrases")
1318 (use-local-map reftex-index-phrases-map)
1320 reftex-index-phrases-font-lock-defaults)
1321 (easy-menu-add reftex-index-phrases-menu reftex-index-phrases-map)
1322 (set (make-local-variable 'reftex-index-phrases-marker) (make-marker))
1323 (run-hooks 'reftex-index-phrases-mode-hook))
1324 (add-hook 'reftex-index-phrases-mode-hook 'turn-on-font-lock)
1328 (setq reftex-index-phrases-font-lock-keywords
1330 (cons reftex-index-phrases-comment-regexp 'font-lock-comment-face)
1331 (list reftex-index-phrases-macrodef-regexp
1338 (list reftex-index-phrases-phrase-regexp1
1343 (list reftex-index-phrases-phrase-regexp2
1350 (setq reftex-index-phrases-font-lock-defaults
1351 '((reftex-index-phrases-font-lock-keywords)
1353 (put 'reftex-index-phrases-mode 'font-lock-defaults
1354 reftex-index-phrases-font-lock-defaults) ; XEmacs
1357 (defun reftex-index-next-phrase (&optional arg)
1360 (reftex-index-phrases-parse-header t)
1364 (if (re-search-forward reftex-index-phrases-phrase-regexp12 nil t)
1367 (reftex-index-this-phrase 'slave))
1370 (defun reftex-index-this-phrase (&optional slave)
1375 (if (not slave) (reftex-index-phrases-parse-header t))
1378 (cond ((looking-at reftex-index-phrases-comment-regexp)
1382 ((looking-at reftex-index-phrases-macrodef-regexp)
1384 ((looking-at reftex-index-phrases-phrase-regexp12)
1391 (car reftex-index-phrases-macro-data)
1392 (assoc char reftex-index-phrases-macro-data))))
1396 (cond ((and (stringp reftex-index-phrases-restrict-file)
1397 (file-regular-p reftex-index-phrases-restrict-file))
1398 (list reftex-index-phrases-restrict-file))
1399 ((stringp reftex-index-phrases-restrict-file)
1401 reftex-index-phrases-restrict-file))
1402 (t reftex-index-phrases-files)))
1403 (as-words reftex-index-phrases-search-whole-words))
1409 reftex-index-phrases-marker)
1412 (move-marker reftex-index-phrases-marker
1415 (reftex-query-index-phrase-globally
1419 (reftex-number replace-count "occurrence"))))))
1422 (defun reftex-index-all-phrases ()
1424 Calls `reftex-index-this-phrase' on each line in the buffer."
1426 (reftex-index-region-phrases (point-min) (point-max)))
1428 (defun reftex-index-remaining-phrases ()
1430 Calls `reftex-index-this-phrase' on each line ay and below point in
1434 (reftex-index-region-phrases (point) (point-max)))
1436 (defun reftex-index-region-phrases (beg end)
1438 Calls `reftex-index-this-phrase' on each line in the region."
1440 (reftex-index-phrases-parse-header t)
1444 (save-excursion (reftex-index-this-phrase 'slave))
1447 (defun reftex-index-phrases-parse-header (&optional get-files)
1449 The definitions get stored in `reftex-index-phrases-macro-data'.
1451 the document and stores the list in `reftex-index-phrases-files'."
1452 (let* ((master (reftex-index-phrase-tex-master))
1457 (setq buf (reftex-get-file-buffer-force master))
1460 (reftex-access-scan-info)
1461 (setq reftex-index-phrases-files
1462 (reftex-all-document-files))))
1464 (setq reftex-index-phrases-macro-data nil)
1467 (while (re-search-forward reftex-index-phrases-macrodef-regexp nil t)
1472 reftex-index-phrases-macro-data))
1474 (if (null reftex-index-phrases-macro-data)
1475 (error "No valid MACRO DEFINITION line in %s file (make sure to use TAB separators)" reftex-index-phrase-file-extension))
1476 (setq reftex-index-phrases-macro-data
1477 (nreverse reftex-index-phrases-macro-data))
1480 (defun reftex-index-phrases-apply-to-region (beg end)
1488 (reftex-index-phrases-restrict-file (buffer-file-name)))
1498 (reftex-index-visit-phrases-buffer)
1499 (reftex-index-all-phrases))
1502 (defun reftex-index-new-phrase (&optional text)
1508 (setq text (reftex-index-simplify-phrase text))
1518 (if (re-search-backward reftex-index-phrases-phrase-regexp12 nil t)
1526 (defun reftex-index-find-next-conflict-phrase (&optional arg)
1536 (while (re-search-forward reftex-index-phrases-phrase-regexp12 nil t)
1539 (case-fold-search reftex-index-phrases-case-fold-search)
1540 (re (reftex-index-phrases-find-dup-re phrase t)))
1547 (reftex-index-phrases-info)
1552 (defun reftex-index-phrases-info ()
1557 (unless (looking-at reftex-index-phrases-phrase-regexp12)
1559 (save-match-data (reftex-index-phrases-parse-header t))
1566 reftex-index-phrases-logical-or-regexp))
1568 (car reftex-index-phrases-macro-data)
1569 (assoc char reftex-index-phrases-macro-data))))
1572 (as-words reftex-index-phrases-search-whole-words)
1573 (example (reftex-index-make-replace-string
1575 (re (reftex-index-make-phrase-regexp phrase as-words t))
1576 (re1 (reftex-index-phrases-find-dup-re phrase))
1577 (re2 (reftex-index-phrases-find-dup-re phrase 'sub))
1582 (case-fold-search reftex-index-phrases-case-fold-search)
1584 (setq files reftex-index-phrases-files)
1597 (setq buf (reftex-get-file-buffer-force file))
1604 (let ((case-fold-search reftex-index-phrases-case-fold-search))
1606 (or (reftex-in-comment)
1625 (reftex-number nmatches "match" "es")
1626 (reftex-number (length reftex-index-phrases-files)
1629 (reftex-number ntimes1 "time")))
1633 (reftex-number ntimes2 "line")))
1638 (defun reftex-index-phrases-set-macro-key ()
1645 (reftex-index-phrases-parse-header)
1648 (unless (or (looking-at reftex-index-phrases-phrase-regexp12)
1651 (let* ((nc (reftex-index-select-phrases-macro 0))
1652 (macro-data (assoc nc reftex-index-phrases-macro-data))
1657 macro-data (car reftex-index-phrases-macro-data)))
1662 macro-data (car reftex-index-phrases-macro-data))
1663 (setq macro-data (assoc nc reftex-index-phrases-macro-data))))
1676 (defun reftex-index-sort-phrases (&optional chars-first)
1688 (and (re-search-forward reftex-index-phrases-phrase-regexp12 nil t)
1691 (setq end (re-search-backward reftex-index-phrases-phrase-regexp12 nil t))
1698 (lines1 (sort lines 'reftex-compare-phrase-lines)))
1708 (defun reftex-compare-phrase-lines (a b)
1711 (if (string-match reftex-index-phrases-phrase-regexp12 a)
1716 (or (and reftex-index-phrases-sort-prefers-entry
1719 (if (string-match reftex-index-phrases-phrase-regexp12 b)
1724 (or (and reftex-index-phrases-sort-prefers-entry
1738 (not reftex-index-phrases-sort-in-blocks))))
1740 (defvar reftex-index-phrases-menu)
1741 (defun reftex-index-make-phrase-regexp (phrase &optional
1753 (if reftex-index-phrases-case-fold-search
1761 (defun reftex-index-simplify-phrase (phrase)
1765 (defun reftex-index-phrases-find-dup-re (phrase &optional sub)
1773 (defun reftex-index-make-replace-string (macro-fmt match index-key
1778 reftex-index-phrases-logical-and-regexp)))
1782 (format (if mathp reftex-index-math-format "%s") x)))
1784 (if repeat (reftex-index-simplify-phrase match) ""))))
1786 (defun reftex-query-index-phrase-globally (files &rest args)
1787 "Call `reftex-query-index-phrase' for all files in FILES."
1793 (switch-to-buffer-other-window (reftex-get-file-buffer-force
1797 (switch-to-buffer (reftex-get-file-buffer-force file))
1800 (unless (stringp reftex-index-phrases-restrict-file)
1803 (apply 'reftex-query-index-phrase args))))))
1804 (reftex-unhighlight 0)
1807 (defconst reftex-index-phrases-help
1823 (defun reftex-query-index-phrase (phrase macro-fmt &optional
1831 (let* ((re (reftex-index-make-phrase-regexp phrase as-words 'allow-newline))
1832 (case-fold-search reftex-index-phrases-case-fold-search)
1835 reftex-index-phrases-logical-or-regexp))
1845 (if (reftex-in-comment)
1847 (if (and (fboundp reftex-index-verify-function)
1848 (not (funcall reftex-index-verify-function)))
1856 (if (and reftex-index-phrases-skip-indexed-matches
1858 (reftex-index-phrase-match-is-indexed beg
1861 (reftex-highlight 0 (match-beginning 0) (match-end 0))
1864 (reftex-index-make-replace-string
1880 (and reftex-index-phrases-wrap-long-lines
1881 (reftex-index-phrases-fixup-line beg end))
1899 (reftex-save-all-document-buffers))
1904 (let* ((nc (reftex-index-select-phrases-macro 2))
1906 (cdr (assoc nc reftex-index-phrases-macro-data)))
1911 (reftex-index-make-replace-string
1918 (princ reftex-index-phrases-help)))
1932 (reftex-index-make-replace-string
1938 (reftex-index-make-replace-string
1946 (reftex-unhighlight 0))))
1948 (defun reftex-index-phrase-match-is-indexed (beg end)
1953 (let* ((all-macros (reftex-what-macro t))
1959 (car (reftex-what-macro 1))))
1967 (if (member (car macro) reftex-macros-with-index)
1971 (member before-macro reftex-macros-with-index))
1973 (member after-macro reftex-macros-with-index))))))
1975 (defun reftex-index-phrases-fixup-line (beg end)
2001 (reftex-index-phrases-replace-space space1))
2003 (reftex-index-phrases-replace-space space2))
2011 (reftex-index-phrases-replace-space space1)
2012 (reftex-index-phrases-replace-space space2))
2015 (reftex-index-phrases-replace-space space1))
2018 (reftex-index-phrases-replace-space space2))))))))))
2020 (defun reftex-index-phrases-replace-space (pos)
2028 (defun reftex-index-select-phrases-macro (&optional delay)
2032 reftex-index-phrases-macro-data "")
2038 reftex-index-phrases-macro-data "\n"))))
2039 (reftex-select-with-char prompt help delay)))
2044 '(("\C-c\C-c" . reftex-index-phrases-save-and-return)
2045 ("\C-c\C-x" . reftex-index-this-phrase)
2046 ("\C-c\C-f" . reftex-index-next-phrase)
2047 ("\C-c\C-r" . reftex-index-region-phrases)
2048 ("\C-c\C-a" . reftex-index-all-phrases)
2049 ("\C-c\C-d" . reftex-index-remaining-phrases)
2050 ("\C-c\C-s" . reftex-index-sort-phrases)
2051 ("\C-c\C-n" . reftex-index-new-phrase)
2052 ("\C-c\C-m" . reftex-index-phrases-set-macro-key)
2053 ("\C-c\C-i" . reftex-index-phrases-info)
2054 ("\C-c\C-t" . reftex-index-find-next-conflict-phrase)
2056 do (define-key reftex-index-phrases-map (car x) (cdr x)))
2059 reftex-index-phrases-menu reftex-index-phrases-map
2062 ["New Phrase" reftex-index-new-phrase t]
2063 ["Set Phrase Macro" reftex-index-phrases-set-macro-key t]
2064 ["Recreate File Header" reftex-index-initialize-phrases-buffer t]
2067 ["Sort" reftex-index-sort-phrases t]
2070 ["by Search Phrase" (setq reftex-index-phrases-sort-prefers-entry nil)
2071 :style radio :selected (not reftex-index-phrases-sort-prefers-entry)]
2072 ["by Index Entry" (setq reftex-index-phrases-sort-prefers-entry t)
2073 :style radio :selected reftex-index-phrases-sort-prefers-entry]
2074 ["in Blocks" (setq reftex-index-phrases-sort-in-blocks
2075 (not reftex-index-phrases-sort-in-blocks))
2076 :style toggle :selected reftex-index-phrases-sort-in-blocks])
2077 ["Describe Phrase" reftex-index-phrases-info t]
2078 ["Next Phrase Conflict" reftex-index-find-next-conflict-phrase t]
2081 ["Current Phrase" reftex-index-this-phrase t]
2082 ["Next Phrase" reftex-index-next-phrase t]
2083 ["Current and Following" reftex-index-remaining-phrases t]
2084 ["Region Phrases" reftex-index-region-phrases t]
2085 ["All Phrases" reftex-index-all-phrases t]
2088 ["Match Whole Words" (setq reftex-index-phrases-search-whole-words
2089 (not reftex-index-phrases-search-whole-words))
2090 :style toggle :selected reftex-index-phrases-search-whole-words]
2091 ["Case Sensitive Search" (setq reftex-index-phrases-case-fold-search
2092 (not reftex-index-phrases-case-fold-search))
2094 reftex-index-phrases-case-fold-search)]
2095 ["Wrap Long Lines" (setq reftex-index-phrases-wrap-long-lines
2096 (not reftex-index-phrases-wrap-long-lines))
2097 :style toggle :selected reftex-index-phrases-wrap-long-lines]
2098 ["Skip Indexed Matches" (setq reftex-index-phrases-skip-indexed-matches
2099 (not reftex-index-phrases-skip-indexed-matches))
2100 :style toggle :selected reftex-index-phrases-skip-indexed-matches])
2102 ["Save and Return" reftex-index-phrases-save-and-return t]))
2106 ;;; reftex-index.el ends here