X-Git-Url: https://thelambdalab.xyz/gitweb/index.cgi?p=elpher.git;a=blobdiff_plain;f=elpher.el;h=6e885e4fd6cee567b2de65d9d371af64a063f8a6;hp=bc74a053c5897b38120d8253f575d4d9c55103e9;hb=5673f22d815514387a029844954c8ec4793f61e0;hpb=c0dc580806b28a7ff281026203e4e6dcdaaccb5d diff --git a/elpher.el b/elpher.el index bc74a05..6e885e4 100644 --- a/elpher.el +++ b/elpher.el @@ -4,7 +4,7 @@ ;; Author: Tim Vaughan ;; Created: 11 April 2019 -;; Version: 2.7.8 +;; Version: 2.7.9 ;; Keywords: comm gopher ;; Homepage: http://thelambdalab.xyz/elpher ;; Package-Requires: ((emacs "26")) @@ -70,7 +70,7 @@ ;;; Global constants ;; -(defconst elpher-version "2.7.8" +(defconst elpher-version "2.7.9" "Current version of elpher.") (defconst elpher-margin-width 6 @@ -161,6 +161,11 @@ May be empty." "Specify the name of the file where elpher bookmarks will be saved." :type '(file)) +(defcustom elpher-force-ipv4 nil + "If non-nil, force elpher to use ipv4 instead of trying an ipv6 address +and falling back to an ipv4 address" + :type '(boolean)) + ;; Face customizations (defgroup elpher-faces nil @@ -585,7 +590,7 @@ to ADDRESS." (progn (message "Disabling TLS mode.") (setq elpher-use-tls nil) - (elpher-get-selector address renderer)) + (elpher-get-selector address renderer elpher-force-ipv4)) (elpher-network-error address "Could not establish encrypted connection"))) ('connect (elpher-process-cleanup) @@ -649,7 +654,7 @@ once they are retrieved from the gopher server." (elpher-with-clean-buffer (insert "LOADING... (use 'u' to cancel)\n")) (condition-case the-error - (elpher-get-selector address renderer) + (elpher-get-selector address renderer elpher-force-ipv4) (error (elpher-network-error address the-error)))))) @@ -829,7 +834,7 @@ The response is rendered using the rendering function RENDERER." (elpher-with-clean-buffer (insert "LOADING RESULTS... (use 'u' to cancel)")) - (elpher-get-selector search-address renderer)) + (elpher-get-selector search-address renderer elpher-force-ipv4)) (if aborted (elpher-visit-previous-page)))))) @@ -1211,7 +1216,10 @@ width defined by elpher-gemini-max-fill-width." ;; Finger page connection (defun elpher-get-finger-page (renderer &optional force-ipv4) - "Opens a finger connection to the current page address and renders it using RENDERER." + "Opens a finger connection to the current page address. +The result is rendered using RENDERER. When the optional argument +FORCE-IPV4 is non-nil, the IPv4 address returned by a DNS lookup will +be used explicitly in making the connection." (let* ((address (elpher-page-address elpher-current-page)) (content (elpher-get-cached-content address))) (if (and content (funcall renderer nil)) @@ -1324,7 +1332,7 @@ width defined by elpher-gemini-max-fill-width." " - 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/mouse-3: return to previous page\n" + " - u/mouse-3/U: return to previous page or to the start page\n" " - o/O: visit different selector or the root menu of the current server\n" " - g: go to a particular address (gopher, gemini, finger)\n" " - d/D: download item under cursor or current page\n" @@ -1553,6 +1561,15 @@ When run interactively HOST-OR-URL is read from the minibuffer." (interactive) (elpher-visit-previous-page)) +(defun elpher-back-to-start () + "Go all the way back to the start page." + (interactive) + (setq elpher-current-page nil) + (setq elpher-history nil) + (let ((start-page (elpher-make-page "Elpher Start Page" + (elpher-make-special-address 'start)))) + (elpher-visit-page start-page))) + (defun elpher-download () "Download the link at point." (interactive) @@ -1742,6 +1759,7 @@ When run interactively HOST-OR-URL is read from the minibuffer." (define-key map (kbd "") 'elpher-prev-link) (define-key map (kbd "C-M-i") 'elpher-prev-link) (define-key map (kbd "u") 'elpher-back) + (define-key map (kbd "U") 'elpher-back-to-start) (define-key map [mouse-3] 'elpher-back) (define-key map (kbd "O") 'elpher-root-dir) (define-key map (kbd "g") 'elpher-go) @@ -1769,6 +1787,7 @@ When run interactively HOST-OR-URL is read from the minibuffer." (kbd "C-") 'elpher-follow-current-link (kbd "C-t") 'elpher-back (kbd "u") 'elpher-back + (kbd "U") 'elpher-back-to-start [mouse-3] 'elpher-back (kbd "g") 'elpher-go (kbd "o") 'elpher-go-current