Commit Graph

141 Commits

Author SHA1 Message Date
Matt Bierner d41997790c Remove CustomDocument.viewType
Fixes #93867
For #77131

This property is no longer needed (or very helpful) with the current api design
2020-03-31 12:00:17 -07:00
Matt Bierner 579dab3196 Update custom editor api
For #77131

- Use a class for `CustomDocument` instead of an interface. Extensions can now add their own data to a `CustomDocument` by sublassing

- Renamed `resolveCustomDocument` to `openCustomDocument` and require that extensions return a `CustomDocument`

- Exposed edits on `CustomDocument`

- Made the third parameter of `registerCustomEditorProvider` a generic options bag that takes a `webviewOptions`
2020-03-23 13:10:49 -07:00
Matt Bierner 9dae408dc3 Switch webview api back to use delegate model
For #77131

Going back the the delegate based model for a few reasons:

- It gives us a better approach to add additional API hooks in the future (such as for rename)

- In practive, the capabilities were almost always the same as the `userData` on the document. It is rather confusing to have both `userData` and the capabilities 'on' the document
2020-03-12 16:54:48 -07:00
Benno 0b3e54edb1 update #91296 allow multiple workspace roots (#92082)
* update #91296 allow multiple workspace roots

* update #92082
2020-03-09 12:56:54 -07:00
Matt Bierner 022b6c6d23 Use customtexteditor for markdown editor 2020-03-04 14:14:31 -08:00
Matt Bierner 6e30cf38a7 Mark markdown comment folding regions as comments
Fixes #91271
2020-03-02 11:26:29 -08:00
Matt Bierner 8291f8c152 Polishing of custom editor api proposal for 1.43 release
For #77131
2020-02-25 10:55:41 -08:00
Matt Bierner 99d5733e5f New iteration of webview editor API proposal
For #77131

**Motivation**
While our existing webview editor API proposal more or less works, building an editable webview editor is fairly tricky using it! This is especially true for simple text based editors.

It'd also be nice if we could get bi-directional live editing for text files. For example, if I open the same file in a webview editor and in VS Code's normal editor, edits on either side should be reflected in the other. While this can sort of be implemented using the existing API, it has some big limitations

**Overview of changes**
To address these problems, we've decided have two types of webview editors:

- Text based webview editors. These editors used a `TextDocument` as their data model, which considerably simplifies implementing an editable webview. In almost all cases, this should be what you use for text files

- Complex webview editors. This is basically the existing proposed API. This gives extension hooks into all the VS Code events, such as `save`, `undo`, and so on. These should be used for binary files or in very complex text editor cases.

