]> granicus.if.org Git - clang/commitdiff
clang-format-diff.py: Support -regex filter and more filename extensions
authorAlp Toker <alp@nuanti.com>
Tue, 10 Dec 2013 13:51:53 +0000 (13:51 +0000)
committerAlp Toker <alp@nuanti.com>
Tue, 10 Dec 2013 13:51:53 +0000 (13:51 +0000)
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
tools/clang-format/clang-format-diff.py

index d760bbb340e9a843670c75489abc0138123b8e03..3f8499b8cefba301050d79d827245fbae39476c6 100644 (file)
@@ -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:
 
index a62cae8ad51b44a52ee33db41af739f765111419..f8fceeb4fc07c9e2f5a8cd00201f46307715812f 100755 (executable)
@@ -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)