aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/plugins/texteditor/autocompleter.cpp6
-rw-r--r--src/plugins/texteditor/autocompleter.h4
-rw-r--r--src/plugins/texteditor/completionsettings.cpp5
-rw-r--r--src/plugins/texteditor/completionsettings.h1
-rw-r--r--src/plugins/texteditor/completionsettingspage.cpp2
-rw-r--r--src/plugins/texteditor/completionsettingspage.ui12
-rw-r--r--src/plugins/texteditor/texteditor.cpp1
7 files changed, 29 insertions, 2 deletions
diff --git a/src/plugins/texteditor/autocompleter.cpp b/src/plugins/texteditor/autocompleter.cpp
index 8517c5c03d1..ea507256399 100644
--- a/src/plugins/texteditor/autocompleter.cpp
+++ b/src/plugins/texteditor/autocompleter.cpp
@@ -37,7 +37,8 @@ AutoCompleter::AutoCompleter() :
m_autoInsertBrackets(true),
m_surroundWithBrackets(true),
m_autoInsertQuotes(true),
- m_surroundWithQuotes(true)
+ m_surroundWithQuotes(true),
+ m_overwriteClosingChars(false)
{}
AutoCompleter::~AutoCompleter() = default;
@@ -191,6 +192,9 @@ QString AutoCompleter::autoComplete(QTextCursor &cursor, const QString &textToIn
QTextDocument *doc = cursor.document();
const QChar lookAhead = doc->characterAt(cursor.selectionEnd());
+ if (m_overwriteClosingChars && (textToInsert == lookAhead))
+ skipChars = true;
+
int skippedChars = 0;
if (isQuote(textToInsert) && m_autoInsertQuotes
diff --git a/src/plugins/texteditor/autocompleter.h b/src/plugins/texteditor/autocompleter.h
index 4847f504762..128d875e0f9 100644
--- a/src/plugins/texteditor/autocompleter.h
+++ b/src/plugins/texteditor/autocompleter.h
@@ -53,6 +53,9 @@ public:
void setSurroundWithQuotesEnabled(bool b) { m_surroundWithQuotes = b; }
bool isSurroundWithQuotesEnabled() const { return m_surroundWithQuotes; }
+ void setOverwriteClosingCharsEnabled(bool b) { m_overwriteClosingChars = b; }
+ bool isOverwriteClosingCharsEnabled() const { return m_overwriteClosingChars; }
+
void setTabSettings(const TabSettings &tabSettings) { m_tabSettings = tabSettings; }
const TabSettings &tabSettings() const { return m_tabSettings; }
@@ -103,6 +106,7 @@ private:
bool m_surroundWithBrackets;
bool m_autoInsertQuotes;
bool m_surroundWithQuotes;
+ bool m_overwriteClosingChars;
};
} // TextEditor
diff --git a/src/plugins/texteditor/completionsettings.cpp b/src/plugins/texteditor/completionsettings.cpp
index 61c9f203a87..aca84ef1046 100644
--- a/src/plugins/texteditor/completionsettings.cpp
+++ b/src/plugins/texteditor/completionsettings.cpp
@@ -42,6 +42,7 @@ static const char animateAutoCompleteKey[] = "AnimateAutoComplete";
static const char highlightAutoCompleteKey[] = "HighlightAutoComplete";
static const char skipAutoCompleteKey[] = "SkipAutoComplete";
static const char autoRemoveKey[] = "AutoRemove";
+static const char overwriteClosingCharsKey[] = "OverwriteClosingChars";
using namespace TextEditor;
@@ -62,6 +63,7 @@ void CompletionSettings::toSettings(QSettings *s) const
s->setValue(highlightAutoCompleteKey, m_highlightAutoComplete);
s->setValue(skipAutoCompleteKey, m_skipAutoCompletedText);
s->setValue(autoRemoveKey, m_autoRemove);
+ s->setValue(overwriteClosingCharsKey, m_overwriteClosingChars);
s->endGroup();
}
@@ -98,6 +100,8 @@ void CompletionSettings::fromSettings(QSettings *s)
s->value(skipAutoCompleteKey, m_skipAutoCompletedText).toBool();
m_autoRemove =
s->value(autoRemoveKey, m_autoRemove).toBool();
+ m_overwriteClosingChars =
+ s->value(overwriteClosingCharsKey, m_overwriteClosingChars).toBool();
s->endGroup();
}
@@ -117,5 +121,6 @@ bool CompletionSettings::equals(const CompletionSettings &cs) const
&& m_highlightAutoComplete == cs.m_highlightAutoComplete
&& m_skipAutoCompletedText == cs.m_skipAutoCompletedText
&& m_autoRemove == cs.m_autoRemove
+ && m_overwriteClosingChars == cs.m_overwriteClosingChars
;
}
diff --git a/src/plugins/texteditor/completionsettings.h b/src/plugins/texteditor/completionsettings.h
index 9fa75e6152f..c670c05443f 100644
--- a/src/plugins/texteditor/completionsettings.h
+++ b/src/plugins/texteditor/completionsettings.h
@@ -70,6 +70,7 @@ public:
bool m_highlightAutoComplete = true;
bool m_skipAutoCompletedText = true;
bool m_autoRemove = true;
+ bool m_overwriteClosingChars = false;
};
inline bool operator==(const CompletionSettings &t1, const CompletionSettings &t2) { return t1.equals(t2); }
diff --git a/src/plugins/texteditor/completionsettingspage.cpp b/src/plugins/texteditor/completionsettingspage.cpp
index 8a9a82740c3..b9cff7f661a 100644
--- a/src/plugins/texteditor/completionsettingspage.cpp
+++ b/src/plugins/texteditor/completionsettingspage.cpp
@@ -102,6 +102,7 @@ QWidget *CompletionSettingsPage::widget()
m_page->spaceAfterFunctionName->setChecked(m_completionSettings.m_spaceAfterFunctionName);
m_page->autoSplitStrings->setChecked(m_completionSettings.m_autoSplitStrings);
m_page->animateAutoComplete->setChecked(m_completionSettings.m_animateAutoComplete);
+ m_page->overwriteClosingChars->setChecked(m_completionSettings.m_overwriteClosingChars);
m_page->highlightAutoComplete->setChecked(m_completionSettings.m_highlightAutoComplete);
m_page->skipAutoComplete->setChecked(m_completionSettings.m_skipAutoCompletedText);
m_page->removeAutoComplete->setChecked(m_completionSettings.m_autoRemove);
@@ -181,6 +182,7 @@ void CompletionSettingsPage::settingsFromUi(CompletionSettings &completion, Comm
completion.m_spaceAfterFunctionName = m_page->spaceAfterFunctionName->isChecked();
completion.m_autoSplitStrings = m_page->autoSplitStrings->isChecked();
completion.m_animateAutoComplete = m_page->animateAutoComplete->isChecked();
+ completion.m_overwriteClosingChars = m_page->overwriteClosingChars->isChecked();
completion.m_highlightAutoComplete = m_page->highlightAutoComplete->isChecked();
completion.m_skipAutoCompletedText = m_page->skipAutoComplete->isChecked();
completion.m_autoRemove = m_page->removeAutoComplete->isChecked();
diff --git a/src/plugins/texteditor/completionsettingspage.ui b/src/plugins/texteditor/completionsettingspage.ui
index ce3ba046be3..59e60cb70ee 100644
--- a/src/plugins/texteditor/completionsettingspage.ui
+++ b/src/plugins/texteditor/completionsettingspage.ui
@@ -7,7 +7,7 @@
<x>0</x>
<y>0</y>
<width>551</width>
- <height>493</height>
+ <height>507</height>
</rect>
</property>
<layout class="QVBoxLayout" name="verticalLayout_2">
@@ -303,6 +303,16 @@ In addition, Shift+Enter inserts an escape character at the cursor position and
</item>
</layout>
</item>
+ <item row="3" column="1">
+ <widget class="QCheckBox" name="overwriteClosingChars">
+ <property name="toolTip">
+ <string>Automatically overwrite closing parentheses and quotes.</string>
+ </property>
+ <property name="text">
+ <string>Overwrite closing punctuation</string>
+ </property>
+ </widget>
+ </item>
</layout>
</widget>
</item>
diff --git a/src/plugins/texteditor/texteditor.cpp b/src/plugins/texteditor/texteditor.cpp
index 97970dbd6ee..197eb5ddcf1 100644
--- a/src/plugins/texteditor/texteditor.cpp
+++ b/src/plugins/texteditor/texteditor.cpp
@@ -7521,6 +7521,7 @@ void TextEditorWidget::setCompletionSettings(const CompletionSettings &completio
d->m_autoCompleter->setSurroundWithBracketsEnabled(completionSettings.m_surroundingAutoBrackets);
d->m_autoCompleter->setAutoInsertQuotesEnabled(completionSettings.m_autoInsertQuotes);
d->m_autoCompleter->setSurroundWithQuotesEnabled(completionSettings.m_surroundingAutoQuotes);
+ d->m_autoCompleter->setOverwriteClosingCharsEnabled(completionSettings.m_overwriteClosingChars);
d->m_animateAutoComplete = completionSettings.m_animateAutoComplete;
d->m_highlightAutoComplete = completionSettings.m_highlightAutoComplete;
d->m_skipAutoCompletedText = completionSettings.m_skipAutoCompletedText;