2016-07-12 25 views
0

我遇到了麻煩uncrustify格式化C++ lambda表達式Uncrustify + LAMBDA

這是它令我的λ爲:

auto print = [](auto const &i, qi::unused_type, qi::unused_type) 
      { 
       qDebug() << i; 
      }; 

這是我想什麼:

auto print = [](auto const &i, qi::unused_type, qi::unused_type) 
{ 
    qDebug() << i; 
}; 

Doe現在什麼設置都是負責大括號的定位?在您的配置文件

+0

你介意分享你的Uncrustify配置文件嗎? – Quirk

+0

這裏你去[鏈接](http://pastebin.com/dGcfMEaJ) –

回答

2

看,似乎有幾個流氓設置:

  1. 在路223

    # Align continued statements at the '='. Default=True 
    # If FALSE or the '=' is followed by a newline, the next line is indent one tab. 
    indent_align_assign      = true  # false/true 
    

    正如你所看到的,你分配一個拉姆達的象徵。其他換行符被配置爲與作業的=符號對齊。

  2. 在線路830和833

    # The span for aligning on '=' in assignments (0=don't align) 
    align_assign_span       = 1  # number 
    
    # The threshold for aligning on '=' in assignments (0=no limit) 
    align_assign_thresh      = 0  # number 
    

    如果你不喜歡在路223改變配置,也許你可以嘗試用這副設置玩耍。

如果更改任何這些設置對您而言並非真正合理,您可能需要進行一些嚴肅的代碼風格改革。首先,我看到示例lambda適合作爲一行語句。也許讓他們保持單行。 (他們將保持這種方式,因爲964行在你的配置文件確保)。

+0

感謝您仔細閱讀它。 830/833沒有幫助,因爲跨越幾行(在當前狀態)跨越多行,所以跨度將需要像6,這將與其他人發生衝突。到目前爲止,223編輯似乎做我想要的。我現在就去做這件事。我不想讓這些羔羊作爲參數列表很大的一行 –