如何在TextMate中为Python注释启用块折叠?
在 TextMate 1.5.10 r1623 版本中,你会看到一些小箭头,可以用来折叠方法块:
不过,如果你有多行的 Python 注释,软件就无法识别,所以你不能折叠它:
def foo():
"""
How do
I fold
these comments?
"""
print "bar"
TextMate 的官网上有关于如何自定义折叠的说明:http://manual.macromates.com/en/navigation_overview#customizing_foldings
...但是我对正则表达式不太熟悉,所以不知道该怎么做。TextMate 使用的是 Oniguruma 正则表达式 API,而我使用的是通过 GetBundles 更新到最新版本的默认 Python.tmbundle。
有没有人知道该怎么做呢?提前谢谢大家的帮助! :)
在 Bundle Editor 中为 Python.tmbundle 添加默认的 foldingStartMarker
和 foldingStopMarker
正则表达式值:
foldingStartMarker = '^\s*(def|class)\s+([.a-zA-Z0-9_ <]+)\s*(\((.*)\))?\s*:|\{\s*$|\(\s*$|\[\s*$|^\s*"""(?=.)(?!.*""")';
foldingStopMarker = '^\s*$|^\s*\}|^\s*\]|^\s*\)|^\s*"""\s*$';
2 个回答
2
看起来在TextMate中,多行注释的折叠功能是可以用的,但你需要把引号对齐,像这样:
""" Some sort of multi
line comment, which needs quotes
in just the right places to work. """
这样就可以了:
1
根据这个Textmate邮件列表的讨论,如果你仔细看完,会发现Textmate对Python的代码折叠功能并不支持。简单来说,代码折叠的起始和结束标记使用的正则表达式不支持捕获,这就导致“结束折叠”前面的空格数量无法和“开始折叠”前面的空格数量匹配。
这个问题并没有得到Textmate的创始人Allan Odgaard的正式回应;不过因为这个讨论是2005年的,我猜这个问题已经不再被关注,也不会得到支持。