aboutsummaryrefslogtreecommitdiff
path: root/clang
diff options
context:
space:
mode:
Diffstat (limited to 'clang')
-rw-r--r--clang/tools/clang-format/ClangFormat.cpp14
-rw-r--r--clang/tools/clang-format/clang-format-sublime.py24
-rw-r--r--clang/tools/clang-format/clang-format.el4
-rw-r--r--clang/tools/clang-format/clang-format.py3
4 files changed, 30 insertions, 15 deletions
diff --git a/clang/tools/clang-format/ClangFormat.cpp b/clang/tools/clang-format/ClangFormat.cpp
index 592d46a..71dcfc5 100644
--- a/clang/tools/clang-format/ClangFormat.cpp
+++ b/clang/tools/clang-format/ClangFormat.cpp
@@ -73,6 +73,14 @@ static cl::opt<std::string>
"parameters, e.g.:\n"
" -style=\"{BasedOnStyle: llvm, IndentWidth: 8}\""),
cl::init("file"), cl::cat(ClangFormatCategory));
+
+static cl::opt<std::string>
+AssumeFilename("assume-filename",
+ cl::desc("When reading from stdin, clang-format assumes this\n"
+ "filename to look for a style config file (with\n"
+ "-style=file)."),
+ cl::cat(ClangFormatCategory));
+
static cl::opt<bool> Inplace("i",
cl::desc("Inplace edit <file>s, if specified."),
cl::cat(ClangFormatCategory));
@@ -126,11 +134,15 @@ FormatStyle getStyle(StringRef StyleName, StringRef FileName) {
return Style;
}
+ if (FileName == "-")
+ FileName = AssumeFilename;
SmallString<128> Path(FileName);
llvm::sys::fs::make_absolute(Path);
- for (StringRef Directory = llvm::sys::path::parent_path(Path);
+ for (StringRef Directory = Path;
!Directory.empty();
Directory = llvm::sys::path::parent_path(Directory)) {
+ if (!llvm::sys::fs::is_directory(Directory))
+ continue;
SmallString<128> ConfigFile(Directory);
llvm::sys::path::append(ConfigFile, ".clang-format");
diff --git a/clang/tools/clang-format/clang-format-sublime.py b/clang/tools/clang-format/clang-format-sublime.py
index 78c8939..2099d7a 100644
--- a/clang/tools/clang-format/clang-format-sublime.py
+++ b/clang/tools/clang-format/clang-format-sublime.py
@@ -37,21 +37,21 @@ class ClangFormatCommand(sublime_plugin.TextCommand):
region_offset = min(region.a, region.b)
region_length = abs(region.b - region.a)
command.extend(['-offset', str(region_offset),
- '-length', str(region_length)])
+ '-length', str(region_length),
+ '-assume-filename', str(self.view.file_name())])
old_viewport_position = self.view.viewport_position()
buf = self.view.substr(sublime.Region(0, self.view.size()))
p = subprocess.Popen(command, stdout=subprocess.PIPE,
stderr=subprocess.PIPE, stdin=subprocess.PIPE)
output, error = p.communicate(buf.encode(encoding))
- if not error:
- self.view.replace(
- edit, sublime.Region(0, self.view.size()),
- output.decode(encoding))
- self.view.sel().clear()
- for region in regions:
- self.view.sel().add(region)
- # FIXME: Without the 10ms delay, the viewport sometimes jumps.
- sublime.set_timeout(lambda: self.view.set_viewport_position(
- old_viewport_position, False), 10)
- else:
+ if error:
print error
+ self.view.replace(
+ edit, sublime.Region(0, self.view.size()),
+ output.decode(encoding))
+ self.view.sel().clear()
+ for region in regions:
+ self.view.sel().add(region)
+ # FIXME: Without the 10ms delay, the viewport sometimes jumps.
+ sublime.set_timeout(lambda: self.view.set_viewport_position(
+ old_viewport_position, False), 10)
diff --git a/clang/tools/clang-format/clang-format.el b/clang/tools/clang-format/clang-format.el
index 531635e..520a3e2 100644
--- a/clang/tools/clang-format/clang-format.el
+++ b/clang/tools/clang-format/clang-format.el
@@ -38,10 +38,12 @@
(orig-point (point))
(style "file"))
(unwind-protect
- (call-process-region (point-min) (point-max) clang-format-binary t t nil
+ (call-process-region (point-min) (point-max) clang-format-binary
+ t (list t nil) nil
"-offset" (number-to-string (1- begin))
"-length" (number-to-string (- end begin))
"-cursor" (number-to-string (1- (point)))
+ "-assume-filename" (buffer-file-name)
"-style" style)
(goto-char (point-min))
(let ((json-output (json-read-from-string
diff --git a/clang/tools/clang-format/clang-format.py b/clang/tools/clang-format/clang-format.py
index d8338ab..c333e4d 100644
--- a/clang/tools/clang-format/clang-format.py
+++ b/clang/tools/clang-format/clang-format.py
@@ -49,7 +49,8 @@ if sys.platform.startswith('win32'):
# Call formatter.
p = subprocess.Popen([binary, '-lines', lines, '-style', style,
- '-cursor', str(cursor)],
+ '-cursor', str(cursor),
+ '-assume-filename', vim.current.buffer.name],
stdout=subprocess.PIPE, stderr=subprocess.PIPE,
stdin=subprocess.PIPE, startupinfo=startupinfo)
stdout, stderr = p.communicate(input=text)