- }
-
- 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);
+
+ default:
+ ;
+ }
+
+ if (_emacsMode) {
+ if (event->modifiers() & Qt::ControlModifier) {
+ switch (event->key()) {
+ // move
+ case Qt::Key_A:
+ moveCursor(QTextCursor::StartOfLine);
+ return;
+ case Qt::Key_E:
+ moveCursor(QTextCursor::EndOfLine);
+ return;
+ case Qt::Key_F:
+ moveCursor(QTextCursor::Right);
+ return;
+ case Qt::Key_B:
+ moveCursor(QTextCursor::Left);
+ return;
+
+ // modify
+ case Qt::Key_Y:
+ paste();
+ return;
+ case Qt::Key_K:
+ moveCursor(QTextCursor::EndOfLine, QTextCursor::KeepAnchor);
+ cut();
+ return;
+
+ default:
+ break;
+ }
+ }
+ else if (event->modifiers() & Qt::MetaModifier || event->modifiers() & Qt::AltModifier) {
+ switch (event->key()) {
+ case Qt::Key_Right:
+ moveCursor(QTextCursor::WordRight);
+ return;
+ case Qt::Key_Left:
+ moveCursor(QTextCursor::WordLeft);
+ return;
+ case Qt::Key_F:
+ moveCursor(QTextCursor::WordRight);
+ return;
+ case Qt::Key_B:
+ moveCursor(QTextCursor::WordLeft);
+ return;
+ case Qt::Key_Less:
+ moveCursor(QTextCursor::Start);
+ return;
+ case Qt::Key_Greater:
+ moveCursor(QTextCursor::End);
+ return;
+
+ // modify
+ case Qt::Key_D:
+ moveCursor(QTextCursor::WordRight, QTextCursor::KeepAnchor);
+ cut();
+ return;
+
+ case Qt::Key_U: // uppercase word
+ moveCursor(QTextCursor::WordRight, QTextCursor::KeepAnchor);
+ textCursor().insertText(textCursor().selectedText().toUpper());
+ return;
+
+ case Qt::Key_L: // lowercase word
+ moveCursor(QTextCursor::WordRight, QTextCursor::KeepAnchor);
+ textCursor().insertText(textCursor().selectedText().toLower());
+ return;
+
+ case Qt::Key_C: { // capitalize word
+ moveCursor(QTextCursor::WordRight, QTextCursor::KeepAnchor);
+ QString const text = textCursor().selectedText();
+ 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;
+ }
+
+ default:
+ break;
+ }