You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Emacs中company-box-mode搭配lsp-mode时补全图标无法显示

Emacs company-box-mode 补全图标无法正常显示修复方案

问题现象

开启company-box-mode后,补全列表的类型图标无法正常渲染,关闭company-box-mode使用原生company补全时显示正常。

  • 关闭company-box-mode补全效果:
    原生company补全界面
  • 开启company-box-mode补全效果:
    company-box补全界面

当前环境前置状态:

  • 已正确配置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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.29 19:57:27