vsep_print() divides columns with vertical separators and then wraps the last line in the last column. When it counts the widths of things it prints, it doesn't handle things correctly if we include (for example) a link string in the output. This is because EscapedString doesn't dynamically count the length of escape sequences, but instead records the static length of input strings and wraps escape sequences around it.
So, the "simple" way to fix this is to have EscapedString() do dynamic counting that includes / takes into account terminal control codes. Mostly, I was being lazy when I wrote EscapedString().
vsep_print() divides columns with vertical separators and then wraps the last line in the last column. When it counts the widths of things it prints, it doesn't handle things correctly if we include (for example) a link string in the output. This is because EscapedString doesn't dynamically count the length of escape sequences, but instead records the static length of input strings and wraps escape sequences around it.
So, the "simple" way to fix this is to have EscapedString() do dynamic counting that includes / takes into account terminal control codes. Mostly, I was being lazy when I wrote EscapedString().