X-Git-Url: https://thelambdalab.xyz/gitweb/index.cgi?a=blobdiff_plain;f=elpher.el;h=555f80c839b277415dc89d994c241dd0f9875902;hb=2c636ea3e5ea7d2cb9f8d0e2062f067b68fdaaf0;hp=5b75ce3f522beb11cbcac6fa82f404cde1350ac2;hpb=06f8413403015f8da746a04f6dd24f484a7f3f8c;p=elpher.git diff --git a/elpher.el b/elpher.el index 5b75ce3..555f80c 100644 --- a/elpher.el +++ b/elpher.el @@ -839,7 +839,7 @@ base for the installed key and certificate files." (mapcar (lambda (file) (file-name-sans-extension file)) - (directory-files elpher-certificate-directory nil "\.key$"))) + (directory-files elpher-certificate-directory nil "\\.key$"))) (defun elpher-forget-current-certificate () "Causes any current certificate to be forgotten.) @@ -1401,7 +1401,11 @@ by HEADER-LINE." (1 'elpher-gemini-heading1) (2 'elpher-gemini-heading2) (3 'elpher-gemini-heading3) - (_ 'default)))) + (_ 'default))) + (fill-column (if (display-graphic-p) + (/ (* fill-column + (font-get (font-spec :name (face-font 'default)) :size)) + (font-get (font-spec :name (face-font face)) :size)) fill-column))) (unless (display-graphic-p) (insert (make-string level ?#) " ")) (insert (propertize header 'face face)) @@ -1696,6 +1700,51 @@ If ADDRESS is already bookmarked, update the label only." (not (equal (elpher-bookmark-url bookmark) url))) (elpher-load-bookmarks))))) +;;; Integrations +;; + +(defun elpher-org-link-store () + "Store link to an `elpher' page in org-mode." + (when (eq major-mode 'elpher-mode) + (let ((link (concat "elpher:" (elpher-info-current))) + (desc (car elpher-current-page))) + (org-link-store-props :type "elpher" + :link link + :description desc) + t))) + +(defun elpher-org-link-follow (link _args) + "Follow an `elpher' link in an `org' buffer." + (require 'elpher) + (message (concat "Got link: " link)) + (when (or + (string-match-p "^gemini://.+" link) + (string-match-p "^gopher://.+" link) + (string-match-p "^finger://.+" link)) + (elpher-go (string-remove-prefix "elpher:" link)))) + +(with-eval-after-load "org" + ;; Use `org-link-set-parameters' if defined (org-mode 9+) + (if (fboundp 'org-link-set-parameters) + (org-link-set-parameters "elpher" + :store #'elpher-org-link-store + :follow #'elpher-org-link-follow) + (org-add-link-type "mu4e" 'elpher-org-link-follow) + (add-hook 'org-store-link-functions 'elpher-org-link-store))) + +(defun browse-url-elpher (url &rest _args) + "Browse URL. This function is used by `browse-url'." + (interactive (browse-url-interactive-arg "Elpher URL: ")) + (elpher-go url)) + +(with-eval-after-load "browse-url" + ;; Use elpher to open gopher, finger and gemini links + (when (boundp 'browse-url-default-handlers) + (add-to-list 'browse-url-default-handlers + '("^\\(gopher\\|finger\\|gemini\\)://" . browse-url-elpher))) + ;; Register "gemini://" as a URI scheme so `browse-url' does the right thing + (add-to-list 'thing-at-point-uri-schemes "gemini://")) + ;;; Interactive procedures ;;