Commit graph

1115 commits

Author SHA1 Message Date
Matt Bierner e4b323c098
Allow <source> tags in rendered markdown (#172063)
Fixes #171330
2023-01-23 21:07:25 +01:00
Logan Ramos 8cea434dec
Remove unused proposals (#172035) 2023-01-23 19:09:07 +01:00
Daniel Imms e29f8fd78f
Remove .only from test (#170970) 2023-01-10 16:14:18 +01:00
Logan Ramos 4acf2d9b46
Update the telemetry modules (#170512)
Update the module
2023-01-03 15:10:45 -05:00
Matt Bierner fc763d98df
Re-apply markdown copy files setting (#169661)
* Revert "Revert "Add experimental setting to define where files should be copied for markdown (#169454)" (#169615)"

This reverts commit b2121c2dbe.

* Fix tests

These paths should always use `/`
2022-12-20 11:04:51 -08:00
Christof Marti b2121c2dbe
Revert "Add experimental setting to define where files should be copied for markdown (#169454)" (#169615)
This reverts commit 1d6b47a005.
2022-12-20 10:03:12 +01:00
Matt Bierner 1d6b47a005
Revert 1d0a9f9e63 (#169578)
Resubmits the original PR with test fixes for windows
2022-12-19 14:25:37 -08:00
Benjamin Pasero 1d0a9f9e63
Revert "Add experimental setting to define where files should be copied for markdown" (#169492)
Revert "Add experimental setting to define where files should be copied for markdown (#169454)"

This reverts commit 09c0b1f799.
2022-12-18 14:11:45 -08:00
Matt Bierner 09c0b1f799
Add experimental setting to define where files should be copied for markdown (#169454)
For #157043
2022-12-16 16:23:59 -08:00
Daniel Imms 925b335bb9
Replace other non-hyphenated double-click cases
I used ^[^*\/\/]+double click to find the non-comment cases
2022-12-15 10:54:54 -08:00
Logan Ramos b1076b41f3
Bump telemetry packages (#169283) 2022-12-15 17:29:10 +01:00
Matt Bierner 57dd298b47
Add typings for test runner scripts (#169196) 2022-12-15 02:19:24 +01:00
Matt Bierner ac88f33e2c
Revert "Fix: New md file scrolls to Top. (#164999)" (#168224)
This reverts commit 54543cf5bf.
2022-12-06 22:50:30 +01:00
Matt Bierner d62fb120a4
Pick up latest markdown language server (#167869) 2022-12-05 21:13:24 +01:00
Matt Bierner 9b3371e6e3
Fix path sep for markdown drop on windows (#167862)
Fixes #167824
2022-12-01 19:27:21 +01:00
Matt Bierner 3b29d21a83
Dynamically register markdown completions and document highlights (#167451)
Fixes #165920
2022-11-28 20:56:55 +00:00
Matt Bierner 107d3ab28c
Fix markdown scrolling between elements being too jumpy (#166746)
Fixes #165055

We need to consider the distance between the end of the previous element and start of the next element. Previously we were taking distance from start of the previous to start of the next
2022-11-18 13:02:56 -08:00
Greg Van Liew 816f31f691
More settings description tuning (#166429) 2022-11-16 09:33:33 -08:00
Johannes Rieken 3ffb834054
Merge branch 'main' into joh/rewrite-privates 2022-11-16 10:20:49 +01:00
Matt Bierner edccbd1307
Pick up latest markdown language server (#166404)
Also removes some duplicated files
2022-11-15 18:27:22 -08:00
Matt Bierner 04ef3dad8f
Adopt @vscode/l10n for markdown language server (#165880) 2022-11-15 22:56:12 +01:00
Johannes 5912ad3ff1
Merge branch 'main' into joh/rewrite-privates 2022-11-15 09:44:34 +01:00
Matt Bierner 0b9121953f
Added mangling loader for ts files in extensions 2022-11-14 16:34:04 -08:00
Greg Van Liew 27a550f451
Settings description edits (#166315)
* Settings description edits

* Remove unnecessary trailing line returns
2022-11-14 13:47:54 -08:00
Logan Ramos 73d882bcf7
Update telemetry package (#166292) 2022-11-14 09:30:33 -08:00
Matt Bierner a62879bb46
Try computing windows paths correctly on markdown drop (#166077)
Fixes #165352
2022-11-13 15:03:05 -08:00
Matt Bierner ca15dea96b
Pick up latest dompurify and typings for vscode-markdown-languageservice (#166062)
Pick up latest typings from vscode-markdown-languageservice
2022-11-10 21:58:16 -08:00
Marina Miyaoka aa37e17423
Do not preprocess Unicode newlines in Markdown preview (#166026)
Revert LS PS preprocessing in Markdown preview
2022-11-10 19:46:43 +00:00
Debayan Ganguly 54543cf5bf
Fix: New md file scrolls to Top. (#164999)
Fixes #164071.
2022-11-09 13:48:39 -08:00
Logan Ramos bf1697d98c
Consume proposed telemetry API (#165862)
* Consume proposed telemetry API

* Update webpack
2022-11-08 21:58:28 -05:00
Matt Bierner cd29f751eb
Adopt l10n for markdown extension (#165448)
For #164438

Also makes our eslint rules understand `vscode.l10n.t(`
2022-11-04 09:49:49 +01:00
Hugh Lilly 190db489e0
Markdown lang preview settings description (#165109)
* Change descriptions to just say “Enable…”

Previously these said “Enable or disable…”, which in the context of a tick box doesn’t make sense.

* Change “Enable/disable” wording in descriptions
2022-11-01 15:48:59 -07:00
Matt Bierner 4bf630f00e
Pick up latest markdown language service (#165093) 2022-10-31 19:52:21 -07:00
Matt Bierner 33867c55f3
Adopt prefix private with _ in markdown extension (#165088) 2022-10-31 14:22:39 -07:00
Matt Bierner 3e407526a1
Pick up latest markdown LS (#164945)
Picks up https://github.com/microsoft/vscode-markdown-languageservice/pull/84
2022-10-29 11:40:56 -07:00
Matt Bierner 7cb1b9d9f0
Fix bugs with close of markdown docs (#164942)
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
2022-10-29 02:08:21 +02:00
Matt Bierner 12ada73bf9
Disable markdown insert link commands in readonly editors (#164820)
Disable insert link commands in readonly editors
2022-10-27 23:52:05 +02:00
Matt Bierner 3544aabd5a
Fix markdown document deleting (#164829)
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
2022-10-27 21:49:05 +02:00
Matt Bierner 0570a7678d
Use posix path for markdown links (#164822)
Fixes #164782
2022-10-27 19:21:03 +02:00
Alexandru Dima 0f2285c3e9
Don't ship yarn.lock file with the markdown extension (#164794) 2022-10-27 12:09:38 +02:00
Matt Bierner 1316bf789f
Rework markdown update link glob (#164766)
* Rework markdown update link glob

Fixes #164587

This changes the `externalFileGlobs` setting to instead be a include array of globs that should trigger link updates. I've split the globs into markdown files and image/video files

This also makes it easier for users to add their own new globs to the list

* Fix scopes
2022-10-27 01:45:45 +02:00
Matt Bierner d2f8ae6cce
Clean up a few markdown setting descriptions (#164765)
Clean up wording and make sure we use `Markdown` uppercase
2022-10-26 16:29:06 -07:00
Matt Bierner d1af68711d
Pick up latest markdown LS (#164763)
Includes a few more fixes for link update on rename
2022-10-27 00:39:58 +02:00
Matt Bierner 7060fb81dd
Shorten markdown link button titles (#164764)
Fixes #164556
2022-10-27 00:39:30 +02:00
Matt Bierner 5f87632829
Fix markdown server not updating documents properly on folder rename (#164752)
Fixes #164562
2022-10-26 14:48:20 -07:00
Matt Bierner a887d72e8d
Pick up latest markdown language service (#164655) 2022-10-25 16:46:53 -07:00
Matt Bierner f5cbe7e391
Use dirname as default uri for md links (#164641)
Fixes #164612
2022-10-25 21:59:20 +02:00
Matt Bierner 882cdc0a17
Use newlines to separate inserted images (#164632)
Fixes #164610
2022-10-25 12:21:36 -07:00
Matt Bierner 21431fce38
Disable canSelectFolders in markdown link inserter (#164636)
Fixes #164549
2022-10-25 12:01:08 -07:00
Matt Bierner 3ca4fca56e
Pick up latest markdown language service (#164625)
This failed yesterday due to a cache issue in dev ops. We need this version for testing
2022-10-25 10:52:57 -07:00
Matt Bierner 586f252740
Revert "Pick up markdown language service update (#164524)" (#164533)
This reverts commit ab3926ab48.
2022-10-24 19:09:08 -07:00
Matt Bierner ab3926ab48
Pick up markdown language service update (#164524)
Picking up one more small update before endgame
2022-10-24 16:53:17 -07:00
Matt Bierner 9f5d3eb135
Pick up latest markdown language service and clean up server package (#164516)
- Picks up newest markdown language service
- Excludes some files from server publish
- Delete unused file
- Update readme
- Align server version with LS version
2022-10-24 15:58:45 -07:00
Matt Bierner babb2f9677
Remove experimental tag from markdown settings (#164509) 2022-10-24 14:44:43 -07:00
Matt Bierner b11bb04298
Add optional markdown occurrences highlighting (#164292)
Fixes #164290
2022-10-21 14:19:50 -07:00
Matt Bierner 504c5a768a
Avoid extra html write on first markdown preview update (#164201) 2022-10-20 19:40:19 -07:00
Matt Bierner bad3dcca69
Fix insert image/link for untitled files (#163897) 2022-10-17 16:14:16 -07:00
Matt Bierner 641046a11d
Add commands to insert images/links in markdown (#163706)
* Add commands to insert images/links in markdown

Fixes #162809

* Rename commands and allow passing in uris

* Support selecting many images/files
2022-10-14 16:05:36 -07:00
Matt Bierner 3b255af0cb
Pick up latest vscode-markdown-languageservice (#163681) 2022-10-14 11:46:24 -07:00
Matt Bierner 186d3415a3
Use ??= in more places (#163594) 2022-10-13 14:59:35 -07:00
Matt Bierner e1a373defd
Finalize markdown link updating on file move (#163378)
Fixes #148146
2022-10-11 17:42:10 -07:00
Matt Bierner 6cf68a1f23
Remove .only and fix tests (#163376)
Fixes #162159
2022-10-11 17:41:13 -07:00
Matt Bierner d05d85a78b
Move html rewriting for old webviews to (#163367)
The `asWebviewUri` methods was introduced in VS Code 1.38. It's silly that we still force every single webview to pay the cost of trying to rewrite the old style uris we supported in very old versions of VS Code

Instead I've moved this logic into the extension host and disabled it for all extensions that target VS Code 1.60+ or newer. This means it never applies to internal webviews, notebooks, webview views, or custom editors (these public apis were all introduced after the switch to `asWebviewUri`)
2022-10-11 16:08:17 -07:00
Matt Bierner bfb1a738d1
Fix markdown open preview opening duplicate preview (#162793)
This fixes the markdown 'open preview' command when used with `vscode.ViewColumn.Active` or `vscode.ViewColumn.Beside`
2022-10-06 09:50:10 +02:00
Matt Bierner 4991cf2112
Remove console.log (#162784) 2022-10-05 15:25:52 -07:00
Matt Bierner d47ae7a2e7
Pick up latest markdown language service version (#162777)
Fixes #162776
Fixes #162775
2022-10-05 15:08:51 -07:00
Matt Bierner 3ee9749b35
Remove extra enums (#162686)
`showMessage` returns the selected item, so we don't need to create an enum here and can instead used the returned items directly
2022-10-04 10:46:53 -07:00
Matt Bierner cbb0a982fd
Pick up final markdown language service 0.1 release (#162256)
Just pulling in the stable release
2022-09-28 14:02:26 -07:00
Matt Bierner 5296b0faf3
Add explicit "inherit" setting for fragments links (#162231)
Fixes #162129
2022-09-28 14:08:03 -04:00
Tyler James Leonhardt 29e985eca0
rev vscode-nls to version that doesn't ask for vscode-nls-web-data (#161819)
ref #161297
2022-09-26 11:10:54 -07:00
Matt Bierner b8a7485526
Fix markdown preview refresh from disk (#161800)
Fixes #149974
2022-09-26 09:49:53 -07:00
Matt Bierner 2a4fb40a6e
Align list of supported tags in rendered markdown (#161544)
This expands the list of html tags we allow in markdown. To get this list, I've copied the list of tags from `markdownDocumentRenderer` into `dom` after  reviewing them

For #134514, I've also added `video` to the list of allowed tags
2022-09-22 18:25:48 -07:00
Matt Bierner 82c1bf86bf
Show better error when rename fails in md (#161525)
* Show better error when rename fails in md

* Pick up latest MDLanguage service
2022-09-22 16:27:25 -07:00
Matt Bierner 023930e3dc
Fix extra dot in pasted file names (#161434) 2022-09-21 23:29:21 +02:00
Matt Bierner 07a5d2749f
Allow _ in notebook markdown links (#161437)
Fixes #160853
2022-09-21 14:23:47 -07:00
Matt Bierner 17bb582b85
Finalize markdown diagnostics (#161427)
Fixes #146303

This moves the markdown diagnostic support out of `experimental` and to an official feature (however it remains off by default)
2022-09-21 12:20:25 -07:00
Matt Bierner 333754f29b
Better handle moves of multiple markdown links (#161354)
This makes the markdown language service handle moving/renaming multiple files instead of making multiple calls into the language service
2022-09-20 21:53:58 -07:00
Matt Bierner d03f015931
Clean up structure of markdown extension (#161148)
- Move things related to the client under `client`
- Remove extra abstractions that are no longer used
- Add MdLanguageClient type
2022-09-19 07:16:45 +02:00
Matt Bierner f4bf1f30a2
Skip ul and ol when highlighting selected markdown element (#161139)
Fixes #155552

For lists, the outer ul/ol always has the same source line as the first element in the list. We should prefer using the first element in the list when highlighting the active line

This also fixes a bug where scroll sync would stop working if you added lines to the doc. This was caused by `lineCount` getting out of sync as the document is being updated. I've removed this state and made the reveal logic more robust instead
2022-09-19 07:16:06 +02:00
Matt Bierner a10bdfb49b
Allow underscores in rendered md headers (#161149)
Follow up from https://github.com/microsoft/vscode-markdown-languageservice/pull/49
2022-09-16 20:52:50 -04:00
Matt Bierner 4c9c3f628d
Pick up latest markdown language service (#161142) 2022-09-16 20:52:16 -04:00
Peng Lyu 0f05c6dd4f
Fix #160729. Disable workspace md paste handler for notebook. (#160833)
Co-authored-by: Matt Bierner <matb@microsoft.com>
2022-09-15 09:48:21 -07:00
Matt Bierner 03ada8a3e8
Rework how markdown server works with documents (#160948)
* 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
2022-09-15 09:27:02 +02:00
Matt Bierner fa1fee3b21
Pick up latest Markdown language service (#160831) 2022-09-14 09:20:52 -07:00
Matt Bierner 2cf7468289
Fix markdown server deleting documents on close if they still exist on disk (#160859) 2022-09-14 09:16:39 -07:00
Matt Bierner 3729f509b5
Support creating image in workspace when pasting image data into markdown (#160554)
For #157043
2022-09-10 08:56:18 -07:00
Matt Bierner 5d5ea15a65
Allow passing in custom workspace/parser to markdown server (#160429)
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
2022-09-08 11:35:42 -07:00
Matt Bierner 2d27f8db6a
Use MD LS for resolving all document links (#160238)
* 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
2022-09-07 20:55:14 -07:00
Matt Bierner 077f5865da
Support latest md ls (#160228)
- Update `looksLikeMarkdownPath` to look at open documents and notebooks, not just the uri
- Register custom command  for document links
2022-09-07 07:17:41 +02:00
Matt Bierner c4722f1bb2
Write markdown link setting change to correct scope (#159816)
Fixes #159084

Also fixes the same issue for JS/TS
2022-09-02 13:38:41 +10:00
Matt Bierner d9fd208c29
Default to workspace root when dropping into untitled md files (#159814)
Fixes #159812
2022-09-01 16:03:40 -07:00
Matt Bierner 21337aed3f
Pick up newest markdown language service (#159619)
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
2022-08-31 09:20:41 +02:00
Matt Bierner 01ea9c11ea
Update extension enabled tsconfig libs (#159631)
Matches what we set for `src/`
2022-08-31 07:57:15 +02:00
Matt Bierner a13e5e1da6
Also apply max-width to videos in webviews (#159500) 2022-08-30 00:52:54 +02:00
Matt Bierner b91533f3d7
Pick up latest vscode-markdown-languageservice (#159341) 2022-08-26 13:08:49 -07:00
Matt Bierner ea6cfdd2ef
Pick up 8.0.2 for MD language client (#159319)
Missed updating this when pulling in new server version

https://github.com/microsoft/vscode-languageserver-node/issues/1064
2022-08-26 11:13:37 -04:00
Matt Bierner 0a7b686a48
Fix markdown not registering find all references support (#159242) 2022-08-26 01:42:52 +02:00
Matt Bierner 940abc9c11
Fix workspace edit format for update md paths on move (#158965)
Unblocks testing #158416
2022-08-23 16:33:00 -07:00
Matt Bierner 3393b785de
Bump server version (#158297) 2022-08-16 14:38:41 -04:00
Matt Bierner 720a61fc28
Fix markdown link diagnostics not updated when directories are renamed / deleted (#157956)
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)
2022-08-12 13:48:40 -04:00
Matt Bierner b731beeef4
Use notebook document uri for drop / copy paste (#157939)
Fixes #157938
2022-08-11 19:52:55 +01:00
Matt Bierner 38ea5c22a6
Pick up new markdown LS version (#157843) 2022-08-10 18:16:24 -07:00
Matt Bierner 8bf82819fc
Add experimental support for update markdown links on file moves/renames (#157209)
* 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
2022-08-09 08:31:40 -07:00
Matt Bierner 389938998f
Show error when markdown preview restore fails (#157566)
Fixes #155493
2022-08-09 09:55:40 +02:00
Matt Bierner 0103536a60
Apply editor-font-family to all code in notebooks (#157554)
Apply editor-font-family to all `code` in notebook

Fixes #146696

This matches what we do in the markdown preview
2022-08-08 20:59:16 +02:00
Tyler James Leonhardt d8453c0440
Rev built-in versions of vscode-nls to 5.1.0 (#157530)
* rev version of vscode-nls to 5.1.0

* and yarn lock
2022-08-08 18:43:45 +02:00
Matt Bierner 07e45c5a71
Fix package version (#157202)
Not sure why this was not caught by earlier builds
2022-08-04 21:40:06 -07:00
Matt Bierner b012216211
Fix markdown images having duplicate ids (#157177)
Fixes #153144
2022-08-05 06:31:42 +02:00
Matt Bierner 784de60319
Add activeWebviewPanelId context key (#156944)
Fixes #156942

This context tracks the id of the active webviewPanel
2022-08-03 07:03:33 +02:00
Matt Bierner 8b27dcb1f8
Pick up latest markdown language service (#156933) 2022-08-02 23:31:58 +02:00
John Murray 7e400c7137
Provide valid markdown-specific default for editor.quickSuggestions setting (#156686) (#156689)
Co-authored-by: Matt Bierner <matb@microsoft.com>
2022-08-02 13:51:41 -07:00
Matt Bierner e3267b75c6
Fix onDidDeleteMarkdownDocument not hooked up (#156913) 2022-08-02 22:18:08 +02:00
Matt Bierner 1097f3e440
Use finalized vscode-languageserver version (#156910)
Use finalized vscode-languageserver build
2022-08-02 15:51:07 -04:00
Matt Bierner 3a5a458643
Clear markdown diagnostics when file is closed (#156912) 2022-08-02 20:32:02 +02:00
Matt Bierner 241c770203
Exclude esbuild files from build (#156362) 2022-07-27 09:32:07 -04:00
Matt Bierner 9cf2fabdd6
Rename editor.dropIntoEditor.enabled setting (#156381)
Fixes #156344
2022-07-27 06:44:44 +02:00
Matt Bierner cf145a83ac
Enable safe inline svg tags in trusted html (#156216)
Enable safe svg tags in trusted html

From cce00ac40d/src/tags.js (L124)
2022-07-25 16:32:10 -07:00
Matt Bierner 68cbaa708e
Pick up new version of markdown-language-server (#156010)
This fixes md diagnostics and links for multiroot workspaces
2022-07-24 22:22:03 -07:00
Matt Bierner a9b387204b
Add some additional logging to md server (#156007)
Logs watcher operations
2022-07-23 00:32:10 +02:00
Matt Bierner e2006a52da
Add npmignore to markdown server (#155898)
* Add npmignore to markdown server

* Update version
2022-07-21 16:21:57 -07:00
Matt Bierner b2daf1af82
Add MD server tracing and update diagnostics on files changes (#155797) 2022-07-21 10:07:06 -07:00
Matt Bierner 924dde5c1e
Documenting markdown LS (#155789) 2022-07-21 11:48:30 +02:00
Matt Bierner 32f5e49082
Move MD diagnostics to language server (#155653)
* Move MD diagnostics to language server

This switches us to using the LSP pull diagnostic model with a new version of the language service

* Bump package version

* Delete unused file
2022-07-19 16:34:09 -07:00
Matt Bierner 394eaa9fa3
Fix md document links for untitled files (#155248) 2022-07-14 18:15:13 -07:00
Matt Bierner 9ee8961347
Move MD references, rename, and definition support to md LS (#155127) 2022-07-14 08:32:27 +02:00
Matt Bierner 867acc336f
Remove references to finalized drop api (#155128) 2022-07-14 08:27:25 +02:00
Matt Bierner 50056f3e78
Finalize drop into editor api (#155102)
Fixes #142990
Fixes #149779
2022-07-13 12:54:52 -07:00
Matt Bierner bec36ce756
Move md path completions and document links to language server (#155100) 2022-07-13 12:49:37 -07:00
Matt Bierner 75e231ad82
Clean up document link resolve (#154959)
- Move vscode scheme normalization to the DocumentLinkProvider
- Remove extra function since we already recognize uri-like links
2022-07-12 15:55:21 -07:00
Matt Bierner eeb8d49317
Move md workspace symbol search to language service (#154874)
* Move md workspace symbol search to language service

Also implements more of IWorkspace for the server

* Revert extra change
2022-07-12 10:04:25 -04:00
Matt Bierner c9bf4393d5
Rename drop API interface (#154876)
Makes the names more consistent
2022-07-12 11:33:13 +02:00
Matt Bierner 3a9292f23f
Remove extra files from build (#154875)
These server files should not be included
2022-07-12 11:31:43 +02:00
Matt Bierner e02c71e3c6
Fix range of reference links (#154819)
Fixes #150921
2022-07-11 17:46:15 +02:00
Ladislau Szomoru f2a475346f
Fix compilation error (#154699) 2022-07-10 07:50:17 -07:00
Matt Bierner 2b3912fa29
Fix markdown extension path (#154656)
Fixes #154645
Fixes #154653
2022-07-10 14:25:45 +02:00
Matt Bierner 2fb56e9d62
Move smart select and folding to md language server (#154334)
* Move smart select and folding to md language server

Also fixes a few minor issues:

- Don't log to web console
- Remove convert code since it is no longer needed
- Use correct extension id

* bump cache

* Bump package version

Co-authored-by: João Moreno <joao.moreno@microsoft.com>
2022-07-07 07:30:03 -07:00
João Moreno b4525a77fb
update yarn.lock (#154336) 2022-07-07 09:26:12 +02:00
Logan Ramos a20329d291
Switch extensions to 1DS (#154299)
* Move extensions to 1DS

* Switch extensions to 1DS
2022-07-06 17:18:41 -07:00
Matt Bierner ad9675f099
Scaffold out basic markdown language server (#154293)
* Scaffold out basic markdown lsp

This scaffolds out a new markdown language server and then uses it to implement document symbols. After the change, the markdown extension will have the following structure:

- languageService — Where all the LSP language stuff will eventually land
- server — The actual language server. Consumes ` languageService`
- src — The current extension that launches the server and implements VS Code specific functions

* Adding build scripts

* a

* Use language service from github

* Remove ls build scripts

* Bump versions

* Only build ext

* Enable for web

* Fixing for browser
2022-07-06 16:03:24 -07:00
Matt Bierner f6271dd82e
Fix angle bracket path completions for link defs (#154182)
Fixes #153866
2022-07-05 11:55:20 -07:00
Matt Bierner fc0bd9d377
Remove reliance on document.lineAt (#154191)
* Remove reliance on document.lineAt

This helps aligning more with the LSP types: https://github.com/microsoft/vscode-languageserver-node/issues/146

* Strip newline
2022-07-05 11:52:47 -07:00
Matt Bierner 0b3574dcef
Update id of markdown-it renderer (#153876)
Fixes #153873
2022-06-30 23:19:49 +00:00
Matt Bierner e44361365e
Don't include reference links that are inside other links (#153864)
Fixes #150921
2022-06-30 15:43:31 -07:00
Matt Bierner bbce24d8bb
Handle fs error in markdown path completions (#153869)
Fixes #153867
2022-06-30 22:32:32 +00:00
Matt Bierner e13feea6ae
Only compute diagnostics for opened md files (#153395)
* Only compute diagnostics for opened md files

For #152494

* Make tests stable for result ordering
2022-06-27 15:55:38 -07:00
Matt Bierner fc709e2d35
Use more standard values for scheme constants (#153367)
This drops the `:` from the scheme constants as it was easy to misuse this
2022-06-27 22:35:17 +02:00
Matt Bierner da0f64881a
Dispose in markdown tests (#153345)
Updates the markdown tests to dispose of disposables created during the test
2022-06-27 15:52:59 -04:00
Matt Bierner d1b4630a50
Fix Markdown tests on windows (#153212)
Fix windows tests
2022-06-25 18:59:25 +02:00
Matt Bierner 3b549009fe
Markdown path completions tests use mocked out fs (#153045)
* Markdown path completions tests use mocked out fs

This updates the path completion tests to stop depending on the actual fs and instead use `IMdWorkspace`

* Update remaining tests
2022-06-24 23:01:24 +00:00
Matt Bierner 64305a732e
Better handling of text/uri-list in built-in extensions (#153163)
- When splitting `text/uri-list`, we should split on `\n` to handle against spec versions of `text/uri-list`
- However when constructing a `text/uri-list`, we should use `\r\n` to align with the spec
2022-06-24 15:24:16 -07:00
Matt Bierner 7fd834b64f
Enable angle bracket path completions in markdown (#153158)
Fixes #152510
2022-06-24 15:04:40 -07:00
Matt Bierner 8acfd0ae60
Exclude empty links from md results (#153161)
These are technically valid links but we don't care about them since they take up no space
2022-06-24 21:42:00 +00:00
Matt Bierner 00ad6bc3d4
Markdown document links should reveal cell in notebook (#153147)
Fixes #141024
2022-06-24 15:49:15 -04:00
Matt Bierner d6497d3db1
Use ResourceMap (#153051)
Replaces `Set` of uris with a `ResourceMap`
2022-06-24 01:00:05 +00:00
Matt Bierner 9b7696cc9c
Fix notebook links to other docs in edited markdown cells (#153052)
Fixes #148199

This makes us resolve links in notebooks relative to the notebook document instead of relaitve to the cell
2022-06-23 20:55:08 -04:00
Matt Bierner ab7bc9fb0b
Split up MD link tests (#153048)
This splits the markdown link tests in two:

- Tests for detecting links in md files (`MdLinkComputer`)
- Tests for the actual vs code editor link provider

Also fixes a few cases splitting these tests up caught
2022-06-23 17:53:56 -07:00
Logan Ramos 4a7a6a597a
Update extension telemetry modules (#153057) 2022-06-24 00:53:23 +00:00
Matt Bierner 385bf5036b
Optimize NoLinkRanges lookup (#153010)
This switches us to use a map to check if a position exists inside the no link ranges
2022-06-23 11:38:13 -07:00
Matt Bierner 07144d22c4
Rename types in the markdown extension (#152905)
Renames in the markdown extension

This renames some types and splits up some files as part of an exploration towards a proper LSP. Changes:

- `SkinnyTextDocument` -> `ITextDocument`
- Moved `ITextDocument` to own file
- `MdWorkspaceContents` -> `IMdWorkspace`
2022-06-22 14:12:48 -07:00
Matt Bierner be1ee5d9f1
Re-validate md files when a linked to file is created or deleted (#152520) 2022-06-22 19:02:46 +00:00
Matt Bierner 321423db2b
Standardize text/uri-list handling (#152756)
This creates a common set of functions for creating and parsing the `text/uri-list` mime type. As part of this, I also aligned us with the standard, which uses `\r\n` between lines instead of just `\n`
2022-06-22 13:53:37 +02:00
Matt Bierner 5437480941
Enable md paste actions by default (#152810)
Turns on pasting of links for easier testing. However `editor.experimental.pasteActions.enabled` is still off by default so this won't be enabled by default
2022-06-22 08:19:52 +02:00
Matt Bierner c84655d123
Reduce recomputation of state in markdown extension (#152804)
* Reduce recomputation of state in markdown extension

- Use `getForDocument` more often to avoid refetching documents
- Debounce `MdTableOfContentsWatcher`. We don't want this to trigger on every keystroke :)

* Cache LinkDefinitionSet

* Add test file change

* Fix toc watcher for tests
2022-06-21 16:25:10 -07:00
Matt Bierner 389aa8a935
Fix MdDocumentInfoCache computing values twice (#152799)
* Fix MdDocumentInfoCache computing values twice

Fixes a race where values could be computed twice before being cached

* Remove only
2022-06-21 16:22:07 -07:00
Matt Bierner d5a75f2ceb
Add logging for MD language features (#152792)
This verbose logging will help track down inefficient calling patterns (such as recomputing stuff)
2022-06-21 14:18:36 -07:00
Matt Bierner bbe7b54cf4
Remove custom editor tests (#152777)
These tests are not actively being run or maintained. Removing them for now
2022-06-21 15:37:19 -04:00
Matt Bierner fa53aa6fec
Cleanup pass for md extension (#152760)
Clean up names in md extension
2022-06-21 15:36:32 -04:00
Matt Bierner 2249b171f4
Reduce number of times MD docs are re-tokenized (#152674)
This change reduces the number of times we retokenize a markdown file by doing the following:

- Use `MdTableOfContentsProvider` in more places
- Introduce a `IMarkdownParser` interface that lets us drop in a caching version of the tokenizer
2022-06-21 08:43:01 +02:00
Matt Bierner 369252a027
Skip diagnostics for non-open md files (#152687)
Currently we only show diagnostics for opened tabs. This means we shouldn't waste time computing diagnostics for these non open files
2022-06-20 16:39:01 -07:00
Matt Bierner 0bc3109761
Don't try parsing non-markdown files (#152661)
This fixes our references and rename provider to not try parsing non-markdown files as if they were markdown
2022-06-20 10:44:50 -07:00
Matt Bierner 4c72dedb4a
Optimize markdown workspace scanning (#152563)
* Optimize markdown workspace scanning

- Adds cache for markdown file
- Avoid reading non-markdown files from disk (when we expect markdown files)
- Use `range.contains(pos)` instead of `range.intersects(range)`

* Don't remove cached document on change

We only want to invalidate the cached document when it is first opened (since the cached version is the one from disk). Otherwise we can use the live version of the doc
2022-06-19 09:40:10 -07:00
Matt Bierner 5a175207de
Improve markdown link regexp (#152533)
* Improve markdown link regexp

This makes the markdown link regexp more readable and also combines the two regular expressions we were running

* Fixed backtracking
2022-06-19 06:25:54 +02:00
Matt Bierner 78597fd026
Don't hardcode use of github slugifier (#152507)
Use `engine.slugifier` for this instead
2022-06-17 17:25:54 -04:00
Matt Bierner dea813ff7c
Add table of contents provider abstraction (#152504)
We currently re-compute the same table of contents for markdown files multiple times. This is because multiple language features all need table of contents

With this change, we introduce a new `TableOfContentsProvider` which maintains a cache of the table of contents per file. This provider is then passed into every caller that needs a toc
2022-06-17 18:20:02 +00:00
Matt Bierner 623f55f437
Refactor markdown language features (#152402)
(sorry for the size of this PR)

This change cleans up the markdown language features by making the following changes:

- Use `registerXSupport` public functions to register these
- Expose the slugifier the `MarkdownEngine` uses. You never want to use a different one if you already have a markdown engine
- Sort of clean up names. I'd introduced a bunch of confusing names while iterating in this space. What I'm working towards:

    - `Computer` — Stateless thing that computer data
    - `Provider` — Potentially stateful thing that provides data (which may be cached)
    - `VsCodeProvider` — The actual implementation of the various vscode language features (which should only be used by VS Code and in tests, not shared with other features)
- Introduce `MdLinkProvider` to avoid recomputing links for a given document. Also use this to hide more internals of link computation
2022-06-17 10:25:52 +02:00
Matt Bierner afe316c08c
Add diagnostic manager enablement change tests (#152392)
* Add test for MD diagnostic manager config changes

Add a simple test the enabling/disable diagnostics should make the diagnostic manager recompute diagnostics

* Add `.get`
2022-06-16 15:53:19 -07:00
Matt Bierner cb5fa75d11
Clean up markdown diagnostic tests (#152374)
* Clean up markdown diagnostic tests

This splits the diagnostic compute tests from the test for the diagnostic manager

* Mark internal field as private
2022-06-16 22:33:11 +02:00
Matt Bierner 3114ee690b
Split out VS Code reference provider from markdown reference provider (#152369)
This change renames the main markdown reference provider class to `MdReferenceComputer` and then uses this to implement a `vscode.ReferenceProvider`

This more cleanly splits the VS Code part of the logic from the general reference calculation stuff other providers consume
2022-06-16 15:47:48 -04:00
Matt Bierner 6c252851f2
Revalidate linked files on header change (#152366)
Fixes #150945

With this change, when the headers in a file change, we should also try to revalidate all files that link to it
2022-06-16 18:14:01 +00:00
Matt Bierner 4fc5d76213
Fix ranges and validation setting for MD own path + header links (#152270)
* Fix ranges and validation setting for MD own path + header links

Previously for a `file.md`, links to headers in that file that use paths, such as `[link](./file.md#some-header)` were validated using `markdown.experimental.validate.fragmentLinks.enabled`

This is confusing as that setting was only meant to be used for links such as`[link](#some-header`). It also resulted in the diagnostic having the incorrect range

This change instead makes these links be validated by `markdown.experimental.validate.fileLinks.markdownFragmentLinks`

* Fix compile
2022-06-15 20:02:41 -07:00
Matt Bierner a765abcf07
Adopt ResourceMap for MD diagnostics (#152264)
Adopt ResourceMap

Switches to use `ResourceMap` instead of our own implementation
2022-06-15 15:43:09 -07:00
Matt Bierner f17b33faf2
Use .?method() in more places (#152112)
Switches simple patterns like:

```ts
if (some.thing) {
    some.thing.method();
}
```

to:

```ts
some.thing?.method()
```

This is more concise and avoids having to repeat the `some.thing` part
2022-06-15 16:28:31 +00:00
Matt Bierner 354e1a0595
Finalize data file reading API (#152127)
Fixes #147481
Also reverts #150963 since the `kind` field is not being finalized
2022-06-15 07:56:02 -07:00
Matt Bierner 00273730e8
Split markdown linkComputer from linkProvider (#152124)
Instead of passing around a full `vscode.DocumentLinkProvider`, we should pass just the more minimal interface that consumers need
2022-06-14 15:34:05 -07:00
Matt Bierner 00574df08a
Remove extra path field in FileLinksData (#152004)
Remove extra `path` field

This field is no longer needed after we switched to use `ResourceMap` vs `Map`

Also inlines the `FileLinksData` type def
2022-06-14 08:01:53 -07:00
Matt Bierner a658c04b0a
Adjust md external header link diagnostic range (#152001)
Fixes #151998

Makes errors for invalid headers on file links only cover the fragment range instead of the entire link range
2022-06-14 09:39:49 +02:00
Matt Bierner 1a07fd15d7
Clarify markdown validate settings (#151997)
Clairify markdown validate settings

Fixes #150949

- Rename headerLinks -> fragmentLinks
- Add new `fileLink.markdownFragmentsLinks` to validate the headers on fragment links (inherits the default setting value from `fragmentLinks`)
2022-06-13 17:06:28 -07:00
Matt Bierner 7284c3e4c1
Use classes for drop/paste edit types (#151980) 2022-06-13 13:10:07 -07:00
Johannes ed9ed45794
Merge branch 'main' into joh/voluminous-lobster 2022-06-10 09:07:30 +02:00
Babak K. Shandiz a8de8e2112
[markdown] Ignore brackets inside link text (#151610)
* 🔨 Allow texts in bracket pairs inside link titles; [text](link)

Signed-off-by: GitHub <noreply@github.com>

* 🔨 Allow texts in bracket pairs inside link titles; [text](<link>)

Signed-off-by: GitHub <noreply@github.com>

* ⚗️ Add tests to verify  link titles can include bracket pairs

Signed-off-by: GitHub <noreply@github.com>
2022-06-09 11:48:50 -07:00
Johannes 3622010b64
Merge branch 'main' into joh/voluminous-lobster 2022-06-09 09:08:20 +02:00
Matt Bierner d7c90c2b2b
Update text editor drop proposal (#151552)
This updates the text editor drop proposal (#142990). This change introduces `DocumentDropEdit` which removes the need for `SnippetTextEdit`. This interface may also be extended in the future with additional metadata
2022-06-08 17:44:28 -04:00
Matt Bierner 48cfaa2187
Fix rename of paths in markdown reference link definitions (#151545)
Fixes #151117
2022-06-08 19:20:17 +00:00
Matt Bierner 370dfd5fee
Iterate on paste edit provider api (#151477)
* Iterate on paste edit provider api

For #30066

- Pass all selections to paste providers. For #151326
- Introduce `DocumentPasteEdit` as return type. This new type uses an `insertText` that is applied to every paste location (for multicursor), plus an optional additional edit
-  Add `DocumentPasteProviderMetadata`. This lets extensions tell us which types of mimetypes they are interested in, letting us avoid round trips if no extensions care about the pasted data

* Correctly batch insertText
2022-06-08 15:06:55 -04:00
Johannes 0656d21d11
auto-fixed prefer-const violation 2022-06-08 17:49:21 +02:00
Matt Bierner 1327d1eb50
Adopt ResourceMap in more places (#151475)
This changes switches to use the new `ResourceMap` type in more places in the markdown extension where we need to have a map/set with uris as the key
2022-06-08 08:34:06 +02:00
Matt Bierner 60a68d666d
Add resourceMap helper for markdown extension (#151471)
This change introduces a `ResoruceMap` map type that is essentially `Map<vscode.Uri, T>`

It also fixes a potential race condition with `MdWorkspaceCache` where two quick calls would both trigger init
2022-06-07 18:00:10 -07:00
Matt Bierner 9545af80f6
Fix markdown link detection for links with titles (#151459)
Fixes #151458
2022-06-07 20:58:29 +00:00
Justin Chen bcc7ffae3e
bugfix on markdown underlines, addressing part of issue #136073 (#151178)
Co-authored-by: Justin Chen <t-justinchen@microsoft.com>
Co-authored-by: Matt Bierner <matb@microsoft.com>
2022-06-06 17:35:41 +00:00
Logan Ramos 70647a2ffd
Fix #150041 (#151108) 2022-06-02 11:02:26 -04:00