fixed: move lines block
This commit is contained in:
parent
abf5cf46c1
commit
38ca275f64
43
main.js
43
main.js
|
@ -1960,6 +1960,11 @@ function currentline()
|
||||||
return (md.value.substring(0, md.selectionStart).match(/\n/g) || []).length;
|
return (md.value.substring(0, md.selectionStart).match(/\n/g) || []).length;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function lineatpos(pos)
|
||||||
|
{
|
||||||
|
return (md.value.substring(0, pos).match(/\n/g) || []).length;
|
||||||
|
}
|
||||||
|
|
||||||
function currentcol()
|
function currentcol()
|
||||||
{
|
{
|
||||||
return md.selectionStart - Math.max(0, md.value.lastIndexOf("\n", md.selectionStart - 1)) - 1;
|
return md.selectionStart - Math.max(0, md.value.lastIndexOf("\n", md.selectionStart - 1)) - 1;
|
||||||
|
@ -2034,6 +2039,7 @@ function applycolors()
|
||||||
{
|
{
|
||||||
header = false;
|
header = false;
|
||||||
}
|
}
|
||||||
|
line = line || " ";
|
||||||
line = "<span style='color:lightgrey'>" + line + "</span>";
|
line = "<span style='color:lightgrey'>" + line + "</span>";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2125,7 +2131,6 @@ function applycolors()
|
||||||
|
|
||||||
function datachanged()
|
function datachanged()
|
||||||
{
|
{
|
||||||
applycolors();
|
|
||||||
resize();
|
resize();
|
||||||
|
|
||||||
saved = false;
|
saved = false;
|
||||||
|
@ -2456,31 +2461,25 @@ function mainkeydownhandler()
|
||||||
{
|
{
|
||||||
commandpalette();
|
commandpalette();
|
||||||
}
|
}
|
||||||
else if (event.ctrlKey && event.shiftKey && event.keyCode == "40")
|
else if (event.ctrlKey && event.shiftKey && (event.keyCode == "40" || event.keyCode == "38"))
|
||||||
{
|
{
|
||||||
var pos = md.selectionStart;
|
var pos = {
|
||||||
var index = (md.value.substr(0, pos).match(/\n/g) || []).length;
|
start: md.selectionStart,
|
||||||
|
end: md.selectionEnd
|
||||||
|
};
|
||||||
|
var direction = event.keyCode == "40" ? 1 : -1;
|
||||||
|
var start = lineatpos(md.selectionStart);
|
||||||
|
var end = lineatpos(md.selectionEnd);
|
||||||
var lines = md.value.split("\n");
|
var lines = md.value.split("\n");
|
||||||
if (index < lines.length - 1)
|
if (direction > 0 && end < lines.length || direction < 0 && start > 0)
|
||||||
{
|
{
|
||||||
var line = lines.splice(index, 1);
|
var block = lines.splice(start, end - start + 1);
|
||||||
lines.splice(index + 1, 0, line);
|
lines.splice(start + direction, 0, ...block);
|
||||||
seteditorcontent(lines.join("\n"));
|
seteditorcontent(lines.join("\n"));
|
||||||
setpos(pos + lines[index].length + 1);
|
datachanged();
|
||||||
}
|
var posshift = direction > 0 ? lines[start].length + 1 : - 1 - lines[end].length;
|
||||||
event.preventDefault();
|
md.setSelectionRange(pos.start + posshift, pos.end + posshift);
|
||||||
}
|
|
||||||
else if (event.ctrlKey && event.shiftKey && event.keyCode == "38")
|
|
||||||
{
|
|
||||||
var pos = md.selectionStart;
|
|
||||||
var index = (md.value.substr(0, pos).match(/\n/g) || []).length;
|
|
||||||
var lines = md.value.split("\n");
|
|
||||||
if (index > 0)
|
|
||||||
{
|
|
||||||
var line = lines.splice(index, 1);
|
|
||||||
lines.splice(index - 1, 0, line);
|
|
||||||
seteditorcontent(lines.join("\n"));
|
|
||||||
setpos(pos - lines[index].length - 1);
|
|
||||||
}
|
}
|
||||||
event.preventDefault();
|
event.preventDefault();
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue