tab key works
This commit is contained in:
parent
1e91232bd6
commit
e52c8c69a0
36
editmode.ts
36
editmode.ts
@ -46,9 +46,33 @@ const codeTabState = {
|
|||||||
this.code = code.slice(0, Math.min(anchor, focus)) + text + code.slice(Math.max(anchor, focus));
|
this.code = code.slice(0, Math.min(anchor, focus)) + text + code.slice(Math.max(anchor, focus));
|
||||||
this.setSelection(Math.min(anchor, focus) + text.length);
|
this.setSelection(Math.min(anchor, focus) + text.length);
|
||||||
},
|
},
|
||||||
// indent(char) {
|
indent(indentString: string) {
|
||||||
// const lines = this.code.split("\n").
|
const lines = this.code.split("\n");
|
||||||
// },
|
const {focusY, anchorY} = this;
|
||||||
|
const newLines = lines.map((line, i) => {
|
||||||
|
console.log(i, Math.min(focusY, anchorY), Math.max(focusY, anchorY));
|
||||||
|
if (i >= Math.min(focusY, anchorY) && i <= Math.max(focusY, anchorY)) {
|
||||||
|
console.log(indentString+line);
|
||||||
|
return indentString+line;
|
||||||
|
} else {
|
||||||
|
return line;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
this.code = newLines.join("\n");
|
||||||
|
},
|
||||||
|
outdent(outdentRegex: RegExp) {
|
||||||
|
const lines = this.code.split("\n");
|
||||||
|
const {focusY, anchorY} = this;
|
||||||
|
const newLines = lines.map((line, i) => {
|
||||||
|
const match = line.match(outdentRegex);
|
||||||
|
if (i >= Math.min(focusY, anchorY) && i <= Math.max(focusY, anchorY) && match) {
|
||||||
|
return line.slice(match[0].length);
|
||||||
|
} else {
|
||||||
|
return line;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
this.code = newLines.join("\n");
|
||||||
|
},
|
||||||
backspace() {
|
backspace() {
|
||||||
const {code, focus} = this;
|
const {code, focus} = this;
|
||||||
if (this.isCollapsed()) {
|
if (this.isCollapsed()) {
|
||||||
@ -127,12 +151,12 @@ const update = () => {
|
|||||||
if (keyPressed(K.TAB)) {
|
if (keyPressed(K.TAB)) {
|
||||||
if (!shiftKeyDown()) {
|
if (!shiftKeyDown()) {
|
||||||
if (codeTabState.isCollapsed()) {
|
if (codeTabState.isCollapsed()) {
|
||||||
codeTabState.insertText("\n");
|
codeTabState.insertText("\t");
|
||||||
} else {
|
} else {
|
||||||
// codeTabState.indent("\t");
|
codeTabState.indent("\t");
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
// codeTabState.outdent(/\t| /);
|
codeTabState.outdent(/^(\t| )/);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (keyPressed(K.BACKSPACE)) {
|
if (keyPressed(K.BACKSPACE)) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user