2012-01-11 12 views
13

Chciałbym mieć automatycznie wypełnione zestaw 79 kolumn dla sekcji kodu i 72 dla docstrings, aby uzyskać automatyczną zgodność PEP8. Wydaje się, że jest to możliwe w trybie Lisp (emacs-lisp-docstring-fill-column), ale nie w Pythonie.W trybie Python emacs, w jaki sposób ustawić inną szerokość automatycznego wypełniania dla docstrings i kodu?

Czy jest jakiś ulepszony python-mode.el w miejscu, które zawiera to?

+0

wypełniono żądanie funkcji na stronie https://bugs.launchpad.net/python-mode/+bug/1028055 –

+0

Dziękujemy za podjęcie działań. –

Odpowiedz

1

Obecny python-mode .el zapewnia

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

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

podczas gdy dla wartości kodu fill-column jest używany.

+0

@ Drew Rzeczywiście opublikował tylko początek definicji, mając nadzieję, że przekazuje wszystkie potrzebne informacje. Dodano kilka wielokropków, żeby to wyjaśnić. –

+0

@ Drew Hmm, nie rozumiem twojego niepokoju. Said: python-mode.el zapewnia, tj. Jest to kopia z tego miejsca. Pytanie dotyczyło zgodności. –

+0

Przepraszam, źle mnie zrozumiałem. Myślałem, że mówisz OP, aby umieścić te 'defcustom's w swoim pliku init. – Drew

4

Nie wiem, jak to zrobić, ale nigdy nie czułem potrzeby. Jest tak łatwy w użyciu, aby zmienić kolumnę wypełnienia. I możesz po prostu nacisnąć M-p, aby ponownie użyć ostatniej wprowadzonej wartości. Tylko C-x f M-p --- 3 naciśnięcia klawiszy.

3

Tylko nieznacznie testowane:

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

To zależy font-lock-mode jest włączona do wykrywania docstrings.

+0

Czy wstawiłbym to do mojego python-mode.el? –

+0

Możesz umieścić go w swoim [pliku init] (http://www.gnu.org/savannah-checkouts/gnu/emacs/manual/html_node/emacs/Init-File.html). – huaiyuan

+0

Występuje błąd: "Nieprawidłowy typ argumentu: listp, font-lock-keyword-face" z włączonym lub wyłączonym trybem blokady czcionki. –

2

Przy obecnym trybie python.el jak dstributed z Emacs 24.3 można przedefiniować python-fill-string w następujący sposób (w tym przykładzie, ja też ustawić fill-column do 85 i zmienić 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) 
      )) 
Powiązane problemy