自動 PEP8 準拠を取得するために、コード セクションの自動入力を 79 列、ドキュメント文字列の自動入力を 72 に設定したいと考えています。Lisp モード (emacs-lisp-docstring-fill-column) ではこれを行うオプションがあるようですが、Python ではそうではありません。
これを含む拡張された python-mode.el はどこかにありますか?
自動 PEP8 準拠を取得するために、コード セクションの自動入力を 79 列、ドキュメント文字列の自動入力を 72 に設定したいと考えています。Lisp モード (emacs-lisp-docstring-fill-column) ではこれを行うオプションがあるようですが、Python ではそうではありません。
これを含む拡張された python-mode.el はどこかにありますか?
その方法はわかりませんが、その必要性を感じたことはありません。C-x f塗りつぶし列を変更するのはとても簡単です。M-p最後に入力した値を再利用するには、 を押すだけです。ちょうどC-x f M-p--- 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)))
これは、docstringを検出するために有効になっているfont-lock-modeに依存します。
python.el
Emacs 24.3 で配布されている現在のモードでは、次のように を再定義できpython-fill-string
ます (この例では、 もfill-column
85 に設定し、 を変更しますpython-fill-docstring-style
)。
;; Python customizations
(defun my-python-fill-string (&optional justify)
(let ((old-fill-column fill-column))
(setq fill-column 72)
(python-fill-string justify)
(setq fill-column old-fill-column)
))
(add-hook 'python-mode-hook
(lambda () (interactive)
(setq python-fill-docstring-style 'pep-257-nn)
(set-fill-column 85)
(setq python-fill-string-function my-python-fill-string)
))
現在の python-mode.el が提供するもの
(defcustom py-docstring-fill-column 72 [...]
(defcustom py-comment-fill-column 79 [...]
一方、コード値にfill-column
は が使用されます。