busy-signal是atom编辑器中用于显示后台任务状态的插件,解决linter等插件执行时缺乏视觉反馈的问题;它通过状态栏图标和右下角提示,直观反映eslint或语言服务器等子进程是否正在运行、卡顿或失败。

Busy-signal 是什么,它解决什么问题?
Busy-signal 不是独立运行的工具,而是 intentions 和 linter 等插件的“状态显示器”。当你装了 linter-eslint 或 atom-ide-ui 这类会在后台启动子进程(比如 ESLint Worker、Language Server)的插件时,它们常会卡在“正在分析…”却无视觉反馈——busy-signal 就是为填这个空白而生:它把后台任务状态映射到底部状态栏和编辑器右下角图标上,让你一眼看出“是不是卡了”,而不是干等或盲目重启 Atom。
为什么装了 busy-signal 还看不到状态图标?
常见原因是依赖链没拉通。它本身不触发任务,只消费其他插件发来的信号。必须同时满足:
-
busy-signal已安装且启用(检查 Settings → Packages → search “busy-signal” 状态是否为 “Enabled”) - 上游插件明确集成了
busy-signal的 API,比如linterv2.3.1+、intentionsv1.1.5+、atom-ide-uiv0.13.0+ - 上游插件没有报错退出——可打开 DevTools(
Ctrl+Shift+I)看 Console 是否有Failed to require package 'busy-signal'或TypeError: this.provider.add is not a function - Atom 没处于
--safe模式(该模式禁用所有插件,包括busy-signal)
如何验证 busy-signal 正在工作?
最直接的办法是手动触发一个已知会发信号的任务:
- 打开一个 JS 文件,确保
linter-eslint已启用,然后修改一行代码并保存——busy-signal应在底部状态栏右侧显示旋转图标,并在右下角弹出 “ESLint: linting…” 提示 - 如果没反应,进
Settings → Packages → linter → Settings,确认 “Show Provider Status” 已勾选;再进busy-signal → Settings,确认 “Show Status Bar Icon” 和 “Show Tooltip” 都开启 - 终端执行:
apm list --installed | grep -E "(busy-signal|intentions|linter)",核对版本是否匹配(旧版linter用的是不同信号协议,不兼容新版busy-signal)
busy-signal 卡住不动,是它坏了还是别的问题?
90% 不是 busy-signal 本身的问题,而是上游插件挂起或泄漏:
- 典型现象:右下角图标一直转,但 Console 里没新日志,文件也没被 lint —— 很可能是
linter-eslint启动的 Node 子进程卡死(尤其在快速切换项目后),需手动 kill:ps aux | grep eslint | grep -v grep | awk '{print $2}' | xargs kill -9 - 另一个常见点:
busy-signal依赖atom.notifications显示 tooltip,若通知被全局禁用(Settings → Core → Show Notifications关闭),tooltip 就不会弹,但状态栏图标仍应正常 - 别忽略 Atom 自身内存压力:如果 TextBuffer 或 Grammar 实例没释放(比如开了大文件又没关),
busy-signal的渲染可能被拖慢,表现为图标延迟出现或消失
真正容易被忽略的是:busy-signal 只反映“有没有信号发出”,不保证信号内容正确。它不校验 ESLint 配置是否生效、不检查 Language Server 是否连得上——这些得靠对应插件自己的日志和错误提示来定位。











