summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--clang/docs/ClangFormat.rst4
-rw-r--r--clang/docs/ClangFormatStyleOptions.rst4
-rw-r--r--clang/test/Format/style-on-command-line.cpp5
-rw-r--r--clang/tools/clang-format-vs/ClangFormat/ClangFormatPackage.cs7
-rw-r--r--clang/tools/clang-format/ClangFormat.cpp10
-rw-r--r--clang/tools/clang-format/clang-format-sublime.py3
-rw-r--r--clang/tools/clang-format/clang-format.py3
7 files changed, 27 insertions, 9 deletions
diff --git a/clang/docs/ClangFormat.rst b/clang/docs/ClangFormat.rst
index b9fa76aaafa..24d2eb80ea0 100644
--- a/clang/docs/ClangFormat.rst
+++ b/clang/docs/ClangFormat.rst
@@ -72,8 +72,8 @@ to format C/C++/Obj-C code.
When the desired code formatting style is different from the available options,
the style can be customized using the ``-style="{key: value, ...}"`` option or
-by putting your style configuration to the ``.clang-format`` file in your
-project's directory and using ``clang-format -style=file``.
+by putting your style configuration in the ``.clang-format`` or ``_clang-format``
+file in your project's directory and using ``clang-format -style=file``.
An easy way to create the ``.clang-format`` file is:
diff --git a/clang/docs/ClangFormatStyleOptions.rst b/clang/docs/ClangFormatStyleOptions.rst
index 658e285af13..69b6cee9aba 100644
--- a/clang/docs/ClangFormatStyleOptions.rst
+++ b/clang/docs/ClangFormatStyleOptions.rst
@@ -16,8 +16,8 @@ Configuring Style with clang-format
:program:`clang-format` supports two ways to provide custom style options:
directly specify style configuration in the ``-style=`` command line option or
-use ``-style=file`` and put style configuration in the ``.clang-format`` file
-in the project directory.
+use ``-style=file`` and put style configuration in the ``.clang-format`` or
+``_clang-format`` file in the project directory.
When using ``-style=file``, :program:`clang-format` for each input file will
try to find the ``.clang-format`` file located in the closest parent directory
diff --git a/clang/test/Format/style-on-command-line.cpp b/clang/test/Format/style-on-command-line.cpp
index 3e22daddc22..7fd61341c5a 100644
--- a/clang/test/Format/style-on-command-line.cpp
+++ b/clang/test/Format/style-on-command-line.cpp
@@ -8,6 +8,10 @@
// RUN: clang-format -style=file %t.cpp 2>&1 | FileCheck -strict-whitespace -check-prefix=CHECK5 %s
// RUN: printf "\n" > %T/.clang-format
// RUN: clang-format -style=file %t.cpp 2>&1 | FileCheck -strict-whitespace -check-prefix=CHECK6 %s
+// RUN: [ ! -e %T/.clang-format ] || rm %T/.clang-format
+// RUN: [ ! -e %T/_clang-format ] || rm %T/_clang-format
+// RUN: printf "BasedOnStyle: google\nIndentWidth: 6\n" > %T/_clang-format
+// RUN: clang-format -style=file %t.cpp 2>&1 | FileCheck -strict-whitespace -check-prefix=CHECK7 %s
void f() {
// CHECK1: {{^ int\* i;$}}
// CHECK2: {{^ int \*i;$}}
@@ -19,6 +23,7 @@ void f() {
// CHECK5: {{^ int\* i;$}}
// CHECK6: {{^Error reading .*\.clang-format: Invalid argument}}
// CHECK6: {{^ int \*i;$}}
+// CHECK7: {{^ int\* i;$}}
int*i;
int j;
}
diff --git a/clang/tools/clang-format-vs/ClangFormat/ClangFormatPackage.cs b/clang/tools/clang-format-vs/ClangFormat/ClangFormatPackage.cs
index c216030b9d7..797d4678857 100644
--- a/clang/tools/clang-format-vs/ClangFormat/ClangFormatPackage.cs
+++ b/clang/tools/clang-format-vs/ClangFormat/ClangFormatPackage.cs
@@ -37,11 +37,12 @@ namespace LLVM.ClangFormat
[DisplayName("Style")]
[Description("Coding style, currently supports:\n" +
" - Predefined styles ('LLVM', 'Google', 'Chromium', 'Mozilla').\n" +
- " - 'File' to search for a YAML .clang-format configuration.\n" +
+ " - 'File' to search for a YAML .clang-format or _clang-format\n" +
+ " configuration file.\n" +
" - A YAML configuration snippet.\n\n" +
"'File':\n" +
- " Searches for a .clang-format configuration in the source file's\n" +
- " directory and its parents.\n\n" +
+ " Searches for a .clang-format or _clang-format configuration file\n" +
+ " in the source file's directory and its parents.\n\n" +
"YAML configuration snippet:\n" +
" The content of a .clang-format configuration file, as string.\n" +
" Example: '{BasedOnStyle: \"LLVM\", IndentWidth: 8}'\n\n" +
diff --git a/clang/tools/clang-format/ClangFormat.cpp b/clang/tools/clang-format/ClangFormat.cpp
index 2d415b358fc..592d46a530c 100644
--- a/clang/tools/clang-format/ClangFormat.cpp
+++ b/clang/tools/clang-format/ClangFormat.cpp
@@ -132,12 +132,22 @@ FormatStyle getStyle(StringRef StyleName, StringRef FileName) {
!Directory.empty();
Directory = llvm::sys::path::parent_path(Directory)) {
SmallString<128> ConfigFile(Directory);
+
llvm::sys::path::append(ConfigFile, ".clang-format");
DEBUG(llvm::dbgs() << "Trying " << ConfigFile << "...\n");
bool IsFile = false;
// Ignore errors from is_regular_file: we only need to know if we can read
// the file or not.
llvm::sys::fs::is_regular_file(Twine(ConfigFile), IsFile);
+
+ if (!IsFile) {
+ // Try _clang-format too, since dotfiles are not commonly used on Windows.
+ ConfigFile = Directory;
+ llvm::sys::path::append(ConfigFile, "_clang-format");
+ DEBUG(llvm::dbgs() << "Trying " << ConfigFile << "...\n");
+ llvm::sys::fs::is_regular_file(Twine(ConfigFile), IsFile);
+ }
+
if (IsFile) {
OwningPtr<MemoryBuffer> Text;
if (error_code ec = MemoryBuffer::getFile(ConfigFile, Text)) {
diff --git a/clang/tools/clang-format/clang-format-sublime.py b/clang/tools/clang-format/clang-format-sublime.py
index 73ff3dc8239..78c8939c1b0 100644
--- a/clang/tools/clang-format/clang-format-sublime.py
+++ b/clang/tools/clang-format/clang-format-sublime.py
@@ -21,7 +21,8 @@ binary = 'clang-format'
# Change this to format according to other formatting styles. See the output of
# 'clang-format --help' for a list of supported styles. The default looks for
-# a '.clang-format' file to indicate the style that should be used.
+# a '.clang-format' or '_clang-format' file to indicate the style that should be
+# used.
style = 'file'
class ClangFormatCommand(sublime_plugin.TextCommand):
diff --git a/clang/tools/clang-format/clang-format.py b/clang/tools/clang-format/clang-format.py
index 4077b4180cf..d8338ab4dae 100644
--- a/clang/tools/clang-format/clang-format.py
+++ b/clang/tools/clang-format/clang-format.py
@@ -28,7 +28,8 @@ binary = 'clang-format'
# Change this to format according to other formatting styles. See the output of
# 'clang-format --help' for a list of supported styles. The default looks for
-# a '.clang-format' file to indicate the style that should be used.
+# a '.clang-format' or '_clang-format' file to indicate the style that should be
+# used.
style = 'file'
# Get the current text.
OpenPOWER on IntegriCloud