2001-07-16 07:46:48 +00:00
|
|
|
;;; reftex-toc.el --- RefTeX's table of contents mode
|
2009-08-22 19:29:18 +00:00
|
|
|
|
2017-01-01 03:14:01 +00:00
|
|
|
;; Copyright (C) 1997-2000, 2003-2017 Free Software Foundation, Inc.
|
1999-12-30 02:57:12 +00:00
|
|
|
|
2002-07-22 10:38:32 +00:00
|
|
|
;; Author: Carsten Dominik <dominik@science.uva.nl>
|
2007-03-22 21:06:43 +00:00
|
|
|
;; Maintainer: auctex-devel@gnu.org
|
1999-12-30 02:57:12 +00:00
|
|
|
|
|
|
|
;; This file is part of GNU Emacs.
|
|
|
|
|
2008-05-06 04:34:22 +00:00
|
|
|
;; GNU Emacs is free software: you can redistribute it and/or modify
|
1999-12-30 02:57:12 +00:00
|
|
|
;; it under the terms of the GNU General Public License as published by
|
2008-05-06 04:34:22 +00:00
|
|
|
;; the Free Software Foundation, either version 3 of the License, or
|
|
|
|
;; (at your option) any later version.
|
1999-12-30 02:57:12 +00:00
|
|
|
|
|
|
|
;; GNU Emacs is distributed in the hope that it will be useful,
|
|
|
|
;; but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
|
;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
|
|
;; GNU General Public License for more details.
|
|
|
|
|
|
|
|
;; You should have received a copy of the GNU General Public License
|
2017-09-13 15:52:52 -07:00
|
|
|
;; along with GNU Emacs. If not, see <https://www.gnu.org/licenses/>.
|
1999-08-16 07:42:41 +00:00
|
|
|
|
2001-07-16 07:46:48 +00:00
|
|
|
;;; Commentary:
|
|
|
|
|
|
|
|
;;; Code:
|
|
|
|
|
1999-08-16 07:42:41 +00:00
|
|
|
(provide 'reftex-toc)
|
|
|
|
(require 'reftex)
|
|
|
|
;;;
|
|
|
|
|
2012-05-12 23:05:06 -04:00
|
|
|
(define-obsolete-variable-alias 'reftex-toc-map 'reftex-toc-mode-map "24.1")
|
2011-01-13 18:14:30 -05:00
|
|
|
(defvar reftex-toc-mode-map
|
|
|
|
(let ((map (make-sparse-keymap)))
|
2011-11-14 15:59:56 -08:00
|
|
|
|
2011-01-13 18:14:30 -05:00
|
|
|
(define-key map (if (featurep 'xemacs) [(button2)] [(mouse-2)])
|
|
|
|
'reftex-toc-mouse-goto-line-and-hide)
|
|
|
|
(define-key map [follow-link] 'mouse-face)
|
|
|
|
|
|
|
|
(substitute-key-definition
|
|
|
|
'next-line 'reftex-toc-next map global-map)
|
|
|
|
(substitute-key-definition
|
|
|
|
'previous-line 'reftex-toc-previous map global-map)
|
|
|
|
|
2016-11-18 19:36:18 -05:00
|
|
|
(define-key map "n" 'reftex-toc-next)
|
|
|
|
(define-key map "p" 'reftex-toc-previous)
|
|
|
|
(define-key map "?" 'reftex-toc-show-help)
|
|
|
|
(define-key map " " 'reftex-toc-view-line)
|
|
|
|
(define-key map "\C-m" 'reftex-toc-goto-line-and-hide)
|
|
|
|
(define-key map "\C-i" 'reftex-toc-goto-line)
|
|
|
|
(define-key map "\C-c>" 'reftex-toc-display-index)
|
|
|
|
(define-key map "r" 'reftex-toc-rescan)
|
|
|
|
(define-key map "R" 'reftex-toc-Rescan)
|
|
|
|
(define-key map "q" 'reftex-toc-quit) ;
|
|
|
|
(define-key map "k" 'reftex-toc-quit-and-kill)
|
|
|
|
(define-key map "f" 'reftex-toc-toggle-follow) ;
|
|
|
|
(define-key map "a" 'reftex-toggle-auto-toc-recenter)
|
|
|
|
(define-key map "d" 'reftex-toc-toggle-dedicated-frame)
|
|
|
|
(define-key map "F" 'reftex-toc-toggle-file-boundary)
|
|
|
|
(define-key map "i" 'reftex-toc-toggle-index)
|
|
|
|
(define-key map "l" 'reftex-toc-toggle-labels)
|
|
|
|
(define-key map "t" 'reftex-toc-max-level)
|
|
|
|
(define-key map "c" 'reftex-toc-toggle-context)
|
|
|
|
;; (define-key map "%" 'reftex-toc-toggle-commented)
|
|
|
|
(define-key map "\M-%" 'reftex-toc-rename-label)
|
|
|
|
(define-key map "x" 'reftex-toc-external)
|
|
|
|
(define-key map "z" 'reftex-toc-jump)
|
|
|
|
(define-key map "." 'reftex-toc-show-calling-point)
|
|
|
|
(define-key map "\C-c\C-n" 'reftex-toc-next-heading)
|
|
|
|
(define-key map "\C-c\C-p" 'reftex-toc-previous-heading)
|
|
|
|
(define-key map ">" 'reftex-toc-demote)
|
|
|
|
(define-key map "<" 'reftex-toc-promote)
|
2011-01-13 18:14:30 -05:00
|
|
|
|
|
|
|
(easy-menu-define
|
|
|
|
reftex-toc-menu map
|
|
|
|
"Menu for Table of Contents buffer"
|
|
|
|
'("TOC"
|
|
|
|
["Show Location" reftex-toc-view-line t]
|
|
|
|
["Go To Location" reftex-toc-goto-line t]
|
|
|
|
["Exit & Go To Location" reftex-toc-goto-line-and-hide t]
|
|
|
|
["Show Calling Point" reftex-toc-show-calling-point t]
|
|
|
|
["Quit" reftex-toc-quit t]
|
|
|
|
"--"
|
|
|
|
("Edit"
|
|
|
|
["Promote" reftex-toc-promote t]
|
|
|
|
["Demote" reftex-toc-demote t]
|
|
|
|
["Rename Label" reftex-toc-rename-label t])
|
|
|
|
"--"
|
|
|
|
["Index" reftex-toc-display-index t]
|
|
|
|
["External Document TOC " reftex-toc-external t]
|
|
|
|
"--"
|
|
|
|
("Update"
|
|
|
|
["Rebuilt *toc* Buffer" revert-buffer t]
|
|
|
|
["Rescan One File" reftex-toc-rescan reftex-enable-partial-scans]
|
|
|
|
["Rescan Entire Document" reftex-toc-Rescan t])
|
|
|
|
("Options"
|
|
|
|
"TOC Items"
|
|
|
|
["File Boundaries" reftex-toc-toggle-file-boundary :style toggle
|
|
|
|
:selected reftex-toc-include-file-boundaries]
|
|
|
|
["Labels" reftex-toc-toggle-labels :style toggle
|
|
|
|
:selected reftex-toc-include-labels]
|
|
|
|
["Index Entries" reftex-toc-toggle-index :style toggle
|
|
|
|
:selected reftex-toc-include-index-entries]
|
|
|
|
["Context" reftex-toc-toggle-context :style toggle
|
|
|
|
:selected reftex-toc-include-context]
|
|
|
|
"--"
|
|
|
|
["Follow Mode" reftex-toc-toggle-follow :style toggle
|
|
|
|
:selected reftex-toc-follow-mode]
|
|
|
|
["Auto Recenter" reftex-toggle-auto-toc-recenter :style toggle
|
|
|
|
:selected reftex-toc-auto-recenter-timer]
|
|
|
|
["Dedicated Frame" reftex-toc-toggle-dedicated-frame t])
|
|
|
|
"--"
|
|
|
|
["Help" reftex-toc-show-help t]))
|
|
|
|
|
|
|
|
map)
|
1999-08-16 07:42:41 +00:00
|
|
|
"Keymap used for *toc* buffer.")
|
|
|
|
|
|
|
|
(defvar reftex-toc-menu)
|
2005-09-16 10:05:32 +00:00
|
|
|
(defvar reftex-last-window-height nil)
|
|
|
|
(defvar reftex-last-window-width nil)
|
2005-08-31 10:34:40 +00:00
|
|
|
(defvar reftex-toc-include-labels-indicator nil)
|
|
|
|
(defvar reftex-toc-include-index-indicator nil)
|
|
|
|
(defvar reftex-toc-max-level-indicator nil)
|
1999-08-16 07:42:41 +00:00
|
|
|
|
2014-09-21 11:34:02 +02:00
|
|
|
(define-derived-mode reftex-toc-mode special-mode "TOC"
|
1999-08-16 07:42:41 +00:00
|
|
|
"Major mode for managing Table of Contents for LaTeX files.
|
|
|
|
This buffer was created with RefTeX.
|
|
|
|
Press `?' for a summary of important key bindings.
|
|
|
|
|
|
|
|
Here are all local bindings.
|
|
|
|
|
2011-01-13 18:14:30 -05:00
|
|
|
\\{reftex-toc-mode-map}"
|
2003-08-11 12:27:02 +00:00
|
|
|
(set (make-local-variable 'transient-mark-mode) t)
|
2008-03-20 07:44:55 +00:00
|
|
|
(when (featurep 'xemacs)
|
|
|
|
(set (make-local-variable 'zmacs-regions) t))
|
1999-08-16 07:42:41 +00:00
|
|
|
(set (make-local-variable 'revert-buffer-function) 'reftex-toc-revert)
|
|
|
|
(set (make-local-variable 'reftex-toc-include-labels-indicator) "")
|
* reftex.el (reftex-compile-variables): respect new structure of
`reftex-index-macro'
(reftex-compile-variables): Use the changed structure of
`reftex-label-alist'.
* reftex-vars.el (reftex-index-math-format,
(reftex-toc-max-level): New option.
reftex-index-phrases-search-whole-words,
reftex-index-phrases-case-fold-search,
reftex-index-phrases-skip-indexed-matches,
reftex-index-phrases-wrap-long-lines,
reftex-index-phrases-sort-prefers-entry,
reftex-index-phrases-sort-in-blocks): New options.
(reftex-index-macros): Option structure changed.
(reftex-index-macros-builtin): Added `repeat' item to each entry.
(reftex-label-alist): Additional item in each entry to specify if
the environment should be listed in the TOC.
(eval-when-compile (require 'cl)) added.
* reftex-index.el (reftex-index-selection-or-word): No longer
deals with "repeat".
(reftex-index): "repeat property in `reftex-index-macro-alist' is
now used.
(reftex-index-phrases-comment-regexp,
reftex-index-phrases-macrodef-regexp,
reftex-index-phrases-phrase-regexp1,
reftex-index-phrases-phrase-regexp2,
reftex-index-phrases-phrase-regexp12, reftex-index-phrases-help):
New constants.
(reftex-index-phrases-macro-data, reftex-index-phrases-files,
reftex-index-phrases-font-lock-keywords,
reftex-index-phrases-font-lock-defaults, reftex-index-phrases-map,
reftex-index-phrases-restrict-file): New variables.
(reftex-index-phrase-selection-or-word,
reftex-index-visit-phrases-buffer,
reftex-index-initialize-phrases-buffer,
reftex-index-phrases-save-and-return, reftex-index-phrases-mode,
reftex-index-next-phrase, reftex-index-this-phrase,
reftex-index-all-phrases, reftex-index-region-phrases,
reftex-index-phrases-parse-header,
reftex-index-phrases-toggle-restricted, reftex-index-new-phrase,
reftex-index-find-next-conflict-phrase, reftex-index-phrases-info,
reftex-index-phrases-set-macro-key, reftex-index-sort-phrases,
reftex-compare-phrase-lines, reftex-index-make-phrase-regexp,
reftex-index-simplify-phrase, reftex-index-phrases-find-dup-re,
reftex-index-make-replace-string,
reftex-query-index-phrase-globally, reftex-query-index-phrase,
reftex-index-phrase-match-is-indexed,
reftex-index-phrases-fixup-line,
reftex-index-phrases-replace-space,
reftex-index-select-phrases-macro): New functions.
(reftex-index-globalize, reftex-index-globally): functions removed
(eval-when-compile (require 'cl)) added.
* reftex-toc.el (reftex-toc-mode): Create new indicator for max
level.
(reftex-toc-max-level-indicator): New variable.
(reftex-toc-max-level): New command.
(reftex-toc-map): New keybinding `t'.
(reftex-toc-help): Constant updated.
(eval-when-compile (require 'cl)) added.
* reftex-ref.el (reftex-offer-label-menu): Prefix to `t' command key
can change `reftex-toc-max-level'
(eval-when-compile (require 'cl)) added.
* reftex-sel (reftex-insert-docstruct): Respect
`reftex-toc-max-level'
(eval-when-compile (require 'cl)) added.
* reftex-auc.el (eval-when-compile (require 'cl)) added.
* reftex-vcr.el (eval-when-compile (require 'cl)) added.
* reftex-cite.el (reftex-citep, reftex-citet): New commands.
(reftex-citation, reftex-do-citation,
reftex-figure-out-cite-format): Additional argument FORMAT-KEY to
preselect a citation format.
(eval-when-compile (require 'cl)) added.
* reftex-parse.el (reftex-context-substring): Optional parameter
to-end
(reftex-section-info): Deal with environment matches.
(eval-when-compile (require 'cl)) added.
* reftex-global.el (eval-when-compile (require 'cl)) added.
1999-12-15 17:02:38 +00:00
|
|
|
(set (make-local-variable 'reftex-toc-max-level-indicator)
|
|
|
|
(if (= reftex-toc-max-level 100)
|
2003-08-11 12:27:02 +00:00
|
|
|
"ALL"
|
|
|
|
(int-to-string reftex-toc-max-level)))
|
1999-08-16 07:42:41 +00:00
|
|
|
(setq mode-line-format
|
2003-08-11 12:27:02 +00:00
|
|
|
(list "---- " 'mode-line-buffer-identification
|
|
|
|
" " 'global-mode-string " (" mode-name ")"
|
|
|
|
" L<" 'reftex-toc-include-labels-indicator ">"
|
|
|
|
" I<" 'reftex-toc-include-index-indicator ">"
|
|
|
|
" T<" 'reftex-toc-max-level-indicator ">"
|
|
|
|
" -%-"))
|
1999-08-16 07:42:41 +00:00
|
|
|
(setq truncate-lines t)
|
2002-07-25 07:03:41 +00:00
|
|
|
(when (featurep 'xemacs)
|
|
|
|
;; XEmacs needs the call to make-local-hook
|
|
|
|
(make-local-hook 'post-command-hook)
|
|
|
|
(make-local-hook 'pre-command-hook))
|
1999-08-16 07:42:41 +00:00
|
|
|
(make-local-variable 'reftex-last-follow-point)
|
|
|
|
(add-hook 'post-command-hook 'reftex-toc-post-command-hook nil t)
|
|
|
|
(add-hook 'pre-command-hook 'reftex-toc-pre-command-hook nil t)
|
2011-01-13 18:14:30 -05:00
|
|
|
(easy-menu-add reftex-toc-menu reftex-toc-mode-map))
|
1999-08-16 07:42:41 +00:00
|
|
|
|
|
|
|
(defvar reftex-last-toc-file nil
|
|
|
|
"Stores the file name from which `reftex-toc' was called. For redo command.")
|
|
|
|
|
|
|
|
|
|
|
|
(defvar reftex-toc-return-marker (make-marker)
|
2011-11-17 13:16:44 +01:00
|
|
|
"Marker which makes it possible to return from TOC to old position.")
|
1999-08-16 07:42:41 +00:00
|
|
|
|
|
|
|
(defconst reftex-toc-help
|
|
|
|
" AVAILABLE KEYS IN TOC BUFFER
|
|
|
|
============================
|
|
|
|
n / p next-line / previous-line
|
|
|
|
SPC Show the corresponding location of the LaTeX document.
|
2011-11-17 13:16:44 +01:00
|
|
|
TAB Goto the location and keep the TOC window.
|
|
|
|
RET Goto the location and hide the TOC window (also on mouse-2).
|
2003-08-11 12:27:02 +00:00
|
|
|
< / > Promote / Demote section, or all sections in region.
|
1999-08-16 07:42:41 +00:00
|
|
|
C-c > Display Index. With prefix arg, restrict index to current section.
|
|
|
|
q / k Hide/Kill *toc* buffer, return to position of reftex-toc command.
|
|
|
|
l i c F Toggle display of [l]abels, [i]ndex, [c]ontext, [F]ile borders.
|
* reftex.el (reftex-compile-variables): respect new structure of
`reftex-index-macro'
(reftex-compile-variables): Use the changed structure of
`reftex-label-alist'.
* reftex-vars.el (reftex-index-math-format,
(reftex-toc-max-level): New option.
reftex-index-phrases-search-whole-words,
reftex-index-phrases-case-fold-search,
reftex-index-phrases-skip-indexed-matches,
reftex-index-phrases-wrap-long-lines,
reftex-index-phrases-sort-prefers-entry,
reftex-index-phrases-sort-in-blocks): New options.
(reftex-index-macros): Option structure changed.
(reftex-index-macros-builtin): Added `repeat' item to each entry.
(reftex-label-alist): Additional item in each entry to specify if
the environment should be listed in the TOC.
(eval-when-compile (require 'cl)) added.
* reftex-index.el (reftex-index-selection-or-word): No longer
deals with "repeat".
(reftex-index): "repeat property in `reftex-index-macro-alist' is
now used.
(reftex-index-phrases-comment-regexp,
reftex-index-phrases-macrodef-regexp,
reftex-index-phrases-phrase-regexp1,
reftex-index-phrases-phrase-regexp2,
reftex-index-phrases-phrase-regexp12, reftex-index-phrases-help):
New constants.
(reftex-index-phrases-macro-data, reftex-index-phrases-files,
reftex-index-phrases-font-lock-keywords,
reftex-index-phrases-font-lock-defaults, reftex-index-phrases-map,
reftex-index-phrases-restrict-file): New variables.
(reftex-index-phrase-selection-or-word,
reftex-index-visit-phrases-buffer,
reftex-index-initialize-phrases-buffer,
reftex-index-phrases-save-and-return, reftex-index-phrases-mode,
reftex-index-next-phrase, reftex-index-this-phrase,
reftex-index-all-phrases, reftex-index-region-phrases,
reftex-index-phrases-parse-header,
reftex-index-phrases-toggle-restricted, reftex-index-new-phrase,
reftex-index-find-next-conflict-phrase, reftex-index-phrases-info,
reftex-index-phrases-set-macro-key, reftex-index-sort-phrases,
reftex-compare-phrase-lines, reftex-index-make-phrase-regexp,
reftex-index-simplify-phrase, reftex-index-phrases-find-dup-re,
reftex-index-make-replace-string,
reftex-query-index-phrase-globally, reftex-query-index-phrase,
reftex-index-phrase-match-is-indexed,
reftex-index-phrases-fixup-line,
reftex-index-phrases-replace-space,
reftex-index-select-phrases-macro): New functions.
(reftex-index-globalize, reftex-index-globally): functions removed
(eval-when-compile (require 'cl)) added.
* reftex-toc.el (reftex-toc-mode): Create new indicator for max
level.
(reftex-toc-max-level-indicator): New variable.
(reftex-toc-max-level): New command.
(reftex-toc-map): New keybinding `t'.
(reftex-toc-help): Constant updated.
(eval-when-compile (require 'cl)) added.
* reftex-ref.el (reftex-offer-label-menu): Prefix to `t' command key
can change `reftex-toc-max-level'
(eval-when-compile (require 'cl)) added.
* reftex-sel (reftex-insert-docstruct): Respect
`reftex-toc-max-level'
(eval-when-compile (require 'cl)) added.
* reftex-auc.el (eval-when-compile (require 'cl)) added.
* reftex-vcr.el (eval-when-compile (require 'cl)) added.
* reftex-cite.el (reftex-citep, reftex-citet): New commands.
(reftex-citation, reftex-do-citation,
reftex-figure-out-cite-format): Additional argument FORMAT-KEY to
preselect a citation format.
(eval-when-compile (require 'cl)) added.
* reftex-parse.el (reftex-context-substring): Optional parameter
to-end
(reftex-section-info): Deal with environment matches.
(eval-when-compile (require 'cl)) added.
* reftex-global.el (eval-when-compile (require 'cl)) added.
1999-12-15 17:02:38 +00:00
|
|
|
t Change maximum toc depth (e.g. `3 t' hides levels greater than 3).
|
2003-08-11 12:27:02 +00:00
|
|
|
f / g Toggle follow mode / Refresh *toc* buffer.
|
|
|
|
a / d Toggle auto recenter / Toggle dedicated frame
|
1999-08-16 07:42:41 +00:00
|
|
|
r / C-u r Reparse the LaTeX document / Reparse entire LaTeX document.
|
|
|
|
. In other window, show position from where `reftex-toc' was called.
|
2003-08-11 12:27:02 +00:00
|
|
|
M-% Global search and replace to rename label at point.
|
2001-06-08 08:43:20 +00:00
|
|
|
x Switch to TOC of external document (with LaTeX package `xr').
|
2003-08-11 12:27:02 +00:00
|
|
|
z Jump to a specific section (e.g. '3 z' goes to section 3).")
|
1999-08-16 07:42:41 +00:00
|
|
|
|
2015-04-27 12:59:11 -04:00
|
|
|
(defvar reftex--rebuilding-toc nil)
|
|
|
|
|
2014-03-28 20:53:32 -04:00
|
|
|
;;;###autoload
|
2015-04-27 12:59:11 -04:00
|
|
|
(defun reftex-toc (&optional _rebuild reuse)
|
|
|
|
;; FIXME: Get rid of the `rebuild' argument.
|
1999-08-16 07:42:41 +00:00
|
|
|
"Show the table of contents for the current document.
|
|
|
|
When called with a raw C-u prefix, rescan the document first."
|
|
|
|
|
2003-08-11 12:27:02 +00:00
|
|
|
;; The REUSE argument means, search all visible frames for a window
|
|
|
|
;; displaying the toc window. If yes, reuse this window.
|
|
|
|
|
1999-08-16 07:42:41 +00:00
|
|
|
(interactive)
|
|
|
|
|
|
|
|
(if (or (not (string= reftex-last-toc-master (reftex-TeX-master-file)))
|
2015-04-27 12:59:11 -04:00
|
|
|
;; FIXME: use (interactive "P") to receive current-prefix-arg as
|
|
|
|
;; an argument instead of using the var here, which forces us to set
|
|
|
|
;; current-prefix-arg in the callers.
|
1999-08-16 07:42:41 +00:00
|
|
|
current-prefix-arg)
|
|
|
|
(reftex-erase-buffer "*toc*"))
|
|
|
|
|
|
|
|
(setq reftex-last-toc-file (buffer-file-name))
|
|
|
|
(setq reftex-last-toc-master (reftex-TeX-master-file))
|
|
|
|
|
|
|
|
(set-marker reftex-toc-return-marker (point))
|
|
|
|
|
|
|
|
;; If follow mode is active, arrange to delay it one command
|
|
|
|
(if reftex-toc-follow-mode
|
|
|
|
(setq reftex-toc-follow-mode 1))
|
|
|
|
|
|
|
|
(and reftex-toc-include-index-entries
|
|
|
|
(reftex-ensure-index-support))
|
|
|
|
(or reftex-support-index
|
|
|
|
(setq reftex-toc-include-index-entries nil))
|
|
|
|
|
|
|
|
;; Ensure access to scanning info and rescan buffer if prefix are is '(4)
|
|
|
|
(reftex-access-scan-info current-prefix-arg)
|
|
|
|
|
|
|
|
(let* ((this-buf (current-buffer))
|
2003-08-11 12:27:02 +00:00
|
|
|
(docstruct-symbol reftex-docstruct-symbol)
|
|
|
|
(xr-data (assq 'xr (symbol-value reftex-docstruct-symbol)))
|
|
|
|
(xr-alist (cons (cons "" (buffer-file-name)) (nth 1 xr-data)))
|
2015-04-27 12:59:11 -04:00
|
|
|
(here-I-am (if reftex--rebuilding-toc
|
2003-08-11 12:27:02 +00:00
|
|
|
(get 'reftex-toc :reftex-data)
|
|
|
|
(car (reftex-where-am-I))))
|
|
|
|
(unsplittable (if (fboundp 'frame-property)
|
|
|
|
(frame-property (selected-frame) 'unsplittable)
|
2013-07-31 10:52:26 +04:00
|
|
|
(frame-parameter nil 'unsplittable)))
|
2003-08-11 12:27:02 +00:00
|
|
|
offset toc-window)
|
|
|
|
|
2009-08-22 19:29:18 +00:00
|
|
|
(if (setq toc-window (get-buffer-window
|
2003-08-11 12:27:02 +00:00
|
|
|
"*toc*"
|
|
|
|
(if reuse 'visible)))
|
|
|
|
(select-window toc-window)
|
1999-08-16 07:42:41 +00:00
|
|
|
(when (or (not reftex-toc-keep-other-windows)
|
2003-08-11 12:27:02 +00:00
|
|
|
(< (window-height) (* 2 window-min-height)))
|
|
|
|
(delete-other-windows))
|
2002-07-22 10:38:32 +00:00
|
|
|
|
2014-04-04 14:10:22 +02:00
|
|
|
(setq reftex-last-window-width (window-total-width)
|
2003-08-11 12:27:02 +00:00
|
|
|
reftex-last-window-height (window-height)) ; remember
|
|
|
|
|
|
|
|
(unless unsplittable
|
|
|
|
(if reftex-toc-split-windows-horizontally
|
2011-10-30 09:56:03 +08:00
|
|
|
(split-window-right
|
2014-04-04 14:10:22 +02:00
|
|
|
(floor (* (window-total-width)
|
2003-08-11 12:27:02 +00:00
|
|
|
reftex-toc-split-windows-fraction)))
|
2011-10-30 09:56:03 +08:00
|
|
|
(split-window-below
|
2003-08-11 12:27:02 +00:00
|
|
|
(floor (* (window-height)
|
|
|
|
reftex-toc-split-windows-fraction)))))
|
2002-07-22 10:38:32 +00:00
|
|
|
|
2009-09-01 03:02:25 +00:00
|
|
|
(switch-to-buffer "*toc*"))
|
1999-08-16 07:42:41 +00:00
|
|
|
|
|
|
|
(or (eq major-mode 'reftex-toc-mode) (reftex-toc-mode))
|
|
|
|
(set (make-local-variable 'reftex-docstruct-symbol) docstruct-symbol)
|
|
|
|
(setq reftex-toc-include-labels-indicator
|
2003-08-11 12:27:02 +00:00
|
|
|
(if (eq reftex-toc-include-labels t)
|
|
|
|
"ALL"
|
|
|
|
reftex-toc-include-labels))
|
1999-08-16 07:42:41 +00:00
|
|
|
(setq reftex-toc-include-index-indicator
|
2003-08-11 12:27:02 +00:00
|
|
|
(if (eq reftex-toc-include-index-entries t)
|
|
|
|
"ALL"
|
|
|
|
reftex-toc-include-index-entries))
|
1999-08-16 07:42:41 +00:00
|
|
|
|
|
|
|
(cond
|
|
|
|
((= (buffer-size) 0)
|
|
|
|
;; buffer is empty - fill it with the table of contents
|
|
|
|
(message "Building *toc* buffer...")
|
|
|
|
|
|
|
|
(setq buffer-read-only nil)
|
|
|
|
(insert (format
|
|
|
|
"TABLE-OF-CONTENTS on %s
|
|
|
|
SPC=view TAB=goto RET=goto+hide [q]uit [r]escan [l]abels [f]ollow [x]r [?]Help
|
|
|
|
------------------------------------------------------------------------------
|
|
|
|
" (abbreviate-file-name reftex-last-toc-master)))
|
|
|
|
|
|
|
|
(if (reftex-use-fonts)
|
2014-09-21 11:34:02 +02:00
|
|
|
(put-text-property (point-min) (point) 'font-lock-face reftex-toc-header-face))
|
Deprecate `intangible' and `point-entered' properties
* lisp/emacs-lisp/cursor-sensor.el: New file.
* lisp/simple.el (pre-redisplay-functions): New hook.
(redisplay--pre-redisplay-functions): New function.
(pre-redisplay-function): Use it.
(minibuffer-avoid-prompt): Mark obsolete.
(redisplay--update-region-highlight): Adapt it to work as a function on
pre-redisplay-functions.
* lisp/cus-start.el (minibuffer-prompt-properties--setter): New fun.
(minibuffer-prompt-properties): Use it. Use cursor-intangible rather
than point-entered to make the prompt intangible.
* lisp/forms.el: Move `provide' calls to the end.
(forms-mode): Don't use `run-hooks' on a local var.
(forms--make-format, forms--make-format-elt-using-text-properties):
Use cursor-intangible rather than `intangible'.
(forms-mode): Enable cursor-intangible-mode.
* lisp/isearch.el (isearch-mode): Use defvar-local.
(cursor-sensor-inhibit): Declare.
(isearch-mode): Set cursor-sensor-inhibit.
(isearch-done): Set it back.
(isearch-open-overlay-temporary, isearch-open-necessary-overlays)
(isearch-close-unnecessary-overlays): Don't bother with `intangible'
any more.
* lisp/ses.el (ses-localvars): Remove `mode-line-process'.
(ses-sym-rowcol, ses-cell-value, ses-col-width, ses-col-printer):
Add Edebug spec.
(ses-goto-print, ses-print-cell, ses-adjust-print-width)
(ses-goto-data, ses-setup, ses-copy-region): Don't let-bind
inhibit-point-motion-hooks any more.
(ses--cell-at-pos, ses--curcell): New functions, extracted from
ses-set-curcell.
(ses-set-curcell): Use them.
(ses-print-cell, ses-setup): Use cursor-intangible instead of
`intangible'. Make sure cursor-intangible isn't sticky at BOB.
(ses-print-cell-new-width, ses-reprint-all, ses-recalculate-all):
Use ses--cell-at-pos.
(ses--mode-line-process, ses--cursor-sensor-highlight): New functions,
extracted from ses-command-hook. Make them work with multiple windows
displaying the same buffer.
(ses-mode): Use them via mode-line-process and pre-redisplay-functions.
Enable cursor-intangible-mode.
(ses-command-hook): Remove cell highlight and mode-line update code.
(ses-forward-or-insert, ses-copy-region-helper, ses-sort-column):
Update for new name of text-property holding the cell name.
(ses-rename-cell): Don't mess with mode-line-process.
* lisp/erc/erc-stamp.el (erc-add-timestamp): Use the new
cursor-sensor-functions property instead of point-entered.
(erc-insert-timestamp-right, erc-format-timestamp):
Use cursor-intangible rather than `intangible'.
(erc-munge-invisibility-spec): Use add-to-invisibility-spec and
remove-from-invisibility-spec. Enable cursor-intangible-mode and
cursor-sensor-mode if needed.
(erc-echo-timestamp): Adapt to calling convention of
cursor-sensor-functions.
(erc-insert-timestamp-right): Remove unused vars `current-window' and
`indent'.
* lisp/gnus/gnus-group.el (gnus-tmp-*): Declare.
(gnus-update-group-mark-positions): Remove unused `topic' var.
(gnus-group-insert-group-line): Remove unused var `header'.
(gnus-group--setup-tool-bar-update): New function.
(gnus-group-insert-group-line): Use it.
(gnus-group-update-eval-form): Declare local
dynamically-bound variables.
(gnus-group-unsubscribe-group): Use \` and \' to match string bounds.
* lisp/gnus/gnus-topic.el (gnus-topic-jump-to-topic)
(gnus-group-prepare-topics, gnus-topic-update-topic)
(gnus-topic-change-level, gnus-topic-catchup-articles)
(gnus-topic-remove-group, gnus-topic-delete, gnus-topic-indent):
Use inhibit-read-only.
(gnus-topic-prepare-topic): Use gnus-group--setup-tool-bar-update.
(gnus-topic-mode): Use define-minor-mode and derived-mode-p.
* lisp/textmodes/reftex-index.el (reftex-display-index):
Use cursor-intangible-mode if available.
(reftex-index-post-command-hook): Check cursor-intangible.
* lisp/textmodes/reftex-toc.el (reftex-toc):
Use cursor-intangible-mode if available.
(reftex-toc-recenter, reftex-toc-post-command-hook):
Check cursor-intangible.
* lisp/textmodes/sgml-mode.el: Use lexical-binding.
(sgml-tag): Use cursor-sensor-functions instead of point-entered.
(sgml-tags-invisible): Use with-silent-modifications and
inhibit-read-only. Enable cursor-sensor-mode.
(sgml-cursor-sensor): Rename from sgml-point-entered and adjust to
calling convention of cursor-sensor-functions.
* lisp/textmodes/table.el (table-cell-map-hook, table-load-hook)
(table-point-entered-cell-hook, table-point-left-cell-hook):
Don't autoload.
(table-cell-entered-state): Remove var.
(table--put-cell-point-entered/left-property)
(table--remove-cell-properties):
Use cursor-sensor-functions rather than point-entered/left.
(table--point-entered/left-cell-function): Merge
table--point-entered-cell-function and table--point-left-cell-function
and adjust to calling convention of cursor-sensor-functions.
2015-04-13 15:51:15 -04:00
|
|
|
(if (fboundp 'cursor-intangible-mode)
|
|
|
|
(cursor-intangible-mode 1)
|
|
|
|
;; If `cursor-intangible' is not available, fallback on the old
|
|
|
|
;; intrusive `intangible' property.
|
|
|
|
(put-text-property (point-min) (point) 'intangible t))
|
|
|
|
(add-text-properties (point-min) (point)
|
|
|
|
'(cursor-intangible t
|
|
|
|
front-sticky (cursor-intangible)
|
|
|
|
rear-nonsticky (cursor-intangible)))
|
2003-05-13 20:41:45 +00:00
|
|
|
(put-text-property (point-min) (1+ (point-min)) 'xr-alist xr-alist)
|
1999-08-16 07:42:41 +00:00
|
|
|
|
|
|
|
(setq offset
|
2003-08-11 12:27:02 +00:00
|
|
|
(reftex-insert-docstruct
|
|
|
|
this-buf
|
2011-11-17 13:16:44 +01:00
|
|
|
t ; include TOC
|
2003-08-11 12:27:02 +00:00
|
|
|
reftex-toc-include-labels
|
|
|
|
reftex-toc-include-index-entries
|
|
|
|
reftex-toc-include-file-boundaries
|
|
|
|
reftex-toc-include-context
|
|
|
|
nil ; counter
|
|
|
|
nil ; commented
|
2009-08-22 19:29:18 +00:00
|
|
|
here-I-am
|
2003-08-11 12:27:02 +00:00
|
|
|
"" ; xr-prefix
|
2011-11-17 13:16:44 +01:00
|
|
|
t ; a TOC buffer
|
2003-08-11 12:27:02 +00:00
|
|
|
))
|
2009-08-22 19:29:18 +00:00
|
|
|
|
1999-08-16 07:42:41 +00:00
|
|
|
(run-hooks 'reftex-display-copied-context-hook)
|
|
|
|
(message "Building *toc* buffer...done.")
|
|
|
|
(setq buffer-read-only t))
|
|
|
|
(t
|
|
|
|
;; Only compute the offset
|
|
|
|
(setq offset
|
2003-08-11 12:27:02 +00:00
|
|
|
(or (reftex-get-offset this-buf here-I-am
|
|
|
|
(if reftex-toc-include-labels " " nil)
|
|
|
|
t
|
|
|
|
reftex-toc-include-index-entries
|
|
|
|
reftex-toc-include-file-boundaries)
|
2009-08-22 19:29:18 +00:00
|
|
|
(reftex-last-assoc-before-elt
|
2003-08-11 12:27:02 +00:00
|
|
|
'toc here-I-am
|
|
|
|
(symbol-value reftex-docstruct-symbol))))
|
1999-08-16 07:42:41 +00:00
|
|
|
(put 'reftex-toc :reftex-line 3)
|
2009-08-22 19:29:18 +00:00
|
|
|
(goto-char (point-min))
|
|
|
|
(forward-line 2)))
|
1999-08-16 07:42:41 +00:00
|
|
|
|
|
|
|
;; Find the correct starting point
|
|
|
|
(reftex-find-start-point (point) offset (get 'reftex-toc :reftex-line))
|
|
|
|
(setq reftex-last-follow-point (point))))
|
|
|
|
|
2014-03-28 20:53:32 -04:00
|
|
|
;;;###autoload
|
2002-08-27 09:58:05 +00:00
|
|
|
(defun reftex-toc-recenter (&optional arg)
|
|
|
|
"Display the TOC window and highlight line corresponding to current position."
|
|
|
|
(interactive "P")
|
2003-08-11 12:27:02 +00:00
|
|
|
(let ((buf (current-buffer))
|
|
|
|
(frame (selected-frame)))
|
|
|
|
(reftex-toc arg t)
|
2002-08-27 09:58:05 +00:00
|
|
|
(if (= (count-lines 1 (point)) 2)
|
2003-08-11 12:27:02 +00:00
|
|
|
(let ((current-prefix-arg nil))
|
|
|
|
(select-window (get-buffer-window buf frame))
|
|
|
|
(reftex-toc nil t)))
|
Deprecate `intangible' and `point-entered' properties
* lisp/emacs-lisp/cursor-sensor.el: New file.
* lisp/simple.el (pre-redisplay-functions): New hook.
(redisplay--pre-redisplay-functions): New function.
(pre-redisplay-function): Use it.
(minibuffer-avoid-prompt): Mark obsolete.
(redisplay--update-region-highlight): Adapt it to work as a function on
pre-redisplay-functions.
* lisp/cus-start.el (minibuffer-prompt-properties--setter): New fun.
(minibuffer-prompt-properties): Use it. Use cursor-intangible rather
than point-entered to make the prompt intangible.
* lisp/forms.el: Move `provide' calls to the end.
(forms-mode): Don't use `run-hooks' on a local var.
(forms--make-format, forms--make-format-elt-using-text-properties):
Use cursor-intangible rather than `intangible'.
(forms-mode): Enable cursor-intangible-mode.
* lisp/isearch.el (isearch-mode): Use defvar-local.
(cursor-sensor-inhibit): Declare.
(isearch-mode): Set cursor-sensor-inhibit.
(isearch-done): Set it back.
(isearch-open-overlay-temporary, isearch-open-necessary-overlays)
(isearch-close-unnecessary-overlays): Don't bother with `intangible'
any more.
* lisp/ses.el (ses-localvars): Remove `mode-line-process'.
(ses-sym-rowcol, ses-cell-value, ses-col-width, ses-col-printer):
Add Edebug spec.
(ses-goto-print, ses-print-cell, ses-adjust-print-width)
(ses-goto-data, ses-setup, ses-copy-region): Don't let-bind
inhibit-point-motion-hooks any more.
(ses--cell-at-pos, ses--curcell): New functions, extracted from
ses-set-curcell.
(ses-set-curcell): Use them.
(ses-print-cell, ses-setup): Use cursor-intangible instead of
`intangible'. Make sure cursor-intangible isn't sticky at BOB.
(ses-print-cell-new-width, ses-reprint-all, ses-recalculate-all):
Use ses--cell-at-pos.
(ses--mode-line-process, ses--cursor-sensor-highlight): New functions,
extracted from ses-command-hook. Make them work with multiple windows
displaying the same buffer.
(ses-mode): Use them via mode-line-process and pre-redisplay-functions.
Enable cursor-intangible-mode.
(ses-command-hook): Remove cell highlight and mode-line update code.
(ses-forward-or-insert, ses-copy-region-helper, ses-sort-column):
Update for new name of text-property holding the cell name.
(ses-rename-cell): Don't mess with mode-line-process.
* lisp/erc/erc-stamp.el (erc-add-timestamp): Use the new
cursor-sensor-functions property instead of point-entered.
(erc-insert-timestamp-right, erc-format-timestamp):
Use cursor-intangible rather than `intangible'.
(erc-munge-invisibility-spec): Use add-to-invisibility-spec and
remove-from-invisibility-spec. Enable cursor-intangible-mode and
cursor-sensor-mode if needed.
(erc-echo-timestamp): Adapt to calling convention of
cursor-sensor-functions.
(erc-insert-timestamp-right): Remove unused vars `current-window' and
`indent'.
* lisp/gnus/gnus-group.el (gnus-tmp-*): Declare.
(gnus-update-group-mark-positions): Remove unused `topic' var.
(gnus-group-insert-group-line): Remove unused var `header'.
(gnus-group--setup-tool-bar-update): New function.
(gnus-group-insert-group-line): Use it.
(gnus-group-update-eval-form): Declare local
dynamically-bound variables.
(gnus-group-unsubscribe-group): Use \` and \' to match string bounds.
* lisp/gnus/gnus-topic.el (gnus-topic-jump-to-topic)
(gnus-group-prepare-topics, gnus-topic-update-topic)
(gnus-topic-change-level, gnus-topic-catchup-articles)
(gnus-topic-remove-group, gnus-topic-delete, gnus-topic-indent):
Use inhibit-read-only.
(gnus-topic-prepare-topic): Use gnus-group--setup-tool-bar-update.
(gnus-topic-mode): Use define-minor-mode and derived-mode-p.
* lisp/textmodes/reftex-index.el (reftex-display-index):
Use cursor-intangible-mode if available.
(reftex-index-post-command-hook): Check cursor-intangible.
* lisp/textmodes/reftex-toc.el (reftex-toc):
Use cursor-intangible-mode if available.
(reftex-toc-recenter, reftex-toc-post-command-hook):
Check cursor-intangible.
* lisp/textmodes/sgml-mode.el: Use lexical-binding.
(sgml-tag): Use cursor-sensor-functions instead of point-entered.
(sgml-tags-invisible): Use with-silent-modifications and
inhibit-read-only. Enable cursor-sensor-mode.
(sgml-cursor-sensor): Rename from sgml-point-entered and adjust to
calling convention of cursor-sensor-functions.
* lisp/textmodes/table.el (table-cell-map-hook, table-load-hook)
(table-point-entered-cell-hook, table-point-left-cell-hook):
Don't autoload.
(table-cell-entered-state): Remove var.
(table--put-cell-point-entered/left-property)
(table--remove-cell-properties):
Use cursor-sensor-functions rather than point-entered/left.
(table--point-entered/left-cell-function): Merge
table--point-entered-cell-function and table--point-left-cell-function
and adjust to calling convention of cursor-sensor-functions.
2015-04-13 15:51:15 -04:00
|
|
|
(and (> (point) 1) ;FIXME: Is this point-min or do we care about narrowing?
|
|
|
|
(not (get-text-property (point) 'cursor-intangible))
|
2003-08-11 12:27:02 +00:00
|
|
|
(memq reftex-highlight-selection '(cursor both))
|
|
|
|
(reftex-highlight 2
|
2009-08-22 19:29:18 +00:00
|
|
|
(or (previous-single-property-change
|
2003-08-11 12:27:02 +00:00
|
|
|
(min (point-max) (1+ (point))) :data)
|
|
|
|
(point-min))
|
|
|
|
(or (next-single-property-change (point) :data)
|
|
|
|
(point-max))))
|
|
|
|
(select-window (get-buffer-window buf frame))))
|
2002-08-27 09:58:05 +00:00
|
|
|
|
1999-08-16 07:42:41 +00:00
|
|
|
(defun reftex-toc-pre-command-hook ()
|
|
|
|
;; used as pre command hook in *toc* buffer
|
|
|
|
(reftex-unhighlight 0)
|
2002-08-27 09:58:05 +00:00
|
|
|
)
|
1999-08-16 07:42:41 +00:00
|
|
|
|
|
|
|
(defun reftex-toc-post-command-hook ()
|
|
|
|
;; used in the post-command-hook for the *toc* buffer
|
Deprecate `intangible' and `point-entered' properties
* lisp/emacs-lisp/cursor-sensor.el: New file.
* lisp/simple.el (pre-redisplay-functions): New hook.
(redisplay--pre-redisplay-functions): New function.
(pre-redisplay-function): Use it.
(minibuffer-avoid-prompt): Mark obsolete.
(redisplay--update-region-highlight): Adapt it to work as a function on
pre-redisplay-functions.
* lisp/cus-start.el (minibuffer-prompt-properties--setter): New fun.
(minibuffer-prompt-properties): Use it. Use cursor-intangible rather
than point-entered to make the prompt intangible.
* lisp/forms.el: Move `provide' calls to the end.
(forms-mode): Don't use `run-hooks' on a local var.
(forms--make-format, forms--make-format-elt-using-text-properties):
Use cursor-intangible rather than `intangible'.
(forms-mode): Enable cursor-intangible-mode.
* lisp/isearch.el (isearch-mode): Use defvar-local.
(cursor-sensor-inhibit): Declare.
(isearch-mode): Set cursor-sensor-inhibit.
(isearch-done): Set it back.
(isearch-open-overlay-temporary, isearch-open-necessary-overlays)
(isearch-close-unnecessary-overlays): Don't bother with `intangible'
any more.
* lisp/ses.el (ses-localvars): Remove `mode-line-process'.
(ses-sym-rowcol, ses-cell-value, ses-col-width, ses-col-printer):
Add Edebug spec.
(ses-goto-print, ses-print-cell, ses-adjust-print-width)
(ses-goto-data, ses-setup, ses-copy-region): Don't let-bind
inhibit-point-motion-hooks any more.
(ses--cell-at-pos, ses--curcell): New functions, extracted from
ses-set-curcell.
(ses-set-curcell): Use them.
(ses-print-cell, ses-setup): Use cursor-intangible instead of
`intangible'. Make sure cursor-intangible isn't sticky at BOB.
(ses-print-cell-new-width, ses-reprint-all, ses-recalculate-all):
Use ses--cell-at-pos.
(ses--mode-line-process, ses--cursor-sensor-highlight): New functions,
extracted from ses-command-hook. Make them work with multiple windows
displaying the same buffer.
(ses-mode): Use them via mode-line-process and pre-redisplay-functions.
Enable cursor-intangible-mode.
(ses-command-hook): Remove cell highlight and mode-line update code.
(ses-forward-or-insert, ses-copy-region-helper, ses-sort-column):
Update for new name of text-property holding the cell name.
(ses-rename-cell): Don't mess with mode-line-process.
* lisp/erc/erc-stamp.el (erc-add-timestamp): Use the new
cursor-sensor-functions property instead of point-entered.
(erc-insert-timestamp-right, erc-format-timestamp):
Use cursor-intangible rather than `intangible'.
(erc-munge-invisibility-spec): Use add-to-invisibility-spec and
remove-from-invisibility-spec. Enable cursor-intangible-mode and
cursor-sensor-mode if needed.
(erc-echo-timestamp): Adapt to calling convention of
cursor-sensor-functions.
(erc-insert-timestamp-right): Remove unused vars `current-window' and
`indent'.
* lisp/gnus/gnus-group.el (gnus-tmp-*): Declare.
(gnus-update-group-mark-positions): Remove unused `topic' var.
(gnus-group-insert-group-line): Remove unused var `header'.
(gnus-group--setup-tool-bar-update): New function.
(gnus-group-insert-group-line): Use it.
(gnus-group-update-eval-form): Declare local
dynamically-bound variables.
(gnus-group-unsubscribe-group): Use \` and \' to match string bounds.
* lisp/gnus/gnus-topic.el (gnus-topic-jump-to-topic)
(gnus-group-prepare-topics, gnus-topic-update-topic)
(gnus-topic-change-level, gnus-topic-catchup-articles)
(gnus-topic-remove-group, gnus-topic-delete, gnus-topic-indent):
Use inhibit-read-only.
(gnus-topic-prepare-topic): Use gnus-group--setup-tool-bar-update.
(gnus-topic-mode): Use define-minor-mode and derived-mode-p.
* lisp/textmodes/reftex-index.el (reftex-display-index):
Use cursor-intangible-mode if available.
(reftex-index-post-command-hook): Check cursor-intangible.
* lisp/textmodes/reftex-toc.el (reftex-toc):
Use cursor-intangible-mode if available.
(reftex-toc-recenter, reftex-toc-post-command-hook):
Check cursor-intangible.
* lisp/textmodes/sgml-mode.el: Use lexical-binding.
(sgml-tag): Use cursor-sensor-functions instead of point-entered.
(sgml-tags-invisible): Use with-silent-modifications and
inhibit-read-only. Enable cursor-sensor-mode.
(sgml-cursor-sensor): Rename from sgml-point-entered and adjust to
calling convention of cursor-sensor-functions.
* lisp/textmodes/table.el (table-cell-map-hook, table-load-hook)
(table-point-entered-cell-hook, table-point-left-cell-hook):
Don't autoload.
(table-cell-entered-state): Remove var.
(table--put-cell-point-entered/left-property)
(table--remove-cell-properties):
Use cursor-sensor-functions rather than point-entered/left.
(table--point-entered/left-cell-function): Merge
table--point-entered-cell-function and table--point-left-cell-function
and adjust to calling convention of cursor-sensor-functions.
2015-04-13 15:51:15 -04:00
|
|
|
;; FIXME: Lots of redundancy with reftex-index-post-command-hook!
|
1999-08-16 07:42:41 +00:00
|
|
|
(when (get-text-property (point) :data)
|
|
|
|
(put 'reftex-toc :reftex-data (get-text-property (point) :data))
|
Deprecate `intangible' and `point-entered' properties
* lisp/emacs-lisp/cursor-sensor.el: New file.
* lisp/simple.el (pre-redisplay-functions): New hook.
(redisplay--pre-redisplay-functions): New function.
(pre-redisplay-function): Use it.
(minibuffer-avoid-prompt): Mark obsolete.
(redisplay--update-region-highlight): Adapt it to work as a function on
pre-redisplay-functions.
* lisp/cus-start.el (minibuffer-prompt-properties--setter): New fun.
(minibuffer-prompt-properties): Use it. Use cursor-intangible rather
than point-entered to make the prompt intangible.
* lisp/forms.el: Move `provide' calls to the end.
(forms-mode): Don't use `run-hooks' on a local var.
(forms--make-format, forms--make-format-elt-using-text-properties):
Use cursor-intangible rather than `intangible'.
(forms-mode): Enable cursor-intangible-mode.
* lisp/isearch.el (isearch-mode): Use defvar-local.
(cursor-sensor-inhibit): Declare.
(isearch-mode): Set cursor-sensor-inhibit.
(isearch-done): Set it back.
(isearch-open-overlay-temporary, isearch-open-necessary-overlays)
(isearch-close-unnecessary-overlays): Don't bother with `intangible'
any more.
* lisp/ses.el (ses-localvars): Remove `mode-line-process'.
(ses-sym-rowcol, ses-cell-value, ses-col-width, ses-col-printer):
Add Edebug spec.
(ses-goto-print, ses-print-cell, ses-adjust-print-width)
(ses-goto-data, ses-setup, ses-copy-region): Don't let-bind
inhibit-point-motion-hooks any more.
(ses--cell-at-pos, ses--curcell): New functions, extracted from
ses-set-curcell.
(ses-set-curcell): Use them.
(ses-print-cell, ses-setup): Use cursor-intangible instead of
`intangible'. Make sure cursor-intangible isn't sticky at BOB.
(ses-print-cell-new-width, ses-reprint-all, ses-recalculate-all):
Use ses--cell-at-pos.
(ses--mode-line-process, ses--cursor-sensor-highlight): New functions,
extracted from ses-command-hook. Make them work with multiple windows
displaying the same buffer.
(ses-mode): Use them via mode-line-process and pre-redisplay-functions.
Enable cursor-intangible-mode.
(ses-command-hook): Remove cell highlight and mode-line update code.
(ses-forward-or-insert, ses-copy-region-helper, ses-sort-column):
Update for new name of text-property holding the cell name.
(ses-rename-cell): Don't mess with mode-line-process.
* lisp/erc/erc-stamp.el (erc-add-timestamp): Use the new
cursor-sensor-functions property instead of point-entered.
(erc-insert-timestamp-right, erc-format-timestamp):
Use cursor-intangible rather than `intangible'.
(erc-munge-invisibility-spec): Use add-to-invisibility-spec and
remove-from-invisibility-spec. Enable cursor-intangible-mode and
cursor-sensor-mode if needed.
(erc-echo-timestamp): Adapt to calling convention of
cursor-sensor-functions.
(erc-insert-timestamp-right): Remove unused vars `current-window' and
`indent'.
* lisp/gnus/gnus-group.el (gnus-tmp-*): Declare.
(gnus-update-group-mark-positions): Remove unused `topic' var.
(gnus-group-insert-group-line): Remove unused var `header'.
(gnus-group--setup-tool-bar-update): New function.
(gnus-group-insert-group-line): Use it.
(gnus-group-update-eval-form): Declare local
dynamically-bound variables.
(gnus-group-unsubscribe-group): Use \` and \' to match string bounds.
* lisp/gnus/gnus-topic.el (gnus-topic-jump-to-topic)
(gnus-group-prepare-topics, gnus-topic-update-topic)
(gnus-topic-change-level, gnus-topic-catchup-articles)
(gnus-topic-remove-group, gnus-topic-delete, gnus-topic-indent):
Use inhibit-read-only.
(gnus-topic-prepare-topic): Use gnus-group--setup-tool-bar-update.
(gnus-topic-mode): Use define-minor-mode and derived-mode-p.
* lisp/textmodes/reftex-index.el (reftex-display-index):
Use cursor-intangible-mode if available.
(reftex-index-post-command-hook): Check cursor-intangible.
* lisp/textmodes/reftex-toc.el (reftex-toc):
Use cursor-intangible-mode if available.
(reftex-toc-recenter, reftex-toc-post-command-hook):
Check cursor-intangible.
* lisp/textmodes/sgml-mode.el: Use lexical-binding.
(sgml-tag): Use cursor-sensor-functions instead of point-entered.
(sgml-tags-invisible): Use with-silent-modifications and
inhibit-read-only. Enable cursor-sensor-mode.
(sgml-cursor-sensor): Rename from sgml-point-entered and adjust to
calling convention of cursor-sensor-functions.
* lisp/textmodes/table.el (table-cell-map-hook, table-load-hook)
(table-point-entered-cell-hook, table-point-left-cell-hook):
Don't autoload.
(table-cell-entered-state): Remove var.
(table--put-cell-point-entered/left-property)
(table--remove-cell-properties):
Use cursor-sensor-functions rather than point-entered/left.
(table--point-entered/left-cell-function): Merge
table--point-entered-cell-function and table--point-left-cell-function
and adjust to calling convention of cursor-sensor-functions.
2015-04-13 15:51:15 -04:00
|
|
|
(and (> (point) 1) ;FIXME: Is this point-min or do we care about narrowing?
|
|
|
|
(not (get-text-property (point) 'cursor-intangible))
|
2003-08-11 12:27:02 +00:00
|
|
|
(memq reftex-highlight-selection '(cursor both))
|
|
|
|
(reftex-highlight 2
|
|
|
|
(or (previous-single-property-change (1+ (point)) :data)
|
|
|
|
(point-min))
|
|
|
|
(or (next-single-property-change (point) :data)
|
|
|
|
(point-max)))))
|
1999-08-16 07:42:41 +00:00
|
|
|
(if (integerp reftex-toc-follow-mode)
|
|
|
|
;; remove delayed action
|
|
|
|
(setq reftex-toc-follow-mode t)
|
2003-08-11 12:27:02 +00:00
|
|
|
(and (not (reftex-toc-dframe-p))
|
|
|
|
reftex-toc-follow-mode
|
|
|
|
(not (equal reftex-last-follow-point (point)))
|
|
|
|
;; show context in other window
|
|
|
|
(setq reftex-last-follow-point (point))
|
|
|
|
(condition-case nil
|
|
|
|
(reftex-toc-visit-location nil (not reftex-revisit-to-follow))
|
|
|
|
(error t)))))
|
1999-08-16 07:42:41 +00:00
|
|
|
|
|
|
|
(defun reftex-re-enlarge ()
|
Merge from standalone RefTeX repository.
Here is the ChangeLog of the standalone version of RefTeX without
information about Makefiles and other auxiliary files. The differences to
the Emacs repository are documented in the respective ChangeLog files.
2010-11-06 Ralf Angeli <angeli@caeruleus.net>
* lisp/reftex-cite.el (reftex-create-bibtex-file): Make sure that
entries with whitespace at various places are found.
(reftex-extract-bib-entries-from-thebibliography): Remove
superfluous backslash.
2010-10-16 Ralf Angeli <angeli@caeruleus.net>
* lisp/reftex-cite.el
(reftex-extract-bib-entries-from-thebibliography): Use
`with-current-buffer'.
2010-09-14 Ralf Angeli <angeli@caeruleus.net>
* lisp/reftex-cite.el (reftex-do-citation): Make it possible again
to insert non-existent entries.
2010-01-30 Ralf Angeli <angeli@caeruleus.net>
* lisp/reftex-base.el (reftex-syntax-table-for-bib, reftex-mode):
Do not derive `reftex-syntax-table-for-bib' from
`reftex-syntax-table' because parens have to retain their paren
syntax in order for parsing of BibTeX entries like @book(...) to
work.
2009-09-12 Ralf Angeli <angeli@caeruleus.net>
* lisp/reftex-vars.el (reftex-label-alist): Doc fix.
* lisp/reftex-toc.el (reftex-re-enlarge): Call `enlarge-window'
only if there is something to do because in Emacs the horizontal
version throws an error even if the parameter is 0.
2009-08-08 Ralf Angeli <angeli@caeruleus.net>
* lisp/reftex-index.el: Suppress byte-compiler warnings. Move
provide statement to end of file.
* lisp/reftex-dcr.el: Suppress byte-compiler warnings. Move
provide statement to end of file.
* lisp/reftex-auc.el: Suppress byte-compiler warnings.
* doc/reftex.texi (Imprint): Mention Wolfgang in list of
contributors.
* lisp/reftex-vars.el (reftex-plug-into-AUCTeX): Doc fix.
2009-07-05 Ralf Angeli <angeli@caeruleus.net>
* doc/reftex.texi (Creating Citations): Give a hint about how to
auto-revert the BibTeX database file when using external editors.
* lisp/reftex-cite.el (reftex-do-citation): Save match data when
asking for optional arguments.
2009-04-29 Ralf Angeli <angeli@caeruleus.net>
* lisp/reftex-base.el (reftex-in-comment): Do not error out if
`comment-start-skip' is not set.
2009-03-01 Wolfgang Mayer <wmayer7@gmail.com>
* lisp/reftex-cite.el (reftex-all-used-citation-keys):
Fix regexp to correctly extract all citations in the same line.
2008-12-29 Ralf Angeli <angeli@caeruleus.net>
* lisp/reftex-vars.el (reftex-vref-is-default)
(reftex-fref-is-default): Adapt doc string.
(reftex-ref-style-default-list): New name for
`reftex-ref-style-active-list'. Use :set instead of :repeat.
(reftex-vref-is-default, reftex-fref-is-default): Adapt to new
name.
* lisp/reftex-base.el (reftex-tie-multifile-symbols): Add doc
string.
(reftex-tie-multifile-symbols): Initialize
`reftex-ref-style-list'.
(reftex-untie-multifile-symbols): Add doc string.
(reftex-add-index-macros): Doc fix.
(reftex-ref-style-activate, reftex-ref-style-toggle)
(reftex-ref-style-list): New functions.
(reftex-mode-menu): Use them.
* lisp/reftex-sel.el (reftex-select-cycle-ref-style-internal): Use
`reftex-ref-style-list' function.
* lisp/reftex-ref.el (reftex-reference): Use
`reftex-ref-style-list' function.
* doc/reftex.texi (Referencing Labels): Simplify section about
reference macro cycling.
(Reference Styles, Options (Referencing Labels)): Adapt to changed
implementation.
2008-12-18 Ralf Angeli <angeli@caeruleus.net>
* lisp/reftex-base.el (reftex-in-comment): Deal correctly with
escaped comment characters.
2008-11-30 Ralf Angeli <angeli@caeruleus.net>
* lisp/reftex-vars.el (reftex-ref-style-alist): Change structure
so that it is not possible to use multiple different package names
within a style.
(reftex-ref-style-active-list): Adapt to new structure of
`reftex-ref-style-alist'.
* lisp/reftex-sel.el (reftex-select-cycle-active-ref-styles):
Remove.
(reftex-select-cycle-ref-style-internal): Adapt to new structure
of `reftex-ref-style-alist'.
* lisp/reftex-ref.el: Adapt creation of `reftex-<package>-<macro>'
functions to new structure of `reftex-ref-style-alist'.
(reftex-reference): Adapt to new structure of
`reftex-ref-style-alist'.
* lisp/reftex-base.el (reftex-mode-menu): Adapt to new structure
of `reftex-ref-style-alist'.
* doc/reftex.texi (Options (Referencing Labels)): Adapt to new
structure of `reftex-ref-style-alist'.
2008-10-16 Ralf Angeli <angeli@caeruleus.net>
* doc/reftex.texi (Referencing Labels, Reference Styles): Document
changes in the referencing functionality.
2008-10-15 Ralf Angeli <angeli@caeruleus.net>
* lisp/reftex-vars.el (reftex-ref-style-alist): Remove the symbols
for symbols for macro type distinction. Add characters for macro
selection.
(reftex-ref-macro-prompt): New variable.
* lisp/reftex-sel.el (reftex-select-cycle-ref-style-internal):
Remove code for testing macro type.
(reftex-select-toggle-numref-pageref): Remove.
(reftex-select-label-map): Remove binding for
`reftex-select-toggle-numref-pageref'.
* lisp/reftex-ref.el (reftex-reference): Prompt for a reference
macro if `reftex-ref-macro-prompt' is non-nil.
* lisp/reftex-base.el (reftex-select-with-char): Kill the RefTeX
Select buffer when done.
2008-06-07 David Kastrup <dak@gnu.org>
* lisp/reftex-base.el (reftex-remove-if): Improve performance.
2008-06-07 Ralf Angeli <angeli@caeruleus.net>
* lisp/reftex-cite.el (reftex-get-string-refs): Use a regexp
alternative for better performance.
* doc/reftex.texi (Commands): Mention options for definition of
header and footer in BibTeX files.
(Options (Creating Citations)): Document
`reftex-create-bibtex-header' and `reftex-create-bibtex-footer'.
* lisp/reftex-cite.el (reftex-stringref-p): Remove.
(reftex-get-string-refs): Do without `reftex-stringref-p' and use
`reftex-remove-if' instead of the cl-based `remove-if'.
(reftex-create-bibtex-file): Doc fix.
* lisp/reftex-base.el (reftex-remove-if): New function.
2008-06-07 Wolfgang Mayer <wmayer7@gmail.com>
* lisp/reftex-vars.el (reftex-create-bibtex-header)
(reftex-create-bibtex-footer): New variables.
* lisp/reftex-cite.el (reftex-parse-bibtex-entry): Accept
additional optional argument `raw' and keep quotes or braces if it
is non-nil.
(reftex-stringref-p, reftex-get-string-refs): New functions.
(reftex-create-bibtex-file): Include entries that are
cross-referenced from cited entries. Include @String definitions
in the resulting bib file. Add header and footer defined in
`reftex-create-bibtex-header' and `reftex-create-bibtex-footer'.
2008-05-03 Ralf Angeli <angeli@caeruleus.net>
* lisp/reftex-parse.el (reftex-parse-from-file): Move backward one
char if a `\' was matched after a section macro.
* lisp/reftex-global.el (reftex-isearch-switch-to-next-file): Use
`reverse' instead of `nreverse' and `copy-list' in order to make
the byte compiler happy. Get rid of unused `orig-flist' variable.
* lisp/reftex-base.el (reftex-compile-variables): Revert last
change. Match `\' after a section macro.
(reftex-mapconcat-with-predicate): Remove.
2008-04-13 Ralf Angeli <angeli@caeruleus.net>
* lisp/reftex-base.el (reftex-mapconcat-with-predicate): New
function.
(reftex-compile-variables): Use it. Treat environments and macros
differently in the regexp for section matching.
* lisp/reftex-parse.el (reftex-parse-from-file): Use beginning of
match instead of end as bound.
* lisp/reftex-sel.el (reftex-select-label-map): Changing binding
of reference style toggling to "s" which is not already taken.
* doc/reftex.texi (Reference Styles): Reflect change in key
binding for toggling reference styles. Some minor changes.
2008-03-27 Ralf Angeli <angeli@caeruleus.net>
* lisp/reftex-vars.el: Some whitespace, doc and checkdoc fixes.
2008-03-16 Ralf Angeli <angeli@caeruleus.net>
* lisp/reftex-index.el (reftex-index-selection-or-word): Use
`reftex-region-active-p'.
(reftex-index-show-entry)
(reftex-index-initialize-phrases-buffer)
(reftex-index-phrases-apply-to-region): Sync with Emacs trunk.
* lisp/reftex-dcr.el (reftex-start-itimer-once): Silence the byte
compiler.
* lisp/reftex-auc.el: Move `provide' call to bottom of file.
* lisp/reftex-base.el: Require easymenu and define autoloads
earlier to avoid compiler warnings.
(reftex-region-active-p, reftex-select-with-char)
(reftex-show-commentary): Sync with version in Emacs trunk.
(reftex-make-overlay, reftex-overlay-put, reftex-move-overlay)
(reftex-delete-overlay): Define in a way which hides the XEmacs
symbols from the byte compiler.
(reftex-info): Silence the byte compiler. Use `reftex.info'
instead of `reftex' in order to get the correct file.
2008-03-07 Ralf Angeli <angeli@caeruleus.net>
* lisp/reftex-cite.el (reftex-extract-bib-entries): Check if
BibTeX file changed on disk and ask if it should be reread in case
it did.
2008-03-02 Ralf Angeli <angeli@caeruleus.net>
* doc/reftex.texi: Lots of small fixes.
(Reference Styles): New section.
(varioref (LaTeX package), fancyref (LaTeX package)): Remove.
(Options (Referencing Labels)): Remove descriptions of deprecated
variables `reftex-vref-is-default' and `reftex-fref-is-default'.
Add descriptions for `reftex-ref-style-alist' and
`reftex-ref-style-active-list'.
(Referencing Labels): Update regarding reference styles.
2008-02-17 Ralf Angeli <angeli@caeruleus.net>
* lisp/reftex-ref.el (reftex-format-special): Add third argument
for refstyle possible to be passed, making the byte compiler
happy.
(reftex-reference): Pass refstyle to `reftex-format-special'.
* lisp/reftex-vars.el (reftex-ref-style-active-list): Make
creation of type compatible with Emacs 21.
(reftex-format-ref-function): Mention third argument of special
format function.
* lisp/reftex-base.el (reftex-mode-menu): Make creation of
Reference Style menu compatible with Emacs 21.
* doc/reftex.texi: Fix some typos.
2008-01-27 Ralf Angeli <angeli@caeruleus.net>
* lisp/reftex-vars.el (reftex-ref-style-active-list): Doc fix.
* lisp/reftex-base.el (reftex-erase-all-selection-and-index-buffers)
(reftex-access-parse-file): Use `mapc' instead of `mapcar' where
return value is not used.
* lisp/reftex-ref.el (reftex-offer-label-menu): Use `mapc' instead
of `mapcar' where return value is not used.
* lisp/reftex-sel.el (reftex-select-item, reftex-select-unmark):
Use `mapc' instead of `mapcar' where return value is not used.
* lisp/reftex-vars.el (reftex-ref-style-alist)
(reftex-ref-style-active-list): New variables.
(reftex-vref-is-default, reftex-fref-is-default): Adapt doc string
to new implementation. Mark as obsolete. Add compatibility code
for honoring the variable values in case they are set.
* lisp/reftex-base.el (reftex-mode-menu): Reference styles are now
computed from `reftex-ref-style-alist'. Fix typo.
* lisp/reftex-ref.el (reftex-reference): Determine reference macro
by looking at `reftex-ref-style-active-list' and
`reftex-ref-style-alist'. Use only one special format function.
(reftex-varioref-vref, reftex-fancyref-fref)
(reftex-fancyref-Fref): Remove definitions. The functions are now
generated from `reftex-ref-style-alist'.
(reftex-format-vref, reftex-format-Fref, reftex-format-fref):
Remove.
(reftex-format-special): New function.
* lisp/reftex-sel.el (reftex-select-toggle-varioref)
(reftex-select-toggle-fancyref): Remove.
(reftex-select-cycle-active-ref-styles)
(reftex-select-cycle-ref-style-internal)
(reftex-select-cycle-ref-style-forward)
(reftex-select-cycle-ref-style-backward)
(reftex-select-toggle-numref-pageref): New functions.
(reftex-select-label-map): Use `v' and `V' for general cycling
through reference styles. Add `p' for switching between number
and page reference types.
2008-01-06 Ralf Angeli <angeli@caeruleus.net>
* lisp/reftex-cite.el (reftex-pop-to-bibtex-entry)
(reftex-extract-bib-entries-from-thebibliography): Match \bibitem
entries with spaces or tabs in front of arguments.
(reftex-insert-bib-matches): Use `mapc' instead of `mapcar'
because return value is not used.
2008-01-05 Ralf Angeli <angeli@caeruleus.net>
* lisp/reftex-toc.el (reftex-make-separate-toc-frame): Hide
non-operational call to `focus-frame' in Emacs for the compilers's
sake.
2008-01-03 Ralf Angeli <angeli@caeruleus.net>
* lisp/reftex-dcr.el (reftex-mouse-view-crossref): Explain why
point is set.
* lisp/reftex-toc.el (reftex-toc-do-promote): Use `mapc' instead
of `mapcar' because return value is not used.
(reftex-toggle-auto-toc-recenter): Fix typo.
* lisp/reftex-cite.el (reftex-do-citation): Use `mapc' instead of
`mapcar' because return value is not used.
2007-10-10 Ralf Angeli <angeli@caeruleus.net>
* lisp/reftex-vars.el (reftex-cite-format-builtin)
(reftex-bibliography-commands): Add support for ConTeXt.
* doc/reftex.texi (Citation Styles): Mention support for ConTeXt.
2007-08-23 Ralf Angeli <angeli@caeruleus.net>
* doc/reftex.texi (Options (Defining Label Environments)): Fix
typo.
2007-07-22 Ralf Angeli <angeli@caeruleus.net>
* lisp/reftex-base.el (reftex-set-cite-format): Autoload.
(reftex-access-parse-file): Create parse file in a way that does
not interfere with recentf mode.
(reftex-access-parse-file): Do not risk destroying an existing
buffer.
2007-07-07 Ralf Angeli <angeli@caeruleus.net>
* lisp/reftex-parse.el (reftex-nth-arg): Use `forward-comment'
instead of `comment-forward'. The latter is not always available
and the former is sufficient for LaTeX.
(reftex-nth-arg): Revert last change since moving over whitespace
and comments is done by `reftex-move-to-next-arg'.
2007-05-20 Ralf Angeli <angeli@caeruleus.net>
* doc/reftex.texi (Citation Styles): Correct some mistakes.
2007-04-03 Ralf Angeli <angeli@caeruleus.net>
* lisp/reftex-cite.el: Delete trailing whitespace.
(reftex-pop-to-bibtex-entry, reftex-extract-bib-entries)
(reftex-parse-bibtex-entry, reftex-create-bibtex-file): Match
entries containing numbers and symbol constituents.
2007-03-28 Ralf Angeli <angeli@caeruleus.net>
* doc/reftex.texi: Replace BibTeX by @BibTeX{} throughout the
file.
2007-03-12 John Paul Wallington <jpw@pobox.com>
* lisp/reftex-vars.el (reftex-format-ref-function)
(reftex-format-cite-function): Fix custom type.
2007-03-10 Ralf Angeli <angeli@caeruleus.net>
* lisp/reftex-base.el: Remove information in comment already in
imprint or cluttering output of `finder-commentary'.
Require reftex.el.
* lisp/reftex.el: Remove. Now generated from reftex.el.in.
* lisp/reftex-dcr.el: Remove version info in header. Add
maintainer info.
* lisp/reftex-global.el Remove version info in header. Add
maintainer info.
* lisp/reftex-index.el Remove version info in header. Add
maintainer info.
* lisp/reftex-parse.el Remove version info in header. Add
maintainer info.
* lisp/reftex-ref.el Remove version info in header. Add
maintainer info.
* lisp/reftex-sel.el Remove version info in header. Add
maintainer info.
* lisp/reftex-toc.el Remove version info in header. Add
maintainer info.
* lisp/reftex-vars.el Remove version info in header. Add
maintainer info.
2007-03-08 Ralf Angeli <angeli@caeruleus.net>
* doc/reftex.texi: Include macros.texi and version.texi. Change
maintainer and version information. Express TeX, LaTeX, AUCTeX
and RefTeX with macros.
(Imprint): Change maintainer information.
2007-03-04 Ralf Angeli <angeli@caeruleus.net>
* lisp/reftex.el: Update.
* lisp/reftex-base.el (reftex-show-commentary): Look in
reftex-base.el.
(reftex-report-bug): New function.
* lisp/reftex.el: Move original content to reftex-base.el. Add
new header and automatically generated autoloads.
* lisp/reftex-base.el: New file. Insert original content of
reftex.el. Remove autoload for `reftex-index-phrases-mode'.
Delete trailing whitespace.
2007-02-26 Ralf Angeli <angeli@caeruleus.net>
* lisp/reftex-index.el (reftex-index-visit-phrases-buffer): Set
marker when visiting buffer. This allows for returning from the
phrases file to the file one was just editing instead of the file
where the last phrases was added from.
2007-02-25 Ralf Angeli <angeli@caeruleus.net>
* lisp/reftex-index.el (reftex-index-phrases-syntax-table): New
variable. Give ?\" punctuation syntax as it usually is not used
as string quote in TeX-related modes and may occur unmatched. The
change also prevents fontification of quoted content.
(reftex-index-phrases-mode): Use it.
* lisp/reftex-cite.el (reftex-parse-bibtex-entry): Match fields
containing hyphens (besides word constituents).
2007-02-25 David Kastrup <dak@gnu.org>
* lisp/reftex.el (reftex-uniquify, reftex-uniquify-by-car):
Replace O(n^2) algorithms with O(n log n). Introduce optional
argument SORT (not yet used). TODO: figure out callers that can
specify SORT, in order to further speed this up.
2007-02-25 Ralf Angeli <angeli@caeruleus.net>
* lisp/reftex-vars.el (reftex-cite-key-separator): New variable.
* lisp/reftex-auc.el (reftex-arg-cite): Use
`reftex-cite-key-separator'.
* lisp/reftex-cite.el (reftex-do-citation)
(reftex-figure-out-cite-format): Use `reftex-cite-key-separator'.
* doc/reftex.texi (Options (Creating Citations)): Document
`reftex-cite-key-separator'.
* lisp/reftex-cite.el (reftex-do-citation): Return all keys, not
just the first one.
* lisp/reftex-auc.el (reftex-arg-cite): Correctly handle new
value type returned by `reftex-citation'.
2007-02-24 Ralf Angeli <angeli@caeruleus.net>
* doc/reftex.texi: Set correct filename for standalone
distribution.
2007-02-07 Ralf Angeli <angeli@caeruleus.net>
Create `reftex' module.
2012-09-30 22:30:13 +02:00
|
|
|
"Enlarge window to a remembered size."
|
2017-02-28 11:15:24 -05:00
|
|
|
;; FIXME: reftex-last-window-width might be the width of another window on
|
|
|
|
;; another frame, so the enlarge-window call might make no sense.
|
|
|
|
;; We should just use `quit-window' instead nowadays.
|
Merge from standalone RefTeX repository.
Here is the ChangeLog of the standalone version of RefTeX without
information about Makefiles and other auxiliary files. The differences to
the Emacs repository are documented in the respective ChangeLog files.
2010-11-06 Ralf Angeli <angeli@caeruleus.net>
* lisp/reftex-cite.el (reftex-create-bibtex-file): Make sure that
entries with whitespace at various places are found.
(reftex-extract-bib-entries-from-thebibliography): Remove
superfluous backslash.
2010-10-16 Ralf Angeli <angeli@caeruleus.net>
* lisp/reftex-cite.el
(reftex-extract-bib-entries-from-thebibliography): Use
`with-current-buffer'.
2010-09-14 Ralf Angeli <angeli@caeruleus.net>
* lisp/reftex-cite.el (reftex-do-citation): Make it possible again
to insert non-existent entries.
2010-01-30 Ralf Angeli <angeli@caeruleus.net>
* lisp/reftex-base.el (reftex-syntax-table-for-bib, reftex-mode):
Do not derive `reftex-syntax-table-for-bib' from
`reftex-syntax-table' because parens have to retain their paren
syntax in order for parsing of BibTeX entries like @book(...) to
work.
2009-09-12 Ralf Angeli <angeli@caeruleus.net>
* lisp/reftex-vars.el (reftex-label-alist): Doc fix.
* lisp/reftex-toc.el (reftex-re-enlarge): Call `enlarge-window'
only if there is something to do because in Emacs the horizontal
version throws an error even if the parameter is 0.
2009-08-08 Ralf Angeli <angeli@caeruleus.net>
* lisp/reftex-index.el: Suppress byte-compiler warnings. Move
provide statement to end of file.
* lisp/reftex-dcr.el: Suppress byte-compiler warnings. Move
provide statement to end of file.
* lisp/reftex-auc.el: Suppress byte-compiler warnings.
* doc/reftex.texi (Imprint): Mention Wolfgang in list of
contributors.
* lisp/reftex-vars.el (reftex-plug-into-AUCTeX): Doc fix.
2009-07-05 Ralf Angeli <angeli@caeruleus.net>
* doc/reftex.texi (Creating Citations): Give a hint about how to
auto-revert the BibTeX database file when using external editors.
* lisp/reftex-cite.el (reftex-do-citation): Save match data when
asking for optional arguments.
2009-04-29 Ralf Angeli <angeli@caeruleus.net>
* lisp/reftex-base.el (reftex-in-comment): Do not error out if
`comment-start-skip' is not set.
2009-03-01 Wolfgang Mayer <wmayer7@gmail.com>
* lisp/reftex-cite.el (reftex-all-used-citation-keys):
Fix regexp to correctly extract all citations in the same line.
2008-12-29 Ralf Angeli <angeli@caeruleus.net>
* lisp/reftex-vars.el (reftex-vref-is-default)
(reftex-fref-is-default): Adapt doc string.
(reftex-ref-style-default-list): New name for
`reftex-ref-style-active-list'. Use :set instead of :repeat.
(reftex-vref-is-default, reftex-fref-is-default): Adapt to new
name.
* lisp/reftex-base.el (reftex-tie-multifile-symbols): Add doc
string.
(reftex-tie-multifile-symbols): Initialize
`reftex-ref-style-list'.
(reftex-untie-multifile-symbols): Add doc string.
(reftex-add-index-macros): Doc fix.
(reftex-ref-style-activate, reftex-ref-style-toggle)
(reftex-ref-style-list): New functions.
(reftex-mode-menu): Use them.
* lisp/reftex-sel.el (reftex-select-cycle-ref-style-internal): Use
`reftex-ref-style-list' function.
* lisp/reftex-ref.el (reftex-reference): Use
`reftex-ref-style-list' function.
* doc/reftex.texi (Referencing Labels): Simplify section about
reference macro cycling.
(Reference Styles, Options (Referencing Labels)): Adapt to changed
implementation.
2008-12-18 Ralf Angeli <angeli@caeruleus.net>
* lisp/reftex-base.el (reftex-in-comment): Deal correctly with
escaped comment characters.
2008-11-30 Ralf Angeli <angeli@caeruleus.net>
* lisp/reftex-vars.el (reftex-ref-style-alist): Change structure
so that it is not possible to use multiple different package names
within a style.
(reftex-ref-style-active-list): Adapt to new structure of
`reftex-ref-style-alist'.
* lisp/reftex-sel.el (reftex-select-cycle-active-ref-styles):
Remove.
(reftex-select-cycle-ref-style-internal): Adapt to new structure
of `reftex-ref-style-alist'.
* lisp/reftex-ref.el: Adapt creation of `reftex-<package>-<macro>'
functions to new structure of `reftex-ref-style-alist'.
(reftex-reference): Adapt to new structure of
`reftex-ref-style-alist'.
* lisp/reftex-base.el (reftex-mode-menu): Adapt to new structure
of `reftex-ref-style-alist'.
* doc/reftex.texi (Options (Referencing Labels)): Adapt to new
structure of `reftex-ref-style-alist'.
2008-10-16 Ralf Angeli <angeli@caeruleus.net>
* doc/reftex.texi (Referencing Labels, Reference Styles): Document
changes in the referencing functionality.
2008-10-15 Ralf Angeli <angeli@caeruleus.net>
* lisp/reftex-vars.el (reftex-ref-style-alist): Remove the symbols
for symbols for macro type distinction. Add characters for macro
selection.
(reftex-ref-macro-prompt): New variable.
* lisp/reftex-sel.el (reftex-select-cycle-ref-style-internal):
Remove code for testing macro type.
(reftex-select-toggle-numref-pageref): Remove.
(reftex-select-label-map): Remove binding for
`reftex-select-toggle-numref-pageref'.
* lisp/reftex-ref.el (reftex-reference): Prompt for a reference
macro if `reftex-ref-macro-prompt' is non-nil.
* lisp/reftex-base.el (reftex-select-with-char): Kill the RefTeX
Select buffer when done.
2008-06-07 David Kastrup <dak@gnu.org>
* lisp/reftex-base.el (reftex-remove-if): Improve performance.
2008-06-07 Ralf Angeli <angeli@caeruleus.net>
* lisp/reftex-cite.el (reftex-get-string-refs): Use a regexp
alternative for better performance.
* doc/reftex.texi (Commands): Mention options for definition of
header and footer in BibTeX files.
(Options (Creating Citations)): Document
`reftex-create-bibtex-header' and `reftex-create-bibtex-footer'.
* lisp/reftex-cite.el (reftex-stringref-p): Remove.
(reftex-get-string-refs): Do without `reftex-stringref-p' and use
`reftex-remove-if' instead of the cl-based `remove-if'.
(reftex-create-bibtex-file): Doc fix.
* lisp/reftex-base.el (reftex-remove-if): New function.
2008-06-07 Wolfgang Mayer <wmayer7@gmail.com>
* lisp/reftex-vars.el (reftex-create-bibtex-header)
(reftex-create-bibtex-footer): New variables.
* lisp/reftex-cite.el (reftex-parse-bibtex-entry): Accept
additional optional argument `raw' and keep quotes or braces if it
is non-nil.
(reftex-stringref-p, reftex-get-string-refs): New functions.
(reftex-create-bibtex-file): Include entries that are
cross-referenced from cited entries. Include @String definitions
in the resulting bib file. Add header and footer defined in
`reftex-create-bibtex-header' and `reftex-create-bibtex-footer'.
2008-05-03 Ralf Angeli <angeli@caeruleus.net>
* lisp/reftex-parse.el (reftex-parse-from-file): Move backward one
char if a `\' was matched after a section macro.
* lisp/reftex-global.el (reftex-isearch-switch-to-next-file): Use
`reverse' instead of `nreverse' and `copy-list' in order to make
the byte compiler happy. Get rid of unused `orig-flist' variable.
* lisp/reftex-base.el (reftex-compile-variables): Revert last
change. Match `\' after a section macro.
(reftex-mapconcat-with-predicate): Remove.
2008-04-13 Ralf Angeli <angeli@caeruleus.net>
* lisp/reftex-base.el (reftex-mapconcat-with-predicate): New
function.
(reftex-compile-variables): Use it. Treat environments and macros
differently in the regexp for section matching.
* lisp/reftex-parse.el (reftex-parse-from-file): Use beginning of
match instead of end as bound.
* lisp/reftex-sel.el (reftex-select-label-map): Changing binding
of reference style toggling to "s" which is not already taken.
* doc/reftex.texi (Reference Styles): Reflect change in key
binding for toggling reference styles. Some minor changes.
2008-03-27 Ralf Angeli <angeli@caeruleus.net>
* lisp/reftex-vars.el: Some whitespace, doc and checkdoc fixes.
2008-03-16 Ralf Angeli <angeli@caeruleus.net>
* lisp/reftex-index.el (reftex-index-selection-or-word): Use
`reftex-region-active-p'.
(reftex-index-show-entry)
(reftex-index-initialize-phrases-buffer)
(reftex-index-phrases-apply-to-region): Sync with Emacs trunk.
* lisp/reftex-dcr.el (reftex-start-itimer-once): Silence the byte
compiler.
* lisp/reftex-auc.el: Move `provide' call to bottom of file.
* lisp/reftex-base.el: Require easymenu and define autoloads
earlier to avoid compiler warnings.
(reftex-region-active-p, reftex-select-with-char)
(reftex-show-commentary): Sync with version in Emacs trunk.
(reftex-make-overlay, reftex-overlay-put, reftex-move-overlay)
(reftex-delete-overlay): Define in a way which hides the XEmacs
symbols from the byte compiler.
(reftex-info): Silence the byte compiler. Use `reftex.info'
instead of `reftex' in order to get the correct file.
2008-03-07 Ralf Angeli <angeli@caeruleus.net>
* lisp/reftex-cite.el (reftex-extract-bib-entries): Check if
BibTeX file changed on disk and ask if it should be reread in case
it did.
2008-03-02 Ralf Angeli <angeli@caeruleus.net>
* doc/reftex.texi: Lots of small fixes.
(Reference Styles): New section.
(varioref (LaTeX package), fancyref (LaTeX package)): Remove.
(Options (Referencing Labels)): Remove descriptions of deprecated
variables `reftex-vref-is-default' and `reftex-fref-is-default'.
Add descriptions for `reftex-ref-style-alist' and
`reftex-ref-style-active-list'.
(Referencing Labels): Update regarding reference styles.
2008-02-17 Ralf Angeli <angeli@caeruleus.net>
* lisp/reftex-ref.el (reftex-format-special): Add third argument
for refstyle possible to be passed, making the byte compiler
happy.
(reftex-reference): Pass refstyle to `reftex-format-special'.
* lisp/reftex-vars.el (reftex-ref-style-active-list): Make
creation of type compatible with Emacs 21.
(reftex-format-ref-function): Mention third argument of special
format function.
* lisp/reftex-base.el (reftex-mode-menu): Make creation of
Reference Style menu compatible with Emacs 21.
* doc/reftex.texi: Fix some typos.
2008-01-27 Ralf Angeli <angeli@caeruleus.net>
* lisp/reftex-vars.el (reftex-ref-style-active-list): Doc fix.
* lisp/reftex-base.el (reftex-erase-all-selection-and-index-buffers)
(reftex-access-parse-file): Use `mapc' instead of `mapcar' where
return value is not used.
* lisp/reftex-ref.el (reftex-offer-label-menu): Use `mapc' instead
of `mapcar' where return value is not used.
* lisp/reftex-sel.el (reftex-select-item, reftex-select-unmark):
Use `mapc' instead of `mapcar' where return value is not used.
* lisp/reftex-vars.el (reftex-ref-style-alist)
(reftex-ref-style-active-list): New variables.
(reftex-vref-is-default, reftex-fref-is-default): Adapt doc string
to new implementation. Mark as obsolete. Add compatibility code
for honoring the variable values in case they are set.
* lisp/reftex-base.el (reftex-mode-menu): Reference styles are now
computed from `reftex-ref-style-alist'. Fix typo.
* lisp/reftex-ref.el (reftex-reference): Determine reference macro
by looking at `reftex-ref-style-active-list' and
`reftex-ref-style-alist'. Use only one special format function.
(reftex-varioref-vref, reftex-fancyref-fref)
(reftex-fancyref-Fref): Remove definitions. The functions are now
generated from `reftex-ref-style-alist'.
(reftex-format-vref, reftex-format-Fref, reftex-format-fref):
Remove.
(reftex-format-special): New function.
* lisp/reftex-sel.el (reftex-select-toggle-varioref)
(reftex-select-toggle-fancyref): Remove.
(reftex-select-cycle-active-ref-styles)
(reftex-select-cycle-ref-style-internal)
(reftex-select-cycle-ref-style-forward)
(reftex-select-cycle-ref-style-backward)
(reftex-select-toggle-numref-pageref): New functions.
(reftex-select-label-map): Use `v' and `V' for general cycling
through reference styles. Add `p' for switching between number
and page reference types.
2008-01-06 Ralf Angeli <angeli@caeruleus.net>
* lisp/reftex-cite.el (reftex-pop-to-bibtex-entry)
(reftex-extract-bib-entries-from-thebibliography): Match \bibitem
entries with spaces or tabs in front of arguments.
(reftex-insert-bib-matches): Use `mapc' instead of `mapcar'
because return value is not used.
2008-01-05 Ralf Angeli <angeli@caeruleus.net>
* lisp/reftex-toc.el (reftex-make-separate-toc-frame): Hide
non-operational call to `focus-frame' in Emacs for the compilers's
sake.
2008-01-03 Ralf Angeli <angeli@caeruleus.net>
* lisp/reftex-dcr.el (reftex-mouse-view-crossref): Explain why
point is set.
* lisp/reftex-toc.el (reftex-toc-do-promote): Use `mapc' instead
of `mapcar' because return value is not used.
(reftex-toggle-auto-toc-recenter): Fix typo.
* lisp/reftex-cite.el (reftex-do-citation): Use `mapc' instead of
`mapcar' because return value is not used.
2007-10-10 Ralf Angeli <angeli@caeruleus.net>
* lisp/reftex-vars.el (reftex-cite-format-builtin)
(reftex-bibliography-commands): Add support for ConTeXt.
* doc/reftex.texi (Citation Styles): Mention support for ConTeXt.
2007-08-23 Ralf Angeli <angeli@caeruleus.net>
* doc/reftex.texi (Options (Defining Label Environments)): Fix
typo.
2007-07-22 Ralf Angeli <angeli@caeruleus.net>
* lisp/reftex-base.el (reftex-set-cite-format): Autoload.
(reftex-access-parse-file): Create parse file in a way that does
not interfere with recentf mode.
(reftex-access-parse-file): Do not risk destroying an existing
buffer.
2007-07-07 Ralf Angeli <angeli@caeruleus.net>
* lisp/reftex-parse.el (reftex-nth-arg): Use `forward-comment'
instead of `comment-forward'. The latter is not always available
and the former is sufficient for LaTeX.
(reftex-nth-arg): Revert last change since moving over whitespace
and comments is done by `reftex-move-to-next-arg'.
2007-05-20 Ralf Angeli <angeli@caeruleus.net>
* doc/reftex.texi (Citation Styles): Correct some mistakes.
2007-04-03 Ralf Angeli <angeli@caeruleus.net>
* lisp/reftex-cite.el: Delete trailing whitespace.
(reftex-pop-to-bibtex-entry, reftex-extract-bib-entries)
(reftex-parse-bibtex-entry, reftex-create-bibtex-file): Match
entries containing numbers and symbol constituents.
2007-03-28 Ralf Angeli <angeli@caeruleus.net>
* doc/reftex.texi: Replace BibTeX by @BibTeX{} throughout the
file.
2007-03-12 John Paul Wallington <jpw@pobox.com>
* lisp/reftex-vars.el (reftex-format-ref-function)
(reftex-format-cite-function): Fix custom type.
2007-03-10 Ralf Angeli <angeli@caeruleus.net>
* lisp/reftex-base.el: Remove information in comment already in
imprint or cluttering output of `finder-commentary'.
Require reftex.el.
* lisp/reftex.el: Remove. Now generated from reftex.el.in.
* lisp/reftex-dcr.el: Remove version info in header. Add
maintainer info.
* lisp/reftex-global.el Remove version info in header. Add
maintainer info.
* lisp/reftex-index.el Remove version info in header. Add
maintainer info.
* lisp/reftex-parse.el Remove version info in header. Add
maintainer info.
* lisp/reftex-ref.el Remove version info in header. Add
maintainer info.
* lisp/reftex-sel.el Remove version info in header. Add
maintainer info.
* lisp/reftex-toc.el Remove version info in header. Add
maintainer info.
* lisp/reftex-vars.el Remove version info in header. Add
maintainer info.
2007-03-08 Ralf Angeli <angeli@caeruleus.net>
* doc/reftex.texi: Include macros.texi and version.texi. Change
maintainer and version information. Express TeX, LaTeX, AUCTeX
and RefTeX with macros.
(Imprint): Change maintainer information.
2007-03-04 Ralf Angeli <angeli@caeruleus.net>
* lisp/reftex.el: Update.
* lisp/reftex-base.el (reftex-show-commentary): Look in
reftex-base.el.
(reftex-report-bug): New function.
* lisp/reftex.el: Move original content to reftex-base.el. Add
new header and automatically generated autoloads.
* lisp/reftex-base.el: New file. Insert original content of
reftex.el. Remove autoload for `reftex-index-phrases-mode'.
Delete trailing whitespace.
2007-02-26 Ralf Angeli <angeli@caeruleus.net>
* lisp/reftex-index.el (reftex-index-visit-phrases-buffer): Set
marker when visiting buffer. This allows for returning from the
phrases file to the file one was just editing instead of the file
where the last phrases was added from.
2007-02-25 Ralf Angeli <angeli@caeruleus.net>
* lisp/reftex-index.el (reftex-index-phrases-syntax-table): New
variable. Give ?\" punctuation syntax as it usually is not used
as string quote in TeX-related modes and may occur unmatched. The
change also prevents fontification of quoted content.
(reftex-index-phrases-mode): Use it.
* lisp/reftex-cite.el (reftex-parse-bibtex-entry): Match fields
containing hyphens (besides word constituents).
2007-02-25 David Kastrup <dak@gnu.org>
* lisp/reftex.el (reftex-uniquify, reftex-uniquify-by-car):
Replace O(n^2) algorithms with O(n log n). Introduce optional
argument SORT (not yet used). TODO: figure out callers that can
specify SORT, in order to further speed this up.
2007-02-25 Ralf Angeli <angeli@caeruleus.net>
* lisp/reftex-vars.el (reftex-cite-key-separator): New variable.
* lisp/reftex-auc.el (reftex-arg-cite): Use
`reftex-cite-key-separator'.
* lisp/reftex-cite.el (reftex-do-citation)
(reftex-figure-out-cite-format): Use `reftex-cite-key-separator'.
* doc/reftex.texi (Options (Creating Citations)): Document
`reftex-cite-key-separator'.
* lisp/reftex-cite.el (reftex-do-citation): Return all keys, not
just the first one.
* lisp/reftex-auc.el (reftex-arg-cite): Correctly handle new
value type returned by `reftex-citation'.
2007-02-24 Ralf Angeli <angeli@caeruleus.net>
* doc/reftex.texi: Set correct filename for standalone
distribution.
2007-02-07 Ralf Angeli <angeli@caeruleus.net>
Create `reftex' module.
2012-09-30 22:30:13 +02:00
|
|
|
(let ((count (if reftex-toc-split-windows-horizontally
|
2014-04-04 14:10:22 +02:00
|
|
|
(- (or reftex-last-window-width (window-total-width))
|
|
|
|
(window-total-width))
|
Merge from standalone RefTeX repository.
Here is the ChangeLog of the standalone version of RefTeX without
information about Makefiles and other auxiliary files. The differences to
the Emacs repository are documented in the respective ChangeLog files.
2010-11-06 Ralf Angeli <angeli@caeruleus.net>
* lisp/reftex-cite.el (reftex-create-bibtex-file): Make sure that
entries with whitespace at various places are found.
(reftex-extract-bib-entries-from-thebibliography): Remove
superfluous backslash.
2010-10-16 Ralf Angeli <angeli@caeruleus.net>
* lisp/reftex-cite.el
(reftex-extract-bib-entries-from-thebibliography): Use
`with-current-buffer'.
2010-09-14 Ralf Angeli <angeli@caeruleus.net>
* lisp/reftex-cite.el (reftex-do-citation): Make it possible again
to insert non-existent entries.
2010-01-30 Ralf Angeli <angeli@caeruleus.net>
* lisp/reftex-base.el (reftex-syntax-table-for-bib, reftex-mode):
Do not derive `reftex-syntax-table-for-bib' from
`reftex-syntax-table' because parens have to retain their paren
syntax in order for parsing of BibTeX entries like @book(...) to
work.
2009-09-12 Ralf Angeli <angeli@caeruleus.net>
* lisp/reftex-vars.el (reftex-label-alist): Doc fix.
* lisp/reftex-toc.el (reftex-re-enlarge): Call `enlarge-window'
only if there is something to do because in Emacs the horizontal
version throws an error even if the parameter is 0.
2009-08-08 Ralf Angeli <angeli@caeruleus.net>
* lisp/reftex-index.el: Suppress byte-compiler warnings. Move
provide statement to end of file.
* lisp/reftex-dcr.el: Suppress byte-compiler warnings. Move
provide statement to end of file.
* lisp/reftex-auc.el: Suppress byte-compiler warnings.
* doc/reftex.texi (Imprint): Mention Wolfgang in list of
contributors.
* lisp/reftex-vars.el (reftex-plug-into-AUCTeX): Doc fix.
2009-07-05 Ralf Angeli <angeli@caeruleus.net>
* doc/reftex.texi (Creating Citations): Give a hint about how to
auto-revert the BibTeX database file when using external editors.
* lisp/reftex-cite.el (reftex-do-citation): Save match data when
asking for optional arguments.
2009-04-29 Ralf Angeli <angeli@caeruleus.net>
* lisp/reftex-base.el (reftex-in-comment): Do not error out if
`comment-start-skip' is not set.
2009-03-01 Wolfgang Mayer <wmayer7@gmail.com>
* lisp/reftex-cite.el (reftex-all-used-citation-keys):
Fix regexp to correctly extract all citations in the same line.
2008-12-29 Ralf Angeli <angeli@caeruleus.net>
* lisp/reftex-vars.el (reftex-vref-is-default)
(reftex-fref-is-default): Adapt doc string.
(reftex-ref-style-default-list): New name for
`reftex-ref-style-active-list'. Use :set instead of :repeat.
(reftex-vref-is-default, reftex-fref-is-default): Adapt to new
name.
* lisp/reftex-base.el (reftex-tie-multifile-symbols): Add doc
string.
(reftex-tie-multifile-symbols): Initialize
`reftex-ref-style-list'.
(reftex-untie-multifile-symbols): Add doc string.
(reftex-add-index-macros): Doc fix.
(reftex-ref-style-activate, reftex-ref-style-toggle)
(reftex-ref-style-list): New functions.
(reftex-mode-menu): Use them.
* lisp/reftex-sel.el (reftex-select-cycle-ref-style-internal): Use
`reftex-ref-style-list' function.
* lisp/reftex-ref.el (reftex-reference): Use
`reftex-ref-style-list' function.
* doc/reftex.texi (Referencing Labels): Simplify section about
reference macro cycling.
(Reference Styles, Options (Referencing Labels)): Adapt to changed
implementation.
2008-12-18 Ralf Angeli <angeli@caeruleus.net>
* lisp/reftex-base.el (reftex-in-comment): Deal correctly with
escaped comment characters.
2008-11-30 Ralf Angeli <angeli@caeruleus.net>
* lisp/reftex-vars.el (reftex-ref-style-alist): Change structure
so that it is not possible to use multiple different package names
within a style.
(reftex-ref-style-active-list): Adapt to new structure of
`reftex-ref-style-alist'.
* lisp/reftex-sel.el (reftex-select-cycle-active-ref-styles):
Remove.
(reftex-select-cycle-ref-style-internal): Adapt to new structure
of `reftex-ref-style-alist'.
* lisp/reftex-ref.el: Adapt creation of `reftex-<package>-<macro>'
functions to new structure of `reftex-ref-style-alist'.
(reftex-reference): Adapt to new structure of
`reftex-ref-style-alist'.
* lisp/reftex-base.el (reftex-mode-menu): Adapt to new structure
of `reftex-ref-style-alist'.
* doc/reftex.texi (Options (Referencing Labels)): Adapt to new
structure of `reftex-ref-style-alist'.
2008-10-16 Ralf Angeli <angeli@caeruleus.net>
* doc/reftex.texi (Referencing Labels, Reference Styles): Document
changes in the referencing functionality.
2008-10-15 Ralf Angeli <angeli@caeruleus.net>
* lisp/reftex-vars.el (reftex-ref-style-alist): Remove the symbols
for symbols for macro type distinction. Add characters for macro
selection.
(reftex-ref-macro-prompt): New variable.
* lisp/reftex-sel.el (reftex-select-cycle-ref-style-internal):
Remove code for testing macro type.
(reftex-select-toggle-numref-pageref): Remove.
(reftex-select-label-map): Remove binding for
`reftex-select-toggle-numref-pageref'.
* lisp/reftex-ref.el (reftex-reference): Prompt for a reference
macro if `reftex-ref-macro-prompt' is non-nil.
* lisp/reftex-base.el (reftex-select-with-char): Kill the RefTeX
Select buffer when done.
2008-06-07 David Kastrup <dak@gnu.org>
* lisp/reftex-base.el (reftex-remove-if): Improve performance.
2008-06-07 Ralf Angeli <angeli@caeruleus.net>
* lisp/reftex-cite.el (reftex-get-string-refs): Use a regexp
alternative for better performance.
* doc/reftex.texi (Commands): Mention options for definition of
header and footer in BibTeX files.
(Options (Creating Citations)): Document
`reftex-create-bibtex-header' and `reftex-create-bibtex-footer'.
* lisp/reftex-cite.el (reftex-stringref-p): Remove.
(reftex-get-string-refs): Do without `reftex-stringref-p' and use
`reftex-remove-if' instead of the cl-based `remove-if'.
(reftex-create-bibtex-file): Doc fix.
* lisp/reftex-base.el (reftex-remove-if): New function.
2008-06-07 Wolfgang Mayer <wmayer7@gmail.com>
* lisp/reftex-vars.el (reftex-create-bibtex-header)
(reftex-create-bibtex-footer): New variables.
* lisp/reftex-cite.el (reftex-parse-bibtex-entry): Accept
additional optional argument `raw' and keep quotes or braces if it
is non-nil.
(reftex-stringref-p, reftex-get-string-refs): New functions.
(reftex-create-bibtex-file): Include entries that are
cross-referenced from cited entries. Include @String definitions
in the resulting bib file. Add header and footer defined in
`reftex-create-bibtex-header' and `reftex-create-bibtex-footer'.
2008-05-03 Ralf Angeli <angeli@caeruleus.net>
* lisp/reftex-parse.el (reftex-parse-from-file): Move backward one
char if a `\' was matched after a section macro.
* lisp/reftex-global.el (reftex-isearch-switch-to-next-file): Use
`reverse' instead of `nreverse' and `copy-list' in order to make
the byte compiler happy. Get rid of unused `orig-flist' variable.
* lisp/reftex-base.el (reftex-compile-variables): Revert last
change. Match `\' after a section macro.
(reftex-mapconcat-with-predicate): Remove.
2008-04-13 Ralf Angeli <angeli@caeruleus.net>
* lisp/reftex-base.el (reftex-mapconcat-with-predicate): New
function.
(reftex-compile-variables): Use it. Treat environments and macros
differently in the regexp for section matching.
* lisp/reftex-parse.el (reftex-parse-from-file): Use beginning of
match instead of end as bound.
* lisp/reftex-sel.el (reftex-select-label-map): Changing binding
of reference style toggling to "s" which is not already taken.
* doc/reftex.texi (Reference Styles): Reflect change in key
binding for toggling reference styles. Some minor changes.
2008-03-27 Ralf Angeli <angeli@caeruleus.net>
* lisp/reftex-vars.el: Some whitespace, doc and checkdoc fixes.
2008-03-16 Ralf Angeli <angeli@caeruleus.net>
* lisp/reftex-index.el (reftex-index-selection-or-word): Use
`reftex-region-active-p'.
(reftex-index-show-entry)
(reftex-index-initialize-phrases-buffer)
(reftex-index-phrases-apply-to-region): Sync with Emacs trunk.
* lisp/reftex-dcr.el (reftex-start-itimer-once): Silence the byte
compiler.
* lisp/reftex-auc.el: Move `provide' call to bottom of file.
* lisp/reftex-base.el: Require easymenu and define autoloads
earlier to avoid compiler warnings.
(reftex-region-active-p, reftex-select-with-char)
(reftex-show-commentary): Sync with version in Emacs trunk.
(reftex-make-overlay, reftex-overlay-put, reftex-move-overlay)
(reftex-delete-overlay): Define in a way which hides the XEmacs
symbols from the byte compiler.
(reftex-info): Silence the byte compiler. Use `reftex.info'
instead of `reftex' in order to get the correct file.
2008-03-07 Ralf Angeli <angeli@caeruleus.net>
* lisp/reftex-cite.el (reftex-extract-bib-entries): Check if
BibTeX file changed on disk and ask if it should be reread in case
it did.
2008-03-02 Ralf Angeli <angeli@caeruleus.net>
* doc/reftex.texi: Lots of small fixes.
(Reference Styles): New section.
(varioref (LaTeX package), fancyref (LaTeX package)): Remove.
(Options (Referencing Labels)): Remove descriptions of deprecated
variables `reftex-vref-is-default' and `reftex-fref-is-default'.
Add descriptions for `reftex-ref-style-alist' and
`reftex-ref-style-active-list'.
(Referencing Labels): Update regarding reference styles.
2008-02-17 Ralf Angeli <angeli@caeruleus.net>
* lisp/reftex-ref.el (reftex-format-special): Add third argument
for refstyle possible to be passed, making the byte compiler
happy.
(reftex-reference): Pass refstyle to `reftex-format-special'.
* lisp/reftex-vars.el (reftex-ref-style-active-list): Make
creation of type compatible with Emacs 21.
(reftex-format-ref-function): Mention third argument of special
format function.
* lisp/reftex-base.el (reftex-mode-menu): Make creation of
Reference Style menu compatible with Emacs 21.
* doc/reftex.texi: Fix some typos.
2008-01-27 Ralf Angeli <angeli@caeruleus.net>
* lisp/reftex-vars.el (reftex-ref-style-active-list): Doc fix.
* lisp/reftex-base.el (reftex-erase-all-selection-and-index-buffers)
(reftex-access-parse-file): Use `mapc' instead of `mapcar' where
return value is not used.
* lisp/reftex-ref.el (reftex-offer-label-menu): Use `mapc' instead
of `mapcar' where return value is not used.
* lisp/reftex-sel.el (reftex-select-item, reftex-select-unmark):
Use `mapc' instead of `mapcar' where return value is not used.
* lisp/reftex-vars.el (reftex-ref-style-alist)
(reftex-ref-style-active-list): New variables.
(reftex-vref-is-default, reftex-fref-is-default): Adapt doc string
to new implementation. Mark as obsolete. Add compatibility code
for honoring the variable values in case they are set.
* lisp/reftex-base.el (reftex-mode-menu): Reference styles are now
computed from `reftex-ref-style-alist'. Fix typo.
* lisp/reftex-ref.el (reftex-reference): Determine reference macro
by looking at `reftex-ref-style-active-list' and
`reftex-ref-style-alist'. Use only one special format function.
(reftex-varioref-vref, reftex-fancyref-fref)
(reftex-fancyref-Fref): Remove definitions. The functions are now
generated from `reftex-ref-style-alist'.
(reftex-format-vref, reftex-format-Fref, reftex-format-fref):
Remove.
(reftex-format-special): New function.
* lisp/reftex-sel.el (reftex-select-toggle-varioref)
(reftex-select-toggle-fancyref): Remove.
(reftex-select-cycle-active-ref-styles)
(reftex-select-cycle-ref-style-internal)
(reftex-select-cycle-ref-style-forward)
(reftex-select-cycle-ref-style-backward)
(reftex-select-toggle-numref-pageref): New functions.
(reftex-select-label-map): Use `v' and `V' for general cycling
through reference styles. Add `p' for switching between number
and page reference types.
2008-01-06 Ralf Angeli <angeli@caeruleus.net>
* lisp/reftex-cite.el (reftex-pop-to-bibtex-entry)
(reftex-extract-bib-entries-from-thebibliography): Match \bibitem
entries with spaces or tabs in front of arguments.
(reftex-insert-bib-matches): Use `mapc' instead of `mapcar'
because return value is not used.
2008-01-05 Ralf Angeli <angeli@caeruleus.net>
* lisp/reftex-toc.el (reftex-make-separate-toc-frame): Hide
non-operational call to `focus-frame' in Emacs for the compilers's
sake.
2008-01-03 Ralf Angeli <angeli@caeruleus.net>
* lisp/reftex-dcr.el (reftex-mouse-view-crossref): Explain why
point is set.
* lisp/reftex-toc.el (reftex-toc-do-promote): Use `mapc' instead
of `mapcar' because return value is not used.
(reftex-toggle-auto-toc-recenter): Fix typo.
* lisp/reftex-cite.el (reftex-do-citation): Use `mapc' instead of
`mapcar' because return value is not used.
2007-10-10 Ralf Angeli <angeli@caeruleus.net>
* lisp/reftex-vars.el (reftex-cite-format-builtin)
(reftex-bibliography-commands): Add support for ConTeXt.
* doc/reftex.texi (Citation Styles): Mention support for ConTeXt.
2007-08-23 Ralf Angeli <angeli@caeruleus.net>
* doc/reftex.texi (Options (Defining Label Environments)): Fix
typo.
2007-07-22 Ralf Angeli <angeli@caeruleus.net>
* lisp/reftex-base.el (reftex-set-cite-format): Autoload.
(reftex-access-parse-file): Create parse file in a way that does
not interfere with recentf mode.
(reftex-access-parse-file): Do not risk destroying an existing
buffer.
2007-07-07 Ralf Angeli <angeli@caeruleus.net>
* lisp/reftex-parse.el (reftex-nth-arg): Use `forward-comment'
instead of `comment-forward'. The latter is not always available
and the former is sufficient for LaTeX.
(reftex-nth-arg): Revert last change since moving over whitespace
and comments is done by `reftex-move-to-next-arg'.
2007-05-20 Ralf Angeli <angeli@caeruleus.net>
* doc/reftex.texi (Citation Styles): Correct some mistakes.
2007-04-03 Ralf Angeli <angeli@caeruleus.net>
* lisp/reftex-cite.el: Delete trailing whitespace.
(reftex-pop-to-bibtex-entry, reftex-extract-bib-entries)
(reftex-parse-bibtex-entry, reftex-create-bibtex-file): Match
entries containing numbers and symbol constituents.
2007-03-28 Ralf Angeli <angeli@caeruleus.net>
* doc/reftex.texi: Replace BibTeX by @BibTeX{} throughout the
file.
2007-03-12 John Paul Wallington <jpw@pobox.com>
* lisp/reftex-vars.el (reftex-format-ref-function)
(reftex-format-cite-function): Fix custom type.
2007-03-10 Ralf Angeli <angeli@caeruleus.net>
* lisp/reftex-base.el: Remove information in comment already in
imprint or cluttering output of `finder-commentary'.
Require reftex.el.
* lisp/reftex.el: Remove. Now generated from reftex.el.in.
* lisp/reftex-dcr.el: Remove version info in header. Add
maintainer info.
* lisp/reftex-global.el Remove version info in header. Add
maintainer info.
* lisp/reftex-index.el Remove version info in header. Add
maintainer info.
* lisp/reftex-parse.el Remove version info in header. Add
maintainer info.
* lisp/reftex-ref.el Remove version info in header. Add
maintainer info.
* lisp/reftex-sel.el Remove version info in header. Add
maintainer info.
* lisp/reftex-toc.el Remove version info in header. Add
maintainer info.
* lisp/reftex-vars.el Remove version info in header. Add
maintainer info.
2007-03-08 Ralf Angeli <angeli@caeruleus.net>
* doc/reftex.texi: Include macros.texi and version.texi. Change
maintainer and version information. Express TeX, LaTeX, AUCTeX
and RefTeX with macros.
(Imprint): Change maintainer information.
2007-03-04 Ralf Angeli <angeli@caeruleus.net>
* lisp/reftex.el: Update.
* lisp/reftex-base.el (reftex-show-commentary): Look in
reftex-base.el.
(reftex-report-bug): New function.
* lisp/reftex.el: Move original content to reftex-base.el. Add
new header and automatically generated autoloads.
* lisp/reftex-base.el: New file. Insert original content of
reftex.el. Remove autoload for `reftex-index-phrases-mode'.
Delete trailing whitespace.
2007-02-26 Ralf Angeli <angeli@caeruleus.net>
* lisp/reftex-index.el (reftex-index-visit-phrases-buffer): Set
marker when visiting buffer. This allows for returning from the
phrases file to the file one was just editing instead of the file
where the last phrases was added from.
2007-02-25 Ralf Angeli <angeli@caeruleus.net>
* lisp/reftex-index.el (reftex-index-phrases-syntax-table): New
variable. Give ?\" punctuation syntax as it usually is not used
as string quote in TeX-related modes and may occur unmatched. The
change also prevents fontification of quoted content.
(reftex-index-phrases-mode): Use it.
* lisp/reftex-cite.el (reftex-parse-bibtex-entry): Match fields
containing hyphens (besides word constituents).
2007-02-25 David Kastrup <dak@gnu.org>
* lisp/reftex.el (reftex-uniquify, reftex-uniquify-by-car):
Replace O(n^2) algorithms with O(n log n). Introduce optional
argument SORT (not yet used). TODO: figure out callers that can
specify SORT, in order to further speed this up.
2007-02-25 Ralf Angeli <angeli@caeruleus.net>
* lisp/reftex-vars.el (reftex-cite-key-separator): New variable.
* lisp/reftex-auc.el (reftex-arg-cite): Use
`reftex-cite-key-separator'.
* lisp/reftex-cite.el (reftex-do-citation)
(reftex-figure-out-cite-format): Use `reftex-cite-key-separator'.
* doc/reftex.texi (Options (Creating Citations)): Document
`reftex-cite-key-separator'.
* lisp/reftex-cite.el (reftex-do-citation): Return all keys, not
just the first one.
* lisp/reftex-auc.el (reftex-arg-cite): Correctly handle new
value type returned by `reftex-citation'.
2007-02-24 Ralf Angeli <angeli@caeruleus.net>
* doc/reftex.texi: Set correct filename for standalone
distribution.
2007-02-07 Ralf Angeli <angeli@caeruleus.net>
Create `reftex' module.
2012-09-30 22:30:13 +02:00
|
|
|
(- (or reftex-last-window-height (window-height))
|
|
|
|
(window-height)))))
|
|
|
|
(when (> count 0)
|
2017-02-28 11:15:24 -05:00
|
|
|
(with-demoted-errors ;E.g. the window might be the root window!
|
|
|
|
(enlarge-window count reftex-toc-split-windows-horizontally)))))
|
2003-08-11 12:27:02 +00:00
|
|
|
|
|
|
|
(defun reftex-toc-dframe-p (&optional frame error)
|
2009-08-22 19:29:18 +00:00
|
|
|
;; Check if FRAME is the dedicated TOC frame.
|
2003-08-11 12:27:02 +00:00
|
|
|
;; If yes, and ERROR is non-nil, throw an error.
|
|
|
|
(setq frame (or frame (selected-frame)))
|
2009-08-22 19:29:18 +00:00
|
|
|
(let ((res (equal
|
2003-08-11 12:27:02 +00:00
|
|
|
(if (fboundp 'frame-property)
|
|
|
|
(frame-property frame 'name)
|
|
|
|
(frame-parameter frame 'name))
|
|
|
|
"RefTeX TOC Frame")))
|
|
|
|
(if (and res error)
|
2011-11-17 13:16:44 +01:00
|
|
|
(error "This frame is view-only. Use `C-c =' to create TOC window for commands"))
|
2003-08-11 12:27:02 +00:00
|
|
|
res))
|
1999-08-16 07:42:41 +00:00
|
|
|
|
|
|
|
(defun reftex-toc-show-help ()
|
|
|
|
"Show a summary of special key bindings."
|
|
|
|
(interactive)
|
2003-08-11 12:27:02 +00:00
|
|
|
(reftex-toc-dframe-p nil 'error)
|
1999-08-16 07:42:41 +00:00
|
|
|
(with-output-to-temp-buffer "*RefTeX Help*"
|
|
|
|
(princ reftex-toc-help))
|
|
|
|
(reftex-enlarge-to-fit "*RefTeX Help*" t)
|
|
|
|
;; If follow mode is active, arrange to delay it one command
|
|
|
|
(if reftex-toc-follow-mode
|
|
|
|
(setq reftex-toc-follow-mode 1)))
|
|
|
|
|
2015-04-27 12:59:11 -04:00
|
|
|
(defun reftex-toc-next (&optional _arg)
|
1999-08-16 07:42:41 +00:00
|
|
|
"Move to next selectable item."
|
2015-04-27 12:59:11 -04:00
|
|
|
(interactive)
|
2008-01-24 15:14:52 +00:00
|
|
|
(when (featurep 'xemacs) (setq zmacs-region-stays t))
|
1999-08-16 07:42:41 +00:00
|
|
|
(setq reftex-callback-fwd t)
|
|
|
|
(or (eobp) (forward-char 1))
|
2009-08-22 19:29:18 +00:00
|
|
|
(goto-char (or (next-single-property-change (point) :data)
|
2003-08-11 12:27:02 +00:00
|
|
|
(point))))
|
2015-04-27 12:59:11 -04:00
|
|
|
(defun reftex-toc-previous (&optional _arg)
|
1999-08-16 07:42:41 +00:00
|
|
|
"Move to previous selectable item."
|
2015-04-27 12:59:11 -04:00
|
|
|
(interactive)
|
2008-01-24 15:14:52 +00:00
|
|
|
(when (featurep 'xemacs) (setq zmacs-region-stays t))
|
1999-08-16 07:42:41 +00:00
|
|
|
(setq reftex-callback-fwd nil)
|
|
|
|
(goto-char (or (previous-single-property-change (point) :data)
|
2003-08-11 12:27:02 +00:00
|
|
|
(point))))
|
1999-08-16 07:42:41 +00:00
|
|
|
(defun reftex-toc-next-heading (&optional arg)
|
2011-11-17 13:16:44 +01:00
|
|
|
"Move to next table of contents line."
|
1999-08-16 07:42:41 +00:00
|
|
|
(interactive "p")
|
2008-01-24 15:14:52 +00:00
|
|
|
(when (featurep 'xemacs) (setq zmacs-region-stays t))
|
1999-08-16 07:42:41 +00:00
|
|
|
(end-of-line)
|
|
|
|
(re-search-forward "^ " nil t arg)
|
|
|
|
(beginning-of-line))
|
|
|
|
(defun reftex-toc-previous-heading (&optional arg)
|
2011-11-17 13:16:44 +01:00
|
|
|
"Move to previous table of contents line."
|
1999-08-16 07:42:41 +00:00
|
|
|
(interactive "p")
|
2008-01-24 15:14:52 +00:00
|
|
|
(when (featurep 'xemacs) (setq zmacs-region-stays t))
|
1999-08-16 07:42:41 +00:00
|
|
|
(re-search-backward "^ " nil t arg))
|
|
|
|
(defun reftex-toc-toggle-follow ()
|
|
|
|
"Toggle follow (other window follows with context)."
|
|
|
|
(interactive)
|
|
|
|
(setq reftex-last-follow-point -1)
|
|
|
|
(setq reftex-toc-follow-mode (not reftex-toc-follow-mode)))
|
|
|
|
(defun reftex-toc-toggle-file-boundary ()
|
|
|
|
"Toggle inclusion of file boundaries in *toc* buffer."
|
|
|
|
(interactive)
|
|
|
|
(setq reftex-toc-include-file-boundaries
|
2003-08-11 12:27:02 +00:00
|
|
|
(not reftex-toc-include-file-boundaries))
|
1999-08-16 07:42:41 +00:00
|
|
|
(reftex-toc-revert))
|
|
|
|
(defun reftex-toc-toggle-labels (arg)
|
|
|
|
"Toggle inclusion of labels in *toc* buffer.
|
|
|
|
With prefix ARG, prompt for a label type and include only labels of
|
|
|
|
that specific type."
|
|
|
|
(interactive "P")
|
2009-08-22 19:29:18 +00:00
|
|
|
(setq reftex-toc-include-labels
|
2003-08-11 12:27:02 +00:00
|
|
|
(if arg (reftex-query-label-type)
|
|
|
|
(not reftex-toc-include-labels)))
|
1999-08-16 07:42:41 +00:00
|
|
|
(reftex-toc-revert))
|
|
|
|
(defun reftex-toc-toggle-index (arg)
|
|
|
|
"Toggle inclusion of index in *toc* buffer.
|
|
|
|
With prefix arg, prompt for an index tag and include only entries of that
|
|
|
|
specific index."
|
|
|
|
(interactive "P")
|
|
|
|
(setq reftex-toc-include-index-entries
|
2003-08-11 12:27:02 +00:00
|
|
|
(if arg (reftex-index-select-tag)
|
|
|
|
(not reftex-toc-include-index-entries)))
|
1999-08-16 07:42:41 +00:00
|
|
|
(reftex-toc-revert))
|
|
|
|
(defun reftex-toc-toggle-context ()
|
|
|
|
"Toggle inclusion of label context in *toc* buffer.
|
|
|
|
Label context is only displayed when the labels are there as well."
|
|
|
|
(interactive)
|
|
|
|
(setq reftex-toc-include-context (not reftex-toc-include-context))
|
|
|
|
(reftex-toc-revert))
|
* reftex.el (reftex-compile-variables): respect new structure of
`reftex-index-macro'
(reftex-compile-variables): Use the changed structure of
`reftex-label-alist'.
* reftex-vars.el (reftex-index-math-format,
(reftex-toc-max-level): New option.
reftex-index-phrases-search-whole-words,
reftex-index-phrases-case-fold-search,
reftex-index-phrases-skip-indexed-matches,
reftex-index-phrases-wrap-long-lines,
reftex-index-phrases-sort-prefers-entry,
reftex-index-phrases-sort-in-blocks): New options.
(reftex-index-macros): Option structure changed.
(reftex-index-macros-builtin): Added `repeat' item to each entry.
(reftex-label-alist): Additional item in each entry to specify if
the environment should be listed in the TOC.
(eval-when-compile (require 'cl)) added.
* reftex-index.el (reftex-index-selection-or-word): No longer
deals with "repeat".
(reftex-index): "repeat property in `reftex-index-macro-alist' is
now used.
(reftex-index-phrases-comment-regexp,
reftex-index-phrases-macrodef-regexp,
reftex-index-phrases-phrase-regexp1,
reftex-index-phrases-phrase-regexp2,
reftex-index-phrases-phrase-regexp12, reftex-index-phrases-help):
New constants.
(reftex-index-phrases-macro-data, reftex-index-phrases-files,
reftex-index-phrases-font-lock-keywords,
reftex-index-phrases-font-lock-defaults, reftex-index-phrases-map,
reftex-index-phrases-restrict-file): New variables.
(reftex-index-phrase-selection-or-word,
reftex-index-visit-phrases-buffer,
reftex-index-initialize-phrases-buffer,
reftex-index-phrases-save-and-return, reftex-index-phrases-mode,
reftex-index-next-phrase, reftex-index-this-phrase,
reftex-index-all-phrases, reftex-index-region-phrases,
reftex-index-phrases-parse-header,
reftex-index-phrases-toggle-restricted, reftex-index-new-phrase,
reftex-index-find-next-conflict-phrase, reftex-index-phrases-info,
reftex-index-phrases-set-macro-key, reftex-index-sort-phrases,
reftex-compare-phrase-lines, reftex-index-make-phrase-regexp,
reftex-index-simplify-phrase, reftex-index-phrases-find-dup-re,
reftex-index-make-replace-string,
reftex-query-index-phrase-globally, reftex-query-index-phrase,
reftex-index-phrase-match-is-indexed,
reftex-index-phrases-fixup-line,
reftex-index-phrases-replace-space,
reftex-index-select-phrases-macro): New functions.
(reftex-index-globalize, reftex-index-globally): functions removed
(eval-when-compile (require 'cl)) added.
* reftex-toc.el (reftex-toc-mode): Create new indicator for max
level.
(reftex-toc-max-level-indicator): New variable.
(reftex-toc-max-level): New command.
(reftex-toc-map): New keybinding `t'.
(reftex-toc-help): Constant updated.
(eval-when-compile (require 'cl)) added.
* reftex-ref.el (reftex-offer-label-menu): Prefix to `t' command key
can change `reftex-toc-max-level'
(eval-when-compile (require 'cl)) added.
* reftex-sel (reftex-insert-docstruct): Respect
`reftex-toc-max-level'
(eval-when-compile (require 'cl)) added.
* reftex-auc.el (eval-when-compile (require 'cl)) added.
* reftex-vcr.el (eval-when-compile (require 'cl)) added.
* reftex-cite.el (reftex-citep, reftex-citet): New commands.
(reftex-citation, reftex-do-citation,
reftex-figure-out-cite-format): Additional argument FORMAT-KEY to
preselect a citation format.
(eval-when-compile (require 'cl)) added.
* reftex-parse.el (reftex-context-substring): Optional parameter
to-end
(reftex-section-info): Deal with environment matches.
(eval-when-compile (require 'cl)) added.
* reftex-global.el (eval-when-compile (require 'cl)) added.
1999-12-15 17:02:38 +00:00
|
|
|
(defun reftex-toc-max-level (arg)
|
2011-11-17 13:16:44 +01:00
|
|
|
"Set the maximum level of TOC lines in this buffer to value of prefix ARG.
|
* reftex.el (reftex-compile-variables): respect new structure of
`reftex-index-macro'
(reftex-compile-variables): Use the changed structure of
`reftex-label-alist'.
* reftex-vars.el (reftex-index-math-format,
(reftex-toc-max-level): New option.
reftex-index-phrases-search-whole-words,
reftex-index-phrases-case-fold-search,
reftex-index-phrases-skip-indexed-matches,
reftex-index-phrases-wrap-long-lines,
reftex-index-phrases-sort-prefers-entry,
reftex-index-phrases-sort-in-blocks): New options.
(reftex-index-macros): Option structure changed.
(reftex-index-macros-builtin): Added `repeat' item to each entry.
(reftex-label-alist): Additional item in each entry to specify if
the environment should be listed in the TOC.
(eval-when-compile (require 'cl)) added.
* reftex-index.el (reftex-index-selection-or-word): No longer
deals with "repeat".
(reftex-index): "repeat property in `reftex-index-macro-alist' is
now used.
(reftex-index-phrases-comment-regexp,
reftex-index-phrases-macrodef-regexp,
reftex-index-phrases-phrase-regexp1,
reftex-index-phrases-phrase-regexp2,
reftex-index-phrases-phrase-regexp12, reftex-index-phrases-help):
New constants.
(reftex-index-phrases-macro-data, reftex-index-phrases-files,
reftex-index-phrases-font-lock-keywords,
reftex-index-phrases-font-lock-defaults, reftex-index-phrases-map,
reftex-index-phrases-restrict-file): New variables.
(reftex-index-phrase-selection-or-word,
reftex-index-visit-phrases-buffer,
reftex-index-initialize-phrases-buffer,
reftex-index-phrases-save-and-return, reftex-index-phrases-mode,
reftex-index-next-phrase, reftex-index-this-phrase,
reftex-index-all-phrases, reftex-index-region-phrases,
reftex-index-phrases-parse-header,
reftex-index-phrases-toggle-restricted, reftex-index-new-phrase,
reftex-index-find-next-conflict-phrase, reftex-index-phrases-info,
reftex-index-phrases-set-macro-key, reftex-index-sort-phrases,
reftex-compare-phrase-lines, reftex-index-make-phrase-regexp,
reftex-index-simplify-phrase, reftex-index-phrases-find-dup-re,
reftex-index-make-replace-string,
reftex-query-index-phrase-globally, reftex-query-index-phrase,
reftex-index-phrase-match-is-indexed,
reftex-index-phrases-fixup-line,
reftex-index-phrases-replace-space,
reftex-index-select-phrases-macro): New functions.
(reftex-index-globalize, reftex-index-globally): functions removed
(eval-when-compile (require 'cl)) added.
* reftex-toc.el (reftex-toc-mode): Create new indicator for max
level.
(reftex-toc-max-level-indicator): New variable.
(reftex-toc-max-level): New command.
(reftex-toc-map): New keybinding `t'.
(reftex-toc-help): Constant updated.
(eval-when-compile (require 'cl)) added.
* reftex-ref.el (reftex-offer-label-menu): Prefix to `t' command key
can change `reftex-toc-max-level'
(eval-when-compile (require 'cl)) added.
* reftex-sel (reftex-insert-docstruct): Respect
`reftex-toc-max-level'
(eval-when-compile (require 'cl)) added.
* reftex-auc.el (eval-when-compile (require 'cl)) added.
* reftex-vcr.el (eval-when-compile (require 'cl)) added.
* reftex-cite.el (reftex-citep, reftex-citet): New commands.
(reftex-citation, reftex-do-citation,
reftex-figure-out-cite-format): Additional argument FORMAT-KEY to
preselect a citation format.
(eval-when-compile (require 'cl)) added.
* reftex-parse.el (reftex-context-substring): Optional parameter
to-end
(reftex-section-info): Deal with environment matches.
(eval-when-compile (require 'cl)) added.
* reftex-global.el (eval-when-compile (require 'cl)) added.
1999-12-15 17:02:38 +00:00
|
|
|
When no prefix is given, set the max level to a large number, so that all
|
2011-11-17 01:09:20 -08:00
|
|
|
levels are shown. For example, to set the level to 3, type `3 m'."
|
* reftex.el (reftex-compile-variables): respect new structure of
`reftex-index-macro'
(reftex-compile-variables): Use the changed structure of
`reftex-label-alist'.
* reftex-vars.el (reftex-index-math-format,
(reftex-toc-max-level): New option.
reftex-index-phrases-search-whole-words,
reftex-index-phrases-case-fold-search,
reftex-index-phrases-skip-indexed-matches,
reftex-index-phrases-wrap-long-lines,
reftex-index-phrases-sort-prefers-entry,
reftex-index-phrases-sort-in-blocks): New options.
(reftex-index-macros): Option structure changed.
(reftex-index-macros-builtin): Added `repeat' item to each entry.
(reftex-label-alist): Additional item in each entry to specify if
the environment should be listed in the TOC.
(eval-when-compile (require 'cl)) added.
* reftex-index.el (reftex-index-selection-or-word): No longer
deals with "repeat".
(reftex-index): "repeat property in `reftex-index-macro-alist' is
now used.
(reftex-index-phrases-comment-regexp,
reftex-index-phrases-macrodef-regexp,
reftex-index-phrases-phrase-regexp1,
reftex-index-phrases-phrase-regexp2,
reftex-index-phrases-phrase-regexp12, reftex-index-phrases-help):
New constants.
(reftex-index-phrases-macro-data, reftex-index-phrases-files,
reftex-index-phrases-font-lock-keywords,
reftex-index-phrases-font-lock-defaults, reftex-index-phrases-map,
reftex-index-phrases-restrict-file): New variables.
(reftex-index-phrase-selection-or-word,
reftex-index-visit-phrases-buffer,
reftex-index-initialize-phrases-buffer,
reftex-index-phrases-save-and-return, reftex-index-phrases-mode,
reftex-index-next-phrase, reftex-index-this-phrase,
reftex-index-all-phrases, reftex-index-region-phrases,
reftex-index-phrases-parse-header,
reftex-index-phrases-toggle-restricted, reftex-index-new-phrase,
reftex-index-find-next-conflict-phrase, reftex-index-phrases-info,
reftex-index-phrases-set-macro-key, reftex-index-sort-phrases,
reftex-compare-phrase-lines, reftex-index-make-phrase-regexp,
reftex-index-simplify-phrase, reftex-index-phrases-find-dup-re,
reftex-index-make-replace-string,
reftex-query-index-phrase-globally, reftex-query-index-phrase,
reftex-index-phrase-match-is-indexed,
reftex-index-phrases-fixup-line,
reftex-index-phrases-replace-space,
reftex-index-select-phrases-macro): New functions.
(reftex-index-globalize, reftex-index-globally): functions removed
(eval-when-compile (require 'cl)) added.
* reftex-toc.el (reftex-toc-mode): Create new indicator for max
level.
(reftex-toc-max-level-indicator): New variable.
(reftex-toc-max-level): New command.
(reftex-toc-map): New keybinding `t'.
(reftex-toc-help): Constant updated.
(eval-when-compile (require 'cl)) added.
* reftex-ref.el (reftex-offer-label-menu): Prefix to `t' command key
can change `reftex-toc-max-level'
(eval-when-compile (require 'cl)) added.
* reftex-sel (reftex-insert-docstruct): Respect
`reftex-toc-max-level'
(eval-when-compile (require 'cl)) added.
* reftex-auc.el (eval-when-compile (require 'cl)) added.
* reftex-vcr.el (eval-when-compile (require 'cl)) added.
* reftex-cite.el (reftex-citep, reftex-citet): New commands.
(reftex-citation, reftex-do-citation,
reftex-figure-out-cite-format): Additional argument FORMAT-KEY to
preselect a citation format.
(eval-when-compile (require 'cl)) added.
* reftex-parse.el (reftex-context-substring): Optional parameter
to-end
(reftex-section-info): Deal with environment matches.
(eval-when-compile (require 'cl)) added.
* reftex-global.el (eval-when-compile (require 'cl)) added.
1999-12-15 17:02:38 +00:00
|
|
|
(interactive "P")
|
|
|
|
(setq reftex-toc-max-level (if arg
|
2003-08-11 12:27:02 +00:00
|
|
|
(prefix-numeric-value arg)
|
|
|
|
100))
|
* reftex.el (reftex-compile-variables): respect new structure of
`reftex-index-macro'
(reftex-compile-variables): Use the changed structure of
`reftex-label-alist'.
* reftex-vars.el (reftex-index-math-format,
(reftex-toc-max-level): New option.
reftex-index-phrases-search-whole-words,
reftex-index-phrases-case-fold-search,
reftex-index-phrases-skip-indexed-matches,
reftex-index-phrases-wrap-long-lines,
reftex-index-phrases-sort-prefers-entry,
reftex-index-phrases-sort-in-blocks): New options.
(reftex-index-macros): Option structure changed.
(reftex-index-macros-builtin): Added `repeat' item to each entry.
(reftex-label-alist): Additional item in each entry to specify if
the environment should be listed in the TOC.
(eval-when-compile (require 'cl)) added.
* reftex-index.el (reftex-index-selection-or-word): No longer
deals with "repeat".
(reftex-index): "repeat property in `reftex-index-macro-alist' is
now used.
(reftex-index-phrases-comment-regexp,
reftex-index-phrases-macrodef-regexp,
reftex-index-phrases-phrase-regexp1,
reftex-index-phrases-phrase-regexp2,
reftex-index-phrases-phrase-regexp12, reftex-index-phrases-help):
New constants.
(reftex-index-phrases-macro-data, reftex-index-phrases-files,
reftex-index-phrases-font-lock-keywords,
reftex-index-phrases-font-lock-defaults, reftex-index-phrases-map,
reftex-index-phrases-restrict-file): New variables.
(reftex-index-phrase-selection-or-word,
reftex-index-visit-phrases-buffer,
reftex-index-initialize-phrases-buffer,
reftex-index-phrases-save-and-return, reftex-index-phrases-mode,
reftex-index-next-phrase, reftex-index-this-phrase,
reftex-index-all-phrases, reftex-index-region-phrases,
reftex-index-phrases-parse-header,
reftex-index-phrases-toggle-restricted, reftex-index-new-phrase,
reftex-index-find-next-conflict-phrase, reftex-index-phrases-info,
reftex-index-phrases-set-macro-key, reftex-index-sort-phrases,
reftex-compare-phrase-lines, reftex-index-make-phrase-regexp,
reftex-index-simplify-phrase, reftex-index-phrases-find-dup-re,
reftex-index-make-replace-string,
reftex-query-index-phrase-globally, reftex-query-index-phrase,
reftex-index-phrase-match-is-indexed,
reftex-index-phrases-fixup-line,
reftex-index-phrases-replace-space,
reftex-index-select-phrases-macro): New functions.
(reftex-index-globalize, reftex-index-globally): functions removed
(eval-when-compile (require 'cl)) added.
* reftex-toc.el (reftex-toc-mode): Create new indicator for max
level.
(reftex-toc-max-level-indicator): New variable.
(reftex-toc-max-level): New command.
(reftex-toc-map): New keybinding `t'.
(reftex-toc-help): Constant updated.
(eval-when-compile (require 'cl)) added.
* reftex-ref.el (reftex-offer-label-menu): Prefix to `t' command key
can change `reftex-toc-max-level'
(eval-when-compile (require 'cl)) added.
* reftex-sel (reftex-insert-docstruct): Respect
`reftex-toc-max-level'
(eval-when-compile (require 'cl)) added.
* reftex-auc.el (eval-when-compile (require 'cl)) added.
* reftex-vcr.el (eval-when-compile (require 'cl)) added.
* reftex-cite.el (reftex-citep, reftex-citet): New commands.
(reftex-citation, reftex-do-citation,
reftex-figure-out-cite-format): Additional argument FORMAT-KEY to
preselect a citation format.
(eval-when-compile (require 'cl)) added.
* reftex-parse.el (reftex-context-substring): Optional parameter
to-end
(reftex-section-info): Deal with environment matches.
(eval-when-compile (require 'cl)) added.
* reftex-global.el (eval-when-compile (require 'cl)) added.
1999-12-15 17:02:38 +00:00
|
|
|
(setq reftex-toc-max-level-indicator
|
2003-08-11 12:27:02 +00:00
|
|
|
(if arg (int-to-string reftex-toc-max-level) "ALL"))
|
* reftex.el (reftex-compile-variables): respect new structure of
`reftex-index-macro'
(reftex-compile-variables): Use the changed structure of
`reftex-label-alist'.
* reftex-vars.el (reftex-index-math-format,
(reftex-toc-max-level): New option.
reftex-index-phrases-search-whole-words,
reftex-index-phrases-case-fold-search,
reftex-index-phrases-skip-indexed-matches,
reftex-index-phrases-wrap-long-lines,
reftex-index-phrases-sort-prefers-entry,
reftex-index-phrases-sort-in-blocks): New options.
(reftex-index-macros): Option structure changed.
(reftex-index-macros-builtin): Added `repeat' item to each entry.
(reftex-label-alist): Additional item in each entry to specify if
the environment should be listed in the TOC.
(eval-when-compile (require 'cl)) added.
* reftex-index.el (reftex-index-selection-or-word): No longer
deals with "repeat".
(reftex-index): "repeat property in `reftex-index-macro-alist' is
now used.
(reftex-index-phrases-comment-regexp,
reftex-index-phrases-macrodef-regexp,
reftex-index-phrases-phrase-regexp1,
reftex-index-phrases-phrase-regexp2,
reftex-index-phrases-phrase-regexp12, reftex-index-phrases-help):
New constants.
(reftex-index-phrases-macro-data, reftex-index-phrases-files,
reftex-index-phrases-font-lock-keywords,
reftex-index-phrases-font-lock-defaults, reftex-index-phrases-map,
reftex-index-phrases-restrict-file): New variables.
(reftex-index-phrase-selection-or-word,
reftex-index-visit-phrases-buffer,
reftex-index-initialize-phrases-buffer,
reftex-index-phrases-save-and-return, reftex-index-phrases-mode,
reftex-index-next-phrase, reftex-index-this-phrase,
reftex-index-all-phrases, reftex-index-region-phrases,
reftex-index-phrases-parse-header,
reftex-index-phrases-toggle-restricted, reftex-index-new-phrase,
reftex-index-find-next-conflict-phrase, reftex-index-phrases-info,
reftex-index-phrases-set-macro-key, reftex-index-sort-phrases,
reftex-compare-phrase-lines, reftex-index-make-phrase-regexp,
reftex-index-simplify-phrase, reftex-index-phrases-find-dup-re,
reftex-index-make-replace-string,
reftex-query-index-phrase-globally, reftex-query-index-phrase,
reftex-index-phrase-match-is-indexed,
reftex-index-phrases-fixup-line,
reftex-index-phrases-replace-space,
reftex-index-select-phrases-macro): New functions.
(reftex-index-globalize, reftex-index-globally): functions removed
(eval-when-compile (require 'cl)) added.
* reftex-toc.el (reftex-toc-mode): Create new indicator for max
level.
(reftex-toc-max-level-indicator): New variable.
(reftex-toc-max-level): New command.
(reftex-toc-map): New keybinding `t'.
(reftex-toc-help): Constant updated.
(eval-when-compile (require 'cl)) added.
* reftex-ref.el (reftex-offer-label-menu): Prefix to `t' command key
can change `reftex-toc-max-level'
(eval-when-compile (require 'cl)) added.
* reftex-sel (reftex-insert-docstruct): Respect
`reftex-toc-max-level'
(eval-when-compile (require 'cl)) added.
* reftex-auc.el (eval-when-compile (require 'cl)) added.
* reftex-vcr.el (eval-when-compile (require 'cl)) added.
* reftex-cite.el (reftex-citep, reftex-citet): New commands.
(reftex-citation, reftex-do-citation,
reftex-figure-out-cite-format): Additional argument FORMAT-KEY to
preselect a citation format.
(eval-when-compile (require 'cl)) added.
* reftex-parse.el (reftex-context-substring): Optional parameter
to-end
(reftex-section-info): Deal with environment matches.
(eval-when-compile (require 'cl)) added.
* reftex-global.el (eval-when-compile (require 'cl)) added.
1999-12-15 17:02:38 +00:00
|
|
|
(reftex-toc-revert))
|
1999-08-16 07:42:41 +00:00
|
|
|
(defun reftex-toc-view-line ()
|
|
|
|
"View document location in other window."
|
|
|
|
(interactive)
|
2003-08-11 12:27:02 +00:00
|
|
|
(reftex-toc-dframe-p nil 'error)
|
1999-08-16 07:42:41 +00:00
|
|
|
(reftex-toc-visit-location))
|
|
|
|
(defun reftex-toc-goto-line-and-hide ()
|
2011-11-17 13:16:44 +01:00
|
|
|
"Go to document location in other window. Hide the TOC window."
|
1999-08-16 07:42:41 +00:00
|
|
|
(interactive)
|
2003-08-11 12:27:02 +00:00
|
|
|
(reftex-toc-dframe-p nil 'error)
|
1999-08-16 07:42:41 +00:00
|
|
|
(reftex-toc-visit-location 'hide))
|
|
|
|
(defun reftex-toc-goto-line ()
|
2011-11-17 13:16:44 +01:00
|
|
|
"Go to document location in other window. TOC window stays."
|
1999-08-16 07:42:41 +00:00
|
|
|
(interactive)
|
2003-08-11 12:27:02 +00:00
|
|
|
(reftex-toc-dframe-p nil 'error)
|
1999-08-16 07:42:41 +00:00
|
|
|
(reftex-toc-visit-location t))
|
|
|
|
(defun reftex-toc-mouse-goto-line-and-hide (ev)
|
2011-11-17 13:16:44 +01:00
|
|
|
"Go to document location in other window. Hide the TOC window."
|
1999-08-16 07:42:41 +00:00
|
|
|
(interactive "e")
|
|
|
|
(mouse-set-point ev)
|
2003-08-11 12:27:02 +00:00
|
|
|
(reftex-toc-dframe-p nil 'error)
|
1999-08-16 07:42:41 +00:00
|
|
|
(reftex-toc-visit-location 'hide))
|
|
|
|
(defun reftex-toc-show-calling-point ()
|
2011-11-17 13:16:44 +01:00
|
|
|
"Show point where `reftex-toc' was called from."
|
1999-08-16 07:42:41 +00:00
|
|
|
(interactive)
|
2003-08-11 12:27:02 +00:00
|
|
|
(reftex-toc-dframe-p nil 'error)
|
1999-08-16 07:42:41 +00:00
|
|
|
(let ((this-window (selected-window)))
|
|
|
|
(unwind-protect
|
2003-08-11 12:27:02 +00:00
|
|
|
(progn
|
|
|
|
(switch-to-buffer-other-window
|
|
|
|
(marker-buffer reftex-toc-return-marker))
|
|
|
|
(goto-char (marker-position reftex-toc-return-marker))
|
|
|
|
(recenter '(4)))
|
1999-08-16 07:42:41 +00:00
|
|
|
(select-window this-window))))
|
|
|
|
(defun reftex-toc-quit ()
|
2011-11-17 13:16:44 +01:00
|
|
|
"Hide the TOC window and do not move point.
|
|
|
|
If the TOC window is the only window on the dedicated TOC frame, the frame
|
2003-08-11 12:27:02 +00:00
|
|
|
is destroyed."
|
1999-08-16 07:42:41 +00:00
|
|
|
(interactive)
|
2003-08-11 12:27:02 +00:00
|
|
|
(if (and (one-window-p)
|
|
|
|
(reftex-toc-dframe-p)
|
|
|
|
(> (length (frame-list)) 1))
|
|
|
|
(delete-frame)
|
|
|
|
(or (one-window-p) (delete-window))
|
|
|
|
(switch-to-buffer (marker-buffer reftex-toc-return-marker))
|
|
|
|
(reftex-re-enlarge)
|
|
|
|
(goto-char (or (marker-position reftex-toc-return-marker) (point)))))
|
1999-08-16 07:42:41 +00:00
|
|
|
(defun reftex-toc-quit-and-kill ()
|
|
|
|
"Kill the *toc* buffer."
|
|
|
|
(interactive)
|
|
|
|
(kill-buffer "*toc*")
|
|
|
|
(or (one-window-p) (delete-window))
|
|
|
|
(switch-to-buffer (marker-buffer reftex-toc-return-marker))
|
|
|
|
(reftex-re-enlarge)
|
|
|
|
(goto-char (marker-position reftex-toc-return-marker)))
|
|
|
|
(defun reftex-toc-display-index (&optional arg)
|
|
|
|
"Display the index buffer for the current document.
|
|
|
|
This works just like `reftex-display-index' from a LaTeX buffer.
|
|
|
|
With prefix arg 1, restrict index to the section at point."
|
|
|
|
(interactive "P")
|
2003-08-11 12:27:02 +00:00
|
|
|
(reftex-toc-dframe-p nil 'error)
|
1999-08-16 07:42:41 +00:00
|
|
|
(let ((data (get-text-property (point) :data))
|
2003-08-11 12:27:02 +00:00
|
|
|
(docstruct (symbol-value reftex-docstruct-symbol))
|
|
|
|
bor eor restr)
|
1999-08-16 07:42:41 +00:00
|
|
|
(when (equal arg 2)
|
|
|
|
(setq bor (reftex-last-assoc-before-elt 'toc data docstruct)
|
2003-08-11 12:27:02 +00:00
|
|
|
eor (assoc 'toc (cdr (memq bor docstruct)))
|
|
|
|
restr (list (nth 6 bor) bor eor)))
|
1999-08-16 07:42:41 +00:00
|
|
|
(reftex-toc-goto-line)
|
|
|
|
(reftex-display-index (if restr nil arg) restr)))
|
2003-08-11 12:27:02 +00:00
|
|
|
|
|
|
|
;; Rescanning the document and rebuilding the TOC buffer.
|
2015-04-27 12:59:11 -04:00
|
|
|
(defun reftex-toc-rescan (&rest _)
|
1999-08-16 07:42:41 +00:00
|
|
|
"Regenerate the *toc* buffer by reparsing file of section at point."
|
|
|
|
(interactive)
|
2009-08-22 19:29:18 +00:00
|
|
|
(if (and reftex-enable-partial-scans
|
2003-08-11 12:27:02 +00:00
|
|
|
(null current-prefix-arg))
|
1999-08-16 07:42:41 +00:00
|
|
|
(let* ((data (get-text-property (point) :data))
|
2003-08-11 12:27:02 +00:00
|
|
|
(what (car data))
|
|
|
|
(file (cond ((eq what 'toc) (nth 3 data))
|
|
|
|
((memq what '(eof bof file-error)) (nth 1 data))
|
|
|
|
((stringp what) (nth 3 data))
|
|
|
|
((eq what 'index) (nth 3 data))))
|
|
|
|
(line (+ (count-lines (point-min) (point)) (if (bolp) 1 0))))
|
1999-08-16 07:42:41 +00:00
|
|
|
(if (not file)
|
|
|
|
(error "Don't know which file to rescan. Try `C-u r'")
|
2003-08-11 12:27:02 +00:00
|
|
|
(put 'reftex-toc :reftex-line line)
|
1999-08-16 07:42:41 +00:00
|
|
|
(switch-to-buffer-other-window
|
|
|
|
(reftex-get-file-buffer-force file))
|
2003-08-11 12:27:02 +00:00
|
|
|
(setq current-prefix-arg '(4))
|
2015-04-27 12:59:11 -04:00
|
|
|
(let ((reftex--rebuilding-toc t))
|
2003-08-11 12:27:02 +00:00
|
|
|
(reftex-toc))))
|
1999-08-16 07:42:41 +00:00
|
|
|
(reftex-toc-Rescan))
|
|
|
|
(reftex-kill-temporary-buffers))
|
2003-08-11 12:27:02 +00:00
|
|
|
|
2015-04-27 12:59:11 -04:00
|
|
|
(defun reftex-toc-Rescan (&rest _)
|
1999-08-16 07:42:41 +00:00
|
|
|
"Regenerate the *toc* buffer by reparsing the entire document."
|
|
|
|
(interactive)
|
2002-08-27 09:58:05 +00:00
|
|
|
(let* ((line (+ (count-lines (point-min) (point)) (if (bolp) 1 0))))
|
|
|
|
(put 'reftex-toc :reftex-line line))
|
1999-08-16 07:42:41 +00:00
|
|
|
(switch-to-buffer-other-window
|
|
|
|
(reftex-get-file-buffer-force reftex-last-toc-file))
|
|
|
|
(setq current-prefix-arg '(16))
|
2015-04-27 12:59:11 -04:00
|
|
|
(let ((reftex--rebuilding-toc t))
|
2002-08-27 09:58:05 +00:00
|
|
|
(reftex-toc)))
|
2003-08-11 12:27:02 +00:00
|
|
|
|
2015-04-27 12:59:11 -04:00
|
|
|
(defun reftex-toc-revert (&rest _)
|
2011-11-17 13:16:44 +01:00
|
|
|
"Regenerate the TOC from the internal lists."
|
1999-08-16 07:42:41 +00:00
|
|
|
(interactive)
|
2009-08-22 19:29:18 +00:00
|
|
|
(let ((unsplittable
|
2003-08-11 12:27:02 +00:00
|
|
|
(if (fboundp 'frame-property)
|
|
|
|
(frame-property (selected-frame) 'unsplittable)
|
2013-07-31 10:52:26 +04:00
|
|
|
(frame-parameter nil 'unsplittable)))
|
2015-04-27 12:59:11 -04:00
|
|
|
(reftex--rebuilding-toc t))
|
2003-08-11 12:27:02 +00:00
|
|
|
(if unsplittable
|
|
|
|
(switch-to-buffer
|
|
|
|
(reftex-get-file-buffer-force reftex-last-toc-file))
|
|
|
|
(switch-to-buffer-other-window
|
|
|
|
(reftex-get-file-buffer-force reftex-last-toc-file))))
|
1999-08-16 07:42:41 +00:00
|
|
|
(reftex-erase-buffer "*toc*")
|
|
|
|
(setq current-prefix-arg nil)
|
2015-04-27 12:59:11 -04:00
|
|
|
(reftex-toc t t))
|
2003-08-11 12:27:02 +00:00
|
|
|
|
2015-04-27 12:59:11 -04:00
|
|
|
(defun reftex-toc-external (&rest _)
|
1999-08-16 07:42:41 +00:00
|
|
|
"Switch to table of contents of an external document."
|
|
|
|
(interactive)
|
2003-08-11 12:27:02 +00:00
|
|
|
(reftex-toc-dframe-p nil 'error)
|
1999-08-16 07:42:41 +00:00
|
|
|
(let* ((old-buf (current-buffer))
|
2003-08-11 12:27:02 +00:00
|
|
|
(xr-alist (get-text-property 1 'xr-alist))
|
|
|
|
(xr-index (reftex-select-external-document
|
|
|
|
xr-alist 0)))
|
1999-08-16 07:42:41 +00:00
|
|
|
(switch-to-buffer-other-window (or (reftex-get-file-buffer-force
|
2003-08-11 12:27:02 +00:00
|
|
|
(cdr (nth xr-index xr-alist)))
|
|
|
|
(error "Cannot switch document")))
|
1999-08-16 07:42:41 +00:00
|
|
|
(reftex-toc)
|
|
|
|
(if (equal old-buf (current-buffer))
|
2003-08-11 12:27:02 +00:00
|
|
|
(message "")
|
1999-08-16 07:42:41 +00:00
|
|
|
(message "Switched document"))))
|
|
|
|
|
2001-06-08 08:43:20 +00:00
|
|
|
(defun reftex-toc-jump (arg)
|
|
|
|
"Jump to a specific section. E.g. '3 z' jumps to section 3.
|
2011-11-17 13:16:44 +01:00
|
|
|
Useful for large TOCs."
|
2001-06-08 08:43:20 +00:00
|
|
|
(interactive "P")
|
|
|
|
(goto-char (point-min))
|
|
|
|
(re-search-forward
|
|
|
|
(concat "^ *" (number-to-string (if (numberp arg) arg 1)) " ")
|
|
|
|
nil t)
|
|
|
|
(beginning-of-line))
|
|
|
|
|
2003-08-11 12:27:02 +00:00
|
|
|
;; Promotion/Demotion stuff
|
|
|
|
|
2015-04-27 12:59:11 -04:00
|
|
|
(defvar reftex--pro-or-de)
|
|
|
|
(defvar reftex--start-line)
|
|
|
|
(defvar reftex--mark-line)
|
2005-09-16 10:05:32 +00:00
|
|
|
|
2015-04-27 12:59:11 -04:00
|
|
|
(defun reftex-toc-demote (&optional _arg)
|
2003-08-11 12:27:02 +00:00
|
|
|
"Demote section at point. If region is active, apply to all in region."
|
2015-04-27 12:59:11 -04:00
|
|
|
(interactive)
|
2003-08-11 12:27:02 +00:00
|
|
|
(reftex-toc-do-promote 1))
|
2015-04-27 12:59:11 -04:00
|
|
|
(defun reftex-toc-promote (&optional _arg)
|
2003-08-11 12:27:02 +00:00
|
|
|
"Promote section at point. If region is active, apply to all in region."
|
2015-04-27 12:59:11 -04:00
|
|
|
(interactive)
|
2003-08-11 12:27:02 +00:00
|
|
|
(reftex-toc-do-promote -1))
|
|
|
|
(defun reftex-toc-do-promote (delta)
|
2011-11-17 13:16:44 +01:00
|
|
|
"Workhorse for `reftex-toc-promote' and `reftex-toc-demote'.
|
2003-08-11 12:27:02 +00:00
|
|
|
Changes the level of sections in the current region, or just the section at
|
|
|
|
point."
|
|
|
|
;; We should not do anything unless we are sure this is going to work for
|
|
|
|
;; each section in the region. Therefore we first collect information and
|
|
|
|
;; test.
|
2015-04-27 12:59:11 -04:00
|
|
|
(let* ((reftex--start-line (+ (count-lines (point-min) (point))
|
|
|
|
(if (bolp) 1 0)))
|
|
|
|
(reftex--mark-line
|
|
|
|
(if (reftex-region-active-p)
|
|
|
|
(save-excursion (goto-char (mark))
|
|
|
|
(+ (count-lines (point-min) (point))
|
|
|
|
(if (bolp) 1 0)))))
|
2003-08-11 12:27:02 +00:00
|
|
|
(start-pos (point))
|
2015-04-27 12:59:11 -04:00
|
|
|
(reftex--pro-or-de (if (> delta 0) "de" "pro"))
|
2010-11-03 01:03:42 -07:00
|
|
|
beg end entries data sections nsec msg)
|
2003-08-11 12:27:02 +00:00
|
|
|
(setq msg
|
|
|
|
(catch 'exit
|
|
|
|
(if (reftex-region-active-p)
|
2011-11-14 15:59:56 -08:00
|
|
|
;; A region is dangerous, check if we have a brand new scan,
|
2003-08-11 12:27:02 +00:00
|
|
|
;; to make sure we are not missing any section statements.
|
|
|
|
(if (not (reftex-toc-check-docstruct))
|
|
|
|
(reftex-toc-load-all-files-for-promotion) ;; exits
|
|
|
|
(setq beg (min (point) (mark))
|
|
|
|
end (max (point) (mark))))
|
|
|
|
(setq beg (point) end (point)))
|
|
|
|
(goto-char beg)
|
|
|
|
(while (and (setq data (get-text-property (point) :data))
|
|
|
|
(<= (point) end))
|
|
|
|
(if (eq (car data) 'toc) (push (cons data (point)) entries))
|
|
|
|
(goto-char (or (next-single-property-change (point) :data)
|
|
|
|
(point-max))))
|
|
|
|
(setq entries (nreverse entries))
|
|
|
|
;; Get the relevant section numbers, for an informative message
|
|
|
|
(goto-char start-pos)
|
|
|
|
(setq sections (reftex-toc-extract-section-number (car entries)))
|
|
|
|
(if (> (setq nsec (length entries)) 1)
|
2009-08-22 19:29:18 +00:00
|
|
|
(setq sections
|
2003-08-11 12:27:02 +00:00
|
|
|
(concat sections "-"
|
|
|
|
(reftex-toc-extract-section-number
|
|
|
|
(nth (1- nsec) entries)))))
|
|
|
|
;; Run through the list and prepare the changes.
|
2010-11-06 12:11:38 -07:00
|
|
|
(setq entries (mapcar
|
|
|
|
(lambda (e) (reftex-toc-promote-prepare e delta))
|
|
|
|
entries))
|
2003-08-11 12:27:02 +00:00
|
|
|
;; Ask for permission
|
|
|
|
(if (or (not reftex-toc-confirm-promotion) ; never confirm
|
|
|
|
(and (integerp reftex-toc-confirm-promotion) ; confirm if many
|
|
|
|
(< nsec reftex-toc-confirm-promotion))
|
|
|
|
(yes-or-no-p ; ask
|
|
|
|
(format "%s %d toc-entr%s (section%s %s)? "
|
|
|
|
(if (< delta 0) "Promote" "Demote")
|
|
|
|
nsec
|
|
|
|
(if (= 1 nsec) "y" "ies")
|
|
|
|
(if (= 1 nsec) "" "s")
|
|
|
|
sections)))
|
|
|
|
nil ; we have permission, do nothing
|
|
|
|
(error "Abort")) ; abort, we don't have permission
|
|
|
|
;; Do the changes
|
2007-10-12 06:34:33 +00:00
|
|
|
(mapc 'reftex-toc-promote-action entries)
|
2003-08-11 12:27:02 +00:00
|
|
|
;; Rescan the document and rebuilt the toc buffer
|
|
|
|
(save-window-excursion
|
|
|
|
(reftex-toc-Rescan))
|
2015-04-27 12:59:11 -04:00
|
|
|
(reftex-toc-restore-region reftex--start-line reftex--mark-line)
|
2009-08-22 19:29:18 +00:00
|
|
|
(message "%d section%s %smoted"
|
2015-04-27 12:59:11 -04:00
|
|
|
nsec (if (= 1 nsec) "" "s") reftex--pro-or-de)
|
2003-08-11 12:27:02 +00:00
|
|
|
nil))
|
2007-12-08 01:02:29 +00:00
|
|
|
(if msg (progn (ding) (message "%s" msg)))))
|
2003-08-11 12:27:02 +00:00
|
|
|
|
|
|
|
|
|
|
|
(defun reftex-toc-restore-region (point-line &optional mark-line)
|
2015-04-27 12:59:11 -04:00
|
|
|
(let ((mpos
|
|
|
|
(when mark-line
|
|
|
|
(goto-char (point-min))
|
|
|
|
(forward-line (1- mark-line))
|
|
|
|
(point))))
|
2010-11-03 01:03:42 -07:00
|
|
|
(when point-line
|
|
|
|
(goto-char (point-min))
|
|
|
|
(forward-line (1- point-line)))
|
2015-04-27 12:59:11 -04:00
|
|
|
(when mpos
|
2010-11-03 01:03:42 -07:00
|
|
|
(set-mark mpos)
|
|
|
|
(if (featurep 'xemacs)
|
|
|
|
(zmacs-activate-region)
|
|
|
|
(setq mark-active t
|
|
|
|
deactivate-mark nil)))))
|
2003-08-11 12:27:02 +00:00
|
|
|
|
2010-11-06 12:11:38 -07:00
|
|
|
(defun reftex-toc-promote-prepare (x delta)
|
2011-11-17 13:16:44 +01:00
|
|
|
"Look at a TOC entry and see if we could pro/demote it.
|
|
|
|
This function prepares everything for the change, but does not do it.
|
2003-08-11 12:27:02 +00:00
|
|
|
The return value is a list with information needed when doing the
|
2010-11-06 12:11:38 -07:00
|
|
|
promotion/demotion later. DELTA is the level change."
|
2003-08-11 12:27:02 +00:00
|
|
|
(let* ((data (car x))
|
|
|
|
(toc-point (cdr x))
|
|
|
|
(marker (nth 4 data))
|
|
|
|
(literal (nth 7 data))
|
|
|
|
(load nil)
|
|
|
|
(name nil)
|
|
|
|
;; Here follows some paranoid code to make very sure we are not
|
|
|
|
;; going to break anything
|
2015-04-27 12:59:11 -04:00
|
|
|
(_
|
2003-08-11 12:27:02 +00:00
|
|
|
(if (and (markerp marker) (marker-buffer marker))
|
|
|
|
;; Buffer is still live and we have the marker.
|
|
|
|
(progn
|
2010-02-27 20:22:44 -05:00
|
|
|
(with-current-buffer (marker-buffer marker)
|
2003-08-11 12:27:02 +00:00
|
|
|
;; Goto the buffer and check of section is unchanged
|
|
|
|
(goto-char (marker-position marker))
|
|
|
|
(if (looking-at (regexp-quote literal))
|
|
|
|
;; OK, get the makro name
|
|
|
|
(progn
|
|
|
|
(beginning-of-line 1)
|
|
|
|
(if (looking-at reftex-section-regexp)
|
|
|
|
(setq name (reftex-match-string 2))
|
2009-09-24 01:37:14 +00:00
|
|
|
(error "Something is wrong! Contact maintainer!")))
|
2003-08-11 12:27:02 +00:00
|
|
|
;; Section has changed, request scan and loading
|
|
|
|
;; We use a variable to delay until after the safe-exc.
|
2010-11-02 20:49:04 -07:00
|
|
|
;; because otherwise we lose the region.
|
2003-08-11 12:27:02 +00:00
|
|
|
(setq load t)))
|
|
|
|
;; Scan document and load all files, this exits command
|
|
|
|
(if load (reftex-toc-load-all-files-for-promotion))) ; exits
|
|
|
|
;; We don't have a live marker: scan and load files.
|
|
|
|
(reftex-toc-load-all-files-for-promotion)))
|
|
|
|
(level (cdr (assoc name reftex-section-levels-all)))
|
2015-04-27 12:59:11 -04:00
|
|
|
(_ (if (not (integerp level))
|
|
|
|
(progn
|
|
|
|
(goto-char toc-point)
|
|
|
|
(error "Cannot %smote special sections" reftex--pro-or-de))))
|
2003-08-11 12:27:02 +00:00
|
|
|
(newlevel (if (>= level 0) (+ delta level) (- level delta)))
|
2015-04-27 12:59:11 -04:00
|
|
|
(_ (if (or (and (>= level 0) (= newlevel -1))
|
|
|
|
(and (< level 0) (= newlevel 0)))
|
|
|
|
(error "Cannot %smote \\%s" reftex--pro-or-de name)))
|
2003-08-11 12:27:02 +00:00
|
|
|
(newname (reftex-toc-newhead-from-alist newlevel name
|
|
|
|
reftex-section-levels-all)))
|
|
|
|
(if (and name newname)
|
|
|
|
(list data name newname toc-point)
|
|
|
|
(goto-char toc-point)
|
2015-04-27 12:59:11 -04:00
|
|
|
(error "Cannot %smote \\%s" reftex--pro-or-de name))))
|
2003-08-11 12:27:02 +00:00
|
|
|
|
|
|
|
(defun reftex-toc-promote-action (x)
|
2011-11-17 13:16:44 +01:00
|
|
|
"Change the level of a TOC entry.
|
2015-04-27 12:59:11 -04:00
|
|
|
`reftex--pro-or-de' is assumed to be dynamically scoped into this function."
|
2003-08-11 12:27:02 +00:00
|
|
|
(let* ((data (car x))
|
|
|
|
(name (nth 1 x))
|
|
|
|
(newname (nth 2 x))
|
|
|
|
(marker (nth 4 data)))
|
* textmodes/two-column.el (2C-split):
* textmodes/texnfo-upd.el (texinfo-multi-file-included-list):
* textmodes/tex-mode.el (tex-set-buffer-directory):
* textmodes/spell.el (spell-region, spell-string):
* textmodes/reftex.el (reftex-erase-buffer):
(reftex-get-file-buffer-force, reftex-kill-temporary-buffers):
* textmodes/reftex-toc.el (reftex-toc-promote-action):
* textmodes/reftex-sel.el (reftex-get-offset, reftex-insert-docstruct)
(reftex-select-item):
* textmodes/reftex-ref.el (reftex-label-info-update)
(reftex-offer-label-menu):
* textmodes/reftex-index.el (reftex-index-change-entry)
(reftex-index-phrases-info):
* textmodes/reftex-global.el (reftex-create-tags-file)
(reftex-save-all-document-buffers, reftex-ensure-write-access):
* textmodes/reftex-dcr.el (reftex-echo-ref, reftex-echo-cite)
(reftex-view-crossref-from-bibtex):
* textmodes/reftex-cite.el (reftex-bibtex-selection-callback)
(reftex-extract-bib-entries-from-thebibliography)
(reftex-all-used-citation-keys, reftex-create-bibtex-file):
* textmodes/refbib.el (r2b-capitalize-title):
(r2b-convert-buffer, r2b-help):
* textmodes/page-ext.el (pages-directory)
(pages-directory-goto-with-mouse):
* textmodes/bibtex.el (bibtex-validate-globally):
* textmodes/bib-mode.el (bib-capitalize-title):
* textmodes/artist.el (artist-clear-buffer, artist-system):
* progmodes/xscheme.el (global-set-scheme-interaction-buffer):
(local-set-scheme-interaction-buffer, xscheme-process-filter)
(verify-xscheme-buffer, xscheme-enter-interaction-mode)
(xscheme-enter-debugger-mode, xscheme-debugger-mode-p)
(xscheme-send-control-g-interrupt, xscheme-start-process)
(xscheme-process-sentinel, xscheme-cd):
* progmodes/verilog-mode.el (verilog-read-always-signals)
(verilog-set-define, verilog-getopt-file)
(verilog-module-inside-filename-p):
* progmodes/sh-script.el:
* progmodes/python.el (python-pdbtrack-get-source-buffer)
(python-pdbtrack-grub-for-buffer, python-execute-file):
* progmodes/octave-inf.el (inferior-octave):
* progmodes/idlwave.el (idlwave-scan-user-lib-files)
(idlwave-shell-compile-helper-routines, idlwave-set-local)
(idlwave-display-completion-list-xemacs, idlwave-list-abbrevs)
(idlwave-display-completion-list-emacs, idlwave-list-load-path-shadows)
(idlwave-completion-fontify-classes, idlwave-display-calling-sequence):
* progmodes/idlw-shell.el (idlwave-shell-examine-display-clear)
(idlwave-shell-filter, idlwave-shell-examine-highlight)
(idlwave-shell-sentinel, idlwave-shell-filter-directory)
(idlwave-shell-display-line, idlwave-shell-set-bp-in-module)
(idlwave-shell-examine-display, idlwave-shell-run-region)
(idlwave-shell-filter-bp, idlwave-shell-save-and-action)
(idlwave-shell-sources-filter, idlwave-shell-goto-next-error):
* progmodes/idlw-help.el (idlwave-help-get-special-help)
(idlwave-help-get-help-buffer):
* progmodes/gud.el (gud-basic-call, gud-find-class)
(gud-tooltip-activate-mouse-motions-if-enabled):
* progmodes/gdb-mi.el (gdb-mouse-toggle-breakpoint-fringe):
* progmodes/ebrowse.el (ebrowse-member-table, ebrowse-save-tree-as)
(ebrowse-view-exit-fn, ebrowse-tags-list-members-in-file)
(ebrowse-tags-next-file):
* progmodes/ebnf2ps.el (ebnf-generate-eps, ebnf-generate-eps)
(ebnf-eps-production-list, ebnf-begin-file, ebnf-log)
(ebnf-eps-finish-and-write):
* progmodes/cpp.el (cpp-edit-save):
* progmodes/cperl-mode.el (cperl-pod-to-manpage):
* progmodes/cc-defs.el (c-emacs-features):
* progmodes/antlr-mode.el (antlr-invalidate-context-cache)
(antlr-directory-dependencies):
* progmodes/ada-xref.el (ada-gnat-parse-gpr, ada-get-ali-file-name)
(ada-run-application, ada-find-in-src-path, ada-goto-parent)
(ada-find-any-references, ada-make-filename-from-adaname)
(ada-make-body-gnatstub):
* obsolete/rnews.el (news-list-news-groups):
* obsolete/resume.el (resume-suspend-hook,resume-write-buffer-to-file):
* obsolete/iso-acc.el (iso-acc-minibuf-setup):
* net/rcirc.el (rcirc-debug):
* net/newst-treeview.el (newsticker--treeview-list-add-item)
(newsticker--treeview-list-clear, newsticker-treeview-browse-url)
(newsticker--treeview-list-update-faces, newsticker-treeview-save)
(newsticker--treeview-item-show-text, newsticker--treeview-item-show)
(newsticker--treeview-tree-update-tag,newsticker--treeview-buffer-init)
(newsticker-treeview-show-item, newsticker--treeview-unfold-node)
(newsticker--treeview-list-clear-highlight)
(newsticker--treeview-list-update-highlight)
(newsticker--treeview-list-highlight-start)
(newsticker--treeview-tree-update-highlight)
(newsticker--treeview-get-selected-item)
(newsticker-treeview-mark-list-items-old)
(newsticker--treeview-set-current-node):
* net/newst-plainview.el (newsticker--buffer-set-uptodate):
* net/newst-backend.el (newsticker--get-news-by-funcall)
(newsticker--get-news-by-wget, newsticker--image-get)
(newsticker--image-sentinel):
* net/mairix.el (mairix-rmail-fetch-field, mairix-gnus-fetch-field):
* net/eudcb-ph.el (eudc-ph-do-request, eudc-ph-open-session):
(eudc-ph-close-session):
* net/eudc.el (eudc-save-options):
* language/thai-word.el (thai-update-word-table):
* language/japan-util.el (japanese-string-conversion):
* international/titdic-cnv.el (tsang-quick-converter)
(ziranma-converter, ctlau-converter):
* international/mule-cmds.el (describe-language-environment):
* international/ja-dic-cnv.el (skkdic-convert-okuri-ari)
(skkdic-convert-postfix, skkdic-convert-prefix):
(skkdic-convert-okuri-nasi, skkdic-convert):
* emacs-lisp/re-builder.el (reb-update-overlays):
* emacs-lisp/pp.el (pp-to-string, pp-display-expression):
* emacs-lisp/gulp.el (gulp-send-requests):
* emacs-lisp/find-gc.el (trace-call-tree):
* emacs-lisp/eieio-opt.el (eieio-browse, eieio-describe-class)
(eieio-describe-generic):
* emacs-lisp/eieio-base.el (eieio-persistent-read):
* emacs-lisp/edebug.el (edebug-outside-excursion):
* emacs-lisp/debug.el (debugger-make-xrefs):
* emacs-lisp/cust-print.el (custom-prin1-to-string):
* emacs-lisp/chart.el (chart-new-buffer):
* emacs-lisp/authors.el (authors-scan-el, authors-scan-change-log):
Use with-current-buffer.
* textmodes/artist.el (artist-system): Don't call
copy-sequence on a fresh string.
* progmodes/idlw-shell.el (easymenu setup): Use dolist.
2009-10-31 02:38:34 +00:00
|
|
|
(with-current-buffer (marker-buffer marker)
|
2003-08-11 12:27:02 +00:00
|
|
|
(goto-char (marker-position marker))
|
2012-11-25 06:05:34 +01:00
|
|
|
(if (looking-at (concat "\\([ \t]*" reftex-section-pre-regexp "\\)" (regexp-quote name)))
|
2003-08-11 12:27:02 +00:00
|
|
|
(replace-match (concat "\\1" newname))
|
2015-04-27 12:59:11 -04:00
|
|
|
(error "Fatal error during %smotion" reftex--pro-or-de)))))
|
2003-08-11 12:27:02 +00:00
|
|
|
|
|
|
|
(defun reftex-toc-extract-section-number (entry)
|
2011-11-17 13:16:44 +01:00
|
|
|
"Get the numbering of a TOC entry, for message purposes."
|
2003-08-11 12:27:02 +00:00
|
|
|
(if (string-match "\\s-*\\(\\S-+\\)" (nth 2 (car entry)))
|
|
|
|
(match-string 1 (nth 2 (car entry)))
|
|
|
|
"?"))
|
|
|
|
|
|
|
|
(defun reftex-toc-newhead-from-alist (nlevel head alist)
|
|
|
|
"Get new heading with level NLEVEL from ALIST.
|
|
|
|
If there are no such entries, return nil.
|
2010-02-14 18:28:10 +01:00
|
|
|
If there are several different entries with same new level, choose the
|
|
|
|
one with the smallest distance to the association of HEAD in the alist.
|
2003-08-11 12:27:02 +00:00
|
|
|
This makes it possible for promotion to work several sets of headings,
|
|
|
|
if these sets are sorted blocks in the alist."
|
|
|
|
(let* ((al alist)
|
|
|
|
(ass (assoc head al))
|
|
|
|
(pos (length (memq ass al)))
|
|
|
|
dist (mindist 1000) newhead)
|
|
|
|
(while al
|
|
|
|
(if (equal (cdar al) nlevel)
|
|
|
|
(progn
|
|
|
|
(setq dist (abs (- (length al) pos)))
|
|
|
|
(if (< dist mindist)
|
|
|
|
(setq newhead (car (car al))
|
|
|
|
mindist dist))))
|
|
|
|
(setq al (cdr al)))
|
|
|
|
newhead))
|
|
|
|
|
|
|
|
(defun reftex-toc-check-docstruct ()
|
|
|
|
"Check if the current docstruct is fully up to date and all files visited."
|
|
|
|
;; We do this by checking if all sections are on the right position
|
|
|
|
(let ((docstruct (symbol-value reftex-docstruct-symbol))
|
|
|
|
entry marker empoint)
|
|
|
|
(catch 'exit
|
|
|
|
(while (setq entry (pop docstruct))
|
|
|
|
(if (eq (car entry) 'toc)
|
|
|
|
(progn
|
|
|
|
(setq marker (nth 4 entry)
|
|
|
|
empoint (nth 8 entry))
|
|
|
|
(if (not (and (markerp marker)
|
|
|
|
(marker-buffer marker)
|
|
|
|
(= (marker-position marker) empoint)))
|
|
|
|
(throw 'exit nil)))))
|
|
|
|
t)))
|
|
|
|
|
|
|
|
(defun reftex-toc-load-all-files-for-promotion ()
|
|
|
|
"Make sure all files of the document are being visited by buffers,
|
|
|
|
and that the scanning info is absolutely up to date.
|
2011-11-17 13:16:44 +01:00
|
|
|
We do this by rescanning with `reftex-keep-temporary-buffers' bound to t.
|
2015-04-27 12:59:11 -04:00
|
|
|
The variable `reftex--pro-or-de' is assumed to be dynamically scoped into this function.
|
2003-08-11 12:27:02 +00:00
|
|
|
When finished, we exit with an error message."
|
|
|
|
(let ((reftex-keep-temporary-buffers t))
|
|
|
|
(reftex-toc-Rescan)
|
2015-04-27 12:59:11 -04:00
|
|
|
(reftex-toc-restore-region reftex--start-line reftex--mark-line)
|
2003-08-11 12:27:02 +00:00
|
|
|
(throw 'exit
|
2005-01-16 02:37:50 +00:00
|
|
|
"TOC had to be updated first. Please check selection and repeat the command.")))
|
2003-08-11 12:27:02 +00:00
|
|
|
|
|
|
|
(defun reftex-toc-rename-label ()
|
2011-11-17 13:16:44 +01:00
|
|
|
"Rename the currently selected label in the *toc* buffer.
|
2003-08-11 12:27:02 +00:00
|
|
|
This launches a global search and replace in order to rename a label.
|
2011-11-17 01:09:20 -08:00
|
|
|
Renaming a label is hardly ever necessary - the only exception is after
|
2003-08-11 12:27:02 +00:00
|
|
|
promotion/demotion in connection with a package like fancyref, where the
|
|
|
|
label prefix determines the wording of a reference."
|
|
|
|
(interactive)
|
|
|
|
(let* ((toc (get-text-property (point) :data))
|
|
|
|
(label (car toc)) newlabel)
|
|
|
|
(if (not (stringp label))
|
2009-09-24 01:37:14 +00:00
|
|
|
(error "This is not a label entry"))
|
2003-08-11 12:27:02 +00:00
|
|
|
(setq newlabel (read-string (format "Rename label \"%s\" to:" label)))
|
|
|
|
(if (assoc newlabel (symbol-value reftex-docstruct-symbol))
|
2009-08-22 19:29:18 +00:00
|
|
|
(if (not (y-or-n-p
|
Go back to grave quoting in source-code docstrings etc.
This reverts almost all my recent changes to use curved quotes
in docstrings and/or strings used for error diagnostics.
There are a few exceptions, e.g., Bahá’í proper names.
* admin/unidata/unidata-gen.el (unidata-gen-table):
* lisp/abbrev.el (expand-region-abbrevs):
* lisp/align.el (align-region):
* lisp/allout.el (allout-mode, allout-solicit-alternate-bullet)
(outlineify-sticky):
* lisp/apropos.el (apropos-library):
* lisp/bookmark.el (bookmark-default-annotation-text):
* lisp/button.el (button-category-symbol, button-put)
(make-text-button):
* lisp/calc/calc-aent.el (math-read-if, math-read-factor):
* lisp/calc/calc-embed.el (calc-do-embedded):
* lisp/calc/calc-ext.el (calc-user-function-list):
* lisp/calc/calc-graph.el (calc-graph-show-dumb):
* lisp/calc/calc-help.el (calc-describe-key)
(calc-describe-thing, calc-full-help):
* lisp/calc/calc-lang.el (calc-c-language)
(math-parse-fortran-vector-end, math-parse-tex-sum)
(math-parse-eqn-matrix, math-parse-eqn-prime)
(calc-yacas-language, calc-maxima-language, calc-giac-language)
(math-read-giac-subscr, math-read-math-subscr)
(math-read-big-rec, math-read-big-balance):
* lisp/calc/calc-misc.el (calc-help, report-calc-bug):
* lisp/calc/calc-mode.el (calc-auto-why, calc-save-modes)
(calc-auto-recompute):
* lisp/calc/calc-prog.el (calc-fix-token-name)
(calc-read-parse-table-part, calc-user-define-invocation)
(math-do-arg-check):
* lisp/calc/calc-store.el (calc-edit-variable):
* lisp/calc/calc-units.el (math-build-units-table-buffer):
* lisp/calc/calc-vec.el (math-read-brackets):
* lisp/calc/calc-yank.el (calc-edit-mode):
* lisp/calc/calc.el (calc, calc-do, calc-user-invocation):
* lisp/calendar/appt.el (appt-display-message):
* lisp/calendar/diary-lib.el (diary-check-diary-file)
(diary-mail-entries, diary-from-outlook):
* lisp/calendar/icalendar.el (icalendar-export-region)
(icalendar--convert-float-to-ical)
(icalendar--convert-date-to-ical)
(icalendar--convert-ical-to-diary)
(icalendar--convert-recurring-to-diary)
(icalendar--add-diary-entry):
* lisp/calendar/time-date.el (format-seconds):
* lisp/calendar/timeclock.el (timeclock-mode-line-display)
(timeclock-make-hours-explicit, timeclock-log-data):
* lisp/calendar/todo-mode.el (todo-prefix, todo-delete-category)
(todo-item-mark, todo-check-format)
(todo-insert-item--next-param, todo-edit-item--next-key)
(todo-mode):
* lisp/cedet/ede/pmake.el (ede-proj-makefile-insert-dist-rules):
* lisp/cedet/mode-local.el (describe-mode-local-overload)
(mode-local-print-binding, mode-local-describe-bindings-2):
* lisp/cedet/semantic/complete.el (semantic-displayor-show-request):
* lisp/cedet/srecode/srt-mode.el (srecode-macro-help):
* lisp/cus-start.el (standard):
* lisp/cus-theme.el (describe-theme-1):
* lisp/custom.el (custom-add-dependencies, custom-check-theme)
(custom--sort-vars-1, load-theme):
* lisp/descr-text.el (describe-text-properties-1, describe-char):
* lisp/dired-x.el (dired-do-run-mail):
* lisp/dired.el (dired-log):
* lisp/emacs-lisp/advice.el (ad-read-advised-function)
(ad-read-advice-class, ad-read-advice-name, ad-enable-advice)
(ad-disable-advice, ad-remove-advice, ad-set-argument)
(ad-set-arguments, ad--defalias-fset, ad-activate)
(ad-deactivate):
* lisp/emacs-lisp/byte-opt.el (byte-compile-inline-expand)
(byte-compile-unfold-lambda, byte-optimize-form-code-walker)
(byte-optimize-while, byte-optimize-apply):
* lisp/emacs-lisp/byte-run.el (defun, defsubst):
* lisp/emacs-lisp/bytecomp.el (byte-compile-lapcode)
(byte-compile-log-file, byte-compile-format-warn)
(byte-compile-nogroup-warn, byte-compile-arglist-warn)
(byte-compile-cl-warn)
(byte-compile-warn-about-unresolved-functions)
(byte-compile-file, byte-compile--declare-var)
(byte-compile-file-form-defmumble, byte-compile-form)
(byte-compile-normal-call, byte-compile-check-variable)
(byte-compile-variable-ref, byte-compile-variable-set)
(byte-compile-subr-wrong-args, byte-compile-setq-default)
(byte-compile-negation-optimizer)
(byte-compile-condition-case--old)
(byte-compile-condition-case--new, byte-compile-save-excursion)
(byte-compile-defvar, byte-compile-autoload)
(byte-compile-lambda-form)
(byte-compile-make-variable-buffer-local, display-call-tree)
(batch-byte-compile):
* lisp/emacs-lisp/cconv.el (cconv-convert, cconv--analyze-use):
* lisp/emacs-lisp/chart.el (chart-space-usage):
* lisp/emacs-lisp/check-declare.el (check-declare-scan)
(check-declare-warn, check-declare-file)
(check-declare-directory):
* lisp/emacs-lisp/checkdoc.el (checkdoc-this-string-valid-engine)
(checkdoc-message-text-engine):
* lisp/emacs-lisp/cl-extra.el (cl-parse-integer)
(cl--describe-class):
* lisp/emacs-lisp/cl-generic.el (cl-defgeneric)
(cl--generic-describe, cl-generic-generalizers):
* lisp/emacs-lisp/cl-macs.el (cl--parse-loop-clause, cl-tagbody)
(cl-symbol-macrolet):
* lisp/emacs-lisp/cl.el (cl-unload-function, flet):
* lisp/emacs-lisp/copyright.el (copyright)
(copyright-update-directory):
* lisp/emacs-lisp/edebug.el (edebug-read-list):
* lisp/emacs-lisp/eieio-base.el (eieio-persistent-read):
* lisp/emacs-lisp/eieio-core.el (eieio--slot-override)
(eieio-oref):
* lisp/emacs-lisp/eieio-opt.el (eieio-help-constructor):
* lisp/emacs-lisp/eieio-speedbar.el:
(eieio-speedbar-child-make-tag-lines)
(eieio-speedbar-child-description):
* lisp/emacs-lisp/eieio.el (defclass, change-class):
* lisp/emacs-lisp/elint.el (elint-file, elint-get-top-forms)
(elint-init-form, elint-check-defalias-form)
(elint-check-let-form):
* lisp/emacs-lisp/ert.el (ert-get-test, ert-results-mode-menu)
(ert-results-pop-to-backtrace-for-test-at-point)
(ert-results-pop-to-messages-for-test-at-point)
(ert-results-pop-to-should-forms-for-test-at-point)
(ert-describe-test):
* lisp/emacs-lisp/find-func.el (find-function-search-for-symbol)
(find-function-library):
* lisp/emacs-lisp/generator.el (iter-yield):
* lisp/emacs-lisp/gv.el (gv-define-simple-setter):
* lisp/emacs-lisp/lisp-mnt.el (lm-verify):
* lisp/emacs-lisp/macroexp.el (macroexp--obsolete-warning):
* lisp/emacs-lisp/map-ynp.el (map-y-or-n-p):
* lisp/emacs-lisp/nadvice.el (advice--make-docstring)
(advice--make, define-advice):
* lisp/emacs-lisp/package-x.el (package-upload-file):
* lisp/emacs-lisp/package.el (package-version-join)
(package-disabled-p, package-activate-1, package-activate)
(package--download-one-archive)
(package--download-and-read-archives)
(package-compute-transaction, package-install-from-archive)
(package-install, package-install-selected-packages)
(package-delete, package-autoremove, describe-package-1)
(package-install-button-action, package-delete-button-action)
(package-menu-hide-package, package-menu--list-to-prompt)
(package-menu--perform-transaction)
(package-menu--find-and-notify-upgrades):
* lisp/emacs-lisp/pcase.el (pcase-exhaustive, pcase--u1):
* lisp/emacs-lisp/re-builder.el (reb-enter-subexp-mode):
* lisp/emacs-lisp/ring.el (ring-previous, ring-next):
* lisp/emacs-lisp/rx.el (rx-check, rx-anything)
(rx-check-any-string, rx-check-any, rx-check-not, rx-=)
(rx-repeat, rx-check-backref, rx-syntax, rx-check-category)
(rx-form):
* lisp/emacs-lisp/smie.el (smie-config-save):
* lisp/emacs-lisp/subr-x.el (internal--check-binding):
* lisp/emacs-lisp/tabulated-list.el (tabulated-list-put-tag):
* lisp/emacs-lisp/testcover.el (testcover-1value):
* lisp/emacs-lisp/timer.el (timer-event-handler):
* lisp/emulation/viper-cmd.el (viper-toggle-parse-sexp-ignore-comments)
(viper-toggle-search-style, viper-kill-buffer)
(viper-brac-function):
* lisp/emulation/viper-macs.el (viper-record-kbd-macro):
* lisp/env.el (setenv):
* lisp/erc/erc-button.el (erc-nick-popup):
* lisp/erc/erc.el (erc-cmd-LOAD, erc-handle-login, english):
* lisp/eshell/em-dirs.el (eshell/cd):
* lisp/eshell/em-glob.el (eshell-glob-regexp)
(eshell-glob-entries):
* lisp/eshell/em-pred.el (eshell-parse-modifiers):
* lisp/eshell/esh-opt.el (eshell-show-usage):
* lisp/facemenu.el (facemenu-add-new-face)
(facemenu-add-new-color):
* lisp/faces.el (read-face-name, read-face-font, describe-face)
(x-resolve-font-name):
* lisp/files-x.el (modify-file-local-variable):
* lisp/files.el (locate-user-emacs-file, find-alternate-file)
(set-auto-mode, hack-one-local-variable--obsolete)
(dir-locals-set-directory-class, write-file, basic-save-buffer)
(delete-directory, copy-directory, recover-session)
(recover-session-finish, insert-directory)
(file-modes-char-to-who, file-modes-symbolic-to-number)
(move-file-to-trash):
* lisp/filesets.el (filesets-add-buffer, filesets-remove-buffer):
* lisp/find-cmd.el (find-generic, find-to-string):
* lisp/finder.el (finder-commentary):
* lisp/font-lock.el (font-lock-fontify-buffer):
* lisp/format.el (format-write-file, format-find-file)
(format-insert-file):
* lisp/frame.el (get-device-terminal, select-frame-by-name):
* lisp/fringe.el (fringe--check-style):
* lisp/gnus/nnmairix.el (nnmairix-widget-create-query):
* lisp/help-fns.el (help-fns--key-bindings)
(help-fns--compiler-macro, help-fns--parent-mode)
(help-fns--obsolete, help-fns--interactive-only)
(describe-function-1, describe-variable):
* lisp/help.el (describe-mode)
(describe-minor-mode-from-indicator):
* lisp/image.el (image-type):
* lisp/international/ccl.el (ccl-dump):
* lisp/international/fontset.el (x-must-resolve-font-name):
* lisp/international/mule-cmds.el (prefer-coding-system)
(select-safe-coding-system-interactively)
(select-safe-coding-system, activate-input-method)
(toggle-input-method, describe-current-input-method)
(describe-language-environment):
* lisp/international/mule-conf.el (code-offset):
* lisp/international/mule-diag.el (describe-character-set)
(list-input-methods-1):
* lisp/mail/feedmail.el (feedmail-run-the-queue):
* lisp/mouse.el (minor-mode-menu-from-indicator):
* lisp/mpc.el (mpc-playlist-rename):
* lisp/msb.el (msb--choose-menu):
* lisp/net/ange-ftp.el (ange-ftp-shell-command):
* lisp/net/imap.el (imap-interactive-login):
* lisp/net/mairix.el (mairix-widget-create-query):
* lisp/net/newst-backend.el (newsticker--sentinel-work):
* lisp/net/newst-treeview.el (newsticker--treeview-load):
* lisp/net/rlogin.el (rlogin):
* lisp/obsolete/iswitchb.el (iswitchb-possible-new-buffer):
* lisp/obsolete/otodo-mode.el (todo-more-important-p):
* lisp/obsolete/pgg-gpg.el (pgg-gpg-process-region):
* lisp/obsolete/pgg-pgp.el (pgg-pgp-process-region):
* lisp/obsolete/pgg-pgp5.el (pgg-pgp5-process-region):
* lisp/org/ob-core.el (org-babel-goto-named-src-block)
(org-babel-goto-named-result):
* lisp/org/ob-fortran.el (org-babel-fortran-ensure-main-wrap):
* lisp/org/ob-ref.el (org-babel-ref-resolve):
* lisp/org/org-agenda.el (org-agenda-prepare):
* lisp/org/org-clock.el (org-clock-notify-once-if-expired)
(org-clock-resolve):
* lisp/org/org-ctags.el (org-ctags-ask-rebuild-tags-file-then-find-tag):
* lisp/org/org-feed.el (org-feed-parse-atom-entry):
* lisp/org/org-habit.el (org-habit-parse-todo):
* lisp/org/org-mouse.el (org-mouse-popup-global-menu)
(org-mouse-context-menu):
* lisp/org/org-table.el (org-table-edit-formulas):
* lisp/org/ox.el (org-export-async-start):
* lisp/proced.el (proced-log):
* lisp/progmodes/ada-mode.el (ada-get-indent-case)
(ada-check-matching-start, ada-goto-matching-start):
* lisp/progmodes/ada-prj.el (ada-prj-display-page):
* lisp/progmodes/ada-xref.el (ada-find-executable):
* lisp/progmodes/ebrowse.el (ebrowse-tags-apropos):
* lisp/progmodes/etags.el (etags-tags-apropos-additional):
* lisp/progmodes/flymake.el (flymake-parse-err-lines)
(flymake-start-syntax-check-process):
* lisp/progmodes/python.el (python-shell-get-process-or-error)
(python-define-auxiliary-skeleton):
* lisp/progmodes/sql.el (sql-comint):
* lisp/progmodes/verilog-mode.el (verilog-load-file-at-point):
* lisp/progmodes/vhdl-mode.el (vhdl-widget-directory-validate):
* lisp/recentf.el (recentf-open-files):
* lisp/replace.el (query-replace-read-from)
(occur-after-change-function, occur-1):
* lisp/scroll-bar.el (scroll-bar-columns):
* lisp/server.el (server-get-auth-key):
* lisp/simple.el (execute-extended-command)
(undo-outer-limit-truncate, list-processes--refresh)
(compose-mail, set-variable, choose-completion-string)
(define-alternatives):
* lisp/startup.el (site-run-file, tty-handle-args, command-line)
(command-line-1):
* lisp/subr.el (noreturn, define-error, add-to-list)
(read-char-choice, version-to-list):
* lisp/term/common-win.el (x-handle-xrm-switch)
(x-handle-name-switch, x-handle-args):
* lisp/term/x-win.el (x-handle-parent-id, x-handle-smid):
* lisp/textmodes/reftex-ref.el (reftex-label):
* lisp/textmodes/reftex-toc.el (reftex-toc-rename-label):
* lisp/textmodes/two-column.el (2C-split):
* lisp/tutorial.el (tutorial--describe-nonstandard-key)
(tutorial--find-changed-keys):
* lisp/type-break.el (type-break-noninteractive-query):
* lisp/wdired.el (wdired-do-renames, wdired-do-symlink-changes)
(wdired-do-perm-changes):
* lisp/whitespace.el (whitespace-report-region):
Prefer grave quoting in source-code strings used to generate help
and diagnostics.
* lisp/faces.el (face-documentation):
No need to convert quotes, since the result is a docstring.
* lisp/info.el (Info-virtual-index-find-node)
(Info-virtual-index, info-apropos):
Simplify by generating only curved quotes, since info files are
typically that ways nowadays anyway.
* lisp/international/mule-diag.el (list-input-methods):
Don’t assume text quoting style is curved.
* lisp/org/org-bibtex.el (org-bibtex-fields):
Revert my recent changes, going back to the old quoting style.
2015-09-07 08:41:44 -07:00
|
|
|
(format-message "Label `%s' exists. Use anyway? " label)))
|
2003-08-11 12:27:02 +00:00
|
|
|
(error "Abort")))
|
|
|
|
(save-excursion
|
|
|
|
(save-window-excursion
|
|
|
|
(reftex-toc-visit-location t)
|
|
|
|
(condition-case nil
|
|
|
|
(reftex-query-replace-document
|
|
|
|
(concat "{" (regexp-quote label) "}")
|
|
|
|
(format "{%s}" newlabel))
|
2009-08-22 19:29:18 +00:00
|
|
|
(error t))))
|
2003-08-11 12:27:02 +00:00
|
|
|
(reftex-toc-rescan)))
|
|
|
|
|
|
|
|
|
1999-08-16 07:42:41 +00:00
|
|
|
(defun reftex-toc-visit-location (&optional final no-revisit)
|
2011-11-17 13:16:44 +01:00
|
|
|
;; Visit the tex file corresponding to the TOC entry on the current line.
|
1999-08-16 07:42:41 +00:00
|
|
|
;; If FINAL is t, stay there
|
2011-11-17 13:16:44 +01:00
|
|
|
;; If FINAL is 'hide, hide the TOC window.
|
|
|
|
;; Otherwise, move cursor back into TOC window.
|
2003-05-13 20:41:45 +00:00
|
|
|
;; NO-REVISIT means don't visit files, just use live buffers.
|
1999-08-16 07:42:41 +00:00
|
|
|
;; This function is pretty clever about finding back a section heading,
|
|
|
|
;; even if the buffer is not live, or things like outline, x-symbol etc.
|
|
|
|
;; have been active.
|
|
|
|
|
|
|
|
(let* ((toc (get-text-property (point) :data))
|
|
|
|
(toc-window (selected-window))
|
2015-04-27 12:59:11 -04:00
|
|
|
match)
|
1999-08-16 07:42:41 +00:00
|
|
|
|
2011-11-17 13:16:44 +01:00
|
|
|
(unless toc (error "Don't know which TOC line to visit"))
|
2009-08-22 19:29:18 +00:00
|
|
|
|
1999-08-16 07:42:41 +00:00
|
|
|
(cond
|
2009-08-22 19:29:18 +00:00
|
|
|
|
1999-08-16 07:42:41 +00:00
|
|
|
((eq (car toc) 'toc)
|
|
|
|
;; a toc entry
|
|
|
|
(setq match (reftex-toc-find-section toc no-revisit)))
|
|
|
|
|
|
|
|
((eq (car toc) 'index)
|
|
|
|
;; an index entry
|
|
|
|
(setq match (reftex-index-show-entry toc no-revisit)))
|
|
|
|
|
|
|
|
((memq (car toc) '(bof eof))
|
|
|
|
;; A file entry
|
|
|
|
(setq match
|
2003-08-11 12:27:02 +00:00
|
|
|
(let ((where (car toc))
|
|
|
|
(file (nth 1 toc)))
|
|
|
|
(if (or (not no-revisit) (reftex-get-buffer-visiting file))
|
|
|
|
(progn
|
2009-08-22 19:29:18 +00:00
|
|
|
(switch-to-buffer-other-window
|
2003-08-11 12:27:02 +00:00
|
|
|
(reftex-get-file-buffer-force file nil))
|
|
|
|
(goto-char (if (eq where 'bof) (point-min) (point-max))))
|
2007-12-08 01:02:29 +00:00
|
|
|
(message "%s" reftex-no-follow-message) nil))))
|
1999-08-16 07:42:41 +00:00
|
|
|
|
|
|
|
((stringp (car toc))
|
|
|
|
;; a label
|
|
|
|
(setq match (reftex-show-label-location toc reftex-callback-fwd
|
2003-08-11 12:27:02 +00:00
|
|
|
no-revisit t))))
|
1999-08-16 07:42:41 +00:00
|
|
|
|
|
|
|
(unless match
|
|
|
|
(select-window toc-window)
|
|
|
|
(error "Cannot find location"))
|
|
|
|
|
2015-04-27 12:59:11 -04:00
|
|
|
;; Use the `final' parameter to decide what to do next.
|
1999-08-16 07:42:41 +00:00
|
|
|
(cond
|
|
|
|
((eq final t)
|
2015-04-27 12:59:11 -04:00
|
|
|
(with-selected-window toc-window
|
|
|
|
(reftex-unhighlight 0)))
|
1999-08-16 07:42:41 +00:00
|
|
|
((eq final 'hide)
|
2016-11-04 12:45:51 -04:00
|
|
|
(let ((window (selected-window))
|
|
|
|
(buffer (window-buffer)))
|
|
|
|
(unless (eq window toc-window) ;FIXME: Can this happen?
|
2015-04-27 12:59:11 -04:00
|
|
|
(with-selected-window toc-window
|
|
|
|
(reftex-unhighlight 0)
|
|
|
|
(or (one-window-p) (delete-window))))
|
2016-11-04 12:45:51 -04:00
|
|
|
;; If window is still live, buffer is already visible
|
2015-04-27 12:59:11 -04:00
|
|
|
;; so let's not make it visible in yet-another-window.
|
2016-11-04 12:45:51 -04:00
|
|
|
(unless (window-live-p window)
|
|
|
|
;; FIXME: How could window not be live?
|
|
|
|
(pop-to-buffer-same-window buffer))
|
2015-04-27 12:59:11 -04:00
|
|
|
(reftex-re-enlarge)))
|
|
|
|
(t
|
|
|
|
(unless (eq (selected-frame) (window-frame toc-window))
|
|
|
|
;; Make sure `toc-window' is not just selected but has focus.
|
|
|
|
(select-frame-set-input-focus (window-frame toc-window)))
|
|
|
|
(select-window toc-window)))))
|
1999-08-16 07:42:41 +00:00
|
|
|
|
|
|
|
(defun reftex-toc-find-section (toc &optional no-revisit)
|
|
|
|
(let* ((file (nth 3 toc))
|
2003-08-11 12:27:02 +00:00
|
|
|
(marker (nth 4 toc))
|
|
|
|
(level (nth 5 toc))
|
|
|
|
(literal (nth 7 toc))
|
|
|
|
(emergency-point (nth 8 toc))
|
|
|
|
(match
|
|
|
|
(cond
|
|
|
|
((and (markerp marker) (marker-buffer marker))
|
|
|
|
;; Buffer is still live and we have the marker. Should be easy.
|
|
|
|
(switch-to-buffer-other-window (marker-buffer marker))
|
2005-01-14 10:12:03 +00:00
|
|
|
(push-mark nil)
|
2003-08-11 12:27:02 +00:00
|
|
|
(goto-char (marker-position marker))
|
|
|
|
(or (looking-at (regexp-quote literal))
|
|
|
|
(looking-at (reftex-make-regexp-allow-for-ctrl-m literal))
|
|
|
|
(looking-at (reftex-make-desperate-section-regexp literal))
|
|
|
|
(looking-at (concat "\\\\"
|
|
|
|
(regexp-quote
|
2009-08-22 19:29:18 +00:00
|
|
|
(car
|
|
|
|
(rassq level
|
2003-08-11 12:27:02 +00:00
|
|
|
reftex-section-levels-all)))
|
|
|
|
"[[{]?"))))
|
|
|
|
((or (not no-revisit)
|
|
|
|
(reftex-get-buffer-visiting file))
|
|
|
|
;; Marker is lost. Use the backup method.
|
|
|
|
(switch-to-buffer-other-window
|
|
|
|
(reftex-get-file-buffer-force file nil))
|
|
|
|
(goto-char (or emergency-point (point-min)))
|
|
|
|
(or (looking-at (regexp-quote literal))
|
|
|
|
(let ((len (length literal)))
|
|
|
|
(or (reftex-nearest-match (regexp-quote literal) len)
|
|
|
|
(reftex-nearest-match
|
|
|
|
(reftex-make-regexp-allow-for-ctrl-m literal) len)
|
|
|
|
(reftex-nearest-match
|
|
|
|
(reftex-make-desperate-section-regexp literal) len)))))
|
2007-12-08 01:02:29 +00:00
|
|
|
(t (message "%s" reftex-no-follow-message) nil))))
|
1999-08-16 07:42:41 +00:00
|
|
|
(when match
|
|
|
|
(goto-char (match-beginning 0))
|
|
|
|
(if (not (= (point) (point-max))) (recenter 1))
|
|
|
|
(reftex-highlight 0 (match-beginning 0) (match-end 0) (current-buffer)))
|
|
|
|
match))
|
|
|
|
|
|
|
|
(defun reftex-make-desperate-section-regexp (old)
|
|
|
|
;; Return a regexp which will still match a section statement even if
|
|
|
|
;; x-symbol or isotex or the like have been at work in the mean time.
|
|
|
|
(let* ((n (1+ (string-match "[[{]" old)))
|
|
|
|
(new (regexp-quote (substring old 0 (1+ (string-match "[[{]" old)))))
|
|
|
|
(old (substring old n)))
|
|
|
|
(while (string-match
|
|
|
|
"\\([\r\n]\\)\\|\\(\\`\\|[ \t\n\r]\\)\\([a-zA-Z0-9]+\\)\\([ \t\n\r]\\|}\\'\\)"
|
|
|
|
old)
|
|
|
|
(if (match-beginning 1)
|
|
|
|
(setq new (concat new "[^\n\r]*[\n\r]"))
|
|
|
|
(setq new (concat new "[^\n\r]*" (match-string 3 old))))
|
|
|
|
(setq old (substring old (match-end 0))))
|
|
|
|
new))
|
|
|
|
|
2003-08-11 12:27:02 +00:00
|
|
|
;; Auto recentering of TOC window
|
2002-08-27 09:58:05 +00:00
|
|
|
|
|
|
|
(defun reftex-recenter-toc-when-idle ()
|
|
|
|
(and (> (buffer-size) 5)
|
|
|
|
reftex-mode
|
|
|
|
(not (active-minibuffer-window))
|
|
|
|
(fboundp 'reftex-toc-mode)
|
2003-08-11 12:27:02 +00:00
|
|
|
(get-buffer-window "*toc*" 'visible)
|
2002-08-27 09:58:05 +00:00
|
|
|
(string= reftex-last-toc-master (reftex-TeX-master-file))
|
2003-08-11 12:27:02 +00:00
|
|
|
(let (current-prefix-arg)
|
|
|
|
(reftex-toc-recenter))))
|
2002-08-27 09:58:05 +00:00
|
|
|
|
2014-03-28 20:53:32 -04:00
|
|
|
;;;###autoload
|
2002-08-27 09:58:05 +00:00
|
|
|
(defun reftex-toggle-auto-toc-recenter ()
|
2011-11-17 13:16:44 +01:00
|
|
|
"Toggle the automatic recentering of the TOC window.
|
|
|
|
When active, leaving point idle will make the TOC window jump to the correct
|
2002-08-27 09:58:05 +00:00
|
|
|
section."
|
|
|
|
(interactive)
|
|
|
|
(if reftex-toc-auto-recenter-timer
|
|
|
|
(progn
|
2003-08-11 12:27:02 +00:00
|
|
|
(if (featurep 'xemacs)
|
|
|
|
(delete-itimer reftex-toc-auto-recenter-timer)
|
|
|
|
(cancel-timer reftex-toc-auto-recenter-timer))
|
|
|
|
(setq reftex-toc-auto-recenter-timer nil)
|
2011-11-17 13:16:44 +01:00
|
|
|
(message "Automatic recentering of TOC window was turned off"))
|
2002-08-27 09:58:05 +00:00
|
|
|
(setq reftex-toc-auto-recenter-timer
|
2003-08-11 12:27:02 +00:00
|
|
|
(if (featurep 'xemacs)
|
|
|
|
(start-itimer "RefTeX Idle Timer for recenter"
|
|
|
|
'reftex-recenter-toc-when-idle
|
|
|
|
reftex-idle-time reftex-idle-time t)
|
|
|
|
(run-with-idle-timer
|
|
|
|
reftex-idle-time t 'reftex-recenter-toc-when-idle)))
|
2011-11-17 13:16:44 +01:00
|
|
|
(message "Automatic recentering of TOC window was turned on")))
|
2002-08-27 09:58:05 +00:00
|
|
|
|
2003-08-11 12:27:02 +00:00
|
|
|
(defun reftex-toc-toggle-dedicated-frame ()
|
|
|
|
"Toggle the display of a separate frame for the TOC.
|
|
|
|
This frame is not used by the `reftex-toc' commands, but it is useful to
|
|
|
|
always show the current section in connection with the option
|
|
|
|
`reftex-auto-recenter-toc'."
|
|
|
|
(interactive)
|
|
|
|
(catch 'exit
|
|
|
|
(let* ((frames (frame-list)) frame
|
|
|
|
(get-frame-prop-func (if (fboundp 'frame-property)
|
|
|
|
'frame-property
|
|
|
|
'frame-parameter)))
|
|
|
|
(while (setq frame (pop frames))
|
|
|
|
(if (equal (funcall get-frame-prop-func frame 'name)
|
|
|
|
"RefTeX TOC Frame")
|
|
|
|
(progn
|
|
|
|
(delete-frame frame)
|
|
|
|
(throw 'exit nil))))
|
|
|
|
(reftex-make-separate-toc-frame))))
|
|
|
|
|
|
|
|
(defun reftex-make-separate-toc-frame ()
|
2011-11-17 13:16:44 +01:00
|
|
|
;; Create a new fame showing only the TOC buffer.
|
2003-08-11 12:27:02 +00:00
|
|
|
(let ((current-frame (selected-frame))
|
|
|
|
(current-window (selected-window))
|
|
|
|
(current-toc-window (get-buffer-window "*toc*" 'visible))
|
|
|
|
current-toc-frame)
|
|
|
|
(if (and current-toc-window
|
|
|
|
(not (equal (selected-frame) (window-frame current-toc-window))))
|
|
|
|
nil
|
|
|
|
(setq current-toc-frame
|
|
|
|
(make-frame
|
|
|
|
'((name . "RefTeX TOC Frame")
|
|
|
|
(height . 20) (width . 60)
|
|
|
|
(unsplittable . t)
|
|
|
|
(minibuffer . nil)
|
|
|
|
(default-toolbar-visible-p . nil)
|
|
|
|
(menubar-visible-p . nil)
|
|
|
|
(horizontal-scrollbar-visible-p . nil))))
|
|
|
|
(select-frame current-toc-frame)
|
|
|
|
(switch-to-buffer "*toc*")
|
|
|
|
(select-frame current-frame)
|
2008-01-08 05:06:48 +00:00
|
|
|
(cond ((fboundp 'x-focus-frame)
|
|
|
|
(x-focus-frame current-frame))
|
|
|
|
((and (featurep 'xemacs) ; `focus-frame' is a nop in Emacs.
|
|
|
|
(fboundp 'focus-frame))
|
|
|
|
(focus-frame current-frame)))
|
2003-08-11 12:27:02 +00:00
|
|
|
(select-window current-window)
|
|
|
|
(when (eq reftex-auto-recenter-toc 'frame)
|
|
|
|
(unless reftex-toc-auto-recenter-timer
|
|
|
|
(reftex-toggle-auto-toc-recenter))
|
|
|
|
(add-hook 'delete-frame-hook 'reftex-toc-delete-frame-hook)))))
|
|
|
|
|
|
|
|
(defun reftex-toc-delete-frame-hook (frame)
|
|
|
|
(if (and reftex-toc-auto-recenter-timer
|
|
|
|
(reftex-toc-dframe-p frame))
|
|
|
|
(progn
|
|
|
|
(reftex-toggle-auto-toc-recenter))))
|
2002-08-27 09:58:05 +00:00
|
|
|
|
2005-01-14 10:12:03 +00:00
|
|
|
;;; reftex-toc.el ends here
|
2014-03-28 20:53:32 -04:00
|
|
|
|
|
|
|
;; Local Variables:
|
2015-12-15 21:51:12 +00:00
|
|
|
;; generated-autoload-file: "reftex-loaddefs.el"
|
2014-03-28 20:53:32 -04:00
|
|
|
;; End:
|