Press n or j to go to the next uncovered block, b, p or k for the previous block.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 | import { Common } from '..' import { IdeState, SourcePath, SrcHighlight } from '../common' import CodeMirror from 'codemirror' import { getHighlights } from './utils' import { BehaviorSubject } from 'rxjs' import { filter, take } from 'rxjs/operators' export class CodeEditorView extends Common.CodeEditorView { public readonly highlights$ = new BehaviorSubject<SrcHighlight[]>([]) constructor(params: { ideState: IdeState path: SourcePath config: { [k: string]: unknown } }) { super({ ...params, language: 'text/typescript', config: { ...params.config, gutters: ['CodeMirror-lint-markers'], lint: { options: { editorKind: 'TsCodeEditorView', esversion: 2021, }, }, }, }) this.ideState.fsMap$ .pipe( filter((fsMap) => fsMap != undefined), take(1), ) .subscribe((fsMap) => { const highlights = getHighlights(fsMap, fsMap.get(params.path)) this.highlights$.next(highlights) }) CodeMirror.registerHelper('lint', 'javascript', (text, options) => { Iif (options.editorKind != 'TsCodeEditorView') { return [] } const fsMapBase = this.ideState.fsMap$.getValue() Iif (!fsMapBase) { return } const highlights = getHighlights(fsMapBase, text) this.highlights$.next(highlights) return highlights.map((highlight) => ({ ...highlight, message: highlight.messageText, })) }) } } |