Skip to content

Commit

Permalink
Merge pull request #210706 from microsoft/tyriar/update_cursor_still
Browse files Browse the repository at this point in the history
PromptInputModel: Update model when prompt changes without cursor movement
  • Loading branch information
Tyriar committed Apr 19, 2024
2 parents 0b20783 + eb43e19 commit 34a283a
Show file tree
Hide file tree
Showing 8 changed files with 234 additions and 200 deletions.
16 changes: 8 additions & 8 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -81,14 +81,14 @@
"@vscode/windows-mutex": "^0.5.0",
"@vscode/windows-process-tree": "^0.6.0",
"@vscode/windows-registry": "^1.1.0",
"@xterm/addon-canvas": "0.8.0-beta.2",
"@xterm/addon-image": "0.9.0-beta.2",
"@xterm/addon-search": "0.16.0-beta.2",
"@xterm/addon-serialize": "0.14.0-beta.2",
"@xterm/addon-unicode11": "0.9.0-beta.2",
"@xterm/addon-webgl": "0.19.0-beta.2",
"@xterm/headless": "5.6.0-beta.2",
"@xterm/xterm": "5.6.0-beta.2",
"@xterm/addon-canvas": "0.8.0-beta.3",
"@xterm/addon-image": "0.9.0-beta.3",
"@xterm/addon-search": "0.16.0-beta.3",
"@xterm/addon-serialize": "0.14.0-beta.3",
"@xterm/addon-unicode11": "0.9.0-beta.3",
"@xterm/addon-webgl": "0.19.0-beta.3",
"@xterm/headless": "5.6.0-beta.3",
"@xterm/xterm": "5.6.0-beta.3",
"graceful-fs": "4.2.11",
"http-proxy-agent": "^7.0.0",
"https-proxy-agent": "^7.0.2",
Expand Down
16 changes: 8 additions & 8 deletions remote/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -13,14 +13,14 @@
"@vscode/vscode-languagedetection": "1.0.21",
"@vscode/windows-process-tree": "^0.6.0",
"@vscode/windows-registry": "^1.1.0",
"@xterm/addon-canvas": "0.8.0-beta.2",
"@xterm/addon-image": "0.9.0-beta.2",
"@xterm/addon-search": "0.16.0-beta.2",
"@xterm/addon-serialize": "0.14.0-beta.2",
"@xterm/addon-unicode11": "0.9.0-beta.2",
"@xterm/addon-webgl": "0.19.0-beta.2",
"@xterm/headless": "5.6.0-beta.2",
"@xterm/xterm": "5.6.0-beta.2",
"@xterm/addon-canvas": "0.8.0-beta.3",
"@xterm/addon-image": "0.9.0-beta.3",
"@xterm/addon-search": "0.16.0-beta.3",
"@xterm/addon-serialize": "0.14.0-beta.3",
"@xterm/addon-unicode11": "0.9.0-beta.3",
"@xterm/addon-webgl": "0.19.0-beta.3",
"@xterm/headless": "5.6.0-beta.3",
"@xterm/xterm": "5.6.0-beta.3",
"cookie": "^0.4.0",
"graceful-fs": "4.2.11",
"http-proxy-agent": "^7.0.0",
Expand Down
14 changes: 7 additions & 7 deletions remote/web/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -7,13 +7,13 @@
"@microsoft/1ds-post-js": "^3.2.13",
"@vscode/iconv-lite-umd": "0.7.0",
"@vscode/vscode-languagedetection": "1.0.21",
"@xterm/addon-canvas": "0.8.0-beta.2",
"@xterm/addon-image": "0.9.0-beta.2",
"@xterm/addon-search": "0.16.0-beta.2",
"@xterm/addon-serialize": "0.14.0-beta.2",
"@xterm/addon-unicode11": "0.9.0-beta.2",
"@xterm/addon-webgl": "0.19.0-beta.2",
"@xterm/xterm": "5.6.0-beta.2",
"@xterm/addon-canvas": "0.8.0-beta.3",
"@xterm/addon-image": "0.9.0-beta.3",
"@xterm/addon-search": "0.16.0-beta.3",
"@xterm/addon-serialize": "0.14.0-beta.3",
"@xterm/addon-unicode11": "0.9.0-beta.3",
"@xterm/addon-webgl": "0.19.0-beta.3",
"@xterm/xterm": "5.6.0-beta.3",
"jschardet": "3.0.0",
"tas-client-umd": "0.1.8",
"vscode-oniguruma": "1.7.0",
Expand Down
68 changes: 34 additions & 34 deletions remote/web/yarn.lock
Original file line number Diff line number Diff line change
Expand Up @@ -48,40 +48,40 @@
resolved "https://registry.yarnpkg.com/@vscode/vscode-languagedetection/-/vscode-languagedetection-1.0.21.tgz#89b48f293f6aa3341bb888c1118d16ff13b032d3"
integrity sha512-zSUH9HYCw5qsCtd7b31yqkpaCU6jhtkKLkvOOA8yTrIRfBSOFb8PPhgmMicD7B/m+t4PwOJXzU1XDtrM9Fd3/g==

