Wie kann ich verhindern, dass Perltidy Aufträge ausrichtet, aber weiterhin einzelne Räume hinzufügt?

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

  •  13-10-2019
  •  | 
  •  

Frage

Wie kann ich verhindern, dass Perltidy Aufträge ausrichtet, aber weiterhin einzelne Räume hinzufügt?

Diese Frage ähnelt der Wie kann ich verhindern, dass Perltidy meine Aufgaben ausrichtet? Aber ich möchte, dass einzelne Räume hinzugefügt werden, wohin gerichtet ist. Deswegen -naws Switch funktioniert für mich nicht. Ich möchte einfach nicht, dass mehrere Räume eingefügt werden. Ist es möglich mit Perltidy oder einem anderen Werkzeug?

Perl Tidy ändert sich:

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

hinein

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

Mit -naws bleibt es unverändert:

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

Ich möchte, dass dieser Code formatiert wird wie:

my $a = 1;
my $aa = 2;
my $aaa = 3;
War es hilfreich?

Lösung

Der folgende Patch funktionierte für mich:

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

Andere Tipps

Es gibt eine undokumentierte Flagge --no-valign Das scheint das Beste aus beiden Welten zu erreichen, ohne die Perltidy -Quelle zu modifizieren.

Wie Sie betonen, --no-add-whitespace ist zu aggressiv und verhindert, dass Weißespace an anderen, wünschenswerten Orten (um Operatoren usw.) hinzugefügt wird. Mit --no-valign Perltidy korrigiert immer noch Dinge wie my ($arg)=@_; zu my ($arg) = @_; Versucht jedoch nicht, die Bediener über Linien hinweg vertikal auszurichten. Die Einstellung deaktiviert den vertikalen Aligner nicht vollständig, sodass Sie immer noch einige Vorteile an anderen Stellen (z. B. Nebenkombinationen) erhalten.

Das einzige Problem, das ich bisher damit gefunden habe, ist, dass die erste Nebenkomentin eines Seitenblocks nicht mit den nachfolgenden Ausrichtungen ausgerichtet ist:

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

Es respektiert sich nur --minimum-space-to-comment. Ich bin mir nicht sicher, warum die nachfolgenden (dritten und vierten) Linien ordnungsgemäß funktionieren. Ich benutze keine Nebenkompetenz, daher ist es kein großes Problem (und Sie könnten verwenden --format-skipping auf solchen Blöcken).

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top