The vim Formatonsave integration is not working if we create a new file directly using vim.
eg: vi -V9t.log t.cpp
It will not able to format the buffer.
> Traceback (most recent call last):
> File "<string>", line 1, in <module>
> File "...clang/tools/clang-format/clang-format.py", line 156, in <module>
> main()
> File "...clang/tools/clang-format/clang-format.py", line 80, in main
> with open(vim.current.buffer.name, 'r') as f:
> FileNotFoundError: [Errno 2] No such file or directory: '...t.cpp'
This patch check the file before we try to open it.
Reviewed By: owenpan
Differential Revision: https://reviews.llvm.org/D138234
import difflib
import json
+import os.path
import platform
import subprocess
import sys
# Determine range to format.
if vim.eval('exists("l:lines")') == '1':
lines = ['-lines', vim.eval('l:lines')]
- elif vim.eval('exists("l:formatdiff")') == '1':
+ elif vim.eval('exists("l:formatdiff")') == '1' and \
+ os.path.exists(vim.current.buffer.name):
with open(vim.current.buffer.name, 'r') as f:
ondisk = f.read().splitlines();
sequence = difflib.SequenceMatcher(None, ondisk, vim.current.buffer)