@@ -23,6 +23,7 @@ import type {
2323 DisplayResult ,
2424 SearchQuery ,
2525 SgSearch ,
26+ Diff ,
2627} from '../types'
2728import { parentPort , streamedPromise } from './common'
2829import { buildCommand , splitByHighLightToken } from './search'
@@ -93,14 +94,13 @@ function openFile({ filePath, locationsToSelect }: ChildToParent['openFile']) {
9394async function previewDiff ( {
9495 filePath,
9596 locationsToSelect,
96- inputValue,
97- rewrite,
97+ diffs,
9898} : ChildToParent [ 'previewDiff' ] ) {
9999 const fileUri = workspaceUriFromFilePath ( filePath )
100100 if ( ! fileUri ) {
101101 return
102102 }
103- await generatePreview ( fileUri , inputValue , rewrite )
103+ await generatePreview ( fileUri , diffs )
104104 const previewUri = fileUri . with ( { scheme : SCHEME } )
105105 const filename = path . basename ( filePath )
106106 // https://github.com/microsoft/vscode/blob/d63202a5382aa104f5515ea09053a2a21a2587c6/src/vs/workbench/api/common/extHostApiCommands.ts#L422
@@ -166,11 +166,11 @@ async function onCommitChange(payload: ChildToParent['commitChange']) {
166166
167167async function doChange (
168168 fileUri : Uri ,
169- { changes } : ChildToParent [ 'commitChange' ] ,
169+ { diffs } : ChildToParent [ 'commitChange' ] ,
170170) {
171171 const bytes = await workspace . fs . readFile ( fileUri )
172172 const { receiveResult, conclude } = bufferMaker ( bytes )
173- for ( const { range, replacement } of changes ) {
173+ for ( const { range, replacement } of diffs ) {
174174 receiveResult ( replacement , range . byteOffset )
175175 }
176176 const final = conclude ( )
@@ -216,13 +216,6 @@ export function activatePreview({ subscriptions }: ExtensionContext) {
216216 )
217217}
218218
219- interface ReplaceArg {
220- bytes : Uint8Array
221- uri : Uri
222- inputValue : string
223- rewrite : string
224- }
225-
226219function bufferMaker ( bytes : Uint8Array ) {
227220 const encoder = new TextEncoder ( )
228221 let newBuffer = new Uint8Array ( bytes . byteLength )
@@ -268,33 +261,17 @@ function bufferMaker(bytes: Uint8Array) {
268261 }
269262}
270263
271- async function haveReplace ( { bytes, uri, inputValue, rewrite } : ReplaceArg ) {
272- const command = buildCommand ( {
273- pattern : inputValue ,
274- rewrite : rewrite ,
275- includeFiles : [ uri . fsPath ] ,
276- } )
277- const { receiveResult, conclude } = bufferMaker ( bytes )
278- await streamedPromise ( command ! , ( results : SgSearch [ ] ) => {
279- for ( const r of results ) {
280- receiveResult ( r . replacement ! , r . range . byteOffset )
281- }
282- } )
283- const final = conclude ( )
284- return new TextDecoder ( 'utf-8' ) . decode ( final )
285- }
286-
287- async function generatePreview ( uri : Uri , inputValue : string , rewrite : string ) {
264+ async function generatePreview ( uri : Uri , diffs : Diff [ ] ) {
288265 if ( previewContents . has ( uri . path ) ) {
289266 return
290267 }
291268 // TODO, maybe we also need a rewrite change event?
292269 const bytes = await workspace . fs . readFile ( uri )
293- const replaced = await haveReplace ( {
294- bytes ,
295- uri ,
296- inputValue ,
297- rewrite ,
298- } )
270+ const { receiveResult , conclude } = bufferMaker ( bytes )
271+ for ( const { range , replacement } of diffs ) {
272+ receiveResult ( replacement , range . byteOffset )
273+ }
274+ const final = conclude ( )
275+ const replaced = new TextDecoder ( 'utf-8' ) . decode ( final )
299276 previewContents . set ( uri . path , replaced )
300277}
0 commit comments