不使用垂直对齐时,禁止在第一行使用参数

不使用垂直对齐时,禁止在第一行使用参数

目前,在 emacs 的 python 模式下,行延续与上一行的末尾对齐,如下所示:

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

但我发现上面的代码非常丑陋。有没有办法将 emacs 的 python-mode 配置为自动缩进,如下所示:

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

我发现第二个版本更容易阅读,所以我想按 TAB 只缩进一个级别,而不是无论需要多少才能与上一行的末尾对齐。

答案1

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,
]

答案2

这确实不是一个解决方案,但如果您将元组的第一个元素放在新行上,您几乎可以获得开箱即用的行为。

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

相关内容