我使用 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-mode
python-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),因为我已经手动定义了它(需要此文件的代码)设置的包含路径。