diff --git a/eaf-org.el b/eaf-org.el index efb35b9..e14ecd6 100644 --- a/eaf-org.el +++ b/eaf-org.el @@ -45,7 +45,7 @@ :group 'org-link) (defvar eaf-org-override-pdf-links-list - '("pdfview" "pdftools") + '("docview" "pdfview" "pdftools") "A list of all PDF file link types which will be override by EAF open function.") (defun eaf-org-store-link () @@ -68,10 +68,20 @@ The raw link looks like this: [[eaf:::::]]" (concat "eaf:" app "::" url "::" extra-args) (concat "eaf:" app "::" url))) (description (buffer-name))) - (org-link-store-props - :type "eaf" - :link link - :description description)))) + (if (and (string-equal app "pdf-viewer") + eaf-org-override-pdf-links + (or (equal (org-link-get-parameter "docview" :follow) 'eaf-org-open) + (equal (org-link-get-parameter "pdfview" :follow) 'eaf-org-open) + (equal (org-link-get-parameter "pdftools" :follow) 'eaf-org-open))) + (org-link-store-props + :type "eaf" + :link link + :description description) + (require 'ol-docview) ; use `docview' for most wide compatible support. + (org-link-store-props + :type "docview" + :link url + :description description))))) (defun eaf-org-open (link _) "Open EAF link with EAF correspoinding application." @@ -118,8 +128,9 @@ The raw link looks like this: [[eaf:::::]]" (if eaf-org-override-pdf-links (dolist (type eaf-org-override-pdf-links-list) - (org-link-set-parameters ; store original :follow function - type :orig-follow (org-link-get-parameter type :follow)) - (org-link-set-parameters type :follow #'eaf-org-open))) + (when (org-link-get-parameter type :follow) ; if `nil' means `ol-' not loaded. + (org-link-set-parameters ; store original `:follow' function + type :orig-follow (org-link-get-parameter type :follow)) + (org-link-set-parameters type :follow #'eaf-org-open)))) (provide 'eaf-org)