Rewrite to use remark-language-server#65
Rewrite to use remark-language-server#65wooorm merged 54 commits intoremarkjs:mainfrom remcohaszing:remark-language-server
remark-language-server#65Conversation
ChristianMurphy
left a comment
There was a problem hiding this comment.
Thanks @remcohaszing!
It looks like CI is getting stuck at
npm run clean && npm run lint && npm run compile
npm ERR! Missing script: "clean"
|
👍 after build succeeds! |
This migrates the extension to use remark-language-server which is introduced in remarkjs/remark#924. This basically reimplements the extension from scratch andrepurposes it. Old behavior: - Format code using a custom command. New behavior: - Use the same configuration as remark-cli - Register an actual formatter - Support ESM configurations - Support diagnostics
This uses esbuild to bundle and minify the extension.
It has also been renamed to lower case to be consistent with the rest of the unified ecosystem.
test/index.test.js
Outdated
| 'Marker style should be `*`', | ||
| 'Marker style should be `*`', | ||
| 'Marker style should be `*`' | ||
| ]) |
There was a problem hiding this comment.
This is more about testing the language server can be loaded than about testing its functionality, as that’s tested upstream in unified-language-server.
package.json
Outdated
| }, | ||
| "scripts": { | ||
| "clean": "rimraf out", | ||
| "build:language-server": "esbuild node_modules/remark-language-server/index.js --bundle --platform=node --minify --format=cjs --outfile=out/remark-language-server.js", |
There was a problem hiding this comment.
ESBuild can’t process require statements which load NodeJS builtins, so the language server is built as a CJS module. It is able to use dynamic import() this way, so everything works fine this way (this is also tested).
test/index.test.js
Outdated
| /** | ||
| * @returns {Promise<void>} | ||
| */ | ||
| module.exports.run = () => |
There was a problem hiding this comment.
The test file must be loadable by @vscode/test-electron, meaning it has to use CJS.
VSCode Extensions need to use CJS, but this is built using esbuild anyway.
Co-authored-by: Titus <tituswormer@gmail.com>
This adds support for quick fixes.
|
@remcohaszing I see you sometimes pushing updates to dependencies. Are you treating this PR is ready to go? Because I’m waiting for the tests to turn green and I was under the impression that there are still some things being worked on? |
|
I was hoping that might automagically fix it, but it didn’t, not that I really expected that. Previously the Windows build failed, but now even the Linux build fails. It used to work on Linux. Manual testing shows the following error. Unfortunately I also couldn’t easily get source maps to work for debugging. Changing line 11 in It would also help if someone can manually confirm it works on macOS or Windows. Especially Windows development setups are pretty alien to me. Can people just invoke I also tried using LSP over I currently have limited time to look into this, but I do really want to finish this! |
|
so ubuntu seems to work always, macOS is flakey, and windows fails always? |
|
Kind of but not quite? I see an Ubuntu build failing while typing this comment. I think using the |
This test doesn’t rely on any timeouts.
|
Can you mention me again when this is in need of a review? |
|
We probably should also remove the lockfile, and clean other repo things, in further PRs, btw! |
|
Omg all checks have passed! 🎉 I agree we can do some more cleanups in other PRs. Let’s focus on this one first though. I’ll fix various quirks after this PR has been merged. |
remark-language-serverremark-language-server
|
Sweet, landed! |
Initial checklist
Description of changes
This migrates the extension to use remark-language-server which is introduced
in remarkjs/remark#924.
This basically reimplements the extension from scratch andrepurposes it.
Old behavior:
New behavior:
Closes #17
Closes #41
Closes #58
Closes #61