Add defun to make the start page
[elpher.git] / elpher.el
index 90f7672..87729f5 100644 (file)
--- a/elpher.el
+++ b/elpher.el
 
 (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