diff --git a/IPython/frontend/html/notebook/static/js/completer.js b/IPython/frontend/html/notebook/static/js/completer.js
index a51c8b079c9..1e2a2874fa9 100644
--- a/IPython/frontend/html/notebook/static/js/completer.js
+++ b/IPython/frontend/html/notebook/static/js/completer.js
@@ -8,6 +8,12 @@ var IPython = (function (IPython) {
// easyier key mapping
var key = IPython.utils.keycodes;
+ function prepend_n_prc(str, n) {
+ for( var i =0 ; i< n ; i++)
+ { str = '%'+str }
+ return str;
+ }
+
function _existing_completion(item, completion_array){
for( var c in completion_array ) {
if(completion_array[c].substr(-item.length) == item)
@@ -17,14 +23,26 @@ var IPython = (function (IPython) {
}
// what is the common start of all completions
- function shared_start(B) {
+ function shared_start(B, drop_prct) {
if (B.length == 1) {
return B[0];
}
var A = new Array();
+ var common;
+ var min_lead_prct = 10;
for (var i = 0; i < B.length; i++) {
- A.push(B[i].str);
+ var str = B[i].str;
+ var localmin = 0;
+ if(drop_prct == true){
+ while ( str.substr(0, 1) == '%') {
+ localmin = localmin+1;
+ str = str.substring(1);
+ }
+ }
+ min_lead_prct = Math.min(min_lead_prct, localmin);
+ A.push(str);
}
+
if (A.length > 1) {
var tem1, tem2, s;
A = A.slice(0).sort();
@@ -35,10 +53,10 @@ var IPython = (function (IPython) {
tem1 = tem1.substring(0, --s);
}
if (tem1 == "" || tem2.indexOf(tem1) != 0) {
- return null;
+ return prepend_n_prc('', min_lead_prct);
}
return {
- str: tem1,
+ str: prepend_n_prc(tem1, min_lead_prct),
type: "computed",
from: B[0].from,
to: B[0].to
@@ -257,7 +275,7 @@ var IPython = (function (IPython) {
//Check that shared start is not null which can append with prefixed completion
// like %pylab , pylab have no shred start, and ff will result in py
// to erase py
- var sh = shared_start(this.raw_result);
+ var sh = shared_start(this.raw_result, true);
if (sh) {
this.insert(sh);
}