@jupyterlab/codemirror 4.0.0-rc.0 → 4.0.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.
@@ -1,6 +1,6 @@
1
1
  // Copyright (c) Jupyter Development Team.
2
2
  // Distributed under the terms of the Modified BSD License.
3
- import { StateEffect, StateField } from '@codemirror/state';
3
+ import { EditorSelection, StateEffect, StateField } from '@codemirror/state';
4
4
  import { Decoration, EditorView } from '@codemirror/view';
5
5
  import { GenericSearchProvider, TextSearchEngine } from '@jupyterlab/documentsearch';
6
6
  import { Signal } from '@lumino/signaling';
@@ -114,7 +114,7 @@ export class EditorSearchProvider {
114
114
  }
115
115
  }
116
116
  /**
117
- * Set whether search should be limitted to specified selection.
117
+ * Set whether search should be limitted to specified text selection.
118
118
  */
119
119
  async setSearchSelection(selection) {
120
120
  if (this._inSelection === selection) {
@@ -124,6 +124,19 @@ export class EditorSearchProvider {
124
124
  await this.updateCodeMirror(this.model.sharedModel.getSource());
125
125
  this._stateChanged.emit();
126
126
  }
127
+ /**
128
+ * Set whether user selection should be protected from modifications.
129
+ *
130
+ * If disabled, the selection will be updated on search and on editor focus
131
+ * to cover the current match. We need to protect selection from modifications
132
+ * for both: search in text and search in cells; since `setSearchSelection`
133
+ * is only telling us about search in text, we need to have an additional
134
+ * way to signal that either search in text or in cells is active, or for
135
+ * any other reason selection range should be protected.
136
+ */
137
+ setProtectSelection(v) {
138
+ this.cmHandler.protectSelection = v;
139
+ }
127
140
  /**
128
141
  * Initialize the search using the provided options. Should update the UI
129
142
  * to highlight all matches and "select" the first match.
@@ -152,13 +165,12 @@ export class EditorSearchProvider {
152
165
  *
153
166
  * @returns The next match if there is one.
154
167
  */
155
- async highlightNext(loop = true, fromCursor = false) {
168
+ async highlightNext(loop = true, options) {
156
169
  if (this.matchesCount === 0 || !this.isActive) {
157
170
  this.currentIndex = null;
158
171
  }
159
172
  else {
160
- // This starts from the cursor position if `fromCursor` is true
161
- let match = await this.cmHandler.highlightNext(fromCursor);
173
+ let match = await this.cmHandler.highlightNext(options);
162
174
  if (match) {
163
175
  this.currentIndex = this.cmHandler.currentIndex;
164
176
  }
@@ -177,13 +189,12 @@ export class EditorSearchProvider {
177
189
  *
178
190
  * @returns The previous match if there is one.
179
191
  */
180
- async highlightPrevious(loop = true, fromCursor = false) {
192
+ async highlightPrevious(loop = true, options) {
181
193
  if (this.matchesCount === 0 || !this.isActive) {
182
194
  this.currentIndex = null;
183
195
  }
184
196
  else {
185
- // This starts from the cursor position if `fromCursor` is true
186
- let match = await this.cmHandler.highlightPrevious(fromCursor);
197
+ let match = await this.cmHandler.highlightPrevious(options);
187
198
  if (match) {
188
199
  this.currentIndex = this.cmHandler.currentIndex;
189
200
  }
@@ -315,7 +326,11 @@ export class EditorSearchProvider {
315
326
  // A special case to always have a current match when in line selection mode.
316
327
  if (this.cmHandler.currentIndex === null &&
317
328
  this.cmHandler.matches.length > 0) {
318
- await this.cmHandler.highlightNext(true, false);
329
+ await this.cmHandler.highlightNext({
330
+ from: 'selection',
331
+ select: false,
332
+ scroll: false
333
+ });
319
334
  }
320
335
  this.currentIndex = this.cmHandler.currentIndex;
321
336
  }
@@ -336,9 +351,9 @@ export class EditorSearchProvider {
336
351
  *
337
352
  * **NOTES:**
338
353
  * - to retain the selection visibility `drawSelection` extension is needed.
339
- * - highlighting starts from the cursor (if editor is focused, cursor moved,
340
- * or `fromCursor` argument is set to `true`), or from last "current" match
341
- * otherwise.
354
+ * - highlighting starts from the cursor (if editor is focused and `from` is set
355
+ * to `'auto'`, cursor moved, or `from` argument is set to `'selection'` or
356
+ * `'selection-start'`), or from last "current" match otherwise.
342
357
  * - `currentIndex` is the (readonly) source of truth for the current match.
343
358
  */
344
359
  export class CodeMirrorSearchHighlighter {
@@ -378,6 +393,8 @@ export class CodeMirrorSearchHighlighter {
378
393
  if (ef.is(this._highlightEffect)) {
379
394
  const e = ef;
380
395
  if (e.value.matches.length) {
396
+ // Note: nesting will vary; sometimes `.cm-searching` will be
397
+ // inside `.jp-current-match`, sometime the other way round.
381
398
  highlights = highlights.update({
382
399
  add: e.value.matches.map(m => this._highlightMark.range(m.position, m.position + m.text.length)),
383
400
  // filter out old marks
@@ -401,6 +418,12 @@ export class CodeMirrorSearchHighlighter {
401
418
  },
402
419
  provide: f => EditorView.decorations.from(f)
403
420
  });
421
+ this._domEventHandlers = EditorView.domEventHandlers({
422
+ focus: () => {
423
+ // Set cursor on active match when editor gets focused.
424
+ this._selectCurrentMatch();
425
+ }
426
+ });
404
427
  }
405
428
  /**
406
429
  * The current index of the selected match.
@@ -420,7 +443,16 @@ export class CodeMirrorSearchHighlighter {
420
443
  this._currentIndex > this._matches.length) {
421
444
  this._currentIndex = this._matches.length > 0 ? 0 : null;
422
445
  }
423
- this._highlightCurrentMatch(true);
446
+ this._highlightCurrentMatch({ select: false });
447
+ }
448
+ /**
449
+ * Whether the cursor/selection should not be modified.
450
+ */
451
+ get protectSelection() {
452
+ return this._protectSelection;
453
+ }
454
+ set protectSelection(v) {
455
+ this._protectSelection = v;
424
456
  }
425
457
  /**
426
458
  * Clear all highlighted matches
@@ -447,9 +479,10 @@ export class CodeMirrorSearchHighlighter {
447
479
  *
448
480
  * @returns The next match if available
449
481
  */
450
- highlightNext(fromCursor = false, doNotModifySelection = false) {
451
- this._currentIndex = this._findNext(false, fromCursor);
452
- this._highlightCurrentMatch(doNotModifySelection);
482
+ highlightNext(options) {
483
+ var _a;
484
+ this._currentIndex = this._findNext(false, (_a = options === null || options === void 0 ? void 0 : options.from) !== null && _a !== void 0 ? _a : 'auto');
485
+ this._highlightCurrentMatch(options);
453
486
  return Promise.resolve(this._currentIndex !== null
454
487
  ? this._matches[this._currentIndex]
455
488
  : undefined);
@@ -459,9 +492,10 @@ export class CodeMirrorSearchHighlighter {
459
492
  *
460
493
  * @returns The previous match if available
461
494
  */
462
- highlightPrevious(fromCursor = false) {
463
- this._currentIndex = this._findNext(true, fromCursor);
464
- this._highlightCurrentMatch();
495
+ highlightPrevious(options) {
496
+ var _a;
497
+ this._currentIndex = this._findNext(true, (_a = options === null || options === void 0 ? void 0 : options.from) !== null && _a !== void 0 ? _a : 'auto');
498
+ this._highlightCurrentMatch(options);
465
499
  return Promise.resolve(this._currentIndex !== null
466
500
  ? this._matches[this._currentIndex]
467
501
  : undefined);
@@ -480,10 +514,23 @@ export class CodeMirrorSearchHighlighter {
480
514
  if (this._currentIndex !== null) {
481
515
  this._highlightCurrentMatch();
482
516
  }
517
+ this._cm.editor.dispatch({
518
+ effects: StateEffect.appendConfig.of(this._domEventHandlers)
519
+ });
483
520
  this._refresh();
484
521
  }
485
522
  }
486
- _selectCurrentMatch() {
523
+ _selectCurrentMatch(scroll = true) {
524
+ // This method has two responsibilities:
525
+ // 1) Scroll the current match into the view - useful for long lines,
526
+ // and file editors with more lines that fit on the screen
527
+ // 2) When user has focus on the editor (not search box) and presses
528
+ // ctrl + g/ctrl + shift + g to jump to next match they want their
529
+ // cursor to jump too.
530
+ // We execute (1) and (2) together as CodeMirror has a special code path
531
+ // to handle both in a single dispatch.
532
+ // The (2) case is inapplicable to search in selection mode, as it would
533
+ // invalidate the query selection, so in that case we only execute (1).
487
534
  const match = this._current;
488
535
  if (!match) {
489
536
  return;
@@ -491,21 +538,32 @@ export class CodeMirrorSearchHighlighter {
491
538
  if (!this._cm) {
492
539
  return;
493
540
  }
494
- const selection = this._cm.editor.state.selection.main;
495
- if (selection.from === match.position &&
496
- selection.to === match.position + match.text.length) {
497
- return;
498
- }
499
541
  const cursor = {
500
542
  anchor: match.position,
501
543
  head: match.position + match.text.length
502
544
  };
503
- this._cm.editor.dispatch({
504
- selection: cursor,
505
- scrollIntoView: true
506
- });
545
+ const selection = this._cm.editor.state.selection.main;
546
+ if ((selection.from === match.position &&
547
+ selection.to === match.position + match.text.length) ||
548
+ this._protectSelection) {
549
+ // Correct selection is already set or search is restricted to selection:
550
+ // scroll without changing the selection.
551
+ if (scroll) {
552
+ this._cm.editor.dispatch({
553
+ effects: EditorView.scrollIntoView(EditorSelection.range(cursor.anchor, cursor.head))
554
+ });
555
+ return;
556
+ }
557
+ }
558
+ else {
559
+ this._cm.editor.dispatch({
560
+ selection: cursor,
561
+ scrollIntoView: scroll
562
+ });
563
+ }
507
564
  }
508
- _highlightCurrentMatch(doNotModifySelection = false) {
565
+ _highlightCurrentMatch(options) {
566
+ var _a, _b, _c;
509
567
  if (!this._cm) {
510
568
  // no-op
511
569
  return;
@@ -514,13 +572,15 @@ export class CodeMirrorSearchHighlighter {
514
572
  if (this._currentIndex !== null) {
515
573
  const match = this.matches[this._currentIndex];
516
574
  this._current = match;
517
- // Do not change selection/scroll if user is selecting
518
- if (!doNotModifySelection) {
575
+ // We do not change selection nor scroll if:
576
+ // - user is selecting text,
577
+ // - document was modified
578
+ if ((_a = options === null || options === void 0 ? void 0 : options.select) !== null && _a !== void 0 ? _a : true) {
519
579
  if (this._cm.hasFocus()) {
520
580
  // If editor is focused we actually set the cursor on the match.
521
- this._selectCurrentMatch();
581
+ this._selectCurrentMatch((_b = options === null || options === void 0 ? void 0 : options.scroll) !== null && _b !== void 0 ? _b : true);
522
582
  }
523
- else {
583
+ else if ((_c = options === null || options === void 0 ? void 0 : options.scroll) !== null && _c !== void 0 ? _c : true) {
524
584
  // otherwise we just scroll to preserve the selection.
525
585
  this._cm.editor.dispatch({
526
586
  effects: EditorView.scrollIntoView(match.position)
@@ -546,26 +606,26 @@ export class CodeMirrorSearchHighlighter {
546
606
  ];
547
607
  if (!this._cm.state.field(this._highlightField, false)) {
548
608
  effects.push(StateEffect.appendConfig.of([this._highlightField]));
549
- // set cursor on active match when editor gets focused
550
- const focusExtension = EditorView.domEventHandlers({
551
- focus: () => {
552
- this._selectCurrentMatch();
553
- }
554
- });
555
- effects.push(StateEffect.appendConfig.of([focusExtension]));
556
609
  }
557
610
  this._cm.editor.dispatch({ effects });
558
611
  }
559
- _findNext(reverse, fromCursor = false) {
612
+ _findNext(reverse, from = 'auto') {
560
613
  if (this._matches.length === 0) {
561
614
  // No-op
562
615
  return null;
563
616
  }
564
617
  let lastPosition = 0;
565
- if (this._cm.hasFocus() || fromCursor) {
618
+ if ((from === 'auto' && this._cm.hasFocus()) || from === 'selection') {
566
619
  const cursor = this._cm.state.selection.main;
567
620
  lastPosition = reverse ? cursor.anchor : cursor.head;
568
621
  }
622
+ else if (from === 'selection-start') {
623
+ const cursor = this._cm.state.selection.main;
624
+ lastPosition = Math.min(cursor.anchor, cursor.head);
625
+ }
626
+ else if (from === 'start') {
627
+ lastPosition = 0;
628
+ }
569
629
  else if (this._current) {
570
630
  lastPosition = reverse
571
631
  ? this._current.position
@@ -1 +1 @@
1
- {"version":3,"file":"searchprovider.js","sourceRoot":"","sources":["../src/searchprovider.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"searchprovider.js","sourceRoot":"","sources":["../src/searchprovider.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@jupyterlab/codemirror",
3
- "version": "4.0.0-rc.0",
3
+ "version": "4.0.0",
4
4
  "description": "JupyterLab - CodeMirror Editor Provider",
5
5
  "homepage": "https://github.com/jupyterlab/jupyterlab",
6
6
  "bugs": {
@@ -59,27 +59,28 @@
59
59
  "@codemirror/state": "^6.2.0",
60
60
  "@codemirror/view": "^6.9.6",
61
61
  "@jupyter/ydoc": "^1.0.2",
62
- "@jupyterlab/codeeditor": "^4.0.0-rc.0",
63
- "@jupyterlab/coreutils": "^6.0.0-rc.0",
64
- "@jupyterlab/documentsearch": "^4.0.0-rc.0",
65
- "@jupyterlab/nbformat": "^4.0.0-rc.0",
66
- "@jupyterlab/translation": "^4.0.0-rc.0",
62
+ "@jupyterlab/codeeditor": "^4.0.0",
63
+ "@jupyterlab/coreutils": "^6.0.0",
64
+ "@jupyterlab/documentsearch": "^4.0.0",
65
+ "@jupyterlab/nbformat": "^4.0.0",
66
+ "@jupyterlab/translation": "^4.0.0",
67
67
  "@lezer/common": "^1.0.2",
68
68
  "@lezer/generator": "^1.2.2",
69
69
  "@lezer/highlight": "^1.1.4",
70
+ "@lezer/markdown": "^1.0.2",
70
71
  "@lumino/coreutils": "^2.1.1",
71
72
  "@lumino/disposable": "^2.1.1",
72
73
  "@lumino/signaling": "^2.1.1",
73
74
  "yjs": "^13.5.40"
74
75
  },
75
76
  "devDependencies": {
76
- "@jupyterlab/testing": "^4.0.0-rc.0",
77
+ "@jupyterlab/testing": "^4.0.0",
77
78
  "@lezer/generator": "^1.2.2",
78
79
  "@lezer/lr": "^1.3.3",
79
80
  "@types/jest": "^29.2.0",
80
81
  "jest": "^29.2.0",
81
82
  "rimraf": "~3.0.0",
82
- "typedoc": "~0.24.1",
83
+ "typedoc": "~0.24.7",
83
84
  "typescript": "~5.0.4"
84
85
  },
85
86
  "publishConfig": {
package/src/editor.ts CHANGED
@@ -18,7 +18,6 @@ import { CodeEditor } from '@jupyterlab/codeeditor';
18
18
  import { SyntaxNodeRef } from '@lezer/common';
19
19
  import { UUID } from '@lumino/coreutils';
20
20
  import { Signal } from '@lumino/signaling';
21
- import './codemirror-ipythongfm';
22
21
  import { ExtensionsHandler } from './extension';
23
22
  import { EditorLanguageRegistry } from './language';
24
23
  import {
@@ -492,16 +491,14 @@ export class CodeMirrorEditor implements CodeEditor.IEditor {
492
491
  const tree = ensureSyntaxTree(this.state, this.doc.length);
493
492
  if (tree) {
494
493
  tree.iterate({
495
- enter: (node: SyntaxNodeRef) => {
496
- // If it has a child, it is not a leaf, but we still want to enter
497
- if (node.node.firstChild !== null) {
498
- return true;
494
+ enter: (ref: SyntaxNodeRef) => {
495
+ if (ref.node.firstChild === null) {
496
+ tokens.push({
497
+ value: this.state.sliceDoc(ref.from, ref.to),
498
+ offset: ref.from,
499
+ type: ref.name
500
+ });
499
501
  }
500
- tokens.push({
501
- value: this.state.sliceDoc(node.from, node.to),
502
- offset: node.from,
503
- type: node.name
504
- });
505
502
  return true;
506
503
  }
507
504
  });
@@ -517,32 +514,29 @@ export class CodeMirrorEditor implements CodeEditor.IEditor {
517
514
  let token: CodeEditor.IToken | null = null;
518
515
  if (tree) {
519
516
  tree.iterate({
520
- enter: (node: SyntaxNodeRef) => {
521
- // If it has a child, it is not a leaf, but we still want to enter
522
- if (node.node.firstChild !== null) {
517
+ enter: (ref: SyntaxNodeRef) => {
518
+ // If a token has already been discovered, stop iterating.
519
+ if (token) {
520
+ return false;
521
+ }
522
+ // If it is not a leaf, keep iterating.
523
+ if (ref.node.firstChild) {
523
524
  return true;
524
525
  }
525
- if (offset >= node.from && offset <= node.to) {
526
+ // If the relevant leaf token has been found, stop iterating.
527
+ if (offset >= ref.from && offset <= ref.to) {
526
528
  token = {
527
- value: this.state.sliceDoc(node.from, node.to),
528
- offset: node.from,
529
- type: node.name
529
+ value: this.state.sliceDoc(ref.from, ref.to),
530
+ offset: ref.from,
531
+ type: ref.name
530
532
  };
531
- // We have just found the relevant leaf token, no need to iterate further
532
533
  return false;
533
534
  }
534
535
  return true;
535
536
  }
536
537
  });
537
538
  }
538
- if (token !== null) {
539
- return token;
540
- } else {
541
- return {
542
- value: '',
543
- offset: offset
544
- };
545
- }
539
+ return token || { offset, value: '' };
546
540
  }
547
541
 
548
542
  /**
package/src/extension.ts CHANGED
@@ -597,7 +597,7 @@ export namespace EditorExtensionRegistry {
597
597
  } = {}
598
598
  ): ReadonlyArray<Readonly<IEditorExtensionFactory<any>>> {
599
599
  const { themes, translator } = options;
600
- const trans = (translator ?? nullTranslator).load('jupyter');
600
+ const trans = (translator ?? nullTranslator).load('jupyterlab');
601
601
  const extensions: IEditorExtensionFactory<any>[] = [
602
602
  Object.freeze({
603
603
  name: 'autoClosingBrackets',
@@ -4,5 +4,6 @@
4
4
  */
5
5
 
6
6
  export * from './customStyle';
7
+ export * from './ipython-md';
7
8
  export * from './rulers';
8
9
  export * from './ybinding';
@@ -0,0 +1,158 @@
1
+ // Copyright (c) Jupyter Development Team.
2
+ // Distributed under the terms of the Modified BSD License.
3
+
4
+ import { parseMixed, Parser } from '@lezer/common';
5
+ import { tags } from '@lezer/highlight';
6
+ import {
7
+ DelimiterType,
8
+ InlineContext,
9
+ MarkdownConfig,
10
+ NodeSpec
11
+ } from '@lezer/markdown';
12
+
13
+ // Mathematical expression delimiters
14
+ const INLINE_MATH_DOLLAR = 'InlineMathDollar';
15
+ const INLINE_MATH_BRACKET = 'InlineMathBracket';
16
+ const BLOCK_MATH_DOLLAR = 'BlockMathDollar';
17
+ const BLOCK_MATH_BRACKET = 'BlockMathBracket';
18
+
19
+ /**
20
+ * Lengh of the delimiter for a math expression
21
+ */
22
+ const DELIMITER_LENGTH: Record<string, number> = {
23
+ [INLINE_MATH_DOLLAR]: 1,
24
+ [INLINE_MATH_BRACKET]: 3,
25
+ [BLOCK_MATH_DOLLAR]: 2,
26
+ [BLOCK_MATH_BRACKET]: 3
27
+ };
28
+
29
+ /**
30
+ * Delimiters for math expressions
31
+ */
32
+ // Delimiters must be defined as constant because they are used in object match tests
33
+ const DELIMITERS = Object.keys(DELIMITER_LENGTH).reduce<
34
+ Record<string, DelimiterType>
35
+ >((agg, name) => {
36
+ agg[name] = { mark: `${name}Mark`, resolve: name };
37
+ return agg;
38
+ }, {});
39
+
40
+ /**
41
+ * Define an IPython mathematical expression parser for Markdown.
42
+ *
43
+ * @param latexParser CodeMirror {@link Parser} for LaTeX mathematical expression
44
+ * @returns Markdown extension
45
+ */
46
+ export function parseMathIPython(latexParser?: Parser): MarkdownConfig {
47
+ const defineNodes = new Array<NodeSpec>();
48
+ Object.keys(DELIMITER_LENGTH).forEach(name => {
49
+ defineNodes.push(
50
+ {
51
+ name,
52
+ style: tags.emphasis
53
+ },
54
+ { name: `${name}Mark`, style: tags.processingInstruction }
55
+ );
56
+ });
57
+ return {
58
+ defineNodes,
59
+ parseInline: [
60
+ {
61
+ name: BLOCK_MATH_DOLLAR,
62
+ parse(cx: InlineContext, next: number, pos: number): number {
63
+ if (next != 36 /* '$' */ || cx.char(pos + 1) != 36) {
64
+ return -1;
65
+ }
66
+
67
+ return cx.addDelimiter(
68
+ DELIMITERS[BLOCK_MATH_DOLLAR],
69
+ pos,
70
+ pos + DELIMITER_LENGTH[BLOCK_MATH_DOLLAR],
71
+ true,
72
+ true
73
+ );
74
+ }
75
+ },
76
+ {
77
+ name: INLINE_MATH_DOLLAR,
78
+ parse(cx: InlineContext, next: number, pos: number): number {
79
+ if (next != 36 /* '$' */ || cx.char(pos + 1) == 36) {
80
+ return -1;
81
+ }
82
+
83
+ return cx.addDelimiter(
84
+ DELIMITERS[INLINE_MATH_DOLLAR],
85
+ pos,
86
+ pos + DELIMITER_LENGTH[INLINE_MATH_DOLLAR],
87
+ true,
88
+ true
89
+ );
90
+ }
91
+ },
92
+ // Inline expression wrapped in \\( ... \\)
93
+ {
94
+ name: INLINE_MATH_BRACKET,
95
+ before: 'Escape', // Search for this delimiter before the escape character
96
+ parse(cx: InlineContext, next: number, pos: number): number {
97
+ if (
98
+ next != 92 /* '\' */ ||
99
+ cx.char(pos + 1) != 92 ||
100
+ ![40 /* '(' */, 41 /* ')' */].includes(cx.char(pos + 2))
101
+ ) {
102
+ return -1;
103
+ }
104
+
105
+ return cx.addDelimiter(
106
+ DELIMITERS[INLINE_MATH_BRACKET],
107
+ pos,
108
+ pos + DELIMITER_LENGTH[INLINE_MATH_BRACKET],
109
+ cx.char(pos + 2) == 40,
110
+ cx.char(pos + 2) == 41
111
+ );
112
+ }
113
+ },
114
+ // Block expression wrapped in \\[ ... \\]
115
+ {
116
+ name: BLOCK_MATH_BRACKET,
117
+ before: 'Escape', // Search for this delimiter before the escape character
118
+ parse(cx: InlineContext, next: number, pos: number): number {
119
+ if (
120
+ next != 92 /* '\' */ ||
121
+ cx.char(pos + 1) != 92 ||
122
+ ![91 /* '[' */, 93 /* ']' */].includes(cx.char(pos + 2))
123
+ ) {
124
+ return -1;
125
+ }
126
+
127
+ return cx.addDelimiter(
128
+ DELIMITERS[BLOCK_MATH_BRACKET],
129
+ pos,
130
+ pos + DELIMITER_LENGTH[BLOCK_MATH_BRACKET],
131
+ cx.char(pos + 2) == 91,
132
+ cx.char(pos + 2) == 93
133
+ );
134
+ }
135
+ }
136
+ ],
137
+ wrap: latexParser
138
+ ? parseMixed((node, input) => {
139
+ // Test if the node type is one of the math expression
140
+ const delimiterLength = DELIMITER_LENGTH[node.type.name];
141
+ if (delimiterLength) {
142
+ return {
143
+ parser: latexParser,
144
+ // Remove delimiter from LaTeX parser otherwise it won't be highlighted
145
+ overlay: [
146
+ {
147
+ from: node.from + delimiterLength,
148
+ to: node.to - delimiterLength
149
+ }
150
+ ]
151
+ };
152
+ }
153
+
154
+ return null;
155
+ })
156
+ : undefined
157
+ };
158
+ }