簡體   English   中英

只有最少的特定規則的 clang-format - 沒有默認值

[英]clang-format with only minimal specific rules - no defaults

我正在使用 clang-format 並且我試圖只設置例如 120 列限制但無論我嘗試什么 clang 都應用除此之外的許多規則。 如果我指定所有規則並設置它們的值,那么它會做我想做的,但我,例如,只想設置一個換行規則。 clang-format 可以做到嗎?

謝謝

這是我的.clang-format文件,它位於源文件的父目錄中:

---
Language:        Cpp
ColumnLimit:     120
...

請注意,我沒有BasedOnStyle字段,因此我預計 clang 不會使用樣式的默認值。

這是我的運行方式:

clang-format -style=file -i src/foo.cpp

這是 foo.cpp

int main(int argc, char const *argv[]) {

    int rc = -1;

    // This if clause should be wrapped at 120 by clang which it does
    if (argc == 1 && && argc != 2 && argc != 3 && argc != 4 && argc != 5 && argc != 6 && argc != 7 && argc != 8 && argc != 9 && argc != 10) {
        rc = 0;
    }

    // This if clause shouldn't be touched by clang. but it is.
    if(args > 1)
    {
        rc = 1;
    }

    return rc;
}

預期結果:僅換行超過 120 個字符的行。

int main(int argc, char const *argv[]) {

    int rc = -1;

    // This if clause should be wrapped at 120 by clang which it does
    if (argc == 1 && && argc != 2 && argc != 3 && argc != 4 && argc != 5 && argc != 6 && argc != 7 && argc != 8 &&
        argc != 9 && argc != 10) {
        rc = 0;
    }

    // This if clause shouldn't be touched by clang. but it is.
    if(args > 1)
    {
        rc = 1;
    }

    return rc;
}

實際結果:應用了許多規則並且每一行都被更改。 在這種情況下,例如縮進變為 2 個空格。 我是一個真實世界的例子,許多規則適用於具有更多代碼的文件。

int main(int argc, char const *argv[]) {

  int rc = -1;

  // This if clause should be wrapped at 120 by clang which it does
  if (argc == 1 && &&argc != 2 && argc != 3 && argc != 4 && argc != 5 && argc != 6 && argc != 7 && argc != 8 &&
      argc != 9 && argc != 10) {
    rc = 0;
  }

  // This if clause shouldn't be touched by clang. but it is.
  if (args > 1) {
    rc = 1;
  }

  return rc;
}

這個問題與How can I apply only one clang-format action?重復。

該問題的公認答案仍然正確/有效,因此最新版本的 clang-format 不可能滿足您的要求。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM