mirror of
https://github.com/microsoft/vscode.git
synced 2026-08-15 10:15:04 +01:00
fix(javascript): sync JSDoc continuation patterns with TypeScript config
Both language configuration files carry a comment stating they should
stay in sync with each other, but two JSDoc-related regex patterns had
drifted in the JavaScript file.
1. `unIndentedLinePattern` — the third alternative that matches an
in-progress JSDoc continuation line (`* comment text`) required a
literal space immediately before the `*`:
Before: `^(\\t|[ ])*[ ]\\*([ ]...`
After: `^(\\t|[ ])*\\*([ ]...`
2. `onEnterRules` — the `beforeText` pattern for the rule that appends
`* ` when pressing Enter inside a JSDoc block had the same extra
space requirement.
The TypeScript configuration does not require this leading space, which
means that JSDoc comments whose `*` continuation lines are indented with
tabs only (e.g. `\t* line`) were recognized correctly in TypeScript
files but not in JavaScript files. After this change both files use the
same permissive pattern.
Also aligns the `wordPattern` character-class order (`@~` → `@~`,
purely cosmetic, no behavioral difference).
Co-authored-by: yogeshwaran-c <yogeshwaran.c@example.com>
Co-authored-by: Dmitriy Vasyura <dmitriv@microsoft.com>
254 lines
4.1 KiB
JSON
254 lines
4.1 KiB
JSON
{
|
|
// Note that this file should stay in sync with 'typescript-language-basics/language-configuration.json'
|
|
"comments": {
|
|
"lineComment": "//",
|
|
"blockComment": [
|
|
"/*",
|
|
"*/"
|
|
]
|
|
},
|
|
"brackets": [
|
|
[
|
|
"${",
|
|
"}"
|
|
],
|
|
[
|
|
"{",
|
|
"}"
|
|
],
|
|
[
|
|
"[",
|
|
"]"
|
|
],
|
|
[
|
|
"(",
|
|
")"
|
|
]
|
|
],
|
|
"autoClosingPairs": [
|
|
{
|
|
"open": "${",
|
|
"close": "}"
|
|
},
|
|
{
|
|
"open": "{",
|
|
"close": "}"
|
|
},
|
|
{
|
|
"open": "[",
|
|
"close": "]"
|
|
},
|
|
{
|
|
"open": "(",
|
|
"close": ")"
|
|
},
|
|
{
|
|
"open": "'",
|
|
"close": "'",
|
|
"notIn": [
|
|
"string",
|
|
"comment"
|
|
]
|
|
},
|
|
{
|
|
"open": "\"",
|
|
"close": "\"",
|
|
"notIn": [
|
|
"string"
|
|
]
|
|
},
|
|
{
|
|
"open": "`",
|
|
"close": "`",
|
|
"notIn": [
|
|
"string",
|
|
"comment"
|
|
]
|
|
},
|
|
{
|
|
"open": "/**",
|
|
"close": " */",
|
|
"notIn": [
|
|
"string"
|
|
]
|
|
}
|
|
],
|
|
"surroundingPairs": [
|
|
[
|
|
"${",
|
|
"}"
|
|
],
|
|
[
|
|
"$",
|
|
""
|
|
],
|
|
[
|
|
"{",
|
|
"}"
|
|
],
|
|
[
|
|
"[",
|
|
"]"
|
|
],
|
|
[
|
|
"(",
|
|
")"
|
|
],
|
|
[
|
|
"'",
|
|
"'"
|
|
],
|
|
[
|
|
"\"",
|
|
"\""
|
|
],
|
|
[
|
|
"`",
|
|
"`"
|
|
],
|
|
[
|
|
"<",
|
|
">"
|
|
]
|
|
],
|
|
"autoCloseBefore": ";:.,=}])>` \n\t",
|
|
"folding": {
|
|
"markers": {
|
|
"start": "^\\s*//\\s*#?region\\b",
|
|
"end": "^\\s*//\\s*#?endregion\\b"
|
|
}
|
|
},
|
|
"wordPattern": {
|
|
"pattern": "(-?\\d*\\.\\d\\w*)|([^\\`\\@\\~\\!\\%\\^\\&\\*\\(\\)\\-\\=\\+\\[\\{\\]\\}\\\\\\|\\;\\:\\'\\\"\\,\\.\\<\\>/\\?\\s]+)",
|
|
},
|
|
"indentationRules": {
|
|
"decreaseIndentPattern": {
|
|
"pattern": "^\\s*[\\}\\]\\)].*$"
|
|
},
|
|
"increaseIndentPattern": {
|
|
"pattern": "^.*(\\{[^}]*|\\([^)]*|\\[[^\\]]*)$"
|
|
},
|
|
// e.g. * ...| or */| or *-----*/|
|
|
"unIndentedLinePattern": {
|
|
"pattern": "^(\\t|[ ])*[ ]\\*[^/]*\\*/\\s*$|^(\\t|[ ])*[ ]\\*/\\s*$|^(\\t|[ ])*\\*([ ]([^\\*]|\\*(?!/))*)?$"
|
|
},
|
|
"indentNextLinePattern": {
|
|
"pattern": "^((.*=>\\s*)|((.*[^\\w]+|\\s*)((if|while|for)\\s*\\(.*\\)\\s*|else\\s*)))$"
|
|
}
|
|
},
|
|
"onEnterRules": [
|
|
{
|
|
// e.g. /** | */
|
|
"beforeText": {
|
|
"pattern": "^\\s*/\\*\\*(?!/)([^\\*]|\\*(?!/))*$"
|
|
},
|
|
"afterText": {
|
|
"pattern": "^\\s*\\*/$"
|
|
},
|
|
"action": {
|
|
"indent": "indentOutdent",
|
|
"appendText": " * "
|
|
}
|
|
},
|
|
{
|
|
// e.g. /** ...|
|
|
"beforeText": {
|
|
"pattern": "^\\s*/\\*\\*(?!/)([^\\*]|\\*(?!/))*$"
|
|
},
|
|
"action": {
|
|
"indent": "none",
|
|
"appendText": " * "
|
|
}
|
|
},
|
|
{
|
|
// e.g. * ...|
|
|
"beforeText": {
|
|
"pattern": "^(\\t|[ ])*\\*([ ]([^\\*]|\\*(?!/))*)?$"
|
|
},
|
|
"previousLineText": {
|
|
"pattern": "(?=^(\\s*(/\\*\\*|\\*)).*)(?=(?!(\\s*\\*/)))"
|
|
},
|
|
"action": {
|
|
"indent": "none",
|
|
"appendText": "* "
|
|
}
|
|
},
|
|
{
|
|
// e.g. */|
|
|
"beforeText": {
|
|
"pattern": "^(\\t|[ ])*[ ]\\*/\\s*$"
|
|
},
|
|
"action": {
|
|
"indent": "none",
|
|
"removeText": 1
|
|
},
|
|
},
|
|
{
|
|
// e.g. *-----*/|
|
|
"beforeText": {
|
|
"pattern": "^(\\t|[ ])*[ ]\\*[^/]*\\*/\\s*$"
|
|
},
|
|
"action": {
|
|
"indent": "none",
|
|
"removeText": 1
|
|
},
|
|
},
|
|
{
|
|
"beforeText": {
|
|
"pattern": "^\\s*(\\bcase\\s.+:|\\bdefault:)$"
|
|
},
|
|
"afterText": {
|
|
"pattern": "^(?!\\s*(\\bcase\\b|\\bdefault\\b))"
|
|
},
|
|
"action": {
|
|
"indent": "indent"
|
|
}
|
|
},
|
|
{
|
|
// Decrease indentation after single line if/else if/else, for, or while
|
|
"previousLineText": "^\\s*(((else ?)?if|for|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"
|
|
}
|
|
},
|
|
// Indent when pressing enter from inside ()
|
|
{
|
|
"beforeText": "^.*\\([^\\)]*$",
|
|
"afterText": "^\\s*\\).*$",
|
|
"action": {
|
|
"indent": "indentOutdent",
|
|
"appendText": "\t",
|
|
}
|
|
},
|
|
// Indent when pressing enter from inside {}
|
|
{
|
|
"beforeText": "^.*\\{[^\\}]*$",
|
|
"afterText": "^\\s*\\}.*$",
|
|
"action": {
|
|
"indent": "indentOutdent",
|
|
"appendText": "\t",
|
|
}
|
|
},
|
|
// Indent when pressing enter from inside []
|
|
{
|
|
"beforeText": "^.*\\[[^\\]]*$",
|
|
"afterText": "^\\s*\\].*$",
|
|
"action": {
|
|
"indent": "indentOutdent",
|
|
"appendText": "\t",
|
|
}
|
|
},
|
|
// Add // when pressing enter from inside line comment
|
|
{
|
|
"beforeText": "^\\s*//|\\s//\\s",
|
|
"afterText": "^(?!\\s*$)",
|
|
"action": {
|
|
"indent": "none",
|
|
"appendText": "// "
|
|
}
|
|
},
|
|
]
|
|
}
|