From 1d290898e1353278d445091a8ca3ba8198c6d16a Mon Sep 17 00:00:00 2001 From: cage Date: Sat, 4 Dec 2021 14:33:53 +0100 Subject: [PATCH] - [gemini] fixed building of URI in 'open-next-visible-link'. --- src/iri-parser.lisp | 12 ++++++++++++ src/ui-goodies.lisp | 21 +++++++++++---------- 2 files changed, 23 insertions(+), 10 deletions(-) diff --git a/src/iri-parser.lisp b/src/iri-parser.lisp index db5f0cf..ecec0fb 100644 --- a/src/iri-parser.lisp +++ b/src/iri-parser.lisp @@ -245,6 +245,18 @@ (defclass iri (uri:uri) ()) +(defmethod print-object ((object iri) stream) + (print-unreadable-object (object stream) + (format stream + "~s ~s ~s ~s ~s ~s ~s" + (uri:scheme object) + (uri:user-info object) + (uri:host object) + (uri:port object) + (uri:path object) + (uri:query object) + (uri:fragment object)))) + (defun make-iri (&optional scheme user-info host port path query fragment) (make-instance 'iri :scheme scheme diff --git a/src/ui-goodies.lisp b/src/ui-goodies.lisp index 5f73729..f4d9374 100644 --- a/src/ui-goodies.lisp +++ b/src/ui-goodies.lisp @@ -1219,16 +1219,17 @@ Browse and optionally open the links the text of the message window contains." (when-let* ((visible-rows (message-window:visible-rows *message-window*)) (link-line (message-window:row-find-original-object visible-rows 'gemini-parser:link-line)) - (link-object (message-window:extract-original-object link-line)) - (uri (gemini-parser::link-value link-object)) - (current-url (iri:iri-parse (gemini-viewer:current-gemini-url))) - (absolute-uri (if (iri:absolute-url-p uri) - uri - (gemini-parser:absolutize-link uri - (uri:host current-url) - (uri:port current-url) - nil)))) - (open-message-link-window:open-message-link absolute-uri nil))) + (link-object (message-window:extract-original-object link-line))) + (let* ((uri (gemini-parser::link-value link-object)) + (current-url (ignore-errors (iri:iri-parse (gemini-viewer:current-gemini-url)))) + (absolute-uri (if (or (null current-url) + (iri:absolute-url-p uri)) + uri + (gemini-parser:absolutize-link uri + (uri:host current-url) + (uri:port current-url) + (uri:path current-url))))) + (open-message-link-window:open-message-link absolute-uri nil)))) (defun go-to-next-link () (when-let* ((win *message-window*)