فهرست منبع

Xcode: Use proper indentation for schemes

Gregor Jasny 8 سال پیش
والد
کامیت
6a54d28e44
3فایلهای تغییر یافته به همراه14 افزوده شده و 1 حذف شده
  1. 1 0
      Source/cmXCodeScheme.cxx
  2. 10 1
      Source/cmXMLWriter.cxx
  3. 3 0
      Source/cmXMLWriter.h

+ 1 - 0
Source/cmXCodeScheme.cxx

@@ -47,6 +47,7 @@ void cmXCodeScheme::WriteXCodeXCScheme(std::ostream& fout,
                                        const std::string& xcProjDir)
 {
   cmXMLWriter xout(fout);
+  xout.SetIndentationElement(std::string(3, ' '));
   xout.StartDocument();
 
   xout.StartElement("Scheme");

+ 10 - 1
Source/cmXMLWriter.cxx

@@ -7,6 +7,7 @@
 
 cmXMLWriter::cmXMLWriter(std::ostream& output, std::size_t level)
   : Output(output)
+  , IndentationElement(1, '\t')
   , Level(level)
   , ElementOpen(false)
   , BreakAttrib(false)
@@ -100,10 +101,18 @@ void cmXMLWriter::FragmentFile(const char* fname)
   this->Output << fin.rdbuf();
 }
 
+void cmXMLWriter::SetIndentationElement(std::string const& element)
+{
+  this->IndentationElement = element;
+}
+
 void cmXMLWriter::ConditionalLineBreak(bool condition, std::size_t indent)
 {
   if (condition) {
-    this->Output << '\n' << std::string(indent + this->Level, '\t');
+    this->Output << '\n';
+    for (std::size_t i = 0; i < indent + this->Level; ++i) {
+      this->Output << this->IndentationElement;
+    }
   }
 }
 

+ 3 - 0
Source/cmXMLWriter.h

@@ -60,6 +60,8 @@ public:
 
   void FragmentFile(const char* fname);
 
+  void SetIndentationElement(std::string const& element);
+
 private:
   cmXMLWriter(const cmXMLWriter&);
   cmXMLWriter& operator=(const cmXMLWriter&);
@@ -107,6 +109,7 @@ private:
 private:
   std::ostream& Output;
   std::stack<std::string, std::vector<std::string> > Elements;
+  std::string IndentationElement;
   std::size_t Level;
   bool ElementOpen;
   bool BreakAttrib;