本文整理汇总了C++中texteditor::TabSettings::indentLine方法的典型用法代码示例。如果您正苦于以下问题:C++ TabSettings::indentLine方法的具体用法?C++ TabSettings::indentLine怎么用?C++ TabSettings::indentLine使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类texteditor::TabSettings
的用法示例。
在下文中一共展示了TabSettings::indentLine方法的7个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: indentBlock
void CMakeIndenter::indentBlock(QTextDocument *doc, const QTextBlock &block, const QChar &typedChar, const TextEditor::TabSettings &tabSettings)
{
Q_UNUSED(doc)
Q_UNUSED(typedChar)
QTextBlock previousBlock = block.previous();
// find the next previous block that is non-empty (contains non-whitespace characters)
while (previousBlock.isValid() && lineIsEmpty(previousBlock.text()))
previousBlock = previousBlock.previous();
if (previousBlock.isValid()) {
const QString previousLine = previousBlock.text();
const QString currentLine = block.text();
int indentation = tabSettings.indentationColumn(previousLine);
if (lineStartsBlock(previousLine))
indentation += tabSettings.m_indentSize;
if (lineEndsBlock(currentLine))
indentation = qMax(0, indentation - tabSettings.m_indentSize);
// increase/decrease/keep the indentation level depending on if we have more opening or closing parantheses
indentation = qMax(0, indentation + tabSettings.m_indentSize * paranthesesLevel(previousLine));
tabSettings.indentLine(block, indentation);
} else {
// First line in whole document
tabSettings.indentLine(block, 0);
}
}
示例2: indentBlock
void GLSLIndenter::indentBlock(QTextDocument *doc,
const QTextBlock &block,
const QChar &typedChar,
const TextEditor::TabSettings &tabSettings)
{
Q_UNUSED(doc)
// TODO: do something with it
CppTools::QtStyleCodeFormatter codeFormatter(tabSettings,
CppTools::CppToolsSettings::instance()->cppCodeStyle()->codeStyleSettings());
codeFormatter.updateStateUntil(block);
int indent;
int padding;
codeFormatter.indentFor(block, &indent, &padding);
// only reindent the current line when typing electric characters if the
// indent is the same it would be if the line were empty
if (isElectricCharacter(typedChar)) {
int newlineIndent;
int newlinePadding;
codeFormatter.indentForNewLineAfter(block.previous(), &newlineIndent, &newlinePadding);
if (tabSettings.indentationColumn(block.text()) != newlineIndent + newlinePadding)
return;
}
tabSettings.indentLine(block, indent + padding, padding);
}
示例3: indentBlock
void Indenter::indentBlock(const QTextBlock &block,
const QChar &,
const TextEditor::TabSettings &settings,
int)
{
int indent;
QTextBlock previous = block.previous();
// Previous line ends on comma, ignore everything and follow the indent
if (previous.text().endsWith(',')) {
indent = previous.text().indexOf(QRegularExpression("\\S")) / settings.m_indentSize;
} else {
// Use the stored indent plus some bizarre heuristics that even myself remember how it works.
indent = block.userState() >> 20;
if (indent < 0) {
while (indent == -1 && previous.isValid()) {
indent = previous.userState() >> 20;
previous = previous.previous();
}
}
if (didBlockStart(block) && indent > 0)
indent--;
}
settings.indentLine(block, indent * settings.m_indentSize);
}
示例4: indentBlock
/**
* @brief Indenter::indentBlock Indents one block (usually one line) of code
* @param block
* @param typedChar
* @param tabSettings An IDE tabulation settings
*
* Usually this method called once when you begin new line of code by pressing
* Enter. If Indenter reimplements indent() method, than indentBlock() may be
* called in other cases.
*/
void Indenter::indentBlock(QTextDocument */*doc*/,
const QTextBlock &block,
const QChar &/*typedChar*/,
const TextEditor::TabSettings &settings)
{
QTextBlock previousBlock = block.previous();
if (previousBlock.isValid()) {
QString previousLine = previousBlock.text();
int indentation = settings.indentationColumn(previousLine);
if (isElectricLine(previousLine)) {
indentation += TAB_SIZE;
}
parsePreviousLine(settings, previousLine, previousBlock, indentation);
settings.indentLine(block, indentation);
} else {
// First line in whole document
settings.indentLine(block, 0);
}
}
示例5: indentBlock
void GoIndenter::indentBlock(const QTextBlock &block,
const QChar &typedChar, const TextEditor::TabSettings &tabSettings, int cursorPositionInEditor)
{
GoCodeFormatter codeFormatter(tabSettings);
codeFormatter.updateStateUntil(block);
int indentation;
int padding;
codeFormatter.calcIndentation(block, &indentation, &padding);
if (isElectricCharacter(typedChar)) {
int defaultIndentation;
int defaultPadding;
codeFormatter.calcIndentation(block, &defaultIndentation, &defaultPadding, true);
}
tabSettings.indentLine(block, indentation + padding, padding);
}
示例6: indentBlock
void Indenter::indentBlock(QTextDocument *doc,
const QTextBlock &block,
const QChar &typedChar,
const TextEditor::TabSettings &tabSettings)
{
Q_UNUSED(doc)
QmlJSTools::QtStyleCodeFormatter codeFormatter(tabSettings);
codeFormatter.updateStateUntil(block);
const int depth = codeFormatter.indentFor(block);
if (isElectricCharacter(typedChar)) {
// only reindent the current line when typing electric characters if the
// indent is the same it would be if the line were empty
const int newlineIndent = codeFormatter.indentForNewLineAfter(block.previous());
if (tabSettings.indentationColumn(block.text()) != newlineIndent)
return;
}
tabSettings.indentLine(block, depth);
}
示例7: indentBlock
void JavaIndenter::indentBlock(QTextDocument *doc,
const QTextBlock &block,
const QChar &typedChar,
const TextEditor::TabSettings &tabSettings)
{
// At beginning: Leave as is.
if (block == doc->begin())
return;
const int tabsize = tabSettings.m_indentSize;
QTextBlock previous = block.previous();
QString previousText = previous.text();
while (previousText.trimmed().isEmpty()) {
previous = previous.previous();
if (previous == doc->begin())
return;
previousText = previous.text();
}
int adjust = 0;
if (previousText.contains(QLatin1Char('{')))
adjust = tabsize;
if (block.text().contains(QLatin1Char('}')) || typedChar == QLatin1Char('}'))
adjust += -tabsize;
// Count the indentation of the previous line.
int i = 0;
while (i < previousText.size()) {
if (!previousText.at(i).isSpace()) {
tabSettings.indentLine(block, tabSettings.columnAt(previousText, i)
+ adjust);
break;
}
++i;
}
}