mirror of https://github.com/shadowfacts/type.git
Clean up stuff
This commit is contained in:
parent
821edca54c
commit
c789240a26
188
main.js
188
main.js
|
@ -52,97 +52,12 @@ function setup(data, mime) {
|
||||||
|
|
||||||
focused = true;
|
focused = true;
|
||||||
|
|
||||||
editor.on("focus", (instance, event) => {
|
editor.on("focus", handleFocus);
|
||||||
focused = true;
|
editor.on("blur", handleBlur);
|
||||||
});
|
editor.on("mousedown", handleMouseDown);
|
||||||
editor.on("blur", (instance, event) => {
|
|
||||||
focused = false;
|
|
||||||
});
|
|
||||||
|
|
||||||
editor.on("mousedown", (instance, event) => {
|
document.addEventListener("keypress", handleKeyPress);
|
||||||
event.preventDefault();
|
document.addEventListener("keydown", handleKeyDown);
|
||||||
editor.focus();
|
|
||||||
});
|
|
||||||
|
|
||||||
document.addEventListener("keypress", (event) => {
|
|
||||||
if (focused) {
|
|
||||||
event.preventDefault();
|
|
||||||
|
|
||||||
let pos = editor.getCursor();
|
|
||||||
let line = editor.doc.getLine(pos.line);
|
|
||||||
let char = line.charCodeAt(pos.ch);
|
|
||||||
if (event.charCode != char) {
|
|
||||||
markInvalid(pos);
|
|
||||||
}
|
|
||||||
editor.setCursor({ line: pos.line, ch: pos.ch + 1 });
|
|
||||||
updateIncompleteMark();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
document.addEventListener("keydown", (event) => {
|
|
||||||
if (focused) {
|
|
||||||
var result = false;
|
|
||||||
|
|
||||||
if (event.keyCode == 8) { // delete
|
|
||||||
result = true;
|
|
||||||
|
|
||||||
let pos = editor.getCursor();
|
|
||||||
if (pos.ch == 0) { // move up 1 line {
|
|
||||||
moveToEndOfPreviousLine();
|
|
||||||
} else { // move back 1 char
|
|
||||||
let line = editor.doc.getLine(pos.line);
|
|
||||||
if (line.hasOnlyWhiteSpaceBeforeIndex(pos.ch)) {
|
|
||||||
moveToEndOfPreviousLine();
|
|
||||||
} else {
|
|
||||||
editor.setCursor({ line: pos.line, ch: pos.ch - 1 });
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
let newPos = editor.getCursor();
|
|
||||||
let lineInvalids = invalids[newPos.line];
|
|
||||||
if (lineInvalids) {
|
|
||||||
let mark = lineInvalids[newPos.ch];
|
|
||||||
if (mark) {
|
|
||||||
mark.clear();
|
|
||||||
lineInvalids.splice(newPos.ch, 1);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
updateIncompleteMark();
|
|
||||||
} else if (event.keyCode == 13) { // enter
|
|
||||||
result = true;
|
|
||||||
|
|
||||||
let pos = editor.getCursor();
|
|
||||||
if (pos.line != editor.doc.size - 1) {
|
|
||||||
let currentLine = editor.doc.getLine(pos.line);
|
|
||||||
let trimmed = currentLine.trim();
|
|
||||||
if (editor.getCursor().ch >= currentLine.indexOf(trimmed) + trimmed.length) {
|
|
||||||
var newLine = pos.line;
|
|
||||||
while (true) {
|
|
||||||
newLine++;
|
|
||||||
if (newLine >= editor.doc.size) { // go to end of last line
|
|
||||||
editor.setCursor(getEndPos());
|
|
||||||
break;
|
|
||||||
} else { // try go to next line
|
|
||||||
let newText = editor.doc.getLine(newLine);
|
|
||||||
let newTrimmed = newText.trim();
|
|
||||||
if (newTrimmed.length != 0) { // line is not empty (whitespace-only)
|
|
||||||
let ch = newText.indexOf(newTrimmed);
|
|
||||||
editor.setCursor({ line: newLine, ch: ch });
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
updateIncompleteMark();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (result) {
|
|
||||||
event.preventDefault();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
})
|
})
|
||||||
.catch((e) => {
|
.catch((e) => {
|
||||||
|
@ -150,6 +65,99 @@ function setup(data, mime) {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function handleFocus() {
|
||||||
|
focused = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
function handleBlur() {
|
||||||
|
focused = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
function handleMouseDown(instance, event) {
|
||||||
|
event.preventDefault();
|
||||||
|
editor.focus();
|
||||||
|
}
|
||||||
|
|
||||||
|
function handleKeyPress(event) {
|
||||||
|
if (focused) {
|
||||||
|
event.preventDefault();
|
||||||
|
|
||||||
|
let pos = editor.getCursor();
|
||||||
|
let line = editor.doc.getLine(pos.line);
|
||||||
|
let char = line.charCodeAt(pos.ch);
|
||||||
|
if (event.charCode != char) {
|
||||||
|
markInvalid(pos);
|
||||||
|
}
|
||||||
|
editor.setCursor({ line: pos.line, ch: pos.ch + 1 });
|
||||||
|
updateIncompleteMark();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function handleKeyDown(event) {
|
||||||
|
if (focused) {
|
||||||
|
if (event.keyCode == 8) { // delete
|
||||||
|
event.preventDefault();
|
||||||
|
handleDelete(event);
|
||||||
|
} else if (event.keyCode == 13) { // enter
|
||||||
|
event.preventDefault();
|
||||||
|
handleEnter(event);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function handleDelete(event) {
|
||||||
|
let pos = editor.getCursor();
|
||||||
|
if (pos.ch == 0) { // move up 1 line {
|
||||||
|
moveToEndOfPreviousLine();
|
||||||
|
} else { // move back 1 char
|
||||||
|
let line = editor.doc.getLine(pos.line);
|
||||||
|
if (line.hasOnlyWhiteSpaceBeforeIndex(pos.ch)) {
|
||||||
|
moveToEndOfPreviousLine();
|
||||||
|
} else {
|
||||||
|
editor.setCursor({ line: pos.line, ch: pos.ch - 1 });
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
let newPos = editor.getCursor();
|
||||||
|
let lineInvalids = invalids[newPos.line];
|
||||||
|
if (lineInvalids) {
|
||||||
|
let mark = lineInvalids[newPos.ch];
|
||||||
|
if (mark) {
|
||||||
|
mark.clear();
|
||||||
|
lineInvalids.splice(newPos.ch, 1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
updateIncompleteMark();
|
||||||
|
}
|
||||||
|
|
||||||
|
function handleEnter(event) {
|
||||||
|
let pos = editor.getCursor();
|
||||||
|
if (pos.line != editor.doc.size - 1) {
|
||||||
|
let currentLine = editor.doc.getLine(pos.line);
|
||||||
|
let trimmed = currentLine.trim();
|
||||||
|
if (editor.getCursor().ch >= currentLine.indexOf(trimmed) + trimmed.length) {
|
||||||
|
var newLine = pos.line;
|
||||||
|
while (true) {
|
||||||
|
newLine++;
|
||||||
|
if (newLine >= editor.doc.size) { // go to end of last line
|
||||||
|
editor.setCursor(getEndPos());
|
||||||
|
break;
|
||||||
|
} else { // try go to next line
|
||||||
|
let newText = editor.doc.getLine(newLine);
|
||||||
|
let newTrimmed = newText.trim();
|
||||||
|
if (newTrimmed.length != 0) { // line is not empty (whitespace-only)
|
||||||
|
let ch = newText.indexOf(newTrimmed);
|
||||||
|
editor.setCursor({ line: newLine, ch: ch });
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
updateIncompleteMark();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
function moveToEndOfPreviousLine() {
|
function moveToEndOfPreviousLine() {
|
||||||
let pos = editor.getCursor();
|
let pos = editor.getCursor();
|
||||||
if (pos.line > 0) {
|
if (pos.line > 0) {
|
||||||
|
|
Loading…
Reference in New Issue