Prevents indenting gemini lines prefixed only with spaces.
[elpher.git] / elpher.el
index a869b6a..694d8af 100644 (file)
--- a/elpher.el
+++ b/elpher.el
@@ -5,7 +5,7 @@
 
 ;; Author: Tim Vaughan <plugd@thelambdalab.xyz>
 ;; Created: 11 April 2019
-;; Version: 3.3.1
+;; Version: 3.3.2
 ;; Keywords: comm gopher
 ;; Homepage: https://thelambdalab.xyz/elpher
 ;; Package-Requires: ((emacs "27.1"))
@@ -70,7 +70,7 @@
 ;;; Global constants
 ;;
 
-(defconst elpher-version "3.3.1"
+(defconst elpher-version "3.3.2"
   "Current version of elpher.")
 
 (defconst elpher-margin-width 6
   (declare-function org-link-store-props "ol")
   (declare-function org-link-set-parameters "ol")
   (defvar ansi-color-context)
+  (defvar xterm-color--current-fg)
+  (defvar xterm-color--current-bg)
   (defvar bookmark-make-record-function)
   (defvar mu4e~view-beginning-of-url-regexp)
   (defvar eww-use-browse-url)
@@ -423,7 +425,17 @@ For gopher addresses this is a combination of the selector type and selector."
 
 (defun elpher-address-host (address)
   "Retrieve host from ADDRESS object."
-  (url-host address))
+  (let ((host-pre (url-host address)))
+    ;; The following strips out square brackets which sometimes enclose IPv6
+    ;; addresses.  Doing this here rather than at the parsing stage may seem
+    ;; weird, but this lets us way we avoid having to muck with both URL parsing
+    ;; and reconstruction.  It's also more efficient, as this method is not
+    ;; called during page rendering.
+    (if (and (> (length host-pre) 2)
+             (eq (elt host-pre 0) ?\[)
+             (eq (elt host-pre (- (length host-pre) 1)) ?\]))
+        (substring host-pre 1 (- (length host-pre) 1))
+      host-pre)))
 
 (defun elpher-address-user (address)
   "Retrieve user from ADDRESS object."
@@ -628,7 +640,9 @@ previously-visited pages,unless NO-HISTORY is non-nil."
        ;; avoid resetting buffer-local variables
        (elpher-mode))
      (let ((inhibit-read-only t)
-           (ansi-color-context nil)) ;; clean ansi interpreter state
+           (ansi-color-context nil)) ;; clean ansi interpreter state (also next 2 lines)
+       (setq-local xterm-color--current-fg nil)
+       (setq-local xterm-color--current-bg nil)
        (setq-local network-security-level
                    (default-value 'network-security-level))
        (erase-buffer)
@@ -1570,7 +1584,7 @@ width defined by `elpher-gemini-max-fill-width'."
             text-line))
          (fill-prefix (if line-prefix
                           (make-string (length (match-string 0 text-line)) ?\s)
-                        nil)))
+                        "")))
     (insert (elpher-process-text-for-display processed-text-line))
     (newline)))