diff --git a/test/playground.generated/extending-language-services-folding-provider-example.html b/test/playground.generated/extending-language-services-folding-provider-example.html
new file mode 100644
index 00000000..18091fc0
--- /dev/null
+++ b/test/playground.generated/extending-language-services-folding-provider-example.html
@@ -0,0 +1,119 @@
+
+
+
+
+
+
+
+
+
+
+[<< BACK]
+THIS IS A GENERATED FILE VIA gulp generate-test-samples
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/test/playground.generated/index.html b/test/playground.generated/index.html
index a684f42f..e2733186 100644
--- a/test/playground.generated/index.html
+++ b/test/playground.generated/index.html
@@ -30,6 +30,7 @@ THIS IS A GENERATED FILE VIA gulp generate-test-samples
Extending Language Services > Completion provider example
Extending Language Services > Codelens provider example
Extending Language Services > Color provider example
+Extending Language Services > Folding provider example
Extending Language Services > Hover provider example
Extending Language Services > Configure JavaScript defaults
Extending Language Services > Configure JSON defaults
diff --git a/website/playground/new-samples/all.js b/website/playground/new-samples/all.js
index 54395bc2..f7f41d7a 100644
--- a/website/playground/new-samples/all.js
+++ b/website/playground/new-samples/all.js
@@ -139,6 +139,12 @@ var PLAY_SAMPLES = [
id: "extending-language-services-color-provider-example",
path: "extending-language-services/color-provider-example"
},
+ {
+ chapter: "Extending Language Services",
+ name: "Folding provider example",
+ id: "extending-language-services-folding-provider-example",
+ path: "extending-language-services/folding-provider-example"
+ },
{
chapter: "Extending Language Services",
name: "Hover provider example",
diff --git a/website/playground/new-samples/extending-language-services/folding-provider-example/sample.css b/website/playground/new-samples/extending-language-services/folding-provider-example/sample.css
new file mode 100644
index 00000000..e69de29b
diff --git a/website/playground/new-samples/extending-language-services/folding-provider-example/sample.html b/website/playground/new-samples/extending-language-services/folding-provider-example/sample.html
new file mode 100644
index 00000000..b2e43e28
--- /dev/null
+++ b/website/playground/new-samples/extending-language-services/folding-provider-example/sample.html
@@ -0,0 +1 @@
+
diff --git a/website/playground/new-samples/extending-language-services/folding-provider-example/sample.js b/website/playground/new-samples/extending-language-services/folding-provider-example/sample.js
new file mode 100644
index 00000000..546fe50e
--- /dev/null
+++ b/website/playground/new-samples/extending-language-services/folding-provider-example/sample.js
@@ -0,0 +1,75 @@
+monaco.languages.register({
+ id: "foldLanguage"
+});
+
+var value =
+`1. Hit F1 to bring up the Command Palette
+2. Type 'fold'
+3. Choose 'Fold All Block Comments' or 'Fold All Regions'
+
+5. comment1
+6. comment1
+7. comment1
+
+9. unfoldable text
+10. unfoldable text
+11. unfoldable text
+
+13. comment2
+14. comment2
+15. comment2
+16. comment2
+17. comment2
+
+19. foldable text
+20. foldable text
+21. foldable text
+
+23. region1
+24. region1
+25. region1
+
+27. region2
+28. region2
+29. region2`
+
+monaco.editor.create(document.getElementById("container"), {
+ value: value,
+ language: "foldLanguage"
+});
+
+monaco.languages.registerFoldingRangeProvider("foldLanguage", {
+ provideFoldingRanges: function(model, context, token) {
+ return [
+ // comment1
+ {
+ start: 5,
+ end: 7,
+ kind: monaco.languages.FoldingRangeKind.Comment
+ },
+ // comment2
+ {
+ start: 13,
+ end: 17,
+ kind: monaco.languages.FoldingRangeKind.Comment
+ },
+ // foldable text
+ {
+ start: 19,
+ end: 21
+ },
+ // region1
+ {
+ start: 23,
+ end: 25,
+ kind: monaco.languages.FoldingRangeKind.Region
+ },
+ // region2
+ {
+ start: 27,
+ end: 29,
+ kind: monaco.languages.FoldingRangeKind.Region
+ }
+ ];
+ }
+});
\ No newline at end of file