02 Aug, 2018

1 commit

  • The true option causes this indenting for functions:

    static struct something_very_very_long *
    function(void *arg)
    {

    While a quick survey suggests that the usual Linux fallback is the GNU
    style:

    static struct something_very_very_long *
    function(void *arg)
    {

    Eg as seen in:

    kernel/cpu.c
    kernel/fork.c
    etc

    Acked-by: Joe Perches
    Signed-off-by: Jason Gunthorpe
    Signed-off-by: Miguel Ojeda

    Jason Gunthorpe
     

12 Apr, 2018

1 commit

  • clang-format is a tool to format C/C++/... code according to a set of
    rules and heuristics. Like most tools, it is not perfect nor covers
    every single case, but it is good enough to be helpful.

    In particular, it is useful for quickly re-formatting blocks of code
    automatically, for reviewing full files in order to spot coding style
    mistakes, typos and possible improvements. It is also handy for sorting
    ``#includes``, for aligning variables and macros, for reflowing text and
    other similar tasks. It also serves as a teaching tool/guide for
    newcomers.

    The tool itself has been already included in the repositories of popular
    Linux distributions for a long time. The rules in this file are
    intended for clang-format >= 4, which is easily available in most
    distributions.

    This commit adds the configuration file that contains the rules that the
    tool uses to know how to format the code according to the kernel coding
    style. This gives us several advantages:

    * clang-format works out of the box with reasonable defaults;
    avoiding that everyone has to re-do the configuration.

    * Everyone agrees (eventually) on what is the most useful default
    configuration for most of the kernel.

    * If it becomes commonplace among kernel developers, clang-format
    may feel compelled to support us better. They already recognize
    the Linux kernel and its style in their documentation and in one
    of the style sub-options.

    Some of clang-format's features relevant for the kernel are:

    * Uses clang's tooling support behind the scenes to parse and rewrite
    the code. It is not based on ad-hoc regexps.

    * Supports reasonably well the Linux kernel coding style.

    * Fast enough to be used at the press of a key.

    * There are already integrations (either built-in or third-party)
    for many common editors used by kernel developers (e.g. vim,
    emacs, Sublime, Atom...) that allow you to format an entire file
    or, more usefully, just your selection.

    * Able to parse unified diffs -- you can, for instance, reformat
    only the lines changed by a git commit.

    * Able to reflow text comments as well.

    * Widely supported and used by hundreds of developers in highly
    complex projects and organizations (e.g. the LLVM project itself,
    Chromium, WebKit, Google, Mozilla...). Therefore, it will be
    supported for a long time.

    See more information about the tool at:

    https://clang.llvm.org/docs/ClangFormat.html
    https://clang.llvm.org/docs/ClangFormatStyleOptions.html

    Link: http://lkml.kernel.org/r/20180318171632.qfkemw3mwbcukth6@gmail.com
    Signed-off-by: Miguel Ojeda
    Cc: Randy Dunlap
    Cc: Andy Whitcroft
    Cc: Joe Perches
    Cc: Jonathan Corbet
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Miguel Ojeda