Merge remote-tracking branch 'origin/patch_gus'
[elpher.git] / elpher.el
index b5373f4..b4b62d8 100644 (file)
--- a/elpher.el
+++ b/elpher.el
@@ -26,8 +26,8 @@
 
 ;;; Commentary:
 
-;; Elpher aims to provide a practical and friendly gopher client
-;; for GNU Emacs.  It supports:
+;; Elpher aims to provide a practical and friendly gopher, gemini,
+;; and finger client for GNU Emacs.  It supports:
 
 ;; - intuitive keyboard and mouse-driven browsing,
 ;; - out-of-the-box compatibility with evil-mode,
@@ -265,6 +265,7 @@ The basic attributes include: TYPE, SELECTOR, HOST and PORT.
 If the optional attribute TLS is non-nil, the address will be marked as
 requiring gopher-over-TLS."
   (cond
+   ((equal type ?i) nil)
    ((and (equal type ?h)
          (string-prefix-p "URL:" selector))
     (elpher-address-from-url (elt (split-string selector "URL:") 1)))
@@ -698,7 +699,7 @@ If ADDRESS is not supplied or nil the record is rendered as an
                               'follow-link t
                               'help-echo (elpher-page-button-help page)))
       (pcase type
-        ((or '(gopher ?i) 'nil) ;; Information
+        ('nil ;; Information
          (elpher-insert-margin)
          (let ((propertized-display-string
                 (propertize display-string 'face 'elpher-info)))
@@ -1046,7 +1047,7 @@ that the response was malformed."
         ((pred (string-prefix-p "image/"))
          (elpher-render-image body))
         (_other
-         (error "Unsupported MIME type %S" mime-type))))))
+         (elpher-render-download body))))))
 
 (defun elpher-gemini-get-link-url (link-line)
   "Extract the url portion of LINK-LINE, a gemini map file link line.
@@ -1282,7 +1283,7 @@ by HEADER-LINE."
            " - m: select an item on current page by name (autocompletes)\n"
            " - u/mouse-3: return to previous page\n"
            " - o/O: visit different selector or the root menu of the current server\n"
-           " - g: go to a particular gopher address\n"
+           " - g: go to a particular address (gopher, gemini, finger)\n"
            " - d/D: download item under cursor or current page\n"
            " - i/I: info on item under cursor or current page\n"
            " - c/C: copy URL representation of item under cursor or current page\n"
@@ -1299,9 +1300,11 @@ by HEADER-LINE."
    (elpher-insert-index-record "Floodgap Systems Gopher Server"
                                (elpher-make-gopher-address ?1 "" "gopher.floodgap.com" 70))
    (insert "\n"
-           "Alternatively, select the following item and enter some search terms:\n")
+           "Alternatively, select a search engine and enter some search terms:\n")
    (elpher-insert-index-record "Veronica-2 Gopher Search Engine"
                                (elpher-make-gopher-address ?7 "/v2/vs" "gopher.floodgap.com" 70))
+   (elpher-insert-index-record "GUS Gemini Search Engine"
+                               (elpher-address-from-url "gemini://gus.guru/search"))
    (insert "\n"
            "This page contains your bookmarked sites (also visit with B):\n")
    (elpher-insert-index-record "Your Bookmarks" 'bookmarks)
@@ -1692,6 +1695,7 @@ When run interactively HOST-OR-URL is read from the minibuffer."
   (let ((map (make-sparse-keymap)))
     (define-key map (kbd "TAB") 'elpher-next-link)
     (define-key map (kbd "<backtab>") 'elpher-prev-link)
+    (define-key map (kbd "C-M-i") 'elpher-prev-link)
     (define-key map (kbd "u") 'elpher-back)
     (define-key map [mouse-3] 'elpher-back)
     (define-key map (kbd "O") 'elpher-root-dir)