Comment puis-je empêcher Perltidy d'aligner les affectations, mais continuer à ajouter des espaces simples?

StackOverflow https://stackoverflow.com/questions/4538209

  •  13-10-2019
  •  | 
  •  

Question

Comment puis-je empêcher Perltidy d'aligner les affectations, mais continuer à ajouter des espaces simples?

Cette question est similaire à Comment puis-je éviter de Perltidy l'alignement mes devoirs? mais je voudrais un espace unique à ajouter à l'endroit indiqué. En raison de ce commutateur -naws ne fonctionne pas pour moi. Je ne veux pas que plusieurs espaces à insérer. Est-il possibe avec perltidy ou un autre outil?

Perl change bien rangé:

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

dans

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

avec -naws il reste inchangé:

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

Je voudrais que ce code soit formaté comme:

my $a = 1;
my $aa = 2;
my $aaa = 3;
Était-ce utile?

La solution

Le patch suivant a fonctionné pour moi:

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

Autres conseils

Il y a un --no-valign sans papier de drapeau qui semble obtenir le meilleur des deux mondes sans modifier la source perltidy.

Comme vous le soulignez, --no-add-whitespace est trop agressif et empêche les espaces d'être ajoutés dans d'autres endroits souhaitables (autour des opérateurs, etc.). Avec --no-valign perltidy est encore corriger des choses comme my ($arg)=@_; à my ($arg) = @_; mais ne cherche pas à aligner verticalement les opérateurs à travers les lignes. Le paramètre ne désactive pas complètement la verticale aligneur, vous obtenez toujours des avantages dans d'autres endroits (par exemple secondaires commentaires).

Le seul problème que je l'ai trouvée avec ce jusqu'à présent est que le premier côté commentaire d'un bloc de commentaires secondaires ne sont pas alignés avec les suivants:

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

Il ne se respecte --minimum-space-to-comment. Je ne sais pas pourquoi les lignes suivantes (troisième et quatrième) fonctionnent correctement. Je n'utilise pas beaucoup de commentaires secondaires il est donc pas un problème majeur (et vous pouvez utiliser --format-skipping sur de tels blocs).

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top