Deaktivieren Sie die automatische Ausrichtung für Python-Code in Emacs

687
quanticle

Im Python-Modus von emacs werden Zeilenfortsetzungen wie folgt am Ende der vorherigen Zeile ausgerichtet:

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

Aber ich finde das oben ziemlich hässlich. Gibt es eine Möglichkeit, den Python-Modus von emacs so zu konfigurieren, dass er automatisch erkannt wird:

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

Ich finde, dass die zweite Version viel einfacher zu lesen ist, und daher möchte ich, dass TAB nur um eine Ebene eingerückt wird, und nicht so sehr, wie nötig es ist, um mit dem Ende der vorherigen Zeile übereinzustimmen.

3
Das ist eigentlich eine interessante Anfrage, von Code, die ich nicht sehe, ist sie jetzt konfigurierbar. Sie können eine Feature-Anfrage an emacs-devel senden. "Mx report-emacs-bug". kindahero vor 10 Jahren 0
Sie sollten die Lösung von Andreas akzeptieren und die Notierungen ebenfalls in einer separaten Zeile angeben. Emacs werden sie dann ohne Ausrichtung einrücken. Zelphir vor 8 Jahren 0

2 Antworten auf die Frage

2
Andreas Röhler

PEP8 sagt:

Nein:

Argumente in der ersten Zeile sind verboten, wenn keine vertikale Ausrichtung verwendet wird

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

Die schließende Klammer von WRT python-mode.el bietet indes eine Auswahl, boolean 'py-close-at-start-column-p', der Standardwert ist nil.

Wenn es nicht Null ist, wird es unter dem ersten Zeichen der Zeile angeordnet, die das mehrzeilige Konstrukt startet, wie in:

my_list = [ 1, 2, 3, 4, 5, 6, ] 
Zeigt, dass PEP8 seine guten Seiten hat. Ich mache das seit Jahren, es schien mir natürlich, auf diese Weise einzurücken. Ich frage mich, wie jeder denken kann, dass die ausgerichtete Version mit Parametern in der ersten Zeile besser ist. Warum einige Parameter behandeln, die sich vom Rest unterscheiden? Zelphir vor 8 Jahren 0
1
Inaimathi

Eigentlich keine Lösung, aber wenn Sie das erste Element des Tupels auf eine neue Zeile setzen, erhalten Sie fast das gewünschte Verhalten, das Sie von Anfang an wünschen.

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