remove lezer code
This commit is contained in:
@@ -2,37 +2,15 @@ import { AbstractEditor, EditorDelegate, Marker } from "./types";
|
|||||||
import { basicSetup } from "codemirror";
|
import { basicSetup } from "codemirror";
|
||||||
import { EditorView, hoverTooltip, Tooltip } from "@codemirror/view";
|
import { EditorView, hoverTooltip, Tooltip } from "@codemirror/view";
|
||||||
import { Compartment } from "@codemirror/state";
|
import { Compartment } from "@codemirror/state";
|
||||||
import { parser } from "./parser.js";
|
import { oneDark } from "@codemirror/theme-one-dark";
|
||||||
import { oneDark, oneDark as themeOneDark } from "@codemirror/theme-one-dark";
|
import { linter } from "@codemirror/lint";
|
||||||
import { styleTags, tags as t } from "@lezer/highlight";
|
|
||||||
import { linter, Diagnostic } from "@codemirror/lint";
|
|
||||||
import {
|
import {
|
||||||
LanguageSupport,
|
LanguageSupport,
|
||||||
LRLanguage,
|
|
||||||
StreamLanguage,
|
StreamLanguage,
|
||||||
StringStream,
|
StringStream,
|
||||||
} from "@codemirror/language";
|
} from "@codemirror/language";
|
||||||
import { ABBREV } from "./abbrev.js";
|
import { ABBREV } from "./abbrev.js";
|
||||||
|
|
||||||
let parserWithMetadata = parser.configure({
|
|
||||||
props: [
|
|
||||||
styleTags({
|
|
||||||
Identifier: t.variableName,
|
|
||||||
LineComment: t.lineComment,
|
|
||||||
"if then else data where": t.keyword,
|
|
||||||
}),
|
|
||||||
// indentNodeProp, foldNodeProp
|
|
||||||
],
|
|
||||||
});
|
|
||||||
|
|
||||||
const newtLanguage = LRLanguage.define({
|
|
||||||
parser: parserWithMetadata,
|
|
||||||
languageData: {
|
|
||||||
commentTokens: {
|
|
||||||
line: "--",
|
|
||||||
},
|
|
||||||
},
|
|
||||||
});
|
|
||||||
// prettier flattened this...
|
// prettier flattened this...
|
||||||
const keywords = [
|
const keywords = [
|
||||||
"let",
|
"let",
|
||||||
@@ -144,25 +122,29 @@ export class CMEditor implements AbstractEditor {
|
|||||||
linter((view) => this.delegate.lint(view)),
|
linter((view) => this.delegate.lint(view)),
|
||||||
this.theme.of(EditorView.baseTheme({})),
|
this.theme.of(EditorView.baseTheme({})),
|
||||||
EditorView.updateListener.of((update) => {
|
EditorView.updateListener.of((update) => {
|
||||||
let doc = update.state.doc
|
let doc = update.state.doc;
|
||||||
|
|
||||||
update.changes.iterChanges((fromA, toA, fromB, toB, inserted) => {
|
update.changes.iterChanges((fromA, toA, fromB, toB, inserted) => {
|
||||||
if (" ')\\".includes(inserted.toString())) {
|
if (" ')\\".includes(inserted.toString())) {
|
||||||
console.log('changes', update.changes, update.changes.desc)
|
console.log("changes", update.changes, update.changes.desc);
|
||||||
let line = doc.lineAt(fromA)
|
let line = doc.lineAt(fromA);
|
||||||
let e = fromA - line.from
|
let e = fromA - line.from;
|
||||||
const m = line.text.slice(0, e).match(/(\\[^ ]+)$/);
|
const m = line.text.slice(0, e).match(/(\\[^ ]+)$/);
|
||||||
if (m) {
|
if (m) {
|
||||||
let s = e - m[0].length
|
let s = e - m[0].length;
|
||||||
let key = line.text.slice(s, e)
|
let key = line.text.slice(s, e);
|
||||||
if (ABBREV[key]) {
|
if (ABBREV[key]) {
|
||||||
this.view.dispatch({
|
this.view.dispatch({
|
||||||
changes: { from: line.from + s, to: fromA, insert: ABBREV[key] },
|
changes: {
|
||||||
|
from: line.from + s,
|
||||||
|
to: fromA,
|
||||||
|
insert: ABBREV[key],
|
||||||
|
},
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
})
|
});
|
||||||
}),
|
}),
|
||||||
hoverTooltip((view, pos) => {
|
hoverTooltip((view, pos) => {
|
||||||
let cursor = this.view.state.doc.lineAt(pos);
|
let cursor = this.view.state.doc.lineAt(pos);
|
||||||
|
|||||||
Reference in New Issue
Block a user