diff options
Diffstat (limited to 'clang')
-rw-r--r-- | clang/tools/clang-format/ClangFormat.cpp | 14 | ||||
-rw-r--r-- | clang/tools/clang-format/clang-format-sublime.py | 24 | ||||
-rw-r--r-- | clang/tools/clang-format/clang-format.el | 4 | ||||
-rw-r--r-- | clang/tools/clang-format/clang-format.py | 3 |
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) |