"@xterm/[email protected].2":
version "0.8.0-beta.2"
resolved "https://registry.yarnpkg.com/@xterm/addon-canvas/-/addon-canvas-0.8.0-beta.2.tgz#1149d9d174a984d5028fdf18f9291a1e047ed523"
integrity sha512-+ujhLzqrFvG8WyQoVLjXnLCMC5xiIVNp7R/fc1xdHd0HGMz2cqoCSgkMxsv6GK3SJK18ESncXSDbwcZ6hGoO4g==

"@xterm/[email protected].2":
version "0.9.0-beta.2"
resolved "https://registry.yarnpkg.com/@xterm/addon-image/-/addon-image-0.9.0-beta.2.tgz#b77fa85dc5567ad199b4b1310d82fe29a1497392"
integrity sha512-wDzXA8b+IxUZHoGmG5eG2vL+7YrWh8+Edd8bkF+IdzJXH8OFCGCi2nLxMWkLBGf/FvBoGBbhNtUZ4DrgfC6QRw==

"@xterm/[email protected].2":
version "0.16.0-beta.2"
resolved "https://registry.yarnpkg.com/@xterm/addon-search/-/addon-search-0.16.0-beta.2.tgz#3d6538d681bb198ead9e6896ff041d687055f540"
integrity sha512-PdbHtE33xkfaYD3U5pBatZaBR5udGrdRwsGeN5IOddPoYegXm63x8k2nlCK+moYprWKA9xs8mEAOYom0hHAR4w==

"@xterm/[email protected].2":
version "0.14.0-beta.2"
resolved "https://registry.yarnpkg.com/@xterm/addon-serialize/-/addon-serialize-0.14.0-beta.2.tgz#79efb4c2ee668628ef10060e6d7d95488ee316d6"
integrity sha512-6A1NYh0kaYKjOvml9FXevVpHVVOqC6uVDhg9G/ZUP5vyyu32z3MJ9CsOuQx1Jr3okCLpBa2IIzGZjz/Bsx0LUg==

"@xterm/[email protected].2":
version "0.9.0-beta.2"
resolved "https://registry.yarnpkg.com/@xterm/addon-unicode11/-/addon-unicode11-0.9.0-beta.2.tgz#9c7197b7aad6a0d6bbb710a3283a67bba1d9ee6e"
integrity sha512-Ylet0mqkUpbO46jC0A1Zhd6udrV/dp9ZcpfCs/n57PripJ3ViHBi3UrjvUmalzeynMtgEG9gdGY9Df2j7aahsw==

"@xterm/[email protected].2":
version "0.19.0-beta.2"
resolved "https://registry.yarnpkg.com/@xterm/addon-webgl/-/addon-webgl-0.19.0-beta.2.tgz#413dcb35910898855b1a61eb633c2aa701481beb"
integrity sha512-gvDeIjyss9koLtLpt/9JumkBm+dH0iBUSmQsuvRLn++hR+5XTnGbTmCuE6MxlC+37XZTH8PGGRdsacNW1aafSA==

"@xterm/[email protected].2":
version "5.6.0-beta.2"
resolved "https://registry.yarnpkg.com/@xterm/xterm/-/xterm-5.6.0-beta.2.tgz#a082549579cce0c3d581a3968c1e71b02c89f0c3"
integrity sha512-LU8WEYR7oBlxA22bdF3CTl4K5IuorwgVKD3jFAuyH+ESCmsDHX7bO4GP5nG2IrSsbjWEGMXPzlYcehObdCPTfw==
"@xterm/[email protected].3":
version "0.8.0-beta.3"
resolved "https://registry.yarnpkg.com/@xterm/addon-canvas/-/addon-canvas-0.8.0-beta.3.tgz#f7a8eb4804a51064e865fd180c41c52c19e328b1"
integrity sha512-r69V8Criiz26SSzrQJrKhNQalpux6ae0rsm7WYK9uiN//mwaOZg7wcYlfCtTV3qmuLFJdfRZ2LKIiL4mZGThwQ==

