[css] Add CSS formatting option to place open brace on new line. Fixes #146398

This commit is contained in:
Martin Aeschlimann
2022-04-01 18:03:29 +02:00
parent e8f26b998e
commit 1305aac01e
5 changed files with 85 additions and 7 deletions

View File

@@ -32,9 +32,12 @@ interface CSSFormatSettings {
newlineBetweenSelectors?: boolean;
newlineBetweenRules?: boolean;
spaceAroundSelectorSeparator?: boolean;
braceStyle?: 'collapse' | 'expand';
preserveNewLines?: boolean;
maxPreserveNewLines?: number | null;
}
const cssFormatSettingKeys: (keyof CSSFormatSettings)[] = ['newlineBetweenSelectors', 'newlineBetweenRules', 'spaceAroundSelectorSeparator'];
const cssFormatSettingKeys: (keyof CSSFormatSettings)[] = ['newlineBetweenSelectors', 'newlineBetweenRules', 'spaceAroundSelectorSeparator', 'braceStyle', 'preserveNewLines', 'maxPreserveNewLines'];
export function startClient(context: ExtensionContext, newLanguageClient: LanguageClientConstructor, runtime: Runtime) {
@@ -196,7 +199,7 @@ export function startClient(context: ExtensionContext, newLanguageClient: Langua
if (formatterSettings) {
for (const key of cssFormatSettingKeys) {
const val = formatterSettings[key];
if (val !== undefined) {
if (val !== undefined && val !== null) {
params.options[key] = val;
}
}

View File

@@ -331,6 +331,28 @@
"scope": "resource",
"default": false,
"markdownDescription": "%css.format.spaceAroundSelectorSeparator.desc%"
},
"css.format.braceStyle": {
"type": "string",
"scope": "resource",
"default": "collapse",
"enum": ["collapse", "expand"],
"markdownDescription": "%css.format.braceStyle.desc%"
},
"css.format.preserveNewLines": {
"type": "boolean",
"scope": "resource",
"default": true,
"markdownDescription": "%css.format.preserveNewLines.desc%"
},
"css.format.maxPreserveNewLines": {
"type": [
"number",
"null"
],
"scope": "resource",
"default": null,
"markdownDescription": "%css.format.maxPreserveNewLines.desc%"
}
}
},
@@ -611,6 +633,28 @@
"scope": "resource",
"default": false,
"markdownDescription": "%scss.format.spaceAroundSelectorSeparator.desc%"
},
"scss.format.braceStyle": {
"type": "string",
"scope": "resource",
"default": "collapse",
"enum": ["collapse", "expand"],
"markdownDescription": "%scss.format.braceStyle.desc%"
},
"scss.format.preserveNewLines": {
"type": "boolean",
"scope": "resource",
"default": true,
"markdownDescription": "%scss.format.preserveNewLines.desc%"
},
"scss.format.maxPreserveNewLines": {
"type": [
"number",
"null"
],
"scope": "resource",
"default": null,
"markdownDescription": "%scss.format.maxPreserveNewLines.desc%"
}
}
},
@@ -892,6 +936,28 @@
"scope": "resource",
"default": false,
"markdownDescription": "%less.format.spaceAroundSelectorSeparator.desc%"
},
"less.format.braceStyle": {
"type": "string",
"scope": "resource",
"default": "collapse",
"enum": ["collapse", "expand"],
"markdownDescription": "%less.format.braceStyle.desc%"
},
"less.format.preserveNewLines": {
"type": "boolean",
"scope": "resource",
"default": true,
"markdownDescription": "%less.format.preserveNewLines.desc%"
},
"less.format.maxPreserveNewLines": {
"type": [
"number",
"null"
],
"scope": "resource",
"default": null,
"markdownDescription": "%less.format.maxPreserveNewLines.desc%"
}
}
}

View File

