Ответ 1
Текущий python-mode.el предоставляет
(defcustom py-docstring-fill-column 72 [...]
(defcustom py-comment-fill-column 79 [...]
тогда как для кода используется значение fill-column
.
Я хотел бы, чтобы автозаполнение устанавливалось в 79 столбцов для разделов кода и 72 для docstrings, чтобы получить автоматическое соответствие PEP8. Кажется, есть возможность сделать это для режима Lisp (emacs- lisp -docstring-fill-column), но не для Python.
Есть ли расширенный python-mode.el где-нибудь, который включает это?
Текущий python-mode.el предоставляет
(defcustom py-docstring-fill-column 72 [...]
(defcustom py-comment-fill-column 79 [...]
тогда как для кода используется значение fill-column
.
Я не знаю, как это сделать, но я никогда не чувствовал нужды. Это так просто использовать 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.el
как dstributed с Emacs 24.3 вы можете переопределить 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)
))