diff --git a/src/gemini-viewer.lisp b/src/gemini-viewer.lisp index 0ee5fc2..de2983d 100644 --- a/src/gemini-viewer.lisp +++ b/src/gemini-viewer.lisp @@ -547,7 +547,6 @@ :running)))) (multiple-value-bind (actual-iri host path query port fragment) (gemini-client:displace-iri parsed-iri) - (declare (ignore actual-iri)) (gemini-client:debug-gemini "response is a stream") (labels ((make-text-based-stream (gemini-format-p) (let* ((starting-status (starting-status meta)) @@ -586,6 +585,7 @@ (cond ((gemini-client:gemini-file-stream-p meta) (gemini-client:debug-gemini "response is a gemini document stream") + (push-url-to-history specials:*message-window* actual-iri) (make-text-based-stream t)) ((gemini-client:text-file-stream-p meta) (gemini-client:debug-gemini "response is a text stream") @@ -712,7 +712,6 @@ (if (find-db-stream-url actual-iri) (progn (gemini-client:debug-gemini "caching found for ~a" actual-iri) - (push-url-to-history specials:*message-window* actual-iri) (db-entry-to-foreground actual-iri)) (progn (gemini-client:debug-gemini "caching *not* found for ~a" actual-iri) @@ -727,7 +726,6 @@ (find-db-stream-url actual-iri))) (when (null enqueue) (ensure-just-one-stream-rendering)) - (push-url-to-history specials:*message-window* actual-iri) (gemini-client:request-dispatch url gemini-client::dispatch-table :certificate certificate diff --git a/src/gopher-window.lisp b/src/gopher-window.lisp index 67f8834..f2bf5ed 100644 --- a/src/gopher-window.lisp +++ b/src/gopher-window.lisp @@ -212,49 +212,49 @@ port type selector))) - (gemini-viewer:push-url-to-history message-win link))) - (cond - ((gopher-parser::%line-type-dir-p type) - (let ((data (misc:make-fresh-array 0 :type '(unsigned-int 8)))) - (gopher-client:request host - type - :port port - :selector selector - :collect-fn (gopher-client:make-collect-fn data)) - (init) - (ui:focus-to-gopher-window) - (print-response-rows *gopher-window* - (gopher-parser:parse-menu (text-utils:to-s data))) - (select-row *gopher-window* 0) - (draw *gopher-window*))) - ((gopher-parser::%line-type-file-p type) - (win-close *gopher-window*) - (let ((data (misc:make-fresh-array 0 :type '(unsigned-int 8)))) - (gopher-client:request host - type - :port port - :selector selector - :collect-fn (gopher-client:make-collect-fn data)) - (let* ((text (to-s data)) - (raw-lines (split-lines (gopher-parser:parse-text-file text))) - (lines (mapcar (lambda (a) - (message-window:text->rendered-lines-rows *message-window* - a)) - raw-lines))) - (line-oriented-window:update-all-rows *message-window* (a:flatten lines)) - (draw *message-window*) - (ui:focus-to-message-window)))) - (t - (fs:with-anaphoric-temp-file (stream) - (gopher-client:request host - type - :port port - :selector selector - :collect-fn (lambda (buffer) - (write-sequence buffer stream))) - (finish-output stream) - (os-utils:open-resource-with-external-program filesystem-utils:temp-file - nil))))) + (cond + ((gopher-parser::%line-type-dir-p type) + (gemini-viewer:push-url-to-history message-win link) + (let ((data (misc:make-fresh-array 0 :type '(unsigned-int 8)))) + (gopher-client:request host + type + :port port + :selector selector + :collect-fn (gopher-client:make-collect-fn data)) + (init) + (ui:focus-to-gopher-window) + (print-response-rows *gopher-window* + (gopher-parser:parse-menu (text-utils:to-s data))) + (select-row *gopher-window* 0) + (draw *gopher-window*))) + ((gopher-parser::%line-type-file-p type) + (win-close *gopher-window*) + (let ((data (misc:make-fresh-array 0 :type '(unsigned-int 8)))) + (gopher-client:request host + type + :port port + :selector selector + :collect-fn (gopher-client:make-collect-fn data)) + (let* ((text (to-s data)) + (raw-lines (split-lines (gopher-parser:parse-text-file text))) + (lines (mapcar (lambda (a) + (message-window:text->rendered-lines-rows *message-window* + a)) + raw-lines))) + (line-oriented-window:update-all-rows *message-window* (a:flatten lines)) + (draw *message-window*) + (ui:focus-to-message-window)))) + (t + (fs:with-anaphoric-temp-file (stream) + (gopher-client:request host + type + :port port + :selector selector + :collect-fn (lambda (buffer) + (write-sequence buffer stream))) + (finish-output stream) + (os-utils:open-resource-with-external-program filesystem-utils:temp-file + nil))))))) (defun open-menu-link () (a:when-let* ((win *gopher-window*)