diff --git a/src/plugins/texteditor/basetexteditor.cpp b/src/plugins/texteditor/basetexteditor.cpp index 46779c5f182..e2432f412c8 100644 --- a/src/plugins/texteditor/basetexteditor.cpp +++ b/src/plugins/texteditor/basetexteditor.cpp @@ -5128,6 +5128,36 @@ void BaseTextEditorWidget::deleteLine() textCursor().removeSelectedText(); } +void BaseTextEditorWidget::deleteEndOfWord() +{ + moveCursor(QTextCursor::EndOfWord, QTextCursor::KeepAnchor); + textCursor().removeSelectedText(); + setTextCursor(textCursor()); +} + +void BaseTextEditorWidget::deleteEndOfWordCamelCase() +{ + QTextCursor c = textCursor(); + camelCaseRight(c, QTextCursor::KeepAnchor); + c.removeSelectedText(); + setTextCursor(c); +} + +void BaseTextEditorWidget::deleteStartOfWord() +{ + moveCursor(QTextCursor::StartOfWord, QTextCursor::KeepAnchor); + textCursor().removeSelectedText(); + setTextCursor(textCursor()); +} + +void BaseTextEditorWidget::deleteStartOfWordCamelCase() +{ + QTextCursor c = textCursor(); + camelCaseLeft(c, QTextCursor::KeepAnchor); + c.removeSelectedText(); + setTextCursor(c); +} + void BaseTextEditorWidget::setExtraSelections(ExtraSelectionKind kind, const QList &selections) { if (selections.isEmpty() && d->m_extraSelections[kind].isEmpty()) diff --git a/src/plugins/texteditor/basetexteditor.h b/src/plugins/texteditor/basetexteditor.h index e840b1c53c0..aac2001c5e9 100644 --- a/src/plugins/texteditor/basetexteditor.h +++ b/src/plugins/texteditor/basetexteditor.h @@ -260,6 +260,10 @@ public slots: void cutLine(); void copyLine(); void deleteLine(); + void deleteEndOfWord(); + void deleteEndOfWordCamelCase(); + void deleteStartOfWord(); + void deleteStartOfWordCamelCase(); void unfoldAll(); void fold(); void unfold(); diff --git a/src/plugins/texteditor/texteditoractionhandler.cpp b/src/plugins/texteditor/texteditoractionhandler.cpp index e70b78e02ac..c686750f3c2 100644 --- a/src/plugins/texteditor/texteditoractionhandler.cpp +++ b/src/plugins/texteditor/texteditoractionhandler.cpp @@ -78,6 +78,10 @@ TextEditorActionHandler::TextEditorActionHandler(const char *context, m_cutLineAction(0), m_copyLineAction(0), m_deleteLineAction(0), + m_deleteEndOfWordAction(0), + m_deleteEndOfWordCamelCaseAction(0), + m_deleteStartOfWordAction(0), + m_deleteStartOfWordCamelCaseAction(0), m_selectEncodingAction(0), m_increaseFontSizeAction(0), m_decreaseFontSizeAction(0), @@ -221,6 +225,26 @@ void TextEditorActionHandler::createActions() command = am->registerAction(m_deleteLineAction, Constants::DELETE_LINE, m_contextId, true); connect(m_deleteLineAction, SIGNAL(triggered()), this, SLOT(deleteLine())); + m_deleteEndOfWordAction = new QAction(tr("Delete Word From The Cursor On"), this); + m_modifyingActions << m_deleteEndOfWordAction; + am->registerAction(m_deleteEndOfWordAction, Constants::DELETE_END_OF_WORD, m_contextId, true); + connect(m_deleteEndOfWordAction, SIGNAL(triggered()), this, SLOT(deleteEndOfWord())); + + m_deleteEndOfWordCamelCaseAction = new QAction(tr("Delete Word Camel Case From The Cursor On"), this); + m_modifyingActions << m_deleteEndOfWordCamelCaseAction; + am->registerAction(m_deleteEndOfWordCamelCaseAction, Constants::DELETE_END_OF_WORD_CAMEL_CASE, m_contextId, true); + connect(m_deleteEndOfWordCamelCaseAction, SIGNAL(triggered()), this, SLOT(deleteEndOfWordCamelCase())); + + m_deleteStartOfWordAction = new QAction(tr("Delete Word Up To The Cursor"), this); + m_modifyingActions << m_deleteStartOfWordAction; + am->registerAction(m_deleteStartOfWordAction, Constants::DELETE_START_OF_WORD, m_contextId, true); + connect(m_deleteStartOfWordAction, SIGNAL(triggered()), this, SLOT(deleteStartOfWord())); + + m_deleteStartOfWordCamelCaseAction = new QAction(tr("Delete Word Camel Case Up To The Cursor"), this); + m_modifyingActions << m_deleteStartOfWordCamelCaseAction; + am->registerAction(m_deleteStartOfWordCamelCaseAction, Constants::DELETE_START_OF_WORD_CAMEL_CASE, m_contextId, true); + connect(m_deleteStartOfWordCamelCaseAction, SIGNAL(triggered()), this, SLOT(deleteStartOfWordCamelCase())); + m_foldAction = new QAction(tr("Fold"), this); command = am->registerAction(m_foldAction, Constants::FOLD, m_contextId, true); command->setDefaultKeySequence(QKeySequence(tr("Ctrl+<"))); @@ -552,6 +576,10 @@ FUNCTION(unCommentSelection) FUNCTION(cutLine) FUNCTION(copyLine) FUNCTION(deleteLine) +FUNCTION(deleteEndOfWord) +FUNCTION(deleteEndOfWordCamelCase) +FUNCTION(deleteStartOfWord) +FUNCTION(deleteStartOfWordCamelCase) FUNCTION(unfoldAll) FUNCTION(fold) FUNCTION(unfold) diff --git a/src/plugins/texteditor/texteditoractionhandler.h b/src/plugins/texteditor/texteditoractionhandler.h index 96f7164159f..5ad702682da 100644 --- a/src/plugins/texteditor/texteditoractionhandler.h +++ b/src/plugins/texteditor/texteditoractionhandler.h @@ -112,6 +112,10 @@ private slots: void cutLine(); void copyLine(); void deleteLine(); + void deleteEndOfWord(); + void deleteEndOfWordCamelCase(); + void deleteStartOfWord(); + void deleteStartOfWordCamelCase(); void selectEncoding(); void increaseFontSize(); void decreaseFontSize(); @@ -176,6 +180,10 @@ private: QAction *m_cutLineAction; QAction *m_copyLineAction; QAction *m_deleteLineAction; + QAction *m_deleteEndOfWordAction; + QAction *m_deleteEndOfWordCamelCaseAction; + QAction *m_deleteStartOfWordAction; + QAction *m_deleteStartOfWordCamelCaseAction; QAction *m_selectEncodingAction; QAction *m_increaseFontSizeAction; QAction *m_decreaseFontSizeAction; diff --git a/src/plugins/texteditor/texteditorconstants.h b/src/plugins/texteditor/texteditorconstants.h index 9e1ed7911e0..ce79b6081b0 100644 --- a/src/plugins/texteditor/texteditorconstants.h +++ b/src/plugins/texteditor/texteditorconstants.h @@ -70,6 +70,10 @@ const char * const LOWERCASE_SELECTION = "TextEditor.LowercaseSelection"; const char * const CUT_LINE = "TextEditor.CutLine"; const char * const COPY_LINE = "TextEditor.CopyLine"; const char * const DELETE_LINE = "TextEditor.DeleteLine"; +const char * const DELETE_END_OF_WORD = "TextEditor.DeleteEndOfWord"; +const char * const DELETE_END_OF_WORD_CAMEL_CASE = "TextEditor.DeleteEndOfWordCamelCase"; +const char * const DELETE_START_OF_WORD = "TextEditor.DeleteStartOfWord"; +const char * const DELETE_START_OF_WORD_CAMEL_CASE = "TextEditor.DeleteStartOfWordCamelCase"; const char * const SELECT_ENCODING = "TextEditor.SelectEncoding"; const char * const REWRAP_PARAGRAPH = "TextEditor.RewrapParagraph"; const char * const GOTO_LINE_START = "TextEditor.GotoLineStart";