]> git.eshelyaron.com Git - emacs.git/commitdiff
Improve ansi-color filtering of unrecognized escape sequences
authorDaniel Colascione <dancol@dancol.org>
Tue, 4 Aug 2015 03:06:04 +0000 (20:06 -0700)
committerDaniel Colascione <dancol@dancol.org>
Tue, 4 Aug 2015 03:06:04 +0000 (20:06 -0700)
* 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

lisp/ansi-color.el

index 5088c3d70716cb58d33754fa33776f09e58e12e6..2f3b506434812bc66371aa604c866474f13c8ade 100644 (file)
@@ -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)