Вопрос

Есть ли эквивалент слизи для Python?

Например, если я установлю курсор на foo () и сделать m-. (Перейти к определению) Я хотел бы увидеть исходное определение функции foo

Это должно работать независимо от того, находится ли Фу в

1) Каталог местного проекта

2) в некоторых ~ / .virtualenvs / bar / lib / сайт-пакеты

3) В каком-то другом питоном-пакете

4) ВИРТУАЛЬНАЯ ENV используется (т. Е. Следует смотреть в моем нынешнем виртуалене))

Делает ли комбинация Pymacs/Ropemacs что -нибудь из этого?

Это было полезно?

Решение

Чтобы избежать --e, вы можете использовать Etags, а с найду вы рекурсивно добавляете файл PY:

find . -type f -name '*.py' | xargs etags

Другие советы

Большинство ответов, упомянутых здесь, устарели. Простое решение - использовать Elpy для M-. Без Etags (что требует дополнительной работы).

Установить Элпи, как упомянуто здесь.

M-x package-install elpy

а затем установите пакеты Python

$ sudo pip install rope jedi

Перезапустите Emacs, откройте любой файл Python и запустите M-.

Элпи полностью задокументирован, вы можете прочитать о M-. здесь.

М-. обычно управляет "find-tag"Функция. Вы должны создать файл тегов из исходных файлов Python. Тогда вы"visit-tags-table«Прежде чем делать M-. Таким образом, EMACS будет прыгать ко всем определениям тега. Тип CU M-. Чтобы перейти к следующему определению вашего тега. См. Документация на Find-Tag для получения справки. Проконсультируйтесь с Emacs Помогите знать, как Создайте файл тегов из исходных файлов Python.

Вы можете, например, использовать Буздные CTAGS Для создания файла тегов.

Перейдите в корневой каталог ваших файлов Python и сделайте это:

ctags -e -R .

Файл тегов обычно создается в корневом каталоге проекта.

Принятый отвечать пропускает важный момент, если вы выполняете etags нравится find . -type f -name '*.py' | xargs etags Затем файл тегов будет генерироваться каждый раз для каждого файла.

Правильный способ сделать это - добавить данные в существующие теги файла с --append нравится

rm -f TAGS
find . -type f -name '*.py' -print0 | xargs -0 etags --append

Также, если вы хотите включить идентификаторы из карточек Virtual Env Site Dir (например, ~/.virtualenvs/bar/lib/site-packages):

SITEPACKAGES=$(cdvirtualenv;pwd)/lib/python3.6/site-packages/
find $SITEPACKAGES -type f -name '*.py' -print0 | xargs -0 etags -a

*регулировать python3.6 к вашей текущей версии Python

Следующее будет индексировать ваш текущий проект

find . -type f -name '*.py' | xargs etags

Но если вы хотите индексировать свои импортные либера. Сначала вы активируете свой виртуально. Затем используйте which Python, чтобы обнаружить, где находятся ваши LIBS, а затем подключите их к ETAGS.

workon my-project # if using virtualenvwrappwer
source bin/activate # if using virtualenv

find ${$(which python)/\/bin\/python/} -type f -name '*.py' | xargs etags

Попробуйте Emacs Анаконда-режим и Компания-Анаконда пакеты. Обновление конфигурации:

(eval-after-load "company"
 '(add-to-list 'company-backends 'company-anaconda))
(add-hook 'python-mode-hook 'anaconda-mode)
(add-hook 'python-mode-hook 'company-mode)

Переключиться на Virtualenv с pythonic-activate, если у тебя есть.

Теперь у тебя есть M-. И вы можете нажать M-* вернуться назад!

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top