From f07441006afb93d3e6ab5d6f29e4fe236fd2443c Mon Sep 17 00:00:00 2001 From: Alex Schroeder Date: Thu, 23 Jul 2020 16:10:29 +0200 Subject: [PATCH] Use xterm-color instead of ansi-color, if possible xterm-color isn't part of Emacs, so require it but if it can't be found, require ansi-color instead. Then use two aliases that point either the xterm-color code or to ansi-color code. --- elpher.el | 26 +++++++++++++++++++++----- 1 file changed, 21 insertions(+), 5 deletions(-) diff --git a/elpher.el b/elpher.el index 29687f1..cd9869c 100644 --- a/elpher.el +++ b/elpher.el @@ -63,10 +63,26 @@ (require 'url-util) (require 'subr-x) (require 'dns) -(require 'ansi-color) (require 'nsm) (require 'gnutls) +;;; ANSI colors or XTerm colors + +(or (require 'xterm-color nil t) + (require 'ansi-color)) + +(defalias 'elpher-color-filter-apply + (if (fboundp 'xterm-color-filter) + (lambda (s) + (let ((xterm-color-render nil)) + (xterm-color-filter s))) + 'ansi-color-filter-apply) + "A function to filter out ANSI escape sequences.") +(defalias 'elpher-color-apply + (if (fboundp 'xterm-color-filter) + 'xterm-color-filter + 'ansi-color-apply) + "A function to apply ANSI escape sequences.") ;;; Global constants ;; @@ -936,7 +952,7 @@ If ADDRESS is not supplied or nil the record is rendered as an (if type-map-entry (let* ((margin-code (elt type-map-entry 2)) (face (elt type-map-entry 3)) - (filtered-display-string (ansi-color-filter-apply display-string)) + (filtered-display-string (elpher-color-filter-apply display-string)) (page (elpher-make-page filtered-display-string address))) (elpher-insert-margin margin-code) (insert-text-button filtered-display-string @@ -1001,8 +1017,8 @@ If ADDRESS is not supplied or nil the record is rendered as an "Perform any desired processing of STRING prior to display as text. Currently includes buttonifying URLs and processing ANSI escape codes." (elpher-buttonify-urls (if elpher-filter-ansi-from-text - (ansi-color-filter-apply string) - (ansi-color-apply string)))) + (elpher-color-filter-apply string) + (elpher-color-apply string)))) (defun elpher-render-text (data &optional _mime-type-string) "Render DATA as text. MIME-TYPE-STRING is unused." @@ -1354,7 +1370,7 @@ treatment that a separate function is warranted." (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)) + (filtered-display-string (elpher-color-filter-apply display-string)) (page (elpher-make-page filtered-display-string address))) (insert-text-button filtered-display-string 'face face -- 2.20.1