diff --git a/test/playground.generated/extending-language-services-symbols-provider-example.html b/test/playground.generated/extending-language-services-symbols-provider-example.html
new file mode 100644
index 00000000..06614d80
--- /dev/null
+++ b/test/playground.generated/extending-language-services-symbols-provider-example.html
@@ -0,0 +1,315 @@
+
+
+
+
+
+
+
+
+
+
+[<< 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 e2733186..77a2dc93 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 > Symbols provider example
Extending Language Services > Folding provider example
Extending Language Services > Hover provider example
Extending Language Services > Configure JavaScript defaults
diff --git a/website/playground/new-samples/all.js b/website/playground/new-samples/all.js
index f7f41d7a..ec1190e3 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: "Symbols provider example",
+ id: "extending-language-services-symbols-provider-example",
+ path: "extending-language-services/symbols-provider-example"
+ },
{
chapter: "Extending Language Services",
name: "Folding provider example",
diff --git a/website/playground/new-samples/extending-language-services/symbols-provider-example/sample.css b/website/playground/new-samples/extending-language-services/symbols-provider-example/sample.css
new file mode 100644
index 00000000..e69de29b
diff --git a/website/playground/new-samples/extending-language-services/symbols-provider-example/sample.html b/website/playground/new-samples/extending-language-services/symbols-provider-example/sample.html
new file mode 100644
index 00000000..b2e43e28
--- /dev/null
+++ b/website/playground/new-samples/extending-language-services/symbols-provider-example/sample.html
@@ -0,0 +1 @@
+
diff --git a/website/playground/new-samples/extending-language-services/symbols-provider-example/sample.js b/website/playground/new-samples/extending-language-services/symbols-provider-example/sample.js
new file mode 100644
index 00000000..c2c25cda
--- /dev/null
+++ b/website/playground/new-samples/extending-language-services/symbols-provider-example/sample.js
@@ -0,0 +1,271 @@
+monaco.languages.registerDocumentSymbolProvider('json', {
+ provideDocumentSymbols: function (model, token) {
+ return [
+ {
+ range: {
+ startLineNumber: 1,
+ startColumn: 1,
+ endLineNumber: 2,
+ endColumn: 1
+ },
+ name: 'File',
+ kind: 0
+ },
+ {
+ range: {
+ startLineNumber: 1,
+ startColumn: 1,
+ endLineNumber: 2,
+ endColumn: 1
+ },
+ name: 'Module',
+ kind: 1
+ },
+ {
+ range: {
+ startLineNumber: 1,
+ startColumn: 1,
+ endLineNumber: 2,
+ endColumn: 1
+ },
+ name: 'Namespace',
+ kind: 2
+ },
+ {
+ range: {
+ startLineNumber: 1,
+ startColumn: 1,
+ endLineNumber: 2,
+ endColumn: 1
+ },
+ name: 'Package',
+ kind: 3
+ },
+ {
+ range: {
+ startLineNumber: 1,
+ startColumn: 1,
+ endLineNumber: 2,
+ endColumn: 1
+ },
+ name: 'Class',
+ kind: 4
+ },
+ {
+ range: {
+ startLineNumber: 1,
+ startColumn: 1,
+ endLineNumber: 2,
+ endColumn: 1
+ },
+ name: 'Method',
+ kind: 5
+ },
+ {
+ range: {
+ startLineNumber: 1,
+ startColumn: 1,
+ endLineNumber: 2,
+ endColumn: 1
+ },
+ name: 'Property',
+ kind: 6
+ },
+ {
+ range: {
+ startLineNumber: 1,
+ startColumn: 1,
+ endLineNumber: 2,
+ endColumn: 1
+ },
+ name: 'Field',
+ kind: 7
+ },
+ {
+ range: {
+ startLineNumber: 1,
+ startColumn: 1,
+ endLineNumber: 2,
+ endColumn: 1
+ },
+ name: 'Constructor',
+ kind: 8
+ },
+ {
+ range: {
+ startLineNumber: 1,
+ startColumn: 1,
+ endLineNumber: 2,
+ endColumn: 1
+ },
+ name: 'Enum',
+ kind: 9
+ },
+ {
+ range: {
+ startLineNumber: 1,
+ startColumn: 1,
+ endLineNumber: 2,
+ endColumn: 1
+ },
+ name: 'Interface',
+ kind: 10
+ },
+ {
+ range: {
+ startLineNumber: 1,
+ startColumn: 1,
+ endLineNumber: 2,
+ endColumn: 1
+ },
+ name: 'Function',
+ kind: 11
+ },
+ {
+ range: {
+ startLineNumber: 1,
+ startColumn: 1,
+ endLineNumber: 2,
+ endColumn: 1
+ },
+ name: 'Variable',
+ kind: 12
+ },
+ {
+ range: {
+ startLineNumber: 1,
+ startColumn: 1,
+ endLineNumber: 2,
+ endColumn: 1
+ },
+ name: 'Constant',
+ kind: 13
+ },
+ {
+ range: {
+ startLineNumber: 1,
+ startColumn: 1,
+ endLineNumber: 2,
+ endColumn: 1
+ },
+ name: 'String',
+ kind: 14
+ },
+ {
+ range: {
+ startLineNumber: 1,
+ startColumn: 1,
+ endLineNumber: 2,
+ endColumn: 1
+ },
+ name: 'Number',
+ kind: 15
+ },
+ {
+ range: {
+ startLineNumber: 1,
+ startColumn: 1,
+ endLineNumber: 2,
+ endColumn: 1
+ },
+ name: 'Boolean',
+ kind: 16
+ },
+ {
+ range: {
+ startLineNumber: 1,
+ startColumn: 1,
+ endLineNumber: 2,
+ endColumn: 1
+ },
+ name: 'Array',
+ kind: 17
+ },
+ {
+ range: {
+ startLineNumber: 1,
+ startColumn: 1,
+ endLineNumber: 2,
+ endColumn: 1
+ },
+ name: 'Object',
+ kind: 18
+ },
+ {
+ range: {
+ startLineNumber: 1,
+ startColumn: 1,
+ endLineNumber: 2,
+ endColumn: 1
+ },
+ name: 'Key',
+ kind: 19
+ },
+ {
+ range: {
+ startLineNumber: 1,
+ startColumn: 1,
+ endLineNumber: 2,
+ endColumn: 1
+ },
+ name: 'Null',
+ kind: 20
+ },
+ {
+ range: {
+ startLineNumber: 1,
+ startColumn: 1,
+ endLineNumber: 2,
+ endColumn: 1
+ },
+ name: 'EnumMember',
+ kind: 21
+ },
+ {
+ range: {
+ startLineNumber: 1,
+ startColumn: 1,
+ endLineNumber: 2,
+ endColumn: 1
+ },
+ name: 'Struct',
+ kind: 22
+ },
+ {
+ range: {
+ startLineNumber: 1,
+ startColumn: 1,
+ endLineNumber: 2,
+ endColumn: 1
+ },
+ name: 'Event',
+ kind: 23
+ },
+ {
+ range: {
+ startLineNumber: 1,
+ startColumn: 1,
+ endLineNumber: 2,
+ endColumn: 1
+ },
+ name: 'Operator',
+ kind: 24
+ },
+ {
+ range: {
+ startLineNumber: 1,
+ startColumn: 1,
+ endLineNumber: 2,
+ endColumn: 1
+ },
+ name: 'TypeParameter',
+ kind: 25
+ },
+ ];
+ }
+});
+
+monaco.editor.create(document.getElementById("container"), {
+ value: "{\n\t\"dependencies\": {\n\t\t\n\t}\n}\n",
+ language: "json"
+});
\ No newline at end of file