diff --git a/src/plugins/texteditor/basetexteditor.cpp b/src/plugins/texteditor/basetexteditor.cpp index 718e757803d7657698bed5d9f8db707c1a2ea1a4..b17a3c2a3dbde69a2cabe1a8bb57753fbbd04d1a 100644 --- a/src/plugins/texteditor/basetexteditor.cpp +++ b/src/plugins/texteditor/basetexteditor.cpp @@ -877,6 +877,40 @@ void BaseTextEditor::copyLineUpDown(bool up) setTextCursor(move); } +void BaseTextEditor::joinLineUp() +{ + joinLineUpDown(true); +} + +void BaseTextEditor::joinLineDown() +{ + joinLineUpDown(false); +} + +void BaseTextEditor::joinLineUpDown(bool up) +{ + QTextCursor move = textCursor(); + move.beginEditBlock(); + + if(up) + move.movePosition(QTextCursor::Up); + else + move.movePosition(QTextCursor::Down); + move.movePosition(QTextCursor::StartOfBlock); + move.movePosition(QTextCursor::EndOfBlock, QTextCursor::KeepAnchor); + QString cutLine = move.selectedText(); + move.movePosition(QTextCursor::Right, QTextCursor::KeepAnchor); + move.removeSelectedText(); + move.clearSelection(); + + if(!up) + move.movePosition(QTextCursor::Up); + move.movePosition(QTextCursor::EndOfBlock); + move.insertText(cutLine); + move.endEditBlock(); + setTextCursor(move); +} + void BaseTextEditor::moveLineUp() { moveLineUpDown(true); diff --git a/src/plugins/texteditor/basetexteditor.h b/src/plugins/texteditor/basetexteditor.h index 21c5bc803ae31d4f14a06ca5c3f57dd328178df5..fb295209149532b82c516dd701717c94d8a38eb1 100644 --- a/src/plugins/texteditor/basetexteditor.h +++ b/src/plugins/texteditor/basetexteditor.h @@ -412,6 +412,9 @@ public slots: void copyLineUp(); void copyLineDown(); + void joinLineUp(); + void joinLineDown(); + void cleanWhitespace(); signals: @@ -620,6 +623,7 @@ private: void handleBackspaceKey(); void moveLineUpDown(bool up); void copyLineUpDown(bool up); + void joinLineUpDown(bool up); void saveCurrentCursorPositionForNavigation(); void updateCurrentLineHighlight(); diff --git a/src/plugins/texteditor/texteditoractionhandler.cpp b/src/plugins/texteditor/texteditoractionhandler.cpp index 90a6eb314c5999bd614412d767cfcf46b03674fe..374df106867e4f6cd65106d61c233ed26f87850a 100644 --- a/src/plugins/texteditor/texteditoractionhandler.cpp +++ b/src/plugins/texteditor/texteditoractionhandler.cpp @@ -86,6 +86,8 @@ TextEditorActionHandler::TextEditorActionHandler(const QString &context, m_moveLineDownAction(0), m_copyLineUpAction(0), m_copyLineDownAction(0), + m_joinLineUpAction(0), + m_joinLineDownAction(0), m_optionalActions(optionalActions), m_currentEditor(0), m_initialized(false) @@ -282,6 +284,16 @@ void TextEditorActionHandler::createActions() command = am->registerAction(m_copyLineDownAction, Constants::COPY_LINE_DOWN, m_contextId); command->setDefaultKeySequence(QKeySequence(tr("Ctrl+Alt+Down"))); connect(m_copyLineDownAction, SIGNAL(triggered()), this, SLOT(copyLineDown())); + + m_joinLineUpAction= new QAction(tr("Join Line Up"), this); + command = am->registerAction(m_joinLineUpAction, Constants::JOIN_LINE_UP, m_contextId); + command->setDefaultKeySequence(QKeySequence(tr("Ctrl+Shift+J"))); + connect(m_joinLineUpAction, SIGNAL(triggered()), this, SLOT(joinLineUp())); + + m_joinLineDownAction= new QAction(tr("Join Line Down"), this); + command = am->registerAction(m_joinLineDownAction, Constants::JOIN_LINE_DOWN, m_contextId); + command->setDefaultKeySequence(QKeySequence(tr("Ctrl+J"))); + connect(m_joinLineDownAction, SIGNAL(triggered()), this, SLOT(joinLineDown())); } bool TextEditorActionHandler::supportsAction(const QString & /*id */) const @@ -443,6 +455,8 @@ FUNCTION(moveLineUp) FUNCTION(moveLineDown) FUNCTION(copyLineUp) FUNCTION(copyLineDown) +FUNCTION(joinLineUp) +FUNCTION(joinLineDown) void TextEditorActionHandler::updateCurrentEditor(Core::IEditor *editor) { diff --git a/src/plugins/texteditor/texteditoractionhandler.h b/src/plugins/texteditor/texteditoractionhandler.h index 661932e98d24ead7105a633cd8de791ff5334c25..daa302754388fc67eb99c45b3f56ccd1d6b6e59b 100644 --- a/src/plugins/texteditor/texteditoractionhandler.h +++ b/src/plugins/texteditor/texteditoractionhandler.h @@ -115,6 +115,8 @@ private slots: void moveLineDown(); void copyLineUp(); void copyLineDown(); + void joinLineUp(); + void joinLineDown(); void updateCurrentEditor(Core::IEditor *editor); private: @@ -151,6 +153,8 @@ private: QAction *m_moveLineDownAction; QAction *m_copyLineUpAction; QAction *m_copyLineDownAction; + QAction *m_joinLineUpAction; + QAction *m_joinLineDownAction; uint m_optionalActions; QPointer<BaseTextEditor> m_currentEditor; diff --git a/src/plugins/texteditor/texteditorconstants.h b/src/plugins/texteditor/texteditorconstants.h index d21b4f8c2e1a8fd24e269ae069314b8a65b0b1bd..0c75f95ec976cd3fe83aec81c6aab93c51243c27 100644 --- a/src/plugins/texteditor/texteditorconstants.h +++ b/src/plugins/texteditor/texteditorconstants.h @@ -60,6 +60,8 @@ const char * const MOVE_LINE_UP = "TextEditor.MoveLineUp"; const char * const MOVE_LINE_DOWN = "TextEditor.MoveLineDown"; const char * const COPY_LINE_UP = "TextEditor.CopyLineUp"; const char * const COPY_LINE_DOWN = "TextEditor.CopyLineDown"; +const char * const JOIN_LINE_UP = "TextEditor.JoinLineUp"; +const char * const JOIN_LINE_DOWN = "TextEditor.JoinLineDown"; const char * const CUT_LINE = "TextEditor.CutLine"; const char * const DELETE_LINE = "TextEditor.DeleteLine"; const char * const DELETE_WORD = "TextEditor.DeleteWord";