emacs 配置:python-mode-hook

emacs configuration: python-mode-hook

我正在为我的 emacs 配置而苦恼。 .emacs 中的相关行是:

(require 'python-mode)
(add-to-list 'auto-mode-alist '("\.py\'" . python-mode))

(add-hook
 'python-mode-hook
 '(lambda ()
    (message "python-mode-hook called")
    (require 'jedi)
    (when (require 'elpy nil t)
      (elpy-enable)
      (setq elpy-rpc-backend "jedi")
      (add-hook
       'jedi-mode-hook
       '(lambda ()
          (setq-local ac-max-width 0.5))))))

当我加载 python 文件时,挂钩被调用并且我收到 "python-mode-hook called" 消息。但是,elpy 功能不存在。如果我然后M-x python-mode,一切都应该如此。

我不明白为什么我需要调用 "python-mode" 两次。我不知何故认为这可能与 called/defined 的挂钩顺序错误有关,但我不明白这里出了什么问题。

我会很感激一些提示。

要启用 elpy 功能,您 .emacs 中只需要

(package-initialize)
(elpy-enable)

但是,您还必须正确安装 elpy 包本身。

尝试执行 "Quick installation" 部分中的所有步骤:https://github.com/jorgenschaefer/elpy#quick-installation

同时想通了...问题是 elpy-enable 确实安装了一个钩子。它并没有像我想的那样直接调用elpy模式。因此,只有 python-mode 的第二次调用才真正导致调用此函数。当然这样更好...所以现在我有:

(elpy-enable)
(setq elpy-rpc-backend "jedi")
(add-hook
 'elpy-mode-hook
 '(lambda () (setq-local ac-max-width 0.5)))