让Emacs使用rst-mode编辑Python文档字符串

时间:2013-03-19 06:59:33

标签: python emacs restructuredtext

如何让Emacs在Python文件的docstrings中使用rst-mode?我依稀记得文件某些区域内的不同模式是可能的,但我不记得它是如何完成的。

3 个答案:

答案 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中的第一个。

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

答案 2 :(得分:0)

就编辑而言,缩小到docstring并激活rst-mode应该是最佳选择。

python-mode el提供了py-docstring -p,它可以很容易地适用于python.el

将整个事物绑定到某个空闲计时器,将进行缩小/切换。

保留一些表达式,可以切换rst-off-mode并加宽。