Как заставить Emacs использовать rst-mode
внутри docstrings в файлах Python? Я смутно помню, что возможны разные режимы в определенных областях файла, но я не помню, как это было сделано.
Имейте Emacs редактировать докстроны Python, используя rst-mode
Ответ 1
Пакет 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 в первый режим в точке одной строки docstring, а затем оставьте ее в этом режиме до начала следующей docstring. Эта версия позволяет исключить Emacs в первый режим, если есть еще одна двойная кавычка в той же строке, что и начало docstring, которое все еще не идеально, но должно быть ближе.
Ответ 2
Вы найдете еще одну настройку, которая проверяет, что docstring является самой инструкцией. Это позволит избежать первого в другом heredoc.
Ответ 3
Что касается целей редактирования, то нужно сузить до docstring и активировать rst-режим.
python-mode el предоставляет py-docstring-p, который может быть легко адаптирован для python.el
Чем привязано все это к некоторому таймеру, будет сужение/переключение.
Остается некоторое выражение, которое переключает первый режим и расширяется.