Отключить автоматическое выравнивание для кода Python в emacs

609
quanticle

Прямо сейчас, продолжения строки в режиме Python в emacs выровнены по концу предыдущей строки следующим образом:

this_is_a_list_of_django_urls = ('', url(r'^admin/?', include(admin.site.urls)), url(r'^polls/?', include('polls.urls')) ) 

Но я нахожу вышеупомянутое довольно уродливым. Есть ли способ настроить python-режим в emacs для автоматического отступа, например так:

this_is_a_list_of_django_urls = ('', url(r'^admin/?', include(admin.site.urls)), url(r'^polls/?', include('polls.urls')) ) 

Я считаю, что вторую версию намного легче читать, и поэтому я бы хотел, чтобы TAB делал отступ только на один уровень, а не столько, сколько требуется для выравнивания с концом предыдущей строки.

3
Это действительно интересный запрос, из кода, который я не вижу, сейчас его можно настроить, вы можете отправить запрос на добавление функции в emacs-devel. `Mx report-emacs-bug`. kindahero 10 лет назад 0
Вы должны принять решение Андреаса и поставить кавычки также на отдельной строке. Тогда Emacs будет отступать без выравнивания. Zelphir 8 лет назад 0

2 ответа на вопрос

2
Andreas Röhler

PEP8 says:

No:

Arguments on first line forbidden when not using vertical alignment

foo = long_function_name(var_one, var_two, var_three, var_four) 

WRT closing parenthesis python-mode.el meanwhile offers a choice, boolean `py-close-at-start-column-p', default is nil.

When non-nil, it will be lined up under the first character of the line that starts the multi-line construct, as in:

my_list = [ 1, 2, 3, 4, 5, 6, ] 
Показывает, что у PEP8 есть свои хорошие стороны. Я делал это годами, для меня было естественным делать отступы таким образом. Интересно, как кто-то может подумать, что выровненная версия с параметрами в первой строке лучше. Почему некоторые параметры отличаются от остальных? Zelphir 8 лет назад 0
1
Inaimathi

Not a solution, really, but if you put the first element of the tuple on a new line, you get almost the behavior you want out-of-the-box.

this_is_a_list_of_django_urls = ( '', url(r'^admin/?', include(admin.site.urls)), url(r'^polls/?', include('polls.urls')) )