如何在TextMate中为Python注释启用块折叠?

时间:2011-01-09 02:45:40

标签: python comments textmate block folding

在TextMate 1.5.10 r1623中,您可以获得允许折叠方法块的小箭头:

alt text

不幸的是,如果你有一个多行的Python评论,它不会识别它,所以你不能折叠它:

def foo():
 """
 How do
 I fold
 these comments?
 """

 print "bar"

TextMate在其网站上有关于如何自定义折叠的信息:http://manual.macromates.com/en/navigation_overview#customizing_foldings

...但我对正则表达式的熟练程度不足以对此做任何事情。 TextMate使用Oniguruma正则表达式API,我使用默认的Python.tmbundle通过GetBundles更新到最新版本。

有没有人知道如何做到这一点?在此先感谢您的帮助! :)


在Bundle Editor的Python语言下为Python.tmbundle添加默认的foldingStartMarkerfoldingStopMarker正则表达式值:

foldingStartMarker = '^\s*(def|class)\s+([.a-zA-Z0-9_ <]+)\s*(\((.*)\))?\s*:|\{\s*$|\(\s*$|\[\s*$|^\s*"""(?=.)(?!.*""")';
foldingStopMarker = '^\s*$|^\s*\}|^\s*\]|^\s*\)|^\s*"""\s*$';

2 个答案:

答案 0 :(得分:2)

看起来多行注释折叠在TextMate中有效,但您必须完全按照这样的方式排列引号:

""" Some sort of multi
    line comment, which needs quotes
    in just the right places to work. """

这似乎是这样做的:

enter image description here

enter image description here

答案 1 :(得分:1)

根据this Textmate Mailing list thread,如果你遵循它到最后,不支持适当的Python代码折叠。基本上,在foldingStartMarker和foldingStopMarker中实现的正则表达式不允许捕获,因此“结束折叠”开头的间距量不能与“开始折叠”匹配。

Textmate的创作者Allan Odgaard最终没有正式解决这个问题。但是由于线程来自2005年,我认为它是一个死的问题,而不是一个将被支持的问题。