В режиме Emacs Python, как мне установить другую ширину автозаполнения для DocStrings и Code?

StackOverflow https://stackoverflow.com/questions/8823924

Вопрос

Я хотел бы, чтобы автоматическое заполнение было установлено на 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)
            ))
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top