From b6c2b00ea6f12b5c40f58f33bc4b00051453fa4f Mon Sep 17 00:00:00 2001 From: Alp Toker Date: Tue, 10 Dec 2013 13:51:53 +0000 Subject: [PATCH] clang-format-diff.py: Support -regex filter and more filename extensions Add support for more filename extensions based on the list in the clang plus JavaScript. Also adds a -regex option so users can override defaults if they have unusual file extensions or want to format everything in the diff. Keeping with tradition the flag is modelled on Unix conventions, this time matching the semantics of find(1). git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@196917 91177308-0d34-0410-b5e6-96231b3b80d8 --- docs/ClangFormat.rst | 13 +++++++------ tools/clang-format/clang-format-diff.py | 9 +++++---- 2 files changed, 12 insertions(+), 10 deletions(-) diff --git a/docs/ClangFormat.rst b/docs/ClangFormat.rst index d760bbb340..3f8499b8ce 100644 --- a/docs/ClangFormat.rst +++ b/docs/ClangFormat.rst @@ -158,17 +158,18 @@ a unified diff and reformats all contained lines with :program:`clang-format`. .. code-block:: console - usage: clang-format-diff.py [-h] [-i] [-p P] [-style STYLE] + usage: clang-format-diff.py [-h] [-i] [-p NUM] [-regex PATTERN] [-style STYLE] Reformat changed lines in diff. Without -i option just output the diff that would be introduced. optional arguments: - -h, --help show this help message and exit - -i apply edits to files instead of displaying a diff - -p P strip the smallest prefix containing P slashes - -style STYLE formatting style to apply (LLVM, Google, Chromium, Mozilla, - WebKit) + -h, --help show this help message and exit + -i apply edits to files instead of displaying a diff + -p NUM strip the smallest prefix containing P slashes + -regex PATTERN custom pattern selecting file paths to reformat + -style STYLE formatting style to apply (LLVM, Google, Chromium, Mozilla, + WebKit) 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 a62cae8ad5..f8fceeb4fc 100755 --- a/tools/clang-format/clang-format-diff.py +++ b/tools/clang-format/clang-format-diff.py @@ -41,8 +41,11 @@ def main(): 'introduced.') parser.add_argument('-i', action='store_true', default=False, help='apply edits to files instead of displaying a diff') - parser.add_argument('-p', default=0, + parser.add_argument('-p', metavar='NUM', default=0, help='strip the smallest prefix containing P slashes') + parser.add_argument('-regex', metavar='PATTERN', default= + r'.*\.(cpp|cc|CPP|C|c\+\+|cxx|c|h|hpp|m|mm|inc|js)', + help='custom pattern selecting file paths to reformat') parser.add_argument( '-style', help= @@ -59,9 +62,7 @@ def main(): if filename == None: continue - # FIXME: Add other types containing C++/ObjC code. - if not (filename.endswith(".cpp") or filename.endswith(".cc") or - filename.endswith(".h")): + if not re.match(args.regex, filename): continue match = re.search('^@@.*\+(\d+)(,(\d+))?', line) -- 2.40.0