2010-12-27 6 views
7

Come posso impedire a PerlTidy di allineare i compiti ma continuare ad aggiungere singoli spazi?Come posso impedire a PerlTidy di allineare i compiti ma continuare ad aggiungere singoli spazi?

Questa domanda è simile a How can I prevent PerlTidy from aligning my assignments? ma vorrei aggiungere singoli spazi dove diretti. A causa di questo switch -naws non funziona per me. Semplicemente non voglio più spazi da inserire. È possibile con perltidy o qualche altro strumento?

Perl modifiche ordinate:

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

in

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

con -naws rimane invariato:

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

Vorrei che questo codice per essere formattati come:

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

risposta

3

La seguente patch ha lavorato per me:

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

Questa non è una soluzione molto fattibile per la maggior parte delle persone - si vorrà che questo sia facilmente ripetibile sulle macchine di altre persone e l'infrastruttura di CI, ad esempio. –

2

C'è una bandiera non documentata --no-valign che sembra ottenere il meglio dei due mondi senza modificare la fonte Perltidy.

Come si fa notare, --no-add-whitespace è troppo aggressivo e impedisce l'aggiunta di spazi bianchi in altre posizioni desiderabili (attorno agli operatori, ecc.). Con --no-valign perltidy sta ancora correggendo cose come my ($arg)[email protected]_; a my ($arg) = @_; ma non tenta di allineare verticalmente gli operatori attraverso le linee. L'impostazione non disattiva completamente l'allineatore verticale, quindi ottieni comunque dei vantaggi in altri luoghi (ad esempio i commenti laterali).

L'unico problema che ho trovato con questo finora è che il primo lato-commento di un blocco di collaterali commenti non è in linea con quelle successive:

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

è solo rispettando --minimum-space-to-comment. Non sono sicuro del motivo per cui le righe successive (terza e quarta) funzionino correttamente. Non uso molto i commenti laterali, quindi non è un grosso problema (e potresti usare --format-skipping su tali blocchi).

Problemi correlati