Desativar o alinhamento automático para código Python no emacs

3

Neste momento, as continuações de linha em modo python do emacs estão alinhadas ao final da linha anterior, da seguinte forma:

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

Mas acho que o acima é bem feio. Existe alguma maneira de configurar o modo python do emacs para autoindent assim:

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

Eu acho a segunda versão muito mais fácil de ler, e assim eu gostaria de pressionar TAB para recuar somente em um nível, em vez de quanto é necessário para alinhar com o final da linha anterior.

    
por quanticle 29.05.2013 / 07:04

2 respostas

2

PEP8 diz:

Não:

Argumentos proibidos na primeira linha quando não estiver usando alinhamento vertical

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

O parêntese de fechamento do WRT, python-mode.el, entretanto, oferece uma opção booleana, 'py-close-at-start-column-p', o padrão é zero.

Quando não-nulo, ele será alinhado sob o primeiro caractere da linha que inicia a construção multilinha, como em:

my_list = [
    1, 2, 3,
    4, 5, 6,
]
    
por 28.09.2013 / 20:55
1

Não é uma solução, na verdade, mas se você colocar o primeiro elemento da tupla em uma nova linha, obterá quase o comportamento desejado.

this_is_a_list_of_django_urls = (
    '',
    url(r'^admin/?', include(admin.site.urls)),
    url(r'^polls/?', include('polls.urls'))
    )
    
por 29.05.2013 / 15:21