Function: reftex-offer-label-menu
reftex-offer-label-menu is a byte-compiled function defined in
reftex-ref.el.gz.
Signature
(reftex-offer-label-menu TYPEKEY)
Source Code
;; Defined in /usr/src/emacs/lisp/textmodes/reftex-ref.el.gz
(defun reftex-offer-label-menu (typekey)
;; Offer a menu with the appropriate labels.
(let* ((buf (current-buffer))
(xr-data (assq 'xr (symbol-value reftex-docstruct-symbol)))
(xr-alist (cons (cons "" (buffer-file-name)) (nth 1 xr-data)))
(xr-index 0)
(here-I-am (car (reftex-where-am-I)))
(here-I-am1 here-I-am)
(toc (reftex-typekey-check typekey reftex-label-menu-flags 0))
(files (reftex-typekey-check typekey reftex-label-menu-flags 7))
(context (not (reftex-typekey-check
typekey reftex-label-menu-flags 3)))
(counter (reftex-typekey-check
typekey reftex-label-menu-flags 2))
(follow (reftex-typekey-check
typekey reftex-label-menu-flags 4))
(commented (nth 5 reftex-label-menu-flags))
(prefix "")
selection-buffers
offset rtn key data last-data entries)
(unwind-protect
(catch 'exit
(while t
(save-window-excursion
(delete-other-windows)
(setq reftex-call-back-to-this-buffer buf
reftex-latex-syntax-table (syntax-table))
(if reftex-use-multiple-selection-buffers
(switch-to-buffer-other-window
(with-current-buffer buf
(reftex-make-selection-buffer-name typekey)))
(switch-to-buffer-other-window "*RefTeX Select*")
(reftex-erase-buffer))
(unless (eq major-mode 'reftex-select-label-mode)
(reftex-select-label-mode))
(cl-pushnew (current-buffer) selection-buffers)
(setq truncate-lines t)
(setq mode-line-format
(list "---- " 'mode-line-buffer-identification
" " 'global-mode-string " (" mode-name ")"
" S<" 'reftex-refstyle ">"
" -%-"))
(cond
((= 0 (buffer-size))
(let ((buffer-read-only nil))
(message "Creating Selection Buffer...")
(setq offset (reftex-insert-docstruct
buf
toc
typekey
nil ; index
files
context
counter
commented
(or here-I-am offset)
prefix
nil ; no a toc buffer
))))
(here-I-am
(setq offset (reftex-get-offset buf here-I-am typekey)))
(t (setq offset t)))
(setq buffer-read-only t)
(setq offset (or offset t))
(setq here-I-am nil) ; turn off determination of offset
(setq rtn
(reftex-select-item
reftex-select-label-prompt
reftex-select-label-help
reftex-select-label-mode-map
offset
'reftex-show-label-location follow))
(setq key (car rtn)
data (nth 1 rtn)
last-data (nth 2 rtn)
offset t)
(unless key (throw 'exit nil))
(cond
((eq key ?g)
;; update buffer
(reftex-erase-buffer))
((or (eq key ?r)
(eq key ?R))
;; rescan buffer
(and current-prefix-arg (setq key ?R))
(reftex-erase-buffer)
(reftex-reparse-document buf last-data key))
((eq key ?c)
;; toggle context mode
(reftex-erase-buffer)
(setq context (not context)))
((eq key ?s)
;; switch type
(setq here-I-am here-I-am1)
(setq typekey (reftex-query-label-type)))
((eq key ?t)
;; toggle table of contents display, or change depth
(reftex-erase-buffer)
(if current-prefix-arg
(setq reftex-toc-max-level (prefix-numeric-value
current-prefix-arg))
(setq toc (not toc))))
((eq key ?F)
;; toggle display of included file borders
(reftex-erase-buffer)
(setq files (not files)))
((eq key ?#)
;; toggle counter display
(reftex-erase-buffer)
(setq counter (not counter)))
((eq key ?%)
;; toggle display of commented labels
(reftex-erase-buffer)
(setq commented (not commented)))
((eq key ?l)
;; reuse the last referenced label again
(setq entries reftex-last-used-reference)
(throw 'exit t))
((eq key ?x)
;; select an external document
(setq xr-index (reftex-select-external-document
xr-alist xr-index))
(setq buf (or (reftex-get-file-buffer-force
(cdr (nth xr-index xr-alist)))
(error "Cannot switch document"))
prefix (or (car (nth xr-index xr-alist)) ""))
(set-buffer buf)
(reftex-access-scan-info))
((stringp key)
(setq entries
(list
(list
(or (assoc key (symbol-value reftex-docstruct-symbol))
(list key typekey)))))
(throw 'exit t))
((memq key '(?a ?A return))
(cond
(reftex-select-marked
(setq entries (nreverse reftex-select-marked)))
(data
(setq entries (list (list data))))
(t (setq entries nil)))
(when entries
(if (equal key ?a) (push 'concat entries))
(setq reftex-last-used-reference entries))
(set-buffer buf)
(throw 'exit t))
(t (error "This should not happen (reftex-offer-label-menu)"))))))
(save-excursion
(while reftex-buffers-with-changed-invisibility
(set-buffer (car (car reftex-buffers-with-changed-invisibility)))
(setq buffer-invisibility-spec
(cdr (pop reftex-buffers-with-changed-invisibility)))))
(mapc (lambda (buf) (and (buffer-live-p buf) (bury-buffer buf)))
selection-buffers)
(reftex-kill-temporary-buffers))
;; Add the prefixes, put together the relevant information in the form
;; (LABEL TYPEKEY SEPARATOR) and return a list of those.
(mapcar (lambda (x)
(if (listp x)
(list (concat prefix (car (car x)))
(nth 1 (car x))
(nth 2 x))
x))
entries)))