There are two bugs here:
- Something in the lsp is converting a value from `undefined` to `null`. To fix this, I've updated us just to check for falsy values instead
- The `hasInMemoryDoc` implementation was incorrect. It needs to verify that the value of `this.inMemoryDoc` is not null/undefined
Fixes#164562
My previous fix was incorrect as it checked if the document existed by still consulting our `_documentCache`. When we are deleting/renaming an opened md document, it should pretty much always exist in our cache
The fix is to instead treat `this.documents` and the file system as the source of truth when determining if the doc should be deleted or not
- Picks up newest markdown language service
- Excludes some files from server publish
- Delete unused file
- Update readme
- Align server version with LS version
* Rework how markdown server works with documents
This rewrites how the markdown server works with documents. The goal is to better handle switching between in-memory versions of a doc (from `TextDocument`) and versions of the same doc on disk. From the markdown service's POV, there is only one type of document
As part of this, I've also adopted the newest markdown language service version
* Bump package-lock versions
For #159805
This splits the markdown server into two main functions:
- `startVsCodeServer` which assumes the client can implement all the functionality of VS Code. It is not specific to VS Code however, the client just need to implement the custom messages that VS Code does
- `startServer` which lets you pass in your own implementation of the parser and workspace. A consumer of the server can then use this to have their own custom server implementation, which might use normal node apis to read files
* Use MD LS for resolving all document links
This switches the markdown extension to use the markdown language service when resolving the link. This lets us delete a lot of code that was duplicated between the extension and the LS
* Pick up new ls version
This brings support for code actions and source actions, along with some bug fixes
Also fixes `getAllMarkdownDocuments` to prefer open documents instead of those on disk
Fix markdown link diagnostics not updated when directories are renamed/deleted
Turns our that `createFileSystemWatcher` will not fire if a parent dir is renamed / deleted. See #60813
To fix this, I believe we have to create watchers for all parent directories too (or watch everything in the entire workspace)
* Add experimental support for update markdown links on file moves/renames
Fixes#148146
This adds a new experimental setting that automatically updates markdown
Note that this needs a new version of the vscode-markdown-languageservice so the build is expected to break for now
* Pick up new LS version