MCPcopy Create free account
hub / github.com/CppCXY/EmmyLuaCodeStyle / EnableAutoDetectConfig

Method EnableAutoDetectConfig

CodeFormat/src/FormatContext.cpp:77–140  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

75}
76
77void FormatContext::EnableAutoDetectConfig() {
78 switch (_workMode) {
79 case WorkMode::File: {
80 if (_workspace.empty()) {
81 _workspace = std::filesystem::current_path().string();
82 }
83 std::filesystem::path workspace(_workspace);
84 std::filesystem::path inputPath(_inputPath);
85 if (!IsSubRelative(inputPath, workspace)) {
86 return;
87 }
88
89 auto directory = absolute(inputPath.parent_path());
90 while (IsSubRelative(directory, workspace)) {
91 auto editorconfigPath = directory / ".editorconfig";
92 if (std::filesystem::exists(editorconfigPath)) {
93 SetConfigFilePath(editorconfigPath.string());
94 return;
95 }
96
97 directory = directory.parent_path();
98 }
99 }
100 case WorkMode::Stdin: {
101 if (_workspace.empty() || _inputPath.empty()) {
102 return;
103 }
104 std::filesystem::path workspace(_workspace);
105 std::filesystem::path inputPath(_inputPath);
106 if (!IsSubRelative(inputPath, workspace)) {
107 return;
108 }
109
110 auto directory = absolute(inputPath.parent_path());
111 while (IsSubRelative(directory, workspace)) {
112 auto editorconfigPath = directory / ".editorconfig";
113 if (std::filesystem::exists(editorconfigPath)) {
114 SetConfigFilePath(editorconfigPath.string());
115 return;
116 }
117
118 directory = directory.parent_path();
119 }
120 }
121 default: {
122 FileFinder finder(_workspace);
123 finder.AddFindFile(".editorconfig");
124 finder.AddIgnoreDirectory(".git");
125 finder.AddIgnoreDirectory(".github");
126 finder.AddIgnoreDirectory(".svn");
127 finder.AddIgnoreDirectory(".idea");
128 finder.AddIgnoreDirectory(".vs");
129 finder.AddIgnoreDirectory(".vscode");
130
131 auto files = finder.FindFiles();
132
133 for (auto &file: files) {
134 std::filesystem::path filePath(file);

Callers 2

InitFormatFunction · 0.80
InitCheckFunction · 0.80

Calls 7

IsSubRelativeFunction · 0.85
stringFunction · 0.85
AddFindFileMethod · 0.80
AddIgnoreDirectoryMethod · 0.80
FindFilesMethod · 0.80
emptyMethod · 0.45
stringMethod · 0.45

Tested by

no test coverage detected