diff options
Diffstat (limited to 'docs/ClangFormat.rst')
-rw-r--r-- | docs/ClangFormat.rst | 53 |
1 files changed, 41 insertions, 12 deletions
diff --git a/docs/ClangFormat.rst b/docs/ClangFormat.rst index f5c0b4c1fb..964fc84d7b 100644 --- a/docs/ClangFormat.rst +++ b/docs/ClangFormat.rst @@ -10,16 +10,14 @@ standalone tool and editor integrations. Standalone Tool =============== -:program:`clang-format` is part of the `clang/tools/extra` (see -:doc:`ClangTools <ClangTools>`) repository and can be used to format -C/C++/Obj-C code. +:program:`clang-format` is located in `clang/tools/clang-format` and can be used +to format C/C++/Obj-C code. .. code-block:: console $ clang-format --help OVERVIEW: A tool to format C/C++/Obj-C code. - Currently supports LLVM and Google style guides. If no arguments are specified, it formats the code from standard input and writes the result to the standard output. If <file> is given, it reformats the file. If -i is specified together @@ -35,7 +33,7 @@ C/C++/Obj-C code. -length=<int> - Format a range of this length, -1 for end of file. -offset=<int> - Format a range starting at this file offset. -stats - Enable statistics output from program - -style=<string> - Coding style, currently supports: LLVM, Google. + -style=<string> - Coding style, currently supports: LLVM, Google, Chromium. -version - Display the version of this program @@ -45,18 +43,18 @@ Vim Integration There is an integration for :program:`vim` which lets you run the :program:`clang-format` standalone tool on your current buffer, optionally selecting regions to reformat. The integration has the form of a `python`-file -which can be found under `clang/tools/extra/clang-format/clang-format.py`. +which can be found under `clang/tools/clang-format/clang-format.py`. This can be integrated by adding the following to your `.vimrc`: .. code-block:: vim - map <C-I> :pyf <path-to-this-file>/clang-format.py<CR> - imap <C-I> <ESC>:pyf <path-to-this-file>/clang-format.py<CR>i + map <C-K> :pyf <path-to-this-file>/clang-format.py<CR> + imap <C-K> <ESC>:pyf <path-to-this-file>/clang-format.py<CR>i The first line enables :program:`clang-format` for NORMAL and VISUAL mode, the -second line adds support for INSERT mode. Change "C-I" to another binding if -you need :program:`clang-format` on a different key (C-I stands for Ctrl+i). +second line adds support for INSERT mode. Change "C-K" to another binding if +you need :program:`clang-format` on a different key (C-K stands for Ctrl+k). With this integration you can press the bound key and clang-format will format the current line in NORMAL and INSERT mode or the selected region in @@ -67,10 +65,41 @@ It operates on the current, potentially unsaved buffer and does not create or save any files. To revert a formatting, just undo. +Emacs Integration +================= + +Similar to the integration for :program:`vim`, there is an integration for +:program:`emacs`. It can be found at `clang/tools/clang-format/clang-format.el` +and used by adding this to your `.emacs`: + +.. code-block:: common-lisp + + (load "<path-to-clang>/tools/clang-format/clang-format.el") + (global-set-key [C-M-tab] 'clang-format-region) + +This binds the function `clang-format-region` to C-M-tab, which then formats the +current line or selected region. + + +BBEdit Integration +================== + +:program:`clang-format` cannot be used as a text filter with BBEdit, but works +well via a script. The AppleScript to do this integration can be found at +`clang/tools/clang-format/clang-format-bbedit.applescript`; place a copy in +`~/Library/Application Support/BBEdit/Scripts`, and edit the path within it to +point to your local copy of :program:`clang-format`. + +With this integration you can select the script from the Script menu and +:program:`clang-format` will format the selection. Note that you can rename the +menu item by renaming the script, and can assign the menu item a keyboard +shortcut in the BBEdit preferences, under Menus & Shortcuts. + + Script for patch reformatting ============================= -The python script `clang/tools/extra/clang-format-diff.py` parses the output of +The python script `clang/tools/clang-format-diff.py` parses the output of a unified diff and reformats all contained lines with :program:`clang-format`. .. code-block:: console @@ -82,7 +111,7 @@ a unified diff and reformats all contained lines with :program:`clang-format`. optional arguments: -h, --help show this help message and exit -p P strip the smallest prefix containing P slashes - -style STYLE formatting style to apply (LLVM, Google) + -style STYLE formatting style to apply (LLVM, Google, Chromium) So to reformat all the lines in the latest :program:`git` commit, just do: |