;; Author: Tim Vaughan <plugd@thelambdalab.xyz>
;; Created: 11 April 2019
-;; Version: 2.7.6
+;; Version: 2.7.8
;; Keywords: comm gopher
;; Homepage: http://thelambdalab.xyz/elpher
;; Package-Requires: ((emacs "26"))
;;; Global constants
;;
-(defconst elpher-version "2.7.6"
+(defconst elpher-version "2.7.8"
"Current version of elpher.")
(defconst elpher-margin-width 6
the time when the text is rendered."
:type '(integer))
+(defcustom elpher-gemini-link-string "→ "
+ "Specify the string used to indicate links when rendering gemini maps.
+May be empty."
+ :type '(string))
+
+(defcustom elpher-gemini-bullet-string "•"
+ "Specify the string used for bullets when rendering gemini maps."
+ :type '(string))
+
(defcustom elpher-bookmarks-file (locate-user-emacs-file "elpher-bookmarks")
"Specify the name of the file where elpher bookmarks will be saved."
:type '(file))
"Retrieve gopher selector from ADDRESS object."
(if (member (url-filename address) '("" "/"))
""
- (substring (url-filename address) 2)))
+ (url-unhex-string (substring (url-filename address) 2))))
;; Cache
(type (if address (elpher-address-type address) nil))
(type-map-entry (cdr (assoc type elpher-type-map))))
(when display-string
- (insert "→ ")
+ (insert elpher-gemini-link-string)
(if type-map-entry
(let* ((face (elt type-map-entry 3))
(filtered-display-string (ansi-color-filter-apply display-string))
"Insert a plain non-preformatted TEXT-LINE into a text/gemini document.
This function uses Emacs' auto-fill to wrap text sensibly to a maximum
width defined by elpher-gemini-max-fill-width."
- (insert (elpher-process-text-for-display text-line))
- (let* ((prefix-end-idx (string-match "[^ \t*]" text-line))
- (fill-prefix (if prefix-end-idx
- (let ((raw-prefix (substring text-line 0 prefix-end-idx)))
- (replace-regexp-in-string "\*" " " raw-prefix))
+ (string-match "\\(^[ \t]*\\)\\(\*[ \t]\\)?" text-line)
+ (let* ((processed-text-line (if (match-string 2 text-line)
+ (concat
+ (replace-regexp-in-string "\*"
+ elpher-gemini-bullet-string
+ (match-string 0 text-line))
+ (substring text-line (match-end 0)))
+ text-line))
+ (fill-prefix (if (match-string 1 text-line)
+ (replace-regexp-in-string "\*" " " (match-string 0 text-line))
nil)))
+ (insert (elpher-process-text-for-display processed-text-line))
(newline)))
(defun elpher-render-gemini-map (data _parameters)
(switch-to-buffer "*elpher*")
(switch-to-buffer "*elpher*")
(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)))