From 3bd328e68894a7819aa26e2325d7984eaa3959e0 Mon Sep 17 00:00:00 2001 From: Florrie Date: Wed, 15 Jul 2020 22:08:34 -0300 Subject: don't include ANSI escape codes in measureColumns This allows pretty much any code based around measureColumns (e.g. buttons, labels, word-wrapping code) to handle ANSI-formatted text without any miscalculated measurements. --- util/ansi.js | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) (limited to 'util') diff --git a/util/ansi.js b/util/ansi.js index ac511ed..f921349 100644 --- a/util/ansi.js +++ b/util/ansi.js @@ -153,7 +153,12 @@ const ansi = { }, measureColumns(text) { - // Returns the number of columns the given text takes. + // Returns the number of columns the given text takes. Accounts for escape + // codes (by not including them in the returned width). + + if (text.includes(ESC)) { + text = text.replace(new RegExp(ESC + '\\[\\??[0-9]*.', 'g'), '') + } return wcwidth(text) }, -- cgit 1.3.0-6-gf8a5