From: Tim Vaughan Date: Sun, 23 Jun 2019 08:19:15 +0000 (+0200) Subject: Merge branch 'master' into manual X-Git-Tag: v1.4.4~13 X-Git-Url: https://thelambdalab.xyz/gitweb/index.cgi?p=elpher.git;a=commitdiff_plain;h=71b4b025b5c0450405aae3d342428cfd624ace01;hp=-c Merge branch 'master' into manual --- 71b4b025b5c0450405aae3d342428cfd624ace01 diff --combined elpher.el index c0734ca,3fb2183..cc0da44 --- a/elpher.el +++ b/elpher.el @@@ -4,7 -4,7 +4,7 @@@ ;; Author: Tim Vaughan ;; Created: 11 April 2019 - ;; Version: 1.4.2 + ;; Version: 1.4.3 ;; Keywords: comm gopher ;; Homepage: https://github.com/tgvaughan/elpher ;; Package-Requires: ((emacs "25")) @@@ -26,10 -26,10 +26,10 @@@ ;;; Commentary: -;; Elpher aims to provide a practical gopher client for GNU Emacs. -;; It supports: +;; Elpher aims to provide a practical and friendly gopher client +;; for GNU Emacs. It supports: -;; - intuitive keyboard and mouse-driven interface, +;; - an intuitive keyboard and mouse-driven interface, ;; - caching of visited sites (both content and cursor position), ;; - pleasant and configurable colouring of Gopher directories, ;; - direct visualisation of image files, @@@ -45,9 -45,6 +45,9 @@@ ;; Faces, caching and other options can be configured via ;; the Elpher customization group in Applications. +;; Elpher is under active development, and any suggestions for +;; improvements are welcome! + ;;; Code: (provide 'elpher) @@@ -58,7 -55,7 +58,7 @@@ ;;; Global constants ;; - (defconst elpher-version "1.4.2" + (defconst elpher-version "1.4.3" "Current version of elpher.") (defconst elpher-margin-width 6 @@@ -466,9 -463,14 +466,14 @@@ The contents of the record are dictate (defvar elpher-selector-string) - (defun elpher-get-selector (address after) + (defun elpher-get-selector (address after &optional propagate-error) "Retrieve selector specified by ADDRESS, then execute AFTER. - The result is stored as a string in the variable ‘elpher-selector-string’." + The result is stored as a string in the variable ‘elpher-selector-string’. + + Usually errors result in an error page being displayed. This is only + appropriate if the selector is to be directly viewed. If PROPAGATE-ERROR + is non-nil, this message is not displayed. Instead, the error propagates + up to the calling function." (setq elpher-selector-string "") (when (elpher-address-use-tls-p address) (if (gnutls-available-p) @@@ -483,6 -485,7 +488,7 @@@ (elpher-address-host address) (elpher-address-port address) :type (if elpher-use-tls 'tls 'plain)))) + (set-process-coding-system proc 'binary) (set-process-filter proc (lambda (proc string) (setq elpher-selector-string @@@ -499,11 -502,13 +505,13 @@@ (setq elpher-use-tls nil) (elpher-get-selector address after)) (elpher-process-cleanup) - (elpher-with-clean-buffer - (insert (propertize "\n---- ERROR -----\n\n" 'face 'error) - "Failed to connect to " (elpher-get-address-url address) ".\n" - (propertize "\n----------------\n\n" 'face 'error) - "Press 'u' to return to the previous page.")))))) + (if propagate-error + (error the-error) + (elpher-with-clean-buffer + (insert (propertize "\n---- ERROR -----\n\n" 'face 'error) + "Failed to connect to " (elpher-get-address-url address) ".\n" + (propertize "\n----------------\n\n" 'face 'error) + "Press 'u' to return to the previous page."))))))) ;; Index retrieval @@@ -707,13 -712,17 +715,17 @@@ calls, as is necessary if the match is "gopher.file")))) (message "Downloading...") (setq elpher-download-filename filename) - (elpher-get-selector address - (lambda (proc event) - (let ((coding-system-for-write 'binary)) - (with-temp-file elpher-download-filename - (insert elpher-selector-string) - (message (format "Download complate, saved to file %s." - elpher-download-filename))))))))) + (condition-case the-error + (elpher-get-selector address + (lambda (proc event) + (let ((coding-system-for-write 'binary)) + (with-temp-file elpher-download-filename + (insert elpher-selector-string) + (message (format "Download complate, saved to file %s." + elpher-download-filename))))) + t) + (error + (error "Error downloading %s" elpher-download-filename)))))) ;; URL retrieval @@@ -1053,7 -1062,7 +1065,7 @@@ host, selector and port. (error "No link selected")))) (defun elpher-bookmarks () - "Visit bookmarks." + "Visit bookmarks page." (interactive) (switch-to-buffer "*elpher*") (elpher-visit-node @@@ -1189,11 -1198,7 +1201,11 @@@ "Keymap for gopher client.") (define-derived-mode elpher-mode special-mode "elpher" - "Major mode for elpher, an elisp gopher client.") + "Major mode for elpher, an elisp gopher client. + +This mode is automatically enabled by the interactive +functions which initialize the gopher client, namely +`elpher', `elpher-go' and `elpher-bookmarks'.") (when (fboundp 'evil-set-initial-state) (evil-set-initial-state 'elpher-mode 'motion))