diff options
| author | Alexander Shukaev <projects@Alexander.Shukaev.name> | 2018-06-18 18:15:53 +0200 |
|---|---|---|
| committer | Eivind Fonn <evfonn@gmail.com> | 2018-09-11 11:44:54 +0200 |
| commit | ef965243577cb410a8406216f83ab1c819351424 (patch) | |
| tree | 618e902e96b8babea35c8d5d1029ce4d470d5550 /evil-ex.el | |
| parent | 3d9f76f3add56f670042af9421b36dfb8574ad00 (diff) | |
Make `evil-ex-replace-special-filenames' robust to remote (TRAMP) file paths
Diffstat (limited to 'evil-ex.el')
| -rw-r--r-- | evil-ex.el | 14 |
1 files changed, 10 insertions, 4 deletions
@@ -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) |
