summaryrefslogtreecommitdiff
path: root/Documentation/process
diff options
context:
space:
mode:
authorSeongJae Park <sj@kernel.org>2024-06-24 11:53:09 -0700
committerJonathan Corbet <corbet@lwn.net>2024-06-26 16:36:00 -0600
commite3b10a02ca2fe1e27ee008e9fcd8cf7076f7f776 (patch)
tree5bfad959c7a6077e39205320b0c08b136a11ca02 /Documentation/process
parentf9a4f4a0e1f5d8033d30d50f59ada1666a5cf38d (diff)
Docs: Move clang-format from process/ to dev-tools/
'clang-format' is on 'Other material' section of 'process/index', but it may fit more under 'dev-tools/' directory. Move it. Signed-off-by: SeongJae Park <sj@kernel.org> Acked-by: Miguel Ojeda <ojeda@kernel.org> Acked-by: Federico Vaga <federico.vaga@vaga.pv.it> Signed-off-by: Jonathan Corbet <corbet@lwn.net> Link: https://lore.kernel.org/r/20240624185312.94537-5-sj@kernel.org
Diffstat (limited to 'Documentation/process')
-rw-r--r--Documentation/process/4.Coding.rst2
-rw-r--r--Documentation/process/clang-format.rst184
-rw-r--r--Documentation/process/coding-style.rst2
-rw-r--r--Documentation/process/index.rst1
4 files changed, 2 insertions, 187 deletions
diff --git a/Documentation/process/4.Coding.rst b/Documentation/process/4.Coding.rst
index c2046dec0c2f..80bcc1cabc23 100644
--- a/Documentation/process/4.Coding.rst
+++ b/Documentation/process/4.Coding.rst
@@ -63,7 +63,7 @@ these rules, to quickly re-format parts of your code automatically,
and to review full files in order to spot coding style mistakes,
typos and possible improvements. It is also handy for sorting ``#includes``,
for aligning variables/macros, for reflowing text and other similar tasks.
-See the file :ref:`Documentation/process/clang-format.rst <clangformat>`
+See the file :ref:`Documentation/dev-tools/clang-format.rst <clangformat>`
for more details.
Some basic editor settings, such as indentation and line endings, will be
diff --git a/Documentation/process/clang-format.rst b/Documentation/process/clang-format.rst
deleted file mode 100644
index 1d089a847c1b..000000000000
--- a/Documentation/process/clang-format.rst
+++ /dev/null
@@ -1,184 +0,0 @@
-.. _clangformat:
-
-clang-format
-============
-
-``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.
-
-``clang-format`` can be used for several purposes:
-
- - Quickly reformat a block of code to the kernel style. Specially useful
- when moving code around and aligning/sorting. See clangformatreformat_.
-
- - Spot style mistakes, typos and possible improvements in files
- you maintain, patches you review, diffs, etc. See clangformatreview_.
-
- - Help you follow the coding style rules, specially useful for those
- new to kernel development or working at the same time in several
- projects with different coding styles.
-
-Its configuration file is ``.clang-format`` in the root of the kernel tree.
-The rules contained there try to approximate the most common kernel
-coding style. They also try to follow :ref:`Documentation/process/coding-style.rst <codingstyle>`
-as much as possible. Since not all the kernel follows the same style,
-it is possible that you may want to tweak the defaults for a particular
-subsystem or folder. To do so, you can override the defaults by writing
-another ``.clang-format`` file in a subfolder.
-
-The tool itself has already been included in the repositories of popular
-Linux distributions for a long time. Search for ``clang-format`` in
-your repositories. Otherwise, you can either download pre-built
-LLVM/clang binaries or build the source code from:
-
- https://releases.llvm.org/download.html
-
-See more information about the tool at:
-
- https://clang.llvm.org/docs/ClangFormat.html
-
- https://clang.llvm.org/docs/ClangFormatStyleOptions.html
-
-
-.. _clangformatreview:
-
-Review files and patches for coding style
------------------------------------------
-
-By running the tool in its inline mode, you can review full subsystems,
-folders or individual files for code style mistakes, typos or improvements.
-
-To do so, you can run something like::
-
- # Make sure your working directory is clean!
- clang-format -i kernel/*.[ch]
-
-And then take a look at the git diff.
-
-Counting the lines of such a diff is also useful for improving/tweaking
-the style options in the configuration file; as well as testing new
-``clang-format`` features/versions.
-
-``clang-format`` also supports reading unified diffs, so you can review
-patches and git diffs easily. See the documentation at:
-
- https://clang.llvm.org/docs/ClangFormat.html#script-for-patch-reformatting
-
-To avoid ``clang-format`` formatting some portion of a file, you can do::
-
- int formatted_code;
- // clang-format off
- void unformatted_code ;
- // clang-format on
- void formatted_code_again;
-
-While it might be tempting to use this to keep a file always in sync with
-``clang-format``, specially if you are writing new files or if you are
-a maintainer, please note that people might be running different
-``clang-format`` versions or not have it available at all. Therefore,
-you should probably refrain yourself from using this in kernel sources;
-at least until we see if ``clang-format`` becomes commonplace.
-
-
-.. _clangformatreformat:
-
-Reformatting blocks of code
----------------------------
-
-By using an integration with your text editor, you can reformat arbitrary
-blocks (selections) of code with a single keystroke. This is specially
-useful when moving code around, for complex code that is deeply intended,
-for multi-line macros (and aligning their backslashes), etc.
-
-Remember that you can always tweak the changes afterwards in those cases
-where the tool did not do an optimal job. But as a first approximation,
-it can be very useful.
-
-There are integrations for many popular text editors. For some of them,
-like vim, emacs, BBEdit and Visual Studio you can find support built-in.
-For instructions, read the appropriate section at:
-
- https://clang.llvm.org/docs/ClangFormat.html
-
-For Atom, Eclipse, Sublime Text, Visual Studio Code, XCode and other
-editors and IDEs you should be able to find ready-to-use plugins.
-
-For this use case, consider using a secondary ``.clang-format``
-so that you can tweak a few options. See clangformatextra_.
-
-
-.. _clangformatmissing:
-
-Missing support
----------------
-
-``clang-format`` is missing support for some things that are common
-in kernel code. They are easy to remember, so if you use the tool
-regularly, you will quickly learn to avoid/ignore those.
-
-In particular, some very common ones you will notice are:
-
- - Aligned blocks of one-line ``#defines``, e.g.::
-
- #define TRACING_MAP_BITS_DEFAULT 11
- #define TRACING_MAP_BITS_MAX 17
- #define TRACING_MAP_BITS_MIN 7
-
- vs.::
-
- #define TRACING_MAP_BITS_DEFAULT 11
- #define TRACING_MAP_BITS_MAX 17
- #define TRACING_MAP_BITS_MIN 7
-
- - Aligned designated initializers, e.g.::
-
- static const struct file_operations uprobe_events_ops = {
- .owner = THIS_MODULE,
- .open = probes_open,
- .read = seq_read,
- .llseek = seq_lseek,
- .release = seq_release,
- .write = probes_write,
- };
-
- vs.::
-
- static const struct file_operations uprobe_events_ops = {
- .owner = THIS_MODULE,
- .open = probes_open,
- .read = seq_read,
- .llseek = seq_lseek,
- .release = seq_release,
- .write = probes_write,
- };
-
-
-.. _clangformatextra:
-
-Extra features/options
-----------------------
-
-Some features/style options are not enabled by default in the configuration
-file in order to minimize the differences between the output and the current
-code. In other words, to make the difference as small as possible,
-which makes reviewing full-file style, as well diffs and patches as easy
-as possible.
-
-In other cases (e.g. particular subsystems/folders/files), the kernel style
-might be different and enabling some of these options may approximate
-better the style there.
-
-For instance:
-
- - Aligning assignments (``AlignConsecutiveAssignments``).
-
- - Aligning declarations (``AlignConsecutiveDeclarations``).
-
- - Reflowing text in comments (``ReflowComments``).
-
- - Sorting ``#includes`` (``SortIncludes``).
-
-They are typically useful for block re-formatting, rather than full-file.
-You might want to create another ``.clang-format`` file and use that one
-from your editor/IDE instead.
diff --git a/Documentation/process/coding-style.rst b/Documentation/process/coding-style.rst
index 7e768c65aa92..04f6aa377a5d 100644
--- a/Documentation/process/coding-style.rst
+++ b/Documentation/process/coding-style.rst
@@ -732,7 +732,7 @@ these rules, to quickly re-format parts of your code automatically,
and to review full files in order to spot coding style mistakes,
typos and possible improvements. It is also handy for sorting ``#includes``,
for aligning variables/macros, for reflowing text and other similar tasks.
-See the file :ref:`Documentation/process/clang-format.rst <clangformat>`
+See the file :ref:`Documentation/dev-tools/clang-format.rst <clangformat>`
for more details.
Some basic editor settings, such as indentation and line endings, will be
diff --git a/Documentation/process/index.rst b/Documentation/process/index.rst
index fb089bf9d6a8..1827e73f6376 100644
--- a/Documentation/process/index.rst
+++ b/Documentation/process/index.rst
@@ -113,7 +113,6 @@ lack of a better place.
.. toctree::
:maxdepth: 1
- clang-format
.. only:: subproject and html