@codemirror/language 6.11.2 → 6.12.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +12 -0
- package/dist/index.cjs +27 -11
- package/dist/index.d.cts +13 -3
- package/dist/index.d.ts +13 -3
- package/dist/index.js +27 -11
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,15 @@
|
|
|
1
|
+
## 6.12.0 (2025-12-22)
|
|
2
|
+
|
|
3
|
+
### New features
|
|
4
|
+
|
|
5
|
+
`LRLanguage.reconfigure` now supports changing the language data associated with the language.
|
|
6
|
+
|
|
7
|
+
## 6.11.3 (2025-08-15)
|
|
8
|
+
|
|
9
|
+
### Bug fixes
|
|
10
|
+
|
|
11
|
+
Make the stream parser user 4 times smaller chunks to reduce the amount of re-parsed code on changes.
|
|
12
|
+
|
|
1
13
|
## 6.11.2 (2025-06-27)
|
|
2
14
|
|
|
3
15
|
### Bug fixes
|
package/dist/index.cjs
CHANGED
|
@@ -158,25 +158,41 @@ A subclass of [`Language`](https://codemirror.net/6/docs/ref/#language.Language)
|
|
|
158
158
|
parsers.
|
|
159
159
|
*/
|
|
160
160
|
class LRLanguage extends Language {
|
|
161
|
-
constructor(data, parser, name) {
|
|
162
|
-
super(data, parser, [], name);
|
|
161
|
+
constructor(data, parser, languageData, name) {
|
|
162
|
+
super(data, parser, languageData ? [data.of(languageData)] : [], name);
|
|
163
163
|
this.parser = parser;
|
|
164
|
+
this.languageData = languageData;
|
|
164
165
|
}
|
|
165
166
|
/**
|
|
166
167
|
Define a language from a parser.
|
|
167
168
|
*/
|
|
168
169
|
static define(spec) {
|
|
169
|
-
let data = defineLanguageFacet(
|
|
170
|
+
let data = defineLanguageFacet();
|
|
170
171
|
return new LRLanguage(data, spec.parser.configure({
|
|
171
172
|
props: [languageDataProp.add(type => type.isTop ? data : undefined)]
|
|
172
|
-
}), spec.name);
|
|
173
|
+
}), spec.languageData || null, spec.name);
|
|
173
174
|
}
|
|
174
175
|
/**
|
|
175
176
|
Create a new instance of this language with a reconfigured
|
|
176
|
-
version of its parser
|
|
177
|
+
version of its parser, language data, and name.
|
|
178
|
+
|
|
179
|
+
When `languageData` is given, any property set to `undefined`
|
|
180
|
+
in it will be removed from the language's
|
|
181
|
+
[data](https://codemirror.net/6/docs/ref/#state.EditorState.languageDataAt), any other property
|
|
182
|
+
is added.
|
|
177
183
|
*/
|
|
178
184
|
configure(options, name) {
|
|
179
|
-
|
|
185
|
+
let { languageData } = this;
|
|
186
|
+
if (options.languageData) {
|
|
187
|
+
languageData = {};
|
|
188
|
+
for (let prop in options.languageData)
|
|
189
|
+
if (options.languageData[prop] !== undefined)
|
|
190
|
+
languageData[prop] = options.languageData[prop];
|
|
191
|
+
for (let prop in this.languageData)
|
|
192
|
+
if (!(prop in options.languageData))
|
|
193
|
+
languageData[prop] = this.languageData[prop];
|
|
194
|
+
}
|
|
195
|
+
return new LRLanguage(this.data, this.parser.configure(options), languageData, name || this.name);
|
|
180
196
|
}
|
|
181
197
|
get allowsNesting() { return this.parser.hasWrappers(); }
|
|
182
198
|
}
|
|
@@ -1657,7 +1673,7 @@ const baseTheme$1 = view.EditorView.baseTheme({
|
|
|
1657
1673
|
});
|
|
1658
1674
|
|
|
1659
1675
|
/**
|
|
1660
|
-
A highlight style associates CSS styles with
|
|
1676
|
+
A highlight style associates CSS styles with highlighting
|
|
1661
1677
|
[tags](https://lezer.codemirror.net/docs/ref#highlight.Tag).
|
|
1662
1678
|
*/
|
|
1663
1679
|
class HighlightStyle {
|
|
@@ -2209,14 +2225,14 @@ A [language](https://codemirror.net/6/docs/ref/#language.Language) class based o
|
|
|
2209
2225
|
*/
|
|
2210
2226
|
class StreamLanguage extends Language {
|
|
2211
2227
|
constructor(parser) {
|
|
2212
|
-
let data = defineLanguageFacet(
|
|
2228
|
+
let data = defineLanguageFacet();
|
|
2213
2229
|
let p = fullParser(parser), self;
|
|
2214
2230
|
let impl = new class extends common.Parser {
|
|
2215
2231
|
createParse(input, fragments, ranges) {
|
|
2216
2232
|
return new Parse(self, input, fragments, ranges);
|
|
2217
2233
|
}
|
|
2218
2234
|
};
|
|
2219
|
-
super(data, impl, [], parser.name);
|
|
2235
|
+
super(data, impl, parser.languageData ? [data.of(parser.languageData)] : [], parser.name);
|
|
2220
2236
|
this.topNode = docID(data, this);
|
|
2221
2237
|
self = this;
|
|
2222
2238
|
this.streamParser = p;
|
|
@@ -2340,7 +2356,7 @@ class Parse {
|
|
|
2340
2356
|
advance() {
|
|
2341
2357
|
let context = ParseContext.get();
|
|
2342
2358
|
let parseEnd = this.stoppedAt == null ? this.to : Math.min(this.to, this.stoppedAt);
|
|
2343
|
-
let end = Math.min(parseEnd, this.chunkStart +
|
|
2359
|
+
let end = Math.min(parseEnd, this.chunkStart + 512 /* C.ChunkSize */);
|
|
2344
2360
|
if (context)
|
|
2345
2361
|
end = Math.min(end, context.viewport.to);
|
|
2346
2362
|
while (this.parsedPos < end)
|
|
@@ -2446,7 +2462,7 @@ class Parse {
|
|
|
2446
2462
|
length: this.parsedPos - this.chunkStart,
|
|
2447
2463
|
nodeSet,
|
|
2448
2464
|
topID: 0,
|
|
2449
|
-
maxBufferLength:
|
|
2465
|
+
maxBufferLength: 512 /* C.ChunkSize */,
|
|
2450
2466
|
reused: this.chunkReused
|
|
2451
2467
|
});
|
|
2452
2468
|
tree = new common.Tree(tree.type, tree.children, tree.positions, tree.length, [[this.lang.stateAfter, this.lang.streamParser.copyState(this.state)]]);
|
package/dist/index.d.cts
CHANGED
|
@@ -143,6 +143,7 @@ parsers.
|
|
|
143
143
|
*/
|
|
144
144
|
declare class LRLanguage extends Language {
|
|
145
145
|
readonly parser: LRParser;
|
|
146
|
+
private languageData;
|
|
146
147
|
private constructor();
|
|
147
148
|
/**
|
|
148
149
|
Define a language from a parser.
|
|
@@ -168,9 +169,18 @@ declare class LRLanguage extends Language {
|
|
|
168
169
|
}): LRLanguage;
|
|
169
170
|
/**
|
|
170
171
|
Create a new instance of this language with a reconfigured
|
|
171
|
-
version of its parser
|
|
172
|
+
version of its parser, language data, and name.
|
|
173
|
+
|
|
174
|
+
When `languageData` is given, any property set to `undefined`
|
|
175
|
+
in it will be removed from the language's
|
|
176
|
+
[data](https://codemirror.net/6/docs/ref/#state.EditorState.languageDataAt), any other property
|
|
177
|
+
is added.
|
|
172
178
|
*/
|
|
173
|
-
configure(options: ParserConfig
|
|
179
|
+
configure(options: ParserConfig & {
|
|
180
|
+
languageData?: {
|
|
181
|
+
[name: string]: any;
|
|
182
|
+
};
|
|
183
|
+
}, name?: string): LRLanguage;
|
|
174
184
|
get allowsNesting(): boolean;
|
|
175
185
|
}
|
|
176
186
|
/**
|
|
@@ -828,7 +838,7 @@ to fold or unfold the line).
|
|
|
828
838
|
declare function foldGutter(config?: FoldGutterConfig): Extension;
|
|
829
839
|
|
|
830
840
|
/**
|
|
831
|
-
A highlight style associates CSS styles with
|
|
841
|
+
A highlight style associates CSS styles with highlighting
|
|
832
842
|
[tags](https://lezer.codemirror.net/docs/ref#highlight.Tag).
|
|
833
843
|
*/
|
|
834
844
|
declare class HighlightStyle implements Highlighter {
|
package/dist/index.d.ts
CHANGED
|
@@ -143,6 +143,7 @@ parsers.
|
|
|
143
143
|
*/
|
|
144
144
|
declare class LRLanguage extends Language {
|
|
145
145
|
readonly parser: LRParser;
|
|
146
|
+
private languageData;
|
|
146
147
|
private constructor();
|
|
147
148
|
/**
|
|
148
149
|
Define a language from a parser.
|
|
@@ -168,9 +169,18 @@ declare class LRLanguage extends Language {
|
|
|
168
169
|
}): LRLanguage;
|
|
169
170
|
/**
|
|
170
171
|
Create a new instance of this language with a reconfigured
|
|
171
|
-
version of its parser
|
|
172
|
+
version of its parser, language data, and name.
|
|
173
|
+
|
|
174
|
+
When `languageData` is given, any property set to `undefined`
|
|
175
|
+
in it will be removed from the language's
|
|
176
|
+
[data](https://codemirror.net/6/docs/ref/#state.EditorState.languageDataAt), any other property
|
|
177
|
+
is added.
|
|
172
178
|
*/
|
|
173
|
-
configure(options: ParserConfig
|
|
179
|
+
configure(options: ParserConfig & {
|
|
180
|
+
languageData?: {
|
|
181
|
+
[name: string]: any;
|
|
182
|
+
};
|
|
183
|
+
}, name?: string): LRLanguage;
|
|
174
184
|
get allowsNesting(): boolean;
|
|
175
185
|
}
|
|
176
186
|
/**
|
|
@@ -828,7 +838,7 @@ to fold or unfold the line).
|
|
|
828
838
|
declare function foldGutter(config?: FoldGutterConfig): Extension;
|
|
829
839
|
|
|
830
840
|
/**
|
|
831
|
-
A highlight style associates CSS styles with
|
|
841
|
+
A highlight style associates CSS styles with highlighting
|
|
832
842
|
[tags](https://lezer.codemirror.net/docs/ref#highlight.Tag).
|
|
833
843
|
*/
|
|
834
844
|
declare class HighlightStyle implements Highlighter {
|
package/dist/index.js
CHANGED
|
@@ -156,25 +156,41 @@ A subclass of [`Language`](https://codemirror.net/6/docs/ref/#language.Language)
|
|
|
156
156
|
parsers.
|
|
157
157
|
*/
|
|
158
158
|
class LRLanguage extends Language {
|
|
159
|
-
constructor(data, parser, name) {
|
|
160
|
-
super(data, parser, [], name);
|
|
159
|
+
constructor(data, parser, languageData, name) {
|
|
160
|
+
super(data, parser, languageData ? [data.of(languageData)] : [], name);
|
|
161
161
|
this.parser = parser;
|
|
162
|
+
this.languageData = languageData;
|
|
162
163
|
}
|
|
163
164
|
/**
|
|
164
165
|
Define a language from a parser.
|
|
165
166
|
*/
|
|
166
167
|
static define(spec) {
|
|
167
|
-
let data = defineLanguageFacet(
|
|
168
|
+
let data = defineLanguageFacet();
|
|
168
169
|
return new LRLanguage(data, spec.parser.configure({
|
|
169
170
|
props: [languageDataProp.add(type => type.isTop ? data : undefined)]
|
|
170
|
-
}), spec.name);
|
|
171
|
+
}), spec.languageData || null, spec.name);
|
|
171
172
|
}
|
|
172
173
|
/**
|
|
173
174
|
Create a new instance of this language with a reconfigured
|
|
174
|
-
version of its parser
|
|
175
|
+
version of its parser, language data, and name.
|
|
176
|
+
|
|
177
|
+
When `languageData` is given, any property set to `undefined`
|
|
178
|
+
in it will be removed from the language's
|
|
179
|
+
[data](https://codemirror.net/6/docs/ref/#state.EditorState.languageDataAt), any other property
|
|
180
|
+
is added.
|
|
175
181
|
*/
|
|
176
182
|
configure(options, name) {
|
|
177
|
-
|
|
183
|
+
let { languageData } = this;
|
|
184
|
+
if (options.languageData) {
|
|
185
|
+
languageData = {};
|
|
186
|
+
for (let prop in options.languageData)
|
|
187
|
+
if (options.languageData[prop] !== undefined)
|
|
188
|
+
languageData[prop] = options.languageData[prop];
|
|
189
|
+
for (let prop in this.languageData)
|
|
190
|
+
if (!(prop in options.languageData))
|
|
191
|
+
languageData[prop] = this.languageData[prop];
|
|
192
|
+
}
|
|
193
|
+
return new LRLanguage(this.data, this.parser.configure(options), languageData, name || this.name);
|
|
178
194
|
}
|
|
179
195
|
get allowsNesting() { return this.parser.hasWrappers(); }
|
|
180
196
|
}
|
|
@@ -1655,7 +1671,7 @@ const baseTheme$1 = /*@__PURE__*/EditorView.baseTheme({
|
|
|
1655
1671
|
});
|
|
1656
1672
|
|
|
1657
1673
|
/**
|
|
1658
|
-
A highlight style associates CSS styles with
|
|
1674
|
+
A highlight style associates CSS styles with highlighting
|
|
1659
1675
|
[tags](https://lezer.codemirror.net/docs/ref#highlight.Tag).
|
|
1660
1676
|
*/
|
|
1661
1677
|
class HighlightStyle {
|
|
@@ -2207,14 +2223,14 @@ A [language](https://codemirror.net/6/docs/ref/#language.Language) class based o
|
|
|
2207
2223
|
*/
|
|
2208
2224
|
class StreamLanguage extends Language {
|
|
2209
2225
|
constructor(parser) {
|
|
2210
|
-
let data = defineLanguageFacet(
|
|
2226
|
+
let data = defineLanguageFacet();
|
|
2211
2227
|
let p = fullParser(parser), self;
|
|
2212
2228
|
let impl = new class extends Parser {
|
|
2213
2229
|
createParse(input, fragments, ranges) {
|
|
2214
2230
|
return new Parse(self, input, fragments, ranges);
|
|
2215
2231
|
}
|
|
2216
2232
|
};
|
|
2217
|
-
super(data, impl, [], parser.name);
|
|
2233
|
+
super(data, impl, parser.languageData ? [data.of(parser.languageData)] : [], parser.name);
|
|
2218
2234
|
this.topNode = docID(data, this);
|
|
2219
2235
|
self = this;
|
|
2220
2236
|
this.streamParser = p;
|
|
@@ -2338,7 +2354,7 @@ class Parse {
|
|
|
2338
2354
|
advance() {
|
|
2339
2355
|
let context = ParseContext.get();
|
|
2340
2356
|
let parseEnd = this.stoppedAt == null ? this.to : Math.min(this.to, this.stoppedAt);
|
|
2341
|
-
let end = Math.min(parseEnd, this.chunkStart +
|
|
2357
|
+
let end = Math.min(parseEnd, this.chunkStart + 512 /* C.ChunkSize */);
|
|
2342
2358
|
if (context)
|
|
2343
2359
|
end = Math.min(end, context.viewport.to);
|
|
2344
2360
|
while (this.parsedPos < end)
|
|
@@ -2444,7 +2460,7 @@ class Parse {
|
|
|
2444
2460
|
length: this.parsedPos - this.chunkStart,
|
|
2445
2461
|
nodeSet,
|
|
2446
2462
|
topID: 0,
|
|
2447
|
-
maxBufferLength:
|
|
2463
|
+
maxBufferLength: 512 /* C.ChunkSize */,
|
|
2448
2464
|
reused: this.chunkReused
|
|
2449
2465
|
});
|
|
2450
2466
|
tree = new Tree(tree.type, tree.children, tree.positions, tree.length, [[this.lang.stateAfter, this.lang.streamParser.copyState(this.state)]]);
|