Handle terminal progress

Fixes #237564
This commit is contained in:
Daniel Imms
2025-01-09 06:04:51 -08:00
parent cdfd702e2f
commit 23e6be7d99
12 changed files with 231 additions and 152 deletions

96
package-lock.json generated
View File

@@ -27,15 +27,16 @@
"@vscode/windows-mutex": "^0.5.0", "@vscode/windows-mutex": "^0.5.0",
"@vscode/windows-process-tree": "^0.6.0", "@vscode/windows-process-tree": "^0.6.0",
"@vscode/windows-registry": "^1.1.0", "@vscode/windows-registry": "^1.1.0",
"@xterm/addon-clipboard": "^0.2.0-beta.68", "@xterm/addon-clipboard": "^0.2.0-beta.78",
"@xterm/addon-image": "^0.9.0-beta.85", "@xterm/addon-image": "^0.9.0-beta.95",
"@xterm/addon-ligatures": "^0.10.0-beta.85", "@xterm/addon-ligatures": "^0.10.0-beta.95",
"@xterm/addon-search": "^0.16.0-beta.85", "@xterm/addon-progress": "^0.2.0-beta.1",
"@xterm/addon-serialize": "^0.14.0-beta.85", "@xterm/addon-search": "^0.16.0-beta.95",
"@xterm/addon-unicode11": "^0.9.0-beta.85", "@xterm/addon-serialize": "^0.14.0-beta.95",
"@xterm/addon-webgl": "^0.19.0-beta.85", "@xterm/addon-unicode11": "^0.9.0-beta.95",
"@xterm/headless": "^5.6.0-beta.85", "@xterm/addon-webgl": "^0.19.0-beta.95",
"@xterm/xterm": "^5.6.0-beta.85", "@xterm/headless": "^5.6.0-beta.95",
"@xterm/xterm": "^5.6.0-beta.95",
"http-proxy-agent": "^7.0.0", "http-proxy-agent": "^7.0.0",
"https-proxy-agent": "^7.0.2", "https-proxy-agent": "^7.0.2",
"jschardet": "3.1.4", "jschardet": "3.1.4",
@@ -3458,30 +3459,30 @@
} }
}, },
"node_modules/@xterm/addon-clipboard": { "node_modules/@xterm/addon-clipboard": {
"version": "0.2.0-beta.68", "version": "0.2.0-beta.78",
"resolved": "https://registry.npmjs.org/@xterm/addon-clipboard/-/addon-clipboard-0.2.0-beta.68.tgz", "resolved": "https://registry.npmjs.org/@xterm/addon-clipboard/-/addon-clipboard-0.2.0-beta.78.tgz",
"integrity": "sha512-z/4urYG3dySjmnfwig2eH3rJNLVFIk3IGQ+Ibadu4GZwCAVkX7eV/uGMssIeVGMg/ZD3uVdocFvcaILPOz01Pg==", "integrity": "sha512-t9TG0WTkkSWZb9YL69aIUNXw9uHtozsMH5CNj5v+OfDgR0VMmJLjgVQEnOT7WyoFhQXOKgGzEZ1JfLQA8mbznA==",
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"js-base64": "^3.7.5" "js-base64": "^3.7.5"
}, },
"peerDependencies": { "peerDependencies": {
"@xterm/xterm": "^5.6.0-beta.85" "@xterm/xterm": "^5.6.0-beta.95"
} }
}, },
"node_modules/@xterm/addon-image": { "node_modules/@xterm/addon-image": {
"version": "0.9.0-beta.85", "version": "0.9.0-beta.95",
"resolved": "https://registry.npmjs.org/@xterm/addon-image/-/addon-image-0.9.0-beta.85.tgz", "resolved": "https://registry.npmjs.org/@xterm/addon-image/-/addon-image-0.9.0-beta.95.tgz",
"integrity": "sha512-XyIG+v6eVXBKkW6rT5GLF8VBVvNdsdcCNBOlw1kWPiK31/hzxcnoPXXRDp6bqxxFOtcB8tlHe2mk/5lQG4JtPA==", "integrity": "sha512-qbYmhFW9XxQ0N6sCZx91ilz74hB7mKhezGv/MnUkUsoo6HW4AuuWeohlTlpWJh025RulLndRMoVuacyVlEtpgQ==",
"license": "MIT", "license": "MIT",
"peerDependencies": { "peerDependencies": {
"@xterm/xterm": "^5.6.0-beta.85" "@xterm/xterm": "^5.6.0-beta.95"
} }
}, },
"node_modules/@xterm/addon-ligatures": { "node_modules/@xterm/addon-ligatures": {
"version": "0.10.0-beta.85", "version": "0.10.0-beta.95",
"resolved": "https://registry.npmjs.org/@xterm/addon-ligatures/-/addon-ligatures-0.10.0-beta.85.tgz", "resolved": "https://registry.npmjs.org/@xterm/addon-ligatures/-/addon-ligatures-0.10.0-beta.95.tgz",
"integrity": "sha512-fJKsmqjRIBr8TphyOefYnhH1nw1+HvtBmO1f6DX893a0qyLZ0cPIowuAABTBbu/j5mhwJveKw7pYIXScT42cBA==", "integrity": "sha512-JCsKuQUgnOcHGE1pbRXaRgLEt0aCgIPWW3Fo642YV1tmoOJxKyEM6IqqkXgmW0JRodRfy5xs2X3pUdqJvU4OzQ==",
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"font-finder": "^1.1.0", "font-finder": "^1.1.0",
@@ -3491,55 +3492,64 @@
"node": ">8.0.0" "node": ">8.0.0"
}, },
"peerDependencies": { "peerDependencies": {
"@xterm/xterm": "^5.6.0-beta.85" "@xterm/xterm": "^5.6.0-beta.95"
}
},
"node_modules/@xterm/addon-progress": {
"version": "0.2.0-beta.1",
"resolved": "https://registry.npmjs.org/@xterm/addon-progress/-/addon-progress-0.2.0-beta.1.tgz",
"integrity": "sha512-lgaXmHvU3GYRiwUSet0SJ4DoofhwjcmNSsPkf4WWnHxpb7TakoJPWx9ItO2h9EswwBETjYGWut7GkQi2MwO5Rg==",
"license": "MIT",
"peerDependencies": {
"@xterm/xterm": "^5.6.0-beta.95"
} }
}, },
"node_modules/@xterm/addon-search": { "node_modules/@xterm/addon-search": {
"version": "0.16.0-beta.85", "version": "0.16.0-beta.95",
"resolved": "https://registry.npmjs.org/@xterm/addon-search/-/addon-search-0.16.0-beta.85.tgz", "resolved": "https://registry.npmjs.org/@xterm/addon-search/-/addon-search-0.16.0-beta.95.tgz",
"integrity": "sha512-Z1IZlBIfqyB4weBffIwHKFGRVVgxBz105RdXOk+Jt5iIXeocg/sjCM7iFNwwQL0vLGOfzIQBWrS8oqjWeYvDEg==", "integrity": "sha512-R7NFwRpV6sq6ELcJN9jkVZkSvo7LBDjqkZ3FmpCS2aumubHPNf1oHkejOYTbOKbHnABNM5Mp6Y32HVKgLRnPtQ==",
"license": "MIT", "license": "MIT",
"peerDependencies": { "peerDependencies": {
"@xterm/xterm": "^5.6.0-beta.85" "@xterm/xterm": "^5.6.0-beta.95"
} }
}, },
"node_modules/@xterm/addon-serialize": { "node_modules/@xterm/addon-serialize": {
"version": "0.14.0-beta.85", "version": "0.14.0-beta.95",
"resolved": "https://registry.npmjs.org/@xterm/addon-serialize/-/addon-serialize-0.14.0-beta.85.tgz", "resolved": "https://registry.npmjs.org/@xterm/addon-serialize/-/addon-serialize-0.14.0-beta.95.tgz",
"integrity": "sha512-uMjrxcyF4ZCCKGI/4XLfq0/xEbCZkUsj6rORN0kem7GXKenNA1ggxk4z0Z8rFxwEyjV3wfjOaVPmxHJM3xh+gA==", "integrity": "sha512-IiNo02PZLcRSN//+FlIKmm3zMwhjw9dLqViqths7YoADMLAl51VDfUEVz+jlu6pHuJ2msl0n8uWggS45aNTO9g==",
"license": "MIT", "license": "MIT",
"peerDependencies": { "peerDependencies": {
"@xterm/xterm": "^5.6.0-beta.85" "@xterm/xterm": "^5.6.0-beta.95"
} }
}, },
"node_modules/@xterm/addon-unicode11": { "node_modules/@xterm/addon-unicode11": {
"version": "0.9.0-beta.85", "version": "0.9.0-beta.95",
"resolved": "https://registry.npmjs.org/@xterm/addon-unicode11/-/addon-unicode11-0.9.0-beta.85.tgz", "resolved": "https://registry.npmjs.org/@xterm/addon-unicode11/-/addon-unicode11-0.9.0-beta.95.tgz",
"integrity": "sha512-mpsRneCyY9Jmu05KYISOmDqkWS4WCV4D0UxCHxGmdmjeHDsNItauGG7u2Qnct7K+RBhfJPDp0j2yCTMTWuv0KQ==", "integrity": "sha512-GR6sAg+UcLAzOXl7ewzchkEKt3eH0GRciEqk3kgPOi70RHAnEoKtKtXN/Jdz5eV32I17wU4rUwwGHGc+mMNHxw==",
"license": "MIT", "license": "MIT",
"peerDependencies": { "peerDependencies": {
"@xterm/xterm": "^5.6.0-beta.85" "@xterm/xterm": "^5.6.0-beta.95"
} }
}, },
"node_modules/@xterm/addon-webgl": { "node_modules/@xterm/addon-webgl": {
"version": "0.19.0-beta.85", "version": "0.19.0-beta.95",
"resolved": "https://registry.npmjs.org/@xterm/addon-webgl/-/addon-webgl-0.19.0-beta.85.tgz", "resolved": "https://registry.npmjs.org/@xterm/addon-webgl/-/addon-webgl-0.19.0-beta.95.tgz",
"integrity": "sha512-qenYMn7XwBxujNkhialgGYvoKyGxbpGYiUmgQIdQPiV5yMQsaqz5S/o+iPKJM8sSRcI+ghxYS6KhiUOkzg5C3Q==", "integrity": "sha512-HUr5YTKLifhupP4cQGk7Oq4ydnRYks8060ueFDLAOGcI7gki17a+QTy5ZYzmeArrWwSrGxnO2TsyUZZu8ziJMg==",
"license": "MIT", "license": "MIT",
"peerDependencies": { "peerDependencies": {
"@xterm/xterm": "^5.6.0-beta.85" "@xterm/xterm": "^5.6.0-beta.95"
} }
}, },
"node_modules/@xterm/headless": { "node_modules/@xterm/headless": {
"version": "5.6.0-beta.85", "version": "5.6.0-beta.95",
"resolved": "https://registry.npmjs.org/@xterm/headless/-/headless-5.6.0-beta.85.tgz", "resolved": "https://registry.npmjs.org/@xterm/headless/-/headless-5.6.0-beta.95.tgz",
"integrity": "sha512-GzIULvPPz+I9tvdpMM5k5GeURz7bHBQyVQyZE6d6UUSyVVVd0NWgJXwF25t62y9cZQt1Bfp8i+1eCJ7p2+8ZSQ==", "integrity": "sha512-drsSE8HVuzfyeemdWaSHlzBnkwW2tu4b2uB7NYF9Yu5gvcwbt60+Roih2LlaAO9mpUz5oU3L6PVP9SCjZXJhDg==",
"license": "MIT" "license": "MIT"
}, },
"node_modules/@xterm/xterm": { "node_modules/@xterm/xterm": {
"version": "5.6.0-beta.85", "version": "5.6.0-beta.95",
"resolved": "https://registry.npmjs.org/@xterm/xterm/-/xterm-5.6.0-beta.85.tgz", "resolved": "https://registry.npmjs.org/@xterm/xterm/-/xterm-5.6.0-beta.95.tgz",
"integrity": "sha512-A2HpImW8FIlUOtkWm2FPnUdhhFa+ejshv5RJbejGCihGOnizsCeG8vBLt7uEJ37msvcJJSgFJ/VSmcFnh9Y9vA==", "integrity": "sha512-gG4ZjYrdob77QiWFultDhquYFYm2hldFN1jX0lA6WQp7H7utxW29VvCf/4hCW/qqFg56V3R76HiwXzKQMhzIiQ==",
"license": "MIT" "license": "MIT"
}, },
"node_modules/@xtuc/ieee754": { "node_modules/@xtuc/ieee754": {

View File

@@ -85,15 +85,16 @@
"@vscode/windows-mutex": "^0.5.0", "@vscode/windows-mutex": "^0.5.0",
"@vscode/windows-process-tree": "^0.6.0", "@vscode/windows-process-tree": "^0.6.0",
"@vscode/windows-registry": "^1.1.0", "@vscode/windows-registry": "^1.1.0",
"@xterm/addon-clipboard": "^0.2.0-beta.68", "@xterm/addon-clipboard": "^0.2.0-beta.78",
"@xterm/addon-image": "^0.9.0-beta.85", "@xterm/addon-image": "^0.9.0-beta.95",
"@xterm/addon-ligatures": "^0.10.0-beta.85", "@xterm/addon-ligatures": "^0.10.0-beta.95",
"@xterm/addon-search": "^0.16.0-beta.85", "@xterm/addon-progress": "^0.2.0-beta.1",
"@xterm/addon-serialize": "^0.14.0-beta.85", "@xterm/addon-search": "^0.16.0-beta.95",
"@xterm/addon-unicode11": "^0.9.0-beta.85", "@xterm/addon-serialize": "^0.14.0-beta.95",
"@xterm/addon-webgl": "^0.19.0-beta.85", "@xterm/addon-unicode11": "^0.9.0-beta.95",
"@xterm/headless": "^5.6.0-beta.85", "@xterm/addon-webgl": "^0.19.0-beta.95",
"@xterm/xterm": "^5.6.0-beta.85", "@xterm/headless": "^5.6.0-beta.95",
"@xterm/xterm": "^5.6.0-beta.95",
"http-proxy-agent": "^7.0.0", "http-proxy-agent": "^7.0.0",
"https-proxy-agent": "^7.0.2", "https-proxy-agent": "^7.0.2",
"jschardet": "3.1.4", "jschardet": "3.1.4",

View File

@@ -20,15 +20,16 @@
"@vscode/vscode-languagedetection": "1.0.21", "@vscode/vscode-languagedetection": "1.0.21",
"@vscode/windows-process-tree": "^0.6.0", "@vscode/windows-process-tree": "^0.6.0",
"@vscode/windows-registry": "^1.1.0", "@vscode/windows-registry": "^1.1.0",
"@xterm/addon-clipboard": "^0.2.0-beta.68", "@xterm/addon-clipboard": "^0.2.0-beta.78",
"@xterm/addon-image": "^0.9.0-beta.85", "@xterm/addon-image": "^0.9.0-beta.95",
"@xterm/addon-ligatures": "^0.10.0-beta.85", "@xterm/addon-ligatures": "^0.10.0-beta.95",
"@xterm/addon-search": "^0.16.0-beta.85", "@xterm/addon-progress": "^0.2.0-beta.1",
"@xterm/addon-serialize": "^0.14.0-beta.85", "@xterm/addon-search": "^0.16.0-beta.95",
"@xterm/addon-unicode11": "^0.9.0-beta.85", "@xterm/addon-serialize": "^0.14.0-beta.95",
"@xterm/addon-webgl": "^0.19.0-beta.85", "@xterm/addon-unicode11": "^0.9.0-beta.95",
"@xterm/headless": "^5.6.0-beta.85", "@xterm/addon-webgl": "^0.19.0-beta.95",
"@xterm/xterm": "^5.6.0-beta.85", "@xterm/headless": "^5.6.0-beta.95",
"@xterm/xterm": "^5.6.0-beta.95",
"cookie": "^0.7.0", "cookie": "^0.7.0",
"http-proxy-agent": "^7.0.0", "http-proxy-agent": "^7.0.0",
"https-proxy-agent": "^7.0.2", "https-proxy-agent": "^7.0.2",
@@ -521,30 +522,30 @@
"hasInstallScript": true "hasInstallScript": true
}, },
"node_modules/@xterm/addon-clipboard": { "node_modules/@xterm/addon-clipboard": {
"version": "0.2.0-beta.68", "version": "0.2.0-beta.78",
"resolved": "https://registry.npmjs.org/@xterm/addon-clipboard/-/addon-clipboard-0.2.0-beta.68.tgz", "resolved": "https://registry.npmjs.org/@xterm/addon-clipboard/-/addon-clipboard-0.2.0-beta.78.tgz",
"integrity": "sha512-z/4urYG3dySjmnfwig2eH3rJNLVFIk3IGQ+Ibadu4GZwCAVkX7eV/uGMssIeVGMg/ZD3uVdocFvcaILPOz01Pg==", "integrity": "sha512-t9TG0WTkkSWZb9YL69aIUNXw9uHtozsMH5CNj5v+OfDgR0VMmJLjgVQEnOT7WyoFhQXOKgGzEZ1JfLQA8mbznA==",
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"js-base64": "^3.7.5" "js-base64": "^3.7.5"
}, },
"peerDependencies": { "peerDependencies": {
"@xterm/xterm": "^5.6.0-beta.85" "@xterm/xterm": "^5.6.0-beta.95"
} }
}, },
"node_modules/@xterm/addon-image": { "node_modules/@xterm/addon-image": {
"version": "0.9.0-beta.85", "version": "0.9.0-beta.95",
"resolved": "https://registry.npmjs.org/@xterm/addon-image/-/addon-image-0.9.0-beta.85.tgz", "resolved": "https://registry.npmjs.org/@xterm/addon-image/-/addon-image-0.9.0-beta.95.tgz",
"integrity": "sha512-XyIG+v6eVXBKkW6rT5GLF8VBVvNdsdcCNBOlw1kWPiK31/hzxcnoPXXRDp6bqxxFOtcB8tlHe2mk/5lQG4JtPA==", "integrity": "sha512-qbYmhFW9XxQ0N6sCZx91ilz74hB7mKhezGv/MnUkUsoo6HW4AuuWeohlTlpWJh025RulLndRMoVuacyVlEtpgQ==",
"license": "MIT", "license": "MIT",
"peerDependencies": { "peerDependencies": {
"@xterm/xterm": "^5.6.0-beta.85" "@xterm/xterm": "^5.6.0-beta.95"
} }
}, },
"node_modules/@xterm/addon-ligatures": { "node_modules/@xterm/addon-ligatures": {
"version": "0.10.0-beta.85", "version": "0.10.0-beta.95",
"resolved": "https://registry.npmjs.org/@xterm/addon-ligatures/-/addon-ligatures-0.10.0-beta.85.tgz", "resolved": "https://registry.npmjs.org/@xterm/addon-ligatures/-/addon-ligatures-0.10.0-beta.95.tgz",
"integrity": "sha512-fJKsmqjRIBr8TphyOefYnhH1nw1+HvtBmO1f6DX893a0qyLZ0cPIowuAABTBbu/j5mhwJveKw7pYIXScT42cBA==", "integrity": "sha512-JCsKuQUgnOcHGE1pbRXaRgLEt0aCgIPWW3Fo642YV1tmoOJxKyEM6IqqkXgmW0JRodRfy5xs2X3pUdqJvU4OzQ==",
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"font-finder": "^1.1.0", "font-finder": "^1.1.0",
@@ -554,55 +555,64 @@
"node": ">8.0.0" "node": ">8.0.0"
}, },
"peerDependencies": { "peerDependencies": {
"@xterm/xterm": "^5.6.0-beta.85" "@xterm/xterm": "^5.6.0-beta.95"
}
},
"node_modules/@xterm/addon-progress": {
"version": "0.2.0-beta.1",
"resolved": "https://registry.npmjs.org/@xterm/addon-progress/-/addon-progress-0.2.0-beta.1.tgz",
"integrity": "sha512-lgaXmHvU3GYRiwUSet0SJ4DoofhwjcmNSsPkf4WWnHxpb7TakoJPWx9ItO2h9EswwBETjYGWut7GkQi2MwO5Rg==",
"license": "MIT",
"peerDependencies": {
"@xterm/xterm": "^5.6.0-beta.95"
} }
}, },
"node_modules/@xterm/addon-search": { "node_modules/@xterm/addon-search": {
"version": "0.16.0-beta.85", "version": "0.16.0-beta.95",
"resolved": "https://registry.npmjs.org/@xterm/addon-search/-/addon-search-0.16.0-beta.85.tgz", "resolved": "https://registry.npmjs.org/@xterm/addon-search/-/addon-search-0.16.0-beta.95.tgz",
"integrity": "sha512-Z1IZlBIfqyB4weBffIwHKFGRVVgxBz105RdXOk+Jt5iIXeocg/sjCM7iFNwwQL0vLGOfzIQBWrS8oqjWeYvDEg==", "integrity": "sha512-R7NFwRpV6sq6ELcJN9jkVZkSvo7LBDjqkZ3FmpCS2aumubHPNf1oHkejOYTbOKbHnABNM5Mp6Y32HVKgLRnPtQ==",
"license": "MIT", "license": "MIT",
"peerDependencies": { "peerDependencies": {
"@xterm/xterm": "^5.6.0-beta.85" "@xterm/xterm": "^5.6.0-beta.95"
} }
}, },
"node_modules/@xterm/addon-serialize": { "node_modules/@xterm/addon-serialize": {
"version": "0.14.0-beta.85", "version": "0.14.0-beta.95",
"resolved": "https://registry.npmjs.org/@xterm/addon-serialize/-/addon-serialize-0.14.0-beta.85.tgz", "resolved": "https://registry.npmjs.org/@xterm/addon-serialize/-/addon-serialize-0.14.0-beta.95.tgz",
"integrity": "sha512-uMjrxcyF4ZCCKGI/4XLfq0/xEbCZkUsj6rORN0kem7GXKenNA1ggxk4z0Z8rFxwEyjV3wfjOaVPmxHJM3xh+gA==", "integrity": "sha512-IiNo02PZLcRSN//+FlIKmm3zMwhjw9dLqViqths7YoADMLAl51VDfUEVz+jlu6pHuJ2msl0n8uWggS45aNTO9g==",
"license": "MIT", "license": "MIT",
"peerDependencies": { "peerDependencies": {
"@xterm/xterm": "^5.6.0-beta.85" "@xterm/xterm": "^5.6.0-beta.95"
} }
}, },
"node_modules/@xterm/addon-unicode11": { "node_modules/@xterm/addon-unicode11": {
"version": "0.9.0-beta.85", "version": "0.9.0-beta.95",
"resolved": "https://registry.npmjs.org/@xterm/addon-unicode11/-/addon-unicode11-0.9.0-beta.85.tgz", "resolved": "https://registry.npmjs.org/@xterm/addon-unicode11/-/addon-unicode11-0.9.0-beta.95.tgz",
"integrity": "sha512-mpsRneCyY9Jmu05KYISOmDqkWS4WCV4D0UxCHxGmdmjeHDsNItauGG7u2Qnct7K+RBhfJPDp0j2yCTMTWuv0KQ==", "integrity": "sha512-GR6sAg+UcLAzOXl7ewzchkEKt3eH0GRciEqk3kgPOi70RHAnEoKtKtXN/Jdz5eV32I17wU4rUwwGHGc+mMNHxw==",
"license": "MIT", "license": "MIT",
"peerDependencies": { "peerDependencies": {
"@xterm/xterm": "^5.6.0-beta.85" "@xterm/xterm": "^5.6.0-beta.95"
} }
}, },
"node_modules/@xterm/addon-webgl": { "node_modules/@xterm/addon-webgl": {
"version": "0.19.0-beta.85", "version": "0.19.0-beta.95",
"resolved": "https://registry.npmjs.org/@xterm/addon-webgl/-/addon-webgl-0.19.0-beta.85.tgz", "resolved": "https://registry.npmjs.org/@xterm/addon-webgl/-/addon-webgl-0.19.0-beta.95.tgz",
"integrity": "sha512-qenYMn7XwBxujNkhialgGYvoKyGxbpGYiUmgQIdQPiV5yMQsaqz5S/o+iPKJM8sSRcI+ghxYS6KhiUOkzg5C3Q==", "integrity": "sha512-HUr5YTKLifhupP4cQGk7Oq4ydnRYks8060ueFDLAOGcI7gki17a+QTy5ZYzmeArrWwSrGxnO2TsyUZZu8ziJMg==",
"license": "MIT", "license": "MIT",
"peerDependencies": { "peerDependencies": {
"@xterm/xterm": "^5.6.0-beta.85" "@xterm/xterm": "^5.6.0-beta.95"
} }
}, },
"node_modules/@xterm/headless": { "node_modules/@xterm/headless": {
"version": "5.6.0-beta.85", "version": "5.6.0-beta.95",
"resolved": "https://registry.npmjs.org/@xterm/headless/-/headless-5.6.0-beta.85.tgz", "resolved": "https://registry.npmjs.org/@xterm/headless/-/headless-5.6.0-beta.95.tgz",
"integrity": "sha512-GzIULvPPz+I9tvdpMM5k5GeURz7bHBQyVQyZE6d6UUSyVVVd0NWgJXwF25t62y9cZQt1Bfp8i+1eCJ7p2+8ZSQ==", "integrity": "sha512-drsSE8HVuzfyeemdWaSHlzBnkwW2tu4b2uB7NYF9Yu5gvcwbt60+Roih2LlaAO9mpUz5oU3L6PVP9SCjZXJhDg==",
"license": "MIT" "license": "MIT"
}, },
"node_modules/@xterm/xterm": { "node_modules/@xterm/xterm": {
"version": "5.6.0-beta.85", "version": "5.6.0-beta.95",
"resolved": "https://registry.npmjs.org/@xterm/xterm/-/xterm-5.6.0-beta.85.tgz", "resolved": "https://registry.npmjs.org/@xterm/xterm/-/xterm-5.6.0-beta.95.tgz",
"integrity": "sha512-A2HpImW8FIlUOtkWm2FPnUdhhFa+ejshv5RJbejGCihGOnizsCeG8vBLt7uEJ37msvcJJSgFJ/VSmcFnh9Y9vA==", "integrity": "sha512-gG4ZjYrdob77QiWFultDhquYFYm2hldFN1jX0lA6WQp7H7utxW29VvCf/4hCW/qqFg56V3R76HiwXzKQMhzIiQ==",
"license": "MIT" "license": "MIT"
}, },
"node_modules/agent-base": { "node_modules/agent-base": {

View File

@@ -15,15 +15,16 @@
"@vscode/vscode-languagedetection": "1.0.21", "@vscode/vscode-languagedetection": "1.0.21",
"@vscode/windows-process-tree": "^0.6.0", "@vscode/windows-process-tree": "^0.6.0",
"@vscode/windows-registry": "^1.1.0", "@vscode/windows-registry": "^1.1.0",
"@xterm/addon-clipboard": "^0.2.0-beta.68", "@xterm/addon-clipboard": "^0.2.0-beta.78",
"@xterm/addon-image": "^0.9.0-beta.85", "@xterm/addon-image": "^0.9.0-beta.95",
"@xterm/addon-ligatures": "^0.10.0-beta.85", "@xterm/addon-ligatures": "^0.10.0-beta.95",
"@xterm/addon-search": "^0.16.0-beta.85", "@xterm/addon-progress": "^0.2.0-beta.1",
"@xterm/addon-serialize": "^0.14.0-beta.85", "@xterm/addon-search": "^0.16.0-beta.95",
"@xterm/addon-unicode11": "^0.9.0-beta.85", "@xterm/addon-serialize": "^0.14.0-beta.95",
"@xterm/addon-webgl": "^0.19.0-beta.85", "@xterm/addon-unicode11": "^0.9.0-beta.95",
"@xterm/headless": "^5.6.0-beta.85", "@xterm/addon-webgl": "^0.19.0-beta.95",
"@xterm/xterm": "^5.6.0-beta.85", "@xterm/headless": "^5.6.0-beta.95",
"@xterm/xterm": "^5.6.0-beta.95",
"cookie": "^0.7.0", "cookie": "^0.7.0",
"http-proxy-agent": "^7.0.0", "http-proxy-agent": "^7.0.0",
"https-proxy-agent": "^7.0.2", "https-proxy-agent": "^7.0.2",

View File

@@ -13,14 +13,15 @@
"@vscode/iconv-lite-umd": "0.7.0", "@vscode/iconv-lite-umd": "0.7.0",
"@vscode/tree-sitter-wasm": "^0.0.5", "@vscode/tree-sitter-wasm": "^0.0.5",
"@vscode/vscode-languagedetection": "1.0.21", "@vscode/vscode-languagedetection": "1.0.21",
"@xterm/addon-clipboard": "^0.2.0-beta.68", "@xterm/addon-clipboard": "^0.2.0-beta.78",
"@xterm/addon-image": "^0.9.0-beta.85", "@xterm/addon-image": "^0.9.0-beta.95",
"@xterm/addon-ligatures": "^0.10.0-beta.85", "@xterm/addon-ligatures": "^0.10.0-beta.95",
"@xterm/addon-search": "^0.16.0-beta.85", "@xterm/addon-progress": "^0.2.0-beta.1",
"@xterm/addon-serialize": "^0.14.0-beta.85", "@xterm/addon-search": "^0.16.0-beta.95",
"@xterm/addon-unicode11": "^0.9.0-beta.85", "@xterm/addon-serialize": "^0.14.0-beta.95",
"@xterm/addon-webgl": "^0.19.0-beta.85", "@xterm/addon-unicode11": "^0.9.0-beta.95",
"@xterm/xterm": "^5.6.0-beta.85", "@xterm/addon-webgl": "^0.19.0-beta.95",
"@xterm/xterm": "^5.6.0-beta.95",
"jschardet": "3.1.4", "jschardet": "3.1.4",
"tas-client-umd": "0.2.0", "tas-client-umd": "0.2.0",
"vscode-oniguruma": "1.7.0", "vscode-oniguruma": "1.7.0",
@@ -89,30 +90,30 @@
} }
}, },
"node_modules/@xterm/addon-clipboard": { "node_modules/@xterm/addon-clipboard": {
"version": "0.2.0-beta.68", "version": "0.2.0-beta.78",
"resolved": "https://registry.npmjs.org/@xterm/addon-clipboard/-/addon-clipboard-0.2.0-beta.68.tgz", "resolved": "https://registry.npmjs.org/@xterm/addon-clipboard/-/addon-clipboard-0.2.0-beta.78.tgz",
"integrity": "sha512-z/4urYG3dySjmnfwig2eH3rJNLVFIk3IGQ+Ibadu4GZwCAVkX7eV/uGMssIeVGMg/ZD3uVdocFvcaILPOz01Pg==", "integrity": "sha512-t9TG0WTkkSWZb9YL69aIUNXw9uHtozsMH5CNj5v+OfDgR0VMmJLjgVQEnOT7WyoFhQXOKgGzEZ1JfLQA8mbznA==",
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"js-base64": "^3.7.5" "js-base64": "^3.7.5"
}, },
"peerDependencies": { "peerDependencies": {
"@xterm/xterm": "^5.6.0-beta.85" "@xterm/xterm": "^5.6.0-beta.95"
} }
}, },
"node_modules/@xterm/addon-image": { "node_modules/@xterm/addon-image": {
"version": "0.9.0-beta.85", "version": "0.9.0-beta.95",
"resolved": "https://registry.npmjs.org/@xterm/addon-image/-/addon-image-0.9.0-beta.85.tgz", "resolved": "https://registry.npmjs.org/@xterm/addon-image/-/addon-image-0.9.0-beta.95.tgz",
"integrity": "sha512-XyIG+v6eVXBKkW6rT5GLF8VBVvNdsdcCNBOlw1kWPiK31/hzxcnoPXXRDp6bqxxFOtcB8tlHe2mk/5lQG4JtPA==", "integrity": "sha512-qbYmhFW9XxQ0N6sCZx91ilz74hB7mKhezGv/MnUkUsoo6HW4AuuWeohlTlpWJh025RulLndRMoVuacyVlEtpgQ==",
"license": "MIT", "license": "MIT",
"peerDependencies": { "peerDependencies": {
"@xterm/xterm": "^5.6.0-beta.85" "@xterm/xterm": "^5.6.0-beta.95"
} }
}, },
"node_modules/@xterm/addon-ligatures": { "node_modules/@xterm/addon-ligatures": {
"version": "0.10.0-beta.85", "version": "0.10.0-beta.95",
"resolved": "https://registry.npmjs.org/@xterm/addon-ligatures/-/addon-ligatures-0.10.0-beta.85.tgz", "resolved": "https://registry.npmjs.org/@xterm/addon-ligatures/-/addon-ligatures-0.10.0-beta.95.tgz",
"integrity": "sha512-fJKsmqjRIBr8TphyOefYnhH1nw1+HvtBmO1f6DX893a0qyLZ0cPIowuAABTBbu/j5mhwJveKw7pYIXScT42cBA==", "integrity": "sha512-JCsKuQUgnOcHGE1pbRXaRgLEt0aCgIPWW3Fo642YV1tmoOJxKyEM6IqqkXgmW0JRodRfy5xs2X3pUdqJvU4OzQ==",
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"font-finder": "^1.1.0", "font-finder": "^1.1.0",
@@ -122,49 +123,58 @@
"node": ">8.0.0" "node": ">8.0.0"
}, },
"peerDependencies": { "peerDependencies": {
"@xterm/xterm": "^5.6.0-beta.85" "@xterm/xterm": "^5.6.0-beta.95"
}
},
"node_modules/@xterm/addon-progress": {
"version": "0.2.0-beta.1",
"resolved": "https://registry.npmjs.org/@xterm/addon-progress/-/addon-progress-0.2.0-beta.1.tgz",
"integrity": "sha512-lgaXmHvU3GYRiwUSet0SJ4DoofhwjcmNSsPkf4WWnHxpb7TakoJPWx9ItO2h9EswwBETjYGWut7GkQi2MwO5Rg==",
"license": "MIT",
"peerDependencies": {
"@xterm/xterm": "^5.6.0-beta.95"
} }
}, },
"node_modules/@xterm/addon-search": { "node_modules/@xterm/addon-search": {
"version": "0.16.0-beta.85", "version": "0.16.0-beta.95",
"resolved": "https://registry.npmjs.org/@xterm/addon-search/-/addon-search-0.16.0-beta.85.tgz", "resolved": "https://registry.npmjs.org/@xterm/addon-search/-/addon-search-0.16.0-beta.95.tgz",
"integrity": "sha512-Z1IZlBIfqyB4weBffIwHKFGRVVgxBz105RdXOk+Jt5iIXeocg/sjCM7iFNwwQL0vLGOfzIQBWrS8oqjWeYvDEg==", "integrity": "sha512-R7NFwRpV6sq6ELcJN9jkVZkSvo7LBDjqkZ3FmpCS2aumubHPNf1oHkejOYTbOKbHnABNM5Mp6Y32HVKgLRnPtQ==",
"license": "MIT", "license": "MIT",
"peerDependencies": { "peerDependencies": {
"@xterm/xterm": "^5.6.0-beta.85" "@xterm/xterm": "^5.6.0-beta.95"
} }
}, },
"node_modules/@xterm/addon-serialize": { "node_modules/@xterm/addon-serialize": {
"version": "0.14.0-beta.85", "version": "0.14.0-beta.95",
"resolved": "https://registry.npmjs.org/@xterm/addon-serialize/-/addon-serialize-0.14.0-beta.85.tgz", "resolved": "https://registry.npmjs.org/@xterm/addon-serialize/-/addon-serialize-0.14.0-beta.95.tgz",
"integrity": "sha512-uMjrxcyF4ZCCKGI/4XLfq0/xEbCZkUsj6rORN0kem7GXKenNA1ggxk4z0Z8rFxwEyjV3wfjOaVPmxHJM3xh+gA==", "integrity": "sha512-IiNo02PZLcRSN//+FlIKmm3zMwhjw9dLqViqths7YoADMLAl51VDfUEVz+jlu6pHuJ2msl0n8uWggS45aNTO9g==",
"license": "MIT", "license": "MIT",
"peerDependencies": { "peerDependencies": {
"@xterm/xterm": "^5.6.0-beta.85" "@xterm/xterm": "^5.6.0-beta.95"
} }
}, },
"node_modules/@xterm/addon-unicode11": { "node_modules/@xterm/addon-unicode11": {
"version": "0.9.0-beta.85", "version": "0.9.0-beta.95",
"resolved": "https://registry.npmjs.org/@xterm/addon-unicode11/-/addon-unicode11-0.9.0-beta.85.tgz", "resolved": "https://registry.npmjs.org/@xterm/addon-unicode11/-/addon-unicode11-0.9.0-beta.95.tgz",
"integrity": "sha512-mpsRneCyY9Jmu05KYISOmDqkWS4WCV4D0UxCHxGmdmjeHDsNItauGG7u2Qnct7K+RBhfJPDp0j2yCTMTWuv0KQ==", "integrity": "sha512-GR6sAg+UcLAzOXl7ewzchkEKt3eH0GRciEqk3kgPOi70RHAnEoKtKtXN/Jdz5eV32I17wU4rUwwGHGc+mMNHxw==",
"license": "MIT", "license": "MIT",
"peerDependencies": { "peerDependencies": {
"@xterm/xterm": "^5.6.0-beta.85" "@xterm/xterm": "^5.6.0-beta.95"
} }
}, },
"node_modules/@xterm/addon-webgl": { "node_modules/@xterm/addon-webgl": {
"version": "0.19.0-beta.85", "version": "0.19.0-beta.95",
"resolved": "https://registry.npmjs.org/@xterm/addon-webgl/-/addon-webgl-0.19.0-beta.85.tgz", "resolved": "https://registry.npmjs.org/@xterm/addon-webgl/-/addon-webgl-0.19.0-beta.95.tgz",
"integrity": "sha512-qenYMn7XwBxujNkhialgGYvoKyGxbpGYiUmgQIdQPiV5yMQsaqz5S/o+iPKJM8sSRcI+ghxYS6KhiUOkzg5C3Q==", "integrity": "sha512-HUr5YTKLifhupP4cQGk7Oq4ydnRYks8060ueFDLAOGcI7gki17a+QTy5ZYzmeArrWwSrGxnO2TsyUZZu8ziJMg==",
"license": "MIT", "license": "MIT",
"peerDependencies": { "peerDependencies": {
"@xterm/xterm": "^5.6.0-beta.85" "@xterm/xterm": "^5.6.0-beta.95"
} }
}, },
"node_modules/@xterm/xterm": { "node_modules/@xterm/xterm": {
"version": "5.6.0-beta.85", "version": "5.6.0-beta.95",
"resolved": "https://registry.npmjs.org/@xterm/xterm/-/xterm-5.6.0-beta.85.tgz", "resolved": "https://registry.npmjs.org/@xterm/xterm/-/xterm-5.6.0-beta.95.tgz",
"integrity": "sha512-A2HpImW8FIlUOtkWm2FPnUdhhFa+ejshv5RJbejGCihGOnizsCeG8vBLt7uEJ37msvcJJSgFJ/VSmcFnh9Y9vA==", "integrity": "sha512-gG4ZjYrdob77QiWFultDhquYFYm2hldFN1jX0lA6WQp7H7utxW29VvCf/4hCW/qqFg56V3R76HiwXzKQMhzIiQ==",
"license": "MIT" "license": "MIT"
}, },
"node_modules/font-finder": { "node_modules/font-finder": {

View File

@@ -8,14 +8,15 @@
"@vscode/iconv-lite-umd": "0.7.0", "@vscode/iconv-lite-umd": "0.7.0",
"@vscode/tree-sitter-wasm": "^0.0.5", "@vscode/tree-sitter-wasm": "^0.0.5",
"@vscode/vscode-languagedetection": "1.0.21", "@vscode/vscode-languagedetection": "1.0.21",
"@xterm/addon-clipboard": "^0.2.0-beta.68", "@xterm/addon-clipboard": "^0.2.0-beta.78",
"@xterm/addon-image": "^0.9.0-beta.85", "@xterm/addon-image": "^0.9.0-beta.95",
"@xterm/addon-ligatures": "^0.10.0-beta.85", "@xterm/addon-ligatures": "^0.10.0-beta.95",
"@xterm/addon-search": "^0.16.0-beta.85", "@xterm/addon-progress": "^0.2.0-beta.1",
"@xterm/addon-serialize": "^0.14.0-beta.85", "@xterm/addon-search": "^0.16.0-beta.95",
"@xterm/addon-unicode11": "^0.9.0-beta.85", "@xterm/addon-serialize": "^0.14.0-beta.95",
"@xterm/addon-webgl": "^0.19.0-beta.85", "@xterm/addon-unicode11": "^0.9.0-beta.95",
"@xterm/xterm": "^5.6.0-beta.85", "@xterm/addon-webgl": "^0.19.0-beta.95",
"@xterm/xterm": "^5.6.0-beta.95",
"jschardet": "3.1.4", "jschardet": "3.1.4",
"tas-client-umd": "0.2.0", "tas-client-umd": "0.2.0",
"vscode-oniguruma": "1.7.0", "vscode-oniguruma": "1.7.0",

View File

@@ -11,6 +11,7 @@ const moduleNames = [
'@xterm/addon-clipboard', '@xterm/addon-clipboard',
'@xterm/addon-image', '@xterm/addon-image',
'@xterm/addon-ligatures', '@xterm/addon-ligatures',
'@xterm/addon-progress',
'@xterm/addon-search', '@xterm/addon-search',
'@xterm/addon-serialize', '@xterm/addon-serialize',
'@xterm/addon-unicode11', '@xterm/addon-unicode11',

View File

@@ -31,6 +31,7 @@ import type { ICurrentPartialCommand } from '../../../../platform/terminal/commo
import type { IXtermCore } from './xterm-private.js'; import type { IXtermCore } from './xterm-private.js';
import type { IMenu } from '../../../../platform/actions/common/actions.js'; import type { IMenu } from '../../../../platform/actions/common/actions.js';
import type { Barrier } from '../../../../base/common/async.js'; import type { Barrier } from '../../../../base/common/async.js';
import type { IProgressState } from '@xterm/addon-progress';
export const ITerminalService = createDecorator<ITerminalService>('terminalService'); export const ITerminalService = createDecorator<ITerminalService>('terminalService');
export const ITerminalConfigurationService = createDecorator<ITerminalConfigurationService>('terminalConfigurationService'); export const ITerminalConfigurationService = createDecorator<ITerminalConfigurationService>('terminalConfigurationService');
@@ -610,6 +611,7 @@ export interface ITerminalInstance extends IBaseTerminalInstance {
readonly processName: string; readonly processName: string;
readonly sequence?: string; readonly sequence?: string;
readonly staticTitle?: string; readonly staticTitle?: string;
readonly progressState?: IProgressState;
readonly workspaceFolder?: IWorkspaceFolder; readonly workspaceFolder?: IWorkspaceFolder;
readonly cwd?: string; readonly cwd?: string;
readonly initialCwd?: string; readonly initialCwd?: string;

View File

@@ -89,6 +89,7 @@ import { openContextMenu } from './terminalContextMenu.js';
import type { IMenu } from '../../../../platform/actions/common/actions.js'; import type { IMenu } from '../../../../platform/actions/common/actions.js';
import { IContextMenuService } from '../../../../platform/contextview/browser/contextView.js'; import { IContextMenuService } from '../../../../platform/contextview/browser/contextView.js';
import { TerminalContribCommandId } from '../terminalContribExports.js'; import { TerminalContribCommandId } from '../terminalContribExports.js';
import type { IProgressState } from '@xterm/addon-progress';
const enum Constants { const enum Constants {
/** /**
@@ -282,6 +283,7 @@ export class TerminalInstance extends Disposable implements ITerminalInstance {
get processName(): string { return this._processName; } get processName(): string { return this._processName; }
get sequence(): string | undefined { return this._sequence; } get sequence(): string | undefined { return this._sequence; }
get staticTitle(): string | undefined { return this._staticTitle; } get staticTitle(): string | undefined { return this._staticTitle; }
get progressState(): IProgressState | undefined { return this.xterm?.progressState; }
get workspaceFolder(): IWorkspaceFolder | undefined { return this._workspaceFolder; } get workspaceFolder(): IWorkspaceFolder | undefined { return this._workspaceFolder; }
get cwd(): string | undefined { return this._cwd; } get cwd(): string | undefined { return this._cwd; }
get initialCwd(): string | undefined { return this._initialCwd; } get initialCwd(): string | undefined { return this._initialCwd; }
@@ -851,6 +853,7 @@ export class TerminalInstance extends Disposable implements ITerminalInstance {
xterm.refresh(); xterm.refresh();
} }
})); }));
this._register(xterm.onDidChangeProgress(() => this._labelComputer?.refreshLabel(this)));
// Set up updating of the process cwd on key press, this is only needed when the cwd // Set up updating of the process cwd on key press, this is only needed when the cwd
// detection capability has not been registered // detection capability has not been registered
@@ -2460,6 +2463,7 @@ interface ITerminalLabelTemplateProperties {
local?: string | null | undefined; local?: string | null | undefined;
process?: string | null | undefined; process?: string | null | undefined;
sequence?: string | null | undefined; sequence?: string | null | undefined;
progress?: string | null | undefined;
task?: string | null | undefined; task?: string | null | undefined;
fixedDimensions?: string | null | undefined; fixedDimensions?: string | null | undefined;
separator?: string | ISeparator | null | undefined; separator?: string | ISeparator | null | undefined;
@@ -2499,7 +2503,7 @@ export class TerminalLabelComputer extends Disposable {
} }
computeLabel( computeLabel(
instance: Pick<ITerminalInstance, 'shellLaunchConfig' | 'shellType' | 'cwd' | 'fixedCols' | 'fixedRows' | 'initialCwd' | 'processName' | 'sequence' | 'userHome' | 'workspaceFolder' | 'staticTitle' | 'capabilities' | 'title' | 'description'>, instance: Pick<ITerminalInstance, 'shellLaunchConfig' | 'shellType' | 'cwd' | 'fixedCols' | 'fixedRows' | 'initialCwd' | 'processName' | 'sequence' | 'userHome' | 'workspaceFolder' | 'staticTitle' | 'capabilities' | 'title' | 'description' | 'progressState'>,
labelTemplate: string, labelTemplate: string,
labelType: TerminalLabelType, labelType: TerminalLabelType,
reset?: boolean reset?: boolean
@@ -2530,6 +2534,7 @@ export class TerminalLabelComputer extends Disposable {
shellPromptInput: commandDetection?.executingCommand && promptInputModel shellPromptInput: commandDetection?.executingCommand && promptInputModel
? promptInputModel.getCombinedString(true) + nonTaskSpinner ? promptInputModel.getCombinedString(true) + nonTaskSpinner
: promptInputModel?.getCombinedString(true), : promptInputModel?.getCombinedString(true),
progress: this._getProgressStateString(instance.progressState)
}; };
templateProperties.workspaceFolderName = instance.workspaceFolder?.name ?? templateProperties.workspaceFolder; templateProperties.workspaceFolderName = instance.workspaceFolder?.name ?? templateProperties.workspaceFolder;
labelTemplate = labelTemplate.trim(); labelTemplate = labelTemplate.trim();
@@ -2567,6 +2572,19 @@ export class TerminalLabelComputer extends Disposable {
const label = template(labelTemplate, (templateProperties as unknown) as { [key: string]: string | ISeparator | undefined | null }).replace(/[\n\r\t]/g, '').trim(); const label = template(labelTemplate, (templateProperties as unknown) as { [key: string]: string | ISeparator | undefined | null }).replace(/[\n\r\t]/g, '').trim();
return label === '' && labelType === TerminalLabelType.Title ? (instance.processName || '') : label; return label === '' && labelType === TerminalLabelType.Title ? (instance.processName || '') : label;
} }
private _getProgressStateString(progressState?: IProgressState): string {
if (!progressState) {
return '';
}
switch (progressState.state) {
case 0: return '';
case 1: return `${Math.round(progressState.value)}%`;
case 2: return '$(error)';
case 3: return '$(loading~spin)';
case 4: return '$(alert)';
}
}
} }
export function parseExitResult( export function parseExitResult(

View File

@@ -6,6 +6,7 @@
import type { ClipboardAddon as ClipboardAddonType } from '@xterm/addon-clipboard'; import type { ClipboardAddon as ClipboardAddonType } from '@xterm/addon-clipboard';
import type { ImageAddon as ImageAddonType } from '@xterm/addon-image'; import type { ImageAddon as ImageAddonType } from '@xterm/addon-image';
import type { LigaturesAddon as LigaturesAddonType } from '@xterm/addon-ligatures'; import type { LigaturesAddon as LigaturesAddonType } from '@xterm/addon-ligatures';
import type { ProgressAddon as ProgressAddonType } from '@xterm/addon-progress';
import type { SearchAddon as SearchAddonType } from '@xterm/addon-search'; import type { SearchAddon as SearchAddonType } from '@xterm/addon-search';
import type { SerializeAddon as SerializeAddonType } from '@xterm/addon-serialize'; import type { SerializeAddon as SerializeAddonType } from '@xterm/addon-serialize';
import type { Unicode11Addon as Unicode11AddonType } from '@xterm/addon-unicode11'; import type { Unicode11Addon as Unicode11AddonType } from '@xterm/addon-unicode11';
@@ -16,6 +17,7 @@ export interface IXtermAddonNameToCtor {
clipboard: typeof ClipboardAddonType; clipboard: typeof ClipboardAddonType;
image: typeof ImageAddonType; image: typeof ImageAddonType;
ligatures: typeof LigaturesAddonType; ligatures: typeof LigaturesAddonType;
progress: typeof ProgressAddonType;
search: typeof SearchAddonType; search: typeof SearchAddonType;
serialize: typeof SerializeAddonType; serialize: typeof SerializeAddonType;
unicode11: typeof Unicode11AddonType; unicode11: typeof Unicode11AddonType;
@@ -42,6 +44,7 @@ export class XtermAddonImporter {
case 'clipboard': addon = (await importAMDNodeModule<typeof import('@xterm/addon-clipboard')>('@xterm/addon-clipboard', 'lib/addon-clipboard.js')).ClipboardAddon as IXtermAddonNameToCtor[T]; break; case 'clipboard': addon = (await importAMDNodeModule<typeof import('@xterm/addon-clipboard')>('@xterm/addon-clipboard', 'lib/addon-clipboard.js')).ClipboardAddon as IXtermAddonNameToCtor[T]; break;
case 'image': addon = (await importAMDNodeModule<typeof import('@xterm/addon-image')>('@xterm/addon-image', 'lib/addon-image.js')).ImageAddon as IXtermAddonNameToCtor[T]; break; case 'image': addon = (await importAMDNodeModule<typeof import('@xterm/addon-image')>('@xterm/addon-image', 'lib/addon-image.js')).ImageAddon as IXtermAddonNameToCtor[T]; break;
case 'ligatures': addon = (await importAMDNodeModule<typeof import('@xterm/addon-ligatures')>('@xterm/addon-ligatures', 'lib/addon-ligatures.js')).LigaturesAddon as IXtermAddonNameToCtor[T]; break; case 'ligatures': addon = (await importAMDNodeModule<typeof import('@xterm/addon-ligatures')>('@xterm/addon-ligatures', 'lib/addon-ligatures.js')).LigaturesAddon as IXtermAddonNameToCtor[T]; break;
case 'progress': addon = (await importAMDNodeModule<typeof import('@xterm/addon-progress')>('@xterm/addon-progress', 'lib/addon-progress.js')).ProgressAddon as IXtermAddonNameToCtor[T]; break;
case 'search': addon = (await importAMDNodeModule<typeof import('@xterm/addon-search')>('@xterm/addon-search', 'lib/addon-search.js')).SearchAddon as IXtermAddonNameToCtor[T]; break; case 'search': addon = (await importAMDNodeModule<typeof import('@xterm/addon-search')>('@xterm/addon-search', 'lib/addon-search.js')).SearchAddon as IXtermAddonNameToCtor[T]; break;
case 'serialize': addon = (await importAMDNodeModule<typeof import('@xterm/addon-serialize')>('@xterm/addon-serialize', 'lib/addon-serialize.js')).SerializeAddon as IXtermAddonNameToCtor[T]; break; case 'serialize': addon = (await importAMDNodeModule<typeof import('@xterm/addon-serialize')>('@xterm/addon-serialize', 'lib/addon-serialize.js')).SerializeAddon as IXtermAddonNameToCtor[T]; break;
case 'unicode11': addon = (await importAMDNodeModule<typeof import('@xterm/addon-unicode11')>('@xterm/addon-unicode11', 'lib/addon-unicode11.js')).Unicode11Addon as IXtermAddonNameToCtor[T]; break; case 'unicode11': addon = (await importAMDNodeModule<typeof import('@xterm/addon-unicode11')>('@xterm/addon-unicode11', 'lib/addon-unicode11.js')).Unicode11Addon as IXtermAddonNameToCtor[T]; break;

View File

@@ -43,6 +43,7 @@ import { AccessibilitySignal, IAccessibilitySignalService } from '../../../../..
import { scrollbarSliderActiveBackground, scrollbarSliderBackground, scrollbarSliderHoverBackground } from '../../../../../platform/theme/common/colorRegistry.js'; import { scrollbarSliderActiveBackground, scrollbarSliderBackground, scrollbarSliderHoverBackground } from '../../../../../platform/theme/common/colorRegistry.js';
import { XtermAddonImporter } from './xtermAddonImporter.js'; import { XtermAddonImporter } from './xtermAddonImporter.js';
import { equals } from '../../../../../base/common/objects.js'; import { equals } from '../../../../../base/common/objects.js';
import type { IProgressState } from '@xterm/addon-progress';
const enum RenderConstants { const enum RenderConstants {
SmoothScrollDuration = 125 SmoothScrollDuration = 125
@@ -99,6 +100,8 @@ export class XtermTerminal extends Disposable implements IXtermTerminal, IDetach
private _isPhysicalMouseWheel = MouseWheelClassifier.INSTANCE.isPhysicalMouseWheel(); private _isPhysicalMouseWheel = MouseWheelClassifier.INSTANCE.isPhysicalMouseWheel();
private _lastInputEvent: string | undefined; private _lastInputEvent: string | undefined;
get lastInputEvent(): string | undefined { return this._lastInputEvent; } get lastInputEvent(): string | undefined { return this._lastInputEvent; }
private _progressState: IProgressState = { state: 0, value: 0 };
get progressState(): IProgressState { return this._progressState; }
// Always on addons // Always on addons
private _markNavigationAddon: MarkNavigationAddon; private _markNavigationAddon: MarkNavigationAddon;
@@ -141,6 +144,8 @@ export class XtermTerminal extends Disposable implements IXtermTerminal, IDetach
readonly onDidChangeFocus = this._onDidChangeFocus.event; readonly onDidChangeFocus = this._onDidChangeFocus.event;
private readonly _onDidDispose = this._register(new Emitter<void>()); private readonly _onDidDispose = this._register(new Emitter<void>());
readonly onDidDispose = this._onDidDispose.event; readonly onDidDispose = this._onDidDispose.event;
private readonly _onDidChangeProgress = this._register(new Emitter<IProgressState>());
readonly onDidChangeProgress = this._onDidChangeProgress.event;
get markTracker(): IMarkTracker { return this._markNavigationAddon; } get markTracker(): IMarkTracker { return this._markNavigationAddon; }
get shellIntegration(): IShellIntegration { return this._shellIntegrationAddon; } get shellIntegration(): IShellIntegration { return this._shellIntegrationAddon; }
@@ -286,6 +291,22 @@ export class XtermTerminal extends Disposable implements IXtermTerminal, IDetach
}); });
this.raw.loadAddon(this._clipboardAddon); this.raw.loadAddon(this._clipboardAddon);
}); });
this._xtermAddonLoader.importAddon('progress').then(ProgressAddon => {
if (this._store.isDisposed) {
return;
}
const progressAddon = this._instantiationService.createInstance(ProgressAddon);
this.raw.loadAddon(progressAddon);
const updateProgress = () => {
if (!equals(this._progressState, progressAddon.progress)) {
this._progressState = progressAddon.progress;
this._onDidChangeProgress.fire(this._progressState);
}
};
// TODO: Remove ! when addon-progress updates
this._register(progressAddon.onChange!(() => updateProgress()));
updateProgress();
});
this._anyTerminalFocusContextKey = TerminalContextKeys.focusInAny.bindTo(contextKeyService); this._anyTerminalFocusContextKey = TerminalContextKeys.focusInAny.bindTo(contextKeyService);
this._anyFocusedTerminalHasSelection = TerminalContextKeys.textSelectedInFocused.bindTo(contextKeyService); this._anyFocusedTerminalHasSelection = TerminalContextKeys.textSelectedInFocused.bindTo(contextKeyService);

View File

@@ -21,6 +21,7 @@ const terminalDescriptors = '\n- ' + [
'`\${workspaceFolderName}`: ' + localize('workspaceFolderName', "the `name` of the workspace in which the terminal was launched"), '`\${workspaceFolderName}`: ' + localize('workspaceFolderName', "the `name` of the workspace in which the terminal was launched"),
'`\${local}`: ' + localize('local', "indicates a local terminal in a remote workspace"), '`\${local}`: ' + localize('local', "indicates a local terminal in a remote workspace"),
'`\${process}`: ' + localize('process', "the name of the terminal process"), '`\${process}`: ' + localize('process', "the name of the terminal process"),
'`\${progress}`: ' + localize('progress', "the progress state as reported by the `OSC 9;4` sequence"),
'`\${separator}`: ' + localize('separator', "a conditional separator {0} that only shows when surrounded by variables with values or static text.", '(` - `)'), '`\${separator}`: ' + localize('separator', "a conditional separator {0} that only shows when surrounded by variables with values or static text.", '(` - `)'),
'`\${sequence}`: ' + localize('sequence', "the name provided to the terminal by the process"), '`\${sequence}`: ' + localize('sequence', "the name provided to the terminal by the process"),
'`\${task}`: ' + localize('task', "indicates this terminal is associated with a task"), '`\${task}`: ' + localize('task', "indicates this terminal is associated with a task"),