emacs bindings: added M-t (transpose words)
authorRĂ¼diger Sonderfeld <ruediger@c-plusplus.de>
Tue, 9 Mar 2010 19:57:46 +0000 (20:57 +0100)
committerManuel Nickschas <sputnick@quassel-irc.org>
Sat, 1 May 2010 16:36:46 +0000 (18:36 +0200)
src/uisupport/multilineedit.cpp

index 114c613..aeaecd5 100644 (file)
@@ -394,6 +394,26 @@ void MultiLineEdit::keyPressEvent(QKeyEvent *event) {
         textCursor().insertText(text.left(1).toUpper() + text.mid(1).toLower());
         return;
       }
+
+      case Qt::Key_T: { // transpose words
+        moveCursor(QTextCursor::StartOfWord);
+        moveCursor(QTextCursor::EndOfWord, QTextCursor::KeepAnchor);
+        QString const word1 = textCursor().selectedText();
+        textCursor().clearSelection();
+        moveCursor(QTextCursor::WordRight);
+        moveCursor(QTextCursor::EndOfWord, QTextCursor::KeepAnchor);
+        QString const word2 = textCursor().selectedText();
+        if(!word2.isEmpty() && !word1.isEmpty()) {
+          textCursor().insertText(word1);
+          moveCursor(QTextCursor::WordLeft);
+          moveCursor(QTextCursor::WordLeft);
+          moveCursor(QTextCursor::EndOfWord, QTextCursor::KeepAnchor);
+          textCursor().insertText(word2);
+          moveCursor(QTextCursor::WordRight);
+          moveCursor(QTextCursor::EndOfWord);
+        }
+        return;
+      }
       }
     }
   }