forked from Botanical/BotanJS
Handle the tabwidth
This commit is contained in:
parent
bd35ed56b1
commit
9757dec7a0
@ -54,7 +54,7 @@
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
offset += line.cols + 1;
|
offset += line.toString().length + 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
line = line.next;
|
line = line.next;
|
||||||
@ -180,6 +180,8 @@
|
|||||||
this.moveX();
|
this.moveX();
|
||||||
this.updatePosition();
|
this.updatePosition();
|
||||||
|
|
||||||
|
feeder.softReset();
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -20,6 +20,7 @@
|
|||||||
this.br = false;
|
this.br = false;
|
||||||
this.placeholder = true;
|
this.placeholder = true;
|
||||||
this.lineNum = 0;
|
this.lineNum = 0;
|
||||||
|
this.tabWidth = 8;
|
||||||
|
|
||||||
if( nextLineBuffer )
|
if( nextLineBuffer )
|
||||||
{
|
{
|
||||||
@ -45,9 +46,10 @@
|
|||||||
var br = false;
|
var br = false;
|
||||||
|
|
||||||
var i = 0;
|
var i = 0;
|
||||||
|
var numTabs = 0;
|
||||||
if( wrap )
|
if( wrap )
|
||||||
{
|
{
|
||||||
for( ; i < this.cols; i ++ )
|
for( ; i < this.cols - numTabs * this.tabWidth; i ++ )
|
||||||
{
|
{
|
||||||
var c = content[i];
|
var c = content[i];
|
||||||
if( c === undefined ) break;
|
if( c === undefined ) break;
|
||||||
@ -58,6 +60,10 @@
|
|||||||
i ++;
|
i ++;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
else if( c == "\t" )
|
||||||
|
{
|
||||||
|
numTabs ++;
|
||||||
|
}
|
||||||
|
|
||||||
line += c;
|
line += c;
|
||||||
}
|
}
|
||||||
@ -75,8 +81,12 @@
|
|||||||
i ++;
|
i ++;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
else if( c == "\t" )
|
||||||
|
{
|
||||||
|
numTabs ++;
|
||||||
|
}
|
||||||
|
|
||||||
if( i < this.cols )
|
if( i < this.cols - numTabs * this.tabWidth )
|
||||||
{
|
{
|
||||||
line += c;
|
line += c;
|
||||||
}
|
}
|
||||||
|
@ -75,7 +75,8 @@
|
|||||||
{
|
{
|
||||||
var display = ( line == undefined ? "" : line ) + "";
|
var display = ( line == undefined ? "" : line ) + "";
|
||||||
|
|
||||||
var atSpace = false
|
var atSpace = false;
|
||||||
|
|
||||||
for( var i = 0;
|
for( var i = 0;
|
||||||
line && i < steps && ( line = line.next ) && placeholdCond( line );
|
line && i < steps && ( line = line.next ) && placeholdCond( line );
|
||||||
i ++ )
|
i ++ )
|
||||||
@ -93,6 +94,23 @@
|
|||||||
|
|
||||||
return display;
|
return display;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
this.__softRender = function()
|
||||||
|
{
|
||||||
|
var line = _self.lineBuffers[ _self.__rStart ];
|
||||||
|
var steps = _self.__rLength;
|
||||||
|
|
||||||
|
for( var i = 0;
|
||||||
|
line && i < steps && ( line = line.next ) && placeholdCond( line );
|
||||||
|
i ++ )
|
||||||
|
{
|
||||||
|
if( line.br && steps < ( i + line.visualLines.length ) )
|
||||||
|
{
|
||||||
|
_self.__clseLine = line;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
Feeder.prototype.render = function( start, length )
|
Feeder.prototype.render = function( start, length )
|
||||||
@ -107,7 +125,9 @@
|
|||||||
|
|
||||||
if( length == 0 ) return "";
|
if( length == 0 ) return "";
|
||||||
|
|
||||||
return this.__render( buffs[ start ], length - 1 );
|
this.__rStart = start;
|
||||||
|
this.__rLength = length - 1;
|
||||||
|
return this.__render( buffs[ start ], this.__rLength );
|
||||||
};
|
};
|
||||||
|
|
||||||
Feeder.prototype.pan = function( dX, dY )
|
Feeder.prototype.pan = function( dX, dY )
|
||||||
@ -137,6 +157,13 @@
|
|||||||
this.panY = Y;
|
this.panY = Y;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
Feeder.prototype.softReset = function()
|
||||||
|
{
|
||||||
|
this.__moreAt = -1;
|
||||||
|
this.__clseLine = null;
|
||||||
|
this.__softRender();
|
||||||
|
};
|
||||||
|
|
||||||
__readOnly( Feeder.prototype, "firstBuffer", function() {
|
__readOnly( Feeder.prototype, "firstBuffer", function() {
|
||||||
return this.lineBuffers[ 0 ];
|
return this.lineBuffers[ 0 ];
|
||||||
} );
|
} );
|
||||||
@ -145,6 +172,10 @@
|
|||||||
return this.lineBuffers[ this.__rows - 1 ];
|
return this.lineBuffers[ this.__rows - 1 ];
|
||||||
} );
|
} );
|
||||||
|
|
||||||
|
__readOnly( Feeder.prototype, "EOF", function() {
|
||||||
|
return this.lineBuffers[ this.__rows ].placeholder;
|
||||||
|
} );
|
||||||
|
|
||||||
__readOnly( Feeder.prototype, "moreAt", function() {
|
__readOnly( Feeder.prototype, "moreAt", function() {
|
||||||
if( 0 < this.__moreAt ) return this.__moreAt;
|
if( 0 < this.__moreAt ) return this.__moreAt;
|
||||||
|
|
||||||
@ -159,18 +190,35 @@
|
|||||||
}
|
}
|
||||||
while( line = line.next );
|
while( line = line.next );
|
||||||
|
|
||||||
|
if( line == undefined ) i --;
|
||||||
|
|
||||||
return ( this.__moreAt = i );
|
return ( this.__moreAt = i );
|
||||||
} );
|
} );
|
||||||
|
|
||||||
__readOnly( Feeder.prototype, "lineStat", function() {
|
__readOnly( Feeder.prototype, "lineStat", function() {
|
||||||
var X = this.cursor.X;
|
var X = this.cursor.X;
|
||||||
return ( this.cursor.getLine().lineNum + 1 ) + "," + X + "-" + ( X );
|
|
||||||
|
var line = this.cursor.getLine();
|
||||||
|
var tabStat = "";
|
||||||
|
|
||||||
|
var tabs = line.content.match( /\t/g );
|
||||||
|
|
||||||
|
if( tabs )
|
||||||
|
{
|
||||||
|
tabStat = "-" + ( X + tabs.length * line.tabWidth );
|
||||||
|
}
|
||||||
|
|
||||||
|
return ( line.lineNum + 1 ) + "," + X + tabStat;
|
||||||
} );
|
} );
|
||||||
|
|
||||||
__readOnly( Feeder.prototype, "docPos", function() {
|
__readOnly( Feeder.prototype, "docPos", function() {
|
||||||
var pos = "ALL";
|
var pos = "ALL";
|
||||||
|
|
||||||
if( this.panY == 0 )
|
if( 0 < this.panY && this.EOF )
|
||||||
|
{
|
||||||
|
pos = "BOTTOM";
|
||||||
|
}
|
||||||
|
else
|
||||||
{
|
{
|
||||||
if( this.__clseLine || !this.EOF )
|
if( this.__clseLine || !this.EOF )
|
||||||
{
|
{
|
||||||
@ -178,6 +226,7 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
return pos;
|
return pos;
|
||||||
} );
|
} );
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user