2001-07-16 07:46:48 +00:00
|
|
|
;;; reftex-global.el --- operations on entire documents with RefTeX
|
2006-12-09 04:06:06 +00:00
|
|
|
|
2012-01-05 01:46:05 -08:00
|
|
|
;; Copyright (C) 1997-2012 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
|
2006-02-22 07:21:49 +00:00
|
|
|
;; Version: 4.31
|
2010-08-29 12:17:13 -04:00
|
|
|
;; Package: reftex
|
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
|
2008-05-06 04:34:22 +00:00
|
|
|
;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
|
1999-08-16 07:42:41 +00:00
|
|
|
|
2001-07-16 07:46:48 +00:00
|
|
|
;;; Commentary:
|
|
|
|
|
|
|
|
;;; Code:
|
|
|
|
|
* 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
|
|
|
(eval-when-compile (require 'cl))
|
1999-08-16 07:42:41 +00:00
|
|
|
(provide 'reftex-global)
|
|
|
|
(require 'reftex)
|
|
|
|
;;;
|
|
|
|
|
|
|
|
(defun reftex-create-tags-file ()
|
|
|
|
"Create TAGS file by running `etags' on the current document.
|
|
|
|
The TAGS file is also immediately visited with `visit-tags-table'."
|
|
|
|
(interactive)
|
|
|
|
(reftex-access-scan-info current-prefix-arg)
|
|
|
|
(let* ((master (reftex-TeX-master-file))
|
|
|
|
(files (reftex-all-document-files))
|
2006-10-12 13:26:05 +00:00
|
|
|
(cmd (format "etags %s" (mapconcat 'shell-quote-argument
|
|
|
|
files " "))))
|
* 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 (reftex-get-file-buffer-force master)
|
1999-08-16 07:42:41 +00:00
|
|
|
(message "Running etags to create TAGS file...")
|
|
|
|
(shell-command cmd)
|
|
|
|
(visit-tags-table "TAGS"))))
|
|
|
|
|
|
|
|
;; History of grep commands.
|
|
|
|
(defvar reftex-grep-history nil)
|
|
|
|
(defvar reftex-grep-command "grep -n "
|
|
|
|
"Last grep command used in \\[reftex-grep-document]; default for next grep.")
|
|
|
|
|
|
|
|
(defun reftex-grep-document (grep-cmd)
|
|
|
|
"Run grep query through all files related to this document.
|
|
|
|
With prefix arg, force to rescan document.
|
|
|
|
No active TAGS table is required."
|
|
|
|
|
|
|
|
(interactive
|
|
|
|
(list (read-from-minibuffer "Run grep on document (like this): "
|
|
|
|
reftex-grep-command nil nil
|
|
|
|
'reftex-grep-history)))
|
|
|
|
(reftex-access-scan-info current-prefix-arg)
|
|
|
|
(let* ((files (reftex-all-document-files t))
|
|
|
|
(cmd (format
|
|
|
|
"%s %s" grep-cmd
|
|
|
|
(mapconcat 'identity files " "))))
|
|
|
|
(grep cmd)))
|
|
|
|
|
|
|
|
(defun reftex-search-document (&optional regexp)
|
|
|
|
"Regexp search through all files of the current document.
|
|
|
|
Starts always in the master file. Stops when a match is found.
|
|
|
|
To continue searching for next match, use command \\[tags-loop-continue].
|
|
|
|
No active TAGS table is required."
|
|
|
|
(interactive)
|
|
|
|
(let ((default (reftex-this-word)))
|
|
|
|
(unless regexp
|
|
|
|
(setq regexp (read-string (format "Search regexp in document [%s]: "
|
|
|
|
default))))
|
|
|
|
(if (string= regexp "") (setq regexp (regexp-quote default)))
|
|
|
|
|
|
|
|
(reftex-access-scan-info current-prefix-arg)
|
|
|
|
(tags-search regexp (list 'reftex-all-document-files))))
|
|
|
|
|
|
|
|
(defun reftex-query-replace-document (&optional from to delimited)
|
2001-12-30 00:56:40 +00:00
|
|
|
"Do `query-replace-regexp' of FROM with TO over the entire document.
|
1999-08-16 07:42:41 +00:00
|
|
|
Third arg DELIMITED (prefix arg) means replace only word-delimited matches.
|
2001-12-30 00:56:40 +00:00
|
|
|
If you exit (\\[keyboard-quit], RET or q), you can resume the query replace
|
1999-08-16 07:42:41 +00:00
|
|
|
with the command \\[tags-loop-continue].
|
|
|
|
No active TAGS table is required."
|
|
|
|
(interactive)
|
|
|
|
(let ((default (reftex-this-word)))
|
|
|
|
(unless from
|
|
|
|
(setq from (read-string (format "Replace regexp in document [%s]: "
|
|
|
|
default)))
|
|
|
|
(if (string= from "") (setq from (regexp-quote default))))
|
|
|
|
(unless to
|
|
|
|
(setq to (read-string (format "Replace regexp %s with: " from))))
|
|
|
|
(reftex-access-scan-info current-prefix-arg)
|
|
|
|
(tags-query-replace from to (or delimited current-prefix-arg)
|
|
|
|
(list 'reftex-all-document-files))))
|
|
|
|
|
2008-03-20 07:44:55 +00:00
|
|
|
(defvar TeX-master)
|
|
|
|
(defvar isearch-next-buffer-function)
|
2005-09-16 10:05:32 +00:00
|
|
|
|
1999-08-16 07:42:41 +00:00
|
|
|
(defun reftex-find-duplicate-labels ()
|
|
|
|
"Produce a list of all duplicate labels in the document."
|
|
|
|
|
|
|
|
(interactive)
|
|
|
|
|
|
|
|
;; Rescan the document to make sure
|
|
|
|
(reftex-access-scan-info t)
|
|
|
|
|
|
|
|
(let ((master (reftex-TeX-master-file))
|
2003-08-11 12:27:02 +00:00
|
|
|
(cnt 0)
|
1999-08-16 07:42:41 +00:00
|
|
|
(dlist
|
|
|
|
(mapcar
|
2003-08-11 12:27:02 +00:00
|
|
|
(lambda (x)
|
|
|
|
(let (x1)
|
|
|
|
(cond
|
|
|
|
((memq (car x)
|
|
|
|
'(toc bof eof bib thebib label-numbers xr xr-doc
|
|
|
|
master-dir file-error bibview-cache appendix
|
|
|
|
is-multi index))
|
|
|
|
nil)
|
|
|
|
(t
|
|
|
|
(setq x1 (reftex-all-assoc-string
|
|
|
|
(car x) (symbol-value reftex-docstruct-symbol)))
|
|
|
|
(if (< 1 (length x1))
|
|
|
|
(append (list (car x))
|
|
|
|
(mapcar (lambda(x)
|
|
|
|
(abbreviate-file-name (nth 3 x)))
|
|
|
|
x1))
|
|
|
|
(list nil))))))
|
1999-08-16 07:42:41 +00:00
|
|
|
(reftex-uniquify-by-car (symbol-value reftex-docstruct-symbol)))))
|
|
|
|
|
|
|
|
(setq dlist (reftex-uniquify-by-car dlist))
|
|
|
|
(if (null dlist) (error "No duplicate labels in document"))
|
|
|
|
(switch-to-buffer-other-window "*Duplicate Labels*")
|
|
|
|
(set (make-local-variable 'TeX-master) master)
|
|
|
|
(erase-buffer)
|
|
|
|
(insert " MULTIPLE LABELS IN CURRENT DOCUMENT:\n")
|
2011-11-13 22:27:12 -08:00
|
|
|
(insert
|
1999-08-16 07:42:41 +00:00
|
|
|
" Move point to label and type `r' to run a query-replace on the label\n"
|
|
|
|
" and its references. Type `q' to exit this buffer.\n\n")
|
|
|
|
(insert " LABEL FILE\n")
|
|
|
|
(insert " -------------------------------------------------------------\n")
|
|
|
|
(use-local-map (make-sparse-keymap))
|
|
|
|
(local-set-key [?q] (lambda () "Kill this buffer." (interactive)
|
2003-08-11 12:27:02 +00:00
|
|
|
(kill-buffer (current-buffer)) (delete-window)))
|
1999-08-16 07:42:41 +00:00
|
|
|
(local-set-key [?r] 'reftex-change-label)
|
|
|
|
(while dlist
|
|
|
|
(when (and (car (car dlist))
|
|
|
|
(cdr (car dlist)))
|
2003-08-11 12:27:02 +00:00
|
|
|
(incf cnt)
|
1999-08-16 07:42:41 +00:00
|
|
|
(insert (mapconcat 'identity (car dlist) "\n ") "\n"))
|
|
|
|
(pop dlist))
|
|
|
|
(goto-char (point-min))
|
|
|
|
(when (= cnt 0)
|
|
|
|
(kill-buffer (current-buffer))
|
|
|
|
(delete-window)
|
|
|
|
(message "Document does not contain duplicate labels."))))
|
|
|
|
|
|
|
|
(defun reftex-change-label (&optional from to)
|
2003-08-11 12:27:02 +00:00
|
|
|
"Run `query-replace-regexp' of FROM with TO in all macro arguments.
|
1999-08-16 07:42:41 +00:00
|
|
|
Works on the entire multifile document.
|
2001-12-30 00:56:40 +00:00
|
|
|
If you exit (\\[keyboard-quit], RET or q), you can resume the query replace
|
1999-08-16 07:42:41 +00:00
|
|
|
with the command \\[tags-loop-continue].
|
|
|
|
No active TAGS table is required."
|
|
|
|
(interactive)
|
|
|
|
(let ((default (reftex-this-word "-a-zA-Z0-9_*.:")))
|
|
|
|
(unless from
|
|
|
|
(setq from (read-string (format "Replace label globally [%s]: "
|
|
|
|
default))))
|
|
|
|
(if (string= from "") (setq from default))
|
|
|
|
(unless to
|
|
|
|
(setq to (read-string (format "Replace label %s with: "
|
|
|
|
from))))
|
|
|
|
(reftex-query-replace-document
|
2003-08-11 12:27:02 +00:00
|
|
|
(concat "{" (regexp-quote from) "}")
|
|
|
|
(format "{%s}" to))))
|
1999-08-16 07:42:41 +00:00
|
|
|
|
|
|
|
(defun reftex-renumber-simple-labels ()
|
|
|
|
"Renumber all simple labels in the document to make them sequentially.
|
|
|
|
Simple labels are the ones created by RefTeX, consisting only of the
|
|
|
|
prefix and a number. After the command completes, all these labels will
|
|
|
|
have sequential numbers throughout the document. Any references to
|
|
|
|
the labels will be changed as well. For this, RefTeX looks at the
|
|
|
|
arguments of any macros which either start or end in the string `ref'.
|
|
|
|
This command should be used with care, in particular in multifile
|
|
|
|
documents. You should not use it if another document refers to this
|
|
|
|
one with the `xr' package."
|
|
|
|
(interactive)
|
2011-11-13 22:27:12 -08:00
|
|
|
;; Rescan the entire document
|
1999-08-16 07:42:41 +00:00
|
|
|
(reftex-access-scan-info 1)
|
|
|
|
;; Get some insurance
|
|
|
|
(if (and (reftex-is-multi)
|
2003-08-11 12:27:02 +00:00
|
|
|
(not (yes-or-no-p "Replacing all simple labels in multiple files is risky. Continue? ")))
|
1999-08-16 07:42:41 +00:00
|
|
|
(error "Abort"))
|
|
|
|
;; Make the translation list
|
2011-11-13 22:27:12 -08:00
|
|
|
(let* ((re-core (concat "\\("
|
|
|
|
(mapconcat 'cdr reftex-typekey-to-prefix-alist "\\|")
|
2003-08-11 12:27:02 +00:00
|
|
|
"\\)"))
|
|
|
|
(label-re (concat "\\`" re-core "\\([0-9]+\\)\\'"))
|
|
|
|
(search-re (concat "[{,]\\(" re-core "\\([0-9]+\\)\\)[,}]"))
|
|
|
|
(error-fmt "Undefined label or reference %s. Ignore and continue? ")
|
|
|
|
(label-numbers-alist (mapcar (lambda (x) (cons (cdr x) 0))
|
|
|
|
reftex-typekey-to-prefix-alist))
|
|
|
|
(files (reftex-all-document-files))
|
|
|
|
(list (symbol-value reftex-docstruct-symbol))
|
|
|
|
translate-alist n entry label new-label nr-cell changed-sequence)
|
1999-08-16 07:42:41 +00:00
|
|
|
|
|
|
|
(while (setq entry (pop list))
|
|
|
|
(when (and (stringp (car entry))
|
2003-08-11 12:27:02 +00:00
|
|
|
(string-match label-re (car entry)))
|
|
|
|
(setq label (car entry)
|
|
|
|
nr-cell (assoc (match-string 1 (car entry))
|
|
|
|
label-numbers-alist))
|
|
|
|
(if (assoc label translate-alist)
|
|
|
|
(error "Duplicate label %s" label))
|
|
|
|
(setq new-label (concat (match-string 1 (car entry))
|
|
|
|
(int-to-string (incf (cdr nr-cell)))))
|
|
|
|
(push (cons label new-label) translate-alist)
|
|
|
|
(or (string= label new-label) (setq changed-sequence t))))
|
1999-08-16 07:42:41 +00:00
|
|
|
|
|
|
|
(unless changed-sequence
|
|
|
|
(error "Simple labels are already in correct sequence"))
|
|
|
|
|
2000-06-20 12:52:00 +00:00
|
|
|
(reftex-ensure-write-access (reftex-all-document-files))
|
|
|
|
|
1999-08-16 07:42:41 +00:00
|
|
|
;; Save all document buffers before this operation
|
|
|
|
(reftex-save-all-document-buffers)
|
|
|
|
|
2011-11-17 01:09:20 -08:00
|
|
|
;; First test to check for errors.
|
2011-11-13 22:27:12 -08:00
|
|
|
(setq n (reftex-translate
|
2003-08-11 12:27:02 +00:00
|
|
|
files search-re translate-alist error-fmt 'test))
|
1999-08-16 07:42:41 +00:00
|
|
|
|
|
|
|
;; Now the real thing.
|
2011-11-13 22:27:12 -08:00
|
|
|
(if (yes-or-no-p
|
2003-08-11 12:27:02 +00:00
|
|
|
(format "Replace %d items at %d places in %d files? "
|
|
|
|
(length translate-alist) n (length files)))
|
|
|
|
(progn
|
|
|
|
(let ((inhibit-quit t)) ;; Do not disturb...
|
|
|
|
(reftex-translate
|
|
|
|
files search-re translate-alist error-fmt nil)
|
|
|
|
(setq quit-flag nil))
|
|
|
|
(if (and (reftex-is-multi)
|
|
|
|
(yes-or-no-p "Save entire document? "))
|
|
|
|
(reftex-save-all-document-buffers))
|
|
|
|
;; Rescan again...
|
|
|
|
(reftex-access-scan-info 1)
|
|
|
|
(message "Done replacing simple labels."))
|
1999-08-16 07:42:41 +00:00
|
|
|
(message "No replacements done"))))
|
|
|
|
|
|
|
|
(defun reftex-translate (files search-re translate-alist error-fmt test)
|
|
|
|
;; In FILES, look for SEARCH-RE and replace match 1 of it with
|
2011-11-14 22:00:24 +01:00
|
|
|
;; its association in TRANSLATE-ALIST.
|
1999-08-16 07:42:41 +00:00
|
|
|
;; If we do not find an association and TEST is non-nil, query
|
2011-11-13 22:27:12 -08:00
|
|
|
;; to ignore the problematic string.
|
1999-08-16 07:42:41 +00:00
|
|
|
;; If TEST is nil, it is ignored without query.
|
|
|
|
;; Return the number of replacements.
|
|
|
|
(let ((n 0) file label match-data buf macro pos cell)
|
|
|
|
(while (setq file (pop files))
|
|
|
|
(setq buf (reftex-get-file-buffer-force file))
|
|
|
|
(unless buf
|
2003-08-11 12:27:02 +00:00
|
|
|
(error "No such file %s" file))
|
1999-08-16 07:42:41 +00:00
|
|
|
(set-buffer buf)
|
|
|
|
(save-excursion
|
2003-08-11 12:27:02 +00:00
|
|
|
(save-restriction
|
|
|
|
(widen)
|
|
|
|
(goto-char (point-min))
|
|
|
|
(while (re-search-forward search-re nil t)
|
|
|
|
(backward-char)
|
|
|
|
(save-excursion
|
|
|
|
(setq label (reftex-match-string 1)
|
|
|
|
cell (assoc label translate-alist)
|
|
|
|
match-data (match-data)
|
|
|
|
macro (reftex-what-macro 1)
|
|
|
|
pos (cdr macro))
|
|
|
|
(goto-char (or pos (point)))
|
|
|
|
(when (and macro
|
|
|
|
(or (looking-at "\\\\ref")
|
|
|
|
(looking-at "\\\\[a-zA-Z]*ref\\(range\\)?[^a-zA-Z]")
|
|
|
|
(looking-at "\\\\ref[a-zA-Z]*[^a-zA-Z]")
|
2011-11-13 22:27:12 -08:00
|
|
|
(looking-at (format
|
2003-08-11 12:27:02 +00:00
|
|
|
reftex-find-label-regexp-format
|
|
|
|
(regexp-quote label)))))
|
|
|
|
;; OK, we should replace it.
|
|
|
|
(set-match-data match-data)
|
|
|
|
(cond
|
|
|
|
((and test (not cell))
|
|
|
|
;; We've got a problem
|
|
|
|
(unwind-protect
|
|
|
|
(progn
|
|
|
|
(reftex-highlight 1 (match-beginning 0) (match-end 0))
|
|
|
|
(ding)
|
|
|
|
(or (y-or-n-p (format error-fmt label))
|
|
|
|
(error "Abort")))
|
|
|
|
(reftex-unhighlight 1)))
|
|
|
|
((and test cell)
|
|
|
|
(incf n))
|
|
|
|
((and (not test) cell)
|
|
|
|
;; Replace
|
|
|
|
(goto-char (match-beginning 1))
|
|
|
|
(delete-region (match-beginning 1) (match-end 1))
|
|
|
|
(insert (cdr cell)))
|
|
|
|
(t nil))))))))
|
1999-08-16 07:42:41 +00:00
|
|
|
n))
|
|
|
|
|
|
|
|
(defun reftex-save-all-document-buffers ()
|
|
|
|
"Save all documents associated with the current document.
|
|
|
|
The function is useful after a global action like replacing or renumbering
|
|
|
|
labels."
|
|
|
|
(interactive)
|
|
|
|
(let ((files (reftex-all-document-files))
|
2003-08-11 12:27:02 +00:00
|
|
|
file buffer)
|
* 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
|
|
|
(save-current-buffer
|
1999-08-16 07:42:41 +00:00
|
|
|
(while (setq file (pop files))
|
2003-08-11 12:27:02 +00:00
|
|
|
(setq buffer (reftex-get-buffer-visiting file))
|
|
|
|
(when buffer
|
|
|
|
(set-buffer buffer)
|
|
|
|
(save-buffer))))))
|
1999-08-16 07:42:41 +00:00
|
|
|
|
2000-06-20 12:52:00 +00:00
|
|
|
(defun reftex-ensure-write-access (files)
|
|
|
|
"Make sure we have write access to all files in FILES.
|
|
|
|
Also checks if buffers visiting the files are in read-only mode."
|
|
|
|
(let (file buf)
|
|
|
|
(while (setq file (pop files))
|
|
|
|
(unless (file-exists-p file)
|
2003-08-11 12:27:02 +00:00
|
|
|
(ding)
|
|
|
|
(or (y-or-n-p (format "No such file %s. Continue? " file))
|
|
|
|
(error "Abort")))
|
2000-06-20 12:52:00 +00:00
|
|
|
(unless (file-writable-p file)
|
2003-08-11 12:27:02 +00:00
|
|
|
(ding)
|
|
|
|
(or (y-or-n-p (format "No write access to %s. Continue? " file))
|
|
|
|
(error "Abort")))
|
2000-06-20 12:52:00 +00:00
|
|
|
(when (and (setq buf (reftex-get-buffer-visiting file))
|
* 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 buf
|
2003-08-11 12:27:02 +00:00
|
|
|
buffer-read-only))
|
|
|
|
(ding)
|
|
|
|
(or (y-or-n-p (format "Buffer %s is read-only. Continue? "
|
|
|
|
(buffer-name buf)))
|
|
|
|
(error "Abort"))))))
|
1999-08-16 07:42:41 +00:00
|
|
|
|
2008-12-28 23:46:34 +00:00
|
|
|
;;; Multi-file RefTeX Isearch
|
|
|
|
|
* 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
|
|
|
;; `reftex-isearch-wrap-function', `reftex-isearch-push-state-function',
|
|
|
|
;; `reftex-isearch-pop-state-function', `reftex-isearch-isearch-search'
|
|
|
|
;; functions remain here only for backward-compatibility with Emacs 22
|
|
|
|
;; and are obsolete since Emacs 23 that supports a single function
|
|
|
|
;; variable `multi-isearch-next-buffer-function'.
|
2008-12-28 23:46:34 +00:00
|
|
|
|
2005-01-26 08:28:31 +00:00
|
|
|
(defun reftex-isearch-wrap-function ()
|
2012-05-29 12:09:38 +03:00
|
|
|
(switch-to-buffer
|
|
|
|
(funcall isearch-next-buffer-function (current-buffer) t))
|
2005-01-26 08:28:31 +00:00
|
|
|
(goto-char (if isearch-forward (point-min) (point-max))))
|
|
|
|
|
|
|
|
(defun reftex-isearch-push-state-function ()
|
|
|
|
`(lambda (cmd)
|
|
|
|
(reftex-isearch-pop-state-function cmd ,(current-buffer))))
|
|
|
|
|
|
|
|
(defun reftex-isearch-pop-state-function (cmd buffer)
|
|
|
|
(switch-to-buffer buffer))
|
|
|
|
|
|
|
|
(defun reftex-isearch-isearch-search (string bound noerror)
|
|
|
|
(let ((nxt-buff nil)
|
2012-05-29 12:09:38 +03:00
|
|
|
(search-fun (isearch-search-fun-default)))
|
2005-01-26 08:28:31 +00:00
|
|
|
(or
|
|
|
|
(funcall search-fun string bound noerror)
|
|
|
|
(unless bound
|
|
|
|
(condition-case nil
|
|
|
|
(when isearch-next-buffer-function
|
|
|
|
(while (not (funcall search-fun string bound noerror))
|
|
|
|
(cond
|
|
|
|
(isearch-forward
|
|
|
|
(setq nxt-buff
|
|
|
|
(funcall isearch-next-buffer-function
|
|
|
|
(current-buffer)))
|
|
|
|
(if (not nxt-buff)
|
|
|
|
(progn
|
|
|
|
(error "Wrap forward"))
|
|
|
|
(switch-to-buffer nxt-buff)
|
|
|
|
(goto-char (point-min))))
|
|
|
|
(t
|
|
|
|
(setq nxt-buff
|
|
|
|
(funcall isearch-next-buffer-function
|
|
|
|
(current-buffer)))
|
|
|
|
(if (not nxt-buff)
|
|
|
|
(progn
|
|
|
|
(error "Wrap backward"))
|
|
|
|
(switch-to-buffer nxt-buff)
|
|
|
|
(goto-char (point-max))))))
|
|
|
|
(point))
|
|
|
|
(error nil))))))
|
|
|
|
|
* 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
|
|
|
;; This function is called when isearch reaches the end of a
|
|
|
|
;; buffer. For reftex what we want to do is not wrap to the
|
|
|
|
;; beginning, but switch to the next buffer in the logical order of
|
|
|
|
;; the document. This function looks through list of files in the
|
|
|
|
;; document (reftex-all-document-files), searches for the current
|
|
|
|
;; buffer and switches to the next/previous one in the logical order
|
|
|
|
;; of the document. If WRAPP is true then wrap the search to the
|
|
|
|
;; beginning/end of the file list, depending of the search direction.
|
2005-01-26 08:28:31 +00:00
|
|
|
(defun reftex-isearch-switch-to-next-file (crt-buf &optional wrapp)
|
|
|
|
(reftex-access-scan-info)
|
2008-04-27 18:44:16 +00:00
|
|
|
(let ((cb (buffer-file-name crt-buf))
|
|
|
|
(flist (reftex-all-document-files)))
|
2005-01-26 08:28:31 +00:00
|
|
|
(when flist
|
|
|
|
(if wrapp
|
|
|
|
(unless isearch-forward
|
|
|
|
(setq flist (last flist)))
|
|
|
|
(unless isearch-forward
|
2008-04-27 18:44:16 +00:00
|
|
|
(setq flist (reverse flist)))
|
2005-01-26 08:28:31 +00:00
|
|
|
(while (not (string= (car flist) cb))
|
|
|
|
(setq flist (cdr flist)))
|
|
|
|
(setq flist (cdr flist)))
|
|
|
|
(when flist
|
2008-12-28 23:46:34 +00:00
|
|
|
(find-file-noselect (car flist))))))
|
2005-01-26 08:28:31 +00:00
|
|
|
|
|
|
|
;;;###autoload
|
|
|
|
(defun reftex-isearch-minor-mode (&optional arg)
|
|
|
|
"When on, isearch searches the whole document, not only the current file.
|
|
|
|
This minor mode allows isearch to search through all the files of
|
|
|
|
the current TeX document.
|
|
|
|
|
|
|
|
With no argument, this command toggles
|
|
|
|
`reftex-isearch-minor-mode'. With a prefix argument ARG, turn
|
2007-08-08 07:27:21 +00:00
|
|
|
`reftex-isearch-minor-mode' on if ARG is positive, otherwise turn it off."
|
2005-01-26 08:28:31 +00:00
|
|
|
(interactive "P")
|
|
|
|
(let ((old-reftex-isearch-minor-mode reftex-isearch-minor-mode))
|
2011-11-13 22:27:12 -08:00
|
|
|
(setq reftex-isearch-minor-mode
|
2005-01-26 08:28:31 +00:00
|
|
|
(not (or (and (null arg) reftex-isearch-minor-mode)
|
|
|
|
(<= (prefix-numeric-value arg) 0))))
|
|
|
|
(unless (eq reftex-isearch-minor-mode old-reftex-isearch-minor-mode)
|
|
|
|
(if reftex-isearch-minor-mode
|
|
|
|
(progn
|
|
|
|
(dolist (crt-buf (buffer-list))
|
|
|
|
(with-current-buffer crt-buf
|
|
|
|
(when reftex-mode
|
2008-12-28 23:46:34 +00:00
|
|
|
(if (boundp 'multi-isearch-next-buffer-function)
|
|
|
|
(set (make-local-variable 'multi-isearch-next-buffer-function)
|
|
|
|
'reftex-isearch-switch-to-next-file)
|
|
|
|
(set (make-local-variable 'isearch-wrap-function)
|
|
|
|
'reftex-isearch-wrap-function)
|
|
|
|
(set (make-local-variable 'isearch-search-fun-function)
|
|
|
|
(lambda () 'reftex-isearch-isearch-search))
|
|
|
|
(set (make-local-variable 'isearch-push-state-function)
|
|
|
|
'reftex-isearch-push-state-function)
|
|
|
|
(set (make-local-variable 'isearch-next-buffer-function)
|
|
|
|
'reftex-isearch-switch-to-next-file))
|
2005-01-26 08:28:31 +00:00
|
|
|
(setq reftex-isearch-minor-mode t))))
|
|
|
|
(add-hook 'reftex-mode-hook 'reftex-isearch-minor-mode))
|
|
|
|
(dolist (crt-buf (buffer-list))
|
|
|
|
(with-current-buffer crt-buf
|
|
|
|
(when reftex-mode
|
2008-12-28 23:46:34 +00:00
|
|
|
(if (boundp 'multi-isearch-next-buffer-function)
|
|
|
|
(kill-local-variable 'multi-isearch-next-buffer-function)
|
|
|
|
(kill-local-variable 'isearch-wrap-function)
|
|
|
|
(kill-local-variable 'isearch-search-fun-function)
|
|
|
|
(kill-local-variable 'isearch-push-state-function)
|
|
|
|
(kill-local-variable 'isearch-next-buffer-function))
|
2005-01-26 08:28:31 +00:00
|
|
|
(setq reftex-isearch-minor-mode nil))))
|
|
|
|
(remove-hook 'reftex-mode-hook 'reftex-isearch-minor-mode)))
|
2012-06-02 18:56:09 +08:00
|
|
|
;; Force mode line redisplay.
|
2005-01-26 08:28:31 +00:00
|
|
|
(set-buffer-modified-p (buffer-modified-p))))
|
|
|
|
|
2011-11-13 22:27:12 -08:00
|
|
|
(add-minor-mode 'reftex-isearch-minor-mode "/I" nil nil
|
2005-01-26 08:28:31 +00:00
|
|
|
'reftex-isearch-minor-mode)
|
|
|
|
|
1999-08-16 07:42:41 +00:00
|
|
|
;;; reftex-global.el ends here
|