]> granicus.if.org Git - clang/commitdiff
clang-format: Extend vim integration so that a line range can be passed in.
authorDaniel Jasper <djasper@google.com>
Sat, 11 Jul 2015 06:46:26 +0000 (06:46 +0000)
committerDaniel Jasper <djasper@google.com>
Sat, 11 Jul 2015 06:46:26 +0000 (06:46 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@241976 91177308-0d34-0410-b5e6-96231b3b80d8

tools/clang-format/clang-format.py

index 49ca773b049d6ce68df91f4295866150e8728c6a..5cb41fcfa371a5c6e8ad8920ea03dc405824d5aa 100644 (file)
 # VISUAL mode. The line or region is extended to the next bigger syntactic
 # entity.
 #
+# You can also pass in the variable "l:lines" to choose the range for
+# formatting. This variable can either contain "<start line>:<end line>" or
+# "all" to format the full file. So, to format the full file, write a function
+# like:
+# :function FormatFile()
+# :  let l:lines="all"
+# :  pyf <path-to-this-file>/clang-format.py
+# :endfunction
+#
 # It operates on the current, potentially unsaved buffer and does not create
 # or save any files. To revert a formatting, just undo.
 
@@ -44,7 +53,10 @@ def main():
   text = '\n'.join(buf)
 
   # Determine range to format.
-  lines = '%s:%s' % (vim.current.range.start + 1, vim.current.range.end + 1)
+  if vim.eval('exists("l:lines")') == '1':
+    lines = vim.eval('l:lines')
+  else:
+    lines = '%s:%s' % (vim.current.range.start + 1, vim.current.range.end + 1)
 
   # Determine the cursor position.
   cursor = int(vim.eval('line2byte(line("."))+col(".")')) - 2
@@ -60,7 +72,9 @@ def main():
     startupinfo.wShowWindow = subprocess.SW_HIDE
 
   # Call formatter.
-  command = [binary, '-lines', lines, '-style', style, '-cursor', str(cursor)]
+  command = [binary, '-style', style, '-cursor', str(cursor)]
+  if lines != 'all':
+    command.extend(['-lines', lines])
   if fallback_style:
     command.extend(['-fallback-style', fallback_style])
   if vim.current.buffer.name: