我怎样才能阻止 Emacs 23 附带的 python.el 加载?

我怎样才能阻止 Emacs 23 附带的 python.el 加载?

我使用 python-mode.el 而不是 python.el 来进行 python 工作,我的所有自定义都依赖于它。但是,由于某种原因,Emacs23 附带的 python.el 会定期神奇地加载,然后我的所有配置就会突然消失。

我该如何防止这种情况发生?目前,我的 .emacs 中有以下代码:

(if featurep 'python)
    (unload-feature 'python))

这似乎可以减少这种情况的发生,但有时我会在同一个会话中打开一个 python 文件!它会获得 python.el python-mode 而不是 python-mode.el 版本。然而,下一个缓冲区仍然具有旧模式。

这很快就让我抓狂了!

答案1

这完全取决于您如何设置 .emacs。

默认情况下,该函数'python-mode与包相关联python.el。您需要使用以下命令进行更改:

(autoload 'python-mode "python-mode" "Python Mode." t)

假设python-mode包已经在您的 上load-path。您还需要确保在任何事情导致python.el加载 之前,您的 .emacs 中发生了上述情况。

另外两行可能不需要,但不会有什么坏处:

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

如果这不起作用,那么我们将需要更多信息。


另一种选择是覆盖从 自动加载的函数python.el,从 Emacs 23.1 开始这些函数如下:

(defun run-python (&rest args) nil)
(defun python-mode (&rest args) nil)
(defun jython-mode (&rest args) nil)
(defun python-shell (&rest args) nil)

如果您在 .emacs 中定义这些,那么 Emacs 设置的自动加载将不起作用。您必须手动加载(因为不需要运行的python-mode.el自动加载(因为您定义了该函数))。使用以下命令加载:python-modepython-mode.el

(load "/path/to/python-mode.el")

答案2

如果再次发生这种情况,则表明也存在错误python-mode.el。Python-mode.el – 这是我的努力 – 应该以某种方式设计,python.el即使加载也不会造成干扰。

如果发生这种情况,请错误跟踪器中的条目

答案3

您应该能够简单地删除 python.el(也许还有 .elc?这仍然是编译文件的扩展名吗)

答案4

以下链接可能也相关..

http://permalink.gmane.org/gmane.emacs.cedet/4935

我使用 python-mode,尽管我的 .emacs 中包含上述建议的代码,但我仍然必须执行以下操作......

M-x py-pdbtrack-toggle-stack-tracking  ; followed by..
M-x python-pdbtrack-toggle-stack-tracking

..实际上关闭了某个功能。

罪魁祸首是 wisent-python.el python.el 依赖项,它导致重新加载一些常见变量定义。我评论了 (require 'python nil t),因为我已经手动定义了它(需要此文件的代码)设置的包含路径。

相关内容