@@ -218,7 +218,7 @@ export async function showRunRecentQuickPick(
218
218
instantiationService . invokeFunction ( showRunRecentQuickPick , instance , terminalInRunCommandPicker , type , fuzzySearchToggle . checked ? 'fuzzy' : 'contiguous' , quickPick . value ) ;
219
219
} ) ;
220
220
const outputProvider = instantiationService . createInstance ( TerminalOutputProvider ) ;
221
- const quickPick = quickInputService . createQuickPick < IQuickPickItem & { rawLabel : string } > ( ) ;
221
+ const quickPick = quickInputService . createQuickPick < Item | IQuickPickItem & { rawLabel : string } > ( ) ;
222
222
const originalItems = items ;
223
223
quickPick . items = [ ...originalItems ] ;
224
224
quickPick . sortByLabel = false ;
@@ -258,6 +258,24 @@ export async function showRunRecentQuickPick(
258
258
await instantiationService . invokeFunction ( showRunRecentQuickPick , instance , terminalInRunCommandPicker , type , filterMode , value ) ;
259
259
}
260
260
} ) ;
261
+ let terminalScrollStateSaved = false ;
262
+ quickPick . onDidChangeActive ( async ( ) => {
263
+ const xterm = instance . xterm ;
264
+ if ( ! xterm ) {
265
+ return ;
266
+ }
267
+ const [ item ] = quickPick . activeItems ;
268
+ if ( 'command' in item && item . command ) {
269
+ if ( ! terminalScrollStateSaved ) {
270
+ xterm . markTracker . saveScrollState ( ) ;
271
+ terminalScrollStateSaved = true ;
272
+ }
273
+ xterm . markTracker . revealCommand ( item . command ) ;
274
+ } else {
275
+ terminalScrollStateSaved = false ;
276
+ xterm . markTracker . restoreScrollState ( ) ;
277
+ }
278
+ } ) ;
261
279
quickPick . onDidAccept ( async ( ) => {
262
280
const result = quickPick . activeItems [ 0 ] ;
263
281
let text : string ;
@@ -271,6 +289,12 @@ export async function showRunRecentQuickPick(
271
289
if ( quickPick . keyMods . alt ) {
272
290
instance . focus ( ) ;
273
291
}
292
+ terminalScrollStateSaved = false ;
293
+ instance . xterm ?. markTracker . restoreScrollState ( ) ;
294
+ } ) ;
295
+ quickPick . onDidHide ( ( ) => {
296
+ terminalScrollStateSaved = false ;
297
+ instance . xterm ?. markTracker . restoreScrollState ( ) ;
274
298
} ) ;
275
299
if ( value ) {
276
300
quickPick . value = value ;
0 commit comments