В режиме Emacs Python, как мне установить другую ширину автозаполнения для DocStrings и Code?
-
27-10-2019 - |
Вопрос
Я хотел бы, чтобы автоматическое заполнение было установлено на 79 столбцов для разделов кода и 72 для Docstrings, чтобы получить автоматическое соответствие PEP8. Похоже, есть возможность сделать это для режима LISP (колона EMACS-LISP-Docstring), но не для Python.
Есть ли где-то улучшенное питотонное режима, которое включает в себя это?
Решение
Текущий Python-Mode.el предоставляет
(defcustom py-docstring-fill-column 72 [...]
(defcustom py-comment-fill-column 79 [...]
в то время как для значения кода fill-column
используется.
Другие советы
Я не знаю, как это сделать, но я никогда не чувствовал необходимости. Это так просто в использовании Cx f Чтобы изменить столбец заполнения. И вы можете просто ударить Депутат Чтобы повторно использовать последнее значение, которое вы ввели. Просто CX F MP --- 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)))
Это зависит от шрифт-блокировок быть включенным для обнаружения Docstrings.
С током python.el
режим как DSTRICED с 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)
))