【问题标题】:Understanding which python mode is loaded by emacs / Aquamacs and why了解 emacs / Aquamacs 加载哪种 python 模式以及为什么
【发布时间】:2012-07-09 01:22:58
【问题描述】:

我有 emacs 24.1.1,它在 emacs/24.1/lisp/progmodes 中以字节编译形式随 GNU 的 python.el 一起提供。

我下载了 Fabian Gallina 的 python.el(注意同名)并将其放在 emacs/site-lisp,它是 emacs 加载路径的一部分。

当我编辑 Python 文件时,加载的是 Gallina 的模式,而不是 GNU 的。但是,尽管 Gallina 的文档建议,我并没有在我的 .emacs 文件中放入 (require 'python)。

这是为什么?为什么 Gallina 的 python.el 优先于 GNU 的?为什么在没有 (require 'python) 的情况下加载它?

【问题讨论】:

    标签: python emacs python-mode


    【解决方案1】:

    您在 Emacs 中使用的大多数库都不会在您启动 Emacs 时加载。它们是自动加载的,请参阅manual。

    如果您查看 load-path 变量,您会看到 site-lisp 在 Emacs 自己的库之前。因此,当 Emacs 去加载“python.el”时,它会发现 首先是你的版本。

    请注意,当您在运行命令之前执行 C-h f python-mode 时, 您实际上会看到 Emacs 版本的命令的描述。这 是作者选择相同文件名的不幸副作用。

    运行一次python-mode 后,帮助文本将更改为显示您的版本。

    【讨论】:

    • 谢谢!因此,澄清一下:emacs 内部自动加载了一个函数 python-mode,在 python.el 中定义,并设置了一个钩子,以便为以 .py 结尾的文件调用该函数。但是,由于我在加载路径中放置了一个不同的 python.el(定义相同的函数),使其位于内部 lisp 目录之前,因此首先加载它。
    【解决方案2】:

    要从新位置加载已加载的库,请在 Emacs 初始化文件中写入类似

    (卸载功能...

    (从新位置加载...

    【讨论】:

      猜你喜欢
      • 2014-07-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-09-29
      • 2011-01-11
      • 1970-01-01
      相关资源
      最近更新 更多