Подтвердить что ты не робот

Сравнение режимов Python для Emacs

Итак, у меня есть Emacs 24.3, и с ним появляется довольно недавний файл python.el, предоставляющий режим Python для редактирования.

Но я продолжаю читать, что есть python-mode.el на Launchpad, и сравнивая два файла, которые он выскакивает мне, что первый из них находится под 4000 строк, в то время как последний составляет почти 20000. Это говорит о том, что последний гораздо более функциональный.

И я не могу найти какое-либо сравнение функций в Интернете, документацию или, по крайней мере, список возможностей для каждого из них. Да, есть подсветка синтаксиса и встроенный интерпретатор, но как насчет завершения в буфере оболочки, завершения в буфере исходных файлов, аутоиндекса, reindent и т.д.

Итак, каковы важные особенности этих режимов? (Или любой другой режим Python для Emacs, который вы рекомендуете.) Просьба предоставить подробные ответы.

4b9b3361

Ответ 1

Я был пользователем python-mode.el один раз, но прекратил использовать его год назад, потому что я чувствовал, что он был разработан, был плохо организован. Вот список из записки, которую я взял в то время. Но я должен предупредить вас, что с тех пор прошло почти год, поэтому ситуация может быть изменена.

  • Многие функции копирования и вставки.
  • Много случайно работающего кода. Например, не обход переменных, а использование неявного привязки. Это вызывает много ошибок компиляции (и не будет работать, если вы измените его на лексическую область).
  • Грубая гранулярность фиксации. Я отправляю патч, и он был совершен с несвязанными изменениями.

Одна вещь, которая мне нравится в python-mode.el, заключается в автоматическом наборе тестов (хотя я ее никогда не запускал). У python.el пока нет тестового набора. Но я знаю, что автор python.el пишет его сейчас.

Хотя python.el компактен, это не означает, что вы получаете плохую функциональность. Это больше похоже на то, чтобы держать ядро ​​маленьким и позволить другим расширять его, предоставляя сжатый API. Тот же автор python.el написал python-django.el, чтобы расширить python.el для проектов django. Я написал автозаполнение плагина для Python под названием Jedi.el и расширенный плагин IPython под названием EIN. Оба они имеют лучшую поддержку python.el, чем python-mode.el(ну, потому что я не использую python-mode.el, хотя).

У меня было несколько вещей, которые я пропустил сначала из python-mode.el, но они быстро исправлены в python.el(Конечно, это, вероятно, означает, что я не использовал столько функций в python-mode.el).

как насчет завершения в буфере оболочки, завершения в исходном файловом буфере, автоинденте, повторе и т.д.

  • завершение в буфере оболочки: Это работает как в python.el, так и в python-mode.el. Но иногда это не работает, если у вас плохая комбинация версии Emacs и версии python (-mode).el. Таким образом, вероятно, python.el безопаснее. Но если вам нужно лучшее решение, используйте EIN:)

  • завершение в буфере исходного файла: Просто используйте Jedi.el:)

  • автоотступ/создания отступа: Я не знаю, какой из них лучше по производительности. Однако keybind для возврата отличается друг от друга. В python-mode.el, если вы набираете RET, вы получаете autoindent. В python.el RET не дает вам отступов, и вместо этого вы должны использовать C-j. На самом деле C-j для newline + indentation является универсальным поведением в Emacs. Так что python.el лучше, если вы программируете на других языках.

Ответ 2

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

python-mode.el предназначен для повышения производительности редактирования. Это упрощает запуск или выполнение через оболочки python2 и python3 или IPython параллельно.

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

Поддерживает функции языка Python, неизвестные в настоящее время от python.el:

py-up, py-down - перемещение вложенных блоков

Избегайте выборок выборки в точке, предложение, например:

py-backward-clause
py-copy-clause
py-down-clause

...

Не нужно настраивать при тестировании разных версий:

py-execute-clause-python2
py-execute-clause-python3
py-execute-clause-ipython

...

  • понятие мелкозернистых деталей - py-expression, py-minor-expression
  • команды, исполняющие версии и параллельные (I) Python-исполняемые файлы, не нужно переопределять Python по умолчанию
  • в значительной степени устраняя необходимость активного региона, отмеченного ранее, см. py-execute-line и целую группу больше

Чтобы получить обзор, просмотрите меню. Каталог "doc" перечисляет команды.

По мере повышения качества кода: способ сравнения обоих режимов, вероятно, проверяет ошибки, перечисленные в http://debbugs.gnu.org/. См. Например, ошибка № 15510, № 16875; или http://lists.gnu.org/archive/html/help-gnu-emacs/2014-04/msg00250.html

Прокомментировано "грубая зернистость фиксации": в то время как tkf в принципе правильно ищет меньшие части, иногда условия заставляют меня оставить правило. Значительные части написаны не вручную, а программами, находящимися в каталоге "devel". Они создают файлы, используемые в ветке разработки frist - т.е. Компоненты-python-mode. При запуске новой функции часто не очевидно, если выбранный путь является плодотворным. После того, как сотня будет совершена, или она может оказаться невозможной или не рекомендуется. Вместо того, чтобы публиковать все меандры, они использовали эту экспериментальную ветку в течение нескольких дней в этих случаях и проверяли, когда тесты прошли.

BTW Предполагается, что tkf относится не к компиляционным ошибкам - которые будут искать мгновенно, но предупреждениям компилятора. К сожалению, Emacs смешивает предупреждение о предпочтениях подкрепленного стиля с реальными ошибками.