diff --git a/src/features/Folding.ts b/src/features/Folding.ts index f1478dc68c..501e9df186 100644 --- a/src/features/Folding.ts +++ b/src/features/Folding.ts @@ -354,7 +354,7 @@ export class FoldingProvider implements vscode.FoldingRangeProvider { ): ILineNumberRangeList { const result = []; - const emptyLine = /^[\s]+$/; + const emptyLine = /^\s*$/; let startLine: number = -1; let nextLine: number = -1; @@ -421,9 +421,9 @@ export class FoldingProvider implements vscode.FoldingRangeProvider { ): ITokenList { const result = []; - const emptyLine = /^[\s]+$/; - const startRegionText = /^#\s*region\b/; - const endRegionText = /^#\s*endregion\b/; + const emptyLine = /^\s*$/; + const startRegionText = /^#region\b/i; + const endRegionText = /^#endregion\b/i; tokens.forEach((token) => { if (token.scopes.indexOf("punctuation.definition.comment.powershell") !== -1) { diff --git a/test/features/folding.test.ts b/test/features/folding.test.ts index 1f9ab98b4a..e8c81cdfc6 100644 --- a/test/features/folding.test.ts +++ b/test/features/folding.test.ts @@ -38,16 +38,18 @@ suite("Features", () => { suite("For a single document", async () => { const expectedFoldingRegions = [ - { start: 1, end: 6, kind: 1 }, - { start: 7, end: 51, kind: 3 }, - { start: 8, end: 13, kind: 1 }, - { start: 14, end: 17, kind: 3 }, - { start: 19, end: 22, kind: 3 }, - { start: 26, end: 28, kind: 1 }, - { start: 30, end: 40, kind: 3 }, - { start: 32, end: 36, kind: 3 }, - { start: 42, end: 44, kind: 3 }, - { start: 47, end: 50, kind: 3 }, + { start: 0, end: 4, kind: 3 }, + { start: 1, end: 3, kind: 1 }, + { start: 10, end: 15, kind: 1 }, + { start: 16, end: 60, kind: 3 }, + { start: 17, end: 22, kind: 1 }, + { start: 23, end: 26, kind: 3 }, + { start: 28, end: 31, kind: 3 }, + { start: 35, end: 37, kind: 1 }, + { start: 39, end: 49, kind: 3 }, + { start: 41, end: 45, kind: 3 }, + { start: 51, end: 53, kind: 3 }, + { start: 56, end: 59, kind: 3 }, ]; test("Can detect all of the foldable regions in a document with CRLF line endings", async () => { diff --git a/test/fixtures/folding-crlf.ps1 b/test/fixtures/folding-crlf.ps1 index e9b05534ee..1fe9358333 100644 --- a/test/fixtures/folding-crlf.ps1 +++ b/test/fixtures/folding-crlf.ps1 @@ -1,3 +1,12 @@ +#RegIon This should fold +<# +Nested different comment types. This should fold +#> +#EnDReGion + +# region This should not fold due to whitespace +$shouldFold = $false +# endRegion function short-func-not-fold {}; <# .SYNOPSIS @@ -30,7 +39,7 @@ double quoted herestrings should also fold #region This fools the indentation folding. Write-Host "Hello" - # region Nested regions should be foldable + #region Nested regions should be foldable Write-Host "Hello" # comment1 Write-Host "Hello" @@ -38,7 +47,7 @@ double quoted herestrings should also fold Write-Host "Hello" # comment2 Write-Host "Hello" - # endregion + #endregion $c = { Write-Host "Script blocks should be foldable" diff --git a/test/fixtures/folding-lf.ps1 b/test/fixtures/folding-lf.ps1 index e9b05534ee..1fe9358333 100644 --- a/test/fixtures/folding-lf.ps1 +++ b/test/fixtures/folding-lf.ps1 @@ -1,3 +1,12 @@ +#RegIon This should fold +<# +Nested different comment types. This should fold +#> +#EnDReGion + +# region This should not fold due to whitespace +$shouldFold = $false +# endRegion function short-func-not-fold {}; <# .SYNOPSIS @@ -30,7 +39,7 @@ double quoted herestrings should also fold #region This fools the indentation folding. Write-Host "Hello" - # region Nested regions should be foldable + #region Nested regions should be foldable Write-Host "Hello" # comment1 Write-Host "Hello" @@ -38,7 +47,7 @@ double quoted herestrings should also fold Write-Host "Hello" # comment2 Write-Host "Hello" - # endregion + #endregion $c = { Write-Host "Script blocks should be foldable"