@@ -7,7 +7,7 @@ import { AsyncIterableObject } from 'vs/base/common/async';
7
7
import { CancellationToken } from 'vs/base/common/cancellation' ;
8
8
import { Color , RGBA } from 'vs/base/common/color' ;
9
9
import { Disposable , DisposableStore , IDisposable } from 'vs/base/common/lifecycle' ;
10
- import { ICodeEditor } from 'vs/editor/browser/editorBrowser' ;
10
+ import { IActiveCodeEditor , ICodeEditor } from 'vs/editor/browser/editorBrowser' ;
11
11
import { EditorOption } from 'vs/editor/common/config/editorOptions' ;
12
12
import { Range } from 'vs/editor/common/core/range' ;
13
13
import { IModelDecoration , ITextModel , TrackedRangeStickiness } from 'vs/editor/common/model' ;
@@ -207,7 +207,7 @@ function renderHoverParts(participant: ColorHoverParticipant | StandaloneColorPi
207
207
disposables . add ( model . onColorFlushed ( async ( color : Color ) => {
208
208
await _updateColorPresentations ( editorModel , model , color , range , colorHover ) ;
209
209
editorUpdatedByColorPicker = true ;
210
- range = _updateEditorModel ( editor , range , model , context ) ;
210
+ range = _updateEditorModel ( editor , range , model ) ;
211
211
} ) ) ;
212
212
}
213
213
disposables . add ( model . onDidChangeColor ( ( color : Color ) => {
@@ -224,30 +224,19 @@ function renderHoverParts(participant: ColorHoverParticipant | StandaloneColorPi
224
224
return disposables ;
225
225
}
226
226
227
- function _updateEditorModel ( editor : ICodeEditor , range : Range , model : ColorPickerModel , context ?: IEditorHoverRenderContext ) {
228
- let newRange : Range ;
227
+ function _updateEditorModel ( editor : IActiveCodeEditor , range : Range , model : ColorPickerModel ) : Range {
229
228
const textEdits : ISingleEditOperation [ ] = [ ] ;
230
- if ( model . presentation . textEdit ) {
231
- textEdits . push ( model . presentation . textEdit ) ;
232
- newRange = new Range (
233
- model . presentation . textEdit . range . startLineNumber ,
234
- model . presentation . textEdit . range . startColumn ,
235
- model . presentation . textEdit . range . endLineNumber ,
236
- model . presentation . textEdit . range . endColumn
237
- ) ;
238
- const trackedRange = editor . getModel ( ) ! . _setTrackedRange ( null , newRange , TrackedRangeStickiness . GrowsOnlyWhenTypingAfter ) ;
239
- newRange = editor . getModel ( ) ! . _getTrackedRange ( trackedRange ) || newRange ;
240
- } else {
241
- textEdits . push ( { range, text : model . presentation . label , forceMoveMarkers : false } ) ;
242
- newRange = range . setEndPosition ( range . endLineNumber , range . startColumn + model . presentation . label . length ) ;
243
- }
229
+ const edit = model . presentation . textEdit ?? { range, text : model . presentation . label , forceMoveMarkers : false } ;
230
+ textEdits . push ( edit ) ;
244
231
245
232
if ( model . presentation . additionalTextEdits ) {
246
233
textEdits . push ( ...model . presentation . additionalTextEdits ) ;
247
234
}
235
+ const replaceRange = Range . lift ( edit . range ) ;
236
+ const trackedRange = editor . getModel ( ) . _setTrackedRange ( null , replaceRange , TrackedRangeStickiness . GrowsOnlyWhenTypingAfter ) ;
248
237
editor . executeEdits ( 'colorpicker' , textEdits ) ;
249
238
editor . pushUndoStop ( ) ;
250
- return newRange ;
239
+ return editor . getModel ( ) . _getTrackedRange ( trackedRange ) ?? replaceRange ;
251
240
}
252
241
253
242
async function _updateColorPresentations ( editorModel : ITextModel , colorPickerModel : ColorPickerModel , color : Color , range : Range , colorHover : ColorHover | StandaloneColorPickerHover ) {
0 commit comments