X-Git-Url: https://thelambdalab.xyz/gitweb/index.cgi?p=elpher.git;a=blobdiff_plain;f=elpher.el;h=87729f59892decb7c831d0ce77bab637d3ef2685;hp=90f76724b46771589b7c0a0eb4ac2f0abd3f47b3;hb=b247a2fed578b0c7f819c65423e955126c3d17b3;hpb=7a1b1e2c9e9cc877b4378fddb94bed48d9955c4b diff --git a/elpher.el b/elpher.el index 90f7672..87729f5 100644 --- a/elpher.el +++ b/elpher.el @@ -156,7 +156,7 @@ (defcustom elpher-open-urls-with-eww nil "If non-nil, open URL selectors using eww. -Otherwise, use the system browser via the BROWSE-URL function." +Otherwise, use the system browser via the `browse-url' function." :type '(boolean)) (defcustom elpher-use-header t @@ -399,6 +399,11 @@ requiring gopher-over-TLS." "Create an ADDRESS object corresponding to the given special address symbol TYPE." type) +(defun elpher-make-start-page () + "Create the start page." + (elpher-make-page "Elpher Start Page" + (elpher-make-special-address 'start))) + (defun elpher-address-to-url (address) "Get string representation of ADDRESS, or nil if ADDRESS is special." (if (elpher-address-special-p address) @@ -1827,8 +1832,8 @@ of gemini, gopher or finger." (defun elpher-org-follow-link (link protocol) "Visit a LINK for the given PROTOCOL. -PROTOCOL may be one of gemini, gopher or finger. This method also support old -paramter elpher, where link is self-contained." +PROTOCOL may be one of gemini, gopher or finger. This method also +supports the old protocol elpher, where the link is self-contained." (let ((url (if (equal protocol "elpher") (string-remove-prefix "elpher:" link) (format "%s:%s" protocol link)))) @@ -1875,9 +1880,12 @@ paramter elpher, where link is self-contained." (add-to-list 'browse-url-default-handlers '("^\\(gopher\\|finger\\|gemini\\)://" . elpher-browse-url-elpher)) - ;; Patch browse-url-default-browser for older ones - (advice-add 'browse-url-default-browser :before-while + ;; Patch `browse-url-browser-function' for older ones. The value of + ;; that variable is `browse-url-default-browser' by default, so + ;; that's the function that gets advised. + (advice-add browse-url-browser-function :before-while (lambda (url &rest _args) + "Handle gemini, gopher, and finger schemes using Elpher." (let ((scheme (downcase (car (split-string url ":" t))))) (if (member scheme '("gemini" "gopher" "finger")) ;; `elpher-go' always returns nil, which will stop the @@ -1987,9 +1995,7 @@ When run interactively HOST-OR-URL is read from the minibuffer." (interactive) (setq-local elpher-current-page nil) (setq-local elpher-history nil) - (let ((start-page (elpher-make-page "Elpher Start Page" - (elpher-make-special-address 'start)))) - (elpher-visit-page start-page))) + (elpher-visit-page (elpher-make-start-page))) (defun elpher-download () "Download the link at point." @@ -2285,10 +2291,7 @@ to create a new session. Returns the buffer selected (or created)." (pop-to-buffer-same-window buf) (unless (buffer-modified-p) (elpher-mode) - (let ((start-page (elpher-make-page - "Elpher Start Page" - (elpher-make-special-address 'start)))) - (elpher-visit-page start-page)) + (elpher-visit-page (elpher-make-start-page)) "Started Elpher."))); Otherwise (elpher) evaluates to start page string. ;;; elpher.el ends here