Joseph Turner <jos...@ushin.org> writes:
> - When handling "file" type links, check if `org-current-uri-scheme'
> matches one of the keys in `org-link-parameters', and use the
> appropriate handler instead of the "file" handler.  (see attached patch
> for an example usage in `org-link-open')

Please ignore the last patch - this one checks for a "file:" prefix.

Joseph

diff --git a/lisp/ol.el b/lisp/ol.el
index 20aab6bb8..947576ddb 100644
--- a/lisp/ol.el
+++ b/lisp/ol.el
@@ -1097,12 +1097,16 @@ (defun org-link-open (link &optional arg)
       ;; first need to integrate search option, if any.
       ("file"
        (let* ((option (org-element-property :search-option link))
-	      (path (if option (concat path "::" option) path)))
-	 (org-link-open-as-file path
-				(pcase (org-element-property :application link)
-				  ((guard arg) arg)
-				  ("emacs" 'emacs)
-				  ("sys" 'system)))))
+	      (path (if option (concat path "::" option) path))
+              (f (org-link-get-parameter org-current-uri-scheme :follow)))
+	 (if (and (not (org-element-property :type-explicit-p link))
+                  (functionp f))
+             (funcall f path)
+           (org-link-open-as-file path
+				  (pcase (org-element-property :application link)
+				    ((guard arg) arg)
+				    ("emacs" 'emacs)
+				    ("sys" 'system))))))
       ;; Internal links.
       ((or "coderef" "custom-id" "fuzzy" "radio")
        (unless (run-hook-with-args-until-success 'org-open-link-functions path)

Reply via email to