如何让Emacs在Python文件的docstrings中使用rst-mode
?我依稀记得文件某些区域内的不同模式是可能的,但我不记得它是如何完成的。
答案 0 :(得分:14)
支持它的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的开头相同的行上有另一个双引号,这个版本避免将Emacs置于第一模式,这仍然不完美但应该更接近。
答案 1 :(得分:0)
你会发现另一个设置,检查docstring是一个语句本身。这避免了其他heredoc中的第一个。
答案 2 :(得分:0)
就编辑而言,缩小到docstring并激活rst-mode应该是最佳选择。
python-mode el提供了py-docstring -p,它可以很容易地适用于python.el
将整个事物绑定到某个空闲计时器,将进行缩小/切换。
保留一些表达式,可以切换rst-off-mode并加宽。