Как ограничить первую строку в docstrings Python до максимальной длины строки во время заполнения абзаца в Emacs?

Моя настройка – Emacs 24.4.1, Linux, исходный код Python открыт в буфере, режим Python 0.24.4 (поставляется с Emacs), fill-column установлен в 70, стиль python-fill-docstring-style равен нулю. Я вызываю fill-paragraph (Mq) из метода docstring класса, чтобы переформатировать docstring таким образом, чтобы строка не превышала 70 символов. Но первая строка docstring всегда длиннее. Похоже, что отступ (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.""" 

После Mq в docstring это выглядит так. Первая строка 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 Solutions collect form web for “Как ограничить первую строку в docstrings Python до максимальной длины строки во время заполнения абзаца в Emacs?”

Мой ответ состоит из двух частей:

  1. Это ошибка в python.el, которая поставляется с Emacs. См. Билеты GNU # 20860 и № 21254 . Обходной путь заключается в форматировании docstring вручную.
  2. В первой строке должно быть одно предложение, длина которого не превышает максимальную длину строки, за которой следует пустая строка. Все используемые стили docstring (django, onetwo, pep-257, pep-257-nn, симметричные) следуют этому правилу. Первое предложение не обязательно должно быть обернуто в этом случае, и первая строка не может быть слишком длинной по определению.

С текущей строкой python-mode.el, r1993 и стилем по умолчанию pep-257-nn это Mq дает

 class MyClass(object): def my_method(self): """Some long line with more than 70 characters in the docstring. Some more text. """ 
  • проверьте, имеет ли моя команда «import pdb» в emacs / git?
  • Учебное пособие по русскому языку
  • Использование ipdb с gud emacs без явных контрольных точек в коде
  • Пимаки не начинаются с Emacs24 Carbon
  • Ошибка преобразования Unicode с использованием Python в Emacs
  • Как открыть интерпретатор IPython в emacs?
  • Как мне изменить шрифт Emacs для докстроек Python?
  • Интеграция Ipython Emacs
  • Как я могу покрасить некоторые вещи в Emacs?
  • Python - лучший язык программирования в мире.