3

Прямо сейчас, продолжения строки в режиме 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 делал отступ только на один уровень, а не столько, сколько требуется для выравнивания с концом предыдущей строки.

2 ответа2

2

PEP8 говорит:

Нет:

Аргументы в первой строке запрещены, если не используется вертикальное выравнивание

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

Закрывающая круглая скобка WRT python-mode.el предлагает выбор, булево `py-close-at-start-column-p ', по умолчанию nil.

Если не ноль, он будет выстроен под первым символом строки, которая начинает многострочную конструкцию, как в:

my_list = [
    1, 2, 3,
    4, 5, 6,
]
1

На самом деле это не решение, но если вы поместите первый элемент кортежа в новую строку, вы получите почти то поведение, которое вам нужно, из коробки.

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .