(error "Gemini server response unknown: %s %s"
response-code response-meta))))))
+(unless (fboundp 'read-answer)
+ (defun read-answer (question answers)
+ "Backfill for the new read-answer code."
+ (completing-read question (mapcar 'identity answers))))
+
(defun elpher-choose-client-certificate ()
"Prompt for a client certificate to use to establish a TLS connection."
(let* ((read-answer-short t))
(propertize text-line 'face 'elpher-gemini-quoted))
(t text-line))
text-line))
- (adaptive-fill-mode nil))
+ (adaptive-fill-mode t))
(insert (elpher-process-text-for-display processed-text-line))
(newline)))
;; Use elpher to open gopher, finger and gemini links
(with-eval-after-load 'browse-url
- (add-to-list
- 'browse-url-default-handlers
- '("^\\(gopher\\|finger\\|gemini\\)://" . elpher-browse-url-elpher)))
+ ;; For recent version of `browse-url' package
+ (if (boundp 'browse-url-default-handlers)
+ (add-to-list
+ 'browse-url-default-handlers
+ '("^\\(gopher\\|finger\\|gemini\\)://" . elpher-browse-url-elpher))
+ ;; Patch browse-url-default-browser for older ones
+ (advice-add 'browse-url-default-browser :before-while
+ (lambda (url &rest _args)
+ (let ((scheme (downcase (car (split-string url ":" t)))))
+ (if (member scheme '("gemini" "gopher" "finger"))
+ ;; `elpher-go' always returns nil, which will stop the
+ ;; advice chain here in a before-while
+ (elpher-go url)
+ ;; chain must continue, then return t.
+ t))))))
;; Avoid byte compilation warnings.
(eval-when-compile