【问题标题】:Emacs compile Python vs. running in shellEmacs 编译 Python 与在 shell 中运行
【发布时间】:2014-12-12 18:50:34
【问题描述】:

所以,据我了解,当我 M-x 编译我的 python 代码时,与 shell 或 ansi-term 相比,编译缓冲区并不是那么容易交互。因此,如果我在我的代码中插入一个 pdb.set_trace(),我就无法在编译缓冲区中进行调试。但是,我喜欢编译缓冲区的一点是,当我收到 Traceback 错误时,我可以通过在引用的问题文件甚至所述文件中的行上单击或按 Enter 键导航到所有问题文件。

我看到一篇博文,谈到在 shell 缓冲区中启用编译 shell 次要模式,但这并没有让我能够像在编译缓冲区中那样直接跳转到有问题的文件。有什么方法可以在 ansi-term 中启用该功能?我说,ansi-term,因为出于某种原因,编译缓冲区和外壳都不能很好地与 ipython 的输出配合使用。

编辑: 我在下面添加了代码,现在 shell 导航类似于编译缓冲区的 Traceback 源代码。我相信是 goto-address-mode 成功了。

(add-hook 'shell-mode-hook 'compilation-shell-minor-mode)
(add-hook 'shell-mode-hook (lambda () (highlight-regexp "\\[OK\\]" "hi-green-b")))
(add-hook 'shell-mode-hook (lambda () (goto-address-mode )))
(require 'ansi-color)
(add-hook 'shell-mode-hook 'ansi-color-for-comint-mode-on)

【问题讨论】:

标签: python shell emacs


【解决方案1】:

您可能想尝试C-u M-x compile,它应该为您提供通常的编译缓冲区,但不同之处在于您可以与之交互(它使用compint-mode)。

【讨论】:

  • 如果我没记错的话,C-u 将精确禁用我正在寻找的功能,该功能将我带到 Traceback 文件中的行。我想我明白了。
  • 如果 C-u 停止了让您在单击错误消息时跳转到源的功能,那么我建议您通过 M-x report-emacs-bug 报告它。
  • 您能确认同样的问题吗?现在,我很高兴找到了解决方法,但如果这是合法的,我将非常乐意通过报告错误来做出贡献。
  • 我在这里看不到,但这并不意味着您看到的不是真实的(或合法)。
  • 我刚刚更新了 Emacs,不再有这个问题。谢谢你的帮助,斯特凡。
猜你喜欢
  • 2011-02-22
  • 2010-09-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-31
相关资源
最近更新 更多