我用Mac OS, emacs 25.1 在python 的shell中,敲击单引号,单引号自动补全后,就会卡顿; 但双引号或者括号等都没有问题,且这个问题不出现在打开python-mode后写python脚本中。
python 写得少,还不知道有这种用法。刚刚试了一下,补全很流畅,没有卡顿。以下是我的设置:
;; python 2.7 (built-in)
(setq python-shell-interpreter "/usr/local/bin/python"
python-shell-interpreter-args "-i")
你也可以打开 *Messages*
看看有没有什么可疑的信息。
python-shell 果然很好用,但是切换到 pyenv 安装的 python 时,启动就报不支持 readline,然后补全加载失败,我今天时间都消耗在解决这个问题了。
https://debbugs.gnu.org/cgi/bugreport.cgi?bug=24401
虽然已经有人提交 patch 到 25.2 了,但仍然没有解决我的问题。我猜这个问题有一半是 emacs 的,有一半是 python 的。果然更新到 python 3.6,然后自己再把那个补丁包装成 advice,每次 run-python 之前强制覆盖一遍,粗暴解决。现在 emacs 2.5.1 + pyenv(python 3.6) 也可以安静地补全了。
你的问题很可能是 spacemacs 导致的,论坛里之前已经有人讨论过《 Spacemacs 在windows下面python layer shell 无比卡顿,且不能补全,有碰到的没有? 》里边有些链接也许用得上。
我是自己配的 emacs,然后从 chenbin 和 purcell 那里拿了些配置,感觉还不错。
我昨天尝试用了你的第一个回复设置。我主要是run ipython, 直接用pip安装的,而python的版本目前是2.7.
- 我用spacemacs的大部分默认配置,之前除了单引号的问题外,其他自动补全等都没有问题,用得很舒服。
- 按照你的配置添加了python-shell-interpreter-args, 我设置成了:
(when (executable-find "ipython")
(setq python-shell-interpreter "ipython"))
(setq python-shell-interpreter-args "-i --simple-prompt --pylab")
我之前看到有链接说,ipython中的卡顿是由于semantic layer 需要查找python-shell-interpreter-args
等两个参数的设置,故可能是我之前没有设置该值。
目前的使用看起来还算正常。spacemacs对我来讲,还是方便了很多,之前也用purcell的配置,但是从整体的美观和快速上手上,spaceamcs体验还是更胜一筹,尤其是考虑到我现在没有太多时间去折腾emacs的配置细节。但长远看,你说的对,spacemacs略有冗余,臃肿。
BTW, 我目前用python在Emacs中的体验,比在pycharm要好一些。但是后者在纠错和 import 相对路径的源文件,做自动匹配等更好用。
我现在是在python-shell中,通过sys.path.append(“foo.path”)
加载后,实现相对路径的源文件自动补全,也还可以。