Пусть Emacs отредактирует строки документации Python, используя rst-mode

Как мне заставить Emacs использовать rst-mode внутри строк документации в файлах Python? Я смутно помню, что возможны разные режимы в определенных областях файла, но я не помню, как это делается.

3 ответа

Решение

Пакет Emacs, который поддерживает это mmm-mode, Убедитесь, что он установлен, а затем сделайте код, подобный следующему, при запуске Emacs:

(require 'mmm-mode)
(setq mmm-global-mode 'maybe)
(mmm-add-classes
 '((python-rst
    :submode rst-mode
    :front "^ *[ru]?\"\"\"[^\"]*$"
    :back "^ *\"\"\""
    :include-front t
    :include-back t
    :end-not-begin t)))
(mmm-add-mode-ext-class 'python-mode nil 'python-rst)

Я протестировал это с некоторыми программами на Python, и, похоже, он работает правильно.

Обратите внимание, что это переключится в rst-режим для каждой строки в тройных кавычках, а не только для тех, которые находятся в начале определения функции. Вероятно, вы можете ограничить его только теми, которые находятся в начале определения функции с более сложным передним регулярным выражением, но я не совсем уверен, как с этим справиться, поскольку я думаю, что определения в режиме mmm по умолчанию соответствуют строке за раз.

Редактировать: Моя оригинальная версия переводит Emacs в rst-режим в точке одной строки документации и затем оставляет его в этом режиме вплоть до начала следующей строки документации. Эта версия избегает перевода Emacs в rst-режим, если в той же строке, что и начало строки документации, есть еще одна двойная кавычка, которая все еще не идеальна, но должна быть ближе.

Что касается целей редактирования, то вам следует сузиться до строки документации и активировать rst-режим.

python-mode el предоставляет py -docstring-p, который может быть легко адаптирован для python.el

Если связать все это с каким-то таймером простоя, это сузит / переключит.

Остается какое-то выражение, которое отключает rst-mode и расширяет.

Вы найдете другую настройку, которая проверяет, что строка документации сама является оператором. Это поможет избежать появления других наследственников.

https://github.com/jorgenschaefer/elpy/issues/498

Другие вопросы по тегам