diff --git a/IPython/frontend/html/notebook/static/js/codecell.js b/IPython/frontend/html/notebook/static/js/codecell.js
index 4f6ef53..0ecf260 100644
--- a/IPython/frontend/html/notebook/static/js/codecell.js
+++ b/IPython/frontend/html/notebook/static/js/codecell.js
@@ -355,7 +355,14 @@ var IPython = (function (IPython) {
// Give focus to select, and make it filter the match as the user type
// by filtering the previous matches
typed_characters = "";
- select.keydown(function (event) {
+ var downandpress = function (event,press_or_down) {
+ if (press_or_down === 0){
+ press=true;
+ down=false;
+ } else if (press_or_down == 1){
+ press=false;
+ down=true;
+ }
var code = event.which;
if (code === 16) {
// nothing on Shift
@@ -370,13 +377,13 @@ var IPython = (function (IPython) {
// We don't want the document keydown handler to handle UP/DOWN,
// but we want the default action.
event.stopPropagation();
- } else if (code>64 && code <=122 || code==8){
+ } else if ((code>64 && code <=122)|| (code==8 && down)){
// issues with _-.. on chrome at least
- if(code != 8)
+ if(code != 8 && press)
{
- var newchar = String.fromCharCode(code).toLowerCase();
+ var newchar = String.fromCharCode(code);
typed_characters=typed_characters+newchar;
- } else {
+ } else if (code == 8) {
// 8 is backspace remove 1 char cancel if
// user have erase everything, otherwise
// decrease what we filter with
@@ -386,14 +393,20 @@ var IPython = (function (IPython) {
}
typed_characters=typed_characters.substr(0,typed_characters.length-1);
}
- re = new RegExp("^"+"\%?"+matched_text+typed_characters,"i");
+ re = new RegExp("^"+"\%?"+matched_text+typed_characters,"");
filterd= matches.filter(function(x){return re.test(x)});
complete_with(filterd,matched_text+typed_characters);
- } else {
+ } else if(down){ // abort only on press
// abort with what the user have pressed until now
console.log('aborting with keycode : '+code);
insert(matched_text+typed_characters);
}
+ }
+ select.keydown(function (event) {
+ downandpress(event,1)
+ });
+ select.keypress(function (event) {
+ downandpress(event,0)
});
// Double click also causes a pick.
// and bind the last actions.