bring back improved fold function
This commit is contained in:
parent
0400be7be6
commit
3b64acbd17
1 changed files with 44 additions and 14 deletions
52
demo/demo.js
52
demo/demo.js
|
|
@ -477,28 +477,58 @@ exports.launch = function(env) {
|
||||||
mac: "Alt-L",
|
mac: "Alt-L",
|
||||||
sender: "editor"
|
sender: "editor"
|
||||||
},
|
},
|
||||||
exec: function() {
|
exec: function(env) {
|
||||||
var session = env.editor.session,
|
toggleFold(env, false)
|
||||||
range = env.editor.selection.getRange(),
|
|
||||||
placeHolder = session.getTextRange(range).substring(0, 3) + "...";
|
|
||||||
|
|
||||||
session.addFold(placeHolder, range);
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
canon.addCommand({
|
canon.addCommand({
|
||||||
name: "undfold",
|
name: "unfold",
|
||||||
bindKey: {
|
bindKey: {
|
||||||
win: "Alt-Shift-L",
|
win: "Alt-Shift-L",
|
||||||
mac: "Alt-Shift-L",
|
mac: "Alt-Shift-L",
|
||||||
sender: "editor"
|
sender: "editor"
|
||||||
},
|
},
|
||||||
exec: function() {
|
exec: function(env) {
|
||||||
var session = env.editor.session,
|
toggleFold(env, true)
|
||||||
range = env.editor.selection.getRange();
|
|
||||||
session.expandFolds(session.getFoldsInRange(range));
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
function toggleFold(env, tryToUnfold) {
|
||||||
|
var session = env.editor.session,
|
||||||
|
selection = env.editor.selection,
|
||||||
|
range = selection.getRange(), addFold;
|
||||||
|
|
||||||
|
if(range.isEmpty()) {
|
||||||
|
var br = session.findMatchingBracket(range.start);
|
||||||
|
var fold = session.getFoldAt(range.start.row, range.start.column)
|
||||||
|
if(fold) {
|
||||||
|
session.expandFold(fold);
|
||||||
|
selection.setSelectionRange(fold.range)
|
||||||
|
} else if(br) {
|
||||||
|
if(range.compare(br.row,br.column) == 1)
|
||||||
|
range.end = br;
|
||||||
|
else
|
||||||
|
range.start = br;
|
||||||
|
addFold = true;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
var folds = session.getFoldsInRange(range);
|
||||||
|
if(tryToUnfold && folds.length)
|
||||||
|
session.expandFolds(folds);
|
||||||
|
else if(folds.length == 1 && folds[0].range.compare(range) == 0)
|
||||||
|
session.expandFolds(folds);
|
||||||
|
else
|
||||||
|
addFold = true;
|
||||||
|
}
|
||||||
|
if(addFold) {
|
||||||
|
var placeHolder = session.getTextRange(range);
|
||||||
|
if(placeHolder.length < 3)
|
||||||
|
return;
|
||||||
|
placeHolder = placeHolder.trim().substring(0, 3).replace(' ','','g') + "...";
|
||||||
|
session.addFold(placeHolder, range);
|
||||||
|
}
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
});
|
});
|
||||||
Loading…
Add table
Add a link
Reference in a new issue