2015-07-20 9 views
10

Moja instalacja to Emacs 24.4.1, Linux, kod źródłowy Pythona otwarty w buforze, tryb Pythona 0.24.4 (dostarczany z Emacsem), kolumna wypełnienia ustawiony na 70, styl python-fill-docstring ustawiony na zero. Nazywam fill-paragraph (M-q) z wewnątrz metody docstring metody klasy, aby ponownie sformatować docstring tak, że żadna linia nie będzie dłuższa niż 70 znaków. Ale pierwsza linia docstrukcji jest zawsze dłuższa. Wygląda na to, że wcięcie (8 spacji) nie jest uwzględniane w obliczaniu długości linii. Co mogę zrobić, aby ograniczyć długość linii do 70? Czy powinienem zamiast tego używać python-mode.el?Jak ograniczyć pierwszy wiersz w doctrings Pythona do maksymalnej długości wiersza podczas wypełniania akapitu w Emacs?

przykład:

class MyClass(object): 
    def my_method(self): 
     """Some long line with more than 70 characters in the docstring. Some more text.""" 

po m-Q, w docstring wygląda następująco. Pierwsza linia metoda docstring kończy się w kolumnie 78 (i druga linia nie jest wcięty, ale to inna kwestia):

class MyClass(object): 
    def my_method(self): 
     """Some long line with more than 70 characters in the docstring. Some 
more text.""" 

Ale o długości linii 70 powinno być tak:

class MyClass(object): 
    def my_method(self): 
     """Some long line with more than 70 characters in the 
     docstring. Some more text.""" 
+0

Ten sam problem z trybem Emacs 24.5.1 i Python 0.24.5. Istnieje zgłoszenie błędu: http://debbugs.gnu.org/cgi/bugreport.cgi?bug=20860. – holger

Odpowiedz

0

Wraz z obecnym pnia python-mode.el, r1993 i stylu domyślnego pep-257-nn to Mq plony

class MyClass(object): 
    def my_method(self): 
     """Some long line with more than 70 characters in the docstring. 

     Some more text. 
     """ 
+0

Zainstalowałem program python-mode.el 6.2.0 z https://launchpad.net/python-mode. Po ustawieniu 'py-docstring-fill-column' na 70 przesuwa słowo" docstring "po pustej linii. Nie tego chcę. – holger

+0

@holger py-docstring-fill-kolumna jest konfigurowalny. Posiadanie pustej linii po pierwszym wierszu jest jak dotąd zgodne ze wszystkimi zastosowanymi stylami. –

+0

Najpierw myślałem, że mogę ustawić 'py-docstring-style' na zero (docstring jak normalny ciąg). Ale wtedy zdałem sobie sprawę, że pusta linia jest wstawiona we wszystkie łańcuchy, a nie tylko w docstrukcje. Jakie jest uzasadnienie pustej linii w dowolnym ciągu? Czy ma sens żądanie stylu bez dodatkowych pustych linii? – holger

2

Moja odpowiedź consi sts z dwóch części:

  1. Jest to błąd w python.el dostarczany z Emacsem. Zobacz bilety GNU #20860 i #21254. Rozwiązaniem jest ręczne sformatowanie instrukcji.
  2. Pierwsza linia powinna być pojedynczym zdaniem, które nie jest dłuższe niż maksymalna długość linii, a następnie pustą linią. Wszystkie implementowane style docstrukcji (django, onetwo, pep-257, pep-257-nn, symmetric) są zgodne z tą zasadą. Pierwsze zdanie nie musi być opakowane w tym przypadku, a pierwsza linia nie może być zbyt długa z definicji.