2012-01-11 12 views
13

Me gustaría tener el autocompletar configurado en 79 columnas para las secciones de códigos y 72 para las cadenas de documentos para obtener el cumplimiento automático de PEP8. Parece que hay una opción para hacer esto para el modo Lisp (emacs-lisp-docstring-fill-column) pero no para Python.En el modo Python de emacs, ¿cómo configuro un ancho de autocompletar diferente para las cadenas de documentos y el código?

¿Hay un python-mode.el mejorado en algún lugar que incluya esto?

+0

presentaron una solicitud de función en https://bugs.launchpad.net/python-mode/+bug/1028055 –

+0

Gracias por tomarse medidas al respecto. –

Respuesta

1

pitón-Modo actual .el ofrece se utiliza

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

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

mientras que para valor de código de fill-column.

+0

@Drew De hecho, publicó el comienzo de las definiciones solamente, esperando que transmita toda la información necesaria. Se agregaron algunos puntos suspensivos para dejar eso en claro. –

+0

@Drew Hmm, no entiendo su preocupación. Dicho: python-mode.el proporciona, es decir, es una copia de allí. La pregunta era sobre el cumplimiento. –

+0

Lo siento, no entendí bien. Pensé que le estabas diciendo al OP que pusiera esos 'defcustom's en su archivo init. – Drew

4

No sé cómo hacer eso, pero nunca sentí la necesidad. Es tan fácil de usar C-x f para cambiar la columna de relleno. Y puede presionar M-p para reutilizar el último valor que ingresó. Solo C-x f M-p --- 3 pulsaciones de teclas.

3

Sólo un poco probados:

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

Esto depende de font-lock-mode está permitido detectar las cadenas de documentación.

+0

¿Debo incluir esto en mi python-mode.el? –

+0

Puede ponerlo en su [archivo init] (http://www.gnu.org/savannah-checkouts/gnu/emacs/manual/html_node/emacs/Init-File.html). – huaiyuan

+0

Me aparece un error: "argumento de tipo incorrecto: listp, font-lock-keyword-face" con font-lock-mode habilitado o deshabilitado. –

2

Con el modo actual python.el como dstributed con Emacs 24.3 se puede redefinir el python-fill-string de la siguiente manera (en este ejemplo, también me puse el fill-column a 85 y cambiar el 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) 
      )) 
Cuestiones relacionadas