起因是因为用了dashboard那个线只显示了一半,用了最小的配置只装了dashboard那个线还是只显示一半,看了下dashboard是用的page-break-lines,然后就单独测试了page-break-lines。插入线就显示一半啊。我在虚拟机里的linux测试了下是正常的,看来是我系统的问题。有遇到的吗
这个问题我也遇到了,是page-break-lines的一个bug,已提交purcell,可惜因为这只是在中文等环境下才能重现的bug而没有得到重视。我找到了一个几乎完美的解决方式你可以试试。 (setq page-break-lines-char ?—),这个EM dash和原始的box dash很像,但是是单字符宽度的。试成功了可以一起呼吁一下,我在purcell的项目里开了issue。
简单看,确实是char-width的问题。不过你的方法在一些字体下还是不能占满全行。原因是 (frame-char-width)取得的是frame默认字体的标准宽度(查emacs源码得知是通过在默认字体下算标准ascii码表中可见字符的平均宽度,即20~126),原始的dash是box-drawing在一些字体下有可能达不到标准宽度,导致占不满一行。而我选的em dash是按照默认字体的M的宽度设定的,可以达到标准宽度,要想完美解决这个问题可能还需要找到page-break-lines-char这个字符在默认字体下的宽度才行。 当然,这样搞可能有点过于复杂了。 ps. dash在编码中有好几个,比如en dash是按照N的宽度设定的,就比EM dash略窄,几种dash。中文的破折号用的是两个EM dash。