From a50b57862b99bdd7d056014f429a809647257c8b Mon Sep 17 00:00:00 2001 From: Daniel Jasper Date: Wed, 17 Apr 2013 07:55:02 +0000 Subject: [PATCH] Small improvements to clang-format documentation and integration scripts. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@179676 91177308-0d34-0410-b5e6-96231b3b80d8 --- docs/ClangFormat.rst | 19 +++++++++++++++++-- tools/clang-format/clang-format-diff.py | 3 ++- tools/clang-format/clang-format.el | 14 +++++++------- 3 files changed, 26 insertions(+), 10 deletions(-) diff --git a/docs/ClangFormat.rst b/docs/ClangFormat.rst index 92d7fc319e..1b65c2542b 100644 --- a/docs/ClangFormat.rst +++ b/docs/ClangFormat.rst @@ -18,7 +18,6 @@ to format C/C++/Obj-C code. $ 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 is given, it reformats the file. If -i is specified together @@ -66,6 +65,22 @@ 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 "/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. + + Script for patch reformatting ============================= @@ -81,7 +96,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: diff --git a/tools/clang-format/clang-format-diff.py b/tools/clang-format/clang-format-diff.py index afed40fc92..68b5113d92 100755 --- a/tools/clang-format/clang-format-diff.py +++ b/tools/clang-format/clang-format-diff.py @@ -85,7 +85,8 @@ def main(): 'Reformat changed lines in diff') parser.add_argument('-p', default=1, help='strip the smallest prefix containing P slashes') - parser.add_argument('-style', help='formatting style to apply (LLVM, Google)') + parser.add_argument('-style', + help='formatting style to apply (LLVM, Google, Chromium)') args = parser.parse_args() filename = None diff --git a/tools/clang-format/clang-format.el b/tools/clang-format/clang-format.el index 1277885996..d58e40358b 100644 --- a/tools/clang-format/clang-format.el +++ b/tools/clang-format/clang-format.el @@ -3,7 +3,7 @@ ;; This defines a function clang-format-region that you can bind to a key. ;; A minimal .emacs would contain: ;; -;; (load "/tools/clang/clang-format/clang-format.el") +;; (load "/tools/clang-format/clang-format.el") ;; (global-set-key [C-M-tab] 'clang-format-region) ;; ;; Depending on your configuration and coding style, you might need to modify @@ -15,12 +15,12 @@ (binary "clang-format") (style "LLVM")) (if mark-active - (setq beg (1- (region-beginning)) - end (1- (region-end))) - (setq beg (1- (line-beginning-position)) - end (1- (line-end-position)))) - (call-process-region (point-min) (point-max) "clang-format" t t nil - "-offset" (number-to-string beg) + (setq beg (region-beginning) + end (region-end)) + (setq beg (line-beginning-position) + end (line-end-position))) + (call-process-region (point-min) (point-max) binary t t nil + "-offset" (number-to-string (1- beg)) "-length" (number-to-string (- end beg)) "-style" style) (goto-char orig-point) -- 2.40.0