aboutsummaryrefslogtreecommitdiff
path: root/evil-ex.el
diff options
context:
space:
mode:
authorAlexander Shukaev <projects@Alexander.Shukaev.name>2018-06-18 18:15:53 +0200
committerEivind Fonn <evfonn@gmail.com>2018-09-11 11:44:54 +0200
commitef965243577cb410a8406216f83ab1c819351424 (patch)
tree618e902e96b8babea35c8d5d1029ce4d470d5550 /evil-ex.el
parent3d9f76f3add56f670042af9421b36dfb8574ad00 (diff)
Make `evil-ex-replace-special-filenames' robust to remote (TRAMP) file paths
Diffstat (limited to 'evil-ex.el')
-rw-r--r--evil-ex.el14
1 files changed, 10 insertions, 4 deletions
diff --git a/evil-ex.el b/evil-ex.el
index 894d8c1..904f878 100644
--- a/evil-ex.el
+++ b/evil-ex.el
@@ -645,29 +645,35 @@ works accordingly."
"Replace special symbols in FILE-NAME.
Replaces % by the current file-name,
Replaces # by the alternate file-name in FILE-NAME."
- (let ((current-fname (buffer-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)))
+ "\\1" file-name t))
+ (setq file-name (concat remote file-name)))
file-name)
(defun evil-ex-file-arg ()
"Returns the current Ex argument as a file name.
This function interprets special file names like # and %."
- (unless (or (null evil-ex-argument)
- (zerop (length evil-ex-argument)))
+ (unless (zerop (length evil-ex-argument))
(evil-ex-replace-special-filenames evil-ex-argument)))
(defun evil-ex-repeat (count)