diff --git a/IPython/frontend/html/notebook/static/js/codecell.js b/IPython/frontend/html/notebook/static/js/codecell.js
index 0ecf260..4513bbf 100644
--- a/IPython/frontend/html/notebook/static/js/codecell.js
+++ b/IPython/frontend/html/notebook/static/js/codecell.js
@@ -248,6 +248,20 @@ var IPython = (function (IPython) {
}
// end sort kwargs
+ function sharedStart(A){
+ if(A.length > 1 ){
+ var tem1, tem2, s, A= A.slice(0).sort();
+ tem1= A[0];
+ s= tem1.length;
+ tem2= A.pop();
+ while(s && tem2.indexOf(tem1)== -1){
+ tem1= tem1.substring(0, --s);
+ }
+ return tem1;
+ }
+ return "";
+ }
+
if (!this.is_completing || matches.length === 0) {return;}
//try to check if the user is typing tab at least twice after a word
@@ -377,12 +391,19 @@ 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 && down)){
+ } else if ((code>64 && code <=122)|| (code==8 && down)||(code==9 && down)){
// issues with _-.. on chrome at least
if(code != 8 && press)
{
var newchar = String.fromCharCode(code);
typed_characters=typed_characters+newchar;
+ } else if (code == 9) {
+ fastForward = sharedStart(filterd)
+ ffsub = fastForward.substr(matched_text.length+typed_characters.length);
+ typed_characters=typed_characters+ffsub;
+ console.log("Fast forded by :"+ffsub);
+ event.stopPropagation();
+ event.preventDefault();
} else if (code == 8) {
// 8 is backspace remove 1 char cancel if
// user have erase everything, otherwise