diff --git a/Source/cmDocumentVariables.cxx b/Source/cmDocumentVariables.cxx index 8db0e8f53..623216227 100644 --- a/Source/cmDocumentVariables.cxx +++ b/Source/cmDocumentVariables.cxx @@ -896,6 +896,15 @@ void cmDocumentVariables::DefineVariables(cmake* cm) " script, it may get fatal error messages from the script.",false, "Variables That Change Behavior"); + cm->DefineProperty + ("CMAKE_SUBLIMECLANG_DISABLED", cmProperty::VARIABLE, + "Used by the Sublime Text 2 generator to disable SublimeClang in " + "generated project files.", + "For very large projects SublimeClang might run slowly. Set this variable" + " to TRUE to instruct the Sublime Text 2 generator to disable " + " SublimeClang in the generated project files.", false, + "Variables That Change Behavior"); + // Variables defined by CMake that describe the system cm->DefineProperty diff --git a/Source/cmExtraSublimeTextGenerator.cxx b/Source/cmExtraSublimeTextGenerator.cxx index af2696515..5c20ef95b 100644 --- a/Source/cmExtraSublimeTextGenerator.cxx +++ b/Source/cmExtraSublimeTextGenerator.cxx @@ -47,7 +47,7 @@ void cmExtraSublimeTextGenerator "Project files for Sublime Text 2 will be created in the top directory " "and in every subdirectory which features a CMakeLists.txt file " "containing a PROJECT() call. " - "Additionally a hierarchy of makefiles is generated into the " + "Additionally Makefiles (or build.ninja files) are generated into the " "build tree. The appropriate make program can build the project through " "the default make target. A \"make install\" target is also provided."; } @@ -142,6 +142,18 @@ void cmExtraSublimeTextGenerator // Write the settings section with sublimeclang options fout << ",\n\t\"settings\":\n\t{\n\t"; + // Check if the CMAKE_SUBLIMECLANG_DISABLED flag has been set. If it has + // disable sublimeclang for this project. + const char* sublimeclangDisabledValue = + lgs[0]->GetMakefile()->GetSafeDefinition("CMAKE_SUBLIMECLANG_DISABLED"); + bool sublimeclangEnabled = cmSystemTools::IsOff(sublimeclangDisabledValue); + // Per project sublimeclang settings override default and user settings, + // so we only write the sublimeclang_enabled setting to the project file + // if it is set to be disabled. + if (!sublimeclangEnabled) + { + fout << "\t\"sublimeclang_enabled\": false,\n\t"; + } fout << "\t\"sublimeclang_options\":\n\t\t[\n\t\t"; std::set::const_iterator stringSetIter = includeDirs.begin(); while (stringSetIter != includeDirs.end())