在emacs Python模式下,如何为docstrings和代码设置不同的自动填充宽度?

时间:2012-01-11 17:36:49

标签: python emacs docstring pep8 autoformatting

我希望自动填充设置为79列代码部分,72代表文档字符串,以获得自动PEP8合规性。对于Lisp模式(emacs-lisp-docstring-fill-column)似乎有一个选项,但不适用于Python。

在包含此内容的地方是否有增强的python-mode.el?

4 个答案:

答案 0 :(得分:4)

我不知道该怎么做,但我从来没有觉得有必要。使用 C-x f 来更改填充列非常容易。您只需按 M-p 即可重复使用您输入的最后一个值。只需 C-x f M-p --- 3次击键。

答案 1 :(得分:3)

仅经过轻微测试:

(defadvice current-fill-column (around handle-docstring activate)
  (flet ((docp (p) (let ((q (get-text-property p 'face))
                         (r 'font-lock-string-face))
                     (or (eq r q) (memq r q)))))
    (if (or (docp (point)) (docp (point-at-bol)) (docp (point-at-eol)))
        (setq ad-return-value 72)
      ad-do-it)))

这取决于启用 font-lock-mode 来检测文档字符串。

答案 2 :(得分:2)

将当前python.el模式与Emacs 24.3一起分发,您可以按如下方式重新定义python-fill-string(在此示例中,我还将fill-column设置为85并更改{{1 }}):

python-fill-docstring-style

答案 3 :(得分:1)

当前的python-mode.el提供

(defcustom py-docstring-fill-column 72 [...]

(defcustom py-comment-fill-column 79 [...]

而代码值为fill-column时使用。