You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
93 lines
1.6 KiB
93 lines
1.6 KiB
function newWindowCallBack(mainwindow) {
|
|
var ac=mainwindow.actionCollection();
|
|
action = new KAction( ac, 'kjsselect_select_action' );
|
|
action.text = 'Select enclosing block';
|
|
//action.icon = 'konsole';
|
|
|
|
|
|
mainwindow.selectIt = function()
|
|
{
|
|
endChars=Array();
|
|
endChars['\"']="\"";
|
|
endChars['(']=")";
|
|
endChars['[']="]";
|
|
endChars['\'']="'";
|
|
endChars['{']="}";
|
|
endChar="";
|
|
av=this.viewManager().activeView();
|
|
d=KATE.DocumentManager.activeDocument();
|
|
|
|
lineCnt=d.numLines();
|
|
x=av.cursorColumn();
|
|
y=av.cursorLine();
|
|
line=d.textLine(y);
|
|
sy=y;
|
|
sx=x-1;
|
|
while (true) {
|
|
if (sx<0) {
|
|
sy=sy-1;
|
|
if (sy<0) {
|
|
d.selectAll();
|
|
return;
|
|
}
|
|
line=d.textLine(sy);
|
|
while (line.length==0) {
|
|
sy=sy-1;
|
|
if (sy<0) {
|
|
d.selectAll();
|
|
return;
|
|
}
|
|
line=d.textLine(sy);
|
|
}
|
|
sx=line.length-1;
|
|
|
|
}
|
|
if (
|
|
(line[sx]=="\"") ||
|
|
(line[sx]=="'") ||
|
|
(line[sx]=="(") ||
|
|
(line[sx]=="[") ||
|
|
(line[sx]=="{")
|
|
) {
|
|
endChar=endChars[line[sx]];
|
|
break;
|
|
}else sx--;
|
|
}
|
|
|
|
|
|
alert("Searching end");
|
|
ex=x;
|
|
ey=y;
|
|
line=d.textLine(y);
|
|
while (true) {
|
|
if (ex>=(line.length-1)) {
|
|
ey=ey+1;
|
|
if (ey>=lineCnt) {
|
|
d.selectAll();
|
|
return;
|
|
}
|
|
line=d.textLine(ey);
|
|
while (line.length==0) {
|
|
ey=ey+1;
|
|
if (ey>=lineCnt) {
|
|
d.selectAll();
|
|
return;
|
|
}
|
|
line=d.textLine(ey);
|
|
}
|
|
ex=0;
|
|
}
|
|
if (line[ex]==endChar)
|
|
break; else ex++;
|
|
}
|
|
d.setSelection(sy,sx,ey,ex);
|
|
|
|
}
|
|
|
|
action.connect( action, 'activated()', mainwindow, 'selectIt' );
|
|
|
|
}
|
|
|
|
setWindowConfiguration(null,newWindowCallBack,null);
|
|
|