我想將自動填充設置爲代碼段的79列和文檔字符串的72以獲得自動PEP8合規性。似乎有一個選項可以爲Lisp模式(emacs-lisp-docstring-fill-column)執行此操作,但不適用於Python。在emacs Python模式下,如何爲文檔字符串和代碼設置不同的自動填充寬度?
是否有一個增強的python-mode.el圍繞某個地方?
我想將自動填充設置爲代碼段的79列和文檔字符串的72以獲得自動PEP8合規性。似乎有一個選項可以爲Lisp模式(emacs-lisp-docstring-fill-column)執行此操作,但不適用於Python。在emacs Python模式下,如何爲文檔字符串和代碼設置不同的自動填充寬度?
是否有一個增強的python-mode.el圍繞某個地方?
當前的Python模式.el提供
(defcustom py-docstring-fill-column 72 [...]
(defcustom py-comment-fill-column 79 [...]
而代碼值爲fill-column
被使用。
@Drew事實上只發布了定義的開始,希望它能傳達所有需要的信息。添加一些省略號來清楚說明。 – 2015-05-21 16:11:30
@德魯嗯,不明白你的關切。說:python-mode.el提供,即它是從那裏複製。問題是關於合規性。 – 2015-05-21 17:45:24
對不起,我誤解了。我以爲你在告訴OP將這些'defcustom's放在他的init文件中。 – Drew 2015-05-21 18:07:28
我不知道該怎麼做,但我從來沒有覺得需要。使用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)))
被啓用,以檢測文檔字符串這取決於字體鎖定模式。
我會把它塞進我的python-mode.el嗎? – 2012-01-20 16:09:26
你可以把它放在你的[init文件](http://www.gnu.org/savannah-checkouts/gnu/emacs/manual/html_node/emacs/Init-File.html)。 – huaiyuan 2012-01-20 18:56:30
我收到一個錯誤:啓用或禁用字體鎖定模式的錯誤類型參數:listp,font-lock-keyword-face。 – 2012-01-24 14:37:03
隨着當前python.el
模式作爲使用Emacs 24.3 dstributed可以重新定義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)
))
在https://bugs.launchpad.net/python-mode/+bug/1028055 – 2012-07-23 17:37:25
提交了功能請求感謝您對此採取措施。 – 2012-07-24 18:24:29