@@ -16,7 +16,8 @@ export function lockCodeWithoutDecoration (
1616 decorations : string [ ] ,
1717 allowChangeFromSources : string [ ] = [ ] ,
1818 errorMessage ?: string
19- ) : ( ) => void {
19+ ) : monaco . IDisposable {
20+ const disposableStore = new DisposableStore ( )
2021 function displayLockedCodeError ( position : monaco . Position ) {
2122 if ( errorMessage == null ) {
2223 return
@@ -124,38 +125,42 @@ export function lockCodeWithoutDecoration (
124125 model . applyEdits = originalApplyEdit as typeof model . applyEdits
125126 }
126127 }
127- const editorChangeModelDisposable = editor . onDidChangeModel ( lockModel )
128+ disposableStore . add ( editor . onDidChangeModel ( lockModel ) )
128129 lockModel ( )
129130
130131 // Handle selection of the last line of an editable range
131- const selectionDisposable = editor . onDidChangeCursorSelection ( e => {
132- if ( canEditRange ( e . selection ) ) {
133- return
134- }
135- const model = editor . getModel ( )
136- if ( model == null ) {
137- return
138- }
139- const shiftedRange = monaco . Range . fromPositions (
140- model . getPositionAt ( model . getOffsetAt ( e . selection . getStartPosition ( ) ) - 1 ) ,
141- model . getPositionAt ( model . getOffsetAt ( e . selection . getEndPosition ( ) ) - 1 )
142- )
143- if ( canEditRange ( shiftedRange ) ) {
144- editor . setSelection ( shiftedRange )
132+ disposableStore . add (
133+ editor . onDidChangeCursorSelection ( ( e ) => {
134+ if ( canEditRange ( e . selection ) ) {
135+ return
136+ }
137+ const model = editor . getModel ( )
138+ if ( model == null ) {
139+ return
140+ }
141+ const shiftedRange = monaco . Range . fromPositions (
142+ model . getPositionAt ( model . getOffsetAt ( e . selection . getStartPosition ( ) ) - 1 ) ,
143+ model . getPositionAt ( model . getOffsetAt ( e . selection . getEndPosition ( ) ) - 1 )
144+ )
145+ if ( canEditRange ( shiftedRange ) ) {
146+ editor . setSelection ( shiftedRange )
147+ }
148+ } )
149+ )
150+
151+ disposableStore . add ( {
152+ dispose ( ) {
153+ restoreModelApplyEdit ( )
154+ editor . executeEdits = originalExecuteEdit
155+ editor . executeCommands = originalExecuteCommands
156+ editor . trigger = originalTrigger
145157 }
146158 } )
147159
148- return ( ) => {
149- selectionDisposable . dispose ( )
150- restoreModelApplyEdit ( )
151- editorChangeModelDisposable . dispose ( )
152- editor . executeEdits = originalExecuteEdit
153- editor . executeCommands = originalExecuteCommands
154- editor . trigger = originalTrigger
155- }
160+ return disposableStore
156161}
157162
158- export function hideCodeWithoutDecoration ( editor : monaco . editor . IStandaloneCodeEditor , decorations : string [ ] ) : ( ) => void {
163+ export function hideCodeWithoutDecoration ( editor : monaco . editor . IStandaloneCodeEditor , decorations : string [ ] ) : monaco . IDisposable {
159164 let otherHiddenAreas : monaco . IRange [ ] = editor . _getViewModel ( ) ?. getHiddenAreas ( ) ?? [ ]
160165 function getHiddenAreas ( ) {
161166 const model = editor . getModel ( ) !
@@ -212,12 +217,17 @@ export function hideCodeWithoutDecoration (editor: monaco.editor.IStandaloneCode
212217 updateHiddenAreas ( )
213218 }
214219
220+ const disposableStore = new DisposableStore ( )
215221 updateHiddenAreas ( )
216222
217- return ( ) => {
218- editor . setHiddenAreas = originalSetHiddenAreas
219- editor . setHiddenAreas ( otherHiddenAreas )
220- }
223+ disposableStore . add ( {
224+ dispose ( ) {
225+ editor . setHiddenAreas = originalSetHiddenAreas
226+ editor . setHiddenAreas ( otherHiddenAreas )
227+ }
228+ } )
229+
230+ return disposableStore
221231}
222232
223233/**
0 commit comments