2010-12-27 3 views
7

PerlTidy가 할당을 정렬하지 못하도록 어떻게 하나의 공백을 계속 추가 할 수 있습니까?PerlTidy가 할당을 정렬하지 못하도록 어떻게 하나의 공백을 계속 추가 할 수 있습니까?

이 질문은 How can I prevent PerlTidy from aligning my assignments?과 유사하지만 지시 할 경우 단일 공백을 추가하고 싶습니다. 이 때문에 -naws 스위치가 작동하지 않습니다. 여러 공간을 삽입하는 것을 원하지 않습니다. 그것은 perltidy 또는 다른 도구를 사용하여 가능합니까?

펄 깔끔한 변경 :

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

. 후속 (세 번째 및 네 번째) 줄이 왜 제대로 작동하는지 잘 모르겠습니다. 나는 측면 논평을 많이 사용하지 않기 때문에 큰 문제는 아니며 그러한 블록에 --format-skipping을 사용할 수있다.

관련 문제