我在 MacOS Sonoma 上使用 Emacs 29 和 native-comp。我启用了 lsp-mode 和 python +lsp 语言支持。但是,当我打开Python文件时,遇到以下警告:
Error (python-mode-local-vars-hook): Error running hook "lsp!" because: (void-function lsp-deferred)
此外,我看到消息:
File local-variables error: (doom-hook-error python-mode-local-vars-hook lsp! (void-function lsp-deferred))
如何解决此问题并使 lsp 模式在 Emacs 29 中与 Python 正常工作?
打开文件
~/.config/emacs/modules/lang/python/config.el
。
找到
line 24
,其中可能包含以下代码:
(lsp!(add-hook 'python-mode-local-vars-hook #'lsp! 'append)
将其替换为以下修改后的行:
(after! lsp!(add-hook 'python-mode-local-vars-hook #'lsp! 'append))
(after! ...)
结构确保只有在lsp模式完全加载后才执行钩子。
在 DoomEmacs 中,
lsp-deferred
函数用于延迟加载 lsp-mode
。
通过添加 (after! ...)
,我们在执行钩子之前等待 lsp-mode
可用。
这可以防止出现 “void-function lsp-deferred”
错误。
请记住在进行此更改后重新启动 Emacs 或重新加载您的配置。 您的 Python LSP 现在应该正确加载。 🚀