clang-format: Extend vim integration so that a line range can be passed in.

llvm-svn: 241976
This commit is contained in:
Daniel Jasper 2015-07-11 06:46:26 +00:00
parent 00ebdbcc47
commit 1a5ea6eb20
1 changed files with 16 additions and 2 deletions

View File

@ -14,6 +14,15 @@
# 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: