Skip to content

Commit f096668

Browse files
committed
Revert "Support reconfiguration of an LRLanguage's language data"
This reverts commit a8de2ea. BREAKING: Remove support for reconfiguring language data in `LRLanguage` again, since its implementation was broken.
1 parent 43dadca commit f096668

File tree

3 files changed

+9
-59
lines changed

3 files changed

+9
-59
lines changed

src/language.ts

Lines changed: 7 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -166,11 +166,8 @@ function topNodeAt(state: EditorState, pos: number, side: -1 | 0 | 1) {
166166
/// [LR parsers](https://lezer.codemirror.net/docs/ref#lr.LRParser)
167167
/// parsers.
168168
export class LRLanguage extends Language {
169-
private constructor(data: Facet<{[name: string]: any}>,
170-
readonly parser: LRParser,
171-
private languageData: {[name: string]: any} | null,
172-
name?: string) {
173-
super(data, parser, languageData ? [data.of(languageData)] : [], name)
169+
private constructor(data: Facet<{[name: string]: any}>, readonly parser: LRParser, name?: string) {
170+
super(data, parser, [], name)
174171
}
175172

176173
/// Define a language from a parser.
@@ -185,29 +182,16 @@ export class LRLanguage extends Language {
185182
/// to register for this language.
186183
languageData?: {[name: string]: any}
187184
}) {
188-
let data = defineLanguageFacet()
185+
let data = defineLanguageFacet(spec.languageData)
189186
return new LRLanguage(data, spec.parser.configure({
190187
props: [languageDataProp.add(type => type.isTop ? data : undefined)]
191-
}), spec.languageData || null, spec.name)
188+
}), spec.name)
192189
}
193190

194191
/// Create a new instance of this language with a reconfigured
195-
/// version of its parser, language data, and name.
196-
///
197-
/// When `languageData` is given, any property set to `undefined`
198-
/// in it will be removed from the language's
199-
/// [data](#state.EditorState.languageDataAt), any other property
200-
/// is added.
201-
configure(options: ParserConfig & {languageData?: {[name: string]: any}}, name?: string): LRLanguage {
202-
let {languageData} = this
203-
if (options.languageData) {
204-
languageData = {}
205-
for (let prop in options.languageData)
206-
if (options.languageData[prop] !== undefined) languageData[prop] = options.languageData[prop]
207-
for (let prop in this.languageData)
208-
if (!(prop in options.languageData)) languageData[prop] = this.languageData[prop]
209-
}
210-
return new LRLanguage(this.data, this.parser.configure(options), languageData, name || this.name)
192+
/// version of its parser and optionally a new name.
193+
configure(options: ParserConfig, name?: string): LRLanguage {
194+
return new LRLanguage(this.data, this.parser.configure(options), name || this.name)
211195
}
212196

213197
get allowsNesting() { return this.parser.hasWrappers() }

src/stream-parser.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -91,14 +91,14 @@ export class StreamLanguage<State> extends Language {
9191
topNode: NodeType
9292

9393
private constructor(parser: StreamParser<State>) {
94-
let data = defineLanguageFacet()
94+
let data = defineLanguageFacet(parser.languageData)
9595
let p = fullParser(parser), self: StreamLanguage<State>
9696
let impl = new class extends Parser {
9797
createParse(input: Input, fragments: readonly TreeFragment[], ranges: readonly {from: number, to: number}[]) {
9898
return new Parse(self, input, fragments, ranges)
9999
}
100100
}
101-
super(data, impl, parser.languageData ? [data.of(parser.languageData)] : [], parser.name)
101+
super(data, impl, [], parser.name)
102102
this.topNode = docID(data, this)
103103
self = this
104104
this.streamParser = p

test/test-language.ts

Lines changed: 0 additions & 34 deletions
This file was deleted.

0 commit comments

Comments
 (0)