X-Git-Url: https://thelambdalab.xyz/gitweb/index.cgi?p=elpher.git;a=blobdiff_plain;f=elpher.el;h=50637b08f3d16a6c020870caef941899a9b0a5d7;hp=75c9a7b8f811c852c1d7a7620f169ae49d94e7f8;hb=b6f31ac74fe81e300dbae73137f511f5d93c3c0d;hpb=f0e773b1f4a8cf25393d6e64bc6183d379f4eca6 diff --git a/elpher.el b/elpher.el index 75c9a7b..50637b0 100644 --- a/elpher.el +++ b/elpher.el @@ -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) @@ -1875,9 +1880,12 @@ supports the old protocol elpher, where the 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 @@ -1927,7 +1935,8 @@ When run interactively HOST-OR-URL is read from the minibuffer." (address (elpher-address-from-url cleaned-host-or-url)) (page (elpher-make-page cleaned-host-or-url address))) (switch-to-buffer elpher-buffer-name) - (elpher-visit-page page) + (elpher-with-clean-buffer + (elpher-visit-page page)) nil)) (defun elpher-go-current () @@ -1987,9 +1996,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 +2292,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