Fix ranges computed by git clang-format.
authorDaniel Jasper <djasper@google.com>
Tue, 2 Jul 2013 13:20:35 +0000 (13:20 +0000)
committerDaniel Jasper <djasper@google.com>
Tue, 2 Jul 2013 13:20:35 +0000 (13:20 +0000)
Before, the computed byte range would include the trailing newline.
clang-format on the other hand counts whitespace as belonging to the
following token, so that git-clang-format inadvertendly reformats the
first unmodified line as well.

It is not entirely clear whether clang-format's behavior itself should
be modified, but for now this seems to be a safe change.

llvm-svn: 185423

clang/tools/clang-format/git-clang-format

index 62fe67c..763fc35 100755 (executable)
@@ -329,13 +329,13 @@ def lines_to_bytes_single_file(file, line_ranges):
     if linenum == r.start:
       byte_start = byte_idx
     if linenum == r.start + r.count:
-      byte_ranges.append(Range(byte_start, byte_idx - byte_start))
+      byte_ranges.append(Range(byte_start, byte_idx - byte_start - 1))
       r = next(line_ranges_iter)
     linenum += 1
     byte_idx += len(line)
   if r is not None:
     # FIXME: Detect and warn if line ranges go past the end of file?
-    byte_ranges.append(Range(byte_start, byte_idx - byte_start))
+    byte_ranges.append(Range(byte_start, byte_idx - byte_start - 1))
   return byte_ranges