"@xterm/[email protected].3":
version "0.9.0-beta.3"
resolved "https://registry.yarnpkg.com/@xterm/addon-image/-/addon-image-0.9.0-beta.3.tgz#1781ae5e2c2ae741e97dbba774712051737aaf89"
integrity sha512-dxRwHGOnduZGEu90evCY6YeeQ5PKC/3G/hslh9ST2ThSHYwoApglaYYvsrhfdfh3fVI+CAMt2LYwQMixIe/FMg==

"@xterm/[email protected].3":
version "0.16.0-beta.3"
resolved "https://registry.yarnpkg.com/@xterm/addon-search/-/addon-search-0.16.0-beta.3.tgz#5ddd65522ca6055806a31ed6bcb8ab7454d070ed"
integrity sha512-b4FrI++0eZkjr8BMvKhHZCg7G8FCLo5CNHUHFZsGyMTxICvFs+peugFH591ChCky9RkuHjpzay7Wfmf9ZAiScw==

"@xterm/[email protected].3":
version "0.14.0-beta.3"
resolved "https://registry.yarnpkg.com/@xterm/addon-serialize/-/addon-serialize-0.14.0-beta.3.tgz#2b9fc8787c7396fa43de8480dc9e8f99d78ea474"
integrity sha512-ANx29m+EsNTmsISuHeboXICmf+hYoG07CRwfj+J08us+xUd3JH/I3DDO/toaD0XVGmF8YjhjAxYwo1pD6X+keg==

"@xterm/[email protected].3":
version "0.9.0-beta.3"
resolved "https://registry.yarnpkg.com/@xterm/addon-unicode11/-/addon-unicode11-0.9.0-beta.3.tgz#33024c1ced4abde9c3536155e4d28e39e395ed9b"
integrity sha512-KDykY87GuxRaVUBpWphpK2tFIjsGw8TW16XI5XlZeuiNisSdXY3qX9NtSuW7kfAn0GYwsBjQQ6DjEzz5/q4Wtg==

"@xterm/[email protected].3":
version "0.19.0-beta.3"
resolved "https://registry.yarnpkg.com/@xterm/addon-webgl/-/addon-webgl-0.19.0-beta.3.tgz#c2b207486fe177e69b8e42c4d52d914c54f8db9a"
integrity sha512-U/JCrmQHKxg8eQnbpWE7CNh+trsfxXJlEUSzG1xTYL4eifQNzrKVd3cczH8eKVO8SteSmJyQdNkHSjvVd4XWuA==

"@xterm/[email protected].3":
version "5.6.0-beta.3"
resolved "https://registry.yarnpkg.com/@xterm/xterm/-/xterm-5.6.0-beta.3.tgz#e526fd0cc10154656cb87b9e1b96e3f21f057f03"
integrity sha512-3527Zuwf36llsIeVgMtKLA4dklRq7poEO2yINkQQSJ8PjtnRcH8kOdORQb6aAg0cKtKWg1LBIqmqoHWb+wvq6Q==

[email protected]:
version "3.0.0"
Expand Down
78 changes: 39 additions & 39 deletions remote/yarn.lock
Original file line number Diff line number Diff line change
Expand Up @@ -114,45 +114,45 @@
resolved "https://registry.yarnpkg.com/@vscode/windows-registry/-/windows-registry-1.1.0.tgz#03dace7c29c46f658588b9885b9580e453ad21f9"
integrity sha512-5AZzuWJpGscyiMOed0IuyEwt6iKmV5Us7zuwCDCFYMIq7tsvooO9BUiciywsvuthGz6UG4LSpeDeCxvgMVhnIw==

"@xterm/[email protected].2":
version "0.8.0-beta.2"
resolved "https://registry.yarnpkg.com/@xterm/addon-canvas/-/addon-canvas-0.8.0-beta.2.tgz#1149d9d174a984d5028fdf18f9291a1e047ed523"
integrity sha512-+ujhLzqrFvG8WyQoVLjXnLCMC5xiIVNp7R/fc1xdHd0HGMz2cqoCSgkMxsv6GK3SJK18ESncXSDbwcZ6hGoO4g==

"@xterm/[email protected].2":
version "0.9.0-beta.2"
resolved "https://registry.yarnpkg.com/@xterm/addon-image/-/addon-image-0.9.0-beta.2.tgz#b77fa85dc5567ad199b4b1310d82fe29a1497392"
integrity sha512-wDzXA8b+IxUZHoGmG5eG2vL+7YrWh8+Edd8bkF+IdzJXH8OFCGCi2nLxMWkLBGf/FvBoGBbhNtUZ4DrgfC6QRw==

