2010-12-27 16 views
7

Làm cách nào để ngăn chặn PerlTidy sắp xếp các bài tập nhưng vẫn tiếp tục thêm các dấu cách đơn?Làm cách nào để ngăn chặn PerlTidy sắp xếp các bài tập nhưng vẫn tiếp tục thêm các dấu cách đơn?

Câu hỏi này tương tự như How can I prevent PerlTidy from aligning my assignments? nhưng tôi muốn thêm một khoảng trắng để được hướng dẫn. Do công tắc -naws này không hoạt động đối với tôi. Tôi chỉ không muốn chèn nhiều không gian. Nó có sở hữu với perltidy hoặc một số công cụ khác không?

Perl thay đổi gọn gàng:

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

vào

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

với -naws nó vẫn không thay đổi:

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

Tôi muốn mã này phải được định dạng như:

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

Trả lời

3

Các miếng vá sau làm việc cho tôi:

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

Đây không phải là giải pháp rất khả thi đối với hầu hết mọi người - bạn sẽ muốn điều này dễ dàng lặp lại trên máy của người khác và cơ sở hạ tầng CI chẳng hạn. –

2

Có một lá cờ không có giấy tờ --no-valign mà dường như đạt được tốt nhất của cả hai thế giới mà không sửa đổi các nguồn perltidy.

Khi bạn chỉ ra, --no-add-whitespace quá hung hăng và ngăn không cho khoảng trống được thêm vào các vị trí mong muốn khác (xung quanh toán tử, v.v.). Với --no-valign perltidy vẫn đang sửa những thứ như my ($arg)[email protected]_; thành my ($arg) = @_; nhưng không cố gắng sắp xếp dọc các toán tử trên các dòng. Cài đặt này không hoàn toàn vô hiệu hóa trình căn chỉnh dọc, do đó bạn vẫn nhận được một số lợi ích ở những nơi khác (ví dụ: nhận xét bên).

Vấn đề duy nhất mà tôi đã tìm thấy với điều này cho đến nay là các phụ nhận xét đầu tiên của một khối phụ bình luận không phù hợp với những người tiếp theo:

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

Nó chỉ được tôn trọng --minimum-space-to-comment. Tôi không chắc tại sao các dòng tiếp theo (thứ ba và thứ tư) hoạt động đúng cách. Tôi không sử dụng ý kiến ​​bên nhiều nên nó không phải là một vấn đề lớn (và bạn có thể sử dụng --format-skipping trên các khối như vậy).

Các vấn đề liên quan