Fill links
[elpher.git] / elpher.el
index 9bdc49e..568abb8 100644 (file)
--- a/elpher.el
+++ b/elpher.el
@@ -511,14 +511,17 @@ readability."
   "Return an IRI for URL.
 Decode percent-escapes and handle punycode in the domain name.
 Drop the password, if any."
-  (let* ((address (elpher-address-from-url (elpher-decode (url-unhex-string url))))
-        (host (url-host address))
-        (pass (url-password address)))
-    (when host
-      (setf (url-host address) (puny-decode-domain host)))
-    (when pass                          ; RFC 3986 says we should not render
-      (setf (url-password address) nil)) ; the password as clear text
-    (url-recreate-url address)))
+  (let ((data (match-data))) ; Prevent parsing clobbering match data
+    (unwind-protect
+        (let* ((address (elpher-address-from-url (elpher-decode (url-unhex-string url))))
+               (host (url-host address))
+               (pass (url-password address)))
+          (when host
+            (setf (url-host address) (puny-decode-domain host)))
+          (when pass                            ; RFC 3986 says we should not render
+            (setf (url-password address) nil)) ; the password as clear text
+          (url-recreate-url address))
+      (set-match-data data))))
 
 (defvar elpher-current-page nil
   "The current page for this Elpher buffer.")
@@ -1492,7 +1495,8 @@ treatment that a separate function is warranted."
          (display-string (elpher-gemini-get-link-display-string link-line))
          (address (elpher-address-from-gemini-url url))
          (type (if address (elpher-address-type address) nil))
-         (type-map-entry (cdr (assoc type elpher-type-map))))
+         (type-map-entry (cdr (assoc type elpher-type-map)))
+        (fill-prefix "   "))
     (when display-string
       (insert elpher-gemini-link-string)
       (if type-map-entry
@@ -1506,7 +1510,7 @@ treatment that a separate function is warranted."
                                 'follow-link t
                                 'help-echo #'elpher--page-button-help))
         (insert (propertize display-string 'face 'elpher-unknown)))
-      (insert "\n"))))
+      (newline))))
 
 (defvar elpher--gemini-page-headings nil
   "List of headings on the page.")