如何使 perltidy 与 Method::Signatures 一起工作?
我正在使用 Eclipse 与 EPIC 来编写我的 Perl 代码。我将 EPIC 配置为使用 Perltidy 和“-pbp”(Perltidy) sourceforge.net/perltidy.html#styles" rel="nofollow noreferrer">perl 最佳实践 风格)来格式化我的代码。
当使用 Method::Signatures' 命名参数。例如,func (:$arg1, : $arg2)
的格式为 func (: $arg1, : $arg2)
,这会产生错误。
另外,func
关键字不像 sub
那样被识别,因此缩进是错误的。
I'm using Eclipse combined with EPIC to write my Perl code. I configured EPIC to use Perltidy with "-pbp" (perl best practices style) to format my code.
This doesn't work well when using Method::Signatures' named parameters. E.g., func (:$arg1, : $arg2)
is formatted as func (: $arg1, : $arg2)
which yields an error.
Also, func
keyword is not recognized like sub
so indentation is wrong.
Related to this previous unanswered question and this cross post.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
您可以使用前置和后置过滤器修改 perlcritic 脚本。 变更日志 提供了以下示例
Perlcritic 现在将
method
视为 < code>sub 用于格式化目的。我们可以用func
做同样的事情。我修改了 /usr/local/bin/perlcritic 以使用func
,如下所示:You can modify the perlcritic script with a pre and post filter. The changelog provides the following example
Perlcritic will now treat
method
as asub
for purposes of formatting. We can do the same withfunc
. I modified my /usr/local/bin/perlcritic to work withfunc
as follows:Perl::Tidy/perltidy 不使用 PPI,它比 PPI 早大约 9 年(
http://sourceforge.net/projects/perltidy/ 说注册:2000-12-23 )
Perl::Tidy/perltidy does not make use of PPI, it predates PPI by about 9 years (
http://sourceforge.net/projects/perltidy/ says Registered: 2000-12-23 )
您不能,除非您使
PPI
(Perltidy 在其大部分工作中使用的内容)了解各种签名模块,例如MooseX::Method::Signatures
、Method::Signatures::Simple
或Method::Signatures
。一个合理的解决方法可能是不对所有代码运行 Perltidy,而仅对您刚刚编写并希望以某种方式格式化的代码块运行。这样,您可以轻松地跳过在任何方法签名上运行它,并让它仅处理方法体。
You can't, unless you make
PPI
, which is what Perltidy uses for most of its work, aware of the various signature modules such asMooseX::Method::Signatures
,Method::Signatures::Simple
, orMethod::Signatures
.A reasonable workaround might be to not run Perltidy on all of your code, but only on the chunks of it you've just written and want formatted in some way. That way you can easily skip running it on any method signatures and have it process only the method bodies instead.
与此同时,CPAN 上出现了一个新模块来解决这个问题。
它被称为
Perl::Tidy::Sweetened
并提供脚本perltidier
。它还使用
Perl::Tidy
的prefilter
和postfilter
挂钩,但您不需要自己关心这些。In the meantime a new module exists on CPAN which solves this problems.
It is called
Perl::Tidy::Sweetened
and offers the scriptperltidier
.It also uses the
prefilter
andpostfilter
hooks ofPerl::Tidy
, but you do not need to take care about that on your own.