Function: reftex-replace-prefix-escapes
reftex-replace-prefix-escapes is a byte-compiled function defined in
reftex-ref.el.gz.
Signature
(reftex-replace-prefix-escapes PREFIX)
Source Code
;; Defined in /usr/src/emacs/lisp/textmodes/reftex-ref.el.gz
(defun reftex-replace-prefix-escapes (prefix)
;; Replace %escapes in a label prefix
(save-match-data
(let (letter (num 0) replace)
(while (string-match "%\\([a-zA-Z]\\)" prefix num)
(setq letter (match-string 1 prefix))
(setq replace
(save-match-data
(cond
((equal letter "f")
(file-name-base (reftex--get-buffer-identifier)))
((equal letter "F")
(let ((masterdir (reftex--get-directory
(reftex-TeX-master-file)))
(file (file-name-sans-extension
(reftex--get-buffer-identifier))))
(if (string-match (concat "\\`" (regexp-quote masterdir))
file)
(substring file (length masterdir))
file)))
((equal letter "m")
(reftex--get-basename (reftex-TeX-master-file)))
((equal letter "M")
(file-name-nondirectory
(substring (reftex--get-directory (reftex-TeX-master-file))
0 -1)))
((equal letter "u")
(or (user-login-name) ""))
((equal letter "S")
(let* (macro level-exp level)
(save-excursion
(save-match-data
(when (re-search-backward reftex-section-regexp nil t)
(setq macro (reftex-match-string 2)
level-exp (cdr (assoc macro reftex-section-levels-all))
level (if (symbolp level-exp)
(abs (save-match-data
(funcall level-exp)))
(abs level-exp))))
(cdr (or (assoc macro reftex-section-prefixes)
(assoc level reftex-section-prefixes)
(assq t reftex-section-prefixes)
(list t "sec:")))))))
(t ""))))
(setq num (1- (+ (match-beginning 1) (length replace)))
prefix (replace-match replace nil nil prefix)))
prefix)))