@reqlan/language 1.5.3 → 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.
- package/README.md +8 -2
- package/out/file-path-rewrite.d.ts +8 -1
- package/out/file-path-rewrite.js +63 -12
- package/out/file-path-rewrite.js.map +1 -1
- package/out/index.d.ts +3 -0
- package/out/index.js +3 -0
- package/out/index.js.map +1 -1
- package/out/reqlan-code-action-provider.d.ts +13 -0
- package/out/reqlan-code-action-provider.js +59 -1
- package/out/reqlan-code-action-provider.js.map +1 -1
- package/out/reqlan-comment-rename.d.ts +28 -0
- package/out/reqlan-comment-rename.js +113 -0
- package/out/reqlan-comment-rename.js.map +1 -0
- package/out/reqlan-idea-refactor.d.ts +23 -0
- package/out/reqlan-idea-refactor.js +158 -0
- package/out/reqlan-idea-refactor.js.map +1 -0
- package/out/reqlan-import-bindings.d.ts +9 -1
- package/out/reqlan-import-bindings.js +9 -9
- package/out/reqlan-import-bindings.js.map +1 -1
- package/out/reqlan-module.js +3 -1
- package/out/reqlan-module.js.map +1 -1
- package/out/reqlan-path-references.js.map +1 -1
- package/out/reqlan-path-resolve.d.ts +10 -2
- package/out/reqlan-path-resolve.js +25 -14
- package/out/reqlan-path-resolve.js.map +1 -1
- package/out/reqlan-rename-provider.d.ts +15 -0
- package/out/reqlan-rename-provider.js +84 -0
- package/out/reqlan-rename-provider.js.map +1 -0
- package/out/reqlan-scope.js +2 -0
- package/out/reqlan-scope.js.map +1 -1
- package/out/reqlan-validator.d.ts +6 -0
- package/out/reqlan-validator.js +7 -9
- package/out/reqlan-validator.js.map +1 -1
- package/package.json +1 -1
- package/src/file-path-rewrite.ts +89 -12
- package/src/index.ts +10 -0
- package/src/reqlan-code-action-provider.ts +73 -1
- package/src/reqlan-comment-rename.ts +151 -0
- package/src/reqlan-idea-refactor.ts +222 -0
- package/src/reqlan-import-bindings.ts +9 -10
- package/src/reqlan-module.ts +3 -1
- package/src/reqlan-path-references.ts +2 -0
- package/src/reqlan-path-resolve.ts +30 -15
- package/src/reqlan-rename-provider.ts +124 -0
- package/src/reqlan-scope.ts +2 -0
- package/src/reqlan-validator.ts +6 -11
- package/src/reqlan.langium +5 -1
package/out/reqlan-scope.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reqlan-scope.js","sourceRoot":"","sources":["../src/reqlan-scope.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"reqlan-scope.js","sourceRoot":"","sources":["../src/reqlan-scope.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,12 +5,14 @@ import type { ReqlanServices } from './reqlan-module.js';
|
|
|
5
5
|
* Registers validation hooks for the requirement graph AST.
|
|
6
6
|
* rq:["../../../reqlan rq/extension/language-support/features-imports.rq".import_does_not_exist_error]
|
|
7
7
|
* rq:["../../../reqlan rq/language/imports.rq".import_error_recovery]
|
|
8
|
+
* rq:["../../../reqlan rq/language/imports.rq".import_tokenisation]
|
|
8
9
|
*/
|
|
9
10
|
export declare function registerValidationChecks(services: ReqlanServices): void;
|
|
10
11
|
/**
|
|
11
12
|
* Custom validations for Reqlan documents.
|
|
12
13
|
* rq:["../../../reqlan rq/extension/language-support/features-imports.rq".import_does_not_exist_error]
|
|
13
14
|
* rq:["../../../reqlan rq/language/imports.rq".import_error_recovery]
|
|
15
|
+
* rq:["../../../reqlan rq/language/imports.rq".import_tokenisation]
|
|
14
16
|
*/
|
|
15
17
|
export declare class ReqlanValidator {
|
|
16
18
|
private readonly services;
|
|
@@ -22,6 +24,10 @@ export declare class ReqlanValidator {
|
|
|
22
24
|
*/
|
|
23
25
|
checkImportSyntax(model: Model, accept: ValidationAcceptor): void;
|
|
24
26
|
checkDuplicateImportBindings(model: Model, accept: ValidationAcceptor): void;
|
|
27
|
+
/**
|
|
28
|
+
* Duplicate check uses import *bindings* only (alias when present, otherwise the idea name).
|
|
29
|
+
* An aliased import does not reserve the imported base name for local ideas.
|
|
30
|
+
*/
|
|
25
31
|
checkDuplicateIdeaNames(model: Model, accept: ValidationAcceptor): void;
|
|
26
32
|
/**
|
|
27
33
|
* Error underline when an `import` / `from` path does not resolve to a file.
|
package/out/reqlan-validator.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { AstUtils } from 'langium';
|
|
2
2
|
import { isFromImport, isIdea, isInvalidFromImport, isOneLinerIdea } from './generated/ast.js';
|
|
3
3
|
import { collectFileLinks, fileLinkTargetIssueMessage } from './reqlan-file-link-resolver.js';
|
|
4
|
-
import { importBindings, importPathOf,
|
|
4
|
+
import { importBindings, importPathOf, isWellFormedFromImport } from './reqlan-import-bindings.js';
|
|
5
5
|
import { isResolvableImportPath } from './reqlan-imports.js';
|
|
6
6
|
import { pathResolveContextFromServices } from './reqlan-path-resolve.js';
|
|
7
7
|
import { unquoteReqlanString } from './reqlan-quoted-strings.js';
|
|
@@ -9,6 +9,7 @@ import { unquoteReqlanString } from './reqlan-quoted-strings.js';
|
|
|
9
9
|
* Registers validation hooks for the requirement graph AST.
|
|
10
10
|
* rq:["../../../reqlan rq/extension/language-support/features-imports.rq".import_does_not_exist_error]
|
|
11
11
|
* rq:["../../../reqlan rq/language/imports.rq".import_error_recovery]
|
|
12
|
+
* rq:["../../../reqlan rq/language/imports.rq".import_tokenisation]
|
|
12
13
|
*/
|
|
13
14
|
export function registerValidationChecks(services) {
|
|
14
15
|
const registry = services.validation.ValidationRegistry;
|
|
@@ -22,6 +23,7 @@ export function registerValidationChecks(services) {
|
|
|
22
23
|
* Custom validations for Reqlan documents.
|
|
23
24
|
* rq:["../../../reqlan rq/extension/language-support/features-imports.rq".import_does_not_exist_error]
|
|
24
25
|
* rq:["../../../reqlan rq/language/imports.rq".import_error_recovery]
|
|
26
|
+
* rq:["../../../reqlan rq/language/imports.rq".import_tokenisation]
|
|
25
27
|
*/
|
|
26
28
|
export class ReqlanValidator {
|
|
27
29
|
constructor(services) {
|
|
@@ -72,6 +74,10 @@ export class ReqlanValidator {
|
|
|
72
74
|
}
|
|
73
75
|
}
|
|
74
76
|
}
|
|
77
|
+
/**
|
|
78
|
+
* Duplicate check uses import *bindings* only (alias when present, otherwise the idea name).
|
|
79
|
+
* An aliased import does not reserve the imported base name for local ideas.
|
|
80
|
+
*/
|
|
75
81
|
checkDuplicateIdeaNames(model, accept) {
|
|
76
82
|
const seen = new Map();
|
|
77
83
|
for (const importDecl of model.imports) {
|
|
@@ -91,14 +97,6 @@ export class ReqlanValidator {
|
|
|
91
97
|
});
|
|
92
98
|
continue;
|
|
93
99
|
}
|
|
94
|
-
const importedNameConflict = model.imports.some(importDecl => importedIdeaNames(importDecl).includes(name));
|
|
95
|
-
if (importedNameConflict) {
|
|
96
|
-
accept('error', `'${name}' is already defined in this file.`, {
|
|
97
|
-
node: element,
|
|
98
|
-
property: 'name'
|
|
99
|
-
});
|
|
100
|
-
continue;
|
|
101
|
-
}
|
|
102
100
|
seen.set(name, element);
|
|
103
101
|
}
|
|
104
102
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reqlan-validator.js","sourceRoot":"","sources":["../src/reqlan-validator.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAEnC,OAAO,EACH,YAAY,EACZ,MAAM,EACN,mBAAmB,EACnB,cAAc,EAEjB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACH,gBAAgB,EAChB,0BAA0B,EAC7B,MAAM,gCAAgC,CAAC;AACxC,OAAO,EACH,cAAc,EACd,YAAY,EACZ,
|
|
1
|
+
{"version":3,"file":"reqlan-validator.js","sourceRoot":"","sources":["../src/reqlan-validator.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/src/file-path-rewrite.ts
CHANGED
|
@@ -1,11 +1,14 @@
|
|
|
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, UriUtils } from 'langium';
|
|
8
10
|
import type { Range } from 'vscode-languageserver';
|
|
11
|
+
import { importPathWithImplicitExtension } from './reqlan-imports.js';
|
|
9
12
|
import {
|
|
10
13
|
DEFAULT_IMPORT_ROOT_ALIAS,
|
|
11
14
|
matchImportRootMapping,
|
|
@@ -31,14 +34,29 @@ function rewriteImportRoots(options?: PathRewriteOptions): readonly ImportRootMa
|
|
|
31
34
|
return options?.importRoots ?? [{ alias: DEFAULT_IMPORT_ROOT_ALIAS }];
|
|
32
35
|
}
|
|
33
36
|
|
|
37
|
+
function ensureDotRelative(path: string): string {
|
|
38
|
+
return path.startsWith('.') ? path : `./${path}`;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
function uriWithoutExtension(uri: URI): string {
|
|
42
|
+
const uriString = uri.toString();
|
|
43
|
+
const ext = UriUtils.extname(uri);
|
|
44
|
+
return ext ? uriString.slice(0, uriString.length - ext.length) : uriString;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
function urisReferToSameTarget(left: URI, right: URI): boolean {
|
|
48
|
+
return left.toString() === right.toString()
|
|
49
|
+
|| uriWithoutExtension(left) === uriWithoutExtension(right);
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
function pathHadExplicitExtension(path: string): boolean {
|
|
53
|
+
const basename = path.slice(path.lastIndexOf('/') + 1);
|
|
54
|
+
return basename.includes('.', 1);
|
|
55
|
+
}
|
|
56
|
+
|
|
34
57
|
export function relativePathWithoutExtension(dirname: string, targetUri: URI): string {
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
let relativePath = UriUtils.relative(dirname, uriWithoutExt);
|
|
38
|
-
if (!relativePath.startsWith('.')) {
|
|
39
|
-
relativePath = `./${relativePath}`;
|
|
40
|
-
}
|
|
41
|
-
return relativePath;
|
|
58
|
+
let relativePath = UriUtils.relative(dirname, uriWithoutExtension(targetUri));
|
|
59
|
+
return ensureDotRelative(relativePath);
|
|
42
60
|
}
|
|
43
61
|
|
|
44
62
|
export function rewriteRelativePath(
|
|
@@ -56,13 +74,43 @@ export function rewriteRelativePath(
|
|
|
56
74
|
const oldDir = UriUtils.dirname(oldFileUri);
|
|
57
75
|
const newDir = UriUtils.dirname(newFileUri);
|
|
58
76
|
const resolved = UriUtils.resolvePath(oldDir, path);
|
|
59
|
-
|
|
60
|
-
if (!relativePath.startsWith('.')) {
|
|
61
|
-
relativePath = `./${relativePath}`;
|
|
62
|
-
}
|
|
77
|
+
const relativePath = ensureDotRelative(UriUtils.relative(newDir, resolved));
|
|
63
78
|
return relativePath === path ? undefined : relativePath;
|
|
64
79
|
}
|
|
65
80
|
|
|
81
|
+
/**
|
|
82
|
+
* When the *target* of a path moves, recompute the path as seen from the referencing file.
|
|
83
|
+
*/
|
|
84
|
+
export function rewritePathToMovedTarget(
|
|
85
|
+
path: string,
|
|
86
|
+
referencingFileUri: URI,
|
|
87
|
+
oldTargetUri: URI,
|
|
88
|
+
newTargetUri: URI,
|
|
89
|
+
options?: PathRewriteOptions
|
|
90
|
+
): string | undefined {
|
|
91
|
+
if (!path || path.startsWith('file://')) {
|
|
92
|
+
return undefined;
|
|
93
|
+
}
|
|
94
|
+
if (matchImportRootMapping(path, rewriteImportRoots(options)) !== undefined) {
|
|
95
|
+
return undefined;
|
|
96
|
+
}
|
|
97
|
+
const refDir = UriUtils.dirname(referencingFileUri);
|
|
98
|
+
const candidates = [UriUtils.resolvePath(refDir, path)];
|
|
99
|
+
const withExt = importPathWithImplicitExtension(path);
|
|
100
|
+
if (withExt) {
|
|
101
|
+
candidates.push(UriUtils.resolvePath(refDir, withExt));
|
|
102
|
+
}
|
|
103
|
+
if (!candidates.some(candidate => urisReferToSameTarget(candidate, oldTargetUri))) {
|
|
104
|
+
return undefined;
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
const keepExtension = pathHadExplicitExtension(path);
|
|
108
|
+
const newRelative = keepExtension
|
|
109
|
+
? ensureDotRelative(UriUtils.relative(refDir, newTargetUri))
|
|
110
|
+
: relativePathWithoutExtension(refDir.toString(), newTargetUri);
|
|
111
|
+
return newRelative === path ? undefined : newRelative;
|
|
112
|
+
}
|
|
113
|
+
|
|
66
114
|
export function rewriteQuotedPath(
|
|
67
115
|
path: string,
|
|
68
116
|
oldFileUri: URI,
|
|
@@ -94,3 +142,32 @@ export function buildPathRewriteEdits(
|
|
|
94
142
|
}
|
|
95
143
|
return edits;
|
|
96
144
|
}
|
|
145
|
+
|
|
146
|
+
export function buildInboundPathRewriteEdits(
|
|
147
|
+
references: PathReference[],
|
|
148
|
+
referencingFileUri: URI,
|
|
149
|
+
oldTargetUri: URI,
|
|
150
|
+
newTargetUri: URI,
|
|
151
|
+
formatReplacement: (path: string, newPath: string, range: Range) => string | undefined,
|
|
152
|
+
options?: PathRewriteOptions
|
|
153
|
+
): PathRewriteEdit[] {
|
|
154
|
+
const edits: PathRewriteEdit[] = [];
|
|
155
|
+
for (const reference of references) {
|
|
156
|
+
const newPath = rewritePathToMovedTarget(
|
|
157
|
+
reference.path,
|
|
158
|
+
referencingFileUri,
|
|
159
|
+
oldTargetUri,
|
|
160
|
+
newTargetUri,
|
|
161
|
+
options
|
|
162
|
+
);
|
|
163
|
+
if (newPath === undefined) {
|
|
164
|
+
continue;
|
|
165
|
+
}
|
|
166
|
+
const newText = formatReplacement(reference.path, newPath, reference.range);
|
|
167
|
+
if (newText === undefined) {
|
|
168
|
+
continue;
|
|
169
|
+
}
|
|
170
|
+
edits.push({ range: reference.range, newText });
|
|
171
|
+
}
|
|
172
|
+
return edits;
|
|
173
|
+
}
|
package/src/index.ts
CHANGED
|
@@ -6,6 +6,16 @@ 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 {
|
|
12
|
+
ideaDeclarationText,
|
|
13
|
+
isRefactorIdeaDeclaration,
|
|
14
|
+
planIdeaDeleteEdits,
|
|
15
|
+
planIdeaMoveEdits,
|
|
16
|
+
type DocumentTextEdits,
|
|
17
|
+
type RefactorIdeaDeclaration
|
|
18
|
+
} from './reqlan-idea-refactor.js';
|
|
9
19
|
export * from './reqlan-path-resolve.js';
|
|
10
20
|
export * from './reqlan-imports.js';
|
|
11
21
|
export * from './reqlan-quoted-strings.js';
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
* rq:["../../../reqlan rq/extension/features-commands.rq".search_code_actions]
|
|
6
6
|
*/
|
|
7
7
|
import type { LangiumDocument, URI } from 'langium';
|
|
8
|
-
import { DocumentValidator, URI as UriCtor, UriUtils } from 'langium';
|
|
8
|
+
import { AstUtils, DocumentValidator, URI as UriCtor, UriUtils } from 'langium';
|
|
9
9
|
import type { CodeActionParams, Command, Diagnostic } from 'vscode-languageserver';
|
|
10
10
|
import { CodeActionKind } from 'vscode-languageserver';
|
|
11
11
|
import type { CodeActionProvider } from 'langium/lsp';
|
|
@@ -20,6 +20,7 @@ import {
|
|
|
20
20
|
buildFromImportEdit,
|
|
21
21
|
relativeRqImportPath
|
|
22
22
|
} from './reqlan-import-edits.js';
|
|
23
|
+
import { isRefactorIdeaDeclaration } from './reqlan-idea-refactor.js';
|
|
23
24
|
import type { ReqlanServices } from './reqlan-module.js';
|
|
24
25
|
import {
|
|
25
26
|
sharedNameCatalog,
|
|
@@ -31,6 +32,15 @@ import { findReferenceSearchSite, buildContextForRange } from './reqlan-referenc
|
|
|
31
32
|
export const REQLAN_IMPORT_ERROR_SEARCH_COMMAND = 'reqlan.importError.search';
|
|
32
33
|
export const REQLAN_IMPORT_ERROR_CREATE_COMMAND = 'reqlan.importError.createFile';
|
|
33
34
|
export const REQLAN_SEARCH_REFERENCE_COMMAND = 'reqlan.searchReference';
|
|
35
|
+
export const REQLAN_REFACTOR_DELETE_IDEA_COMMAND = 'reqlan.refactor.deleteIdea';
|
|
36
|
+
export const REQLAN_REFACTOR_MOVE_IDEA_COMMAND = 'reqlan.refactor.moveIdea';
|
|
37
|
+
|
|
38
|
+
/** Args for idea move/delete refactor commands. */
|
|
39
|
+
export interface IdeaRefactorCommandArgs {
|
|
40
|
+
documentUri: string;
|
|
41
|
+
ideaName: string;
|
|
42
|
+
range: Diagnostic['range'];
|
|
43
|
+
}
|
|
34
44
|
|
|
35
45
|
const MAX_IMPORT_SUGGESTIONS = 5;
|
|
36
46
|
|
|
@@ -88,9 +98,49 @@ export class ReqlanCodeActionProvider implements CodeActionProvider {
|
|
|
88
98
|
if (searchFromCursor) {
|
|
89
99
|
actions.push(searchFromCursor);
|
|
90
100
|
}
|
|
101
|
+
actions.push(...this.createIdeaRefactorActions(document, params));
|
|
91
102
|
return actions;
|
|
92
103
|
}
|
|
93
104
|
|
|
105
|
+
/**
|
|
106
|
+
* rq:["../../../reqlan rq/extension/refactor_support.rq".refactor_symbol_move]
|
|
107
|
+
* rq:["../../../reqlan rq/extension/refactor_support.rq".refactor_symbol_delete]
|
|
108
|
+
*/
|
|
109
|
+
private createIdeaRefactorActions(
|
|
110
|
+
document: LangiumDocument,
|
|
111
|
+
params: CodeActionParams
|
|
112
|
+
): CodeActionLike[] {
|
|
113
|
+
const idea = findIdeaDeclarationAtRange(document, params.range);
|
|
114
|
+
if (!idea?.name || !idea.$cstNode) {
|
|
115
|
+
return [];
|
|
116
|
+
}
|
|
117
|
+
const args: IdeaRefactorCommandArgs = {
|
|
118
|
+
documentUri: document.textDocument.uri,
|
|
119
|
+
ideaName: idea.name,
|
|
120
|
+
range: idea.$cstNode.range
|
|
121
|
+
};
|
|
122
|
+
return [
|
|
123
|
+
{
|
|
124
|
+
title: `Delete idea '${idea.name}' and update references`,
|
|
125
|
+
kind: CodeActionKind.Refactor,
|
|
126
|
+
command: {
|
|
127
|
+
title: `Delete idea '${idea.name}'`,
|
|
128
|
+
command: REQLAN_REFACTOR_DELETE_IDEA_COMMAND,
|
|
129
|
+
arguments: [args]
|
|
130
|
+
}
|
|
131
|
+
},
|
|
132
|
+
{
|
|
133
|
+
title: `Move idea '${idea.name}' to another file…`,
|
|
134
|
+
kind: CodeActionKind.Refactor,
|
|
135
|
+
command: {
|
|
136
|
+
title: `Move idea '${idea.name}'`,
|
|
137
|
+
command: REQLAN_REFACTOR_MOVE_IDEA_COMMAND,
|
|
138
|
+
arguments: [args]
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
];
|
|
142
|
+
}
|
|
143
|
+
|
|
94
144
|
/**
|
|
95
145
|
* When the cursor/selection is inside a [reference], or on prose that can
|
|
96
146
|
* become one, offer a search action that opens the idea-search webview.
|
|
@@ -383,3 +433,25 @@ export function collectImportErrorCodeActions(
|
|
|
383
433
|
export function isModelDocument(document: LangiumDocument): document is LangiumDocument<Model> {
|
|
384
434
|
return isModel(document.parseResult.value);
|
|
385
435
|
}
|
|
436
|
+
|
|
437
|
+
function findIdeaDeclarationAtRange(document: LangiumDocument, range: Diagnostic['range']) {
|
|
438
|
+
const offset = document.textDocument.offsetAt(range.start);
|
|
439
|
+
for (const node of AstUtils.streamAst(document.parseResult.value)) {
|
|
440
|
+
if (!isRefactorIdeaDeclaration(node) || !node.$cstNode) {
|
|
441
|
+
continue;
|
|
442
|
+
}
|
|
443
|
+
const start = document.textDocument.offsetAt(node.$cstNode.range.start);
|
|
444
|
+
const end = document.textDocument.offsetAt(node.$cstNode.range.end);
|
|
445
|
+
if (offset >= start && offset <= end) {
|
|
446
|
+
return node;
|
|
447
|
+
}
|
|
448
|
+
// Also match when the selection is exactly on the name token line.
|
|
449
|
+
if (
|
|
450
|
+
range.start.line === node.$cstNode.range.start.line
|
|
451
|
+
&& range.start.character <= (node.name?.length ?? 0) + 1
|
|
452
|
+
) {
|
|
453
|
+
return node;
|
|
454
|
+
}
|
|
455
|
+
}
|
|
456
|
+
return undefined;
|
|
457
|
+
}
|
|
@@ -0,0 +1,151 @@
|
|
|
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 { findCommentReferencesInText, type EmbeddedCommentReference } from './reqlan-comment-resolver.js';
|
|
7
|
+
import { parseReqlanQuotedString, REQLAN_QUOTED_STRING_CAPTURE } from './reqlan-quoted-strings.js';
|
|
8
|
+
import type { PathRewriteEdit } from './file-path-rewrite.js';
|
|
9
|
+
|
|
10
|
+
const QUALIFIED_TARGET_PATTERN = new RegExp(
|
|
11
|
+
`^(${REQLAN_QUOTED_STRING_CAPTURE})\\s*\\.\\s*([_a-zA-Z][\\w-]*)(?:\\s*\\.\\s*([_a-zA-Z][\\w-]*))?$`
|
|
12
|
+
);
|
|
13
|
+
|
|
14
|
+
export interface CommentIdeaRenameMatch {
|
|
15
|
+
range: Range;
|
|
16
|
+
path?: string;
|
|
17
|
+
idea: string;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* Locate idea-name ranges inside comment references that should rename with `oldName`.
|
|
22
|
+
* When `targetPath` is set, only qualified refs whose path equals that value (or pathless
|
|
23
|
+
* local refs when `includePathless` is true) are included.
|
|
24
|
+
*/
|
|
25
|
+
export function findCommentIdeaRenameMatches(
|
|
26
|
+
text: string,
|
|
27
|
+
oldName: string,
|
|
28
|
+
options?: {
|
|
29
|
+
targetPath?: string;
|
|
30
|
+
includePathless?: boolean;
|
|
31
|
+
lineOffset?: number;
|
|
32
|
+
}
|
|
33
|
+
): CommentIdeaRenameMatch[] {
|
|
34
|
+
const matches: CommentIdeaRenameMatch[] = [];
|
|
35
|
+
const includePathless = options?.includePathless ?? true;
|
|
36
|
+
for (const reference of findCommentReferencesInText(text, options?.lineOffset ?? 0)) {
|
|
37
|
+
if (reference.idea !== oldName) {
|
|
38
|
+
continue;
|
|
39
|
+
}
|
|
40
|
+
if (reference.path !== undefined) {
|
|
41
|
+
if (options?.targetPath !== undefined && !pathsMatch(reference.path, options.targetPath)) {
|
|
42
|
+
continue;
|
|
43
|
+
}
|
|
44
|
+
} else if (!includePathless) {
|
|
45
|
+
continue;
|
|
46
|
+
}
|
|
47
|
+
const ideaRange = ideaTokenRangeInCommentReference(text, reference);
|
|
48
|
+
if (!ideaRange) {
|
|
49
|
+
continue;
|
|
50
|
+
}
|
|
51
|
+
matches.push({
|
|
52
|
+
range: ideaRange,
|
|
53
|
+
path: reference.path,
|
|
54
|
+
idea: reference.idea
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
return matches;
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
export function findCommentIdeaRenameEdits(
|
|
61
|
+
text: string,
|
|
62
|
+
oldName: string,
|
|
63
|
+
newName: string,
|
|
64
|
+
options?: {
|
|
65
|
+
targetPath?: string;
|
|
66
|
+
includePathless?: boolean;
|
|
67
|
+
lineOffset?: number;
|
|
68
|
+
}
|
|
69
|
+
): PathRewriteEdit[] {
|
|
70
|
+
if (oldName === newName) {
|
|
71
|
+
return [];
|
|
72
|
+
}
|
|
73
|
+
return findCommentIdeaRenameMatches(text, oldName, options).map(match => ({
|
|
74
|
+
range: match.range,
|
|
75
|
+
newText: newName
|
|
76
|
+
}));
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
export function ideaTokenRangeInCommentReference(
|
|
80
|
+
text: string,
|
|
81
|
+
reference: EmbeddedCommentReference
|
|
82
|
+
): Range | undefined {
|
|
83
|
+
const startOffset = offsetAt(text, reference.range.start);
|
|
84
|
+
const endOffset = offsetAt(text, reference.range.end);
|
|
85
|
+
const segment = text.slice(startOffset, endOffset);
|
|
86
|
+
const bracket = /rq:\s*\[([^\]]+)\]/.exec(segment);
|
|
87
|
+
if (!bracket || bracket.index === undefined) {
|
|
88
|
+
return undefined;
|
|
89
|
+
}
|
|
90
|
+
const target = bracket[1]!;
|
|
91
|
+
const bracketContentStart = startOffset + bracket.index + bracket[0].indexOf('[') + 1;
|
|
92
|
+
const qualified = QUALIFIED_TARGET_PATTERN.exec(target.trim());
|
|
93
|
+
if (qualified) {
|
|
94
|
+
const ideaToken = qualified[3] ?? qualified[2]!;
|
|
95
|
+
if (ideaToken !== reference.idea) {
|
|
96
|
+
return undefined;
|
|
97
|
+
}
|
|
98
|
+
const ideaIndexInTarget = target.lastIndexOf(ideaToken);
|
|
99
|
+
if (ideaIndexInTarget < 0) {
|
|
100
|
+
return undefined;
|
|
101
|
+
}
|
|
102
|
+
const absolute = bracketContentStart + ideaIndexInTarget;
|
|
103
|
+
return {
|
|
104
|
+
start: offsetToPosition(text, absolute),
|
|
105
|
+
end: offsetToPosition(text, absolute + ideaToken.length)
|
|
106
|
+
};
|
|
107
|
+
}
|
|
108
|
+
const ideaIndex = target.indexOf(reference.idea);
|
|
109
|
+
if (ideaIndex < 0) {
|
|
110
|
+
return undefined;
|
|
111
|
+
}
|
|
112
|
+
const absolute = bracketContentStart + ideaIndex;
|
|
113
|
+
return {
|
|
114
|
+
start: offsetToPosition(text, absolute),
|
|
115
|
+
end: offsetToPosition(text, absolute + reference.idea.length)
|
|
116
|
+
};
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
function pathsMatch(left: string, right: string): boolean {
|
|
120
|
+
const normalize = (path: string) => {
|
|
121
|
+
try {
|
|
122
|
+
return parseReqlanQuotedString(JSON.stringify(path)).replace(/\\/g, '/');
|
|
123
|
+
} catch {
|
|
124
|
+
return path.replace(/\\/g, '/');
|
|
125
|
+
}
|
|
126
|
+
};
|
|
127
|
+
const a = normalize(left);
|
|
128
|
+
const b = normalize(right);
|
|
129
|
+
return a === b
|
|
130
|
+
|| a.replace(/\.rq$/i, '') === b.replace(/\.rq$/i, '')
|
|
131
|
+
|| a.endsWith(b)
|
|
132
|
+
|| b.endsWith(a);
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
function offsetAt(text: string, position: { line: number; character: number }): number {
|
|
136
|
+
const lines = text.split(/\r?\n/);
|
|
137
|
+
let offset = 0;
|
|
138
|
+
for (let index = 0; index < position.line; index++) {
|
|
139
|
+
offset += lines[index]!.length + 1;
|
|
140
|
+
}
|
|
141
|
+
return offset + position.character;
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
function offsetToPosition(text: string, offset: number): { line: number; character: number } {
|
|
145
|
+
const before = text.slice(0, offset);
|
|
146
|
+
const lines = before.split(/\r?\n/);
|
|
147
|
+
return {
|
|
148
|
+
line: lines.length - 1,
|
|
149
|
+
character: lines[lines.length - 1]!.length
|
|
150
|
+
};
|
|
151
|
+
}
|