X-Git-Url: https://thelambdalab.xyz/gitweb/index.cgi?a=blobdiff_plain;f=elpher.el;h=3d75f36c3c0ce349d5da5262c4eefd8966f296c0;hb=b4e8bb3e2c2574ff291078469f07fe4849e9535d;hp=1758e86d5dabcf3148b70efd0d7183710d1e5cbe;hpb=d96c4a31149d4506fd2f3dbe31830c73b2568bed;p=elpher.git diff --git a/elpher.el b/elpher.el index 1758e86..3d75f36 100644 --- a/elpher.el +++ b/elpher.el @@ -4,7 +4,7 @@ ;; Author: Tim Vaughan ;; Created: 11 April 2019 -;; Version: 2.3.1 +;; Version: 2.3.2 ;; Keywords: comm gopher ;; Homepage: https://github.com/tgvaughan/elpher ;; Package-Requires: ((emacs "26")) @@ -65,7 +65,7 @@ ;;; Global constants ;; -(defconst elpher-version "2.3.1" +(defconst elpher-version "2.3.2" "Current version of elpher.") (defconst elpher-margin-width 6 @@ -644,7 +644,7 @@ If ADDRESS is not supplied or nil the record is rendered as an ;; Text rendering (defconst elpher-url-regex - "\\([a-zA-Z]+\\)://\\([a-zA-Z0-9.\-]+\\|\[[a-zA-Z0-9:]+\]\\)\\(?3::[0-9]+\\)?\\(?4:/[^<> \r\n\t(),]*\\)?" + "\\([a-zA-Z]+\\)://\\([a-zA-Z0-9.\-]*[a-zA-Z0-9\-]\\|\[[a-zA-Z0-9:]+\]\\)\\(:[0-9]+\\)?\\(/\\([0-9a-zA-Z\-_~?/@|:.]*[0-9a-zA-Z\-_~?/@|]\\)?\\)?" "Regexp used to locate and buttniofy URLs in text files loaded by elpher.") (defun elpher-buttonify-urls (string) @@ -776,22 +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))) - (if (not (processp proc)) - (error "Error initiating network connection.") - (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. @@ -838,7 +839,7 @@ The response is assumed to be in the variable `elpher-gemini-response'." (?6 ; Client certificate required (error "Gemini server requires client certificate (unsupported at this time)")) (_other - (error "Gemini server responded with unknown response: %S" + (error "Gemini server response unknown: %S" response-header)))) (error (elpher-network-error (elpher-node-address elpher-current-node) the-error)))) @@ -996,7 +997,7 @@ The response is assumed to be in the variable `elpher-gemini-response'." " - TAB/Shift-TAB: next/prev item on current page\n" " - RET/mouse-1: open item under cursor\n" " - m: select an item on current page by name (autocompletes)\n" - " - u: return to previous page\n" + " - u/mouse-3: return to previous page\n" " - o/O: visit different selector or the root menu of the current server\n" " - g: go to a particular gopher address\n" " - d/D: download item under cursor or current page\n"