Skip to content

Commit 2a019d5

Browse files
fix(web): reuse CodeMirror search language
1 parent a7df916 commit 2a019d5

2 files changed

Lines changed: 12 additions & 2 deletions

File tree

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
import { expect, test } from 'vitest';
2+
import { zoekt } from './zoektLanguageExtension';
3+
4+
test('reuses the same language support across calls', () => {
5+
expect(zoekt()).toBe(zoekt());
6+
});

packages/web/src/app/(app)/components/searchBar/zoektLanguageExtension.ts

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
11
import { LanguageSupport, StreamLanguage } from "@codemirror/language";
22
import { tags as t } from "@lezer/highlight";
33

4-
export const zoekt = () => {
4+
// StreamLanguage permanently registers a document NodeType, so this must be a
5+
// module singleton rather than one instance per SearchBar render.
6+
const zoektLanguageSupport = (() => {
57
const zoektLanguage = StreamLanguage.define({
68
startState() {
79
return {
@@ -75,4 +77,6 @@ export const zoekt = () => {
7577
});
7678

7779
return new LanguageSupport(zoektLanguage);
78-
};
80+
})();
81+
82+
export const zoekt = () => zoektLanguageSupport;

0 commit comments

Comments
 (0)