diff --git a/.scripts/samples.js b/.scripts/samples.js
index 7de9db34..5774af83 100644
--- a/.scripts/samples.js
+++ b/.scripts/samples.js
@@ -123,6 +123,13 @@ const lspSamples = [
apis: [],
contributions: []
},
+ {
+ description: 'Language Configuration Sample',
+ path: 'language-configuration-sample',
+ guide: 'https://vscode-ext-docs.azurewebsites.net/api/language-extensions/language-configuration-guide',
+ apis: [],
+ contributions: ['languages']
+ },
]
module.exports = {
diff --git a/README.md b/README.md
index 5501a9bd..40c467fa 100644
--- a/README.md
+++ b/README.md
@@ -40,6 +40,7 @@ You can expect from each sample:
| [Task Provider Sample](task-provider-sample) | [/api/extension-guides/task-provider](https://vscode-ext-docs.azurewebsites.net/api/extension-guides/task-provider) | [tasks.registerTaskProvider](https://vscode-ext-docs.azurewebsites.net/api/references/vscode-api#tasks.registerTaskProvider)
[Task](https://vscode-ext-docs.azurewebsites.net/api/references/vscode-api#Task)
[ShellExecution](https://vscode-ext-docs.azurewebsites.net/api/references/vscode-api#ShellExecution)
[contributes.taskDefinitions](https://vscode-ext-docs.azurewebsites.net/api/references/contribution-points#contributes.taskDefinitions) |
| [Terminal Sample](terminal-sample) | N/A | [window.createTerminal](https://vscode-ext-docs.azurewebsites.net/api/references/vscode-api#window.createTerminal)
[window.onDidChangeActiveTerminal](https://vscode-ext-docs.azurewebsites.net/api/references/vscode-api#window.onDidChangeActiveTerminal)
[window.onDidCloseTerminal](https://vscode-ext-docs.azurewebsites.net/api/references/vscode-api#window.onDidCloseTerminal)
[window.onDidOpenTerminal](https://vscode-ext-docs.azurewebsites.net/api/references/vscode-api#window.onDidOpenTerminal)
[window.Terminal](https://vscode-ext-docs.azurewebsites.net/api/references/vscode-api#window.Terminal)
[window.terminals](https://vscode-ext-docs.azurewebsites.net/api/references/vscode-api#window.terminals) |
| [Tree View Sample](tree-view-sample) | [/api/extension-guides/tree-view](https://vscode-ext-docs.azurewebsites.net/api/extension-guides/tree-view) | [window.createTreeView](https://vscode-ext-docs.azurewebsites.net/api/references/vscode-api#window.createTreeView)
[window.registerTreeDataProvider](https://vscode-ext-docs.azurewebsites.net/api/references/vscode-api#window.registerTreeDataProvider)
[TreeView](https://vscode-ext-docs.azurewebsites.net/api/references/vscode-api#TreeView)
[TreeDataProvider](https://vscode-ext-docs.azurewebsites.net/api/references/vscode-api#TreeDataProvider)
[contributes.views](https://vscode-ext-docs.azurewebsites.net/api/references/contribution-points#contributes.views)
[contributes.viewsContainers](https://vscode-ext-docs.azurewebsites.net/api/references/contribution-points#contributes.viewsContainers) |
+| [Vim Sample](vim-sample) | N/A | [commands](https://vscode-ext-docs.azurewebsites.net/api/references/vscode-api#commands)
[StatusBarItem](https://vscode-ext-docs.azurewebsites.net/api/references/vscode-api#StatusBarItem)
[window.createStatusBarItem](https://vscode-ext-docs.azurewebsites.net/api/references/vscode-api#window.createStatusBarItem)
[TextEditorCursorStyle](https://vscode-ext-docs.azurewebsites.net/api/references/vscode-api#TextEditorCursorStyle)
[window.activeTextEditor](https://vscode-ext-docs.azurewebsites.net/api/references/vscode-api#window.activeTextEditor)
[Position](https://vscode-ext-docs.azurewebsites.net/api/references/vscode-api#Position)
[Range](https://vscode-ext-docs.azurewebsites.net/api/references/vscode-api#Range)
[Selection](https://vscode-ext-docs.azurewebsites.net/api/references/vscode-api#Selection)
[TextEditor](https://vscode-ext-docs.azurewebsites.net/api/references/vscode-api#TextEditor)
[TextEditorRevealType](https://vscode-ext-docs.azurewebsites.net/api/references/vscode-api#TextEditorRevealType)
[TextDocument](https://vscode-ext-docs.azurewebsites.net/api/references/vscode-api#TextDocument) |
### Language Protocol Server Samples
@@ -50,6 +51,7 @@ You can expect from each sample:
| [LSP Sample](lsp-sample) | [/api/language-extensions/smart-editing-lsp-guide](https://vscode-ext-docs.azurewebsites.net/api/language-extensions/smart-editing-lsp-guide) | |
| [LSP Log Streaming Sample](lsp-log-streaming-sample) | N/A | |
| [LSP Multi Root Server Sample](lsp-multi-server-sample) | https://github.com/Microsoft/vscode/wiki/Extension-Authoring:-Adopting-Multi-Root-Workspace-APIs#language-client--language-server | |
+| [Language Configuration Sample](language-configuration-sample) | https://vscode-ext-docs.azurewebsites.net/api/language-extensions/language-configuration-guide | [contributes.languages](https://vscode-ext-docs.azurewebsites.net/api/references/contribution-points#contributes.languages) |
## :warning: Legacy Samples :warning:
diff --git a/language-configuration-sample/.gitignore b/language-configuration-sample/.gitignore
new file mode 100644
index 00000000..5fe00fea
--- /dev/null
+++ b/language-configuration-sample/.gitignore
@@ -0,0 +1,4 @@
+out
+node_modules
+.vscode-test/
+*.vsix
diff --git a/language-configuration-sample/.vscode/launch.json b/language-configuration-sample/.vscode/launch.json
new file mode 100644
index 00000000..f8336da9
--- /dev/null
+++ b/language-configuration-sample/.vscode/launch.json
@@ -0,0 +1,17 @@
+// A launch configuration that compiles the extension and then opens it inside a new window
+// Use IntelliSense to learn about possible attributes.
+// Hover to view descriptions of existing attributes.
+// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
+{
+ "version": "0.2.0",
+ "configurations": [{
+ "name": "Run Extension",
+ "type": "extensionHost",
+ "request": "launch",
+ "runtimeExecutable": "${execPath}",
+ "args": [
+ "--extensionDevelopmentPath=${workspaceFolder}"
+ ]
+ }
+ ]
+}
diff --git a/language-configuration-sample/.vscode/settings.json b/language-configuration-sample/.vscode/settings.json
new file mode 100644
index 00000000..e46111f1
--- /dev/null
+++ b/language-configuration-sample/.vscode/settings.json
@@ -0,0 +1,3 @@
+{
+ "editor.insertSpaces": false
+}
\ No newline at end of file
diff --git a/language-configuration-sample/.vscodeignore b/language-configuration-sample/.vscodeignore
new file mode 100644
index 00000000..85571789
--- /dev/null
+++ b/language-configuration-sample/.vscodeignore
@@ -0,0 +1,9 @@
+.vscode/**
+.vscode-test/**
+out/test/**
+out/**/*.map
+src/**
+.gitignore
+tsconfig.json
+vsc-extension-quickstart.md
+tslint.json
\ No newline at end of file
diff --git a/language-configuration-sample/README.md b/language-configuration-sample/README.md
new file mode 100644
index 00000000..af6f5321
--- /dev/null
+++ b/language-configuration-sample/README.md
@@ -0,0 +1,13 @@
+# Language Configuration Sample
+
+This is the source code for the [Language Configuration Guide](https://vscode-ext-docs.azurewebsites.net/api/language-extensions/language-configuration-guide).
+
+## VS Code API
+
+### Contribution Points
+
+- [`contributes.languages`](https://code.visualstudio.com/docs/extensionAPI/extension-points#_contributeslanguages)
+
+## Running the Sample
+
+- Run the `Run Extension` target in the Debug View
\ No newline at end of file
diff --git a/language-configuration-sample/demo.gif b/language-configuration-sample/demo.gif
new file mode 100644
index 00000000..55fdd133
Binary files /dev/null and b/language-configuration-sample/demo.gif differ
diff --git a/language-configuration-sample/language-configuration.json b/language-configuration-sample/language-configuration.json
new file mode 100644
index 00000000..262e40fb
--- /dev/null
+++ b/language-configuration-sample/language-configuration.json
@@ -0,0 +1,35 @@
+{
+ "comments": {
+ "lineComment": "//",
+ "blockComment": [ "/*", "*/" ]
+ },
+ "brackets": [
+ ["{", "}"],
+ ["[", "]"],
+ ["(", ")"]
+ ],
+ "autoClosingPairs": [
+ { "open": "{", "close": "}" },
+ { "open": "[", "close": "]" },
+ { "open": "(", "close": ")" },
+ { "open": "'", "close": "'", "notIn": ["string", "comment"] },
+ { "open": "\"", "close": "\"", "notIn": ["string"] },
+ { "open": "`", "close": "`", "notIn": ["string", "comment"] },
+ { "open": "/**", "close": " */", "notIn": ["string"] }
+ ],
+ "autoCloseBefore": ";:.,=}])>` \n\t",
+ "surroundingPairs": [
+ ["{", "}"],
+ ["[", "]"],
+ ["(", ")"],
+ ["'", "'"],
+ ["\"", "\""],
+ ["`", "`"]
+ ],
+ "folding": {
+ "markers": {
+ "start": "^\\s*//\\s*#?region\\b",
+ "end": "^\\s*//\\s*#?endregion\\b"
+ }
+ }
+}
\ No newline at end of file
diff --git a/language-configuration-sample/package.json b/language-configuration-sample/package.json
new file mode 100644
index 00000000..9a5591bc
--- /dev/null
+++ b/language-configuration-sample/package.json
@@ -0,0 +1,40 @@
+{
+ "name": "base-sample",
+ "displayName": "base-sample",
+ "description": "Base sample for other samples at Microsoft/vscode-extension-samples",
+ "version": "0.0.1",
+ "publisher": "vscode-samples",
+ "engines": {
+ "vscode": "^1.28.0"
+ },
+ "categories": [
+ "Other"
+ ],
+ "contributes": {
+ "languages": [
+ {
+ "id": "javascript",
+ "extensions": [
+ ".js"
+ ],
+ "aliases": [
+ "js",
+ "JavaScript"
+ ],
+ "configuration": "./language-configuration.json"
+ }
+ ]
+ },
+ "scripts": {
+ "vscode:prepublish": "npm run compile",
+ "compile": "tsc -p ./",
+ "watch": "tsc -watch -p ./",
+ "postinstall": "node ./node_modules/vscode/bin/install"
+ },
+ "devDependencies": {
+ "@types/node": "^8.10.25",
+ "tslint": "^5.11.0",
+ "typescript": "^2.6.1",
+ "vscode": "^1.1.21"
+ }
+}