X-Git-Url: https://thelambdalab.xyz/gitweb/index.cgi?a=blobdiff_plain;f=elpher.el;h=a144c8896aa21d2190800efb2e7db24963d7356c;hb=81598c983ca6dbe266c09fbaa27a1ae68b882ae8;hp=9c0138b3868b5f8ab2971ac89ddf560c2bb2e038;hpb=2f3ba5d038eb1c65dbfb2a1cda3636aa80f6e448;p=elpher.git diff --git a/elpher.el b/elpher.el index 9c0138b..a144c88 100644 --- a/elpher.el +++ b/elpher.el @@ -4,7 +4,7 @@ ;; Author: Tim Vaughan ;; Created: 11 April 2019 -;; Version: 2.2.0 +;; Version: 2.3.1 ;; Keywords: comm gopher ;; Homepage: https://github.com/tgvaughan/elpher ;; Package-Requires: ((emacs "26")) @@ -65,7 +65,7 @@ ;;; Global constants ;; -(defconst elpher-version "2.2.0" +(defconst elpher-version "2.3.1" "Current version of elpher.") (defconst elpher-margin-width 6 @@ -428,8 +428,10 @@ unless PRESERVE-PARENT is non-nil." (address (elpher-node-address elpher-current-node)) (url-string (if (elpher-address-special-p address) "" - (concat " - " (elpher-address-to-url address) "")))) - (setq header-line-format (list display-string url-string))))) + (concat " - " (elpher-address-to-url address) ""))) + (header (replace-regexp-in-string "%" "%%" (concat display-string + url-string)))) + (setq header-line-format header)))) (defmacro elpher-with-clean-buffer (&rest args) "Evaluate ARGS with a clean *elpher* buffer as current." @@ -774,21 +776,23 @@ The response is stored in the variable ‘elpher-gemini-response’." (setq elpher-gemini-response "") (if (not (gnutls-available-p)) (error "Cannot retrieve TLS selector: GnuTLS not available") - (let* ((kill-buffer-query-functions nil) - (proc (open-network-stream "elpher-process" - nil - (elpher-address-host address) - (elpher-address-port address) - :type 'tls))) - (set-process-coding-system proc 'binary) - (set-process-filter proc - (lambda (_proc string) - (setq elpher-gemini-response - (concat elpher-gemini-response string)))) - (set-process-sentinel proc after) - (process-send-string proc - (concat (elpher-address-to-url address) "\r\n"))))) - + (condition-case the-error + (let* ((kill-buffer-query-functions nil) + (proc (open-network-stream "elpher-process" + nil + (elpher-address-host address) + (elpher-address-port address) + :type 'tls))) + (set-process-coding-system proc 'binary) + (set-process-filter proc + (lambda (_proc string) + (setq elpher-gemini-response + (concat elpher-gemini-response string)))) + (set-process-sentinel proc after) + (process-send-string proc + (concat (elpher-address-to-url address) "\r\n"))) + (error + (error "Error initiating connection to server"))))) (defun elpher-process-gemini-response (renderer) "Process the gemini response and pass the result to RENDERER. @@ -827,14 +831,16 @@ The response is assumed to be in the variable `elpher-gemini-response'." renderer) (elpher-restore-pos)))))) (?4 ; Temporary failure - (error "Gemini server reports TEMPORARY FAILURE for this request")) + (error "Gemini server reports TEMPORARY FAILURE for this request: %S" + response-header)) (?5 ; Permanent failure - (error "Gemini server reports PERMANENT FAILURE for this request")) + (error "Gemini server reports PERMANENT FAILURE for this request: %S" + response-header)) (?6 ; Client certificate required (error "Gemini server requires client certificate (unsupported at this time)")) (_other - (error "Gemini server responded with unknown response code %S" - response-code)))) + (error "Gemini server response unknown: %S" + response-header)))) (error (elpher-network-error (elpher-node-address elpher-current-node) the-error))))