diff --git a/src/lsp-server.spec.ts b/src/lsp-server.spec.ts index f4627fd8..0bbf65a4 100644 --- a/src/lsp-server.spec.ts +++ b/src/lsp-server.spec.ts @@ -2385,12 +2385,14 @@ describe('completions without client snippet support', () => { }); describe('fileOperations', () => { - it('willRenameFiles', async () => { + it('willRenameFiles - rename file', async () => { + // TODO: This test depends on ensureConfigurationForDocument being executed first (even for a different file). const edit = await server.willRenameFiles({ files: [{ oldUri: uri('module1.ts'), newUri: uri('new_module1_name.ts') }], }); expect(edit.changes).toBeDefined(); expect(Object.keys(edit.changes!)).toHaveLength(1); + // module2 imports from renamed file expect(edit.changes![uri('module2.ts')]).toEqual([ { range: { @@ -2401,6 +2403,25 @@ describe('fileOperations', () => { }, ]); }); + + it('willRenameFiles - rename directory', async () => { + // TODO: This test depends on ensureConfigurationForDocument being executed (even for a different file). + const edit = await server.willRenameFiles({ + files: [{ oldUri: uri('rename1'), newUri: uri('rename2') }], + }); + expect(edit.changes).toBeDefined(); + expect(Object.keys(edit.changes!)).toHaveLength(1); + // module3 imports from renamed directory + expect(edit.changes![uri('module3.ts')]).toEqual([ + { + range: { + start:{ line: 0, character: 31 }, + end: { line: 0, character: 44 }, + }, + newText:'./rename2/var', + }, + ]); + }); }); describe('linked editing', () => { diff --git a/src/lsp-server.ts b/src/lsp-server.ts index 5b8cd394..7b43094d 100644 --- a/src/lsp-server.ts +++ b/src/lsp-server.ts @@ -269,10 +269,22 @@ export class LspServer { workspace: { fileOperations: { willRename: { - filters: [{ - scheme: 'file', - pattern: { glob: '**/*.{ts,js,jsx,tsx,mjs,mts,cjs,cts}', matches: 'file' }, - }], + filters: [ + { + scheme: 'file', + pattern: { + glob: '**/*.{ts,js,jsx,tsx,mjs,mts,cjs,cts}', + matches: 'file', + }, + }, + { + scheme: 'file', + pattern: { + glob: '**', + matches: 'folder', + }, + }, + ], }, }, }, diff --git a/test-data/module3.ts b/test-data/module3.ts new file mode 100644 index 00000000..605a6af5 --- /dev/null +++ b/test-data/module3.ts @@ -0,0 +1,3 @@ +import { fileInRenamed } from './rename1/var'; + +export { fileInRenamed }; diff --git a/test-data/rename1/var.ts b/test-data/rename1/var.ts new file mode 100644 index 00000000..13817aa2 --- /dev/null +++ b/test-data/rename1/var.ts @@ -0,0 +1 @@ +export const fileInRenamed = true; pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy