我正在使用 kakoune|
的管道(
--- !Python |
print('hello world')
--- !Output |
this results in:
(在这种情况下,!Output
假定标记的标量是 ReST,前一个“程序”“hello world”的输出连接到该标量)。
这些标量/文档中的每一个都有不同的格式需求,具体取决于标签和/或配置。我通常做的是选择整个缓冲区,通过管道进入理解每个文档的程序,通过相应的“子格式化程序”格式化每个文档并重新组合它们。当我进行部分选择时,格式可能会出错,因为我无法轻易检测到要使用的格式化程序,除非选择以文字标量的标记开头。
我可以直接调用适当的子格式化程序,但这既麻烦又有时不合适(尝试从类中间方法开始格式化 Python)或不适用,例如在来自不同文档类型的多选中(因此需要不同的子格式化程序)。
我想要的是管道命令的功能,但是调用的外部格式化程序将完整的缓冲区作为标准输入,并将缓冲区中的(多个)选择作为开始,结束字节索引作为参数。好像我会从上面的示例中选择 Python 行和单词this results
并调用格式化程序,如下所示:
myfmt -s 13,32 -s45,60
当myfmt
有完整的缓冲区时,它可以从头开始扫描并选择如何处理每个选择。扩展选择(到完整的行、完整的类定义或完整的程序)可能是有意义的,因此需要返回完整的结果,但并非所有文件都必须重新格式化,这就是我现在必须基于选择整个缓冲区(使用%
)
有没有办法可以在 kakoune 中实现这一目标?