Emacs中company-box-mode搭配lsp-mode时补全图标无法显示
Emacs company-box-mode 补全图标无法正常显示修复方案
问题现象
开启company-box-mode后,补全列表的类型图标无法正常渲染,关闭company-box-mode使用原生company补全时显示正常。
- 关闭
company-box-mode补全效果:
- 开启
company-box-mode补全效果:
当前环境前置状态:
- 已正确配置
lsp-mode代码补全基础环境 - 已安装并启用
all-the-icons图标包 - 已配置
company-mode随lsp自动启动,company-box-mode随company-mode自动启动
现有配置代码如下:
lsp-mode 配置
(use-package lsp-mode :commands (lsp lsp-deferred) :init (setq lsp-keymap-prefix "C-c l") ;; Or 'C-l', 's-l' :hook ((js-mode . lsp-deferred)) :config (lsp-enable-which-key-integration t))
company 相关配置
(use-package company :after lsp-mode :hook (lsp-mode . company-mode) :bind (:map company-active-map ("<tab>" . company-complete-selection)) (:map lsp-mode-map ("<tab>" . company-indent-or-complete-common)) :custom (company-minimum-prefix-length 1) (company-idle-delay 0.0)) (use-package company-box :hook (company-mode . company-box-mode))
修复步骤
该问题属于company-box图标渲染的常见配置遗漏,按以下步骤操作即可修复:
- 确认all-the-icons字体已正确安装到系统
执行Emacs命令M-x all-the-icons-install-fonts,按照提示完成字体安装。Linux/macOS系统需要将下载的字体手动拷贝到系统字体目录,执行fc-cache -fv刷新字体缓存后再重启Emacs;Windows系统双击字体文件选择安装即可。 - 补全company-box的图标关联配置
在company-box的use-package配置块中添加图标启用配置,修改后的配置如下:(use-package company-box :hook (company-mode . company-box-mode) :custom (company-box-enable-icon t) (company-box-icon-margin 1) :config (setq company-box-icons-alist 'company-box-icons-all-the-icons)) - 确认运行环境支持图形渲染
如果在终端(tty)环境下运行Emacs,终端本身不支持all-the-icons自定义字体渲染,需要切换到GUI版Emacs才能正常显示company-box图标;如果必须在终端使用,需要先给终端安装匹配的Nerd Fonts,将终端默认字体设置为已安装的all-the-icons关联字体。 - 重启Emacs后重新触发补全即可正常显示图标,若仍有异常可执行
M-x company-box-mode手动关闭再重新开启一次,排查加载顺序导致的配置未生效问题。
内容的提问来源于stack exchange,提问作者Chris Hughes
相关产品推荐
相关产品推荐

