Ver código fonte

ENH: add all subdirs of the project to the kdevelop blacklist, so kdevelop
doesn't watch these dirs for added or remved files everytime it is started

Alex

Alexander Neundorf 18 anos atrás
pai
commit
e5dc217f4e

+ 40 - 2
Source/cmGlobalKdevelopGenerator.cxx

@@ -23,8 +23,10 @@
 #include "cmake.h"
 #include "cmake.h"
 #include "cmSourceFile.h"
 #include "cmSourceFile.h"
 #include "cmGeneratedFileStream.h"
 #include "cmGeneratedFileStream.h"
+#include "cmSystemTools.h"
 
 
 #include <cmsys/SystemTools.hxx>
 #include <cmsys/SystemTools.hxx>
+#include <cmsys/Directory.hxx>
 
 
 //----------------------------------------------------------------------------
 //----------------------------------------------------------------------------
 void cmGlobalKdevelopGenerator
 void cmGlobalKdevelopGenerator
@@ -273,6 +275,32 @@ void cmGlobalKdevelopGenerator
                     const std::string& cmakeFilePattern,
                     const std::string& cmakeFilePattern,
                     const std::string& fileToOpen)
                     const std::string& fileToOpen)
 {
 {
+  // add all subdirectories to the kdevelop blacklist
+  // so they are not monitored for added or removed files
+  // since this is basically handled by adding files to the
+  // cmake files
+  this->Blacklist.clear();
+  cmsys::Directory d;
+  if (d.Load(projectDir.c_str()))
+    {
+    unsigned int i;
+    size_t numf = d.GetNumberOfFiles();
+    for (unsigned int i = 0; i < numf; i++)
+      {
+      std::string nextFile = d.GetFile(i);
+      if ((nextFile!=".") && (nextFile!=".."))
+        {
+        std::string tmp = projectDir;
+        tmp += "/";
+        tmp += nextFile;
+        if (cmSystemTools::FileIsDirectory(tmp.c_str()))
+          {
+          this->Blacklist.push_back(nextFile);
+          }
+        }
+      }
+    }
+
   std::string filename=outputDir+"/";
   std::string filename=outputDir+"/";
   filename+=projectname+".kdevelop";
   filename+=projectname+".kdevelop";
   std::string sessionFilename=outputDir+"/";
   std::string sessionFilename=outputDir+"/";
@@ -290,7 +318,7 @@ void cmGlobalKdevelopGenerator
                                executable, cmakeFilePattern, 
                                executable, cmakeFilePattern, 
                                fileToOpen, sessionFilename);
                                fileToOpen, sessionFilename);
     }
     }
-   
+
 }
 }
 
 
 void cmGlobalKdevelopGenerator
 void cmGlobalKdevelopGenerator
@@ -388,7 +416,7 @@ void cmGlobalKdevelopGenerator
   // check for a version control system
   // check for a version control system
   bool hasSvn = cmSystemTools::FileExists((projectDir + "/.svn").c_str());
   bool hasSvn = cmSystemTools::FileExists((projectDir + "/.svn").c_str());
   bool hasCvs = cmSystemTools::FileExists((projectDir + "/CVS").c_str());
   bool hasCvs = cmSystemTools::FileExists((projectDir + "/CVS").c_str());
-
+  
   fout<<"<?xml version = '1.0'?>\n";
   fout<<"<?xml version = '1.0'?>\n";
   fout<<"<kdevelop>\n";
   fout<<"<kdevelop>\n";
   fout<<"  <general>\n";
   fout<<"  <general>\n";
@@ -441,6 +469,16 @@ void cmGlobalKdevelopGenerator
   fout<<"        <default/>\n";
   fout<<"        <default/>\n";
   fout<<"      </environments>\n";
   fout<<"      </environments>\n";
   fout<<"    </make>\n";
   fout<<"    </make>\n";
+
+  fout<<"    <blacklist>\n";
+  for(std::vector<std::string>::const_iterator dirIt=this->Blacklist.begin();
+      dirIt != this->Blacklist.end();
+      ++dirIt)
+    {
+    fout<<"      <path>"<<dirIt->c_str()<<"</path>\n";
+    }
+  fout<<"    </blacklist>\n";
+
   fout<<"  </kdevcustomproject>\n";
   fout<<"  </kdevcustomproject>\n";
   fout<<"  <kdevfilecreate>\n";
   fout<<"  <kdevfilecreate>\n";
   fout<<"    <filetypes/>\n";
   fout<<"    <filetypes/>\n";

+ 1 - 1
Source/cmGlobalKdevelopGenerator.h

@@ -92,7 +92,7 @@ private:
                             const std::string& fileToOpen,
                             const std::string& fileToOpen,
                             const std::string& sessionFilename);
                             const std::string& sessionFilename);
 
 
-  
+  std::vector<std::string> Blacklist;
 };
 };
 
 
 #endif
 #endif