mdx-analyzer
mdx-analyzer copied to clipboard
feat: add initial intellisense
This is a proof of concept for MDX intellisense support for multiple editors. The idea is to turn this repository into a monorepo.
The following packages have been added:
@mdx-js/language-servicehandles the actual logic needed for intellisense features. It provides a JavaScript API implementing interfaces fromvscode-languageserver-types.@mdx-js/language-serverprovides@mdx-js/language-serviceas an actual language server. This package is supposed to be consumed by projects such as NeoVim,vim-lsp,sublimelsp, and Emacslsp-mode.@mdx-js/monacointegrates@mdx-js/language-serviceinto Monaco editor.vscode-mdxprovides@mdx-js/language-serveras a VSCode plugin. Currently the VSCode extension is the monorepo root and the client code lives in@mdx-js/language-client, but I think it makes sense to merge both into a (private) packagevscode-mdx.
The current implementation is still very raw. It just provides definitions for link references. The next big step is to integrate TypeScript.
🦋 Changeset detected
Latest commit: ad45694dabab07fccd3acb0b60e91e2f2b3533cf
The changes in this PR will be included in the next version bump.
Not sure what this means? Click here to learn what changesets are.
Click here if you're a maintainer who wants to add another changeset to this PR
📊 Package size report No changes
| File | Before | After |
|---|---|---|
| Total (Includes all files) | 29.7 kB |
29.7 kB |
| Tarball size | 12.4 kB |
12.4 kB |
Unchanged files
| File | Size |
|---|---|
.changeset/config.json |
312 B |
.changeset/README.md |
510 B |
.commitlintrc |
35 B |
.editorconfig |
161 B |
.eslintignore |
32 B |
.eslintrc |
191 B |
.github/FUNDING.yml |
234 B |
.github/workflows/ci.yml |
551 B |
.github/workflows/pkg-size.yml |
496 B |
.github/workflows/publish.yml |
1.2 kB |
.github/workflows/release.yml |
323 B |
.github/workflows/version.yml |
853 B |
.lintstagedrc.js |
46 B |
.prettierrc |
24 B |
.remarkrc |
42 B |
.renovaterc |
35 B |
.simple-git-hooks.js |
51 B |
.vscode/launch.json |
540 B |
.vscodeignore |
103 B |
.yarnrc |
20 B |
assets/mdx.png |
3.3 kB |
CHANGELOG.md |
3.9 kB |
language-configuration.jsonc |
1.1 kB |
LICENSE |
1.1 kB |
package.json |
4.6 kB |
patches/eslint-mdx+2.0.2.patch |
796 B |
README.md |
7.3 kB |
syntaxes/mdx.tmLanguage.json |
1.3 kB |
test/component.js |
54 B |
test/fixture.mdx |
423 B |
🤖 This report was automatically generated by pkg-size-action
I think this is now usable enough to be released as an experimental feature. I.e. it could be opt-in using a boolean setting mdx.experimentalLanguageServer.
Tests are still missing. ~~I’m inclined to use Playwright, so the same test runner can be used for Monaco editor and the language server.~~ Playwright doesn’t play nice with subprocess output. Playwright is used for the Monaco editor integration, but the language server is now tested using node:test.
Tests are still missing. I’m inclined to use Playwright, so the same test runner can be used for Monaco editor and the language server.
Sounds good. Is this planned as part of this PR? Or a future PR?
Tests are still missing. I’m inclined to use Playwright, so the same test runner can be used for Monaco editor and the language server.
Sounds good. Is this planned as part of this PR? Or a future PR?
This is what I’m working on right now! I was hoping to resolve https://github.com/microsoft/vscode-languageserver-node/issues/1070 first, but didn’t manage to.
I decided to go with node:test instead of Playwright. Playwright hides stdout from subprocesses, which makes tests hard to debug.
@remcohaszing This is amazing thank you SO much for all of your hard work :heart:
In the pr's current state, I'm getting this issue:
Error: Cannot find module 'typescript'
Require stack:
- c:\Users\super\.vscode\extensions\unifiedjs.vscode-mdx-1.0.3\out\language-server.js
at Module._resolveFilename (node:internal/modules/cjs/loader:987:15)
at Module._load (node:internal/modules/cjs/loader:832:27)
at c._load (node:electron/js2c/asar_bundle:5:13343)
at Module.require (node:internal/modules/cjs/loader:1059:19)
at require (node:internal/modules/cjs/helpers:102:18)
at Object.<anonymous> (c:\Users\super\.vscode\extensions\unifiedjs.vscode-mdx-1.0.3\out\language-server.js:41:6782)
at Module._compile (node:internal/modules/cjs/loader:1165:14)
at Module._extensions..js (node:internal/modules/cjs/loader:1220:10)
at Module.load (node:internal/modules/cjs/loader:1035:32)
at Module._load (node:internal/modules/cjs/loader:876:12) {
code: 'MODULE_NOT_FOUND',
requireStack: [
'c:\\Users\\super\\.vscode\\extensions\\unifiedjs.vscode-mdx-1.0.3\\out\\language-server.js'
]
}```
@Vap0r1ze Thank for reporting! The latest commit should fix that.
It did fix it thank you! But now I'm getting this error when writing an import statement from a brand new file:
Show error
Error: Could not find source file: 'c:\Users\super\GitHub\Vencord\docs\pages\test.mdx'.
at ke (c:\Users\super\.vscode\extensions\unifiedjs.vscode-mdx-1.0.3\out\language-server.js:266:8159)
at Object.Lr [as getSemanticDiagnostics] (c:\Users\super\.vscode\extensions\unifiedjs.vscode-mdx-1.0.3\out\language-server.js:266:14376)
at Object.getSemanticDiagnostics (c:\Users\super\.vscode\extensions\unifiedjs.vscode-mdx-1.0.3\out\language-server.js:353:8967)
at sM (c:\Users\super\.vscode\extensions\unifiedjs.vscode-mdx-1.0.3\out\language-server.js:353:15389)
at Gk.invoke (c:\Users\super\.vscode\extensions\unifiedjs.vscode-mdx-1.0.3\out\language-server.js:271:14441)
at _0.fire (c:\Users\super\.vscode\extensions\unifiedjs.vscode-mdx-1.0.3\out\language-server.js:271:15209)
at c:\Users\super\.vscode\extensions\unifiedjs.vscode-mdx-1.0.3\out\language-server.js:302:59766
at d (c:\Users\super\.vscode\extensions\unifiedjs.vscode-mdx-1.0.3\out\language-server.js:273:1611)
at M (c:\Users\super\.vscode\extensions\unifiedjs.vscode-mdx-1.0.3\out\language-server.js:272:6856)
at Immediate._onImmediate (c:\Users\super\.vscode\extensions\unifiedjs.vscode-mdx-1.0.3\out\language-server.js:272:6732) {
ProgramFiles: [
'C:/Users/super/GitHub/Vencord/node_modules/.pnpm/@[email protected]/node_modules/@types/react/global.d.ts',
'C:/Users/super/GitHub/Vencord/node_modules/.pnpm/[email protected]/node_modules/csstype/index.d.ts',
'C:/Users/super/GitHub/Vencord/node_modules/.pnpm/@[email protected]/node_modules/@types/prop-types/index.d.ts',
'C:/Users/super/GitHub/Vencord/node_modules/.pnpm/@[email protected]/node_modules/@types/scheduler/tracing.d.ts',
'C:/Users/super/GitHub/Vencord/node_modules/.pnpm/@[email protected]/node_modules/@types/react/index.d.ts',
'C:/Users/super/GitHub/Vencord/node_modules/.pnpm/@[email protected]/node_modules/@types/react/jsx-runtime.d.ts',
'C:/Users/super/GitHub/Vencord/node_modules/.pnpm/[email protected]/node_modules/type-fest/source/primitive.d.ts',
'C:/Users/super/GitHub/Vencord/node_modules/.pnpm/[email protected]/node_modules/type-fest/source/typed-array.d.ts',
'C:/Users/super/GitHub/Vencord/node_modules/.pnpm/[email protected]/node_modules/type-fest/source/basic.d.ts',
'C:/Users/super/GitHub/Vencord/node_modules/.pnpm/[email protected]/node_modules/type-fest/source/observable-like.d.ts',
'C:/Users/super/GitHub/Vencord/node_modules/.pnpm/[email protected]/node_modules/type-fest/source/empty-object.d.ts',
'C:/Users/super/GitHub/Vencord/node_modules/.pnpm/[email protected]/node_modules/type-fest/source/simplify.d.ts',
'C:/Users/super/GitHub/Vencord/node_modules/.pnpm/[email protected]/node_modules/type-fest/source/internal.d.ts',
'C:/Users/super/GitHub/Vencord/node_modules/.pnpm/[email protected]/node_modules/type-fest/source/except.d.ts',
'C:/Users/super/GitHub/Vencord/node_modules/.pnpm/[email protected]/node_modules/type-fest/source/writable.d.ts',
'C:/Users/super/GitHub/Vencord/node_modules/.pnpm/[email protected]/node_modules/type-fest/source/omit-index-signature.d.ts',
'C:/Users/super/GitHub/Vencord/node_modules/.pnpm/[email protected]/node_modules/type-fest/source/pick-index-signature.d.ts',
'C:/Users/super/GitHub/Vencord/node_modules/.pnpm/[email protected]/node_modules/type-fest/source/enforce-optional.d.ts',
'C:/Users/super/GitHub/Vencord/node_modules/.pnpm/[email protected]/node_modules/type-fest/source/merge.d.ts',
'C:/Users/super/GitHub/Vencord/node_modules/.pnpm/[email protected]/node_modules/type-fest/source/conditional-simplify.d.ts',
'C:/Users/super/GitHub/Vencord/node_modules/.pnpm/[email protected]/node_modules/type-fest/source/merge-deep.d.ts',
'C:/Users/super/GitHub/Vencord/node_modules/.pnpm/[email protected]/node_modules/type-fest/source/merge-exclusive.d.ts',
'C:/Users/super/GitHub/Vencord/node_modules/.pnpm/[email protected]/node_modules/type-fest/source/require-at-least-one.d.ts',
'C:/Users/super/GitHub/Vencord/node_modules/.pnpm/[email protected]/node_modules/type-fest/source/require-exactly-one.d.ts',
'C:/Users/super/GitHub/Vencord/node_modules/.pnpm/[email protected]/node_modules/type-fest/source/require-all-or-none.d.ts',
'C:/Users/super/GitHub/Vencord/node_modules/.pnpm/[email protected]/node_modules/type-fest/source/partial-deep.d.ts',
'C:/Users/super/GitHub/Vencord/node_modules/.pnpm/[email protected]/node_modules/type-fest/source/partial-on-undefined-deep.d.ts',
'C:/Users/super/GitHub/Vencord/node_modules/.pnpm/[email protected]/node_modules/type-fest/source/readonly-deep.d.ts',
'C:/Users/super/GitHub/Vencord/node_modules/.pnpm/[email protected]/node_modules/type-fest/source/literal-union.d.ts',
'C:/Users/super/GitHub/Vencord/node_modules/.pnpm/[email protected]/node_modules/type-fest/source/promisable.d.ts',
'C:/Users/super/GitHub/Vencord/node_modules/.pnpm/[email protected]/node_modules/type-fest/source/opaque.d.ts',
'C:/Users/super/GitHub/Vencord/node_modules/.pnpm/[email protected]/node_modules/type-fest/source/invariant-of.d.ts',
'C:/Users/super/GitHub/Vencord/node_modules/.pnpm/[email protected]/node_modules/type-fest/source/set-optional.d.ts',
'C:/Users/super/GitHub/Vencord/node_modules/.pnpm/[email protected]/node_modules/type-fest/source/set-required.d.ts',
'C:/Users/super/GitHub/Vencord/node_modules/.pnpm/[email protected]/node_modules/type-fest/source/set-non-nullable.d.ts',
'C:/Users/super/GitHub/Vencord/node_modules/.pnpm/[email protected]/node_modules/type-fest/source/value-of.d.ts',
'C:/Users/super/GitHub/Vencord/node_modules/.pnpm/[email protected]/node_modules/type-fest/source/async-return-type.d.ts',
'C:/Users/super/GitHub/Vencord/node_modules/.pnpm/[email protected]/node_modules/type-fest/source/conditional-keys.d.ts',
'C:/Users/super/GitHub/Vencord/node_modules/.pnpm/[email protected]/node_modules/type-fest/source/conditional-except.d.ts',
'C:/Users/super/GitHub/Vencord/node_modules/.pnpm/[email protected]/node_modules/type-fest/source/conditional-pick.d.ts',
'C:/Users/super/GitHub/Vencord/node_modules/.pnpm/[email protected]/node_modules/type-fest/source/conditional-pick-deep.d.ts',
'C:/Users/super/GitHub/Vencord/node_modules/.pnpm/[email protected]/node_modules/type-fest/source/union-to-intersection.d.ts',
'C:/Users/super/GitHub/Vencord/node_modules/.pnpm/[email protected]/node_modules/type-fest/source/stringified.d.ts',
'C:/Users/super/GitHub/Vencord/node_modules/.pnpm/[email protected]/node_modules/type-fest/source/fixed-length-array.d.ts',
'C:/Users/super/GitHub/Vencord/node_modules/.pnpm/[email protected]/node_modules/type-fest/source/multidimensional-array.d.ts',
'C:/Users/super/GitHub/Vencord/node_modules/.pnpm/[email protected]/node_modules/type-fest/source/multidimensional-readonly-array.d.ts',
'C:/Users/super/GitHub/Vencord/node_modules/.pnpm/[email protected]/node_modules/type-fest/source/iterable-element.d.ts',
'C:/Users/super/GitHub/Vencord/node_modules/.pnpm/[email protected]/node_modules/type-fest/source/entry.d.ts',
'C:/Users/super/GitHub/Vencord/node_modules/.pnpm/[email protected]/node_modules/type-fest/source/entries.d.ts',
'C:/Users/super/GitHub/Vencord/node_modules/.pnpm/[email protected]/node_modules/type-fest/source/set-return-type.d.ts',
'C:/Users/super/GitHub/Vencord/node_modules/.pnpm/[email protected]/node_modules/type-fest/source/asyncify.d.ts',
'C:/Users/super/GitHub/Vencord/node_modules/.pnpm/[email protected]/node_modules/type-fest/source/numeric.d.ts',
'C:/Users/super/GitHub/Vencord/node_modules/.pnpm/[email protected]/node_modules/type-fest/source/jsonify.d.ts',
'C:/Users/super/GitHub/Vencord/node_modules/.pnpm/[email protected]/node_modules/type-fest/source/jsonifiable.d.ts',
'C:/Users/super/GitHub/Vencord/node_modules/.pnpm/[email protected]/node_modules/type-fest/source/schema.d.ts',
'C:/Users/super/GitHub/Vencord/node_modules/.pnpm/[email protected]/node_modules/type-fest/source/literal-to-primitive.d.ts',
'C:/Users/super/GitHub/Vencord/node_modules/.pnpm/[email protected]/node_modules/type-fest/source/string-key-of.d.ts',
'C:/Users/super/GitHub/Vencord/node_modules/.pnpm/[email protected]/node_modules/type-fest/source/exact.d.ts',
'C:/Users/super/GitHub/Vencord/node_modules/.pnpm/[email protected]/node_modules/type-fest/source/readonly-tuple.d.ts',
'C:/Users/super/GitHub/Vencord/node_modules/.pnpm/[email protected]/node_modules/type-fest/source/optional-keys-of.d.ts',
'C:/Users/super/GitHub/Vencord/node_modules/.pnpm/[email protected]/node_modules/type-fest/source/has-optional-keys.d.ts',
'C:/Users/super/GitHub/Vencord/node_modules/.pnpm/[email protected]/node_modules/type-fest/source/required-keys-of.d.ts',
'C:/Users/super/GitHub/Vencord/node_modules/.pnpm/[email protected]/node_modules/type-fest/source/has-required-keys.d.ts',
'C:/Users/super/GitHub/Vencord/node_modules/.pnpm/[email protected]/node_modules/type-fest/source/spread.d.ts',
'C:/Users/super/GitHub/Vencord/node_modules/.pnpm/[email protected]/node_modules/type-fest/source/tuple-to-union.d.ts',
'C:/Users/super/GitHub/Vencord/node_modules/.pnpm/[email protected]/node_modules/type-fest/source/split-words.d.ts',
'C:/Users/super/GitHub/Vencord/node_modules/.pnpm/[email protected]/node_modules/type-fest/source/camel-case.d.ts',
'C:/Users/super/GitHub/Vencord/node_modules/.pnpm/[email protected]/node_modules/type-fest/source/camel-cased-properties.d.ts',
'C:/Users/super/GitHub/Vencord/node_modules/.pnpm/[email protected]/node_modules/type-fest/source/camel-cased-properties-deep.d.ts',
'C:/Users/super/GitHub/Vencord/node_modules/.pnpm/[email protected]/node_modules/type-fest/source/delimiter-case.d.ts',
'C:/Users/super/GitHub/Vencord/node_modules/.pnpm/[email protected]/node_modules/type-fest/source/kebab-case.d.ts',
'C:/Users/super/GitHub/Vencord/node_modules/.pnpm/[email protected]/node_modules/type-fest/source/delimiter-cased-properties.d.ts',
'C:/Users/super/GitHub/Vencord/node_modules/.pnpm/[email protected]/node_modules/type-fest/source/kebab-cased-properties.d.ts',
'C:/Users/super/GitHub/Vencord/node_modules/.pnpm/[email protected]/node_modules/type-fest/source/delimiter-cased-properties-deep.d.ts',
'C:/Users/super/GitHub/Vencord/node_modules/.pnpm/[email protected]/node_modules/type-fest/source/kebab-cased-properties-deep.d.ts',
'C:/Users/super/GitHub/Vencord/node_modules/.pnpm/[email protected]/node_modules/type-fest/source/pascal-case.d.ts',
'C:/Users/super/GitHub/Vencord/node_modules/.pnpm/[email protected]/node_modules/type-fest/source/pascal-cased-properties.d.ts',
'C:/Users/super/GitHub/Vencord/node_modules/.pnpm/[email protected]/node_modules/type-fest/source/pascal-cased-properties-deep.d.ts',
'C:/Users/super/GitHub/Vencord/node_modules/.pnpm/[email protected]/node_modules/type-fest/source/snake-case.d.ts',
'C:/Users/super/GitHub/Vencord/node_modules/.pnpm/[email protected]/node_modules/type-fest/source/snake-cased-properties.d.ts',
'C:/Users/super/GitHub/Vencord/node_modules/.pnpm/[email protected]/node_modules/type-fest/source/snake-cased-properties-deep.d.ts',
'C:/Users/super/GitHub/Vencord/node_modules/.pnpm/[email protected]/node_modules/type-fest/source/includes.d.ts',
'C:/Users/super/GitHub/Vencord/node_modules/.pnpm/[email protected]/node_modules/type-fest/source/screaming-snake-case.d.ts',
'C:/Users/super/GitHub/Vencord/node_modules/.pnpm/[email protected]/node_modules/type-fest/source/join.d.ts',
'C:/Users/super/GitHub/Vencord/node_modules/.pnpm/[email protected]/node_modules/type-fest/source/split.d.ts',
'C:/Users/super/GitHub/Vencord/node_modules/.pnpm/[email protected]/node_modules/type-fest/source/trim.d.ts',
'C:/Users/super/GitHub/Vencord/node_modules/.pnpm/[email protected]/node_modules/type-fest/source/replace.d.ts',
'C:/Users/super/GitHub/Vencord/node_modules/.pnpm/[email protected]/node_modules/type-fest/source/get.d.ts',
'C:/Users/super/GitHub/Vencord/node_modules/.pnpm/[email protected]/node_modules/type-fest/source/last-array-element.d.ts',
'C:/Users/super/GitHub/Vencord/node_modules/.pnpm/[email protected]/node_modules/type-fest/source/package-json.d.ts',
'C:/Users/super/GitHub/Vencord/node_modules/.pnpm/[email protected]/node_modules/type-fest/source/tsconfig-json.d.ts',
'C:/Users/super/GitHub/Vencord/node_modules/.pnpm/[email protected]/node_modules/type-fest/index.d.ts',
'c:/Users/super/GitHub/Vencord/docs/constants.ts',
'C:/Users/super/GitHub/Vencord/node_modules/.pnpm/[email protected]_pftdh3zqu4qevmbqg2nu3a7f3e/node_modules/vite/types/hmrPayload.d.ts',
'C:/Users/super/GitHub/Vencord/node_modules/.pnpm/[email protected]_pftdh3zqu4qevmbqg2nu3a7f3e/node_modules/vite/types/customEvent.d.ts',
'C:/Users/super/GitHub/Vencord/node_modules/.pnpm/[email protected]_pftdh3zqu4qevmbqg2nu3a7f3e/node_modules/vite/types/hot.d.ts',
'C:/Users/super/GitHub/Vencord/node_modules/.pnpm/[email protected]_pftdh3zqu4qevmbqg2nu3a7f3e/node_modules/vite/types/importGlob.d.ts',
'C:/Users/super/GitHub/Vencord/node_modules/.pnpm/[email protected]_pftdh3zqu4qevmbqg2nu3a7f3e/node_modules/astro/import-meta.d.ts',
'C:/Users/super/GitHub/Vencord/node_modules/.pnpm/@[email protected]/node_modules/@types/node/assert.d.ts',
'C:/Users/super/GitHub/Vencord/node_modules/.pnpm/@[email protected]/node_modules/@types/node/assert/strict.d.ts',
... 372 more items
]
}
Thanks for trying this out early. Personally I use Linux. If it works on Linux, it tends to work on MacOS as well, and vice versa. Unfortunately I’ve hit some issues troubleshooting in my Windows 11 VM. Specifically I ran into https://github.com/npm/cli/issues/6005 and whatever issue causes CI to get stuck in playwright-monaco.
The fact that you managed to build this PR on Windows, means you got further than I did. If you’re interested, you could help me out a great deal by:
- Fixing Windows tests for
playwright-monaco. - Mentioning environment info: what Node.js / npm version do you use? Do you use them natively or via WSL? Does your project have a
tsconfig.jsonfile? If so, what are its contents? - Enabling Fixing Windows tests for this repo (which depends on those fixes in
playwright-monacofixes).
Also, does that change mean mdx won't always use my project's ts version?
Initially yes, but I built it with the idea in mind to support that later.
Fixing Windows tests for playwright-monaco.
Yea! I'll give this a try in a few
Mentioning environment info: what Node.js / npm version do you use? Do you use them natively or via WSL? Does your project have a
tsconfig.jsonfile? If so, what are its contents?
It might be helpful to mention that I'm building the extension on Linux and installing it on Windows, I assumed vscode extensions were cross platform like that xd. When building on Linux, I'm using Node v16.18.1 and Yarn v1.22.19 On Windows, I'm running a global installation of Node v16.17.0 and npm v8.15.0 I'm gonna try and build the pr on Windows rn
Enabling Fixing Windows tests for this repo (which depends on those fixes in
playwright-monacofixes).
Yea I'll see about this after I give the playwright monaco tests a shot
It absolutely shouldn’t matter which OS you use to build the extension! It just matters for local troubleshooting and debugging.
As far as I’m concerned, this PR is ready. ~~CI is failing due to an azure PPA outage. I would love CI to pass though, given the impact of these changes. To anyone who has permissions (including myself): Feel free to retrigger whenever you feel like it.~~
~~Something appears to go wrong with the VSCode integration. I’m investigating this.~~ Never mind, this wasn’t true.
To dos after:
- Go through “marketing” material, as in, examples, but also docs
- Perhaps add tools like stylint for CSS in demos?
- Lowercase
readme.md,license?
Q: What are other things that should be checked / improved / added later?
More todos:
- #260
- #261
- Publish packages
- Identify, test, and fix various corner cases
- #262
- #168
- Fix Windows tests
- #259
- Identify and implement missing TypeScript features
- #266
- #264
- Consider support for remark transformer plugins (
remark-mdx-frontmatterintroduces variables) - Consider support for rehype transformer plugins (
rehype-mdx-titleintroduces a variable) - #267
I intend to create more detailed issues for these once this PR gets merged.
IntelliSense is now released behind a flag. More info on how to try it out here: https://github.com/mdx-js/vscode-mdx/releases/tag/v1.1.0. And see also the announcement on Twitter: https://twitter.com/remcohaszing/status/1613910319805382657
Amazing, thanks @remcohaszing 🙌 Long journey to get this to the state where it is now, kudos on that!
I wanted to ask where the correct place to report issues is, because I ran into a first issue trying to parse MDX which uses JavaScript inside Front Matter, as below:
---
courseModules: [{ courseId: 3, slug: 'changes' }]
---
# Changes
...more content...
The error from tsMDX is:
Could not parse expression with acorn: Unexpected content after expression(tsMDX)
Screenshot:
I guess it's possible that I'm also using MDX in an unexpected / incorrect way here, maybe there's something I need to change...
@karlhorky Thanks for trying this out!
The issue tracker of this project is the right place to report. However, the issue you’re running into has already been reported: #266. The public interface for that feature requires some discussion though. I welcome any input in the discussion there.