在Emacs Python模式中,如何为文档字符串和代码设置不同的自动换行宽度?
我想把代码部分的自动换行设置为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
的值被使用。