qtdeclarative/src/qmlformat/qqmlformatoptions.cpp

92 lines
3.1 KiB
C++
Raw Normal View History

// Copyright (C) 2023 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
#include "qqmlformatoptions_p.h"
QQmlFormatOptions::QQmlFormatOptions()
{
setTabsEnabled(false);
setNormalizeEnabled(false);
setObjectsSpacing(false);
setFunctionsSpacing(false);
setIndentWidth(4);
}
QQmlFormatOptions::LineEndings QQmlFormatOptions::detectLineEndings(const QString &code)
{
const QQmlJS::Dom::LineWriterOptions::LineEndings defaultEndings =
#if defined(Q_OS_WIN)
LineEndings::Windows;
#else
LineEndings::Unix;
#endif
// find out current line endings...
int newlineIndex = code.indexOf(QChar(u'\n'));
int crIndex = code.indexOf(QChar(u'\r'));
if (newlineIndex >= 0) {
if (crIndex >= 0) {
if (crIndex + 1 == newlineIndex)
return LineEndings::Windows;
qWarning().noquote() << "Invalid line ending in file, using default";
return defaultEndings;
}
return LineEndings::Unix;
}
if (crIndex >= 0) {
return LineEndings::OldMacOs;
}
qWarning().noquote() << "Unknown line ending in file, using default";
return defaultEndings;
}
QQmlFormatOptionLineEndings QQmlFormatOptions::parseEndings(const QString &endings)
{
if (endings == u"unix")
return Unix;
if (endings == u"windows")
return Windows;
if (endings == u"macos")
return OldMacOs;
if (endings == u"native")
return Native;
qWarning().noquote() << "Unknown line ending type" << endings << ", using default";
#if defined(Q_OS_WIN)
return Windows;
#else
return Unix;
#endif
}
void QQmlFormatOptions::applySettings(const QQmlFormatSettings &settings)
{
// Allow for tab settings to be overwritten by the command line
if (!indentWidthSet()) {
if (settings.isSet(QQmlFormatSettings::s_indentWidthSetting))
setIndentWidth(settings.value(QQmlFormatSettings::s_indentWidthSetting).toInt());
if (settings.isSet(QQmlFormatSettings::s_useTabsSetting))
setTabsEnabled(settings.value(QQmlFormatSettings::s_useTabsSetting).toBool());
}
// if not set by command line, allow for max column width to be set by settings
if (m_options.maxLineLength == -1) {
if (settings.isSet(QQmlFormatSettings::s_maxColumnWidthSetting))
setMaxColumnWidth(settings.value(QQmlFormatSettings::s_maxColumnWidthSetting).toInt());
}
if (settings.isSet(QQmlFormatSettings::s_normalizeSetting))
setNormalizeEnabled(settings.value(QQmlFormatSettings::s_normalizeSetting).toBool());
if (settings.isSet(QQmlFormatSettings::s_newlineSetting))
setNewline(QQmlFormatOptions::parseEndings(
settings.value(QQmlFormatSettings::s_newlineSetting).toString()));
if (settings.isSet(QQmlFormatSettings::s_objectsSpacingSetting))
setObjectsSpacing(settings.value(QQmlFormatSettings::s_objectsSpacingSetting).toBool());
if (settings.isSet(QQmlFormatSettings::s_functionsSpacingSetting))
setFunctionsSpacing(settings.value(QQmlFormatSettings::s_functionsSpacingSetting).toBool());
}