Both editor types now have an explicit model layer based on documents. Text editor use `TextDocument` for this, while custom editors use `WebviewEditorCustomDocument`. This replaces the delegate based approach previously used.
2020-02-21 16:26:01 -08:00
Matt Bierner 8e475f9b24 Implement draft 2 from #86802 (#87117) 2019-12-16 14:18:58 -08:00
Andrew Liu 37eeb3755a quick fix (#85506) 2019-11-25 11:30:04 -08:00
Matt Bierner cbd414ba58 Don't force refresh the markdown preview's html when changing the active document 2019-11-08 17:00:56 -08:00
Matt Bierner 979e2b0387 Remove duplicate call to dispose 2019-11-08 16:56:06 -08:00
Matt Bierner 8236f06bfc Add experimental webview editor based markdown preview
Potentially for #54776, #2766
2019-11-08 10:38:51 -08:00
Matt Bierner 43a2ca8840 Remove forceUpdate property 2019-11-08 10:38:51 -08:00
Matt Bierner 1cdb534185 Try to redeuce duplication for create vs refactor 2019-11-08 10:38:51 -08:00
Matt Bierner 886ea7a8b4 💄 2019-11-08 10:38:51 -08:00
Matt Bierner aafc307dd8 Use set to store preview instead of array 2019-11-08 10:38:51 -08:00
Matt Bierner 884d52f1e7 Extract DynamicPreviewStore 2019-11-08 10:38:51 -08:00
Matt Bierner 7ee9aa4757 Rename and move types around to get ready for webview editor based previews 2019-11-08 10:38:51 -08:00
Matt Bierner 78559bf9e6 Normalize vscode links in markdown files to target current vscode version
Fixes #71622

This allows you to use generic `vscode` links inside the markdown preview and still have them work if the preview is viewed in insiders
2019-10-23 20:27:52 -07:00
Matt Bierner 21ba436c51 Fix one more case of #81320
The markdown link people write may be uri encoded. We need to decode these before trying to open them
2019-10-09 13:01:30 -07:00
Matt Bierner 36aa903d5a Rewrite how we handle links in the md preview
Try to simplify how we resolve links:

- Move most logic out of the preview itself.
- Simplify the amount of rewriting we do in the markdown engine
2019-10-04 17:57:33 -07:00
Matt Bierner ef698fa6cd Make markdown refresh more stable
Fixes #80680

- Always sync the current preview line number with the editor, even when `scrollEditorWithPreview` is false

- If the md file is focused and refresh is called, do not try resetting the current line to match the editor file. This mainly effects the case where `scrollEditorWithPreview` is false
2019-10-03 13:46:31 -07:00
Konstantin Solomatov 316fd807fe remove docIndex in markdown language extension (#80933) 2019-09-16 10:50:20 -07:00
Johannes Rieken 9aab002dea push workaround for ts-loader weirdness 2019-09-12 09:59:31 +02:00
Matt Bierner 153e063486 Fix markdown preview refresh command potentially resetting preview scroll position to top if focused on preview
Fixes #80680
2019-09-11 20:50:52 -07:00
Konstantin Solomatov 5db460d2fe Fix activation of linters on unopened files caused by markdown plugin (#80506)
* Fix bug causing a large number of linters to be activated due to the markdown extension opening TextDocuments during indexing

* indentation problem

* code review by @OmarTawfik

* revert changed file

* Code review: use nodejs' Buffer

* fix ineffcient code
code review comments

* introduce SkinnyTextLine

* refactor redundant code

* revert changed files

* formatting

* remove empty line
2019-09-11 11:39:08 -07:00
Matt Bierner 2fe62e7dfe Use the document that contains the md link as the resource for getting config, not the target document 2019-09-10 16:31:53 -07:00
Matt Bierner 7a00ddf9f8 Format files for 3.6
Fixes #80118
2019-09-02 21:29:05 -06:00
Matt Bierner a66e9d4835 Don't dispose markdown preview emitters before firing events
Fixes #79827
2019-08-26 13:40:07 -07:00
Matt Bierner 646d4ddb75 Use _register 2019-08-20 15:07:25 -07:00
Matt Bierner c5dc9d16be Finalize asWebviewUri api
Fixes #79242

As discussed, renames `toWebviewResource` to `asWebviewUri` to be consistent with the `asAbsolutePath` api naming
2019-08-19 20:18:26 -07:00
Salvador Cabrera 34339f92c4 Fix: Markdown Preview scroll remains same after clicking on some other link #78465
Improves the behavior on how markdown preview behaves when clicking a link
2019-08-19 09:35:06 -05:00
Matt Bierner 1bbf3b3fa6 Add telemetry+warning for webviews that don't have a content security policy
Fixes #79248
2019-08-15 15:16:39 -07:00
Matt Bierner e1d3dd53d1 Mark static readonly 2019-07-22 16:24:53 -07:00
Matt Bierner b850405aa6 Merge pull request #76647 from masliu/master
Save resourceColumn for previews, fixes #74008
2019-07-17 16:01:46 -07:00
Matt Bierner 4c07744817 Make sure we handle loading of markdown resources from UNC workspace correctly
Fixes #48403
2019-07-09 15:52:43 -07:00
Matt Bierner c01a3a718d Use clearer name for csp webview element
#76489
2019-07-09 11:45:20 -07:00
Matt Bierner a558a9504a Adding toWebviewResource api
For #76489
2019-07-08 18:38:47 -07:00
masliu 173d010b0a Rename sourceViewColumn to resourceColumn 2019-07-04 22:29:23 -04:00
masliu 47f9ed5d22 Save source viewColumn for previews, fixes #74008 2019-07-04 21:37:28 -04:00
Miguel Solorio 05ee90f7fd Merge remote-tracking branch 'origin/master' into misolori/new-icons 2019-06-28 11:05:33 -07:00
Matt Bierner be41fd02a2 Show document link tooltip first and put click instructions in parens
Fixes #76077

This change also update our standard link hovers to follow this format
2019-06-25 16:38:50 -07:00
Matt Bierner 8119b4aee7 Move the webviewResourceRoot property to be set on each webview instead of as a global property
For #72155

This allows  us to potentially change the resource root per webview
2019-06-24 17:07:06 -07:00
Miguel Solorio e998949260 Update markdown icons 2019-06-20 11:53:01 -07:00
Matt Bierner 7f3d3d835f Add vscode.env.webviewResourceRoot api
Fixes #72155

Adds a constant to the api that tracks the root path for resources inside of webviews. This is required because we will not be able to use `vscode-resource:` uris on the web. Our current approach is to rewrite the html we are given but there are almost certainly going to be cases where we don't get this quite right.

Adopts the new api for the markdown preview
2019-06-18 22:29:37 -07:00
Matt Bierner 18ba826e67 Markdown previews should be able to load resources from next to where they are running
Add `'self'` to some content security policies for the preview
2019-06-17 11:20:19 -07:00
Matt Bierner 2ad085b5bd Merge pull request #75357 from Olovan/fix_35245
Fix for issue #35245
2019-06-12 16:56:13 -07:00
Micah Smith 01f7276b7e Fix for issue #35245 2019-06-12 14:30:54 -04:00
Matt Bierner 8de74d9255 Extracting common webview elements
Minimizing diff with the iframe based webview branch
2019-06-11 22:45:55 -07:00