From fb59486ef3624d09896b09a978b28eb63cfd3c46 Mon Sep 17 00:00:00 2001 From: Alexander Kornienko Date: Mon, 6 May 2013 14:11:27 +0000 Subject: Added Mozilla style, cleaned get*Style methods. Summary: Patch based on a patch by Ehsan Akhgari. Reviewers: djasper Reviewed By: djasper CC: cfe-commits, klimek Differential Revision: http://llvm-reviews.chandlerc.com/D750 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@181196 91177308-0d34-0410-b5e6-96231b3b80d8 --- include/clang/Format/Format.h | 7 ++--- lib/Format/Format.cpp | 52 +++++++++++++++++++++++--------------- tools/clang-format/ClangFormat.cpp | 9 +++++-- 3 files changed, 43 insertions(+), 25 deletions(-) diff --git a/include/clang/Format/Format.h b/include/clang/Format/Format.h index 28aa6bd2ce..5304dc7ba2 100644 --- a/include/clang/Format/Format.h +++ b/include/clang/Format/Format.h @@ -57,9 +57,6 @@ struct FormatStyle { /// instead of \c A> for LS_Cpp03. LanguageStandard Standard; - /// \brief If \c true, analyze the formatted file for C++03 compatibility. - bool DeriveBackwardsCompatibility; - /// \brief Indent case labels one level from the switch statement. /// /// When false, use the same indentation level as for the switch statement. @@ -109,6 +106,10 @@ FormatStyle getGoogleStyle(); /// http://www.chromium.org/developers/coding-style. FormatStyle getChromiumStyle(); +/// \brief Returns a format style complying with Mozilla's style guide: +/// https://developer.mozilla.org/en-US/docs/Developer_Guide/Coding_Style. +FormatStyle getMozillaStyle(); + /// \brief Reformats the given \p Ranges in the token stream coming out of /// \c Lex. /// diff --git a/lib/Format/Format.cpp b/lib/Format/Format.cpp index 68626d29ca..a0557f7818 100644 --- a/lib/Format/Format.cpp +++ b/lib/Format/Format.cpp @@ -36,43 +36,43 @@ namespace format { FormatStyle getLLVMStyle() { FormatStyle LLVMStyle; - LLVMStyle.ColumnLimit = 80; - LLVMStyle.MaxEmptyLinesToKeep = 1; - LLVMStyle.PointerBindsToType = false; - LLVMStyle.DerivePointerBinding = false; LLVMStyle.AccessModifierOffset = -2; - LLVMStyle.Standard = FormatStyle::LS_Cpp03; - LLVMStyle.IndentCaseLabels = false; - LLVMStyle.SpacesBeforeTrailingComments = 1; - LLVMStyle.BinPackParameters = true; + LLVMStyle.AlignEscapedNewlinesLeft = false; LLVMStyle.AllowAllParametersOfDeclarationOnNextLine = true; - LLVMStyle.ConstructorInitializerAllOnOneLineOrOnePerLine = false; LLVMStyle.AllowShortIfStatementsOnASingleLine = false; + LLVMStyle.BinPackParameters = true; + LLVMStyle.ColumnLimit = 80; + LLVMStyle.ConstructorInitializerAllOnOneLineOrOnePerLine = false; + LLVMStyle.DerivePointerBinding = false; + LLVMStyle.IndentCaseLabels = false; + LLVMStyle.MaxEmptyLinesToKeep = 1; LLVMStyle.ObjCSpaceBeforeProtocolList = true; LLVMStyle.PenaltyExcessCharacter = 1000000; LLVMStyle.PenaltyReturnTypeOnItsOwnLine = 75; - LLVMStyle.AlignEscapedNewlinesLeft = false; + LLVMStyle.PointerBindsToType = false; + LLVMStyle.SpacesBeforeTrailingComments = 1; + LLVMStyle.Standard = FormatStyle::LS_Cpp03; return LLVMStyle; } FormatStyle getGoogleStyle() { FormatStyle GoogleStyle; - GoogleStyle.ColumnLimit = 80; - GoogleStyle.MaxEmptyLinesToKeep = 1; - GoogleStyle.PointerBindsToType = true; - GoogleStyle.DerivePointerBinding = true; GoogleStyle.AccessModifierOffset = -1; - GoogleStyle.Standard = FormatStyle::LS_Auto; - GoogleStyle.IndentCaseLabels = true; - GoogleStyle.SpacesBeforeTrailingComments = 2; - GoogleStyle.BinPackParameters = true; + GoogleStyle.AlignEscapedNewlinesLeft = true; GoogleStyle.AllowAllParametersOfDeclarationOnNextLine = true; - GoogleStyle.ConstructorInitializerAllOnOneLineOrOnePerLine = true; GoogleStyle.AllowShortIfStatementsOnASingleLine = true; + GoogleStyle.BinPackParameters = true; + GoogleStyle.ColumnLimit = 80; + GoogleStyle.ConstructorInitializerAllOnOneLineOrOnePerLine = true; + GoogleStyle.DerivePointerBinding = true; + GoogleStyle.IndentCaseLabels = true; + GoogleStyle.MaxEmptyLinesToKeep = 1; GoogleStyle.ObjCSpaceBeforeProtocolList = false; GoogleStyle.PenaltyExcessCharacter = 1000000; GoogleStyle.PenaltyReturnTypeOnItsOwnLine = 200; - GoogleStyle.AlignEscapedNewlinesLeft = true; + GoogleStyle.PointerBindsToType = true; + GoogleStyle.SpacesBeforeTrailingComments = 2; + GoogleStyle.Standard = FormatStyle::LS_Auto; return GoogleStyle; } @@ -86,6 +86,18 @@ FormatStyle getChromiumStyle() { return ChromiumStyle; } +FormatStyle getMozillaStyle() { + FormatStyle MozillaStyle = getLLVMStyle(); + MozillaStyle.AllowAllParametersOfDeclarationOnNextLine = false; + MozillaStyle.ConstructorInitializerAllOnOneLineOrOnePerLine = true; + MozillaStyle.DerivePointerBinding = true; + MozillaStyle.IndentCaseLabels = true; + MozillaStyle.ObjCSpaceBeforeProtocolList = false; + MozillaStyle.PenaltyReturnTypeOnItsOwnLine = 200; + MozillaStyle.PointerBindsToType = true; + return MozillaStyle; +} + // Returns the length of everything up to the first possible line break after // the ), ], } or > matching \c Tok. static unsigned getLengthToMatchingParen(const AnnotatedToken &Tok) { diff --git a/tools/clang-format/ClangFormat.cpp b/tools/clang-format/ClangFormat.cpp index 1477e9347d..57833edf0f 100644 --- a/tools/clang-format/ClangFormat.cpp +++ b/tools/clang-format/ClangFormat.cpp @@ -36,7 +36,7 @@ Lengths("length", cl::desc("Format a range of this length. " "Can only be used with one input file.")); static cl::opt Style( "style", - cl::desc("Coding style, currently supports: LLVM, Google, Chromium."), + cl::desc("Coding style, currently supports: LLVM, Google, Chromium, Mozilla."), cl::init("LLVM")); static cl::opt Inplace("i", cl::desc("Inplace edit s, if specified.")); @@ -63,8 +63,13 @@ static FormatStyle getStyle() { FormatStyle TheStyle = getGoogleStyle(); if (Style == "LLVM") TheStyle = getLLVMStyle(); - if (Style == "Chromium") + else if (Style == "Chromium") TheStyle = getChromiumStyle(); + else if (Style == "Mozilla") + TheStyle = getMozillaStyle(); + else if (Style != "Google") + llvm::errs() << "Unknown style " << Style << ", using Google style.\n"; + return TheStyle; } -- cgit v1.2.3-18-g5258