style guide google elpy python emacs docstring pep8 autoformatting

guide - emacs python



En el modo Python de emacs, ¿cómo configuro un ancho de autocompletar diferente para las cadenas de documentos y el código? (4)

Con el modo python.el actual como dstributed con Emacs 24.3 puede redefinir el python-fill-string siguiente manera (en este ejemplo, también configuro el fill-column en 85 y cambio 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) ))

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.

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


El actual python-mode.el proporciona

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

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


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


Solo ligeramente probado:

(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 que font-lock-mode esté habilitado para detectar las cadenas de documentos.