;; Author: Tim Vaughan <tgvaughan@gmail.com>
;; Created: 11 April 2019
-;; Version: 2.3.4
+;; Version: 2.3.5
;; Keywords: comm gopher
;; Homepage: https://github.com/tgvaughan/elpher
;; Package-Requires: ((emacs "26"))
;;; Global constants
;;
-(defconst elpher-version "2.3.4"
+(defconst elpher-version "2.3.5"
"Current version of elpher.")
(defconst elpher-margin-width 6
(gemini elpher-get-gemini-node elpher-render-gemini "gem" elpher-gemini)
(telnet elpher-get-telnet-node nil "tel" elpher-telnet)
(other-url elpher-get-other-url-node nil "url" elpher-other-url)
- ((special bookmarks) elpher-get-bookmarks-node nil)
+ ((special bookmarks) elpher-get-bookmarks-node nil "/" elpher-index)
((special start) elpher-get-start-node nil))
"Association list from types to getters, renderers, margin codes and index faces.")
(if elpher-use-header
(let* ((display-string (elpher-node-display-string elpher-current-node))
(address (elpher-node-address elpher-current-node))
- (url-string (if (elpher-address-special-p address)
- ""
- (concat " - " (elpher-address-to-url address) "")))
- (header (replace-regexp-in-string "%" "%%" (concat display-string
- url-string))))
+ (tls-string (if (and (not (elpher-address-special-p address))
+ (member (elpher-address-protocol address)
+ '("gophers" "gemini")))
+ " [TLS encryption]"
+ ""))
+ (header (concat display-string
+ (propertize tls-string 'face 'bold))))
(setq header-line-format header))))
(defmacro elpher-with-clean-buffer (&rest args)
(setq elpher-selector-string
(concat elpher-selector-string string))))
(set-process-sentinel proc after)
- (process-send-string proc
- (concat (elpher-gopher-address-selector address) "\n")))
+ (let ((inhibit-eol-conversion t))
+ (process-send-string proc
+ (concat (elpher-gopher-address-selector address) "\r\n"))))
(error
(if (and (consp the-error)
(eq (car the-error) 'gnutls-error)
(defun elpher-node-button-help (node)
"Return a string containing the help text for a button corresponding to NODE."
(let ((address (elpher-node-address node)))
- (format "mouse-1, RET: open '%s'" (elpher-address-to-url address))))
+ (format "mouse-1, RET: open '%s'" (if (elpher-address-special-p address)
+ address
+ (elpher-address-to-url address)))))
(defun elpher-insert-index-record (display-string &optional address)
"Function to insert an index record into the current buffer.
(insert string)
(goto-char (point-min))
(while (re-search-forward elpher-url-regex nil t)
- (let ((node (elpher-make-node (match-string 0)
+ (let ((node (elpher-make-node (substring-no-properties (match-string 0))
(elpher-address-from-url (match-string 0)))))
(make-text-button (match-beginning 0)
(match-end 0)
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")
+ (error "Cannot establish gemini connection: GnuTLS not available")
(condition-case the-error
(let* ((kill-buffer-query-functions nil)
+ (network-security-level 'medium)
(proc (open-network-stream "elpher-process"
nil
(elpher-address-host address)
(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")))
+ (let ((inhibit-eol-conversion t))
+ (process-send-string proc
+ (concat (elpher-address-to-url address) "\r\n"))))
(error
(error "Error initiating connection to server")))))
"Alternatively, select the following item and enter some search terms:\n")
(elpher-insert-index-record "Veronica-2 Gopher Search Engine"
(elpher-make-gopher-address ?7 "/v2/vs" "gopher.floodgap.com" 70))
+ (insert "\n"
+ "This page contains your bookmarked sites (also visit with B):\n")
+ (elpher-insert-index-record "Your Bookmarks" 'bookmarks)
(insert "\n"
"** Refer to the ")
(let ((help-string "RET,mouse-1: Open Elpher info manual (if available)"))
(message "No current site.")))
(defun elpher-toggle-tls ()
- "Toggle TLS encryption mode."
+ "Toggle TLS encryption mode for gopher."
(interactive)
(setq elpher-use-tls (not elpher-use-tls))
(if elpher-use-tls