diff options
author | Daniel Colascione <dancol@dancol.org> | 2015-08-03 20:06:04 -0700 |
---|---|---|
committer | Daniel Colascione <dancol@dancol.org> | 2015-08-03 20:06:04 -0700 |
commit | 227e996946d4629fa8f6d665564a37668290c87f (patch) | |
tree | e0fc29d8bbd38d32ec3ab6ecc2459d242b41f85b | |
parent | 8a4b8ae32f66b00d0730490240b87e9b9b1cfa51 (diff) | |
download | emacs-227e996946d4629fa8f6d665564a37668290c87f.tar.gz |
Improve ansi-color filtering of unrecognized escape sequences
* lisp/ansi-color.el (ansi-color-drop-regexp): Recognize mode-setting
escape sequences.
(ansi-color-filter-apply): Filter out unrecognized escape sequences
(ansi-color-apply): Filter out unrecognized escape sequences
-rw-r--r-- | lisp/ansi-color.el | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/lisp/ansi-color.el b/lisp/ansi-color.el index 5088c3d7071..2f3b5064348 100644 --- a/lisp/ansi-color.el +++ b/lisp/ansi-color.el @@ -154,7 +154,7 @@ foreground and background colors, respectively." "Regexp that matches SGR control sequences.") (defconst ansi-color-drop-regexp - "\033\\[\\([ABCDsuK]\\|[12][JK]\\|=[0-9]+[hI]\\|[0-9;]*[Hf]\\)" + "\033\\[\\([ABCDsuK]\\|[12][JK]\\|=[0-9]+[hI]\\|[0-9;]*[Hf]\\|\\?[0-9]+[hl]\\)" "Regexp that matches ANSI control sequences to silently drop.") (defconst ansi-color-parameter-regexp "\\([0-9]*\\)[m;]" @@ -261,7 +261,11 @@ This function can be added to `comint-preoutput-filter-functions'." ;; find the next escape sequence (while (setq end (string-match ansi-color-regexp string start)) (setq result (concat result (substring string start end)) - start (match-end 0))) + start (match-end 0))) + ;; eliminate unrecognized escape sequences + (while (string-match ansi-color-drop-regexp string) + (setq string + (replace-match "" nil nil string))) ;; save context, add the remainder of the string to the result (let (fragment) (if (string-match "\033" string start) @@ -327,6 +331,10 @@ This function can be added to `comint-preoutput-filter-functions'." (when codes (put-text-property start (length string) 'font-lock-face (ansi-color--find-face codes) string)) + ;; eliminate unrecognized escape sequences + (while (string-match ansi-color-drop-regexp string) + (setq string + (replace-match "" nil nil string))) ;; save context, add the remainder of the string to the result (let (fragment) (if (string-match "\033" string start) |