如何防止PerlTidy对齐分配但继续添加单个空格?
这个问题类似于如何阻止PerlTidy调整我的作业?但我希望在指示的地方添加单个空格.由于此-naws开关对我不起作用.我只是不想插入多个空格.它可能与perltidy或其他工具?
Perl整洁的变化:
my $a = 1;
my $aa = 2;
my $aaa= 3;
Run Code Online (Sandbox Code Playgroud)
成
my $a = 1;
my $aa = 2;
my $aaa = 3;
Run Code Online (Sandbox Code Playgroud)
与-naws它保持不变:
my $a = 1;
my $aa = 2;
my $aaa= 3;
Run Code Online (Sandbox Code Playgroud)
我希望此代码格式为:
my $a = 1;
my $aa = 2;
my $aaa = 3;
Run Code Online (Sandbox Code Playgroud)
有一个未记录的标志--no-valign,它似乎在不修改 perltidy 源的情况下实现了两全其美。
正如您所指出的,--no-add-whitespace过于激进并阻止在其他所需位置(运算符周围等)添加空格。Perltidy--no-valign仍在纠正类似的问题my ($arg)=@_;,my ($arg) = @_;但不会尝试跨行垂直对齐操作员。该设置不会完全禁用垂直对齐器,因此您仍然可以在其他地方获得一些好处(例如侧面注释)。
到目前为止,我发现的唯一问题是侧面注释块的第一个侧面注释与后续注释不一致:
my @DISAGREE_NONFATAL = grep { exists $warnings::Offsets{$_} } (
'newline', # stat on nonexistent file with a newline in it
'experimental', # no reason for these to be fatal
'deprecated', # unfortunately can't make these fatal
'portable', # everything worked fine here, just may not elsewhere
);
Run Code Online (Sandbox Code Playgroud)
这只是尊重--minimum-space-to-comment。我不确定为什么后续(第三和第四)行可以正常工作。我不太使用旁注,因此这不是一个主要问题(您可以--format-skipping在此类块上使用)。
以下补丁对我有用:
--- Tidy.pm.org 2009-06-16 22:00:50.000000000 +0200
+++ Tidy.pm 2010-12-28 09:43:19.625000000 +0100
@@ -12404,7 +12404,7 @@
# accept vertical alignment.
# nothing to do if we aren't allowed to change whitespace
- if ( !$rOpts_add_whitespace ) {
+ if ( 1 || !$rOpts_add_whitespace ) {
for my $i ( 0 .. $max_index_to_go ) {
$matching_token_to_go[$i] = '';
}
Run Code Online (Sandbox Code Playgroud)