@reqlan/language 1.5.0 → 1.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (47) hide show
  1. package/README.md +26 -2
  2. package/out/file-path-rewrite.d.ts +8 -1
  3. package/out/file-path-rewrite.js +63 -12
  4. package/out/file-path-rewrite.js.map +1 -1
  5. package/out/index.d.ts +3 -0
  6. package/out/index.js +3 -0
  7. package/out/index.js.map +1 -1
  8. package/out/reqlan-code-action-provider.d.ts +13 -0
  9. package/out/reqlan-code-action-provider.js +59 -1
  10. package/out/reqlan-code-action-provider.js.map +1 -1
  11. package/out/reqlan-comment-rename.d.ts +28 -0
  12. package/out/reqlan-comment-rename.js +113 -0
  13. package/out/reqlan-comment-rename.js.map +1 -0
  14. package/out/reqlan-idea-refactor.d.ts +23 -0
  15. package/out/reqlan-idea-refactor.js +158 -0
  16. package/out/reqlan-idea-refactor.js.map +1 -0
  17. package/out/reqlan-import-bindings.d.ts +9 -1
  18. package/out/reqlan-import-bindings.js +9 -9
  19. package/out/reqlan-import-bindings.js.map +1 -1
  20. package/out/reqlan-module.js +3 -1
  21. package/out/reqlan-module.js.map +1 -1
  22. package/out/reqlan-path-references.js.map +1 -1
  23. package/out/reqlan-path-resolve.d.ts +10 -2
  24. package/out/reqlan-path-resolve.js +25 -14
  25. package/out/reqlan-path-resolve.js.map +1 -1
  26. package/out/reqlan-rename-provider.d.ts +15 -0
  27. package/out/reqlan-rename-provider.js +84 -0
  28. package/out/reqlan-rename-provider.js.map +1 -0
  29. package/out/reqlan-scope.js +2 -0
  30. package/out/reqlan-scope.js.map +1 -1
  31. package/out/reqlan-validator.d.ts +6 -0
  32. package/out/reqlan-validator.js +7 -9
  33. package/out/reqlan-validator.js.map +1 -1
  34. package/package.json +1 -1
  35. package/src/file-path-rewrite.ts +89 -12
  36. package/src/index.ts +10 -0
  37. package/src/reqlan-code-action-provider.ts +73 -1
  38. package/src/reqlan-comment-rename.ts +151 -0
  39. package/src/reqlan-idea-refactor.ts +222 -0
  40. package/src/reqlan-import-bindings.ts +9 -10
  41. package/src/reqlan-module.ts +3 -1
  42. package/src/reqlan-path-references.ts +2 -0
  43. package/src/reqlan-path-resolve.ts +30 -15
  44. package/src/reqlan-rename-provider.ts +124 -0
  45. package/src/reqlan-scope.ts +2 -0
  46. package/src/reqlan-validator.ts +6 -11
  47. package/src/reqlan.langium +5 -1
package/README.md CHANGED
@@ -21,14 +21,38 @@ npm install @reqlan/language
21
21
 
22
22
  ## Links
23
23
 
