使用安装了el-get的Emacs-jedi出现软件包加载问题

3

我按照这些指示用el-get尝试安装emacs-jedi(以及其他必需的包),但是没有成功。

在我的.emacs文件中,我添加了以下几行:

;; .emacs

;; Load package repositories
(require 'package)
(add-to-list 'package-archives
             '("marmalade" . "http://marmalade-repo.org/package/") t)

(add-to-list 'package-archives
             '("melpa" . "http://melpa.milkbox.net/packages/") t)

;; Install / load / require el-get and
;; packages managed by it.
(add-to-list 'load-path "~/.emacs.d/el-get/")
(add-to-list 'load-path "~/.emacs.d/el-get/el-get")

(unless (require 'el-get nil t)
  (url-retrieve
   "https://raw.github.com/dimitri/el-get/master/el-get-install.el"
   (lambda (s)
     (end-of-buffer)
     (eval-print-last-sexp))))

;; Initialize any loaded packages 
(package-initialize)

;; stuff to set font, theme, etc.
;; ...

;; Include jedi for Python mode.
(add-hook 'python-mode-hook 'jedi:setup)
(setq jedi:complete-on-dot t)

;; rest of file ...

起初我遇到了“无法打开加载文件jedi/jedi”问题。当我将“~/.emacs.d/el-get/”添加到加载路径中时,这个问题似乎消失了(安装el-get时只会将“~/.emacs.d/el-get/el-get”放在加载路径上)。
但是,在这之后,打开一个Python文件并尝试执行M-x python-mode会出现错误:
Symbol's function definition is void: jedi:setup

我很乐意继续进行任何调试工作,或者提供更多的消息和输出--但是在长时间谷歌搜索这些错误信息之后,我没有找到任何有效的方法。


1
我看到你已经在使用MELPA了。你可以从那里获取jedi。别忘了执行sudo pip install jedi epc - abo-abo
一旦我清除了所有的 el-get 相关内容,MELPA 几乎立即开始工作。 - ely
不建议使用"@abo-abo pip install jedi epc",请使用"jedi:install-server"。详情请见:http://tkf.github.io/emacs-jedi/latest/#jedi:install-server - tkf
1个回答

3

您缺少提到在https://github.com/dimitri/el-get#basic-setup中的 (el-get 'sync)

另外,你不需要(package-initialize)等来设置包管理器。一切都由el-get处理。不要将两个包管理器混合使用是个好主意。

这里是一个通过el-get使用Jedi的最小Emacs设置:

(add-to-list 'load-path "~/.emacs.d/el-get/el-get")

;; Uncomment this, if you are in hurry
;; (setq el-get-install-skip-emacswiki-recipes nil)

(unless (require 'el-get nil 'noerror)
  (with-current-buffer
      (url-retrieve-synchronously
       "https://raw.github.com/dimitri/el-get/master/el-get-install.el")
    (goto-char (point-max))
    (eval-print-last-sexp)))

(el-get 'sync)

(add-hook 'python-mode-hook 'jedi:setup)
(setq jedi:complete-on-dot t)

;; Type:
;; - M-x el-get-install RET jedi RET
;; - M-x jedi:install-server RET
;; Then open any Python file.

更新:

我已将其添加到手册中

  1. http://tkf.github.io/emacs-jedi/latest/#install
  2. http://tkf.github.io/emacs-jedi/latest/#quick-try

备份/.emacs.d到另一个地方,然后尝试使用空的/.emacs.d。如果不起作用,则是el-get的错误。请向el-get问题跟踪器报告。 - tkf
完全没有起作用。在将.emacs.d移动到备份后,我得到了这个错误:el-get-convert-from-old-status-format: Opening output file: no such file or directory, /home/ely/.emacs.d/el-get/.status.el.old - ely
最后我只是清除了它,删除了对 el-get 的引用,然后只需执行 M-x package-install (ret) jedi,它就立即起作用了。 - ely
如果您没有像我在回答中提到的那样设置(setq el-get-install-skip-emacswiki-recipes nil),第一次安装el-get需要非常长的时间。 - tkf
执行 M-x package-install 命令后,您将使用 pacakge.el 目录而不是 el-get。在这种情况下,可以安全地删除所有与 el-get 相关的设置。 - tkf
显示剩余4条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接