Qt
Internal/Contributor docs for the Qt SDK. Note: These are NOT official API docs; those are found at https://doc.qt.io/
Loading...
Searching...
No Matches
qqmlformatoptions.cpp
Go to the documentation of this file.
1// Copyright (C) 2023 The Qt Company Ltd.
2// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
3
5
6QQmlFormatOptions::QQmlFormatOptions()
7{
8 m_options.updateOptions = QQmlJS::Dom::LineWriterOptions::Update::None;
9
10 setTabsEnabled(false);
11 setNormalizeEnabled(false);
12 setObjectsSpacing(false);
13 setFunctionsSpacing(false);
14 setIndentWidth(4);
15}
16
17QQmlFormatOptions::LineEndings QQmlFormatOptions::detectLineEndings(const QString &code)
18{
19 const QQmlJS::Dom::LineWriterOptions::LineEndings defaultEndings =
20#if defined(Q_OS_WIN)
21 LineEndings::Windows;
22#else
23 LineEndings::Unix;
24#endif
25 // find out current line endings...
26 int newlineIndex = code.indexOf(QChar(u'\n'));
27 int crIndex = code.indexOf(QChar(u'\r'));
28 if (newlineIndex >= 0) {
29 if (crIndex >= 0) {
30 if (crIndex + 1 == newlineIndex)
31 return LineEndings::Windows;
32
33 qWarning().noquote() << "Invalid line ending in file, using default";
34 return defaultEndings;
35 }
36 return LineEndings::Unix;
37 }
38 if (crIndex >= 0) {
39 return LineEndings::OldMacOs;
40 }
41
42 qWarning().noquote() << "Unknown line ending in file, using default";
43 return defaultEndings;
44}
45
46QQmlFormatOptionLineEndings QQmlFormatOptions::parseEndings(const QString &endings)
47{
48 if (endings == u"unix")
49 return Unix;
50 if (endings == u"windows")
51 return Windows;
52 if (endings == u"macos")
53 return OldMacOs;
54 if (endings == u"native")
55 return Native;
56
57 qWarning().noquote() << "Unknown line ending type" << endings << ", using default";
58#if defined(Q_OS_WIN)
59 return Windows;
60#else
61 return Unix;
62#endif
63}
64
65void QQmlFormatOptions::applySettings(const QQmlFormatSettings &settings)
66{
67 // Allow for tab settings to be overwritten by the command line
68 if (!indentWidthSet()) {
69 if (settings.isSet(QQmlFormatSettings::s_indentWidthSetting))
70 setIndentWidth(settings.value(QQmlFormatSettings::s_indentWidthSetting).toInt());
71 if (settings.isSet(QQmlFormatSettings::s_useTabsSetting))
72 setTabsEnabled(settings.value(QQmlFormatSettings::s_useTabsSetting).toBool());
73 }
74
75 if (settings.isSet(QQmlFormatSettings::s_normalizeSetting))
76 setNormalizeEnabled(settings.value(QQmlFormatSettings::s_normalizeSetting).toBool());
77
78 if (settings.isSet(QQmlFormatSettings::s_newlineSetting))
79 setNewline(QQmlFormatOptions::parseEndings(
80 settings.value(QQmlFormatSettings::s_newlineSetting).toString()));
81
82 if (settings.isSet(QQmlFormatSettings::s_objectsSpacingSetting))
83 setObjectsSpacing(settings.value(QQmlFormatSettings::s_objectsSpacingSetting).toBool());
84
85 if (settings.isSet(QQmlFormatSettings::s_functionsSpacingSetting))
86 setFunctionsSpacing(settings.value(QQmlFormatSettings::s_functionsSpacingSetting).toBool());
87}
void setTabsEnabled(bool tabs)
void setNormalizeEnabled(bool normalize)
void applySettings(const QQmlFormatSettings &settings)
void setFunctionsSpacing(bool spacing)
void setIndentWidth(int width)
void setObjectsSpacing(bool spacing)
QQmlFormatOptionLineEndings