Пусть 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 и расширяет.
Вы найдете другую настройку, которая проверяет, что строка документации сама является оператором. Это поможет избежать появления других наследственников.