forked from qt-creator/qt-creator
Change-Id: I3c45c2b49e976da3609b3d8cb964b64f60a7e55b Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
69 lines
2.5 KiB
C++
69 lines
2.5 KiB
C++
// Copyright (C) 2019 The Qt Company Ltd.
|
|
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
|
|
|
|
#pragma once
|
|
|
|
#include <texteditor/indenter.h>
|
|
|
|
#include <QLoggingCategory>
|
|
|
|
namespace clang::format { struct FormatStyle; }
|
|
|
|
namespace ClangFormat {
|
|
|
|
Q_DECLARE_LOGGING_CATEGORY(clangIndenterLog)
|
|
|
|
class ClangFormatBaseIndenter : public TextEditor::Indenter
|
|
{
|
|
public:
|
|
ClangFormatBaseIndenter(QTextDocument *doc);
|
|
~ClangFormatBaseIndenter();
|
|
|
|
TextEditor::IndentationForBlock indentationForBlocks(const QVector<QTextBlock> &blocks,
|
|
const TextEditor::TabSettings &tabSettings,
|
|
int cursorPositionInEditor = -1) override;
|
|
void indent(const QTextCursor &cursor,
|
|
const QChar &typedChar,
|
|
const TextEditor::TabSettings &tabSettings,
|
|
int cursorPositionInEditor = -1) override;
|
|
|
|
void reindent(const QTextCursor &cursor,
|
|
const TextEditor::TabSettings &tabSettings,
|
|
int cursorPositionInEditor = -1) override;
|
|
|
|
void autoIndent(const QTextCursor &cursor,
|
|
const TextEditor::TabSettings &tabSettings,
|
|
int cursorPositionInEditor = -1) override;
|
|
Utils::EditOperations format(const TextEditor::RangesInLines &rangesInLines,
|
|
FormattingMode mode = FormattingMode::Forced) override;
|
|
|
|
void indentBlock(const QTextBlock &block,
|
|
const QChar &typedChar,
|
|
const TextEditor::TabSettings &tabSettings,
|
|
int cursorPositionInEditor = -1) override;
|
|
|
|
int indentFor(const QTextBlock &block,
|
|
const TextEditor::TabSettings &tabSettings,
|
|
int cursorPositionInEditor = -1) override;
|
|
|
|
bool isElectricCharacter(const QChar &ch) const override;
|
|
|
|
std::optional<int> margin() const override;
|
|
|
|
const clang::format::FormatStyle &styleForFile() const;
|
|
|
|
void setOverriddenPreferences(TextEditor::ICodeStylePreferences *preferences);
|
|
void setOverriddenStyle(const clang::format::FormatStyle &style);
|
|
|
|
protected:
|
|
virtual bool formatCodeInsteadOfIndent() const { return false; }
|
|
virtual bool formatWhileTyping() const { return false; }
|
|
virtual int lastSaveRevision() const { return 0; }
|
|
|
|
private:
|
|
friend class ClangFormatBaseIndenterPrivate;
|
|
class ClangFormatBaseIndenterPrivate *d = nullptr;
|
|
};
|
|
|
|
} // namespace ClangFormat
|