| 51 | } |
| 52 | |
| 53 | void EditorConfigAppDecorator::doEditorConfig(ScintillaNext *editor) |
| 54 | { |
| 55 | if (this->isEnabled()) { |
| 56 | if (editor->isFile()) { |
| 57 | EditorConfigSettings settings = EditorConfig::getFileSettings(editor->getFilePath()); |
| 58 | |
| 59 | qDebug() << "EditorConfig settings for:" << editor->getFilePath(); |
| 60 | for(auto &setting : settings.toStdMap()) { |
| 61 | qDebug() << setting.first << "=" << setting.second; |
| 62 | } |
| 63 | |
| 64 | if (settings.contains(QStringLiteral("indent_style"))) { |
| 65 | if (settings[QStringLiteral("indent_style")] == QStringLiteral("tab")) editor->setUseTabs(true); |
| 66 | else if (settings[QStringLiteral("indent_style")] == QStringLiteral("space")) editor->setUseTabs(false); |
| 67 | |
| 68 | // Set a flag so that the tab/spaces won't get overridden |
| 69 | editor->QObject::setProperty("nn_skip_usetabs", "EditorConfig"); |
| 70 | } |
| 71 | |
| 72 | if (settings.contains(QStringLiteral("indent_size")) && settings[QStringLiteral("indent_size")].toInt() > 0) { |
| 73 | editor->setIndent(settings[QStringLiteral("indent_size")].toInt()); |
| 74 | } |
| 75 | |
| 76 | if (settings.contains(QStringLiteral("tab_width")) && settings[QStringLiteral("tab_width")].toInt() > 0) { |
| 77 | editor->setTabWidth(settings[QStringLiteral("tab_width")].toInt()); |
| 78 | |
| 79 | // Set a flag so that the tab width won't get overridden |
| 80 | editor->QObject::setProperty("nn_skip_tabwidth", "EditorConfig"); |
| 81 | } |
| 82 | |
| 83 | if (settings.contains(QStringLiteral("end_of_line"))) { |
| 84 | if (settings[QStringLiteral("end_of_line")] == QStringLiteral("lf")) editor->setEOLMode(SC_EOL_LF); |
| 85 | else if (settings[QStringLiteral("end_of_line")] == QStringLiteral("cr")) editor->setEOLMode(SC_EOL_CR); |
| 86 | else if (settings[QStringLiteral("end_of_line")] == QStringLiteral("crlf")) editor->setEOLMode(SC_EOL_CRLF); |
| 87 | } |
| 88 | |
| 89 | if (settings.contains(QStringLiteral("trim_trailing_whitespace"))) { |
| 90 | if (settings[QStringLiteral("trim_trailing_whitespace")] == QStringLiteral("true")) { |
| 91 | connect(editor, &ScintillaNext::aboutToSave, this, &EditorConfigAppDecorator::trimTrailingWhitespace); |
| 92 | } |
| 93 | } |
| 94 | |
| 95 | if (settings.contains(QStringLiteral("insert_final_newline"))) { |
| 96 | if (settings[QStringLiteral("insert_final_newline")] == QStringLiteral("true")) { |
| 97 | connect(editor, &ScintillaNext::aboutToSave, this, &EditorConfigAppDecorator::ensureFinalNewline); |
| 98 | } |
| 99 | else if (settings[QStringLiteral("insert_final_newline")] == QStringLiteral("false")) { |
| 100 | connect(editor, &ScintillaNext::aboutToSave, this, &EditorConfigAppDecorator::ensureNoFinalNewline); |
| 101 | } |
| 102 | } |
| 103 | } |
| 104 | } |
| 105 | } |
| 106 | |
| 107 | void EditorConfigAppDecorator::trimTrailingWhitespace() |
| 108 | { |
nothing calls this directly
no test coverage detected