前稿で vi 使いが大好きな .(dot) コマンドを実装したが、以下の問題があった。
1: bool ViEngine::insModeKeyPressEvent(QKeyEvent *event)
2: {
3: .....
4: if( m_redoRecording ) {
5: const QString text = event->text();
6: if( !text.isEmpty() ) {
7: if( text[0] == 0x08 ) { // BackSpace
8: if( !m_insertedText.isEmpty() )
9: m_insertedText = m_insertedText.left(m_insertedText.length() - 1);
10: } else
11: m_insertedText += text[0];
12: }
13: }
14: return false;
15: }
1: bool ViEngine::insModeKeyPressEvent(QKeyEvent *event)
2: {
3: .....
4: if( m_redoRecording ) {
5: const QString text = event->text();
6: if( !text.isEmpty() ) {
7: if( text[0] == 0x08 ) { // BackSpace
8: if( !m_insertedText.isEmpty() )
9: m_insertedText = m_insertedText.left(m_insertedText.length() - 1);
10: } else if( text[0].unicode() < ' ' && text[0] != '\r' && text[0] != '\n' )
11: m_redoRecording = false;
12: else
13: m_insertedText += text[0];
14: } else if( m_redoRecording ) {
15: const int key = event->key();
16: if( key == Qt::Key_Left || key == Qt::Key_Right ||
17: key == Qt::Key_Up || key == Qt::Key_Down ||
18: key == Qt::Key_PageUp || key == Qt::Key_PageDown ||
19: key == Qt::Key_Home || key == Qt::Key_End )
20: {
21: m_redoRecording = false;
22: }
23: }
24: }
25: return false;
26: }