7

PerlTidy が割り当てを整列させないようにしながら、単一のスペースを追加し続けるにはどうすればよいですか?

この質問は、PerlTidy が自分の割り当てを整列させないようにするにはどうすればよいですか? に似ています。しかし、指示された場所に単一のスペースを追加したいと思います。この-nawsスイッチが原因で、私には機能しません。複数のスペースを挿入したくないだけです。perltidy やその他のツールで可能ですか?

Perl のきちんとした変更:

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

の中へ

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

2 に答える 2

3

--no-valignperltidy ソースを変更せずに両方の世界のベストを達成しているように見える文書化されていないフラグがあります。

ご指摘のとおり、--no-add-whitespace攻撃的すぎて、他の望ましい場所 (演算子の周囲など) に空白を追加できません。with --no-valignperltidy は、同様のものを修正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
);

尊重しているだけです--minimum-space-to-comment。後続 (3 番目と 4 番目) の行が正しく機能する理由がわかりません。私はサイドコメントをあまり使用しないので、大きな問題ではありません (--format-skippingそのようなブロックで使用できます)。

于 2016-11-05T12:14:36.270 に答える
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] = '';
             }
于 2010-12-28T10:03:22.927 に答える