XVimProject / XVim

Xcode plugin for Vim keybindings
MIT License
5.16k stars 595 forks source link

Second input [a] has error #679

Open gonefish opened 9 years ago

gonefish commented 9 years ago

Reproduce step:

  1. Into insert mode
  2. Select other text use mouse
  3. Command + C
  4. Move cursor to other text
  5. press a

Log:

[Debug][17:48:07] -[XVimWindow handleOneXVimString:] 194: a [Debug][17:48:07] -[XVimWindow dumpEvaluatorStack:] 99: Evaluator0:XVimNormalEvaluator argStr: yankReg:(null) [Trace][17:48:07] -[XVimEvaluator eval:] 95: Calling SELECTOR a [Error][17:48:07] -[DVTSourceTextViewHook keyDown:] 203: Exception NSInternalInconsistencyException: self.cursorMode shoud be CURSOR_MODE_COMMAND [Trace][17:48:07] +[Logger logStackTrace:] 162: 0 CoreFoundation 0x00007fff8c8a464c __exceptionPreprocess + 172 [Trace][17:48:07] +[Logger logStackTrace:] 162: 1 DVTFoundation 0x00000001065c2274 DVTFailureHintExceptionPreprocessor + 194 [Trace][17:48:07] +[Logger logStackTrace:] 162: 2 libobjc.A.dylib 0x00007fff8dd2f6de objc_exception_throw + 43 [Trace][17:48:07] +[Logger logStackTrace:] 162: 3 CoreFoundation 0x00007fff8c8a442a +[NSException raise:format:arguments:] + 106 [Trace][17:48:07] +[Logger logStackTrace:] 162: 4 Foundation 0x00007fff8dffb5b9 -[NSAssertionHandler handleFailureInMethod:object:file:lineNumber:description:] + 195 [Trace][17:48:07] +[Logger logStackTrace:] 162: 5 XVim 0x00000001161cb494 -[NSTextView(VimOperation) xvim_insert:blockColumn:blockLines:] + 1652 [Trace][17:48:07] +[Logger logStackTrace:] 162: 6 XVim 0x0000000116162816 -[XVimInsertEvaluator becameHandler] + 150 [Trace][17:48:07] +[Logger logStackTrace:] 162: 7 XVim 0x000000011618d43d -[XVimWindow handleKeyStroke:onStack:] + 1149 [Trace][17:48:07] +[Logger logStackTrace:] 162: 8 XVim 0x000000011618c7fd -[XVimWindow handleOneXVimString:] + 765 [Trace][17:48:07] +[Logger logStackTrace:] 162: 9 XVim 0x000000011618cbc5 -[XVimWindow handleXVimString:] + 389 [Trace][17:48:07] +[Logger logStackTrace:] 162: 10 XVim 0x000000011618c4f1 -[XVimWindow handleKeyEvent:] + 417 [Trace][17:48:07] +[Logger logStackTrace:] 162: 11 XVim 0x00000001161703d7 -[DVTSourceTextViewHook keyDown:] + 375 [Trace][17:48:07] +[Logger logStackTrace:] 162: 12 AppKit 0x00007fff8bdd09f6 -[NSWindow _reallySendEvent:] + 3266 [Trace][17:48:07] +[Logger logStackTrace:] 162: 13 AppKit 0x00007fff8b85d50c -[NSWindow sendEvent:] + 368 [Trace][17:48:07] +[Logger logStackTrace:] 162: 14 IDEKit 0x000000010781c90b -[IDEWorkspaceWindow sendEvent:] + 159 [Trace][17:48:07] +[Logger logStackTrace:] 162: 15 AppKit 0x00007fff8b80f811 -[NSApplication sendEvent:] + 4153 [Trace][17:48:07] +[Logger logStackTrace:] 162: 16 IDEKit 0x00000001075c5ab4 -[IDEApplication sendEvent:] + 924 [Trace][17:48:07] +[Logger logStackTrace:] 162: 17 AppKit 0x00007fff8b69be98 -[NSApplication run] + 711 [Trace][17:48:07] +[Logger logStackTrace:] 162: 18 AppKit 0x00007fff8b6872d4 NSApplicationMain + 1832 [Trace][17:48:07] +[Logger logStackTrace:] 162: 19 libdyld.dylib 0x00007fff966c95c9 start + 1

Want to back this issue? Post a bounty on it! We accept bounties via Bountysource.

pebble8888 commented 9 years ago

I confirmed the behavior arise at both master branch and develop branch. In the gvim `--(insert) VISUAL --' is showed in the status line after step 2.

squarefrog commented 8 years ago

This is actually caused by an assert in NSTextView+VimOperation.m:

        case XVIM_INSERT_APPEND:
            NSAssert(self.cursorMode == CURSOR_MODE_COMMAND, @"self.cursorMode shoud be CURSOR_MODE_COMMAND");
            if (![ts isEOF:pos] && ![ts isNewline:pos]){
                self.insertionPoint = pos + 1;
            }
            break;

If you comment out the assert, and try the behaviour again, nothing untoward happens. Git blame suggests this line was added in 2013, is it still relevant?