diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 3605ae61b54..851a1fb7c93 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,9 @@ +2009-03-30 Andreas Schwab + + * ansi-color.el (ansi-color-get-face): Use + ansi-color-parameter-regexp to match parameters. + (ansi-color-regexp): Include final `m' in first group. + 2009-03-30 Jason Rumney * files.el (locate-dominating-stop-dir-regexp): Stop searching diff --git a/lisp/ansi-color.el b/lisp/ansi-color.el index 3a5fc4dfed9..99e1430c571 100644 --- a/lisp/ansi-color.el +++ b/lisp/ansi-color.el @@ -147,7 +147,7 @@ map. This color map is stored in the variable `ansi-color-map'." :initialize 'custom-initialize-default :group 'ansi-colors) -(defconst ansi-color-regexp "\033\\[\\([0-9;]*\\)m" +(defconst ansi-color-regexp "\033\\[\\([0-9;]*m\\)" "Regexp that matches SGR control sequences.") (defconst ansi-color-parameter-regexp "\\([0-9]*\\)[m;]" @@ -614,13 +614,12 @@ the parameter 0), then the effect of all previous parameters is cancelled. ESCAPE-SEQ is a SGR control sequences such as \\033[34m. The parameter 34 is used by `ansi-color-get-face-1' to return a face definition." - (let ((ansi-color-r "[0-9][0-9]?") - (i 0) + (let ((i 0) f val) - (while (string-match ansi-color-r escape-seq i) + (while (string-match ansi-color-parameter-regexp escape-seq i) (setq i (match-end 0) val (ansi-color-get-face-1 - (string-to-number (match-string 0 escape-seq) 10))) + (string-to-number (match-string 1 escape-seq) 10))) (cond ((not val)) ((eq val 'default) (setq f (list val)))