MCPcopy
hub / github.com/foambubble/foam / toVsCodeWorkspaceEdit

Function toVsCodeWorkspaceEdit

packages/foam-vscode/src/vscode/utils/vsc-utils.ts:52–92  ·  view source on GitHub ↗
(
  workspaceTextEdits: WorkspaceTextEdit[],
  workspace: FoamWorkspace
)

Source from the content-addressed store, hash-verified

50 * @returns VS Code WorkspaceEdit ready for application
51 */
52export const toVsCodeWorkspaceEdit = (
53 workspaceTextEdits: WorkspaceTextEdit[],
54 workspace: FoamWorkspace
55): WorkspaceEdit => {
56 const workspaceEdit = new WorkspaceEdit();
57
58 // Group edits by URI
59 const editsByUri = new Map<string, { uri: Uri; edits: TextEdit[] }>();
60
61 for (const workspaceTextEdit of workspaceTextEdits) {
62 const resource = workspace.get(workspaceTextEdit.uri);
63 if (!resource) {
64 Logger.warn(
65 `Could not resolve resource: ${workspaceTextEdit.uri.toString()}`
66 );
67 continue;
68 }
69
70 const vscodeUri = toVsCodeUri(resource.uri);
71 const uriKey = resource.uri.toString();
72 const existingEntry = editsByUri.get(uriKey) || {
73 uri: vscodeUri,
74 edits: [],
75 };
76
77 const vscodeEdit = new TextEdit(
78 toVsCodeRange(workspaceTextEdit.edit.range),
79 workspaceTextEdit.edit.newText
80 );
81
82 existingEntry.edits.push(vscodeEdit);
83 editsByUri.set(uriKey, existingEntry);
84 }
85
86 // Apply grouped edits to workspace
87 for (const { uri, edits } of editsByUri.values()) {
88 workspaceEdit.set(uri, edits);
89 }
90
91 return workspaceEdit;
92};
93
94/**
95 * Converts a platform-agnostic LintIssue to a VS Code Diagnostic.

Callers 4

provideRenameEditsMethod · 0.90
performTagRenameFunction · 0.90
provideRenameEditsMethod · 0.90
provideRenameEditsMethod · 0.90

Calls 8

setMethod · 0.95
toVsCodeUriFunction · 0.85
toVsCodeRangeFunction · 0.85
pushMethod · 0.80
getMethod · 0.65
warnMethod · 0.65
toStringMethod · 0.65
setMethod · 0.65

Tested by

no test coverage detected