@@ -34,6 +34,9 @@
"css.format.newlineBetweenSelectors.desc": "Separate selectors with a new line.",
"css.format.newlineBetweenRules.desc": "Separate rulesets by a blank line.",
"css.format.spaceAroundSelectorSeparator.desc": "Ensure a space character around selector separators '>', '+', '~' (e.g. `a > b`).",
"css.format.braceStyle.desc": "Put braces on the same line as rules (`collapse`) or put braces on own line (`expand`).",
"css.format.preserveNewLines.desc": "Whether existing line breaks before elements should be preserved.",
"css.format.maxPreserveNewLines.desc": "Maximum number of line breaks to be preserved in one chunk, when `#css.format.preserveNewLines#` is enabled.",
"less.title": "LESS",
"less.completion.triggerPropertyValueCompletion.desc": "By default, VS Code triggers property value completion after selecting a CSS property. Use this setting to disable this behavior.",
"less.completion.completePropertyWithSemicolon.desc": "Insert semicolon at end of line when completing CSS properties.",
@@ -65,6 +68,9 @@
"less.format.newlineBetweenSelectors.desc": "Separate selectors with a new line.",
"less.format.newlineBetweenRules.desc": "Separate rulesets by a blank line.",
"less.format.spaceAroundSelectorSeparator.desc": "Ensure a space character around selector separators '>', '+', '~' (e.g. `a > b`).",
"less.format.braceStyle.desc": "Put braces on the same line as rules (`collapse`) or put braces on own line (`expand`).",
"less.format.preserveNewLines.desc": "Whether existing line breaks before elements should be preserved.",
"less.format.maxPreserveNewLines.desc": "Maximum number of line breaks to be preserved in one chunk, when `#less.format.preserveNewLines#` is enabled.",
"scss.title": "SCSS (Sass)",
"scss.completion.triggerPropertyValueCompletion.desc": "By default, VS Code triggers property value completion after selecting a CSS property. Use this setting to disable this behavior.",
"scss.completion.completePropertyWithSemicolon.desc": "Insert semicolon at end of line when completing CSS properties.",
@@ -96,6 +102,9 @@
"scss.format.newlineBetweenSelectors.desc": "Separate selectors with a new line.",
"scss.format.newlineBetweenRules.desc": "Separate rulesets by a blank line.",
"scss.format.spaceAroundSelectorSeparator.desc": "Ensure a space character around selector separators '>', '+', '~' (e.g. `a > b`).",
"scss.format.braceStyle.desc": "Put braces on the same line as rules (`collapse`) or put braces on own line (`expand`).",
"scss.format.preserveNewLines.desc": "Whether existing line breaks before elements should be preserved.",
"scss.format.maxPreserveNewLines.desc": "Maximum number of line breaks to be preserved in one chunk, when `#scss.format.preserveNewLines#` is enabled.",
"css.colorDecorators.enable.deprecationMessage": "The setting `css.colorDecorators.enable` has been deprecated in favor of `editor.colorDecorators`.",
"scss.colorDecorators.enable.deprecationMessage": "The setting `scss.colorDecorators.enable` has been deprecated in favor of `editor.colorDecorators`.",
"less.colorDecorators.enable.deprecationMessage": "The setting `less.colorDecorators.enable` has been deprecated in favor of `editor.colorDecorators`."

View File

@@ -10,7 +10,7 @@
"main": "./out/node/cssServerMain",
"browser": "./dist/browser/cssServerMain",
"dependencies": {
"vscode-css-languageservice": "^5.3.0",
"vscode-css-languageservice": "^5.4.1",
"vscode-languageserver": "^7.0.0",
"vscode-uri": "^3.0.3"
},

View File

@@ -12,10 +12,10 @@
resolved "https://registry.yarnpkg.com/@types/node/-/node-16.11.6.tgz#6bef7a2a0ad684cf6e90fcfe31cecabd9ce0a3ae"
integrity sha512-ua7PgUoeQFjmWPcoo9khiPum3Pd60k4/2ZGXt18sm2Slk0W0xZTqt5Y0Ny1NyBiN1EVQ/+FaF9NcY4Qe6rwk5w==
vscode-css-languageservice@^5.3.0:
version "5.3.0"
resolved "https://registry.yarnpkg.com/vscode-css-languageservice/-/vscode-css-languageservice-5.3.0.tgz#48b800865c5b6ca7ab43225c63e8a4f1f24ec9b0"
integrity sha512-ujWW855AoJlE4ETU17Gff7unlZZTHDA0w26itk9EQFMfJqi9lE6S67zOsMvcPmJf55MrnGQbojDYZRiDVaFjdA==
vscode-css-languageservice@^5.4.1:
version "5.4.1"
resolved "https://registry.yarnpkg.com/vscode-css-languageservice/-/vscode-css-languageservice-5.4.1.tgz#6bb309d617c40f5b4b7752d05f1cbb9b2eaab102"
integrity sha512-W7D3GKFXf97ReAaU4EZ2nxVO1kQhztbycJgc1b/Ipr0h8zYWr88BADmrXu02z+lsCS84D7Sr4hoUzDKeaFn2Kg==
dependencies:
vscode-languageserver-textdocument "^1.0.4"
vscode-languageserver-types "^3.16.0"