;; 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
"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
(_ 'default)))
"\n"))))
+(defun elpher-gemini-insert-text (text-line)
+ "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))
+ nil)))
+ (newline)))
+
(defun elpher-render-gemini-map (data _parameters)
"Render DATA as a gemini map file, PARAMETERS is currently unused."
(elpher-with-clean-buffer
"\n"))
((string-prefix-p "=>" line) (elpher-gemini-insert-link line))
((string-prefix-p "#" line) (elpher-gemini-insert-header line))
- (t (insert (elpher-process-text-for-display line)) (newline)))))
+ (t (elpher-gemini-insert-text line)))))
(elpher-cache-content
(elpher-page-address elpher-current-page)
(buffer-string))))
(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)))