X-Git-Url: https://thelambdalab.xyz/gitweb/index.cgi?a=blobdiff_plain;f=elpher.el;h=08b222771ebbeb346f6a4d14800fcdb4f408950d;hb=5aec951a030e9a2f30d98d9d7aa172c9c1344183;hp=fc4416c3ee821753f032cdb6a506f726ae77e911;hpb=798c375e25d988da94915f2949c51cb8669faf86;p=elpher.git diff --git a/elpher.el b/elpher.el index fc4416c..08b2227 100644 --- a/elpher.el +++ b/elpher.el @@ -60,6 +60,7 @@ (require 'shr) (require 'url-util) (require 'subr-x) +(require 'dns) ;;; Global constants @@ -505,11 +506,13 @@ up to the calling function." (condition-case the-error (let* ((kill-buffer-query-functions nil) (port (elpher-address-port address)) + (host (elpher-address-host address)) (proc (open-network-stream "elpher-process" nil - (elpher-address-host address) + host (if (> port 0) port 70) - :type (if elpher-use-tls 'tls 'plain)))) + :type (if elpher-use-tls 'tls 'plain) + :nowait t))) (set-process-coding-system proc 'binary) (set-process-filter proc (lambda (_proc string) @@ -552,7 +555,8 @@ once they are retrieved from the gopher server." (insert "LOADING... (use 'u' to cancel)")) (elpher-get-selector address (lambda (_proc event) - (unless (string-prefix-p "deleted" event) + (unless (or (string-prefix-p "deleted" event) + (string-prefix-p "open" event)) (funcall renderer elpher-selector-string) (elpher-restore-pos))))))) @@ -726,11 +730,13 @@ The response is rendered using the rendering function RENDERER." ;; Raw server response rendering -(defun elpher-render-raw (data &optional _mime-type-string) - "Display raw DATA in buffer. MIME-TYPE-STRING is unused." +(defun elpher-render-raw (data &optional mime-type-string) + "Display raw DATA in buffer. MIME-TYPE-STRING is also displayed if provided." (if (not data) nil (elpher-with-clean-buffer + (when mime-type-string + (insert "MIME type specified by server: '" mime-type-string "'\n")) (insert data) (goto-char (point-min))) (message "Displaying raw server response. Reload or redraw to return to standard view."))) @@ -782,11 +788,13 @@ The response is stored in the variable ‘elpher-gemini-response’." (let* ((kill-buffer-query-functions nil) (network-security-level 'medium) (port (elpher-address-port address)) + (host (elpher-address-host address)) (proc (open-network-stream "elpher-process" nil - (elpher-address-host address) + host (if (> port 0) port 1965) - :type 'tls))) + :type 'tls + :nowait t))) (set-process-coding-system proc 'binary) (set-process-filter proc (lambda (_proc string) @@ -832,7 +840,8 @@ The response is assumed to be in the variable `elpher-gemini-response'." (query-address (elpher-address-from-url (concat url "?" query-string)))) (elpher-get-gemini-response query-address (lambda (_proc event) - (unless (string-prefix-p "deleted" event) + (unless (or (string-prefix-p "deleted" event) + (string-prefix-p "open" event)) (funcall #'elpher-process-gemini-response renderer) (elpher-restore-pos)))))) @@ -853,7 +862,8 @@ The response is assumed to be in the variable `elpher-gemini-response'." (add-to-list 'elpher-gemini-redirect-chain redirect-address) (elpher-get-gemini-response redirect-address (lambda (_proc event) - (unless (string-prefix-p "deleted" event) + (unless (or (string-prefix-p "deleted" event) + (string-prefix-p "open" event)) (funcall #'elpher-process-gemini-response renderer) (elpher-restore-pos)))))) @@ -885,7 +895,8 @@ The response is assumed to be in the variable `elpher-gemini-response'." (setq elpher-gemini-redirect-chain nil) (elpher-get-gemini-response address (lambda (_proc event) - (unless (string-prefix-p "deleted" event) + (unless (or (string-prefix-p "deleted" event) + (string-prefix-p "open" event)) (funcall #'elpher-process-gemini-response renderer) (elpher-restore-pos))))) @@ -918,6 +929,8 @@ The response is assumed to be in the variable `elpher-gemini-response'." (pcase mime-type ((or "text/gemini" "") (elpher-render-gemini-map body parameters)) + ("text/html" + (elpher-render-html body)) ((pred (string-prefix-p "text/")) (elpher-render-gemini-plain-text body parameters)) ((pred (string-prefix-p "image/"))