2012-01-11 34 views
13

我想將自動填充設置爲代碼段的79列和文檔字符串的72以獲得自動PEP8合規性。似乎有一個選項可以爲Lisp模式(emacs-lisp-docstring-fill-column)執行此操作,但不適用於Python。在emacs Python模式下,如何爲文檔字符串和代碼設置不同的自動填充寬度?

是否有一個增強的python-mode.el圍繞某個地方?

+0

在https://bugs.launchpad.net/python-mode/+bug/1028055 – 2012-07-23 17:37:25

+0

提交了功能請求感謝您對此採取措施。 – 2012-07-24 18:24:29

回答

1

當前的Python模式.el提供

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

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

而代碼值爲fill-column被使用。

+0

@Drew事實上只發布了定義的開始,希望它能傳達所有需要的信息。添加一些省略號來清楚說明。 – 2015-05-21 16:11:30

+0

@德魯嗯,不明白你的關切。說:python-mode.el提供,即它是從那裏複製。問題是關於合規性。 – 2015-05-21 17:45:24

+0

對不起,我誤解了。我以爲你在告訴OP將這些'defcustom's放在他的init文件中。 – Drew 2015-05-21 18:07:28

4

我不知道該怎麼做,但我從來沒有覺得需要。使用C-x f來更改填充列非常簡單。您只需點擊M-p即可重複使用您輸入的最後一個值。只需C-x f M-p --- 3個按鍵。

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))) 

被啓用,以檢測文檔字符串這取決於字體鎖定模式

+0

我會把它塞進我的python-mode.el嗎? – 2012-01-20 16:09:26

+0

你可以把它放在你的[init文件](http://www.gnu.org/savannah-checkouts/gnu/emacs/manual/html_node/emacs/Init-File.html)。 – huaiyuan 2012-01-20 18:56:30

+0

我收到一個錯誤:啓用或禁用字體鎖定模式的錯誤類型參數:listp,font-lock-keyword-face。 – 2012-01-24 14:37:03

2

隨着當前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) 
      )) 
相關問題