From: Alex Schroeder Date: Thu, 23 Jul 2020 14:10:29 +0000 (+0200) Subject: Use xterm-color instead of ansi-color, if possible X-Git-Url: https://thelambdalab.xyz/gitweb/index.cgi?a=commitdiff_plain;h=f07441006afb93d3e6ab5d6f29e4fe236fd2443c;p=elpher.git 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. --- 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