@codemirror/language 6.12.0 → 6.12.1

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 CHANGED
@@ -1,8 +1,8 @@
1
- ## 6.12.0 (2025-12-22)
1
+ ## 6.12.1 (2025-12-22)
2
2
 
3
- ### New features
3
+ ### Bug fixes
4
4
 
5
- `LRLanguage.reconfigure` now supports changing the language data associated with the language.
5
+ Improve finding inner language in syntax tree when the nested parse has been marked as bracketed.
6
6
 
7
7
  ## 6.11.3 (2025-08-15)
8
8
 
package/dist/index.cjs CHANGED
@@ -146,7 +146,7 @@ Language.setState = state.StateEffect.define();
146
146
  function topNodeAt(state, pos, side) {
147
147
  let topLang = state.facet(language), tree = syntaxTree(state).topNode;
148
148
  if (!topLang || topLang.allowsNesting) {
149
- for (let node = tree; node; node = node.enter(pos, side, common.IterMode.ExcludeBuffers))
149
+ for (let node = tree; node; node = node.enter(pos, side, common.IterMode.ExcludeBuffers | common.IterMode.EnterBracketed))
150
150
  if (node.type.isTop)
151
151
  tree = node;
152
152
  }
@@ -158,41 +158,25 @@ 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, languageData, name) {
162
- super(data, parser, languageData ? [data.of(languageData)] : [], name);
161
+ constructor(data, parser, name) {
162
+ super(data, parser, [], name);
163
163
  this.parser = parser;
164
- this.languageData = languageData;
165
164
  }
166
165
  /**
167
166
  Define a language from a parser.
168
167
  */
169
168
  static define(spec) {
170
- let data = defineLanguageFacet();
169
+ let data = defineLanguageFacet(spec.languageData);
171
170
  return new LRLanguage(data, spec.parser.configure({
172
171
  props: [languageDataProp.add(type => type.isTop ? data : undefined)]
173
- }), spec.languageData || null, spec.name);
172
+ }), spec.name);
174
173
  }
175
174
  /**
176
175
  Create a new instance of this language with a reconfigured
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.
176
+ version of its parser and optionally a new name.
183
177
  */
184
178
  configure(options, name) {
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);
179
+ return new LRLanguage(this.data, this.parser.configure(options), name || this.name);
196
180
  }
197
181
  get allowsNesting() { return this.parser.hasWrappers(); }
198
182
  }
