bool clEditorConfig::LoadForFile(const wxFileName& filename, wxFileName& editorConfigFile) { editorConfigFile = wxFileName(filename.GetPath(), ".editorconfig"); bool foundFile = false; while(editorConfigFile.GetDirCount()) { if(editorConfigFile.FileExists()) { foundFile = true; break; } editorConfigFile.RemoveLastDir(); } if(!foundFile) return false; wxString content; if(!FileUtils::ReadFileContent(editorConfigFile, content)) { clDEBUG() << "Failed to read file:" << editorConfigFile << clEndl; return false; } clEditorConfigSection section; m_sections.push_back(section); clEditorConfigSection* cursection = &(m_sections.back()); wxUnusedVar(cursection); // for debug purposes wxArrayString lines = ::wxStringTokenize(content, "\n", wxTOKEN_STRTOK); for(size_t i = 0; i < lines.size(); ++i) { // Remove comments wxString strLine = lines.Item(i); strLine = strLine.BeforeFirst('#'); strLine = strLine.BeforeFirst(';'); strLine.Trim().Trim(false); if(strLine.IsEmpty()) continue; // Process the line if(strLine.StartsWith("[") && strLine.EndsWith("]")) { strLine.RemoveLast().Remove(0, 1); // remove the [] clEditorConfigSection section; section.patterns = ProcessSection(strLine); m_sections.push_back(section); cursection = &(m_sections.back()); } else { ProcessDirective(strLine); } } clDEBUG() << "Using .editorconfig file:" << editorConfigFile << clEndl; return true; }
/* $(prefix)/share/doc/mmex */ const wxFileName mmex::GetDocDir() { static wxFileName fname; if (!fname.IsOk()) { fname = GetSharedDir(); const wxArrayString &dirs = fname.GetDirs(); if (dirs.Last().Lower() == GetAppName()) fname.RemoveLastDir(); // mmex folder fname.AppendDir("doc"); fname.AppendDir(GetAppName()); } return fname; }