"@xterm/[email protected].2":
version "0.16.0-beta.2"
resolved "https://registry.yarnpkg.com/@xterm/addon-search/-/addon-search-0.16.0-beta.2.tgz#3d6538d681bb198ead9e6896ff041d687055f540"
integrity sha512-PdbHtE33xkfaYD3U5pBatZaBR5udGrdRwsGeN5IOddPoYegXm63x8k2nlCK+moYprWKA9xs8mEAOYom0hHAR4w==

"@xterm/[email protected].2":
version "0.14.0-beta.2"
resolved "https://registry.yarnpkg.com/@xterm/addon-serialize/-/addon-serialize-0.14.0-beta.2.tgz#79efb4c2ee668628ef10060e6d7d95488ee316d6"
integrity sha512-6A1NYh0kaYKjOvml9FXevVpHVVOqC6uVDhg9G/ZUP5vyyu32z3MJ9CsOuQx1Jr3okCLpBa2IIzGZjz/Bsx0LUg==

"@xterm/[email protected].2":
version "0.9.0-beta.2"
resolved "https://registry.yarnpkg.com/@xterm/addon-unicode11/-/addon-unicode11-0.9.0-beta.2.tgz#9c7197b7aad6a0d6bbb710a3283a67bba1d9ee6e"
integrity sha512-Ylet0mqkUpbO46jC0A1Zhd6udrV/dp9ZcpfCs/n57PripJ3ViHBi3UrjvUmalzeynMtgEG9gdGY9Df2j7aahsw==

"@xterm/[email protected].2":
version "0.19.0-beta.2"
resolved "https://registry.yarnpkg.com/@xterm/addon-webgl/-/addon-webgl-0.19.0-beta.2.tgz#413dcb35910898855b1a61eb633c2aa701481beb"
integrity sha512-gvDeIjyss9koLtLpt/9JumkBm+dH0iBUSmQsuvRLn++hR+5XTnGbTmCuE6MxlC+37XZTH8PGGRdsacNW1aafSA==

"@xterm/[email protected].2":
version "5.6.0-beta.2"
resolved "https://registry.yarnpkg.com/@xterm/headless/-/headless-5.6.0-beta.2.tgz#ece64150cabec47662fc7c5b5b76e02dc485ee68"
integrity sha512-NB6YYRdSt10xgGbVgjNtKc57LzvHxDV+BjxTmm3OYIa/37Bn4RH6EFcwTv/LVEay3SvkyUR4VAYzITQXyZJ2VQ==

"@xterm/[email protected].2":
version "5.6.0-beta.2"
resolved "https://registry.yarnpkg.com/@xterm/xterm/-/xterm-5.6.0-beta.2.tgz#a082549579cce0c3d581a3968c1e71b02c89f0c3"
integrity sha512-LU8WEYR7oBlxA22bdF3CTl4K5IuorwgVKD3jFAuyH+ESCmsDHX7bO4GP5nG2IrSsbjWEGMXPzlYcehObdCPTfw==
"@xterm/[email protected].3":
version "0.8.0-beta.3"
resolved "https://registry.yarnpkg.com/@xterm/addon-canvas/-/addon-canvas-0.8.0-beta.3.tgz#f7a8eb4804a51064e865fd180c41c52c19e328b1"
integrity sha512-r69V8Criiz26SSzrQJrKhNQalpux6ae0rsm7WYK9uiN//mwaOZg7wcYlfCtTV3qmuLFJdfRZ2LKIiL4mZGThwQ==

"@xterm/[email protected].3":
version "0.9.0-beta.3"
resolved "https://registry.yarnpkg.com/@xterm/addon-image/-/addon-image-0.9.0-beta.3.tgz#1781ae5e2c2ae741e97dbba774712051737aaf89"
integrity sha512-dxRwHGOnduZGEu90evCY6YeeQ5PKC/3G/hslh9ST2ThSHYwoApglaYYvsrhfdfh3fVI+CAMt2LYwQMixIe/FMg==

"@xterm/[email protected].3":
version "0.16.0-beta.3"
resolved "https://registry.yarnpkg.com/@xterm/addon-search/-/addon-search-0.16.0-beta.3.tgz#5ddd65522ca6055806a31ed6bcb8ab7454d070ed"
integrity sha512-b4FrI++0eZkjr8BMvKhHZCg7G8FCLo5CNHUHFZsGyMTxICvFs+peugFH591ChCky9RkuHjpzay7Wfmf9ZAiScw==

