2015-07-20 45 views
10

我的設置是Emacs 24.4.1,Linux,Python源代碼在緩衝區中打開,Python模式0.24.4(自帶Emacs),填充列設置爲70,python-fill-docstring-style設置爲nil。我從類方法docstring中調用fill-paragraph(M-q)來重新格式化文檔字符串,使得沒有行超過70個字符。但是文檔字符串的第一行總是更長。看起來縮進(8個空格)不包含在行長計算中。我能做些什麼來將行長限制在70?我應該使用python-mode.el嗎?如何限制Python文檔中的第一行到Emacs中填充段的最大行長度?

實施例:

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

在它看起來像這樣的文檔字符串-M-Q之後。第一種方法文檔字符串線在78列的端部(與所述第二線沒有縮進,但是這是一個不同的問題):

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

但隨着70的線路長度應該是這樣的:

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

與Emacs 24.5.1和Python模式0.24.5相同的問題。有一個錯誤報告:http://debbugs.gnu.org/cgi/bugreport.cgi?bug=20860。 – holger

回答

0

與蟒蛇 - mode.el,r1993,和默認樣式的當前Trunk pep-257-nnMQ的產量

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

     Some more text. 
     """ 
+0

我從https://launchpad.net/python-mode安裝了python-mode.el 6.2.0。將'py-docstring-fill-column'設置爲70時,會在空行之後移動單詞「docstring」。這不是我想要的。 – holger

+0

@holger py-docstring-fill-column是可自定義的。在第一行之後有一條空行符合目前所有風格的合意。 –

+0

首先,我想我可以設置'py-docstring-style'爲零(docstring就像普通字符串)。但後來我意識到空行被插入到所有字符串中,而不僅僅是文檔字符串。任何字符串中空行的理由是什麼?請求沒有額外空行的樣式是否有意義? – holger

2

我的回答consi兩部分的sts:

  1. 這是在Emacs附帶的python.el中的一個bug。見GNU門票#20860#21254。解決方法是手動格式化文檔字符串。
  2. 第一行應該是一個不長於最大行長度的單個句子,後面跟着一個空行。所有實現的文檔字符串樣式(django,onetwo,pep-257,pep-257-nn,對稱)遵循該規則。第一句不需要在這種情況下進行包裝,根據定義,第一行不能太長。
相關問題