@@ -2225,14 +2209,14 @@ A [language](https://codemirror.net/6/docs/ref/#language.Language) class based o
2225
2209
  */
2226
2210
  class StreamLanguage extends Language {
2227
2211
  constructor(parser) {
2228
- let data = defineLanguageFacet();
2212
+ let data = defineLanguageFacet(parser.languageData);
2229
2213
  let p = fullParser(parser), self;
2230
2214
  let impl = new class extends common.Parser {
2231
2215
  createParse(input, fragments, ranges) {
2232
2216
  return new Parse(self, input, fragments, ranges);
2233
2217
  }
2234
2218
  };
2235
- super(data, impl, parser.languageData ? [data.of(parser.languageData)] : [], parser.name);
2219
+ super(data, impl, [], parser.name);
2236
2220
  this.topNode = docID(data, this);
2237
2221
  self = this;
2238
2222
  this.streamParser = p;
package/dist/index.d.cts CHANGED
@@ -143,7 +143,6 @@ parsers.
143
143
  */
144
144
  declare class LRLanguage extends Language {
145
145
  readonly parser: LRParser;
146
- private languageData;
147
146
  private constructor();
148
147
  /**
149
148
  Define a language from a parser.
@@ -169,18 +168,9 @@ declare class LRLanguage extends Language {
169
168
  }): LRLanguage;
170
169
  /**
171
170
  Create a new instance of this language with a reconfigured
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.
171
+ version of its parser and optionally a new name.
178
172
  */
179
- configure(options: ParserConfig & {
180
- languageData?: {
181
- [name: string]: any;
182
- };
183
- }, name?: string): LRLanguage;
173
+ configure(options: ParserConfig, name?: string): LRLanguage;
184
174
  get allowsNesting(): boolean;
185
175
  }
186
176
  /**
package/dist/index.d.ts CHANGED
@@ -143,7 +143,6 @@ parsers.
143
143
  */
144
144
  declare class LRLanguage extends Language {
145
145
  readonly parser: LRParser;
146
- private languageData;
147
146
  private constructor();
148
147
  /**
149
148
  Define a language from a parser.
@@ -169,18 +168,9 @@ declare class LRLanguage extends Language {
169
168
  }): LRLanguage;
170
169
  /**
171
170
  Create a new instance of this language with a reconfigured
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.
171
+ version of its parser and optionally a new name.
178
172
  */
179
- configure(options: ParserConfig & {
180
- languageData?: {
181
- [name: string]: any;
182
- };
183
- }, name?: string): LRLanguage;
173
+ configure(options: ParserConfig, name?: string): LRLanguage;
184
174
  get allowsNesting(): boolean;
185
175
  }
186
176
  /**
package/dist/index.js CHANGED
@@ -144,7 +144,7 @@ Language.setState = /*@__PURE__*/StateEffect.define();
144
144
  function topNodeAt(state, pos, side) {
145
145
  let topLang = state.facet(language), tree = syntaxTree(state).topNode;
146
146
  if (!topLang || topLang.allowsNesting) {
147
- for (let node = tree; node; node = node.enter(pos, side, IterMode.ExcludeBuffers))
147
+ for (let node = tree; node; node = node.enter(pos, side, IterMode.ExcludeBuffers | IterMode.EnterBracketed))
148
148
  if (node.type.isTop)
149
149
  tree = node;
150
150
  }
@@ -156,41 +156,25 @@ 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, languageData, name) {
160
- super(data, parser, languageData ? [data.of(languageData)] : [], name);
159
+ constructor(data, parser, name) {
160
+ super(data, parser, [], name);
161
161
  this.parser = parser;
162
- this.languageData = languageData;
163
162
  }
164
163
  /**
165
164
  Define a language from a parser.
166
165
  */
167
166
  static define(spec) {
168
- let data = defineLanguageFacet();
167
+ let data = defineLanguageFacet(spec.languageData);
169
168
  return new LRLanguage(data, spec.parser.configure({
170
169
  props: [languageDataProp.add(type => type.isTop ? data : undefined)]
171
- }), spec.languageData || null, spec.name);
170
+ }), spec.name);
172
171
  }
173
172
  /**
174
173
  Create a new instance of this language with a reconfigured
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.
174
+ version of its parser and optionally a new name.
181
175
  */
182
176
  configure(options, name) {
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);
177
+ return new LRLanguage(this.data, this.parser.configure(options), name || this.name);
194
178
  }
195
179
  get allowsNesting() { return this.parser.hasWrappers(); }
196
180
  }
@@ -2223,14 +2207,14 @@ A [language](https://codemirror.net/6/docs/ref/#language.Language) class based o
2223
2207
  */
2224
2208
  class StreamLanguage extends Language {
2225
2209
  constructor(parser) {
2226
- let data = defineLanguageFacet();
2210
+ let data = defineLanguageFacet(parser.languageData);
2227
2211
  let p = fullParser(parser), self;
2228
2212
  let impl = new class extends Parser {
2229
2213
  createParse(input, fragments, ranges) {
2230
2214
  return new Parse(self, input, fragments, ranges);
2231
2215
  }
2232
2216
  };
2233
- super(data, impl, parser.languageData ? [data.of(parser.languageData)] : [], parser.name);
2217
+ super(data, impl, [], parser.name);
2234
2218
  this.topNode = docID(data, this);
2235
2219
  self = this;
2236
2220
  this.streamParser = p;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@codemirror/language",
3
- "version": "6.12.0",
3
+ "version": "6.12.1",
4
4
  "description": "Language support infrastructure for the CodeMirror code editor",
5
5
  "scripts": {
6
6
  "test": "cm-runtests",
@@ -28,7 +28,7 @@
28
28
  "dependencies": {
29
29
  "@codemirror/state": "^6.0.0",
30
30
  "@codemirror/view": "^6.23.0",
31
- "@lezer/common": "^1.1.0",
31
+ "@lezer/common": "^1.5.0",
32
32
  "@lezer/highlight": "^1.0.0",
33
33
  "@lezer/lr": "^1.0.0",
34
34
  "style-mod": "^4.0.0"