【问题标题】:Emacs Jedi auto-complete not working on initEmacs Jedi 自动完成功能不适用于 init
【发布时间】:2013-03-17 12:58:39
【问题描述】:

前几天我通过 el-get 安装了 jedi 和其他一些软件包,最初一切都很好(自动完成、弹出菜单等)。

然而,在过去的几天里,jedi 已经停止工作(即自动完成、弹出窗口和函数参数建议不再起作用)。

我发现这不起作用的部分原因是,由于某种原因,启动时未启用自动完成功能。我已经尝试在 el-get 加载绝地之前和之后将 (setq auto-complete-mode t) 添加到我的 .emacs 文件中,但是尽管启用了自动完成功能,但由于某种原因它仍然不起作用。相反,我必须在 emacs 加载后使用 M-x auto-complete-mode 启用自动完成(我也尝试了这里的建议 Emacs auto-complete-mode at startup,但这只会在 emacs 加载时引发大量错误)。

除此之外,当我键入 M-x jedi RET 时,jedi 故障排除页面上列出的一些命令(例如 jed:setup-keys)似乎丢失了。

我似乎也遇到了和这个人一样的问题:emacs-jedi does not find numpy completions,但我不确定这两个问题是否相关。

【问题讨论】:

  • 我正要建议(global-auto-complete-mode t),但我看到这在您的链接答案中。您可以尝试一下,使用 --debug-init 启动 emacs,然后将您遇到的错误发布到这里吗?
  • 我明白了:Debugger entered--Lisp error: (void-variable z) eval-buffer(#<buffer *load*> nil "/home/matthew/.emacs" nil t) ; Reading at buffer position 2 load-with-code-conversion("/home/matthew/.emacs" "/home/matthew/.emacs" t t) load("~/.emacs" t t) #[nil "\205\264
  • 实际上忽略这一点,因为该错误是由我的 .emacs 中的拼写错误引起的。这是实际错误:Debugger entered--Lisp error: (void-function global-auto-complete-mode) (global-auto-complete-mode t) eval-buffer(#<buffer *load*> nil "/home/matthew/.emacs" nil t) ; Reading at buffer position 527 load-with-code-conversion("/home/matthew/.emacs" "/home/matthew/.emacs" t t) load("~/.emacs" t t) #[nil "\205\264

标签: python emacs autocomplete jedi


【解决方案1】:

auto-complete-mode 也有同样的问题。我必须手动启动它。

作为一个完全的新手,我为此苦苦挣扎了一段时间,但推导出了一个解决方案。也许它不是很优雅,但它可以工作......在启用绝地交流之前将其作为钩子添加到python-mode

;;enable jedi autocompletion in python
(add-hook 'python-mode-hook 'auto-complete-mode)
(add-hook 'python-mode-hook 'jedi:ac-setup)

【讨论】:

  • 你尝试了tkf.github.io/emacs-jedi/#troubleshooting 中的所有内容吗?您可以按照 emacs-jedi 文档的建议将 (add-hook 'python-mode-hook 'auto-complete-mode) 替换为 (global-auto-complete-mode t)。 global-auto-complete-mode 更好,因为您不需要为要启用auto-complete-mode 的所有模式添加auto-complete-mode。也就是说,除了冗余之外,您的设置没有任何问题。
  • 我试过(global-auto-complete-mode t) 但不幸的是它不起作用。我还按照 疑难解答 部分中的所有步骤操作,但没有成功。出于某种原因,这是它对我有用的唯一方法。
  • 你的ac-modes里面有python-mode吗?
  • 是的,我的ac-mode 有 24 个模式,包括python-mode
【解决方案2】:

首先查看文档中的故障排除部分: http://tkf.github.com/emacs-jedi/#troubleshooting

我建议你从文档中提到的make tryout开始,像这样:

 curl -fsSkL https://raw.github.com/rejeep/carton/master/go | sh
 make CARTON=$HOME/.carton/bin/carton tryout

来自文档:

这将安装 Jedi.el 的要求与您的本地分开 在.emacs.d 中设置。也可以查看配置文件 make tryout 使用的 tryout-jedi.el 查看最小值 工作配置。如果您在设置 Jedi.el 时遇到问题, 比较你的配置文件和tryout-jedi.el

【讨论】:

  • 好的,所以我尝试了,结果与我的 OP 中的链接相同。我得到:mkdir -p elpa EL4T_EMACS=emacs EMACS=tools/el4t/emacs.sh carton install 2> elpa/install.log Installing modules using carton.lock (deployment mode) make: *** [elpa] Error 2 启动时仍未启用自动完成功能。我得到了不是 numpy/scipy 函数的函数参数的上下文帮助,否则我什么也得不到。我的整个配置是调试的噩梦,因为配置隐藏在我的 .emacs.d 目录的 el-get 目录中的一些文件中,因此查找配置是一个无望的练习。
  • 您使用make tryout 还是make CARTON=... tryout?我猜你的carton 和我说的不一样(可能你有Perl 的那个)。在这种情况下,请务必指定CARTON。顺便说一句,你说当你把(global-auto-complete-mode t) 放在你的配置中时出错了,但是你把它放在哪里了?确保在加载自动完成之后放置它(即,在 (el-get 'sync) 或类似的调用之后)。您可能需要在调用global-auto-complete-mode 之前输入(require 'auto-complete)
  • 好的,我已经安装了纸箱,当我运行 curl 命令时,它告诉我纸箱已经安装。我的 .carton 目录中没有二进制文件,所以我使用 /usr/bin/carton 代替:make CARTON=/usr/bin/carton tryout rm -rf *.elc EL4T_EMACS=emacs EMACS=tools/el4t/emacs.sh /usr/bin/carton exec tools/el4t/emacs.sh -Q -batch \ -L . -f batch-byte-compile *.el Unknown option: q Unknown option: batch Unknown option: l Unknown option: f ...
  • ... env/bin/pip install --requirement requirements.txt env/bin/pip:5: UserWarning: Module dap was already imported from None, but /usr/lib/python2.7/dist-packages is being added to sys.path from pkg_resources import load_entry_point Requirement already satisfied (use --upgrade to upgrade): jedi>=0.5b4 in ./env/lib/python2.7/site-packages (from -r requirements.txt (line 1)) ...
  • ... Requirement already satisfied (use --upgrade to upgrade): epc in ./env/lib/python2.7/site-packages (from -r requirements.txt (line 2)) Requirement already satisfied (use --upgrade to upgrade): argparse in /usr/lib/python2.7 (from -r requirements.txt (line 3)) Requirement already satisfied (use --upgrade to upgrade): sexpdata in ./env/lib/python2.7/site-packages (from epc->-r requirements.txt (line 2)) Cleaning up... EL4T_EMACS=emacs EMACS=tools/el4t/emacs.sh /usr/bin/carton exec tools/el4t/emacs.sh -Q -L . -l tryout-jedi.el Unknown option: q Unknown option: l Unknown option: l
猜你喜欢
  • 2012-07-27
  • 1970-01-01
  • 2014-12-04
  • 2018-01-13
  • 1970-01-01
  • 2012-04-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多