├── .python-version
├── .gitignore
├── pyrightconfig.json
├── images
└── inlay-hints.png
├── messages.json
├── dependencies.json
├── server
├── package.json
└── package-lock.json
├── .gitattributes
├── typescript-plugins.json
├── messages
└── 3.0.0.txt
├── LSP-vue.sublime-commands
├── Main.sublime-menu
├── LICENSE
├── README.md
├── plugin.py
├── LSP-vue.sublime-settings
└── sublime-package.json
/.python-version:
--------------------------------------------------------------------------------
1 | 3.8
2 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | node_modules
2 | .mypy_cache
3 |
--------------------------------------------------------------------------------
/pyrightconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "pythonVersion": "3.11"
3 | }
4 |
--------------------------------------------------------------------------------
/images/inlay-hints.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sublimelsp/LSP-vue/HEAD/images/inlay-hints.png
--------------------------------------------------------------------------------
/messages.json:
--------------------------------------------------------------------------------
1 | {
2 | "3.0.0": "messages/3.0.0.txt",
3 | "install": "README.md"
4 | }
5 |
--------------------------------------------------------------------------------
/dependencies.json:
--------------------------------------------------------------------------------
1 | {
2 | "*": {
3 | "*": [
4 | "lsp_utils",
5 | "sublime_lib"
6 | ]
7 | }
8 | }
9 |
--------------------------------------------------------------------------------
/server/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "sublime-volar",
3 | "private": true,
4 | "dependencies": {
5 | "@vue/language-server": "3.0.8",
6 | "typescript": "5.9.2"
7 | }
8 | }
9 |
--------------------------------------------------------------------------------
/.gitattributes:
--------------------------------------------------------------------------------
1 | .dependabot export-ignore
2 | .github/ export-ignore
3 | codecov.yml export-ignore
4 | renovate.json export-ignore
5 | tests/ export-ignore
6 | tox.ini export-ignore
7 | unittesting.json export-ignore
8 |
--------------------------------------------------------------------------------
/typescript-plugins.json:
--------------------------------------------------------------------------------
1 | [
2 | {
3 | "name": "@vue/typescript-plugin",
4 | "languages": ["vue"],
5 | "selector": "text.html.vue",
6 | "location": "${storage_path}/LSP-vue/server/node_modules/"
7 | }
8 | ]
9 |
--------------------------------------------------------------------------------
/messages/3.0.0.txt:
--------------------------------------------------------------------------------
1 | # Breaking change
2 |
3 | This server is now based on the Vue Language Server 2.x rather than the deprecated and no longer updated Vetur.
4 |
5 | The legacy, deprecated Vetur is now available through the LSP-vetur package for those who really need it.
6 |
--------------------------------------------------------------------------------
/LSP-vue.sublime-commands:
--------------------------------------------------------------------------------
1 | [
2 | {
3 | "caption": "Preferences: LSP-vue Settings",
4 | "command": "edit_settings",
5 | "args": {
6 | "base_file": "${packages}/LSP-vue/LSP-vue.sublime-settings",
7 | "default": "// Settings in here override those in \"LSP-vue/LSP-vue.sublime-settings\"\n\n{\n\t$0\n}\n"
8 | }
9 | },
10 | ]
11 |
--------------------------------------------------------------------------------
/Main.sublime-menu:
--------------------------------------------------------------------------------
1 | [
2 | {
3 | "id": "preferences",
4 | "children": [
5 | {
6 | "caption": "Package Settings",
7 | "mnemonic": "P",
8 | "id": "package-settings",
9 | "children": [
10 | {
11 | "caption": "LSP",
12 | "id": "lsp-settings",
13 | "children": [
14 | {
15 | "caption": "Servers",
16 | "id": "lsp-servers",
17 | "children": [
18 | {
19 | "caption": "LSP-vue",
20 | "command": "edit_settings",
21 | "args": {
22 | "base_file": "${packages}/LSP-vue/LSP-vue.sublime-settings",
23 | "default": "// Settings in here override those in \"LSP-vue/LSP-vue.sublime-settings\"\n\n{\n\t$0\n}\n"
24 | }
25 | }
26 | ]
27 | }
28 | ]
29 | }
30 | ]
31 | }
32 | ]
33 | }
34 | ]
35 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2024 SublimeLSP
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # LSP-vue
2 |
3 | This is a helper package that automatically installs and updates the [Vue Language Server](https://github.com/vuejs/language-tools) (formerly Volar) for you.
4 |
5 | ## Table of Contents
6 | - [Installation](#installation)
7 | - [Configuration](#configuration)
8 | - [Inlay hints](#inlay-hints)
9 | - [Vue 2 support](#vue-2-support)
10 |
11 | ### Installation
12 |
13 | * Install from _Package Control_:
14 | - [LSP](https://packagecontrol.io/packages/LSP)
15 | - [Vue Syntax Highlight](https://packagecontrol.io/packages/Vue%20Syntax%20Highlight)
16 | - [LSP-vue](https://packagecontrol.io/packages/LSP-vue)
17 | - [LSP-typescript](https://packagecontrol.io/packages/LSP-typescript)
18 | * Restart Sublime.
19 |
20 | > [!NOTE]
21 | > Make sure that `LSP-typescript` is installed - it's a required dependency.
22 |
23 | ### Configuration
24 |
25 | Open the configuration file using Command Palette with `Preferences: LSP-vue Settings` command or opening it from the Sublime menu (`Preferences > Package Settings > LSP > Servers > LSP-vue`).
26 |
27 | ### Semantic Tokens
28 |
29 | Server assigns a dedicated `entity.name.tag.vue` scope to component tags which allows one to customize their color. To customize, select `UI: Customize Color Scheme` from the _Command Palette_ and add a rule like the following (with your chosen color):
30 |
31 | ```jsonc
32 | {
33 | // ...
34 | "rules": [
35 | // ...
36 | {
37 | "scope": "entity.name.tag.vue",
38 | "foreground": "color(var(blue))",
39 | },
40 | ],
41 | }
42 | ```
43 |
44 | ### Inlay hints
45 |
46 | Inlay hints are short textual annotations that show parameter names, type hints.
47 |
48 | 
49 |
50 | To enable inlay hints:
51 | 1. Open the command palette and select `Preferences: LSP Settings`, then enable `show_inlay_hints`:
52 | ```js
53 | {
54 | "show_inlay_hints": true
55 | }
56 | ```
57 |
58 | 2. Modify the following settings through `Preferences: LSP-vue Settings`:
59 |
60 | ```js
61 | {
62 | "settings": {
63 | // javascript inlay hints options.
64 | "javascript.inlayHints.enumMemberValues.enabled": false,
65 | "javascript.inlayHints.functionLikeReturnTypes.enabled": false,
66 | "javascript.inlayHints.parameterNames.enabled": "none",
67 | "javascript.inlayHints.parameterNames.suppressWhenArgumentMatchesName": false,
68 | "javascript.inlayHints.parameterTypes.enabled": false,
69 | "javascript.inlayHints.propertyDeclarationTypes.enabled": false,
70 | "javascript.inlayHints.variableTypes.enabled": false,
71 | // typescript inlay hints options.
72 | "typescript.inlayHints.enumMemberValues.enabled": false,
73 | "typescript.inlayHints.functionLikeReturnTypes.enabled": false,
74 | "typescript.inlayHints.parameterNames.enabled": "none",
75 | "typescript.inlayHints.parameterNames.suppressWhenArgumentMatchesName": false,
76 | "typescript.inlayHints.parameterTypes.enabled": false,
77 | "typescript.inlayHints.propertyDeclarationTypes.enabled": false,
78 | "typescript.inlayHints.variableTypes.enabled": false,
79 | }
80 | }
81 | ```
82 |
83 | > NOTE: Inlay hints require TypeScript 4.4+.
84 |
--------------------------------------------------------------------------------
/plugin.py:
--------------------------------------------------------------------------------
1 | from __future__ import annotations
2 | from LSP.plugin import Notification
3 | from LSP.plugin.core.types import cast
4 | from LSP.plugin.core.typing import Any, Callable, List, Mapping, Required, Tuple, TypedDict, Union
5 | from LSP.plugin.core.protocol import Error, ExecuteCommandParams, LSPAny, Location
6 | from LSP.plugin.locationpicker import LocationPicker
7 | from lsp_utils import notification_handler
8 | from lsp_utils import NpmClientHandler
9 | from pathlib import Path
10 | import sublime
11 |
12 | PACKAGE_NAME = __package__
13 | SERVER_DIRECTORY = 'server'
14 | SERVER_NODE_MODULES = Path(SERVER_DIRECTORY) / 'node_modules'
15 | SERVER_BINARY_PATH = SERVER_NODE_MODULES / '@vue' / 'language-server' / 'bin' / 'vue-language-server.js'
16 |
17 |
18 | class TypescriptTsserverCommandParams(TypedDict):
19 | file: Required[str]
20 |
21 | class ExecuteCommandResponse(TypedDict):
22 | body: LSPAny
23 |
24 | TsserverRequestParams = Tuple[Tuple[int, str, Union[TypescriptTsserverCommandParams, List[str]]]]
25 |
26 |
27 | def plugin_loaded():
28 | LspVuePlugin.setup()
29 |
30 |
31 | def plugin_unloaded():
32 | LspVuePlugin.cleanup()
33 |
34 |
35 | class LspVuePlugin(NpmClientHandler):
36 | package_name = PACKAGE_NAME
37 | server_directory = SERVER_DIRECTORY
38 | server_binary_path = SERVER_BINARY_PATH
39 |
40 | @classmethod
41 | def required_node_version(cls) -> str:
42 | return '>=18'
43 |
44 | def on_pre_server_command(self, command: Mapping[str, Any], done_callback: Callable[[], None]) -> bool:
45 | command_name = command['command']
46 | if command_name == 'editor.action.showReferences':
47 | _, __, references = command['arguments']
48 | self._handle_show_references(references)
49 | done_callback()
50 | return True
51 | return False
52 |
53 | def _handle_show_references(self, references: List[Location]) -> None:
54 | session = self.weaksession()
55 | if not session:
56 | return
57 | view = sublime.active_window().active_view()
58 | if not view:
59 | return
60 | if len(references) == 1:
61 | args = {
62 | 'location': references[0],
63 | 'session_name': session.config.name,
64 | }
65 | window = view.window()
66 | if window:
67 | window.run_command('lsp_open_location', args)
68 | elif references:
69 | LocationPicker(view, session, references, side_by_side=False)
70 | else:
71 | sublime.status_message('No references found')
72 |
73 | @notification_handler('tsserver/request')
74 | def on_tsserver_request(self, params: TsserverRequestParams) -> None:
75 | session = self.weaksession()
76 | if not session:
77 | return
78 | manager = session.manager()
79 | if not manager:
80 | return
81 | seq, command_name, command_params = params[0]
82 | # some commands pass an object while other pass an array.
83 | filepath = command_params['file'] if isinstance(command_params, dict) else command_params[0]
84 | session = manager.get_session('LSP-typescript', filepath)
85 | if not session:
86 | print('[LSP-vue] LSP-typescript not found or has not loaded the Vue Plugin. Try restarting ST.')
87 | self._on_execute_command_response(seq, {'body': None})
88 | return
89 | execute_command_params: ExecuteCommandParams = {
90 | 'command': 'typescript.tsserverRequest',
91 | 'arguments': [
92 | command_name,
93 | cast(LSPAny, command_params),
94 | { 'isAsync': True, 'lowPriority': True },
95 | ]
96 | }
97 | session.execute_command(execute_command_params, progress=False) \
98 | .then(lambda result: self._on_execute_command_response(seq, result))
99 |
100 | def _on_execute_command_response(self, seq: int, result: ExecuteCommandResponse | Error) -> None:
101 | session = self.weaksession()
102 | if not session:
103 | return
104 | body = None if isinstance(result, Error) else result['body']
105 | session.send_notification(Notification('tsserver/response', [[seq, body]]))
106 |
--------------------------------------------------------------------------------
/LSP-vue.sublime-settings:
--------------------------------------------------------------------------------
1 | {
2 | "settings": {
3 | // Initial indent for `
33 | // ```
34 | "vue.inlayHints.optionsWrapper": false,
35 | // Show inlay hints for v-bind shorthand:
36 | // ```html
37 | //
38 | //
39 | // ```
40 | "vue.inlayHints.vBindShorthand": false,
41 | // Preferred component name case.
42 | // possible values: "preferKebabCase", "preferPascalCase", "alwaysKebabCase", "alwaysPascalCase"
43 | "vue.suggest.componentNameCasing": "preferPascalCase",
44 | // Auto add `const props = ` before `defineProps` when selecting the completion item
45 | // `props`. (also `emit` and `slots`)
46 | "vue.suggest.defineAssignment": true,
47 | // Preferred attr name case.
48 | // possible values: "preferKebabCase", "preferCamelCase", "alwaysKebabCase", "alwaysCamelCase"
49 | "vue.suggest.propNameCasing": "preferKebabCase",
50 |
51 | // javascript inlay hint
52 | "javascript.inlayHints.enumMemberValues.enabled": false,
53 | "javascript.inlayHints.functionLikeReturnTypes.enabled": false,
54 | "javascript.inlayHints.parameterNames.enabled": "none",
55 | "javascript.inlayHints.parameterNames.suppressWhenArgumentMatchesName": true,
56 | "javascript.inlayHints.parameterTypes.enabled": false,
57 | "javascript.inlayHints.propertyDeclarationTypes.enabled": false,
58 | "javascript.inlayHints.variableTypes.enabled": false,
59 | "javascript.inlayHints.variableTypes.suppressWhenTypeMatchesName.enabled": true,
60 | // typescript inlay hint
61 | "typescript.inlayHints.enumMemberValues.enabled": false,
62 | "typescript.inlayHints.functionLikeReturnTypes.enabled": false,
63 | "typescript.inlayHints.parameterNames.enabled": "none",
64 | "typescript.inlayHints.parameterNames.suppressWhenArgumentMatchesName": true,
65 | "typescript.inlayHints.parameterTypes.enabled": false,
66 | "typescript.inlayHints.propertyDeclarationTypes.enabled": false,
67 | "typescript.inlayHints.variableTypes.enabled": false,
68 | "typescript.inlayHints.variableTypes.suppressWhenTypeMatchesName.enabled": true,
69 | // javascript completions
70 | "javascript.suggest.autoImports": false, // Disabled by default due to UI freezes that large completion responses cause.
71 | "javascript.suggest.classMemberSnippets.enabled": true,
72 | "javascript.suggest.completeFunctionCalls": false,
73 | "javascript.suggest.includeAutomaticOptionalChainCompletions": true,
74 | "javascript.suggest.includeCompletionsForImportStatements": true,
75 | "javascript.suggest.includeCompletionsWithSnippetText": true,
76 | "javascript.suggest.jsdoc.generateReturns": true,
77 | "javascript.suggest.objectLiteralMethodSnippets.enabled": true,
78 | // typescript completions
79 | "typescript.suggest.autoImports": false, // Disabled by default due to UI freezes that large completion responses cause.
80 | "typescript.suggest.classMemberSnippets.enabled": true,
81 | "typescript.suggest.completeFunctionCalls": false,
82 | "typescript.suggest.includeAutomaticOptionalChainCompletions": true,
83 | "typescript.suggest.includeCompletionsForImportStatements": true,
84 | "typescript.suggest.includeCompletionsWithSnippetText": true,
85 | "typescript.suggest.jsdoc.generateReturns": true,
86 | "typescript.suggest.objectLiteralMethodSnippets.enabled": true,
87 | // Other javascript options
88 | "javascript.preferences.quoteStyle": "auto",
89 | "javascript.preferences.importModuleSpecifier": "shortest",
90 | "javascript.preferences.importModuleSpecifierEnding": "auto",
91 | "javascript.preferences.jsxAttributeCompletionStyle": "auto",
92 | "javascript.preferences.autoImportFileExcludePatterns": [],
93 | // Other typescript options
94 | "typescript.preferences.quoteStyle": "auto",
95 | "typescript.preferences.importModuleSpecifier": "shortest",
96 | "typescript.preferences.importModuleSpecifierEnding": "auto",
97 | "typescript.preferences.jsxAttributeCompletionStyle": "auto",
98 | "typescript.preferences.autoImportFileExcludePatterns": [],
99 | // --- Emmet plugin settings (autocompletion within template blocks). ---
100 | // An array of languages where Emmet abbreviations should not be expanded.
101 | "emmet.excludeLanguages": [
102 | "markdown"
103 | ],
104 | // Preferences used to modify behavior of some actions and resolvers of Emmet.
105 | "emmet.preferences": {},
106 | // Shows possible Emmet abbreviations as suggestions. Not applicable in stylesheets or when
107 | // emmet.showExpandedAbbreviation is set to `"never"`.
108 | "emmet.showAbbreviationSuggestions": true,
109 | // Shows expanded Emmet abbreviations as suggestions.
110 | // The option `"inMarkupAndStylesheetFilesOnly"` applies to html, haml, jade, slim, xml,
111 | // xsl, css, scss, sass, less and stylus.
112 | // The option `"always"` applies to all parts of the file regardless of markup/css.
113 | // possible values: "never", "always", "inMarkupAndStylesheetFilesOnly"
114 | "emmet.showExpandedAbbreviation": "always",
115 | // If `true`, then Emmet suggestions will show up as snippets allowing you to order them as
116 | // per `#editor.snippetSuggestions#` setting.
117 | "emmet.showSuggestionsAsSnippets": false,
118 | // Define profile for specified syntax or use your own profile with specific rules.
119 | "emmet.syntaxProfiles": {},
120 | // Variables to be used in Emmet snippets.
121 | "emmet.variables": {},
122 | // --- CSS plugin settings ---
123 | // Insert semicolon at end of line when completing CSS properties.
124 | "css.completion.completePropertyWithSemicolon": true,
125 | // By default, VS Code triggers property value completion after selecting a CSS property.
126 | // Use this setting to disable this behavior.
127 | "css.completion.triggerPropertyValueCompletion": true,
128 | // A list of relative file paths pointing to JSON files following the custom data format
129 | // (https://github.com/microsoft/vscode-css-languageservice/blob/master/docs/customData.md).
130 | // Loads custom data to enhance its CSS support for the custom CSS properties, at directives, pseudo classes
131 | // and pseudo elements you specify in the JSON files.
132 | // The file paths are relative to workspace and only workspace folder settings are considered.
133 | "css.customData": [],
134 | // Put braces on the same line as rules (`collapse`) or put braces on own line (`expand`).
135 | // possible values: "collapse", "expand"
136 | "css.format.braceStyle": "collapse",
137 | // Enable/disable default CSS formatter.
138 | "css.format.enable": true,
139 | // Maximum number of line breaks to be preserved in one chunk, when
140 | // `#css.format.preserveNewLines#` is enabled.
141 | "css.format.maxPreserveNewLines": null,
142 | // Separate rulesets by a blank line.
143 | "css.format.newlineBetweenRules": true,
144 | // Separate selectors with a new line.
145 | "css.format.newlineBetweenSelectors": true,
146 | // Whether existing line breaks before elements should be preserved.
147 | "css.format.preserveNewLines": true,
148 | // Ensure a space character around selector separators '>', '+', '~' (e.g. `a > b`).
149 | "css.format.spaceAroundSelectorSeparator": false,
150 | // Show tag and attribute documentation in CSS hovers.
151 | "css.hover.documentation": true,
152 | // Show references to MDN in CSS hovers.
153 | "css.hover.references": true,
154 | // Insert semicolon at end of line when completing CSS properties.
155 | "less.completion.completePropertyWithSemicolon": true,
156 | // By default, VS Code triggers property value completion after selecting a CSS property.
157 | // Use this setting to disable this behavior.
158 | "less.completion.triggerPropertyValueCompletion": true,
159 | // Put braces on the same line as rules (`collapse`) or put braces on own line (`expand`).
160 | // possible values: "collapse", "expand"
161 | "less.format.braceStyle": "collapse",
162 | // Enable/disable default LESS formatter.
163 | "less.format.enable": true,
164 | // Maximum number of line breaks to be preserved in one chunk, when
165 | // `#less.format.preserveNewLines#` is enabled.
166 | "less.format.maxPreserveNewLines": null,
167 | // Separate rulesets by a blank line.
168 | "less.format.newlineBetweenRules": true,
169 | // Separate selectors with a new line.
170 | "less.format.newlineBetweenSelectors": true,
171 | // Whether existing line breaks before elements should be preserved.
172 | "less.format.preserveNewLines": true,
173 | // Ensure a space character around selector separators '>', '+', '~' (e.g. `a > b`).
174 | "less.format.spaceAroundSelectorSeparator": false,
175 | // Show tag and attribute documentation in LESS hovers.
176 | "less.hover.documentation": true,
177 | // Show references to MDN in LESS hovers.
178 | "less.hover.references": true,
179 | // Insert semicolon at end of line when completing CSS properties.
180 | "scss.completion.completePropertyWithSemicolon": true,
181 | // By default, VS Code triggers property value completion after selecting a CSS property.
182 | // Use this setting to disable this behavior.
183 | "scss.completion.triggerPropertyValueCompletion": true,
184 | // Put braces on the same line as rules (`collapse`) or put braces on own line (`expand`).
185 | // possible values: "collapse", "expand"
186 | "scss.format.braceStyle": "collapse",
187 | // Enable/disable default SCSS formatter.
188 | "scss.format.enable": true,
189 | // Maximum number of line breaks to be preserved in one chunk, when
190 | // `#scss.format.preserveNewLines#` is enabled.
191 | "scss.format.maxPreserveNewLines": null,
192 | // Separate rulesets by a blank line.
193 | "scss.format.newlineBetweenRules": true,
194 | // Separate selectors with a new line.
195 | "scss.format.newlineBetweenSelectors": true,
196 | // Whether existing line breaks before elements should be preserved.
197 | "scss.format.preserveNewLines": true,
198 | // Ensure a space character around selector separators '>', '+', '~' (e.g. `a > b`).
199 | "scss.format.spaceAroundSelectorSeparator": false,
200 | // Show tag and attribute documentation in SCSS hovers.
201 | "scss.hover.documentation": true,
202 | // Show references to MDN in SCSS hovers.
203 | "scss.hover.references": true,
204 | // --- HTML plugin settings ---
205 | // Enable/disable autoclosing of HTML tags.
206 | "html.autoClosingTags": true,
207 | // Enable/disable auto creation of quotes for HTML attribute assignment. The type of quotes
208 | // can be configured by `#html.completion.attributeDefaultValue#`.
209 | "html.autoCreateQuotes": true,
210 | // Controls the default value for attributes when completion is accepted.
211 | // possible values: "doublequotes", "singlequotes", "empty"
212 | "html.completion.attributeDefaultValue": "doublequotes",
213 | // A list of relative file paths pointing to JSON files following the custom data format
214 | // (https://github.com/microsoft/vscode-html-languageservice/blob/master/docs/customData.md).
215 | // Loads custom data enhance HTML support for the custom HTML tags, attributes and attribute values you specify
216 | // in the JSON files.
217 | // The file paths are relative to workspace and only workspace folder settings are considered.
218 | "html.customData": [],
219 | // List of tags, comma separated, where the content shouldn't be reformatted. `null`
220 | // defaults to the `pre` tag.
221 | "html.format.contentUnformatted": "pre,code,textarea",
222 | // Enable/disable default HTML formatter.
223 | "html.format.enable": true,
224 | // List of tags, comma separated, that should have an extra newline before them. `null`
225 | // defaults to `"head, body, /html"`.
226 | "html.format.extraLiners": "head, body, /html",
227 | // Format and indent `{{#foo}}` and `{{/foo}}`.
228 | "html.format.indentHandlebars": false,
229 | // Indent `
` and `` sections.
230 | "html.format.indentInnerHtml": false,
231 | // Maximum number of line breaks to be preserved in one chunk. Use `null` for unlimited.
232 | "html.format.maxPreserveNewLines": null,
233 | // Controls whether existing line breaks before elements should be preserved. Only works
234 | // before elements, not inside tags or for text.
235 | "html.format.preserveNewLines": true,
236 | // Honor django, erb, handlebars and php templating language tags.
237 | "html.format.templating": false,
238 | // List of tags, comma separated, that shouldn't be reformatted. `null` defaults to all tags
239 | // listed at https://www.w3.org/TR/html5/dom.html#phrasing-content.
240 | "html.format.unformatted": "wbr",
241 | // Keep text content together between this string.
242 | "html.format.unformattedContentDelimiter": "",
243 | // Wrap attributes.
244 | // possible values: "auto", "force", "force-aligned", "force-expand-multiline", "aligned-multiple", "preserve", "preserve-aligned"
245 | "html.format.wrapAttributes": "auto",
246 | // Indent wrapped attributes to after N characters. Use `null` to use the default indent
247 | // size. Ignored if `#html.format.wrapAttributes#` is set to 'aligned'.
248 | "html.format.wrapAttributesIndentSize": null,
249 | // Maximum amount of characters per line (0 = disable).
250 | "html.format.wrapLineLength": 120,
251 | // Show tag and attribute documentation in hover.
252 | "html.hover.documentation": true,
253 | // Show references to MDN in hover.
254 | "html.hover.references": true,
255 | // Enable/disable mirroring cursor on matching HTML tag.
256 | },
257 | "command": [
258 | "${node_bin}",
259 | // If you have problem on frequently "Request textDocument/** failed." error, try setting higher memory (MB)
260 | // on it. For example 4096 equals 4GB.
261 | // "--max-old-space-size=4096",
262 | "${server_path}",
263 | "--stdio"
264 | ],
265 | "env": {
266 | "NODE_ENV": "production",
267 | },
268 | "selector": "text.html.vue",
269 | // Preferred for handling requests in Vue files over LSP-typescript.
270 | "priority_selector": "text.html.vue, text.html.vue source.js, text.html.vue source.ts",
271 | "disabled_capabilities": {
272 | "definitionProvider": true,
273 | "referencesProvider": true,
274 | "typeDefinitionProvider": true,
275 | },
276 | "semantic_tokens": {
277 | "component": "entity.name.tag.vue",
278 | "markdown": "entity.name.tag.vue",
279 | "html": "entity.name.tag.vue",
280 | }
281 | }
282 |
--------------------------------------------------------------------------------
/sublime-package.json:
--------------------------------------------------------------------------------
1 | {
2 | "contributions": {
3 | "settings": [
4 | {
5 | "file_patterns": [
6 | "/LSP-vue.sublime-settings"
7 | ],
8 | "schema": {
9 | "$id": "sublime://settings/LSP-vue",
10 | "definitions": {
11 | "PluginConfig": {
12 | "properties": {
13 | "settings": {
14 | "additionalProperties": false,
15 | "properties": {
16 | "emmet.excludeLanguages": {
17 | "default": [
18 | "markdown"
19 | ],
20 | "items": {
21 | "type": "string"
22 | },
23 | "markdownDescription": "An array of languages where Emmet abbreviations should not be expanded.",
24 | "type": "array"
25 | },
26 | "emmet.preferences": {
27 | "default": {},
28 | "markdownDescription": "Preferences used to modify behavior of some actions and resolvers of Emmet.",
29 | "properties": {
30 | "bem.elementSeparator": {
31 | "default": "__",
32 | "markdownDescription": "Element separator used for classes when using the BEM filter.",
33 | "type": "string"
34 | },
35 | "bem.modifierSeparator": {
36 | "default": "_",
37 | "markdownDescription": "Modifier separator used for classes when using the BEM filter.",
38 | "type": "string"
39 | },
40 | "css.color.short": {
41 | "default": true,
42 | "markdownDescription": "If `true`, color values like `#f` will be expanded to `#fff` instead of `#ffffff`.",
43 | "type": "boolean"
44 | },
45 | "css.floatUnit": {
46 | "default": "em",
47 | "markdownDescription": "Default unit for float values.",
48 | "type": "string"
49 | },
50 | "css.fuzzySearchMinScore": {
51 | "default": 0.3,
52 | "markdownDescription": "The minimum score (from 0 to 1) that fuzzy-matched abbreviation should achieve. Lower values may produce many false-positive matches, higher values may reduce possible matches.",
53 | "type": "number"
54 | },
55 | "css.intUnit": {
56 | "default": "px",
57 | "markdownDescription": "Default unit for integer values.",
58 | "type": "string"
59 | },
60 | "css.mozProperties": {
61 | "default": null,
62 | "markdownDescription": "Comma separated CSS properties that get the 'moz' vendor prefix when used in Emmet abbreviation that starts with `-`. Set to empty string to always avoid the 'moz' prefix.",
63 | "type": "string"
64 | },
65 | "css.msProperties": {
66 | "default": null,
67 | "markdownDescription": "Comma separated CSS properties that get the 'ms' vendor prefix when used in Emmet abbreviation that starts with `-`. Set to empty string to always avoid the 'ms' prefix.",
68 | "type": "string"
69 | },
70 | "css.oProperties": {
71 | "default": null,
72 | "markdownDescription": "Comma separated CSS properties that get the 'o' vendor prefix when used in Emmet abbreviation that starts with `-`. Set to empty string to always avoid the 'o' prefix.",
73 | "type": "string"
74 | },
75 | "css.propertyEnd": {
76 | "default": ";",
77 | "markdownDescription": "Symbol to be placed at the end of CSS property when expanding CSS abbreviations.",
78 | "type": "string"
79 | },
80 | "css.valueSeparator": {
81 | "default": ": ",
82 | "markdownDescription": "Symbol to be placed at the between CSS property and value when expanding CSS abbreviations.",
83 | "type": "string"
84 | },
85 | "css.webkitProperties": {
86 | "default": null,
87 | "markdownDescription": "Comma separated CSS properties that get the 'webkit' vendor prefix when used in Emmet abbreviation that starts with `-`. Set to empty string to always avoid the 'webkit' prefix.",
88 | "type": "string"
89 | },
90 | "filter.commentAfter": {
91 | "default": "\n",
92 | "markdownDescription": "A definition of comment that should be placed after matched element when comment filter is applied.",
93 | "type": "string"
94 | },
95 | "filter.commentBefore": {
96 | "default": "",
97 | "markdownDescription": "A definition of comment that should be placed before matched element when comment filter is applied.",
98 | "type": "string"
99 | },
100 | "filter.commentTrigger": {
101 | "default": [
102 | "id",
103 | "class"
104 | ],
105 | "markdownDescription": "A comma-separated list of attribute names that should exist in the abbreviation for the comment filter to be applied.",
106 | "type": "array"
107 | },
108 | "format.forceIndentationForTags": {
109 | "default": [
110 | "body"
111 | ],
112 | "markdownDescription": "An array of tag names that should always get inner indentation.",
113 | "type": "array"
114 | },
115 | "format.noIndentTags": {
116 | "default": [
117 | "html"
118 | ],
119 | "markdownDescription": "An array of tag names that should never get inner indentation.",
120 | "type": "array"
121 | },
122 | "output.inlineBreak": {
123 | "default": 0,
124 | "markdownDescription": "The number of sibling inline elements needed for line breaks to be placed between those elements. If `0`, inline elements are always expanded onto a single line.",
125 | "type": "number"
126 | },
127 | "output.reverseAttributes": {
128 | "default": false,
129 | "markdownDescription": "If `true`, reverses attribute merging directions when resolving snippets.",
130 | "type": "boolean"
131 | },
132 | "output.selfClosingStyle": {
133 | "default": "html",
134 | "enum": [
135 | "html",
136 | "xhtml",
137 | "xml"
138 | ],
139 | "markdownDescription": "Style of self-closing tags: html (`
`), xml (`
`) or xhtml (`
`).",
140 | "type": "string"
141 | },
142 | "profile.allowCompactBoolean": {
143 | "default": false,
144 | "markdownDescription": "If `true`, compact notation of boolean attributes are produced.",
145 | "type": "boolean"
146 | },
147 | "sass.propertyEnd": {
148 | "default": "",
149 | "markdownDescription": "Symbol to be placed at the end of CSS property when expanding CSS abbreviations in Sass files.",
150 | "type": "string"
151 | },
152 | "sass.valueSeparator": {
153 | "default": ": ",
154 | "markdownDescription": "Symbol to be placed at the between CSS property and value when expanding CSS abbreviations in Sass files.",
155 | "type": "string"
156 | },
157 | "stylus.propertyEnd": {
158 | "default": "",
159 | "markdownDescription": "Symbol to be placed at the end of CSS property when expanding CSS abbreviations in Stylus files.",
160 | "type": "string"
161 | },
162 | "stylus.valueSeparator": {
163 | "default": " ",
164 | "markdownDescription": "Symbol to be placed at the between CSS property and value when expanding CSS abbreviations in Stylus files.",
165 | "type": "string"
166 | }
167 | },
168 | "type": "object"
169 | },
170 | "emmet.showAbbreviationSuggestions": {
171 | "default": true,
172 | "markdownDescription": "Shows possible Emmet abbreviations as suggestions. Not applicable in stylesheets or when emmet.showExpandedAbbreviation is set to `\"never\"`.",
173 | "type": "boolean"
174 | },
175 | "emmet.showExpandedAbbreviation": {
176 | "default": "always",
177 | "enum": [
178 | "never",
179 | "always",
180 | "inMarkupAndStylesheetFilesOnly"
181 | ],
182 | "markdownDescription": "Shows expanded Emmet abbreviations as suggestions.\nThe option `\"inMarkupAndStylesheetFilesOnly\"` applies to html, haml, jade, slim, xml, xsl, css, scss, sass, less and stylus.\nThe option `\"always\"` applies to all parts of the file regardless of markup/css.",
183 | "type": [
184 | "string"
185 | ]
186 | },
187 | "emmet.showSuggestionsAsSnippets": {
188 | "default": false,
189 | "markdownDescription": "If `true`, then Emmet suggestions will show up as snippets allowing you to order them as per `#editor.snippetSuggestions#` setting.",
190 | "type": "boolean"
191 | },
192 | "emmet.syntaxProfiles": {
193 | "default": {},
194 | "markdownDescription": "Define profile for specified syntax or use your own profile with specific rules.",
195 | "type": "object"
196 | },
197 | "emmet.variables": {
198 | "additionalProperties": {
199 | "type": "string"
200 | },
201 | "default": {},
202 | "markdownDescription": "Variables to be used in Emmet snippets.",
203 | "properties": {
204 | "charset": {
205 | "default": "UTF-8",
206 | "type": "string"
207 | },
208 | "lang": {
209 | "default": "en",
210 | "type": "string"
211 | }
212 | },
213 | "type": "object"
214 | },
215 | "css.completion.completePropertyWithSemicolon": {
216 | "default": true,
217 | "description": "Insert semicolon at end of line when completing CSS properties.",
218 | "type": "boolean"
219 | },
220 | "css.completion.triggerPropertyValueCompletion": {
221 | "default": true,
222 | "description": "By default, VS Code triggers property value completion after selecting a CSS property. Use this setting to disable this behavior.",
223 | "type": "boolean"
224 | },
225 | "css.customData": {
226 | "type": "array",
227 | "markdownDescription": "A list of relative file paths pointing to JSON files following the [custom data format](https://github.com/microsoft/vscode-css-languageservice/blob/master/docs/customData.md).\n\nLoads custom data to enhance its CSS support for the custom CSS properties, at directives, pseudo classes and pseudo elements you specify in the JSON files.\n\nThe file paths are relative to workspace and only workspace folder settings are considered.",
228 | "default": [],
229 | "items": {
230 | "type": "string"
231 | },
232 | },
233 | "css.format.braceStyle": {
234 | "default": "collapse",
235 | "enum": [
236 | "collapse",
237 | "expand"
238 | ],
239 | "markdownDescription": "Put braces on the same line as rules (`collapse`) or put braces on own line (`expand`).",
240 | "type": "string"
241 | },
242 | "css.format.enable": {
243 | "default": true,
244 | "description": "Enable/disable default CSS formatter.",
245 | "type": "boolean"
246 | },
247 | "css.format.maxPreserveNewLines": {
248 | "default": null,
249 | "markdownDescription": "Maximum number of line breaks to be preserved in one chunk, when `#css.format.preserveNewLines#` is enabled.",
250 | "type": [
251 | "number",
252 | "null"
253 | ]
254 | },
255 | "css.format.newlineBetweenRules": {
256 | "default": true,
257 | "markdownDescription": "Separate rulesets by a blank line.",
258 | "type": "boolean"
259 | },
260 | "css.format.newlineBetweenSelectors": {
261 | "default": true,
262 | "markdownDescription": "Separate selectors with a new line.",
263 | "type": "boolean"
264 | },
265 | "css.format.preserveNewLines": {
266 | "default": true,
267 | "markdownDescription": "Whether existing line breaks before elements should be preserved.",
268 | "type": "boolean"
269 | },
270 | "css.format.spaceAroundSelectorSeparator": {
271 | "default": false,
272 | "markdownDescription": "Ensure a space character around selector separators '>', '+', '~' (e.g. `a > b`).",
273 | "type": "boolean"
274 | },
275 | "css.hover.documentation": {
276 | "default": true,
277 | "description": "Show tag and attribute documentation in CSS hovers.",
278 | "type": "boolean"
279 | },
280 | "css.hover.references": {
281 | "default": true,
282 | "description": "Show references to MDN in CSS hovers.",
283 | "type": "boolean"
284 | },
285 | "less.completion.completePropertyWithSemicolon": {
286 | "default": true,
287 | "description": "Insert semicolon at end of line when completing CSS properties.",
288 | "type": "boolean"
289 | },
290 | "less.completion.triggerPropertyValueCompletion": {
291 | "default": true,
292 | "description": "By default, VS Code triggers property value completion after selecting a CSS property. Use this setting to disable this behavior.",
293 | "type": "boolean"
294 | },
295 | "less.format.braceStyle": {
296 | "default": "collapse",
297 | "enum": [
298 | "collapse",
299 | "expand"
300 | ],
301 | "markdownDescription": "Put braces on the same line as rules (`collapse`) or put braces on own line (`expand`).",
302 | "type": "string"
303 | },
304 | "less.format.enable": {
305 | "default": true,
306 | "description": "Enable/disable default LESS formatter.",
307 | "type": "boolean"
308 | },
309 | "less.format.maxPreserveNewLines": {
310 | "default": null,
311 | "markdownDescription": "Maximum number of line breaks to be preserved in one chunk, when `#less.format.preserveNewLines#` is enabled.",
312 | "type": [
313 | "number",
314 | "null"
315 | ]
316 | },
317 | "less.format.newlineBetweenRules": {
318 | "default": true,
319 | "markdownDescription": "Separate rulesets by a blank line.",
320 | "type": "boolean"
321 | },
322 | "less.format.newlineBetweenSelectors": {
323 | "default": true,
324 | "markdownDescription": "Separate selectors with a new line.",
325 | "type": "boolean"
326 | },
327 | "less.format.preserveNewLines": {
328 | "default": true,
329 | "markdownDescription": "Whether existing line breaks before elements should be preserved.",
330 | "type": "boolean"
331 | },
332 | "less.format.spaceAroundSelectorSeparator": {
333 | "default": false,
334 | "markdownDescription": "Ensure a space character around selector separators '>', '+', '~' (e.g. `a > b`).",
335 | "type": "boolean"
336 | },
337 | "less.hover.documentation": {
338 | "default": true,
339 | "description": "Show tag and attribute documentation in LESS hovers.",
340 | "type": "boolean"
341 | },
342 | "less.hover.references": {
343 | "default": true,
344 | "description": "Show references to MDN in LESS hovers.",
345 | "type": "boolean"
346 | },
347 | "scss.completion.completePropertyWithSemicolon": {
348 | "default": true,
349 | "description": "Insert semicolon at end of line when completing CSS properties.",
350 | "type": "boolean"
351 | },
352 | "scss.completion.triggerPropertyValueCompletion": {
353 | "default": true,
354 | "description": "By default, VS Code triggers property value completion after selecting a CSS property. Use this setting to disable this behavior.",
355 | "type": "boolean"
356 | },
357 | "scss.format.braceStyle": {
358 | "default": "collapse",
359 | "enum": [
360 | "collapse",
361 | "expand"
362 | ],
363 | "markdownDescription": "Put braces on the same line as rules (`collapse`) or put braces on own line (`expand`).",
364 | "type": "string"
365 | },
366 | "scss.format.enable": {
367 | "default": true,
368 | "description": "Enable/disable default SCSS formatter.",
369 | "type": "boolean"
370 | },
371 | "scss.format.maxPreserveNewLines": {
372 | "default": null,
373 | "markdownDescription": "Maximum number of line breaks to be preserved in one chunk, when `#scss.format.preserveNewLines#` is enabled.",
374 | "type": [
375 | "number",
376 | "null"
377 | ]
378 | },
379 | "scss.format.newlineBetweenRules": {
380 | "default": true,
381 | "markdownDescription": "Separate rulesets by a blank line.",
382 | "type": "boolean"
383 | },
384 | "scss.format.newlineBetweenSelectors": {
385 | "default": true,
386 | "markdownDescription": "Separate selectors with a new line.",
387 | "type": "boolean"
388 | },
389 | "scss.format.preserveNewLines": {
390 | "default": true,
391 | "markdownDescription": "Whether existing line breaks before elements should be preserved.",
392 | "type": "boolean"
393 | },
394 | "scss.format.spaceAroundSelectorSeparator": {
395 | "default": false,
396 | "markdownDescription": "Ensure a space character around selector separators '>', '+', '~' (e.g. `a > b`).",
397 | "type": "boolean"
398 | },
399 | "scss.hover.documentation": {
400 | "default": true,
401 | "description": "Show tag and attribute documentation in SCSS hovers.",
402 | "type": "boolean"
403 | },
404 | "scss.hover.references": {
405 | "default": true,
406 | "description": "Show references to MDN in SCSS hovers.",
407 | "type": "boolean"
408 | },
409 | "html.autoClosingTags": {
410 | "default": true,
411 | "description": "Enable/disable autoclosing of HTML tags.",
412 | "type": "boolean"
413 | },
414 | "html.autoCreateQuotes": {
415 | "default": true,
416 | "description": "Enable/disable auto creation of quotes for HTML attribute assignment. The type of quotes can be configured by `#html.completion.attributeDefaultValue#`.",
417 | "type": "boolean"
418 | },
419 | "html.completion.attributeDefaultValue": {
420 | "default": "doublequotes",
421 | "description": "Controls the default value for attributes when completion is accepted.",
422 | "enum": [
423 | "doublequotes",
424 | "singlequotes",
425 | "empty"
426 | ],
427 | "enumDescriptions": [
428 | "Attribute value is set to \"\".",
429 | "Attribute value is set to ''.",
430 | "Attribute value is not set."
431 | ],
432 | "type": "string"
433 | },
434 | "html.customData": {
435 | "type": "array",
436 | "markdownDescription": "A list of relative file paths pointing to JSON files following the [custom data format](https://github.com/microsoft/vscode-html-languageservice/blob/master/docs/customData.md).\n\nLoads custom data to enhance its HTML support for the custom HTML tags, attributes and attribute values you specify in the JSON files.\n\nThe file paths are relative to workspace and only workspace folder settings are considered.",
437 | "default": [],
438 | "items": {
439 | "type": "string"
440 | },
441 | },
442 | "html.format.contentUnformatted": {
443 | "default": "pre,code,textarea",
444 | "markdownDescription": "List of tags, comma separated, where the content shouldn't be reformatted. `null` defaults to the `pre` tag.",
445 | "type": [
446 | "string",
447 | "null"
448 | ]
449 | },
450 | "html.format.enable": {
451 | "default": true,
452 | "description": "Enable/disable default HTML formatter.",
453 | "type": "boolean"
454 | },
455 | "html.format.extraLiners": {
456 | "default": "head, body, /html",
457 | "markdownDescription": "List of tags, comma separated, that should have an extra newline before them. `null` defaults to `\"head, body, /html\"`.",
458 | "type": [
459 | "string",
460 | "null"
461 | ]
462 | },
463 | "html.format.indentHandlebars": {
464 | "default": false,
465 | "markdownDescription": "Format and indent `{{#foo}}` and `{{/foo}}`.",
466 | "type": "boolean"
467 | },
468 | "html.format.indentInnerHtml": {
469 | "default": false,
470 | "markdownDescription": "Indent `` and `` sections.",
471 | "type": "boolean"
472 | },
473 | "html.format.maxPreserveNewLines": {
474 | "default": null,
475 | "markdownDescription": "Maximum number of line breaks to be preserved in one chunk. Use `null` for unlimited.",
476 | "type": [
477 | "number",
478 | "null"
479 | ]
480 | },
481 | "html.format.preserveNewLines": {
482 | "default": true,
483 | "description": "Controls whether existing line breaks before elements should be preserved. Only works before elements, not inside tags or for text.",
484 | "type": "boolean"
485 | },
486 | "html.format.templating": {
487 | "default": false,
488 | "description": "Honor django, erb, handlebars and php templating language tags.",
489 | "type": "boolean"
490 | },
491 | "html.format.unformatted": {
492 | "default": "wbr",
493 | "markdownDescription": "List of tags, comma separated, that shouldn't be reformatted. `null` defaults to all tags listed at https://www.w3.org/TR/html5/dom.html#phrasing-content.",
494 | "type": [
495 | "string",
496 | "null"
497 | ]
498 | },
499 | "html.format.unformattedContentDelimiter": {
500 | "default": "",
501 | "markdownDescription": "Keep text content together between this string.",
502 | "type": "string"
503 | },
504 | "html.format.wrapAttributes": {
505 | "default": "auto",
506 | "description": "Wrap attributes.",
507 | "enum": [
508 | "auto",
509 | "force",
510 | "force-aligned",
511 | "force-expand-multiline",
512 | "aligned-multiple",
513 | "preserve",
514 | "preserve-aligned"
515 | ],
516 | "enumDescriptions": [
517 | "Wrap attributes only when line length is exceeded.",
518 | "Wrap each attribute except first.",
519 | "Wrap each attribute except first and keep aligned.",
520 | "Wrap each attribute.",
521 | "Wrap when line length is exceeded, align attributes vertically.",
522 | "Preserve wrapping of attributes.",
523 | "Preserve wrapping of attributes but align."
524 | ],
525 | "type": "string"
526 | },
527 | "html.format.wrapAttributesIndentSize": {
528 | "default": null,
529 | "markdownDescription": "Indent wrapped attributes to after N characters. Use `null` to use the default indent size. Ignored if `#html.format.wrapAttributes#` is set to 'aligned'.",
530 | "type": [
531 | "number",
532 | "null"
533 | ]
534 | },
535 | "html.format.wrapLineLength": {
536 | "default": 120,
537 | "description": "Maximum amount of characters per line (0 = disable).",
538 | "type": "integer"
539 | },
540 | "html.hover.documentation": {
541 | "default": true,
542 | "description": "Show tag and attribute documentation in hover.",
543 | "type": "boolean"
544 | },
545 | "html.hover.references": {
546 | "default": true,
547 | "description": "Show references to MDN in hover.",
548 | "type": "boolean"
549 | },
550 | // "vue.autoInsert.bracketSpacing": {
551 | // "default": true,
552 | // "markdownDescription": "Auto add space between double curly brackets: `{{|}}` -> `{{ | }}`",
553 | // "type": "boolean"
554 | // },
555 | // "vue.autoInsert.dotValue": {
556 | // "default": false,
557 | // "markdownDescription": "Auto-complete Ref value with `.value`.",
558 | // "type": "boolean"
559 | // },
560 | // "vue.codeActions.askNewComponentName": {
561 | // "default": true,
562 | // "markdownDescription": "Ask for new component name when extract component.",
563 | // "type": "boolean"
564 | // },
565 | // "vue.editor.focusMode": {
566 | // "default": true,
567 | // "markdownDescription": "Sponsor this extension to unlock premium features. [Learn more](https://youtu.be/RcPcO4_Ct_U)",
568 | // "type": "boolean"
569 | // },
570 | // "vue.editor.reactivityVisualization": {
571 | // "default": true,
572 | // "markdownDescription": "Sponsor this extension to unlock premium features. [Learn more](https://youtu.be/RcPcO4_Ct_U)",
573 | // "type": "boolean"
574 | // },
575 | // "vue.editor.templateInterpolationDecorators": {
576 | // "default": true,
577 | // "markdownDescription": "Sponsor this extension to unlock premium features. [Learn more](https://youtu.be/RcPcO4_Ct_U)",
578 | // "type": "boolean"
579 | // },
580 | "vue.format.script.initialIndent": {
581 | "default": false,
582 | "markdownDescription": "Initial indent for `\n```",
627 | "type": "boolean"
628 | },
629 | "vue.inlayHints.vBindShorthand": {
630 | "default": false,
631 | "markdownDescription": "Show inlay hints for v-bind shorthand:\n\n```html\n\n \n```",
632 | "type": "boolean"
633 | },
634 | // "vue.server.includeLanguages": {
635 | // "default": [
636 | // "vue"
637 | // ],
638 | // "items": {
639 | // "type": "string"
640 | // },
641 | // "markdownDescription": "Configure the languages for which the extension should be activated.",
642 | // "type": "array"
643 | // },
644 | "vue.suggest.componentNameCasing": {
645 | "default": "preferPascalCase",
646 | "enum": [
647 | "preferKebabCase",
648 | "preferPascalCase",
649 | "alwaysKebabCase",
650 | "alwaysPascalCase"
651 | ],
652 | "enumDescriptions": [
653 | "Prefer kebab-case (lowercase with hyphens, e.g. my-component)",
654 | "Prefer PascalCase (UpperCamelCase, e.g. MyComponent)",
655 | "Always kebab-case (enforce kebab-case, e.g. my-component)",
656 | "Always PascalCase (enforce PascalCase, e.g. MyComponent)"
657 | ],
658 | "markdownDescription": "Preferred component name case.",
659 | "type": "string"
660 | },
661 | "vue.suggest.defineAssignment": {
662 | "default": true,
663 | "markdownDescription": "Auto add `const props = ` before `defineProps` when selecting the completion item `props`. (also `emit` and `slots`)",
664 | "type": "boolean"
665 | },
666 | "vue.suggest.propNameCasing": {
667 | "default": "preferKebabCase",
668 | "enum": [
669 | "preferKebabCase",
670 | "preferCamelCase",
671 | "alwaysKebabCase",
672 | "alwaysCamelCase"
673 | ],
674 | "enumDescriptions": [
675 | "Prefer kebab-case (lowercase with hyphens, e.g. my-prop)",
676 | "Prefer camelCase (lowerCamelCase, e.g. myProp)",
677 | "Always kebab-case (enforce kebab-case, e.g. my-prop)",
678 | "Always camelCase (enforce camelCase, e.g. myProp)"
679 | ],
680 | "markdownDescription": "Preferred attr name case.",
681 | "type": "string"
682 | },
683 | // "vue.trace.server": {
684 | // "default": "off",
685 | // "enum": [
686 | // "off",
687 | // "messages",
688 | // "verbose"
689 | // ],
690 | // "markdownDescription": "Traces the communication between VS Code and the language server.",
691 | // "type": "string"
692 | // },
693 | "typescript.preferences.autoImportFileExcludePatterns": {
694 | "items": {
695 | "type": "string"
696 | },
697 | "markdownDescription": "Specify glob patterns of files to exclude from auto imports. Requires using TypeScript 4.8 or newer in the workspace.",
698 | "type": "array"
699 | },
700 | "typescript.preferences.importModuleSpecifier": {
701 | "default": "shortest",
702 | "description": "Preferred path style for auto imports.",
703 | "enum": [
704 | "shortest",
705 | "relative",
706 | "non-relative",
707 | "project-relative"
708 | ],
709 | "markdownEnumDescriptions": [
710 | "Prefers a non-relative import only if one is available that has fewer path segments than a relative import.",
711 | "Prefers a relative path to the imported file location.",
712 | "Prefers a non-relative import based on the `baseUrl` or `paths` configured in your `jsconfig.json` / `tsconfig.json`.",
713 | "Prefers a non-relative import only if the relative import path would leave the package or project directory."
714 | ],
715 | "type": "string"
716 | },
717 | "typescript.preferences.importModuleSpecifierEnding": {
718 | "default": "auto",
719 | "description": "Preferred path ending for auto imports.",
720 | "enum": [
721 | "auto",
722 | "minimal",
723 | "index",
724 | "js"
725 | ],
726 | "markdownEnumDescriptions": [
727 | "Use project settings to select a default.",
728 | "Shorten `./component/index.js` to `./component`.",
729 | "Shorten `./component/index.js` to `./component/index`.",
730 | "Do not shorten path endings; include the `.js` extension."
731 | ],
732 | "type": "string"
733 | },
734 | "typescript.preferences.jsxAttributeCompletionStyle": {
735 | "default": "auto",
736 | "description": "Preferred style for JSX attribute completions.",
737 | "enum": [
738 | "auto",
739 | "braces",
740 | "none"
741 | ],
742 | "markdownEnumDescriptions": [
743 | "Insert `={}` or `=\"\"` after attribute names based on the prop type. See `javascript.preferences.quoteStyle` to control the type of quotes used for string attributes.",
744 | "Insert `={}` after attribute names.",
745 | "Only insert attribute names."
746 | ],
747 | "type": "string"
748 | },
749 | "typescript.preferences.quoteStyle": {
750 | "default": "auto",
751 | "enum": [
752 | "auto",
753 | "single",
754 | "double"
755 | ],
756 | "markdownDescription": "Preferred quote style to use for Quick Fixes.",
757 | "markdownEnumDescriptions": [
758 | "Infer quote type from existing code",
759 | "Always use single quotes: `'`",
760 | "Always use double quotes: `\"`"
761 | ],
762 | "type": "string"
763 | },
764 | "typescript.suggest.autoImports": {
765 | "default": true,
766 | "description": "Enable/disable auto import suggestions.",
767 | "type": "boolean"
768 | },
769 | "typescript.suggest.classMemberSnippets.enabled": {
770 | "default": true,
771 | "description": "Enable/disable snippet completions for class members.",
772 | "type": "boolean"
773 | },
774 | "typescript.suggest.completeFunctionCalls": {
775 | "default": false,
776 | "description": "Complete functions with their parameter signature.",
777 | "type": "boolean"
778 | },
779 | "typescript.suggest.includeAutomaticOptionalChainCompletions": {
780 | "default": true,
781 | "description": "Enable/disable showing completions on potentially undefined values that insert an optional chain call. Requires strict null checks to be enabled.",
782 | "type": "boolean"
783 | },
784 | "typescript.suggest.includeCompletionsForImportStatements": {
785 | "default": true,
786 | "description": "Enable/disable auto-import-style completions on partially-typed import statements.",
787 | "type": "boolean"
788 | },
789 | "typescript.suggest.includeCompletionsWithSnippetText": {
790 | "default": true,
791 | "description": "Enable/disable snippet completions from TS Server.",
792 | "type": "boolean"
793 | },
794 | "typescript.suggest.jsdoc.generateReturns": {
795 | "default": true,
796 | "markdownDescription": "Enable/disable generating `@returns` annotations for JSDoc templates.",
797 | "type": "boolean"
798 | },
799 | "typescript.suggest.objectLiteralMethodSnippets.enabled": {
800 | "default": true,
801 | "description": "Enable/disable snippet completions for methods in object literals. Requires using TypeScript 4.7+ in the workspace.",
802 | "type": "boolean"
803 | },
804 | "typescript.inlayHints.enumMemberValues.enabled": {
805 | "type": "boolean",
806 | "default": false,
807 | "markdownDescription": "Enable/disable inlay hints for member values in enum declarations: \n\n ```typescript\n enum MyValue {\n A /* = 0 */;\n B /* = 1 */;\n }\n ```\n \n Require TypeScript 4.4+."
808 | },
809 | "typescript.inlayHints.functionLikeReturnTypes.enabled": {
810 | "type": "boolean",
811 | "default": false,
812 | "markdownDescription": "Enable/disable inlay hints for implicit return types on function signatures:\n\n ```typescript\n function foo() /* :number */ {\n return Date.now();\n }\n ```\n Require TypeScript 4.4+."
813 | },
814 | "typescript.inlayHints.parameterTypes.enabled": {
815 | "type": "boolean",
816 | "default": false,
817 | "markdownDescription": "Enable/disable inlay hints for parameter names: \n\n ```typescript\n parseInt(/* str: */ '123', /* radix: */ 8)\n ```\n Require TypeScript 4.4+."
818 | },
819 | "typescript.inlayHints.parameterNames.enabled": {
820 | "enum": [
821 | "all",
822 | "literals",
823 | "none"
824 | ],
825 | "default": "none",
826 | "markdownEnumDescriptions": [
827 | "Enable parameter name hints for literal and non-literal arguments.",
828 | "Enable parameter name hints only for literal arguments.",
829 | "Disable parameter name hints."
830 | ]
831 | },
832 | "typescript.inlayHints.parameterNames.suppressWhenArgumentMatchesName": {
833 | "type": "boolean",
834 | "default": true,
835 | "markdownDescription": ""
836 | },
837 | "typescript.inlayHints.propertyDeclarationTypes.enabled": {
838 | "type": "boolean",
839 | "default": false,
840 | "markdownDescription": "Enable/disable inlay hints for implicit types on property declarations: \n\n ```typescript\n class Foo {\n prop /* :number */ = Date.now;\n }\n ```\n Require TypeScript 4.4+."
841 | },
842 | "typescript.inlayHints.variableTypes.enabled": {
843 | "type": "boolean",
844 | "default": false,
845 | "markdownDescription": "Enable/disable inlay hints for implicit variable types: \n\n ```typescript\n const foo /* :number */ = Date.now();\n ``` \n Require TypeScript 4.4+."
846 | },
847 | "typescript.inlayHints.variableTypes.suppressWhenTypeMatchesName.enabled": {
848 | "type": "boolean",
849 | "default": true,
850 | },
851 | "javascript.preferences.autoImportFileExcludePatterns": {
852 | "items": {
853 | "type": "string"
854 | },
855 | "markdownDescription": "Specify glob patterns of files to exclude from auto imports. Requires using TypeScript 4.8 or newer in the workspace.",
856 | "type": "array"
857 | },
858 | "javascript.preferences.importModuleSpecifier": {
859 | "default": "shortest",
860 | "description": "Preferred path style for auto imports.",
861 | "enum": [
862 | "shortest",
863 | "relative",
864 | "non-relative",
865 | "project-relative"
866 | ],
867 | "markdownEnumDescriptions": [
868 | "Prefers a non-relative import only if one is available that has fewer path segments than a relative import.",
869 | "Prefers a relative path to the imported file location.",
870 | "Prefers a non-relative import based on the `baseUrl` or `paths` configured in your `jsconfig.json` / `tsconfig.json`.",
871 | "Prefers a non-relative import only if the relative import path would leave the package or project directory."
872 | ],
873 | "type": "string"
874 | },
875 | "javascript.preferences.importModuleSpecifierEnding": {
876 | "default": "auto",
877 | "description": "Preferred path ending for auto imports.",
878 | "enum": [
879 | "auto",
880 | "minimal",
881 | "index",
882 | "js"
883 | ],
884 | "markdownEnumDescriptions": [
885 | "Use project settings to select a default.",
886 | "Shorten `./component/index.js` to `./component`.",
887 | "Shorten `./component/index.js` to `./component/index`.",
888 | "Do not shorten path endings; include the `.js` extension."
889 | ],
890 | "type": "string"
891 | },
892 | "javascript.preferences.jsxAttributeCompletionStyle": {
893 | "default": "auto",
894 | "description": "Preferred style for JSX attribute completions.",
895 | "enum": [
896 | "auto",
897 | "braces",
898 | "none"
899 | ],
900 | "markdownEnumDescriptions": [
901 | "Insert `={}` or `=\"\"` after attribute names based on the prop type. See `javascript.preferences.quoteStyle` to control the type of quotes used for string attributes.",
902 | "Insert `={}` after attribute names.",
903 | "Only insert attribute names."
904 | ],
905 | "type": "string"
906 | },
907 | "javascript.preferences.quoteStyle": {
908 | "default": "auto",
909 | "enum": [
910 | "auto",
911 | "single",
912 | "double"
913 | ],
914 | "markdownDescription": "Preferred quote style to use for Quick Fixes.",
915 | "markdownEnumDescriptions": [
916 | "Infer quote type from existing code",
917 | "Always use single quotes: `'`",
918 | "Always use double quotes: `\"`"
919 | ],
920 | "type": "string"
921 | },
922 | "javascript.suggest.autoImports": {
923 | "default": true,
924 | "description": "Enable/disable auto import suggestions.",
925 | "type": "boolean"
926 | },
927 | "javascript.suggest.classMemberSnippets.enabled": {
928 | "default": true,
929 | "description": "Enable/disable snippet completions for class members.",
930 | "type": "boolean"
931 | },
932 | "javascript.suggest.completeFunctionCalls": {
933 | "default": false,
934 | "description": "Complete functions with their parameter signature.",
935 | "type": "boolean"
936 | },
937 | "javascript.suggest.includeAutomaticOptionalChainCompletions": {
938 | "default": true,
939 | "description": "Enable/disable showing completions on potentially undefined values that insert an optional chain call. Requires strict null checks to be enabled.",
940 | "type": "boolean"
941 | },
942 | "javascript.suggest.includeCompletionsForImportStatements": {
943 | "default": true,
944 | "description": "Enable/disable auto-import-style completions on partially-typed import statements.",
945 | "type": "boolean"
946 | },
947 | "javascript.suggest.includeCompletionsWithSnippetText": {
948 | "default": true,
949 | "description": "Enable/disable snippet completions from TS Server.",
950 | "type": "boolean"
951 | },
952 | "javascript.suggest.jsdoc.generateReturns": {
953 | "default": true,
954 | "markdownDescription": "Enable/disable generating `@returns` annotations for JSDoc templates.",
955 | "type": "boolean"
956 | },
957 | "javascript.suggest.objectLiteralMethodSnippets.enabled": {
958 | "default": true,
959 | "description": "Enable/disable snippet completions for methods in object literals. Requires using TypeScript 4.7+ in the workspace.",
960 | "type": "boolean"
961 | },
962 | "javascript.inlayHints.enumMemberValues.enabled": {
963 | "type": "boolean",
964 | "default": false,
965 | "markdownDescription": "Enable/disable inlay hints for member values in enum declarations: \n\n ```typescript\n enum MyValue {\n A /* = 0 */;\n B /* = 1 */;\n }\n ```\n \n Require TypeScript 4.4+."
966 | },
967 | "javascript.inlayHints.functionLikeReturnTypes.enabled": {
968 | "type": "boolean",
969 | "default": false,
970 | "markdownDescription": "Enable/disable inlay hints for implicit return types on function signatures:\n\n ```typescript\n function foo() /* :number */ {\n return Date.now();\n }\n ```\n Require TypeScript 4.4+."
971 | },
972 | "javascript.inlayHints.parameterTypes.enabled": {
973 | "type": "boolean",
974 | "default": false,
975 | "markdownDescription": "Enable/disable inlay hints for parameter names: \n\n ```typescript\n parseInt(/* str: */ '123', /* radix: */ 8)\n ```\n Require TypeScript 4.4+."
976 | },
977 | "javascript.inlayHints.parameterNames.enabled": {
978 | "enum": [
979 | "all",
980 | "literals",
981 | "none"
982 | ],
983 | "default": "none",
984 | "markdownEnumDescriptions": [
985 | "Enable parameter name hints for literal and non-literal arguments.",
986 | "Enable parameter name hints only for literal arguments.",
987 | "Disable parameter name hints."
988 | ]
989 | },
990 | "javascript.inlayHints.parameterNames.suppressWhenArgumentMatchesName": {
991 | "type": "boolean",
992 | "default": true,
993 | "markdownDescription": ""
994 | },
995 | "javascript.inlayHints.propertyDeclarationTypes.enabled": {
996 | "type": "boolean",
997 | "default": false,
998 | "markdownDescription": "Enable/disable inlay hints for implicit types on property declarations: \n\n ```typescript\n class Foo {\n prop /* :number */ = Date.now;\n }\n ```\n Require TypeScript 4.4+."
999 | },
1000 | "javascript.inlayHints.variableTypes.enabled": {
1001 | "type": "boolean",
1002 | "default": false,
1003 | "markdownDescription": "Enable/disable inlay hints for implicit variable types: \n\n ```typescript\n const foo /* :number */ = Date.now();\n ``` \n Require TypeScript 4.4+."
1004 | },
1005 | "javascript.inlayHints.variableTypes.suppressWhenTypeMatchesName.enabled": {
1006 | "type": "boolean",
1007 | "default": true,
1008 | }
1009 | }
1010 | }
1011 | }
1012 | }
1013 | },
1014 | "allOf": [
1015 | {
1016 | "$ref": "sublime://settings/LSP-plugin-base"
1017 | },
1018 | {
1019 | "$ref": "sublime://settings/LSP-vue#/definitions/PluginConfig"
1020 | }
1021 | ]
1022 | }
1023 | },
1024 | {
1025 | "file_patterns": [
1026 | "/*.sublime-project"
1027 | ],
1028 | "schema": {
1029 | "properties": {
1030 | "settings": {
1031 | "properties": {
1032 | "LSP": {
1033 | "properties": {
1034 | "LSP-vue": {
1035 | "$ref": "sublime://settings/LSP-vue#/definitions/PluginConfig"
1036 | }
1037 | }
1038 | }
1039 | }
1040 | }
1041 | }
1042 | }
1043 | },
1044 | {
1045 | "file_patterns": [
1046 | "/tsconfig.json",
1047 | "/tsconfig-*.json",
1048 | "/tsconfig.*.json",
1049 | "/jsconfig.json",
1050 | "/jsconfig-*.json",
1051 | "/jsconfig.*.json",
1052 | ],
1053 | "schema": {
1054 | "properties": {
1055 | "vueCompilerOptions": {
1056 | "type": "object",
1057 | "additionalProperties": false,
1058 | "properties": {
1059 | "target": {
1060 | "default": "auto",
1061 | "enum": [
1062 | "auto",
1063 | 2,
1064 | 2.7,
1065 | 3,
1066 | 3.3,
1067 | 3.5,
1068 | 3.6,
1069 | 99
1070 | ],
1071 | "markdownDescription": "Target version of Vue."
1072 | },
1073 | "lib": {
1074 | "default": "vue",
1075 | "markdownDescription": "Specify module name for import regular types."
1076 | },
1077 | "globalTypesPath": {
1078 | "type": "string",
1079 | "markdownDescription": "Path to the global types file. Manual configuration is required when `node_modules` does not exist in the environment."
1080 | },
1081 | "extensions": {
1082 | "type": "array",
1083 | "default": [
1084 | ".vue"
1085 | ],
1086 | "markdownDescription": "Valid file extensions that should be considered as regular Vue SFC, please note that you should not use this option separately for additional file extensions IDE support, see https://github.com/vuejs/language-tools/tree/master/extensions/vscode/README.md#custom-file-extensions."
1087 | },
1088 | "vitePressExtensions": {
1089 | "type": "array",
1090 | "default": [
1091 | ".md"
1092 | ],
1093 | "markdownDescription": "Valid file extensions that should be considered as regular VitePress SFC."
1094 | },
1095 | "petiteVueExtensions": {
1096 | "type": "array",
1097 | "default": [
1098 | ".html"
1099 | ],
1100 | "markdownDescription": "Valid file extensions that should be considered as regular PetiteVue SFC."
1101 | },
1102 | "jsxSlots": {
1103 | "type": "boolean",
1104 | "default": false,
1105 | "markdownDescription": "Generate slots type for `JSX.ElementChildrenAttribute`."
1106 | },
1107 | "strictTemplates": {
1108 | "type": "boolean",
1109 | "default": false,
1110 | "markdownDescription": "Strict props, component type-checking in templates."
1111 | },
1112 | "strictVModel": {
1113 | "type": "boolean",
1114 | "default": false,
1115 | "markdownDescription": "Strict type constraints of `v-model`. If not set, uses the 'strictTemplates' value."
1116 | },
1117 | "strictCssModules": {
1118 | "type": "boolean",
1119 | "default": false,
1120 | "markdownDescription": "Strict type checking of CSS modules."
1121 | },
1122 | "checkUnknownProps": {
1123 | "type": "boolean",
1124 | "default": false,
1125 | "markdownDescription": "Check unknown props. If not set, uses the 'strictTemplates' value."
1126 | },
1127 | "checkUnknownEvents": {
1128 | "type": "boolean",
1129 | "default": false,
1130 | "markdownDescription": "Check unknown events. If not set, uses the 'strictTemplates' value."
1131 | },
1132 | "checkUnknownDirectives": {
1133 | "type": "boolean",
1134 | "default": false,
1135 | "markdownDescription": "Check unknown directives. If not set, uses the 'strictTemplates' value."
1136 | },
1137 | "checkUnknownComponents": {
1138 | "type": "boolean",
1139 | "default": false,
1140 | "markdownDescription": "Check unknown components. If not set, uses the 'strictTemplates' value."
1141 | },
1142 | "inferComponentDollarEl": {
1143 | "type": "boolean",
1144 | "default": false,
1145 | "markdownDescription": "Infer `$el` type on the component instance."
1146 | },
1147 | "inferComponentDollarRefs": {
1148 | "type": "boolean",
1149 | "default": false,
1150 | "markdownDescription": "Infer `$refs` type on the component instance."
1151 | },
1152 | "inferTemplateDollarAttrs": {
1153 | "type": "boolean",
1154 | "default": false,
1155 | "markdownDescription": "Infer `$attrs` type in the template and the return type of `useAttrs`."
1156 | },
1157 | "inferTemplateDollarEl": {
1158 | "type": "boolean",
1159 | "default": false,
1160 | "markdownDescription": "Infer `$el` type in the template."
1161 | },
1162 | "inferTemplateDollarRefs": {
1163 | "type": "boolean",
1164 | "default": false,
1165 | "markdownDescription": "Infer `$refs` type in the template."
1166 | },
1167 | "inferTemplateDollarSlots": {
1168 | "type": "boolean",
1169 | "default": false,
1170 | "markdownDescription": "Infer `$slots` type in the template and the return type of `useSlots`."
1171 | },
1172 | "skipTemplateCodegen": {
1173 | "type": "boolean",
1174 | "default": false,
1175 | "markdownDescription": "https://github.com/vuejs/language-tools/issues/577"
1176 | },
1177 | "resolveStyleImports": {
1178 | "type": "boolean",
1179 | "default": false,
1180 | "markdownDescription": "Enable to generate type imports for external CSS files by `