diff --git a/addon/dialog/dialog.js b/addon/dialog/dialog.js index 51fdc6443f99c565bb07769885e6accdd953fbc3..71e22874477f1b8df6cf64934aa639a633f973b9 100644 --- a/addon/dialog/dialog.js +++ b/addon/dialog/dialog.js @@ -25,7 +25,7 @@ var inp = dialog.getElementsByTagName("input")[0], button; if (inp) { CodeMirror.on(inp, "keydown", function(e) { - if (options && options.onKeyDown && options.onKeyDown(e, inp.value)) { return; } + if (options && options.onKeyDown && options.onKeyDown(e, inp.value, close)) { return; } if (e.keyCode == 13 || e.keyCode == 27) { CodeMirror.e_stop(e); close(); @@ -34,7 +34,7 @@ } }); if (options && options.onKeyUp) { - CodeMirror.on(inp, "keyup", function(e) {options.onKeyUp(e, inp.value);}); + CodeMirror.on(inp, "keyup", function(e) {options.onKeyUp(e, inp.value, close);}); } if (options && options.value) inp.value = options.value; inp.focus(); diff --git a/keymap/vim.js b/keymap/vim.js index 2f230db8e165ae6dc72b2fef19ccafe13cc47127..a04f4d3fef4bf04a3f80241f32f1bbba6b76988a 100644 --- a/keymap/vim.js +++ b/keymap/vim.js @@ -752,11 +752,16 @@ cm.scrollIntoView(originalPos); } } - function onPromptKeyDown(e, query) { - if (CodeMirror.keyName(e) == 'Esc') { + function onPromptKeyDown(e, query, close) { + var keyName = CodeMirror.keyName(e); + if (keyName == 'Esc' || keyName == 'Ctrl-C' || keyName == 'Ctrl-[') { updateSearchQuery(cm, originalQuery); clearSearchHighlight(cm); cm.scrollIntoView(originalPos); + + CodeMirror.e_stop(e); + close(); + cm.focus(); } } switch (command.searchArgs.querySrc) { @@ -799,14 +804,24 @@ function onPromptClose(input) { exCommandDispatcher.processCommand(cm, input); } + function onPromptKeyDown(e, input, close) { + var keyName = CodeMirror.keyName(e); + if (keyName == 'Esc' || keyName == 'Ctrl-C' || keyName == 'Ctrl-[') { + CodeMirror.e_stop(e); + close(); + cm.focus(); + } + } if (command.type == 'keyToEx') { // Handle user defined Ex to Ex mappings exCommandDispatcher.processCommand(cm, command.exArgs.input); } else { if (vim.visualMode) { - showPrompt(cm, { onClose: onPromptClose, prefix: ':', value: '\'<,\'>' }); + showPrompt(cm, { onClose: onPromptClose, prefix: ':', value: '\'<,\'>', + onKeyDown: onPromptKeyDown}); } else { - showPrompt(cm, { onClose: onPromptClose, prefix: ':' }); + showPrompt(cm, { onClose: onPromptClose, prefix: ':', + onKeyDown: onPromptKeyDown}); } } },