# Missing fold icons when setting large(ish) JSON as initial document

**URL:** <https://discuss.codemirror.net/t/missing-fold-icons-when-setting-large-ish-json-as-initial-document/8577>\
**Category:** v6\
**Created:** [August 23, 2024, 1:34pm UTC](https://discuss.codemirror.net/t/missing-fold-icons-when-setting-large-ish-json-as-initial-document/8577 "2024-08-23T13:34:35Z")\
**Posts on this page:** 6\
**Page:** 1

<div class="post-metadata">

**Author:** ![gschier](https://discuss.codemirror.net/user_avatar/discuss.codemirror.net/gschier/32/3089_2.png) [@gschier](https://discuss.codemirror.net/u/gschier)\
**Post date:** [August 23, 2024, 1:34pm UTC](https://discuss.codemirror.net/t/missing-fold-icons-when-setting-large-ish-json-as-initial-document/8577/1 "2024-08-23T13:34:35Z")

</div>

It seems that some fold gutter icons are missing when setting a large document programmatically.

```js
const doc = `...`;

new EditorView({
  doc,
  extensions: [basicSetup, json()],
  parent: document.body,
});

```

When making the document slightly smaller, the fold icons that were missing in the large document pop in after a second or so. Perhaps there is some sort of parse timeout for the initial load?

The fold icons work fine when pasting the large document into the editor.

Here’s a minimal reproduction of the issue using `basicSetup` and `json` language that shows the large document (left) and smaller document (right).

[https://codesandbox.io/p/sandbox/codemirror-fold-bug-dx9v88?file=%2Fsrc%2Findex.mjs%3A3%2C31](https://codesandbox.io/p/sandbox/codemirror-fold-bug-dx9v88?file=%2Fsrc%2Findex.mjs%3A3%2C31)

---

<div class="post-metadata">

**Author:** ![marijn](https://discuss.codemirror.net/user_avatar/discuss.codemirror.net/marijn/32/136_2.png) [@marijn](https://discuss.codemirror.net/u/marijn)\
**Post date:** [August 23, 2024, 7:31pm UTC](https://discuss.codemirror.net/t/missing-fold-icons-when-setting-large-ish-json-as-initial-document/8577/2 "2024-08-23T19:31:57Z")

</div>

> [@gschier](#):
>
> Perhaps there is some sort of parse timeout for the initial load?

Yes, this is related to the parser not having found the end of the node. It would be bad to provide folding for nodes that we don’t know the extent of, since there’s no meaningful place to end the fold. As such, the fold system ignores partially parsed nodes. This is working as intended.

---

<div class="post-metadata">

**Author:** ![gschier](https://discuss.codemirror.net/user_avatar/discuss.codemirror.net/gschier/32/3089_2.png) [@gschier](https://discuss.codemirror.net/u/gschier)\
**Post date:** [August 23, 2024, 8:25pm UTC](https://discuss.codemirror.net/t/missing-fold-icons-when-setting-large-ish-json-as-initial-document/8577/3 "2024-08-23T20:25:49Z")

</div>

Is there any way to increase this, or force it to parse the entire document?

---

<div class="post-metadata">

**Author:** ![marijn](https://discuss.codemirror.net/user_avatar/discuss.codemirror.net/marijn/32/136_2.png) [@marijn](https://discuss.codemirror.net/u/marijn)\
**Post date:** [August 23, 2024, 8:37pm UTC](https://discuss.codemirror.net/t/missing-fold-icons-when-setting-large-ish-json-as-initial-document/8577/4 "2024-08-23T20:37:20Z")

</div>

You can use [`forceParsing`](https://codemirror.net/docs/ref/#language.forceParsing), but freezing the UI to get fold buttons may not be a great trade-off.

---

<div class="post-metadata">

**Author:** ![gschier](https://discuss.codemirror.net/user_avatar/discuss.codemirror.net/gschier/32/3089_2.png) [@gschier](https://discuss.codemirror.net/u/gschier)\
**Post date:** [August 23, 2024, 8:41pm UTC](https://discuss.codemirror.net/t/missing-fold-icons-when-setting-large-ish-json-as-initial-document/8577/5 "2024-08-23T20:41:02Z")

</div>

Noted. Thanks so much for the quick response!

---

<div class="post-metadata">

**Author:** ![gschier](https://discuss.codemirror.net/user_avatar/discuss.codemirror.net/gschier/32/3089_2.png) [@gschier](https://discuss.codemirror.net/u/gschier)\
**Post date:** [August 23, 2024, 8:57pm UTC](https://discuss.codemirror.net/t/missing-fold-icons-when-setting-large-ish-json-as-initial-document/8577/6 "2024-08-23T20:57:36Z")

</div>

For completeness, here’s what I did.

```auto
view = new EditorView({ ... });
forceParsing(view, 9e6, 100));

```

I increased the max `upTo` but kept the timeout at the default `100` ms so that it would get further on better hardware. Hopefully I’m understanding the function correctly!
