summaryrefslogtreecommitdiffstats
path: root/clang/tools/clang-format/ClangFormat.cpp
diff options
context:
space:
mode:
authorDaniel Jasper <djasper@google.com>2013-09-13 13:40:24 +0000
committerDaniel Jasper <djasper@google.com>2013-09-13 13:40:24 +0000
commite488f5dd1ea9a5eaec8862135a140c63b7452515 (patch)
tree48b7cfb930d700f88224f12302396d7e37608af7 /clang/tools/clang-format/ClangFormat.cpp
parent0da35401ce584e3b710b720f1b1a7db35c46b24d (diff)
downloadbcm5719-llvm-e488f5dd1ea9a5eaec8862135a140c63b7452515.tar.gz
bcm5719-llvm-e488f5dd1ea9a5eaec8862135a140c63b7452515.zip
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. llvm-svn: 190691
Diffstat (limited to 'clang/tools/clang-format/ClangFormat.cpp')
-rw-r--r--clang/tools/clang-format/ClangFormat.cpp14
1 files changed, 13 insertions, 1 deletions
diff --git a/clang/tools/clang-format/ClangFormat.cpp b/clang/tools/clang-format/ClangFormat.cpp
index 592d46a530c..71dcfc5640b 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");
OpenPOWER on IntegriCloud