Désactiver l'alignement automatique du code Python dans emacs

3

Pour le moment, les continuations de ligne en mode python d’emacs sont alignées sur la fin de la ligne précédente, comme suit:

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

Mais je trouve ce qui précède assez moche. Existe-t-il un moyen de configurer le mode python d’emacs pour qu’il se trouve comme suit:

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

Je trouve que la deuxième version est beaucoup plus facile à lire et je voudrais donc appuyer sur TAB pour ne mettre en retrait que d’un niveau, plutôt que du temps nécessaire pour s’aligner sur la fin de la ligne précédente.

quanticule
la source
C’est une requête intéressante, à partir du code que je ne vois pas, elle est configurable maintenant, vous pouvez envoyer une demande de fonctionnalité à emacs-devel. M-x report-emacs-bug.
kindahero
Vous devez accepter la solution d'Andreas et mettre les guillemets sur une ligne distincte. Ensuite, emacs les mettra en retrait sans s’aligner.
Zelphir Kaltstahl

Réponses:

2

PEP8 dit:

Non:

Arguments en première ligne interdits lorsque l'alignement vertical n'est pas utilisé

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

La parenthèse de fermeture WRT python-mode.el offre quant à elle un choix, booléen `py-close-au-début-colonne-p ', la valeur par défaut est nil.

Lorsqu'il est non nul, il sera aligné sous le premier caractère de la ligne qui commence la construction multiligne, comme dans:

my_list = [
    1, 2, 3,
    4, 5, 6,
]
Andreas Röhler
la source
Montre que PEP8 a ses bons côtés. Cela fait des années que je fais ça, il m’a semblé naturel d’indenter de la sorte. Je me demande comment on peut penser que la version alignée avec des paramètres sur la première ligne est meilleure. Pourquoi traiter certains paramètres différents des autres?
Zelphir Kaltstahl
1

En réalité, ce n'est pas une solution, mais si vous placez le premier élément du tuple sur une nouvelle ligne, vous obtenez presque le comportement que vous souhaitez au tout début.

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