配置Perl :: Tidy来处理自定义关键字

sco*_*ozy 11 macros perl code-formatting perl-tidy

是否有一种直接的配置方式,Perl::Tidy以便正确处理使用Devel::Declare?创建的自定义关键字?

具体来说,我正在使用Sub::Curried,它创建一个curry或多或少sub与5.20中的方法签名一样的关键字,但具有currying功能:

curry add ($x, $y) {
    return $x + $y;
}
Run Code Online (Sandbox Code Playgroud)

请注意,a ;不是必需的,Perl::Tidy因为它给出了:

curry add( $x, $y ) {
    return $x + $y;
  }
Run Code Online (Sandbox Code Playgroud)

使用更长的子程序,无论有没有,情况会变得更糟;:

curry add( $x, $y ) {
    my $z = $x + $y;
      return $z;
};
Run Code Online (Sandbox Code Playgroud)

我想告诉Perl::Tidycurry完全sub不应该对待.或者,有没有办法让它忽略那些它不理解的部分并且仍然整理文件的其余部分?

Mat*_*zle 7

我知道如何操作的唯一方法如下所示:

跳过选定的代码段

选定的代码行可以逐字传递给输出而不进行任何格式化.默认情况下启用此功能,但可以使用--noformat-skipping或-nfs标志禁用此功能.应该谨慎使用它以避免使用标记乱丢代码,但它可能有助于解决偶然的问题.例如,保持旧注释代码的缩进不变,保持对齐注释的长块的缩进不变,保持某些列表格式不变,或者在perltidy中解决小故障可能是有用的.

-fs, --format-skipping
Run Code Online (Sandbox Code Playgroud)

默认情况下启用此标志会导致特殊开始和结束注释标记之间的任何代码无需格式化即可传递到输出.默认开始标记为#<<<,默认结束标记为#>>>但可以更改它们(请参阅下面的下一项).如果这些特殊注释行与标记分隔至少一个空格,则可能会出现其他文本.例如

 #<<<  do not let perltidy touch this
    my @list = (1,
                1, 1,
                1, 2, 1,
                1, 3, 3, 1,
                1, 4, 6, 4, 1,);
 #>>>
Run Code Online (Sandbox Code Playgroud)

评论标记可以放置在块注释可能出现的任何位置.如果它们似乎不起作用,请使用-log标志并检查.LOG文件.使用-nfs禁用此功能.

所以在你的情况下代码如下:

#<<<
curry add ($x, $y) {
    return $x + $y;
}
#>>>
Run Code Online (Sandbox Code Playgroud)

更新

我意识到您可能想要设置custom特殊注释标记,其中包含以下内容:

-fsb=string, --format-skipping-begin=string
Run Code Online (Sandbox Code Playgroud)

-fsb = string参数可用于更改格式跳过的开始标记.默认值相当于-fsb ='#<<<'.您输入的字符串必须以#开头,并且必须在引号中以便通过系统的命令shell.它实际上是通过附加'\ s'构造的模式的主要文本,因此您还必须包含字符的反斜杠,而不是作为模式.

一些示例显示示例字符串如何成为模式:

 -fsb='#\{\{\{' becomes /^#\{\{\{\s/  which matches  #{{{ but not #{{{{
 -fsb='#\*\*'   becomes /^#\*\*\s/    which matches  #** but not #***
 -fsb='#\*{2,}' becomes /^#\*{2,}\s/  which matches  #** and #*****
Run Code Online (Sandbox Code Playgroud)

然后,您需要设置结束特殊注释字符串:

-fse=string, --format-skipping-end=string
Run Code Online (Sandbox Code Playgroud)

-fsb = string是用于更改格式跳过的结束标记的相应参数.默认值相当于-fse ='#<<<'.

注意特殊注释字符串必须是注释,因此它们始终必须以注释开头#