Emacs и Python

Недавно я начал изучать Emacs. Я прошел учебник, прочитал некоторые вступительные статьи, до сих пор хорошие.

Теперь я хочу использовать его для разработки Python. Из того, что я понимаю, существуют два отдельных режима Python для Emacs: python-mode.el, который является частью проекта Python; и python.el, который является частью Emacs 22.

Я прочитал всю информацию, которую мог найти, но большая часть ее кажется довольно устаревшей, и я все еще смущен.

Вопросы:

  • В чем их отличие?
  • Какой режим следует устанавливать и использовать?
  • Существуют ли другие дополнения Emacs, которые необходимы для разработки Python?

Соответствующие ссылки:

Ответ 1

Если вы используете GNU Emacs 21 или раньше или XEmacs, используйте python-mode.el. GNU Emacs 22 python.el не будет работать на них. На GNU Emacs 22 работает python.el и лучше связывается с GNU Emacs собственным анализом и дополнением символов, ElDoc и т.д. Я сам использую XEmacs, поэтому я не использую его, и я слышал, как люди жаловались, что это не было В прошлом было очень хорошо работать, но есть доступные обновления, которые устраняют некоторые проблемы (например, на странице emacswiki, на которую вы ссылаетесь), и вы надеялись, что некоторые из них были интегрированы вверх по течению к настоящему времени. Если бы я был видом GNU Emacs, я бы использовал python.el, пока не нашел конкретных причин не делать этого.

Самая сложная проблема python-mode.el, насколько я видел, заключается в том, что она не совсем понимает строки с тройным кавычками. Он рассматривает их как одинарные, что означает, что одна цитата внутри строки с тремя кавычками будет отбрасывать подсветку синтаксиса: она будет думать, что строка закончилась там. Вам также может потребоваться изменить свой авто-режим-alist, чтобы включить python-режим для .py файлов; Я не помню, если это все еще так, но мой init.el уже много лет устанавливает auto-mode-alist.

Что касается других аддонов, я бы не счел "существенным". Иногда полезно использовать функциональное меню XEmacs, оно дает вам небольшое меню функций/классов для текущего файла. Я не помню, имеет ли GNU Emacs что-то подобное. У меня есть rst-режим для редактирования reStructuredText, который используется в некоторых проектах. Привязка к любому VC, который вы используете, если таковой имеется, может быть вам полезен, но встроенная поддержка большинства и легко загружаемых файлов .el для других.

Ответ 2

Этот сайт содержит описание того, как получить завершение кода Python в Emacs. Ropemacs - это способ заставить Rope работать в emacs. У меня тоже не было большого опыта, но они заслуживают внимания.

Ответ 3

Учитывая количество раз, когда у меня есть несколько открытых буферов, все называемые __init__.py, я рассматриваю библиотеку uniquify, необходимую для разработки python.

Pyflakes также помогает повысить производительность.