【问题标题】:IPython in Emacs py-shell: TAB completion not working & windows get killedEmacs py-shell 中的 IPython:TAB 完成不工作 & windows 被杀死
【发布时间】:2013-10-09 10:42:02
【问题描述】:

我已经从 ipython 0.10-11.1 切换到 1.1.0

现在,在使用 Emacs 和新的 ipython 版本时,我遇到了以下两个问题:

1) Emac 的 ipython py-shell (C-c !) 中的选项卡补全停止为我工作。比如说,如果我尝试将 'pl' 完成为 'plot' 等等 pl<Tab>,我在 minibuffer 中得到的唯一东西是

Can't find completion for "pl" based on line pl

网络上有很多类似的报告,但是我发现的修复都没有解决我的问题。特别是在http://www.emacswiki.org/emacs/PythonProgrammingInEmacs 中建议的~/.emacs/init.el 的补充,在IPython 部分只是不要“做”任何事情。

2) 当我在任何给定的缓冲区 foo.py 上启动 py-shell 时,该缓冲区在几个 Emacs 子窗口之一中打开,然后是所有其他子窗口,除了对应的那个foo.py 和新启动的 (ipython) py-shell 被关闭。

这两个问题在 ipython 0.10-11.1 中都不存在。有人有想法吗?

我的 Emacs 版本:GNU Emacs 23.2.1。我的 ipython.el 版本:来自 https://github.com/ipython/ipython/tree/master/docs/emacs 的 defconst ipython-version "0.11"

【问题讨论】:

    标签: shell emacs ipython tab-completion


    【解决方案1】:

    前面的答案没有提供任何线索来说明如何让 TAB-completion 与 IPython-1.1.0 和 GNU Emacs 23.2.1 一起工作。事实上,从简单的 Emacs 开始的故障排除步骤不会导致 IPython-shell 与工作 TAB-完成。此外,https://launchpadlibrarian.net/152211804/ex.png 声称 TAB-completion at work with IPython-1.1.0 的图像描绘了 Emacs 24.3.50.1,而不是我在问题中提到的 Emacs 23.2.1。

    对我来说解决方案是:摆脱 IPython-1.1.0 重新安装 IPython 0.10-11.1。

    (这使您没有最新的笔记本功能 - 如果 Emacs 是您 Python 工作流程的核心,这很好)

    【讨论】:

    • python-mode.el 也使用 Emacs-23.4 进行了测试。到目前为止,没有任何迹象表明早期版本不应该工作。请考虑在失败时提供更详细的错误报告 WRT 状态。
    【解决方案2】:

    (I)Python-shell 的完成只是 TAB

    C-c ! 从外壳内部打开另一个外壳,但似乎确实坏了,分别。不可用。

    https://bugs.launchpad.net/python-mode/+bug/1234539 同时固定在后备箱中。

    顺便说一句,要从内部打开第二个 shell,C-u M-x python 应该可以工作。

    您是否相应地设置了py-python-command-args? 假设plot 需要选项-pylab

    疑难解答:

    从 python-mode.el 所在目录中的 Emacs -Q 开始。 打开 python-mode.el 并评估它。

    打开一个--可能是空的-- 以“.py”结尾的文件。

    应该打开 Python 模式。

    M-x python RET

    应该会出现一个常规的 Python-shell。

    M-x ipython RET

    应该会打开一个 IPython-shell。

    始终从已激活的 python 模式调用 (I)Python-shell。 否则运送的 python.el 或其他东西可能会介于两者之间。

    链接显示使用 IPython-1.1.0 完成 TAB 完成:

    https://launchpadlibrarian.net/152211804/ex.png

    【讨论】:

    • (i) 我遵循了您的故障排除说明。一旦我打开 IPython-shell 并对任何不完整的单词执行 TAB 补全,该单词在同一输入行上将被替换为“Traceback(最近一次调用最后一次):”。知道这意味着什么吗? (ii) 使用 IPython-1.1.0 完成 TAB 完成的图像看起来与 1.1.0 之前的我完全一样
    • (iii) 最后,我还将您的故障排除程序应用于我的问题的第二部分,即调用 python shell 会杀死 Emacs 中所有其他打开的窗口 - 而且仍然保持不变。这合适吗?我可以压制它吗?
    • @Mark 请告诉我们,IPython 进程的响应是什么,即提供 Traceback。请考虑为此在 launchpad.net/python-mode 开一张票。
    • @Mark (iii) Windows 行为由 py-split-windows-on-execute-p 的设置控制。 py-switch-buffers-on-execute-p。如果两者都是 nil,shell 应该在后台运行。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-12
    • 2022-06-15
    • 1970-01-01
    • 2014-03-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多