FreeBSD 上支持 24 位终端的 Emacs

FreeBSD 上支持 24 位终端的 Emacs

我试图在我的 FreeBSD 12 安装上的终端上启用 24 位支持(通过 SSH),但没有成功。
我尝试创建一个 terminfo 文件,其内容如下:

xterm-24bit|xterm with 24-bit direct color mode,
   use=xterm-256color,
   sitm=\E[3m,
   ritm=\E[23m,
   setb24=\E[48;2;%p1%{65536}%/%d;%p1%{256}%/%{255}%&%d;%p1%{255}%&%dm,
   setf24=\E[38;2;%p1%{65536}%/%d;%p1%{256}%/%{255}%&%d;%p1%{255}%&%dm,

然后执行命令(安装ncurses后):

$ tic -x -o ~/.terminfo xterm-24bit.terminfo

但是当尝试运行 emacs 时,我得到:

emacs: Cannot open terminfo database file

因此,我尝试使用infocmp -Cr生成 termcap 版本并更新了数据库运行:

# cap_mkdb /usr/share/misc/termcap

这几乎成功了,emacs 打开但只有黑白:(

我的终端确实支持 24 位颜色,并且我在其他 Linux 机器上通过 ssh 使用此模式。有人在 FreeBSD 上使用 24 位终端吗?

答案1

我已按照 @Rafael Gil 建议重新编译 emacs,但是,我已将 ports 集合用于 ncurses 和 emacs。为了那些可能仍在寻找此问题解决方案的人的利益,这对我有用:

  • 像往常一样获取并提取端口集合portsnap fetch extract
  • /usr/ports/devel/ncurses手动编辑的 Makefile 中,第 23 行定义了CONFIGURE_ARGS将硬编码更改--enable-termcap为,--disable-termcap因为这不是直接可配置的选项
  • make install然后make clean
  • 在没有 X11 的情况下使用/usr/ports/editors/emacs编译和安装的 emacs 使用make FLAVOR=nox installthenmake clean
  • 我发现有必要将编译好的xterm-24bit terminfo文件添加到共享中系统一,而不是用户主目录 - 包括 emacs 在内的实用程序在主目录中看不到定义。换句话说,我必须使用它在我的 FreeBSD 12.1 上sudo tic -x -s xterm-24bit.terminfo写入条目。/usr/local/share/misc/terminfo.db
  • 为了启动它,我有一个别名,并且我已经使用与此问题顶部env TERM=xterm-24bit emacsclient相同的 terminfo 安装了相同的 terminfo 。tic

它可以工作,而且我现在拥有 24 位颜色,因此我可以通过 macOS 上的 iTerm 中的 ssh 在远程 FreeBSD shell 会话中使用日晒深色和浅色主题。

我想知道是否有一个更简单的解决方案来解决所有这些问题 - 我不喜欢在每次更新时都重新编译等等。任何评论或建议将不胜感激。顺便说一句,这都与这个 Github 问题与 Solarized 主题相关

答案2

使用 --disable-termcap 重新编译 ncurses;然后直接从 tarball(而不是从 ports)重新编译 emacs,这按预期工作。谢谢@ThomasDickey 向我展示了一条可以遵循的道路:)

相关内容