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

Lines Matching +defs:reftex +defs:mode

0 ;;; reftex-toc.el --- RefTeX's table of contents mode
31 (provide 'reftex-toc)
32 (require 'reftex)
35 (defvar reftex-toc-map (make-sparse-keymap)
38 (defvar reftex-toc-menu)
40 (defvar reftex-last-window-height nil)
41 (defvar reftex-last-window-width nil)
42 (defvar reftex-toc-include-labels-indicator nil)
43 (defvar reftex-toc-include-index-indicator nil)
44 (defvar reftex-toc-max-level-indicator nil)
46 (defun reftex-toc-mode ()
47 "Major mode for managing Table of Contents for LaTeX files.
53 \\{reftex-toc-map}"
56 (setq major-mode 'reftex-toc-mode
57 mode-name "TOC")
58 (use-local-map reftex-toc-map)
59 (set (make-local-variable 'transient-mark-mode) t)
61 (set (make-local-variable 'revert-buffer-function) 'reftex-toc-revert)
62 (set (make-local-variable 'reftex-toc-include-labels-indicator) "")
63 (set (make-local-variable 'reftex-toc-max-level-indicator)
64 (if (= reftex-toc-max-level 100)
66 (int-to-string reftex-toc-max-level)))
67 (setq mode-line-format
68 (list "---- " 'mode-line-buffer-identification
69 " " 'global-mode-string " (" mode-name ")"
70 " L<" 'reftex-toc-include-labels-indicator ">"
71 " I<" 'reftex-toc-include-index-indicator ">"
72 " T<" 'reftex-toc-max-level-indicator ">"
79 (make-local-variable 'reftex-last-follow-point)
80 (add-hook 'post-command-hook 'reftex-toc-post-command-hook nil t)
81 (add-hook 'pre-command-hook 'reftex-toc-pre-command-hook nil t)
82 (easy-menu-add reftex-toc-menu reftex-toc-map)
83 (run-hooks 'reftex-toc-mode-hook))
85 (defvar reftex-last-toc-file nil
86 "Stores the file name from which `reftex-toc' was called. For redo command.")
89 (defvar reftex-toc-return-marker (make-marker)
92 (defconst reftex-toc-help
101 q / k Hide/Kill *toc* buffer, return to position of reftex-toc command.
104 f / g Toggle follow mode / Refresh *toc* buffer.
107 . In other window, show position from where `reftex-toc' was called.
112 (defun reftex-toc (&optional rebuild reuse)
121 (if (or (not (string= reftex-last-toc-master (reftex-TeX-master-file)))
123 (reftex-erase-buffer "*toc*"))
125 (setq reftex-last-toc-file (buffer-file-name))
126 (setq reftex-last-toc-master (reftex-TeX-master-file))
128 (set-marker reftex-toc-return-marker (point))
130 ;; If follow mode is active, arrange to delay it one command
131 (if reftex-toc-follow-mode
132 (setq reftex-toc-follow-mode 1))
134 (and reftex-toc-include-index-entries
135 (reftex-ensure-index-support))
136 (or reftex-support-index
137 (setq reftex-toc-include-index-entries nil))
140 (reftex-access-scan-info current-prefix-arg)
143 (docstruct-symbol reftex-docstruct-symbol)
144 (xr-data (assq 'xr (symbol-value reftex-docstruct-symbol)))
146 (here-I-am (if (boundp 'reftex-rebuilding-toc)
147 (get 'reftex-toc :reftex-data)
148 (car (reftex-where-am-I))))
158 (when (or (not reftex-toc-keep-other-windows)
162 (setq reftex-last-window-width (window-width)
163 reftex-last-window-height (window-height)) ; remember
166 (if reftex-toc-split-windows-horizontally
169 reftex-toc-split-windows-fraction)))
172 reftex-toc-split-windows-fraction)))))
174 (let ((default-major-mode 'reftex-toc-mode))
177 (or (eq major-mode 'reftex-toc-mode) (reftex-toc-mode))
178 (set (make-local-variable 'reftex-docstruct-symbol) docstruct-symbol)
179 (setq reftex-toc-include-labels-indicator
180 (if (eq reftex-toc-include-labels t)
182 reftex-toc-include-labels))
183 (setq reftex-toc-include-index-indicator
184 (if (eq reftex-toc-include-index-entries t)
186 reftex-toc-include-index-entries))
198 " (abbreviate-file-name reftex-last-toc-master)))
200 (if (reftex-use-fonts)
201 (put-text-property (point-min) (point) 'face reftex-toc-header-face))
206 (reftex-insert-docstruct
209 reftex-toc-include-labels
210 reftex-toc-include-index-entries
211 reftex-toc-include-file-boundaries
212 reftex-toc-include-context
220 (run-hooks 'reftex-display-copied-context-hook)
226 (or (reftex-get-offset this-buf here-I-am
227 (if reftex-toc-include-labels " " nil)
229 reftex-toc-include-index-entries
230 reftex-toc-include-file-boundaries)
231 (reftex-last-assoc-before-elt
233 (symbol-value reftex-docstruct-symbol))))
234 (put 'reftex-toc :reftex-line 3)
239 (reftex-find-start-point (point) offset (get 'reftex-toc :reftex-line))
240 (setq reftex-last-follow-point (point))))
242 (defun reftex-toc-recenter (&optional arg)
247 (reftex-toc arg t)
251 (reftex-toc nil t)))
254 (memq reftex-highlight-selection '(cursor both))
255 (reftex-highlight 2
263 (defun reftex-toc-pre-command-hook ()
265 (reftex-unhighlight 0)
268 (defun reftex-toc-post-command-hook ()
271 (put 'reftex-toc :reftex-data (get-text-property (point) :data))
274 (memq reftex-highlight-selection '(cursor both))
275 (reftex-highlight 2
280 (if (integerp reftex-toc-follow-mode)
282 (setq reftex-toc-follow-mode t)
283 (and (not (reftex-toc-dframe-p))
284 reftex-toc-follow-mode
285 (not (equal reftex-last-follow-point (point)))
287 (setq reftex-last-follow-point (point))
289 (reftex-toc-visit-location nil (not reftex-revisit-to-follow))
292 (defun reftex-re-enlarge ()
294 (if reftex-toc-split-windows-horizontally
296 (max 0 (- (or reftex-last-window-width (window-width))
299 (max 0 (- (or reftex-last-window-height (window-height))
302 (defun reftex-toc-dframe-p (&optional frame error)
315 (defun reftex-toc-show-help ()
318 (reftex-toc-dframe-p nil 'error)
320 (princ reftex-toc-help))
321 (reftex-enlarge-to-fit "*RefTeX Help*" t)
322 ;; If follow mode is active, arrange to delay it one command
323 (if reftex-toc-follow-mode
324 (setq reftex-toc-follow-mode 1)))
326 (defun reftex-toc-next (&optional arg)
330 (setq reftex-callback-fwd t)
334 (defun reftex-toc-previous (&optional arg)
338 (setq reftex-callback-fwd nil)
341 (defun reftex-toc-next-heading (&optional arg)
348 (defun reftex-toc-previous-heading (&optional arg)
353 (defun reftex-toc-toggle-follow ()
356 (setq reftex-last-follow-point -1)
357 (setq reftex-toc-follow-mode (not reftex-toc-follow-mode)))
358 (defun reftex-toc-toggle-file-boundary ()
361 (setq reftex-toc-include-file-boundaries
362 (not reftex-toc-include-file-boundaries))
363 (reftex-toc-revert))
364 (defun reftex-toc-toggle-labels (arg)
369 (setq reftex-toc-include-labels
370 (if arg (reftex-query-label-type)
371 (not reftex-toc-include-labels)))
372 (reftex-toc-revert))
373 (defun reftex-toc-toggle-index (arg)
378 (setq reftex-toc-include-index-entries
379 (if arg (reftex-index-select-tag)
380 (not reftex-toc-include-index-entries)))
381 (reftex-toc-revert))
382 (defun reftex-toc-toggle-context ()
386 (setq reftex-toc-include-context (not reftex-toc-include-context))
387 (reftex-toc-revert))
388 (defun reftex-toc-max-level (arg)
393 (setq reftex-toc-max-level (if arg
396 (setq reftex-toc-max-level-indicator
397 (if arg (int-to-string reftex-toc-max-level) "ALL"))
398 (reftex-toc-revert))
399 (defun reftex-toc-view-line ()
402 (reftex-toc-dframe-p nil 'error)
403 (reftex-toc-visit-location))
404 (defun reftex-toc-goto-line-and-hide ()
407 (reftex-toc-dframe-p nil 'error)
408 (reftex-toc-visit-location 'hide))
409 (defun reftex-toc-goto-line ()
412 (reftex-toc-dframe-p nil 'error)
413 (reftex-toc-visit-location t))
414 (defun reftex-toc-mouse-goto-line-and-hide (ev)
418 (reftex-toc-dframe-p nil 'error)
419 (reftex-toc-visit-location 'hide))
420 (defun reftex-toc-show-calling-point ()
421 "Show point where reftex-toc was called from."
423 (reftex-toc-dframe-p nil 'error)
428 (marker-buffer reftex-toc-return-marker))
429 (goto-char (marker-position reftex-toc-return-marker))
432 (defun reftex-toc-quit ()
438 (reftex-toc-dframe-p)
442 (switch-to-buffer (marker-buffer reftex-toc-return-marker))
443 (reftex-re-enlarge)
444 (goto-char (or (marker-position reftex-toc-return-marker) (point)))))
445 (defun reftex-toc-quit-and-kill ()
450 (switch-to-buffer (marker-buffer reftex-toc-return-marker))
451 (reftex-re-enlarge)
452 (goto-char (marker-position reftex-toc-return-marker)))
453 (defun reftex-toc-display-index (&optional arg)
455 This works just like `reftex-display-index' from a LaTeX buffer.
458 (reftex-toc-dframe-p nil 'error)
460 (docstruct (symbol-value reftex-docstruct-symbol))
463 (setq bor (reftex-last-assoc-before-elt 'toc data docstruct)
466 (reftex-toc-goto-line)
467 (reftex-display-index (if restr nil arg) restr)))
470 (defun reftex-toc-rescan (&rest ignore)
473 (if (and reftex-enable-partial-scans
484 (put 'reftex-toc :reftex-line line)
486 (reftex-get-file-buffer-force file))
488 (let ((reftex-rebuilding-toc t))
489 (reftex-toc))))
490 (reftex-toc-Rescan))
491 (reftex-kill-temporary-buffers))
493 (defun reftex-toc-Rescan (&rest ignore)
497 (put 'reftex-toc :reftex-line line))
499 (reftex-get-file-buffer-force reftex-last-toc-file))
501 (let ((reftex-rebuilding-toc t))
502 (reftex-toc)))
504 (defun reftex-toc-revert (&rest ignore)
511 (reftex-rebuilding-toc t))
514 (reftex-get-file-buffer-force reftex-last-toc-file))
516 (reftex-get-file-buffer-force reftex-last-toc-file))))
517 (reftex-erase-buffer "*toc*")
519 (reftex-toc t))
521 (defun reftex-toc-external (&rest ignore)
524 (reftex-toc-dframe-p nil 'error)
527 (xr-index (reftex-select-external-document
529 (switch-to-buffer-other-window (or (reftex-get-file-buffer-force
532 (reftex-toc)
537 (defun reftex-toc-jump (arg)
556 (defun reftex-toc-demote (&optional arg)
559 (reftex-toc-do-promote 1))
560 (defun reftex-toc-promote (&optional arg)
563 (reftex-toc-do-promote -1))
564 (defun reftex-toc-do-promote (delta)
565 "Workhorse for reftex-toc-promote and reftex-to-demote.
573 (mark-line (if (reftex-region-active-p)
582 (if (reftex-region-active-p)
585 (if (not (reftex-toc-check-docstruct))
586 (reftex-toc-load-all-files-for-promotion) ;; exits
599 (setq sections (reftex-toc-extract-section-number (car entries)))
603 (reftex-toc-extract-section-number
606 (setq entries (mapcar 'reftex-toc-promote-prepare entries))
608 (if (or (not reftex-toc-confirm-promotion) ; never confirm
609 (and (integerp reftex-toc-confirm-promotion) ; confirm if many
610 (< nsec reftex-toc-confirm-promotion))
621 (mapcar 'reftex-toc-promote-action entries)
624 (reftex-toc-Rescan))
625 (reftex-toc-restore-region start-line mark-line)
632 (defun reftex-toc-restore-region (point-line &optional mark-line)
649 (defun reftex-toc-promote-prepare (x)
675 (if (looking-at reftex-section-regexp)
676 (setq name (reftex-match-string 2))
683 (if load (reftex-toc-load-all-files-for-promotion))) ; exits
685 (reftex-toc-load-all-files-for-promotion)))
686 (level (cdr (assoc name reftex-section-levels-all)))
696 (newname (reftex-toc-newhead-from-alist newlevel name
697 reftex-section-levels-all)))
703 (defun reftex-toc-promote-action (x)
717 (defun reftex-toc-extract-section-number (entry)
723 (defun reftex-toc-newhead-from-alist (nlevel head alist)
744 (defun reftex-toc-check-docstruct ()
747 (let ((docstruct (symbol-value reftex-docstruct-symbol))
761 (defun reftex-toc-load-all-files-for-promotion ()
764 We do this by rescanning with reftex-keep-temporary-buffers bound to t.
767 (let ((reftex-keep-temporary-buffers t))
768 (reftex-toc-Rescan)
769 (reftex-toc-restore-region start-line mark-line)
773 (defun reftex-toc-rename-label ()
785 (if (assoc newlabel (symbol-value reftex-docstruct-symbol))
791 (reftex-toc-visit-location t)
793 (reftex-query-replace-document
797 (reftex-toc-rescan)))
800 (defun reftex-toc-visit-location (&optional final no-revisit)
820 (setq match (reftex-toc-find-section toc no-revisit)))
824 (setq match (reftex-index-show-entry toc no-revisit)))
831 (if (or (not no-revisit) (reftex-get-buffer-visiting file))
834 (reftex-get-file-buffer-force file nil))
836 (message reftex-no-follow-message) nil))))
840 (setq match (reftex-show-label-location toc reftex-callback-fwd
855 (reftex-unhighlight 0)
858 (reftex-unhighlight 0)
865 (reftex-re-enlarge))
868 (defun reftex-toc-find-section (toc &optional no-revisit)
882 (looking-at (reftex-make-regexp-allow-for-ctrl-m literal))
883 (looking-at (reftex-make-desperate-section-regexp literal))
888 reftex-section-levels-all)))
891 (reftex-get-buffer-visiting file))
894 (reftex-get-file-buffer-force file nil))
898 (or (reftex-nearest-match (regexp-quote literal) len)
899 (reftex-nearest-match
900 (reftex-make-regexp-allow-for-ctrl-m literal) len)
901 (reftex-nearest-match
902 (reftex-make-desperate-section-regexp literal) len)))))
903 (t (message reftex-no-follow-message) nil))))
907 (reftex-highlight 0 (match-beginning 0) (match-end 0) (current-buffer)))
910 (defun reftex-make-desperate-section-regexp (old)
927 (defun reftex-recenter-toc-when-idle ()
929 reftex-mode
931 (fboundp 'reftex-toc-mode)
933 (string= reftex-last-toc-master (reftex-TeX-master-file))
935 (reftex-toc-recenter))))
937 (defun reftex-toggle-auto-toc-recenter ()
942 (if reftex-toc-auto-recenter-timer
945 (delete-itimer reftex-toc-auto-recenter-timer)
946 (cancel-timer reftex-toc-auto-recenter-timer))
947 (setq reftex-toc-auto-recenter-timer nil)
949 (setq reftex-toc-auto-recenter-timer
952 'reftex-recenter-toc-when-idle
953 reftex-idle-time reftex-idle-time t)
955 reftex-idle-time t 'reftex-recenter-toc-when-idle)))
958 (defun reftex-toc-toggle-dedicated-frame ()
960 This frame is not used by the `reftex-toc' commands, but it is useful to
962 `reftex-auto-recenter-toc'."
975 (reftex-make-separate-toc-frame))))
977 (defun reftex-make-separate-toc-frame ()
1001 (when (eq reftex-auto-recenter-toc 'frame)
1002 (unless reftex-toc-auto-recenter-timer
1003 (reftex-toggle-auto-toc-recenter))
1004 (add-hook 'delete-frame-hook 'reftex-toc-delete-frame-hook)))))
1006 (defun reftex-toc-delete-frame-hook (frame)
1007 (if (and reftex-toc-auto-recenter-timer
1008 (reftex-toc-dframe-p frame))
1010 (reftex-toggle-auto-toc-recenter))))
1013 (define-key reftex-toc-map (if (featurep 'xemacs) [(button2)] [(mouse-2)])
1014 'reftex-toc-mouse-goto-line-and-hide)
1015 (define-key reftex-toc-map [follow-link] 'mouse-face)
1018 'next-line 'reftex-toc-next reftex-toc-map global-map)
1020 'previous-line 'reftex-toc-previous reftex-toc-map global-map)
1023 '(("n" . reftex-toc-next)
1024 ("p" . reftex-toc-previous)
1025 ("?" . reftex-toc-show-help)
1026 (" " . reftex-toc-view-line)
1027 ("\C-m" . reftex-toc-goto-line-and-hide)
1028 ("\C-i" . reftex-toc-goto-line)
1029 ("\C-c>" . reftex-toc-display-index)
1030 ("r" . reftex-toc-rescan)
1031 ("R" . reftex-toc-Rescan)
1033 ("q" . reftex-toc-quit);
1034 ("k" . reftex-toc-quit-and-kill)
1035 ("f" . reftex-toc-toggle-follow);
1036 ("a" . reftex-toggle-auto-toc-recenter)
1037 ("d" . reftex-toc-toggle-dedicated-frame)
1038 ("F" . reftex-toc-toggle-file-boundary)
1039 ("i" . reftex-toc-toggle-index)
1040 ("l" . reftex-toc-toggle-labels)
1041 ("t" . reftex-toc-max-level)
1042 ("c" . reftex-toc-toggle-context)
1043 ; ("%" . reftex-toc-toggle-commented)
1044 ("\M-%" . reftex-toc-rename-label)
1045 ("x" . reftex-toc-external)
1046 ("z" . reftex-toc-jump)
1047 ("." . reftex-toc-show-calling-point)
1048 ("\C-c\C-n" . reftex-toc-next-heading)
1049 ("\C-c\C-p" . reftex-toc-previous-heading)
1050 (">" . reftex-toc-demote)
1051 ("<" . reftex-toc-promote))
1052 do (define-key reftex-toc-map (car x) (cdr x)))
1055 (define-key reftex-toc-map (vector (list key)) 'digit-argument))
1056 (define-key reftex-toc-map "-" 'negative-argument)
1059 reftex-toc-menu reftex-toc-map
1062 ["Show Location" reftex-toc-view-line t]
1063 ["Go To Location" reftex-toc-goto-line t]
1064 ["Exit & Go To Location" reftex-toc-goto-line-and-hide t]
1065 ["Show Calling Point" reftex-toc-show-calling-point t]
1066 ["Quit" reftex-toc-quit t]
1069 ["Promote" reftex-toc-promote t]
1070 ["Demote" reftex-toc-demote t]
1071 ["Rename Label" reftex-toc-rename-label t])
1073 ["Index" reftex-toc-display-index t]
1074 ["External Document TOC " reftex-toc-external t]
1078 ["Rescan One File" reftex-toc-rescan reftex-enable-partial-scans]
1079 ["Rescan Entire Document" reftex-toc-Rescan t])
1082 ["File Boundaries" reftex-toc-toggle-file-boundary :style toggle
1083 :selected reftex-toc-include-file-boundaries]
1084 ["Labels" reftex-toc-toggle-labels :style toggle
1085 :selected reftex-toc-include-labels]
1086 ["Index Entries" reftex-toc-toggle-index :style toggle
1087 :selected reftex-toc-include-index-entries]
1088 ["Context" reftex-toc-toggle-context :style toggle
1089 :selected reftex-toc-include-context]
1091 ["Follow Mode" reftex-toc-toggle-follow :style toggle
1092 :selected reftex-toc-follow-mode]
1093 ["Auto Recenter" reftex-toggle-auto-toc-recenter :style toggle
1094 :selected reftex-toc-auto-recenter-timer]
1095 ["Dedicated Frame" reftex-toc-toggle-dedicated-frame t])
1097 ["Help" reftex-toc-show-help t]))
1101 ;;; reftex-toc.el ends here