关于#var命令的bug提交
-
现象:
1.如果变量的值带ANSI颜色代码,会无法打印。
2.如果变量的键是数字类型,会无法正常打印。
修改方案:

"""返回字符串的显示宽度,而不是字符数量注意: 字符串中若含有 ANSI 颜色等控制字符,wcswidth 会返回 -1, 导致 len() 抛出 ValueError。此处先剥离 ANSI 转义序列再计算宽度, 并对仍返回 -1 的情况兜底为 0。 """ from .session import Session clean = Session.PLAIN_TEXT_REGX.sub("", self.__str__()) w = wcswidth(clean) return w if w >= 0 else 0
def getMaxLength(self, iter: Iterable):
return wcswidth(str(sorted(iter, key=lambda s: wcswidth(str(s)), reverse=True)[0]))