mirror of
https://github.com/voideditor/void
synced 2026-05-24 09:58:23 +00:00
minor changes
This commit is contained in:
parent
a5090b8025
commit
49072d43ea
3 changed files with 77 additions and 139 deletions
|
|
@ -102,8 +102,9 @@ export class DiffProvider implements vscode.CodeLensProvider {
|
|||
|
||||
const diffAreas = this._diffAreasOfDocument[docUriStr] || []
|
||||
|
||||
let endLine
|
||||
let startLine
|
||||
let endLine: 'originalEndLine' | 'endLine'
|
||||
let startLine: 'originalStartLine' | 'startLine'
|
||||
|
||||
if (changesTo === 'originalFile') {
|
||||
endLine = 'originalEndLine' as const
|
||||
startLine = 'originalStartLine' as const
|
||||
|
|
@ -291,11 +292,6 @@ export class DiffProvider implements vscode.CodeLensProvider {
|
|||
const currentArea = currentLines.slice(diffArea.startLine, diffArea.endLine + 1).join('\n')
|
||||
const originalArea = newOriginalLines.slice(diffArea.originalStartLine, diffArea.originalEndLine + 1).join('\n')
|
||||
|
||||
console.log('ACCEPT change', changedLines.join('\n'), diff.originalRange.start.line, diff.originalRange.end.line)
|
||||
console.log('ACCEPT area lines', diffArea.startLine, diffArea.endLine, diffArea.originalStartLine, diffArea.originalEndLine)
|
||||
console.log('ACCEPT currentArea', currentArea)
|
||||
console.log('ACCEPT originalArea', originalArea)
|
||||
|
||||
if (originalArea === currentArea) {
|
||||
const index = this._diffAreasOfDocument[docUriStr].findIndex(da => da.diffareaid === diffArea.diffareaid)
|
||||
this._diffAreasOfDocument[docUriStr].splice(index, 1)
|
||||
|
|
@ -336,11 +332,6 @@ export class DiffProvider implements vscode.CodeLensProvider {
|
|||
const currentArea = currentLines.slice(diffArea.startLine, diffArea.endLine + 1).join('\n')
|
||||
const originalArea = originalLines.slice(diffArea.originalStartLine, diffArea.originalEndLine + 1).join('\n')
|
||||
|
||||
console.log('REJECT diff lines', diff.originalRange.start.line, diff.originalRange.end.line)
|
||||
console.log('REJECT area lines', diffArea.startLine, diffArea.endLine, diffArea.originalStartLine, diffArea.originalEndLine)
|
||||
console.log('REJECT currentArea', currentArea)
|
||||
console.log('REJECT originalArea', originalArea)
|
||||
|
||||
if (originalArea === currentArea) {
|
||||
const index = this._diffAreasOfDocument[docUriStr].findIndex(da => da.diffareaid === diffArea.diffareaid)
|
||||
this._diffAreasOfDocument[docUriStr].splice(index, 1)
|
||||
|
|
@ -349,8 +340,6 @@ export class DiffProvider implements vscode.CodeLensProvider {
|
|||
this.refreshStylesAndDiffs(docUriStr)
|
||||
}
|
||||
|
||||
|
||||
|
||||
async startStreamingInDiffArea({ docUri, oldFileStr, diffRepr, diffArea, voidConfig, abortRef }: { docUri: vscode.Uri, oldFileStr: string, diffRepr: string, voidConfig: VoidConfig, diffArea: DiffArea, abortRef: AbortRef }) {
|
||||
|
||||
|
||||
|
|
@ -369,9 +358,6 @@ INSTRUCTIONS
|
|||
Please finish writing the new file by applying the diff to the original file. Return ONLY the completion of the file, without any explanation.
|
||||
|
||||
`
|
||||
// ask LLM to rewrite file with diff (if there is significant matchup with the original file, we stop rewriting)
|
||||
const START = new Date().getTime()
|
||||
|
||||
// make LLM complete the file to include the diff
|
||||
await new Promise<void>((resolve, reject) => {
|
||||
sendLLMMessage({
|
||||
|
|
@ -397,9 +383,6 @@ Please finish writing the new file by applying the diff to the original file. Re
|
|||
})
|
||||
})
|
||||
|
||||
const END = new Date().getTime()
|
||||
console.log('EDIT CHUNK time: ', END - START);
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
|
@ -465,121 +448,3 @@ Please finish writing the new file by applying the diff to the original file. Re
|
|||
|
||||
|
||||
|
||||
|
||||
/*
|
||||
import * as vscode from 'vscode';
|
||||
import { SuggestedEdit } from './findDiffs';
|
||||
|
||||
const greenDecoration = vscode.window.createTextEditorDecorationType({
|
||||
backgroundColor: 'rgba(0 255 51 / 0.2)',
|
||||
isWholeLine: false, // after: { contentText: ' [original]', color: 'rgba(0 255 60 / 0.5)' } // hoverMessage: originalText // this applies to hovering over after:...
|
||||
})
|
||||
|
||||
|
||||
|
||||
|
||||
export class DiffProvider {
|
||||
|
||||
originalCodeOfDocument: { [docUri: string]: string }
|
||||
|
||||
diffsOfDocument: {
|
||||
[docUri: string]: {
|
||||
startLine,
|
||||
startCol,
|
||||
endLine,
|
||||
endCol,
|
||||
originalText,
|
||||
|
||||
inset,
|
||||
diffid,
|
||||
}
|
||||
}
|
||||
|
||||
// sweep
|
||||
currentLine: { [docUri: string]: undefined | number }
|
||||
weAreEditing: boolean = false
|
||||
|
||||
|
||||
constructor() {
|
||||
|
||||
vscode.workspace.onDidChangeTextDocument((e) => {
|
||||
// on user change, grow/shrink/merge/delete diff AREAS
|
||||
// you dont have to do anything to the diffs here bc they all get recomputed in refresh()
|
||||
// user changes only get highlighted if theyre in a diffarea
|
||||
|
||||
// go thru all diff areas and adjust line numbers based on the user's change
|
||||
|
||||
|
||||
this.refreshStyles(e.document.uri.toString())
|
||||
})
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
// refreshes styles on page
|
||||
refreshStyles(docUriStr: string) {
|
||||
|
||||
if (this.weAreEditing) return
|
||||
|
||||
// recompute all diffs on the page
|
||||
// run inset.dispose() on all diffs
|
||||
|
||||
// original and current code -> diffs
|
||||
// originalCodeOfDocument[docUriStr]
|
||||
|
||||
// create new diffs
|
||||
const inset = vscode.window.createWebviewTextEditorInset(editor, lineStart, height, {})
|
||||
inset.webview.html = `
|
||||
<html>
|
||||
<body style="pointer-events:none;">Hello World!</body>
|
||||
</html>
|
||||
`;
|
||||
|
||||
}
|
||||
|
||||
// called on void.acceptDiff
|
||||
public async acceptDiff({ diffid }: { diffid: number }) {
|
||||
|
||||
// update original based on the diff
|
||||
// refresh()
|
||||
|
||||
}
|
||||
|
||||
|
||||
// called on void.rejectDiff
|
||||
public async rejectDiff({ diffid }: { diffid: number }) {
|
||||
|
||||
// get diffs[diffid]
|
||||
|
||||
// revert current file based on diff
|
||||
// refresh()
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
// sweep
|
||||
initializeSweep({ startLine }) {
|
||||
// reject all diffs on the page
|
||||
// store original code
|
||||
// currentLine=start of sweep
|
||||
}
|
||||
|
||||
onUpdateSweep(addedText) {
|
||||
// update final
|
||||
// refresh() ?
|
||||
// currentLine += number of newlines in addedText
|
||||
}
|
||||
|
||||
onAbortSweep() {
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -3,6 +3,7 @@
|
|||
* Licensed under the MIT License. See License.txt in the project root for license information.
|
||||
*--------------------------------------------------------------------------------------------*/
|
||||
|
||||
|
||||
import { Event } from '../../../base/common/event.js';
|
||||
import { ICodeEditor, IDiffEditor } from '../editorBrowser.js';
|
||||
import { IDecorationRenderOptions } from '../../common/editorCommon.js';
|
||||
|
|
|
|||
|
|
@ -8,6 +8,8 @@ import { IInlineDiffService } from '../../../editor/browser/services/inlineDiffS
|
|||
import { ICodeEditor } from '../../../editor/browser/editorBrowser.js';
|
||||
import { IRange } from '../../../editor/common/core/range.js';
|
||||
import { extHostNamedCustomer, IExtHostContext } from '../../services/extensions/common/extHostCustomers.js';
|
||||
import { IUndoRedoElement, IUndoRedoService, UndoRedoElementType, UndoRedoGroup } from '../../../platform/undoRedo/common/undoRedo.js';
|
||||
import { URI } from '../../../base/common/uri.js';
|
||||
// import { IHistoryService } from '../../services/history/common/history.js';
|
||||
|
||||
|
||||
|
|
@ -22,12 +24,82 @@ export class MainThreadInlineDiff extends Disposable implements MainThreadInline
|
|||
context: IExtHostContext,
|
||||
@IInlineDiffService private readonly _inlineDiff: IInlineDiffService,
|
||||
@ICodeEditorService private readonly _editorService: ICodeEditorService,
|
||||
// @IHistoryService private readonly _historyService: IHistoryService,
|
||||
// @IHistoryService private readonly _historyService: IHistoryService, // history service is the history of pressing alt left/right
|
||||
@IUndoRedoService private readonly _undoRedoService: IUndoRedoService, // undoRedo service is the history of pressing ctrl+z
|
||||
|
||||
) {
|
||||
super();
|
||||
|
||||
// this._proxy = context.getProxy(ExtHostContext.ExtHostEditorInsets);
|
||||
// this._wcHistoryService.addEntry()
|
||||
}
|
||||
|
||||
_streamingState: 'streaming' | 'idle' = 'idle'
|
||||
|
||||
startStreaming(editor: ICodeEditor) {
|
||||
|
||||
this._streamingState = 'streaming'
|
||||
|
||||
// count all changes towards the group
|
||||
|
||||
|
||||
// const versionId = editor.getModel()?.getVersionId()
|
||||
|
||||
this._register(editor.onDidChangeModelContent((e) => {
|
||||
|
||||
|
||||
// user presses undo (and there is something to undo)
|
||||
if (e.isUndoing) {
|
||||
// cancel the stream, then undo normally
|
||||
return
|
||||
}
|
||||
// user presses redo (and there is something to redo)
|
||||
if (e.isRedoing) {
|
||||
// cancel the stream, then redo normally
|
||||
return
|
||||
|
||||
}
|
||||
|
||||
// for good measure
|
||||
if (e.isEolChange) {
|
||||
// cancel stream and apply change normally
|
||||
return
|
||||
}
|
||||
|
||||
// ignore any other kind of change (make it not happen)
|
||||
if (this._streamingState === 'streaming') {
|
||||
// completely ignore the change
|
||||
return
|
||||
}
|
||||
|
||||
|
||||
}));
|
||||
|
||||
// streamChange(){
|
||||
|
||||
// }
|
||||
|
||||
|
||||
|
||||
// all changes made when streaming should be a part of the group so we can undo them all together
|
||||
const group = new UndoRedoGroup()
|
||||
|
||||
const elt: IUndoRedoElement = {
|
||||
type: UndoRedoElementType.Resource,
|
||||
resource: URI.parse('file:///path/to/file.txt'),
|
||||
label: 'Add Diffs',
|
||||
code: 'undoredo.inlineDiff',
|
||||
undo: () => {
|
||||
|
||||
// reapply diffareas and diffs here
|
||||
},
|
||||
redo: () => {
|
||||
|
||||
// reapply diffareas and diffs here
|
||||
}
|
||||
}
|
||||
|
||||
this._undoRedoService.pushElement(elt, group)
|
||||
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue