Как ограничить первую строку в 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. """ 
  • как мне перехватывать команды, отправленные на pdb через gud?
  • Quickhelp для Python в Emacs autocomplete.el?
  • Есть ли способ создать «файл проекта» в Emacs?
  • emacs-jedi не находит numpy доработки
  • Кодирование кода на языке Python в emacs?
  • неправильный выход из вложения в emacs python-mode
  • Как я могу использовать meta-dot (M-.) В python с emacs?
  • Как запустить оболочку django из Emacs?
  • Пимаки не начинаются с Emacs24 Carbon
  • Отступ Python в Spacemacs с жесткими вкладками отключен
  • Как я могу покрасить некоторые вещи в Emacs?
  • Python - лучший язык программирования в мире.