24
- - [Site](https://tony.is-a.dev/reqlan)
24
+ - [Site](https://reqlan.com)
25
25
  - [Visual Studio Marketplace](https://marketplace.visualstudio.com/items?itemName=reqlan.reqlan-extension)
26
26
  - [Open VSX](https://open-vsx.org/extension/reqlan/reqlan-extension)
27
27
  - [GitHub repository](https://github.com/littletuna4/reqlan)
28
- - [Contact](mailto:reqlan@tony.is-a.dev)
28
+ - [Contact](mailto:reqlan@reqlan.com)
29
29
 
30
30
  ## Changelog
31
31
 
32
+ ### 1.6.0
33
+
34
+ #### Minor Changes
35
+
36
+ - 54a2536: introduce bases, refine config, improvements to summary, site improvements.
37
+
38
+ ### 1.5.3
39
+
40
+ #### Patch Changes
41
+
42
+ - 3e940a2: cicd trigger.
43
+
44
+ ### 1.5.2
45
+
46
+ #### Patch Changes
47
+
48
+ - 9586a97: package publish trigger
49
+
50
+ ### 1.5.1
51
+
52
+ #### Patch Changes
53
+
54
+ - b905cd0: update npm deployement.
55
+
32
56
  ### 1.5.0
33
57
 
34
58
  #### Minor Changes
@@ -1,8 +1,10 @@
1
1
  /**
2
- * Recompute relative file paths when a referencing file moves to a new directory.
2
+ * Recompute relative file paths when a referencing file moves to a new directory,
3
+ * or when a referenced target file moves and inbound paths must be updated.
3
4
  * rq:["../../../reqlan rq/extension/configuration.rq".configuration_import_roots]
4
5
  * rq:["../../../reqlan rq/language/imports.rq".configuration_import_root_alias]
5
6
  * rq:["../../../reqlan rq/extension/features-mutation-hooks.rq".move_file]
7
+ * rq:["../../../reqlan rq/extension/refactor_support.rq".refactor_file_moves]
6
8
  */
7
9
  import { URI } from 'langium';
8
10
  import type { Range } from 'vscode-languageserver';
@@ -21,5 +23,10 @@ export interface PathRewriteOptions {
21
23
  }
22
24
  export declare function relativePathWithoutExtension(dirname: string, targetUri: URI): string;
23
25
  export declare function rewriteRelativePath(path: string, oldFileUri: URI, newFileUri: URI, options?: PathRewriteOptions): string | undefined;
26
+ /**
27
+ * When the *target* of a path moves, recompute the path as seen from the referencing file.
28
+ */
29
+ export declare function rewritePathToMovedTarget(path: string, referencingFileUri: URI, oldTargetUri: URI, newTargetUri: URI, options?: PathRewriteOptions): string | undefined;
24
30
  export declare function rewriteQuotedPath(path: string, oldFileUri: URI, newFileUri: URI, options?: PathRewriteOptions): string | undefined;
25
31
  export declare function buildPathRewriteEdits(references: PathReference[], oldFileUri: URI, newFileUri: URI, formatReplacement: (path: string, newPath: string, range: Range) => string | undefined, options?: PathRewriteOptions): PathRewriteEdit[];
32
+ export declare function buildInboundPathRewriteEdits(references: PathReference[], referencingFileUri: URI, oldTargetUri: URI, newTargetUri: URI, formatReplacement: (path: string, newPath: string, range: Range) => string | undefined, options?: PathRewriteOptions): PathRewriteEdit[];
@@ -1,22 +1,36 @@
1
1
  /**
2
- * Recompute relative file paths when a referencing file moves to a new directory.
2
+ * Recompute relative file paths when a referencing file moves to a new directory,
3
+ * or when a referenced target file moves and inbound paths must be updated.
3
4
  * rq:["../../../reqlan rq/extension/configuration.rq".configuration_import_roots]
4
5
  * rq:["../../../reqlan rq/language/imports.rq".configuration_import_root_alias]
5
6
  * rq:["../../../reqlan rq/extension/features-mutation-hooks.rq".move_file]
7
+ * rq:["../../../reqlan rq/extension/refactor_support.rq".refactor_file_moves]
6
8
  */
7
9
  import { UriUtils } from 'langium';
10
+ import { importPathWithImplicitExtension } from './reqlan-imports.js';
8
11
  import { DEFAULT_IMPORT_ROOT_ALIAS, matchImportRootMapping } from './reqlan-path-resolve.js';
9
12
  function rewriteImportRoots(options) {
10
13
  return options?.importRoots ?? [{ alias: DEFAULT_IMPORT_ROOT_ALIAS }];
11
14
  }
15
+ function ensureDotRelative(path) {
16
+ return path.startsWith('.') ? path : `./${path}`;
17
+ }
18
+ function uriWithoutExtension(uri) {
19
+ const uriString = uri.toString();
20
+ const ext = UriUtils.extname(uri);
21
+ return ext ? uriString.slice(0, uriString.length - ext.length) : uriString;
22
+ }
23
+ function urisReferToSameTarget(left, right) {
24
+ return left.toString() === right.toString()
25
+ || uriWithoutExtension(left) === uriWithoutExtension(right);
26
+ }
27
+ function pathHadExplicitExtension(path) {
28
+ const basename = path.slice(path.lastIndexOf('/') + 1);
29
+ return basename.includes('.', 1);
30
+ }
12
31
  export function relativePathWithoutExtension(dirname, targetUri) {
13
- const uriString = targetUri.toString();
14
- const uriWithoutExt = uriString.slice(0, uriString.length - UriUtils.extname(targetUri).length);
15
- let relativePath = UriUtils.relative(dirname, uriWithoutExt);
16
- if (!relativePath.startsWith('.')) {
17
- relativePath = `./${relativePath}`;
18
- }
19
- return relativePath;
32
+ let relativePath = UriUtils.relative(dirname, uriWithoutExtension(targetUri));
33
+ return ensureDotRelative(relativePath);
20
34
  }
21
35
  export function rewriteRelativePath(path, oldFileUri, newFileUri, options) {
22
36
  if (!path || path.startsWith('file://')) {
@@ -28,12 +42,34 @@ export function rewriteRelativePath(path, oldFileUri, newFileUri, options) {
28
42
  const oldDir = UriUtils.dirname(oldFileUri);
29
43
  const newDir = UriUtils.dirname(newFileUri);
30
44
  const resolved = UriUtils.resolvePath(oldDir, path);
31
- let relativePath = UriUtils.relative(newDir, resolved);
32
- if (!relativePath.startsWith('.')) {
33
- relativePath = `./${relativePath}`;
34
- }
45
+ const relativePath = ensureDotRelative(UriUtils.relative(newDir, resolved));
35
46
  return relativePath === path ? undefined : relativePath;
36
47
  }
48
+ /**
49
+ * When the *target* of a path moves, recompute the path as seen from the referencing file.
50
+ */
51
+ export function rewritePathToMovedTarget(path, referencingFileUri, oldTargetUri, newTargetUri, options) {
52
+ if (!path || path.startsWith('file://')) {
53
+ return undefined;
54
+ }
55
+ if (matchImportRootMapping(path, rewriteImportRoots(options)) !== undefined) {
56
+ return undefined;
57
+ }
58
+ const refDir = UriUtils.dirname(referencingFileUri);
59
+ const candidates = [UriUtils.resolvePath(refDir, path)];
60
+ const withExt = importPathWithImplicitExtension(path);
61
+ if (withExt) {
62
+ candidates.push(UriUtils.resolvePath(refDir, withExt));
63
+ }
64
+ if (!candidates.some(candidate => urisReferToSameTarget(candidate, oldTargetUri))) {
65
+ return undefined;
66
+ }
67
+ const keepExtension = pathHadExplicitExtension(path);
68
+ const newRelative = keepExtension
69
+ ? ensureDotRelative(UriUtils.relative(refDir, newTargetUri))
70
+ : relativePathWithoutExtension(refDir.toString(), newTargetUri);
71
+ return newRelative === path ? undefined : newRelative;
72
+ }
37
73
  export function rewriteQuotedPath(path, oldFileUri, newFileUri, options) {
38
74
  const rewritten = rewriteRelativePath(path, oldFileUri, newFileUri, options);
39
75
  return rewritten === undefined ? undefined : JSON.stringify(rewritten);
@@ -53,4 +89,19 @@ export function buildPathRewriteEdits(references, oldFileUri, newFileUri, format
53
89
  }
54
90
  return edits;
55
91
  }
92
+ export function buildInboundPathRewriteEdits(references, referencingFileUri, oldTargetUri, newTargetUri, formatReplacement, options) {
93
+ const edits = [];
94
+ for (const reference of references) {
95
+ const newPath = rewritePathToMovedTarget(reference.path, referencingFileUri, oldTargetUri, newTargetUri, options);
96
+ if (newPath === undefined) {
97
+ continue;
98
+ }
99
+ const newText = formatReplacement(reference.path, newPath, reference.range);
100
+ if (newText === undefined) {
101
+ continue;
102
+ }
103
+ edits.push({ range: reference.range, newText });
104
+ }
105
+ return edits;
106
+ }
56
107
  //# sourceMappingURL=file-path-rewrite.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"file-path-rewrite.js","sourceRoot":"","sources":["../src/file-path-rewrite.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"file-path-rewrite.js","sourceRoot":"","sources":["../src/file-path-rewrite.ts"],"names":[],"mappings":"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"}
package/out/index.d.ts CHANGED
@@ -6,6 +6,9 @@ export * from './reqlan-file-references.js';
6
6
  export * from './reqlan-embedded-file-references.js';
7
7
  export * from './file-path-rewrite.js';
8
8
  export * from './reqlan-path-references.js';
9
+ export * from './reqlan-comment-rename.js';
10
+ export { ReqlanRenameProvider } from './reqlan-rename-provider.js';
11
+ export { ideaDeclarationText, isRefactorIdeaDeclaration, planIdeaDeleteEdits, planIdeaMoveEdits, type DocumentTextEdits, type RefactorIdeaDeclaration } from './reqlan-idea-refactor.js';
9
12
  export * from './reqlan-path-resolve.js';
10
13
  export * from './reqlan-imports.js';
11
14
  export * from './reqlan-quoted-strings.js';
package/out/index.js CHANGED
@@ -6,6 +6,9 @@ export * from './reqlan-file-references.js';
6
6
  export * from './reqlan-embedded-file-references.js';
7
7
  export * from './file-path-rewrite.js';
8
8
  export * from './reqlan-path-references.js';
9
+ export * from './reqlan-comment-rename.js';
10
+ export { ReqlanRenameProvider } from './reqlan-rename-provider.js';
11
+ export { ideaDeclarationText, isRefactorIdeaDeclaration, planIdeaDeleteEdits, planIdeaMoveEdits } from './reqlan-idea-refactor.js';
9
12
  export * from './reqlan-path-resolve.js';
10
13
  export * from './reqlan-imports.js';
11
14
  export * from './reqlan-quoted-strings.js';
package/out/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAC;AACnC,cAAc,uBAAuB,CAAC;AACtC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,0BAA0B,CAAC;AACzC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,sCAAsC,CAAC;AACrD,cAAc,wBAAwB,CAAC;AACvC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,0BAA0B,CAAC;AACzC,cAAc,qBAAqB,CAAC;AACpC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,wBAAwB,CAAC;AACvC,cAAc,mCAAmC,CAAC;AAClD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,iCAAiC,CAAC;AAChD,cAAc,6BAA6B,CAAC;AAC5C,cAAc,kCAAkC,CAAC;AACjD,cAAc,iCAAiC,CAAC;AAChD,cAAc,mCAAmC,CAAC;AAClD,cAAc,0BAA0B,CAAC;AACzC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,oCAAoC,CAAC;AACnD,cAAc,0BAA0B,CAAC;AACzC,cAAc,yCAAyC,CAAC;AACxD,cAAc,iCAAiC,CAAC;AAChD,cAAc,gCAAgC,CAAC;AAC/C,cAAc,iCAAiC,CAAC;AAChD,OAAO,EAAE,uBAAuB,EAAE,MAAM,iCAAiC,CAAC;AAC1E,OAAO,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAC;AACxE,OAAO,EAAE,wBAAwB,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AACrF,cAAc,oBAAoB,CAAC;AACnC,cAAc,wBAAwB,CAAC;AACvC,cAAc,uBAAuB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAC;AACnC,cAAc,uBAAuB,CAAC;AACtC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,0BAA0B,CAAC;AACzC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,sCAAsC,CAAC;AACrD,cAAc,wBAAwB,CAAC;AACvC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,4BAA4B,CAAC;AAC3C,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AACnE,OAAO,EACH,mBAAmB,EACnB,yBAAyB,EACzB,mBAAmB,EACnB,iBAAiB,EAGpB,MAAM,2BAA2B,CAAC;AACnC,cAAc,0BAA0B,CAAC;AACzC,cAAc,qBAAqB,CAAC;AACpC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,wBAAwB,CAAC;AACvC,cAAc,mCAAmC,CAAC;AAClD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,iCAAiC,CAAC;AAChD,cAAc,6BAA6B,CAAC;AAC5C,cAAc,kCAAkC,CAAC;AACjD,cAAc,iCAAiC,CAAC;AAChD,cAAc,mCAAmC,CAAC;AAClD,cAAc,0BAA0B,CAAC;AACzC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,oCAAoC,CAAC;AACnD,cAAc,0BAA0B,CAAC;AACzC,cAAc,yCAAyC,CAAC;AACxD,cAAc,iCAAiC,CAAC;AAChD,cAAc,gCAAgC,CAAC;AAC/C,cAAc,iCAAiC,CAAC;AAChD,OAAO,EAAE,uBAAuB,EAAE,MAAM,iCAAiC,CAAC;AAC1E,OAAO,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAC;AACxE,OAAO,EAAE,wBAAwB,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AACrF,cAAc,oBAAoB,CAAC;AACnC,cAAc,wBAAwB,CAAC;AACvC,cAAc,uBAAuB,CAAC"}
@@ -12,6 +12,14 @@ import type { ReqlanServices } from './reqlan-module.js';
12
12
  export declare const REQLAN_IMPORT_ERROR_SEARCH_COMMAND = "reqlan.importError.search";
13
13
  export declare const REQLAN_IMPORT_ERROR_CREATE_COMMAND = "reqlan.importError.createFile";
14
14
  export declare const REQLAN_SEARCH_REFERENCE_COMMAND = "reqlan.searchReference";
15
+ export declare const REQLAN_REFACTOR_DELETE_IDEA_COMMAND = "reqlan.refactor.deleteIdea";
16
+ export declare const REQLAN_REFACTOR_MOVE_IDEA_COMMAND = "reqlan.refactor.moveIdea";
17
+ /** Args for idea move/delete refactor commands. */
18
+ export interface IdeaRefactorCommandArgs {
19
+ documentUri: string;
20
+ ideaName: string;
21
+ range: Diagnostic['range'];
22
+ }
15
23
  export interface ImportErrorCommandArgs {
16
24
  documentUri: string;
17
25
  refText: string;
@@ -36,6 +44,11 @@ export declare class ReqlanCodeActionProvider implements CodeActionProvider {
36
44
  private readonly indexManager;
37
45
  constructor(services: ReqlanServices);
38
46
  getCodeActions(document: LangiumDocument, params: CodeActionParams): Array<Command | CodeActionLike>;
47
+ /**
48
+ * rq:["../../../reqlan rq/extension/refactor_support.rq".refactor_symbol_move]
49
+ * rq:["../../../reqlan rq/extension/refactor_support.rq".refactor_symbol_delete]
50
+ */
51
+ private createIdeaRefactorActions;
39
52
  /**
40
53
  * When the cursor/selection is inside a [reference], or on prose that can
41
54
  * become one, offer a search action that opens the idea-search webview.
@@ -1,12 +1,15 @@
1
- import { DocumentValidator, URI as UriCtor, UriUtils } from 'langium';
1
+ import { AstUtils, DocumentValidator, URI as UriCtor, UriUtils } from 'langium';
2
2
  import { CodeActionKind } from 'vscode-languageserver';
3
3
  import { isIdea, isIdeaSet, isModel, isOneLinerIdea } from './generated/ast.js';
4
4
  import { buildFromImportEdit, relativeRqImportPath } from './reqlan-import-edits.js';
5
+ import { isRefactorIdeaDeclaration } from './reqlan-idea-refactor.js';
5
6
  import { sharedNameCatalog } from './reqlan-name-catalog.js';
6
7
  import { findReferenceSearchSite, buildContextForRange } from './reqlan-reference-search-site.js';
7
8
  export const REQLAN_IMPORT_ERROR_SEARCH_COMMAND = 'reqlan.importError.search';
8
9
  export const REQLAN_IMPORT_ERROR_CREATE_COMMAND = 'reqlan.importError.createFile';
9
10
  export const REQLAN_SEARCH_REFERENCE_COMMAND = 'reqlan.searchReference';
11
+ export const REQLAN_REFACTOR_DELETE_IDEA_COMMAND = 'reqlan.refactor.deleteIdea';
12
+ export const REQLAN_REFACTOR_MOVE_IDEA_COMMAND = 'reqlan.refactor.moveIdea';
10
13
  const MAX_IMPORT_SUGGESTIONS = 5;
11
14
  export class ReqlanCodeActionProvider {
12
15
  constructor(services) {
@@ -22,8 +25,44 @@ export class ReqlanCodeActionProvider {
22
25
  if (searchFromCursor) {
23
26
  actions.push(searchFromCursor);
24
27
  }
28
+ actions.push(...this.createIdeaRefactorActions(document, params));
25
29
  return actions;
26
30
  }
31
+ /**
32
+ * rq:["../../../reqlan rq/extension/refactor_support.rq".refactor_symbol_move]
33
+ * rq:["../../../reqlan rq/extension/refactor_support.rq".refactor_symbol_delete]
34
+ */
35
+ createIdeaRefactorActions(document, params) {
36
+ const idea = findIdeaDeclarationAtRange(document, params.range);
37
+ if (!idea?.name || !idea.$cstNode) {
38
+ return [];
39
+ }
40
+ const args = {
41
+ documentUri: document.textDocument.uri,
42
+ ideaName: idea.name,
43
+ range: idea.$cstNode.range
44
+ };
45
+ return [
46
+ {
47
+ title: `Delete idea '${idea.name}' and update references`,
48
+ kind: CodeActionKind.Refactor,
49
+ command: {
50
+ title: `Delete idea '${idea.name}'`,
51
+ command: REQLAN_REFACTOR_DELETE_IDEA_COMMAND,
52
+ arguments: [args]
53
+ }
54
+ },
55
+ {
56
+ title: `Move idea '${idea.name}' to another file…`,
57
+ kind: CodeActionKind.Refactor,
58
+ command: {
59
+ title: `Move idea '${idea.name}'`,
60
+ command: REQLAN_REFACTOR_MOVE_IDEA_COMMAND,
61
+ arguments: [args]
62
+ }
63
+ }
64
+ ];
65
+ }
27
66
  /**
28
67
  * When the cursor/selection is inside a [reference], or on prose that can
29
68
  * become one, offer a search action that opens the idea-search webview.
@@ -266,4 +305,23 @@ export function collectImportErrorCodeActions(provider, document) {
266
305
  export function isModelDocument(document) {
267
306
  return isModel(document.parseResult.value);
268
307
  }
308
+ function findIdeaDeclarationAtRange(document, range) {
309
+ const offset = document.textDocument.offsetAt(range.start);
310
+ for (const node of AstUtils.streamAst(document.parseResult.value)) {
311
+ if (!isRefactorIdeaDeclaration(node) || !node.$cstNode) {
312
+ continue;
313
+ }
314
+ const start = document.textDocument.offsetAt(node.$cstNode.range.start);
315
+ const end = document.textDocument.offsetAt(node.$cstNode.range.end);
316
+ if (offset >= start && offset <= end) {
317
+ return node;
318
+ }
319
+ // Also match when the selection is exactly on the name token line.
320
+ if (range.start.line === node.$cstNode.range.start.line
321
+ && range.start.character <= (node.name?.length ?? 0) + 1) {
322
+ return node;
323
+ }
324
+ }
325
+ return undefined;
326
+ }
269
327
  //# sourceMappingURL=reqlan-code-action-provider.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"reqlan-code-action-provider.js","sourceRoot":"","sources":["../src/reqlan-code-action-provider.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"reqlan-code-action-provider.js","sourceRoot":"","sources":["../src/reqlan-code-action-provider.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,28 @@
1
+ /**
2
+ * Build text edits that rename idea tokens inside `rq:[...]` comment references.
3
+ * rq:["../../../reqlan rq/extension/refactor_support.rq".refactor_symbol_rename]
4
+ */
5
+ import type { Range } from 'vscode-languageserver';
6
+ import { type EmbeddedCommentReference } from './reqlan-comment-resolver.js';
7
+ import type { PathRewriteEdit } from './file-path-rewrite.js';
8
+ export interface CommentIdeaRenameMatch {
9
+ range: Range;
10
+ path?: string;
11
+ idea: string;
12
+ }
13
+ /**
14
+ * Locate idea-name ranges inside comment references that should rename with `oldName`.
15
+ * When `targetPath` is set, only qualified refs whose path equals that value (or pathless
16
+ * local refs when `includePathless` is true) are included.
17
+ */
18
+ export declare function findCommentIdeaRenameMatches(text: string, oldName: string, options?: {
19
+ targetPath?: string;
20
+ includePathless?: boolean;
21
+ lineOffset?: number;
22
+ }): CommentIdeaRenameMatch[];
23
+ export declare function findCommentIdeaRenameEdits(text: string, oldName: string, newName: string, options?: {
24
+ targetPath?: string;
25
+ includePathless?: boolean;
26
+ lineOffset?: number;
27
+ }): PathRewriteEdit[];
28
+ export declare function ideaTokenRangeInCommentReference(text: string, reference: EmbeddedCommentReference): Range | undefined;
@@ -0,0 +1,113 @@
1
+ import { findCommentReferencesInText } from './reqlan-comment-resolver.js';
2
+ import { parseReqlanQuotedString, REQLAN_QUOTED_STRING_CAPTURE } from './reqlan-quoted-strings.js';
3
+ const QUALIFIED_TARGET_PATTERN = new RegExp(`^(${REQLAN_QUOTED_STRING_CAPTURE})\\s*\\.\\s*([_a-zA-Z][\\w-]*)(?:\\s*\\.\\s*([_a-zA-Z][\\w-]*))?$`);
4
+ /**
5
+ * Locate idea-name ranges inside comment references that should rename with `oldName`.
6
+ * When `targetPath` is set, only qualified refs whose path equals that value (or pathless
7
+ * local refs when `includePathless` is true) are included.
8
+ */
9
+ export function findCommentIdeaRenameMatches(text, oldName, options) {
10
+ const matches = [];
11
+ const includePathless = options?.includePathless ?? true;
12
+ for (const reference of findCommentReferencesInText(text, options?.lineOffset ?? 0)) {
13
+ if (reference.idea !== oldName) {
14
+ continue;
15
+ }
16
+ if (reference.path !== undefined) {
17
+ if (options?.targetPath !== undefined && !pathsMatch(reference.path, options.targetPath)) {
18
+ continue;
19
+ }
20
+ }
21
+ else if (!includePathless) {
22
+ continue;
23
+ }
24
+ const ideaRange = ideaTokenRangeInCommentReference(text, reference);
25
+ if (!ideaRange) {
26
+ continue;
27
+ }
28
+ matches.push({
29
+ range: ideaRange,
30
+ path: reference.path,
31
+ idea: reference.idea
32
+ });
33
+ }
34
+ return matches;
35
+ }
36
+ export function findCommentIdeaRenameEdits(text, oldName, newName, options) {
37
+ if (oldName === newName) {
38
+ return [];
39
+ }
40
+ return findCommentIdeaRenameMatches(text, oldName, options).map(match => ({
41
+ range: match.range,
42
+ newText: newName
43
+ }));
44
+ }
45
+ export function ideaTokenRangeInCommentReference(text, reference) {
46
+ const startOffset = offsetAt(text, reference.range.start);
47
+ const endOffset = offsetAt(text, reference.range.end);
48
+ const segment = text.slice(startOffset, endOffset);
49
+ const bracket = /rq:\s*\[([^\]]+)\]/.exec(segment);
50
+ if (!bracket || bracket.index === undefined) {
51
+ return undefined;
52
+ }
53
+ const target = bracket[1];
54
+ const bracketContentStart = startOffset + bracket.index + bracket[0].indexOf('[') + 1;
55
+ const qualified = QUALIFIED_TARGET_PATTERN.exec(target.trim());
56
+ if (qualified) {
57
+ const ideaToken = qualified[3] ?? qualified[2];
58
+ if (ideaToken !== reference.idea) {
59
+ return undefined;
60
+ }
61
+ const ideaIndexInTarget = target.lastIndexOf(ideaToken);
62
+ if (ideaIndexInTarget < 0) {
63
+ return undefined;
64
+ }
65
+ const absolute = bracketContentStart + ideaIndexInTarget;
66
+ return {
67
+ start: offsetToPosition(text, absolute),
68
+ end: offsetToPosition(text, absolute + ideaToken.length)
69
+ };
70
+ }
71
+ const ideaIndex = target.indexOf(reference.idea);
72
+ if (ideaIndex < 0) {
73
+ return undefined;
74
+ }
75
+ const absolute = bracketContentStart + ideaIndex;
76
+ return {
77
+ start: offsetToPosition(text, absolute),
78
+ end: offsetToPosition(text, absolute + reference.idea.length)
79
+ };
80
+ }
81
+ function pathsMatch(left, right) {
82
+ const normalize = (path) => {
83
+ try {
84
+ return parseReqlanQuotedString(JSON.stringify(path)).replace(/\\/g, '/');
85
+ }
86
+ catch {
87
+ return path.replace(/\\/g, '/');
88
+ }
89
+ };
90
+ const a = normalize(left);
91
+ const b = normalize(right);
92
+ return a === b
93
+ || a.replace(/\.rq$/i, '') === b.replace(/\.rq$/i, '')
94
+ || a.endsWith(b)
95
+ || b.endsWith(a);
96
+ }
97
+ function offsetAt(text, position) {
98
+ const lines = text.split(/\r?\n/);
99
+ let offset = 0;
100
+ for (let index = 0; index < position.line; index++) {
101
+ offset += lines[index].length + 1;
102
+ }
103
+ return offset + position.character;
104
+ }
105
+ function offsetToPosition(text, offset) {
106
+ const before = text.slice(0, offset);
107
+ const lines = before.split(/\r?\n/);
108
+ return {
109
+ line: lines.length - 1,
110
+ character: lines[lines.length - 1].length
111
+ };
112
+ }
113
+ //# sourceMappingURL=reqlan-comment-rename.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reqlan-comment-rename.js","sourceRoot":"","sources":["../src/reqlan-comment-rename.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ /**
2
+ * Plan workspace edits for moving or deleting idea declarations and their references.
3
+ * rq:["../../../reqlan rq/extension/refactor_support.rq".refactor_symbol_move]
4
+ * rq:["../../../reqlan rq/extension/refactor_support.rq".refactor_symbol_delete]
5
+ * rq:["../../../reqlan rq/extension/refactor_support.rq".refactor_changes]
6
+ */
7
+ import type { AstNode, LangiumDocument, ReferenceDescription } from 'langium';
8
+ import type { TextEdit } from 'vscode-languageserver';
9
+ import { type Idea, type OneLinerIdea } from './generated/ast.js';
10
+ export type RefactorIdeaDeclaration = Idea | OneLinerIdea;
11
+ export interface DocumentTextEdits {
12
+ uri: string;
13
+ edits: TextEdit[];
14
+ }
15
+ export declare function isRefactorIdeaDeclaration(node: AstNode): node is RefactorIdeaDeclaration;
16
+ export declare function ideaDeclarationText(document: LangiumDocument, idea: RefactorIdeaDeclaration): string | undefined;
17
+ export declare function planIdeaDeleteEdits(idea: RefactorIdeaDeclaration, references: readonly ReferenceDescription[], documentsText?: Map<string, string>): DocumentTextEdits[];
18
+ export declare function planIdeaMoveEdits(input: {
19
+ idea: RefactorIdeaDeclaration;
20
+ sourceDocument: LangiumDocument;
21
+ destinationDocument: LangiumDocument;
22
+ references: readonly ReferenceDescription[];
23
+ }): DocumentTextEdits[];