mirror of
https://github.com/microsoft/vscode.git
synced 2025-12-25 12:47:14 +00:00
* Update indentation for PHP, JS, and TS. Addresses https://github.com/microsoft/vscode/issues/136592 - For PHP, auto-indent after `if`, `elseif`, `else if`, `while`, `for` and `foreach`. This also fixes an issue where hitting Enter on a blank line below a single line `if` (or other) results in an extra tab. - For PHP, extra dot after `*/` and blank line. - For JS/TS, auto-indent for `else` to be consistent with handling of `if` statements * polish --------- Co-authored-by: Aiday Marlen Kyzy <amarlenkyzy@microsoft.com>
179 lines
3.0 KiB
JSON
179 lines
3.0 KiB
JSON
{
|
|
"comments": {
|
|
"lineComment": "//", // "#"
|
|
"blockComment": [
|
|
"/*",
|
|
"*/"
|
|
]
|
|
},
|
|
"brackets": [
|
|
[
|
|
"{",
|
|
"}"
|
|
],
|
|
[
|
|
"[",
|
|
"]"
|
|
],
|
|
[
|
|
"(",
|
|
")"
|
|
]
|
|
],
|
|
"autoClosingPairs": [
|
|
{
|
|
"open": "{",
|
|
"close": "}",
|
|
"notIn": [
|
|
"string"
|
|
]
|
|
},
|
|
{
|
|
"open": "[",
|
|
"close": "]",
|
|
"notIn": [
|
|
"string"
|
|
]
|
|
},
|
|
{
|
|
"open": "(",
|
|
"close": ")",
|
|
"notIn": [
|
|
"string"
|
|
]
|
|
},
|
|
{
|
|
"open": "'",
|
|
"close": "'",
|
|
"notIn": [
|
|
"string",
|
|
"comment"
|
|
]
|
|
},
|
|
{
|
|
"open": "\"",
|
|
"close": "\"",
|
|
"notIn": [
|
|
"string",
|
|
"comment"
|
|
]
|
|
},
|
|
{
|
|
"open": "/**",
|
|
"close": " */",
|
|
"notIn": [
|
|
"string"
|
|
]
|
|
}
|
|
],
|
|
"surroundingPairs": [
|
|
[
|
|
"{",
|
|
"}"
|
|
],
|
|
[
|
|
"[",
|
|
"]"
|
|
],
|
|
[
|
|
"(",
|
|
")"
|
|
],
|
|
[
|
|
"'",
|
|
"'"
|
|
],
|
|
[
|
|
"\"",
|
|
"\""
|
|
],
|
|
[
|
|
"`",
|
|
"`"
|
|
]
|
|
],
|
|
"indentationRules": {
|
|
"increaseIndentPattern": "({(?!.*}).*|\\(|\\[|((else(\\s)?)?if|else|for(each)?|while|switch|case).*:)\\s*((/[/*].*|)?$|\\?>)",
|
|
"decreaseIndentPattern": "^(.*\\*\\/)?\\s*((\\})|(\\)+[;,])|(\\]\\)*[;,])|\\b(else:)|\\b((end(if|for(each)?|while|switch));))",
|
|
// e.g. * ...| or */| or *-----*/|
|
|
"unIndentedLinePattern": {
|
|
"pattern": "^(\\t|[ ])*[ ]\\*[^/]*\\*/\\s*$|^(\\t|[ ])*[ ]\\*/\\s*$|^(\\t|[ ])*\\*([ ]([^\\*]|\\*(?!/))*)?$"
|
|
},
|
|
"indentNextLinePattern": {
|
|
"pattern": "^\\s*(((if|else ?if|while|for|foreach)\\s*\\(.*\\)\\s*)|else\\s*)$"
|
|
}
|
|
},
|
|
"folding": {
|
|
"markers": {
|
|
"start": "^\\s*(#|\/\/)region\\b",
|
|
"end": "^\\s*(#|\/\/)endregion\\b"
|
|
}
|
|
},
|
|
"wordPattern": "(-?\\d*\\.\\d\\w*)|([^\\-\\`\\~\\!\\@\\#\\%\\^\\&\\*\\(\\)\\=\\+\\[\\{\\]\\}\\\\\\|\\;\\:\\'\\\"\\,\\.\\<\\>\\/\\?\\s]+)",
|
|
"onEnterRules": [
|
|
{
|
|
// e.g. /** | */
|
|
"beforeText": "^\\s*\\/\\*\\*(?!\\/)([^\\*]|\\*(?!\\/))*$",
|
|
"afterText": "^\\s*\\*\\/$",
|
|
"action": {
|
|
"indent": "indentOutdent",
|
|
"appendText": " * "
|
|
}
|
|
},
|
|
{
|
|
// e.g. /** ...|
|
|
"beforeText": "^\\s*\\/\\*\\*(?!\\/)([^\\*]|\\*(?!\\/))*$",
|
|
"action": {
|
|
"indent": "none",
|
|
"appendText": " * "
|
|
}
|
|
},
|
|
{
|
|
// e.g. * ...|
|
|
"beforeText": "^(\\t|(\\ \\ ))*\\ \\*(\\ ([^\\*]|\\*(?!\\/))*)?$",
|
|
"action": {
|
|
"indent": "none",
|
|
"appendText": "* ",
|
|
},
|
|
},
|
|
{
|
|
// e.g. */|
|
|
"beforeText": "^(\\t|(\\ \\ ))*\\ \\*\\/\\s*$",
|
|
"action": {
|
|
"indent": "none",
|
|
"removeText": 1
|
|
},
|
|
},
|
|
{
|
|
// e.g. *-----*/|
|
|
"beforeText": "^(\\t|(\\ \\ ))*\\ \\*[^/]*\\*\\/\\s*$",
|
|
"action": {
|
|
"indent": "none",
|
|
"removeText": 1
|
|
}
|
|
},
|
|
{
|
|
// Decrease indentation after single line if/else if/else, for, foreach, or while
|
|
"previousLineText": "^\\s*(((else ?)?if|for(each)?|while)\\s*\\(.*\\)\\s*|else\\s*)$",
|
|
// But make sure line doesn't have braces or is not another if statement
|
|
"beforeText": "^\\s+([^{i\\s]|i(?!f\\b))",
|
|
"action": {
|
|
"indent": "outdent"
|
|
}
|
|
},
|
|
// Add // when pressing enter from inside line comment
|
|
{
|
|
"beforeText": {
|
|
"pattern": "\/\/.*"
|
|
},
|
|
"afterText": {
|
|
"pattern": "^(?!\\s*$).+"
|
|
},
|
|
"action": {
|
|
"indent": "none",
|
|
"appendText": "// "
|
|
}
|
|
},
|
|
]
|
|
}
|