msys2 mosh不能展示emoji

在全面转战MSYS2今天又发现了一个问题,MSYS2下的mosh不能正常展示emoji。如GitHub上的issue所言:https://github.com/msys2/MSYS2-packages/issues/3034 ,坑真是多呀。

手动编译

网上讲了一大堆问题,说是libc版本不对,不能识别最新版本的emoji等等。但看了一堆讨论,发现应该都不太靠谱。自己动手查一下吧。

不得不说MSYS2真是强大,我曾经花了20个小时的时间在研究如何在Windows下编译mosh,手动打了一堆patch不说,打出来的产物缺胳膊少退,最终还不能正常工作,让我吐一口老血。

而在MSYS2下,简直不要太简单……下载mosh的PKGBUILD文件:https://github.com/msys2/MSYS2-packages/blob/master/mosh/PKGBUILD,执行makepkg即可编译……makepkg -i即可安装。

问题

算是通读了一遍mosh的代码,发现它使用wcwidth将字符串放到一个个的Cell中。而MSYS2中wcwidth函数和wstring对版本比较新的emoji不太兼容,返回的数据全是错误的。