在Emacs Python模式中,如何为文档字符串和代码设置不同的自动换行宽度?

15 投票
4 回答
2579 浏览
提问于 2025-04-17 10:02

我想把代码部分的自动换行设置为79列,把文档字符串的自动换行设置为72列,这样就能自动符合PEP8规范。好像在Lisp模式下有这个选项(emacs-lisp-docstring-fill-column),但在Python中没有。

有没有什么增强版的python-mode.el可以实现这个功能呢?

4 个回答

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,才能识别文档字符串。

4

我不知道怎么做,但我从来没有觉得有这个必要。使用 C-x f 来改变填充列非常简单。而且你只需要按一下 M-p 就可以重复上次输入的值。只要 C-x f M-p --- 只需要三下键盘。

1

现在的 python-mode.el 提供了

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

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

而在代码中,fill-column 的值被使用。

撰写回答