"@xterm/[email protected].3":
version "0.14.0-beta.3"
resolved "https://registry.yarnpkg.com/@xterm/addon-serialize/-/addon-serialize-0.14.0-beta.3.tgz#2b9fc8787c7396fa43de8480dc9e8f99d78ea474"
integrity sha512-ANx29m+EsNTmsISuHeboXICmf+hYoG07CRwfj+J08us+xUd3JH/I3DDO/toaD0XVGmF8YjhjAxYwo1pD6X+keg==

"@xterm/[email protected].3":
version "0.9.0-beta.3"
resolved "https://registry.yarnpkg.com/@xterm/addon-unicode11/-/addon-unicode11-0.9.0-beta.3.tgz#33024c1ced4abde9c3536155e4d28e39e395ed9b"
integrity sha512-KDykY87GuxRaVUBpWphpK2tFIjsGw8TW16XI5XlZeuiNisSdXY3qX9NtSuW7kfAn0GYwsBjQQ6DjEzz5/q4Wtg==

"@xterm/[email protected].3":
version "0.19.0-beta.3"
resolved "https://registry.yarnpkg.com/@xterm/addon-webgl/-/addon-webgl-0.19.0-beta.3.tgz#c2b207486fe177e69b8e42c4d52d914c54f8db9a"
integrity sha512-U/JCrmQHKxg8eQnbpWE7CNh+trsfxXJlEUSzG1xTYL4eifQNzrKVd3cczH8eKVO8SteSmJyQdNkHSjvVd4XWuA==

"@xterm/[email protected].3":
version "5.6.0-beta.3"
resolved "https://registry.yarnpkg.com/@xterm/headless/-/headless-5.6.0-beta.3.tgz#652d0ed494ea0c86e83d1167e2e5688c8b849401"
integrity sha512-ei/DRvHPA5TsR/RpRWM9Eo8BeSzPzgszydBgZqfcagVpw69PMcziFBaNU77NSQCdYPKKaLaOuGcnVCZpvKEYPw==

"@xterm/[email protected].3":
version "5.6.0-beta.3"
resolved "https://registry.yarnpkg.com/@xterm/xterm/-/xterm-5.6.0-beta.3.tgz#e526fd0cc10154656cb87b9e1b96e3f21f057f03"
integrity sha512-3527Zuwf36llsIeVgMtKLA4dklRq7poEO2yINkQQSJ8PjtnRcH8kOdORQb6aAg0cKtKWg1LBIqmqoHWb+wvq6Q==

agent-base@^7.0.1, agent-base@^7.0.2, agent-base@^7.1.0:
version "7.1.0"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,11 @@
* Licensed under the MIT License. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/

import { Emitter, type Event } from 'vs/base/common/event';
import { Emitter, Event } from 'vs/base/common/event';
import { Disposable } from 'vs/base/common/lifecycle';
import { ILogService, LogLevel } from 'vs/platform/log/common/log';
import type { ITerminalCommand } from 'vs/platform/terminal/common/capabilities/capabilities';
import { debounce } from 'vs/base/common/decorators';
import { throttle } from 'vs/base/common/decorators';

// Importing types is safe in any layer
// eslint-disable-next-line local/code-import-patterns
Expand Down Expand Up @@ -67,7 +67,10 @@ export class PromptInputModel extends Disposable implements IPromptInputModel {
super();

this._register(this._xterm.onData(e => this._handleInput(e)));
this._register(this._xterm.onCursorMove(() => this._sync()));
this._register(Event.any(
this._xterm.onWriteParsed,
this._xterm.onCursorMove,
)(() => this._sync()));

this._register(onCommandStart(e => this._handleCommandStart(e as { marker: IMarker })));
this._register(onCommandExecuted(() => this._handleCommandExecuted()));
Expand All @@ -79,6 +82,9 @@ export class PromptInputModel extends Disposable implements IPromptInputModel {

getCombinedString(): string {
const value = this._value.replaceAll('\n', '\u23CE');
if (this._cursorIndex === -1) {
return value;
}
let result = `${value.substring(0, this.cursorIndex)}|`;
if (this.ghostTextIndex !== -1) {
result += `${value.substring(this.cursorIndex, this.ghostTextIndex)}[`;
Expand Down Expand Up @@ -108,19 +114,16 @@ export class PromptInputModel extends Disposable implements IPromptInputModel {
}

this._state = PromptInputState.Execute;
this._cursorIndex = -1;
this._onDidFinishInput.fire();
}

private _handleInput(data: string) {
this._sync();
}

@debounce(50)
@throttle(0)
private _sync() {
this._syncNow();
}

protected _syncNow() {
if (this._state !== PromptInputState.Input) {
return;
}
Expand Down
Loading

0 comments on commit 34a283a

Please sign in to comment.