当前,运行格式化程序(例如通过编译器API:https://github.com/Microsoft/TypeScript/wiki/Using-the-Compiler-API#pretty-printer-using-the-ls-formatter)会产生任意宽度的代码,对于嵌套、复杂的语句等。我们的风格指南要求最大列数,这意味着格式化程序应该接受一个配置来设置这个宽度。在长行的最高点处,应该添加换行符。
当前,运行格式化程序(例如通过编译器API:https://github.com/Microsoft/TypeScript/wiki/Using-the-Compiler-API#pretty-printer-using-the-ls-formatter)会产生任意宽度的代码,对于嵌套、复杂的语句等。我们的风格指南要求最大列数,这意味着格式化程序应该接受一个配置来设置这个宽度。在长行的最高点处,应该添加换行符。
7条答案
按热度按时间vnjpjtjt1#
你能举一个你写的代码示例,它不超过你的最大列限制,直到格式化程序采取行动吗?
vuv7lop32#
格式化程序的行为试图尽可能地保持行。这看起来是个好主意,你能提供一些关于提案的详细信息吗,特别是在某些情况下ASI生效的情况下。
ippsafx73#
实际上,它确实保留了输入中的行。在我的案例中,输入违反了风格指南,我想使用格式化程序来修复这个问题。
关于上下文的提醒:我正在使用Closure Compiler插入TypeScript语法,因此通常大多数行会变得更长。在糟糕的情况下,我们使用几种类型的联合,例如
如果我们想要将Google JavaScript代码块转换为这种语法,我们需要能够对生成的结果进行样式设置。
我认为这也适用于IDE支持,例如,如果你执行一个内联某些代码的重构操作。
kognpnkq4#
我同意这是一个很好的功能添加。问题是,你不能仅仅在标记之后添加一个新行,因为这可能不安全。例如,在返回关键字之后和其表达式之前。所以从一个粗略的观察来看,当格式化一个标记对时,如果行位置超过了最大允许值,我们从当前对开始向后走,并尝试找到一个安全地断开行的位置(假设存在),然后添加编辑。或者,我们可以在完成格式化和缩进后作为单独的步骤来做这件事,只断开比允许范围更长的行。
我们需要为这个获取一个更详细的提案。@vladima,有什么想法吗?
omvjsjqw5#
Wadler, 98(http://homepages.inf.ed.ac.uk/wadler/papers/prettier/prettier.pdf) 有一个列宽感知的美观打印器动机点。
brtdzjyr6#
FYI we are also considering extending clang-format to properly format typescript code. It's already pretty close if you use JavaScript as the language. Dunno if it's useful as a reference for you.
qkf9rpyu7#
对于这个项目,我们也欢迎使用TypeScript。