修了几个 vterm bug

  1. Do our best to restore tab characters by Dieken · Pull Request #722 · akermu/emacs-libvterm · GitHub 让 vterm 保持输出制表符,不要展开成空格。 (末尾的制表符依然丢失,问题不大,有兴趣的同学可以继续修正下,原因是 vterm-module.c 的 refresh_lines() 中判断 eol 没考虑末尾的制表符)

  2. don't garble partial multi-byte character after control sequence by Dieken · Pull Request #724 · akermu/emacs-libvterm · GitHub 在用 ncurses 程序比如 lf 时,有小概率会导致汉字显示缺失

  3. prefer sTypoAscender, sTypoDescender and sTypoLineGap from OS/2 table by Dieken · Pull Request #379 · railwaycat/homebrew-emacsmacport · GitHub 这个也可以算 vterm bug,它没能力做到所有行的等高排版。。。所以只好在字体缩放上绞尽脑汁了。

还有一个 bug 没修,在 vterm 窗口中间 Ctrl-L 时,当前的半屏内容不进 scroll buffer,跟其它 terminal emulator 行为不一致,其它 term 好像是滚动直到光标到第一行的效果。

5 个赞

libvterm还有个问题是对色彩支持有点问题,我记得 fg=8 之类的颜色完全显示是黑的,很难受

这个需要自己设置 face,比如这是我的配置

(set-face-foreground 'vterm-color-bright-black "#5B6268")
(set-face-background 'vterm-color-bright-black "#5B6268")
(set-face-foreground 'vterm-color-black "#5B6268")
(set-face-background 'vterm-color-black "#5B6268")

这可能跟你用的 theme 有关,要么改 theme,要么像 BlindingDark 建议的直接改 vterm 定义的那些 face。

我去看看, 试一试

0 ~ 15 索引色,默认前景、背景色用的 default face 和 vterm-color-* faces 来自定义, 16 ~ 255 索引色用 libvterm 里写死的,emacs-vterm 没暴露 API vterm_state_set_palette_color 去修改。

RGB 色直接用 ansi escape sequence 里指定的。

可以尝试 GitHub - mumu-lhl/eaf-pyqterminal: A terminal written in PyQt6 for the Emacs Application Framework.

目前Emacs这端对图形绘制支持最好的终端, 相对于 vterm 最主要的优势, 有啥问题可以直接改代码。

eaf-install.py 安装时挂住了,等了好一会 Ctrl-c 了,重试了下没报错。

打开 eaf-pyqtterminal 后,字体显示模糊,而且又开了一份 emacs app,在 term 里打几个字,焦点就没了,似乎两个 emacs app 窗口在打架。

还是继续 vterm 了,本来 Emacs 就够庞大了,还加上 Qt, Python, NodeJS,这出个问题够喝一壶了,vterm 代码很短我还能凑合改改。