r193433, thanks!
On Fri, Oct 25, 2013 at 1:07 PM, Daniel Jasper <[email protected]> wrote: > Absolutely. Thanks! > > > On Fri, Oct 25, 2013 at 10:04 PM, Nico Weber <[email protected]> wrote: > >> On Fri, Sep 13, 2013 at 6:40 AM, Daniel Jasper <[email protected]>wrote: >> >>> Author: djasper >>> Date: Fri Sep 13 08:40:24 2013 >>> New Revision: 190691 >>> >>> URL: http://llvm.org/viewvc/llvm-project?rev=190691&view=rev >>> Log: >>> clang-format: Add -assume-filename option for editor integrations. >>> >>> With -style=file, clang-format now starts to search for a .clang-format >>> file starting at the file given with -assume-filename if it reads from >>> stdin. Otherwise, it would start searching from the current directory, >>> which is not helpful for editor integrations. >>> >>> Also changed vim, emacs and sublime integrations to actually make use of >>> this flag. >>> >>> This fixes llvm.org/PR17072. >>> >>> Modified: >>> cfe/trunk/tools/clang-format/ClangFormat.cpp >>> cfe/trunk/tools/clang-format/clang-format-sublime.py >>> cfe/trunk/tools/clang-format/clang-format.el >>> cfe/trunk/tools/clang-format/clang-format.py >>> >>> Modified: cfe/trunk/tools/clang-format/ClangFormat.cpp >>> URL: >>> http://llvm.org/viewvc/llvm-project/cfe/trunk/tools/clang-format/ClangFormat.cpp?rev=190691&r1=190690&r2=190691&view=diff >>> >>> ============================================================================== >>> --- cfe/trunk/tools/clang-format/ClangFormat.cpp (original) >>> +++ cfe/trunk/tools/clang-format/ClangFormat.cpp Fri Sep 13 08:40:24 2013 >>> @@ -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 >>> 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"); >>> >>> Modified: cfe/trunk/tools/clang-format/clang-format-sublime.py >>> URL: >>> http://llvm.org/viewvc/llvm-project/cfe/trunk/tools/clang-format/clang-format-sublime.py?rev=190691&r1=190690&r2=190691&view=diff >>> >>> ============================================================================== >>> --- cfe/trunk/tools/clang-format/clang-format-sublime.py (original) >>> +++ cfe/trunk/tools/clang-format/clang-format-sublime.py Fri Sep 13 >>> 08:40:24 2013 >>> @@ -37,21 +37,21 @@ class ClangFormatCommand(sublime_plugin. >>> 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) >>> >>> Modified: cfe/trunk/tools/clang-format/clang-format.el >>> URL: >>> http://llvm.org/viewvc/llvm-project/cfe/trunk/tools/clang-format/clang-format.el?rev=190691&r1=190690&r2=190691&view=diff >>> >>> ============================================================================== >>> --- cfe/trunk/tools/clang-format/clang-format.el (original) >>> +++ cfe/trunk/tools/clang-format/clang-format.el Fri Sep 13 08:40:24 2013 >>> @@ -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 >>> >>> Modified: cfe/trunk/tools/clang-format/clang-format.py >>> URL: >>> http://llvm.org/viewvc/llvm-project/cfe/trunk/tools/clang-format/clang-format.py?rev=190691&r1=190690&r2=190691&view=diff >>> >>> ============================================================================== >>> --- cfe/trunk/tools/clang-format/clang-format.py (original) >>> +++ cfe/trunk/tools/clang-format/clang-format.py Fri Sep 13 08:40:24 2013 >>> @@ -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], >>> >> >> This broke formatting unnamed buffers in vim. I sometimes open a new tab, >> paste in some code, and format that to see what clang-format does. This >> used to work, now I get something about "execv() arg 2 must contain only >> strings", probably due to vim.current.buffer.name being None. This patch >> fixes it for me, is it ok to land this? >> >> Index: tools/clang-format/clang-format.py >> =================================================================== >> --- tools/clang-format/clang-format.py (revision 193427) >> +++ tools/clang-format/clang-format.py (working copy) >> @@ -48,9 +48,10 @@ >> startupinfo.wShowWindow = subprocess.SW_HIDE >> >> # Call formatter. >> -p = subprocess.Popen([binary, '-lines', lines, '-style', style, >> - '-cursor', str(cursor), >> - '-assume-filename', vim.current.buffer.name], >> +command = [binary, '-lines', lines, '-style', style, '-cursor', >> str(cursor)] >> +if vim.current.buffer.name: >> + command.append(['-assume-filename', vim.current.buffer.name]) >> +p = subprocess.Popen(command, >> stdout=subprocess.PIPE, stderr=subprocess.PIPE, >> stdin=subprocess.PIPE, startupinfo=startupinfo) >> stdout, stderr = p.communicate(input=text) >> >> >> >> >>> stdout=subprocess.PIPE, stderr=subprocess.PIPE, >>> stdin=subprocess.PIPE, startupinfo=startupinfo) >>> stdout, stderr = p.communicate(input=text) >>> >>> >>> _______________________________________________ >>> cfe-commits mailing list >>> [email protected] >>> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits >>> >> >> >
_______________________________________________ cfe-commits mailing list [email protected] http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
