修改Atom的init.coffee配置后,如何让spell-check包刷新识别配置变更?
解决Atom中修改拼写检查语言后无法即时生效的问题
我之前也踩过这个坑!你直接修改atom.config.settings的方式其实绕开了Atom的官方配置系统,所以spell-check包根本没收到配置变更的通知——这就是为什么打开设置界面后才会生效,因为设置面板是用正确的API去修改配置,同时触发了变更事件。
给你两个靠谱的解决办法,任选其一就行:
方法一:用官方配置API + 重启spell-check包
这是最稳妥的方式,既正确修改配置,又强制包重新读取配置并初始化:
atom.commands.add 'atom-workspace', 'Spell-DE', -> # 使用Atom官方的config.set方法,会自动触发配置变更事件 atom.config.set('spell-check.locales', ['de-DE']) # 获取已加载的spell-check包实例 scPackage = atom.packages.getLoadedPackage('spell-check') # 如果包已加载且有主模块,重启它 if scPackage?.mainModule scPackage.deactivate() scPackage.activate()
方法二:触发配置变更事件(轻量版)
如果你不想重启整个包,也可以手动触发配置变更的事件,让spell-check包自己响应:
atom.commands.add 'atom-workspace', 'Spell-DE', -> atom.config.set('spell-check.locales', ['de-DE']) # 手动触发配置变更事件,指定对应的keyPath atom.config.emit('changed', { keyPath: 'spell-check.locales' })
为什么你的原代码不生效?
atom.config.settings只是Atom存储配置的一个内部对象,直接修改它不会触发任何监听事件。而spell-check包是通过监听spell-check.locales这个配置项的变更来更新语言的,所以必须用atom.config.set()或者手动触发事件,才能让它感知到变化。
内容的提问来源于stack exchange,提问作者WhiteXmasBone
相关产品推荐
相关产品推荐

