Emacs + Rope + Python выдает ошибку lisp

Я пытаюсь использовать Ropemacs с автозаполнением в Emacs, но продолжаю получать ошибку отладчика:

Debugger entered--Lisp error: (void-function rope-completions)
  (rope-completions)
  eval((rope-completions))
  eval-last-sexp-1(nil)
  eval-last-sexp(nil)
  call-interactively(eval-last-sexp nil nil)

Символ rope-completions не имеет документации от C-h S. Он появляется только один раз в auto-complete-config. Я скачал последние версии ropemacs, ropemode, pymacs, python-rope и, вероятно, боролся с любой подходящей системной согласованностью, которая у меня была.

Когда я удаляю эту функцию из файлов конфигурации, автозаполнение превращает курсор в красный цвет при попытке завершения. Я не могу найти ссылку на эту функцию в своей системе.

Автозаполнение отлично работает в Lisp. Как я могу заставить автозаполнение и Rope работать вместе, чтобы дать мне автозаполнение для Python в Emacs?

РЕДАКТИРОВАТЬ: Я не вижу определения завершения веревки через C-h f. Вот результат моего буфера Pymacs:

<23 (version "0.24-beta2")
>45 eval pymacs_load_helper("ropemacs", "rope-")
<278    (return '(progn (pymacs-defuns '(0 rope--OldProgress nil 1 rope--LispProgress nil 2 rope-LispUtils nil 3 rope-message nil 4 rope--lisp-name nil 5 rope--load-ropemacs nil 6 rope--started-from-pymacs nil 7 rope-occurrences-goto "" 8 rope-occurrences-next "")) (pymacs-python 9)))
>45 eval pymacs_load_helper("ropemacs", "rope-")
<288    (return '(progn (pymacs-defuns '(10 rope--OldProgress nil 11 rope--LispProgress nil 12 rope-LispUtils nil 13 rope-message nil 14 rope--lisp-name nil 15 rope--load-ropemacs nil 16 rope--started-from-pymacs nil 17 rope-occurrences-goto "" 18 rope-occurrences-next "")) (pymacs-python 19)))
>51 eval free_python(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 19)
<13 (return nil)
>45 eval pymacs_load_helper("ropemacs", "rope-")
<279    (return '(progn (pymacs-defuns '(19 rope--OldProgress nil 9 rope--LispProgress nil 8 rope-LispUtils nil 7 rope-message nil 6 rope--lisp-name nil 5 rope--load-ropemacs nil 4 rope--started-from-pymacs nil 3 rope-occurrences-goto "" 2 rope-occurrences-next "")) (pymacs-python 1)))

person Conor    schedule 01.02.2012    source источник


Ответы (2)


У вас есть что-то подобное в настройках emacs? (см. также: agr / ropemacs / overview - Bitbucket)

(require 'pymacs)
(pymacs-load "ropemacs" "rope-")

Если он у вас есть, убедитесь, что у вас есть команда ropemacs, например rope-open-project (C-x p o).

Обратите внимание, что rope-completions определяется как функция python, поэтому вы не увидите его определения в источнике elisp.

Вы увидите это, когда нажмете C-h f rope-completions RET (не C-h S), если правильно загрузите верёвочные машины.

rope-completions is an interactive Lisp function.

(rope-completions &rest ARGUMENTS)

It interfaces to a Python function.
person tkf    schedule 02.02.2012
comment
Спасибо за ответ! Я скопировал enigmacurry.com/2009/ 21.01 / почти прямо в мой файл .emacs. Все равно не работает :( - person Conor; 03.02.2012
comment
Можете ли вы проверить, правильно ли вы загружаете веревочные машины, как я описал выше? Кстати, если вас не волнуют ropemacs и вы просто хотите завершить, возможно, вам стоит попробовать chrispoole.com/ проект / ac-python. - person tkf; 03.02.2012
comment
C-x p o привязан к команде icicle-bookmark-other-window (даже в буфере Python), а команда rope-open-project не существует. Я попробую по ссылке, которую вы сегодня указали. - person Conor; 04.02.2012
comment
Тогда проблема в верёвках (или пимаках), а не в автозаполнении. Сначала проверьте, правильно ли загружен pymacs. Удалите все (autoload 'pymacs-...) строки и поставьте (require 'pymacs). Если при запуске emacs возникает ошибка, значит, в пути загрузки нет pymacs.el. Если вы видите документацию при вводе <f1> f pymacs-apply RET, значит настройка pymacs в порядке. Затем убедитесь, что вы можете импортировать веревку в Emacs. Запустите оболочку python и проверьте, не работает ли import rope, import ropemacs или import ropemode. Я думаю, что по крайней мере один из них терпит неудачу. Если да, поместите эти модули в свой PYTHONPATH. - person tkf; 04.02.2012
comment
Вы говорите, что скопировали почти напрямую, но никогда не упоминаете, какая у вас версия ropemode / ropemacs. Мне пришлось установить из hg, по крайней мере, чтобы получить завершение (он определен в ropemode / interface.py как завершение def, префикс rope- добавляется pymacs) - person unhammer; 21.11.2012

Единственный способ, которым я в итоге смог это сделать, - это игнорировать все другие руководства и просто использовать Emacs Для Python Github. Он работает очень хорошо, сочетает в себе множество пакетов, которые я все равно хотел использовать, и его достаточно легко настроить, чтобы он не испортил мои существующие привязки и настройки.

person Conor    schedule 16.04.2012