Python TextMate 2 中的文本折叠不折叠 lists/tuples/dictionaries
Python text-folding in TextMate 2 not folding lists/tuples/dictionaries
我有点落伍了,刚刚注意到 Textmate 2 的存在——我多年来一直在使用 1.5.10。
我正在尝试,Python 的代码折叠在某些方面得到了改进。 (在折叠 method/class 定义后,它不再吃掉一行空格)。但是,它不再折叠拆分为多行的列表、元组和字典。例如,下面的代码在 1.5.10 中有折叠箭头,但在 2.0.6 中没有:
foo = [
1,
2,
3,
]
Python 包中的默认折叠设置为:
{ foldingStartMarker = '^\s*"""(?=.)(?!.*""")';
foldingStopMarker = '^\s*"""\s*$';
}
默认折叠模式为:
{ foldingIndentedBlockStart = '^\s*(class|def|for|while|if|elif|else|with|try|finally|except)\b.*:\s*(#.*)?$'; }
我不完全确定这两者是如何协同工作的,尤其是因为我能找到的关于折叠定义的唯一文档是针对 TextMate 1.5 的,而且看起来已经过时了。我试过摆弄他们,到目前为止无济于事。有人有什么想法吗?
我弄清楚了正则表达式的工作原理。 foldingIndentBlockStart
负责大多数 Python 折叠,即所有基于缩进的内容。 foldingStartMarker
和 foldingStopMarker
处理所有其他折叠,尽管捆绑包的默认模式仅折叠三引号文档字符串。
我写了一对模式来检查打开和关闭 {}
、()
和 []
,支持在同一行注释(以及后面的逗号,以防它是较长序列的一部分)。我用 |
将我的新模式添加到现有模式中,如下所示:
{ foldingStartMarker = '^\s*"""(?=.)(?!.*""")|(\{|\(|\[)\s*(#.*)?$';
foldingStopMarker = '^\s*"""\s*$|^\s*(\}|\)|\]),?\s*(#.*)?$';
}
我可能遗漏了一些特殊情况,但到目前为止它似乎有效。
我有点落伍了,刚刚注意到 Textmate 2 的存在——我多年来一直在使用 1.5.10。
我正在尝试,Python 的代码折叠在某些方面得到了改进。 (在折叠 method/class 定义后,它不再吃掉一行空格)。但是,它不再折叠拆分为多行的列表、元组和字典。例如,下面的代码在 1.5.10 中有折叠箭头,但在 2.0.6 中没有:
foo = [
1,
2,
3,
]
Python 包中的默认折叠设置为:
{ foldingStartMarker = '^\s*"""(?=.)(?!.*""")';
foldingStopMarker = '^\s*"""\s*$';
}
默认折叠模式为:
{ foldingIndentedBlockStart = '^\s*(class|def|for|while|if|elif|else|with|try|finally|except)\b.*:\s*(#.*)?$'; }
我不完全确定这两者是如何协同工作的,尤其是因为我能找到的关于折叠定义的唯一文档是针对 TextMate 1.5 的,而且看起来已经过时了。我试过摆弄他们,到目前为止无济于事。有人有什么想法吗?
我弄清楚了正则表达式的工作原理。 foldingIndentBlockStart
负责大多数 Python 折叠,即所有基于缩进的内容。 foldingStartMarker
和 foldingStopMarker
处理所有其他折叠,尽管捆绑包的默认模式仅折叠三引号文档字符串。
我写了一对模式来检查打开和关闭 {}
、()
和 []
,支持在同一行注释(以及后面的逗号,以防它是较长序列的一部分)。我用 |
将我的新模式添加到现有模式中,如下所示:
{ foldingStartMarker = '^\s*"""(?=.)(?!.*""")|(\{|\(|\[)\s*(#.*)?$';
foldingStopMarker = '^\s*"""\s*$|^\s*(\}|\)|\]),?\s*(#.*)?$';
}
我可能遗漏了一些特殊情况,但到目前为止它似乎有效。