gpt4 book ai didi

TextMate 2 中的 Python 文本折叠不折叠列表/元组/字典

转载 作者:行者123 更新时间:2023-12-02 07:04:23 26 4
gpt4 key购买 nike

我有点落后于时代,刚刚注意到 Textmate 2 的存在 - 我已经使用 1.5.10 多年了。

我正在尝试,并且在某些方面 Python 的代码折叠得到了改进。 (在折叠的方法/类定义之后,它不再吃掉一行空白)。但是,它不再折叠分成多行的列表、元组和字典。例如,以下代码在 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 折叠,即基于缩进的所有内容。 foldingStartMarkerfoldingStopMarker 处理所有其他折叠,尽管该包的默认模式仅折叠三引号文档字符串。

我编写了一对模式来检查打开和关闭 {}()[],并支持注释在同一行(后面加一个逗号,以防它是较长序列的一部分)。我使用 | 将新模式添加到现有模式中,如下所示:

{   foldingStartMarker = '^\s*"""(?=.)(?!.*""")|(\{|\(|\[)\s*(#.*)?$';
foldingStopMarker = '^\s*"""\s*$|^\s*(\}|\)|\]),?\s*(#.*)?$';
}

我可能错过了一些极端情况,但到目前为止它似乎有效。

关于TextMate 2 中的 Python 文本折叠不折叠列表/元组/字典,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60440116/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com