2010-12-27 8 views
7

どのようにしてPerlTidyが代入を整列させずに単一の空白を追加するのを防ぐことができますか?PerlTidyが代入を整列させずに単一の空白を追加しないようにするにはどうすればよいですか?

この質問はHow can I prevent PerlTidy from aligning my assignments?と似ていますが、指示されたところにスペースを1つ追加したいと思います。このため、-nawsスイッチは私のためには機能しません。私は、複数のスペースを挿入したくないだけです。それはperltidyまたは他のツールで可能ですか?

のPerl整頓変更:

my $a = 1; 
my $aa = 2; 
my $aaa= 3; 

それは変わらない-nawsと

my $a = 1; 
my $aa = 2; 
my $aaa = 3; 

へ:私はこのコードを希望

my $a = 1; 
my $aa = 2; 
my $aaa= 3; 

フォーマットするよう:

my $a = 1; 
my $aa = 2; 
my $aaa = 3; 

答えて

3

次のパッチは私のために働いた:

--- 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] = ''; 
      } 
+0

これは、ほとんどの人にとっては実現可能なソリューションではありません。たとえば、他の人のマシンやCIインフラストラクチャなどで簡単に繰り返すことができます。 –

2

perltidyソースを変更せずに、両方の長所を達成するために表示される文書化されていないフラグ--no-valignがあります。

指摘したように、--no-add-whitespaceはあまりにも積極的で、空白が他の望ましい場所(演算子など)に追加されることを防ぎます。 --no-valign perltidyはまだmy ($arg)[email protected]_;からmy ($arg) = @_;のようなものを修正していますが、ライン間で演算子を垂直に揃えようとはしません。この設定では、垂直アライナーが完全に無効になるわけではないので、他の場所(サイドコメントなど)ではまだいくつかの利点があります。

私がこれまでに発見した唯一の問題は、サイドコメントのブロックの第一の側-コメントは、その後のものと一致しないことである:それは唯一の--minimum-space-to-commentを尊重している

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 
); 

。後続の(3番目と4番目の)行がなぜ正しく動作するのかよく分かりません。私はサイドコメントをあまり使わないので、それは大きな問題ではありません(そして、あなたはそのようなブロックに--format-skippingを使うことができます)。

関連する問題