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" + } +}