外壳和颜色输出

问题描述

在使用eshell时,关于shell输出的颜色实现,我面临一个奇怪的行为。这是我的.emacs的内容:

(require 'xterm-color)
(require 'eshell)
(add-hook 'eshell-before-prompt-hook
          (lambda ()
            (setq xterm-color-preserve-properties t)))

(add-to-list 'eshell-preoutput-filter-functions 'xterm-color-filter)
(setq eshell-output-filter-functions (remove 'eshell-handle-ansi-color eshell-output-filter-functions))
(setenv "TERM" "xterm-256color")

奇怪的是,初始化emacs后,eshell无法在输出(例如git或pytest)上正确显示颜色。但是,它不会引发任何错误,并且在初始化之后,我使用C-x C-e评估了我的init文件的这一部分,并且在执行此操作并重新启动eshell之后,它可以按预期运行。

我不明白为什么只有在emacs初始化后才执行,而对.emacs却没有预期的效果,为什么会起作用。

我确实在.emacs上有一行(setq initial-buffer-choice'eshell),但仅在上述部分之后。

任何可能的原因的见解都会有所帮助。谢谢

编辑1

我将问题缩小为setenv语句和initial-buffer-choice。由于某种原因,当我没有注释initial-buffer-choice时,TERM变量将设置为dumb。另一方面,如果我评论initial-buffer-choice并在启动后打开eshell,那么一切都会按预期进行。

我试图将setenv执行作为钩子添加到eshell-mode和emacs-startup上,以查看是否可以在启动期间强制执行它,但实际上没有任何作用。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...