branch: master commit f60d10e5ae51d1289631e0597a9c9e0a1c5e1ca2 Author: Oleh Krehel <ohwoeo...@gmail.com> Commit: Oleh Krehel <ohwoeo...@gmail.com>
"C-x C-f M-n" can call ffap-url-fetcher when at URL * ivy.el (ivy--cd-maybe): Check if the input is a valid URL. If so, exit immediately by calling (funcall ffap-url-fetcher url). Otherwise, do the usual `ivy--cd' thing. --- ivy.el | 26 ++++++++++++++++++-------- 1 files changed, 18 insertions(+), 8 deletions(-) diff --git a/ivy.el b/ivy.el index af9f389..6a900fb 100644 --- a/ivy.el +++ b/ivy.el @@ -693,16 +693,26 @@ Call the permanent action if possible." (defun ivy--cd-maybe () "Check if the current input points to a different directory. If so, move to that directory, while keeping only the file name." + (require 'ffap) (when ivy--directory - (let* ((input (expand-file-name (ivy--input))) - (file (file-name-nondirectory input)) - (dir (expand-file-name (file-name-directory input)))) - (if (string= dir ivy--directory) + (let ((input (ivy--input)) + url) + (if (setq url (ffap-url-p input)) (progn - (delete-minibuffer-contents) - (insert file)) - (ivy--cd dir) - (insert file))))) + (ivy-set-action + (lambda (_) + (funcall ffap-url-fetcher url))) + (setq ivy-exit 'done) + (exit-minibuffer)) + (setq input (expand-file-name input)) + (let ((file (file-name-nondirectory input)) + (dir (expand-file-name (file-name-directory input)))) + (if (string= dir ivy--directory) + (progn + (delete-minibuffer-contents) + (insert file)) + (ivy--cd dir) + (insert file))))))) (defun ivy--maybe-scroll-history () "If the selected history element has an index, scroll there."