Function: evil-ex-replace-special-filenames
evil-ex-replace-special-filenames is a byte-compiled function defined
in evil-ex.el.
Signature
(evil-ex-replace-special-filenames FILE-NAME)
Documentation
Replace special symbols in FILE-NAME.
Replaces % by the current file-name, Replaces # by the alternate file-name in FILE-NAME.
Source Code
;; Defined in ~/.emacs.d/elpa/evil-20251108.138/evil-ex.el
;; TODO: extensions like :p :~ <cfile> ...
(defun evil-ex-replace-special-filenames (file-name)
"Replace special symbols in FILE-NAME.
Replaces % by the current file-name,
Replaces # by the alternate file-name in FILE-NAME."
(let ((remote (file-remote-p file-name))
(current-fname (buffer-file-name))
(alternate-fname (and (other-buffer)
(buffer-file-name (other-buffer)))))
(setq file-name (or (file-remote-p file-name 'localname) file-name))
(when current-fname
(setq current-fname (or (file-remote-p current-fname 'localname)
current-fname))
(setq file-name
(replace-regexp-in-string "\\(^\\|[^\\\\]\\)\\(%\\)"
current-fname file-name
t t 2)))
(when alternate-fname
(setq alternate-fname (or (file-remote-p alternate-fname 'localname)
alternate-fname))
(setq file-name
(replace-regexp-in-string "\\(^\\|[^\\\\]\\)\\(#\\)"
alternate-fname file-name
t t 2)))
(setq file-name
(replace-regexp-in-string "\\\\\\([#%]\\)"
"\\1" file-name t))
(setq file-name (concat remote file-name)))
file-name)