如何在Python文档字符串中将第一行限制为Emacs中fill-paragraph期间的最大行长度?

时间:2015-07-20 11:34:10

标签: python emacs

我的设置是Emacs 24.4.1,Linux,Python源代码在缓冲区中打开,Python模式0.24.4(随Emacs一起提供),fill-column设置为70,python-fill-docstring-style设置为nil。我在类方法docstring中调用fill-paragraph(M-q)来重新格式化docstring,使得任何行都不超过70个字符。但文档字符串的第一行总是更长。看起来缩进(8个空格)不包括在行长度计算中。我该怎么做才能将线路长度限制在70?我应该使用python-mode.el吗?

示例:

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

在docstring中的M-q后,它看起来像这样。第一个方法docstring行在第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."""

2 个答案:

答案 0 :(得分:4)

我的回答包括两部分:

  1. 这是与Emacs一起提供的python.el中的一个错误。请参阅GNU票证#20860#21254。解决方法是手动格式化文档字符串。
  2. 第一行应该是一个不长于最大行长度的单个句子,后面跟一个空行。所有实现的文档字符串样式(django,onetwo,pep-257,pep-257-nn,对称)遵循该规则。在这种情况下,第一句话不需要包装,根据定义,第一行不能太长。

答案 1 :(得分:1)

使用python-mode.el的当前主干,r1993和默认样式pep-257-nn M-q 产生

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

        Some more text.
        """