The Lambda Lab
/
projects
/
elpher.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (from parent 1:
3d6e1a9
)
Use ansi-color to interpret ansi escape codes.
author
Tim Vaughan
<timv@ughan.xyz>
Thu, 12 Dec 2019 17:22:16 +0000
(18:22 +0100)
committer
Tim Vaughan
<timv@ughan.xyz>
Thu, 12 Dec 2019 17:23:43 +0000
(18:23 +0100)
elpher.el
patch
|
blob
|
history
elpher.texi
patch
|
blob
|
history
diff --git
a/elpher.el
b/elpher.el
index
ca2bbd1
..
c529e74
100644
(file)
--- a/
elpher.el
+++ b/
elpher.el
@@
-62,6
+62,7
@@
(require 'url-util)
(require 'subr-x)
(require 'dns)
(require 'url-util)
(require 'subr-x)
(require 'dns)
+(require 'ansi-color)
;;; Global constants
;;; Global constants
@@
-177,10
+178,10
@@
allows switching from an encrypted channel back to plain text without user input
"Specifies the number of seconds to wait for a network connection to time out."
:type '(integer))
"Specifies the number of seconds to wait for a network connection to time out."
:type '(integer))
-(defcustom elpher-
strip-ansi-from-text t
- "If non-nil,
strip ANSI escape sequences from gopher menus and text/gemini files
.
-Th
is is occasionally desirable, as these sequences are not understood natively by
-
Emacs, and tend to result in a garbled display
."
+(defcustom elpher-
filter-ansi-from-text nil
+ "If non-nil,
filter ANSI escape sequences from text
.
+Th
e default behaviour is to use the ansi-color package to interpret these
+
sequences
."
:type '(boolean))
;;; Model
:type '(boolean))
;;; Model
@@
-336,12
+337,15
@@
If no address is defined, returns 0. (This is for compatibility with the URL li
;; Page
(defun elpher-make-page (display-string address)
;; Page
(defun elpher-make-page (display-string address)
+ "Create a page with DISPLAY-STRING and ADDRESS."
(list display-string address))
(defun elpher-page-display-string (page)
(list display-string address))
(defun elpher-page-display-string (page)
+ "Retrieve the display string corresponding to PAGE."
(elt page 0))
(defun elpher-page-address (page)
(elt page 0))
(defun elpher-page-address (page)
+ "Retrieve the address corresponding to PAGE."
(elt page 1))
(defvar elpher-current-page nil)
(elt page 1))
(defvar elpher-current-page nil)
@@
-675,22
+679,12
@@
If ADDRESS is not supplied or nil the record is rendered as an
(defconst elpher-ansi-regex "\x1b\\[[^m]*m"
"Wildly incomplete regexp used to strip out some troublesome ANSI escape sequences.")
(defconst elpher-ansi-regex "\x1b\\[[^m]*m"
"Wildly incomplete regexp used to strip out some troublesome ANSI escape sequences.")
-(defun elpher-strip-ansi (string)
- "Strip ANSI escape codes from STRING."
- (with-temp-buffer
- (insert string)
- (goto-char (point-min))
- (while (re-search-forward elpher-ansi-regex nil t)
- (delete-region (match-beginning 0) (match-end 0)))
- (buffer-string)))
-
-
(defun elpher-process-text-for-display (string)
(defun elpher-process-text-for-display (string)
- "Perform any desired processing of
text prior to display
.
-Currently includes buttonifying URLs and
optionally stripp
ing ANSI escape codes."
- (elpher-buttonify-urls (if elpher-
strip
-ansi-from-text
- (
elpher-strip-ansi
string)
-
string
)))
+ "Perform any desired processing of
STRING prior to display as text
.
+Currently includes buttonifying URLs and
process
ing ANSI escape codes."
+ (elpher-buttonify-urls (if elpher-
filter
-ansi-from-text
+ (
ansi-color-filter-apply
string)
+
(ansi-color-apply string)
)))
(defun elpher-render-text (data &optional _mime-type-string)
"Render DATA as text. MIME-TYPE-STRING is unused."
(defun elpher-render-text (data &optional _mime-type-string)
"Render DATA as text. MIME-TYPE-STRING is unused."
@@
-826,7
+820,9
@@
to ADDRESS."
(set-process-coding-system proc 'binary)
(set-process-filter proc
(lambda (_proc string)
(set-process-coding-system proc 'binary)
(set-process-filter proc
(lambda (_proc string)
- (cancel-timer timer)
+ (when timer
+ (cancel-timer timer)
+ (setq timer nil))
(setq response-string
(concat response-string string))))
(set-process-sentinel proc
(setq response-string
(concat response-string string))))
(set-process-sentinel proc
@@
-1328,8
+1324,7
@@
When run interactively HOST-OR-URL is read from the minibuffer."
(elpher-page-display-string elpher-current-page))
(elpher-visit-page (elpher-make-page
(elpher-page-display-string elpher-current-page)
(elpher-page-display-string elpher-current-page))
(elpher-visit-page (elpher-make-page
(elpher-page-display-string elpher-current-page)
- (elpher-page-address elpher-current-page)
- elpher-current-page)
+ (elpher-page-address elpher-current-page))
#'elpher-render-download
t)))
#'elpher-render-download
t)))
diff --git
a/elpher.texi
b/elpher.texi
index
9b1310a
..
0de237c
100644
(file)
--- a/
elpher.texi
+++ b/
elpher.texi
@@
-506,9
+506,9
@@
the appearance of Elpher, including one face per menu item type.
The group also contains variables for customizing the behaviour of
Elpher. This includes how to open arbitrary (non-gopher) URLs, whether
The group also contains variables for customizing the behaviour of
Elpher. This includes how to open arbitrary (non-gopher) URLs, whether
-to display buffer headers,
whether to strip ANSI escape sequences from
-text
before displaying, the timeout to impose on network connections,
-
and whether to
prompt for confirmation when switching away from TLS.
+to display buffer headers,
how to deal with ANSI escape sequences in
+text
, the timeout to impose on network connections, and whether to
+prompt for confirmation when switching away from TLS.
See the customization group itself for details.
See the customization group itself for details.