lean4monaco 1.0.46 → 1.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +75 -0
- package/dist/JuliaMono-Regular.ttf +0 -0
- package/dist/css/custom.css +7 -1
- package/dist/infowebview.d.ts +3 -4
- package/dist/infowebview.js +4 -4
- package/dist/lean4-infoview/codicon.ttf +0 -0
- package/dist/lean4-infoview/esm-shims/react-dom.d.ts +5 -0
- package/dist/lean4-infoview/esm-shims/react-jsx-runtime.d.ts +5 -0
- package/dist/lean4-infoview/esm-shims/react.d.ts +5 -0
- package/dist/lean4-infoview/index.css +4161 -0
- package/dist/lean4-infoview/index.d.ts +16 -0
- package/dist/lean4-infoview/index.development.js +37312 -0
- package/dist/lean4-infoview/index.production.min.js +1528 -0
- package/dist/lean4-infoview/infoview/collapsing.d.ts +12 -0
- package/dist/lean4-infoview/infoview/contexts.d.ts +10 -0
- package/dist/lean4-infoview/infoview/editorConnection.d.ts +22 -0
- package/dist/lean4-infoview/infoview/errors.d.ts +14 -0
- package/dist/lean4-infoview/infoview/event.d.ts +33 -0
- package/dist/lean4-infoview/infoview/goalLocation.d.ts +61 -0
- package/dist/lean4-infoview/infoview/goals.d.ts +46 -0
- package/dist/lean4-infoview/infoview/info.d.ts +18 -0
- package/dist/lean4-infoview/infoview/infos.d.ts +2 -0
- package/dist/lean4-infoview/infoview/interactiveCode.d.ts +19 -0
- package/dist/lean4-infoview/infoview/main.d.ts +13 -0
- package/dist/lean4-infoview/infoview/messages.d.ts +19 -0
- package/dist/lean4-infoview/infoview/rpcSessions.d.ts +11 -0
- package/dist/lean4-infoview/infoview/serverVersion.d.ts +10 -0
- package/dist/lean4-infoview/infoview/tooltips.d.ts +32 -0
- package/dist/lean4-infoview/infoview/traceExplorer.d.ts +11 -0
- package/dist/lean4-infoview/infoview/userWidget.d.ts +39 -0
- package/dist/lean4-infoview/infoview/util.d.ts +144 -0
- package/dist/lean4-infoview/loader.d.ts +20 -0
- package/dist/lean4-infoview/loader.development.js +1006 -0
- package/dist/lean4-infoview/loader.production.min.js +1 -0
- package/dist/lean4-infoview/react-dom.development.js +30537 -0
- package/dist/lean4-infoview/react-dom.production.min.js +21 -0
- package/dist/lean4-infoview/react-jsx-runtime.development.js +1362 -0
- package/dist/lean4-infoview/react-jsx-runtime.production.min.js +1 -0
- package/dist/lean4-infoview/react.development.js +2823 -0
- package/dist/lean4-infoview/react.production.min.js +1 -0
- package/dist/leanmonaco.js +5 -4
- package/dist/monaco-lean4/vscode-lean4/package.json +944 -0
- package/dist/monaco-lean4/vscode-lean4/src/abbreviation/AbbreviationFeature.d.ts +9 -0
- package/dist/monaco-lean4/vscode-lean4/src/abbreviation/AbbreviationFeature.js +20 -0
- package/dist/monaco-lean4/vscode-lean4/src/abbreviation/AbbreviationHoverProvider.d.ts +12 -0
- package/dist/monaco-lean4/vscode-lean4/src/abbreviation/AbbreviationHoverProvider.js +40 -0
- package/dist/monaco-lean4/vscode-lean4/src/abbreviation/AbbreviationRewriterFeature.d.ts +20 -0
- package/dist/monaco-lean4/vscode-lean4/src/abbreviation/AbbreviationRewriterFeature.js +79 -0
- package/dist/monaco-lean4/vscode-lean4/src/abbreviation/VSCodeAbbreviationConfig.d.ts +13 -0
- package/dist/monaco-lean4/vscode-lean4/src/abbreviation/VSCodeAbbreviationConfig.js +29 -0
- package/dist/monaco-lean4/vscode-lean4/src/abbreviation/VSCodeAbbreviationRewriter.d.ts +28 -0
- package/dist/monaco-lean4/vscode-lean4/src/abbreviation/VSCodeAbbreviationRewriter.js +124 -0
- package/dist/monaco-lean4/vscode-lean4/src/config.d.ts +33 -0
- package/dist/monaco-lean4/vscode-lean4/src/config.js +119 -0
- package/dist/monaco-lean4/vscode-lean4/src/diagnostics/setupNotifs.d.ts +27 -0
- package/dist/monaco-lean4/vscode-lean4/src/diagnostics/setupNotifs.js +133 -0
- package/dist/monaco-lean4/vscode-lean4/src/infoview.d.ts +69 -0
- package/dist/monaco-lean4/vscode-lean4/src/infoview.js +711 -0
- package/dist/monaco-lean4/vscode-lean4/src/leanclient.d.ts +67 -0
- package/dist/monaco-lean4/vscode-lean4/src/leanclient.js +443 -0
- package/dist/monaco-lean4/vscode-lean4/src/rpc.d.ts +16 -0
- package/dist/monaco-lean4/vscode-lean4/src/rpc.js +102 -0
- package/dist/monaco-lean4/vscode-lean4/src/taskgutter.d.ts +11 -0
- package/dist/monaco-lean4/vscode-lean4/src/taskgutter.js +130 -0
- package/dist/monaco-lean4/vscode-lean4/src/utils/batch.d.ts +37 -0
- package/dist/monaco-lean4/vscode-lean4/src/utils/batch.js +203 -0
- package/dist/monaco-lean4/vscode-lean4/src/utils/clientProvider.d.ts +41 -0
- package/dist/monaco-lean4/vscode-lean4/src/utils/clientProvider.js +205 -0
- package/dist/monaco-lean4/vscode-lean4/src/utils/converters.d.ts +16 -0
- package/dist/monaco-lean4/vscode-lean4/src/utils/converters.js +129 -0
- package/dist/monaco-lean4/vscode-lean4/src/utils/elan.d.ts +3 -0
- package/dist/monaco-lean4/vscode-lean4/src/utils/elan.js +4 -0
- package/dist/monaco-lean4/vscode-lean4/src/utils/envPath.d.ts +21 -0
- package/dist/monaco-lean4/vscode-lean4/src/utils/envPath.js +53 -0
- package/dist/monaco-lean4/vscode-lean4/src/utils/exturi.d.ts +35 -0
- package/dist/monaco-lean4/vscode-lean4/src/utils/exturi.js +136 -0
- package/dist/monaco-lean4/vscode-lean4/src/utils/fsHelper.d.ts +17 -0
- package/dist/monaco-lean4/vscode-lean4/src/utils/fsHelper.js +36 -0
- package/dist/monaco-lean4/vscode-lean4/src/utils/leanInstaller.d.ts +37 -0
- package/dist/monaco-lean4/vscode-lean4/src/utils/leanInstaller.js +210 -0
- package/dist/monaco-lean4/vscode-lean4/src/utils/logger.d.ts +7 -0
- package/dist/monaco-lean4/vscode-lean4/src/utils/logger.js +20 -0
- package/dist/monaco-lean4/vscode-lean4/src/utils/notifs.d.ts +24 -0
- package/dist/monaco-lean4/vscode-lean4/src/utils/notifs.js +110 -0
- package/dist/monaco-lean4/vscode-lean4/src/utils/projectInfo.d.ts +9 -0
- package/dist/monaco-lean4/vscode-lean4/src/utils/projectInfo.js +125 -0
- package/dist/monacoleanclient.d.ts +1 -2
- package/dist/monacoleanclient.js +3 -3
- package/dist/vscode-lean4/lean4-infoview/package.json +25 -23
- package/dist/vscode-lean4/lean4-infoview/src/infoview/highlightjs.css +210 -0
- package/dist/vscode-lean4/lean4-infoview/tsconfig.json +6 -2
- package/dist/vscode-lean4/lean4-infoview-api/package.json +1 -1
- package/dist/vscode-lean4/lean4-unicode-input/package.json +1 -1
- package/dist/vscode-lean4/lean4-unicode-input/src/abbreviations.json +12 -12
- package/dist/vscode-lean4/lean4-unicode-input-component/package.json +2 -2
- package/dist/vscode-lean4/package-lock.json +6129 -3245
- package/dist/vscode-lean4/vscode-lean4/language-configuration.json +1 -1
- package/dist/vscode-lean4/vscode-lean4/loogleview/static/index.css +19 -16
- package/dist/vscode-lean4/vscode-lean4/media/diagnostic-gutter-icons/error-dark.svg +91 -0
- package/dist/vscode-lean4/vscode-lean4/media/diagnostic-gutter-icons/error-i-dark.svg +114 -0
- package/dist/vscode-lean4/vscode-lean4/media/diagnostic-gutter-icons/error-i-light.svg +114 -0
- package/dist/vscode-lean4/vscode-lean4/media/diagnostic-gutter-icons/error-i-passthrough-dark.svg +109 -0
- package/dist/vscode-lean4/vscode-lean4/media/diagnostic-gutter-icons/error-i-passthrough-light.svg +109 -0
- package/dist/vscode-lean4/vscode-lean4/media/diagnostic-gutter-icons/error-init-dark.svg +100 -0
- package/dist/vscode-lean4/vscode-lean4/media/diagnostic-gutter-icons/error-init-light.svg +100 -0
- package/dist/vscode-lean4/vscode-lean4/media/diagnostic-gutter-icons/error-l-dark.svg +123 -0
- package/dist/vscode-lean4/vscode-lean4/media/diagnostic-gutter-icons/error-l-light.svg +123 -0
- package/dist/vscode-lean4/vscode-lean4/media/diagnostic-gutter-icons/error-l-passthrough-dark.svg +109 -0
- package/dist/vscode-lean4/vscode-lean4/media/diagnostic-gutter-icons/error-l-passthrough-light.svg +109 -0
- package/dist/vscode-lean4/vscode-lean4/media/diagnostic-gutter-icons/error-light.svg +91 -0
- package/dist/vscode-lean4/vscode-lean4/media/diagnostic-gutter-icons/error-t-dark.svg +123 -0
- package/dist/vscode-lean4/vscode-lean4/media/diagnostic-gutter-icons/error-t-light.svg +123 -0
- package/dist/vscode-lean4/vscode-lean4/media/diagnostic-gutter-icons/error-t-passthrough-dark.svg +118 -0
- package/dist/vscode-lean4/vscode-lean4/media/diagnostic-gutter-icons/error-t-passthrough-light.svg +118 -0
- package/dist/vscode-lean4/vscode-lean4/media/diagnostic-gutter-icons/goals-accomplished-checkmark-dark.svg +138 -0
- package/dist/vscode-lean4/vscode-lean4/media/diagnostic-gutter-icons/goals-accomplished-checkmark-i-passthrough-dark.svg +160 -0
- package/dist/vscode-lean4/vscode-lean4/media/diagnostic-gutter-icons/goals-accomplished-checkmark-i-passthrough-light.svg +160 -0
- package/dist/vscode-lean4/vscode-lean4/media/diagnostic-gutter-icons/goals-accomplished-checkmark-l-passthrough-dark.svg +158 -0
- package/dist/vscode-lean4/vscode-lean4/media/diagnostic-gutter-icons/goals-accomplished-checkmark-l-passthrough-light.svg +158 -0
- package/dist/vscode-lean4/vscode-lean4/media/diagnostic-gutter-icons/goals-accomplished-checkmark-light.svg +138 -0
- package/dist/vscode-lean4/vscode-lean4/media/diagnostic-gutter-icons/goals-accomplished-checkmark-t-passthrough-dark.svg +169 -0
- package/dist/vscode-lean4/vscode-lean4/media/diagnostic-gutter-icons/goals-accomplished-checkmark-t-passthrough-light.svg +169 -0
- package/dist/vscode-lean4/vscode-lean4/media/diagnostic-gutter-icons/goals-accomplished-circled-checkmark-dark.svg +147 -0
- package/dist/vscode-lean4/vscode-lean4/media/diagnostic-gutter-icons/goals-accomplished-circled-checkmark-i-passthrough-dark.svg +170 -0
- package/dist/vscode-lean4/vscode-lean4/media/diagnostic-gutter-icons/goals-accomplished-circled-checkmark-i-passthrough-light.svg +170 -0
- package/dist/vscode-lean4/vscode-lean4/media/diagnostic-gutter-icons/goals-accomplished-circled-checkmark-l-passthrough-dark.svg +167 -0
- package/dist/vscode-lean4/vscode-lean4/media/diagnostic-gutter-icons/goals-accomplished-circled-checkmark-l-passthrough-light.svg +167 -0
- package/dist/vscode-lean4/vscode-lean4/media/diagnostic-gutter-icons/goals-accomplished-circled-checkmark-light.svg +147 -0
- package/dist/vscode-lean4/vscode-lean4/media/diagnostic-gutter-icons/goals-accomplished-circled-checkmark-t-passthrough-dark.svg +179 -0
- package/dist/vscode-lean4/vscode-lean4/media/diagnostic-gutter-icons/goals-accomplished-circled-checkmark-t-passthrough-light.svg +179 -0
- package/dist/vscode-lean4/vscode-lean4/media/diagnostic-gutter-icons/goals-accomplished-octopus-dark.svg +165 -0
- package/dist/vscode-lean4/vscode-lean4/media/diagnostic-gutter-icons/goals-accomplished-octopus-i-passthrough-dark.svg +187 -0
- package/dist/vscode-lean4/vscode-lean4/media/diagnostic-gutter-icons/goals-accomplished-octopus-i-passthrough-light.svg +187 -0
- package/dist/vscode-lean4/vscode-lean4/media/diagnostic-gutter-icons/goals-accomplished-octopus-l-passthrough-dark.svg +185 -0
- package/dist/vscode-lean4/vscode-lean4/media/diagnostic-gutter-icons/goals-accomplished-octopus-l-passthrough-light.svg +185 -0
- package/dist/vscode-lean4/vscode-lean4/media/diagnostic-gutter-icons/goals-accomplished-octopus-light.svg +165 -0
- package/dist/vscode-lean4/vscode-lean4/media/diagnostic-gutter-icons/goals-accomplished-octopus-t-passthrough-dark.svg +196 -0
- package/dist/vscode-lean4/vscode-lean4/media/diagnostic-gutter-icons/goals-accomplished-octopus-t-passthrough-light.svg +196 -0
- package/dist/vscode-lean4/vscode-lean4/media/diagnostic-gutter-icons/goals-accomplished-tada-dark.svg +184 -0
- package/dist/vscode-lean4/vscode-lean4/media/diagnostic-gutter-icons/goals-accomplished-tada-i-passthrough-dark.svg +206 -0
- package/dist/vscode-lean4/vscode-lean4/media/diagnostic-gutter-icons/goals-accomplished-tada-i-passthrough-light.svg +206 -0
- package/dist/vscode-lean4/vscode-lean4/media/diagnostic-gutter-icons/goals-accomplished-tada-l-passthrough-dark.svg +204 -0
- package/dist/vscode-lean4/vscode-lean4/media/diagnostic-gutter-icons/goals-accomplished-tada-l-passthrough-light.svg +204 -0
- package/dist/vscode-lean4/vscode-lean4/media/diagnostic-gutter-icons/goals-accomplished-tada-light.svg +184 -0
- package/dist/vscode-lean4/vscode-lean4/media/diagnostic-gutter-icons/goals-accomplished-tada-t-passthrough-dark.svg +215 -0
- package/dist/vscode-lean4/vscode-lean4/media/diagnostic-gutter-icons/goals-accomplished-tada-t-passthrough-light.svg +215 -0
- package/dist/vscode-lean4/vscode-lean4/media/diagnostic-gutter-icons/warning-dark.svg +132 -0
- package/dist/vscode-lean4/vscode-lean4/media/diagnostic-gutter-icons/warning-i-passthrough-dark.svg +154 -0
- package/dist/vscode-lean4/vscode-lean4/media/diagnostic-gutter-icons/warning-i-passthrough-light.svg +154 -0
- package/dist/vscode-lean4/vscode-lean4/media/diagnostic-gutter-icons/warning-l-passthrough-dark.svg +152 -0
- package/dist/vscode-lean4/vscode-lean4/media/diagnostic-gutter-icons/warning-l-passthrough-light.svg +152 -0
- package/dist/vscode-lean4/vscode-lean4/media/diagnostic-gutter-icons/warning-light.svg +132 -0
- package/dist/vscode-lean4/vscode-lean4/media/diagnostic-gutter-icons/warning-t-passthrough-dark.svg +163 -0
- package/dist/vscode-lean4/vscode-lean4/media/diagnostic-gutter-icons/warning-t-passthrough-light.svg +163 -0
- package/dist/vscode-lean4/vscode-lean4/moogleview/static/index.css +198 -0
- package/dist/vscode-lean4/vscode-lean4/moogleview/tsconfig.json +10 -0
- package/dist/vscode-lean4/vscode-lean4/package.json +638 -18
- package/dist/vscode-lean4/vscode-lean4/src/abbreviation/AbbreviationFeature.d.ts +2 -2
- package/dist/vscode-lean4/vscode-lean4/src/abbreviation/AbbreviationFeature.js +2 -2
- package/dist/vscode-lean4/vscode-lean4/src/abbreviation/AbbreviationRewriterFeature.d.ts +2 -3
- package/dist/vscode-lean4/vscode-lean4/src/abbreviation/AbbreviationRewriterFeature.js +3 -5
- package/dist/vscode-lean4/vscode-lean4/src/abbreviation/VSCodeAbbreviationRewriter.d.ts +1 -2
- package/dist/vscode-lean4/vscode-lean4/src/abbreviation/VSCodeAbbreviationRewriter.js +4 -8
- package/dist/vscode-lean4/vscode-lean4/src/config.d.ts +14 -1
- package/dist/vscode-lean4/vscode-lean4/src/config.js +56 -5
- package/dist/vscode-lean4/vscode-lean4/src/diagnostics/setupDiagnoser.d.ts +36 -5
- package/dist/vscode-lean4/vscode-lean4/src/diagnostics/setupDiagnoser.js +59 -23
- package/dist/vscode-lean4/vscode-lean4/src/diagnostics/setupDiagnostics.d.ts +22 -17
- package/dist/vscode-lean4/vscode-lean4/src/diagnostics/setupDiagnostics.js +182 -119
- package/dist/vscode-lean4/vscode-lean4/src/diagnostics/setupNotifs.d.ts +33 -20
- package/dist/vscode-lean4/vscode-lean4/src/diagnostics/setupNotifs.js +235 -89
- package/dist/vscode-lean4/vscode-lean4/src/infoview.d.ts +7 -18
- package/dist/vscode-lean4/vscode-lean4/src/infoview.js +217 -102
- package/dist/vscode-lean4/vscode-lean4/src/leanclient.d.ts +12 -7
- package/dist/vscode-lean4/vscode-lean4/src/leanclient.js +187 -64
- package/dist/vscode-lean4/vscode-lean4/src/taskgutter.d.ts +35 -3
- package/dist/vscode-lean4/vscode-lean4/src/taskgutter.js +533 -93
- package/dist/vscode-lean4/vscode-lean4/src/utils/batch.d.ts +12 -4
- package/dist/vscode-lean4/vscode-lean4/src/utils/batch.js +78 -72
- package/dist/vscode-lean4/vscode-lean4/src/utils/clientProvider.d.ts +9 -9
- package/dist/vscode-lean4/vscode-lean4/src/utils/clientProvider.js +121 -77
- package/dist/vscode-lean4/vscode-lean4/src/utils/converters.d.ts +15 -0
- package/dist/vscode-lean4/vscode-lean4/src/utils/converters.js +9 -0
- package/dist/vscode-lean4/vscode-lean4/src/utils/elan.d.ts +179 -1
- package/dist/vscode-lean4/vscode-lean4/src/utils/elan.js +422 -3
- package/dist/vscode-lean4/vscode-lean4/src/utils/exturi.d.ts +3 -1
- package/dist/vscode-lean4/vscode-lean4/src/utils/exturi.js +11 -11
- package/dist/vscode-lean4/vscode-lean4/src/utils/groupBy.d.ts +2 -0
- package/dist/vscode-lean4/vscode-lean4/src/utils/groupBy.js +17 -0
- package/dist/vscode-lean4/vscode-lean4/src/utils/internalErrors.d.ts +2 -0
- package/dist/vscode-lean4/vscode-lean4/src/utils/internalErrors.js +35 -0
- package/dist/vscode-lean4/vscode-lean4/src/utils/leanCmdRunner.d.ts +34 -0
- package/dist/vscode-lean4/vscode-lean4/src/utils/leanCmdRunner.js +249 -0
- package/dist/vscode-lean4/vscode-lean4/src/utils/leanEditorProvider.d.ts +83 -0
- package/dist/vscode-lean4/vscode-lean4/src/utils/leanEditorProvider.js +323 -0
- package/dist/vscode-lean4/vscode-lean4/src/utils/leanInstaller.d.ts +41 -12
- package/dist/vscode-lean4/vscode-lean4/src/utils/leanInstaller.js +245 -128
- package/dist/vscode-lean4/vscode-lean4/src/utils/notifs.d.ts +27 -22
- package/dist/vscode-lean4/vscode-lean4/src/utils/notifs.js +177 -82
- package/dist/vscode-lean4/vscode-lean4/src/utils/projectInfo.d.ts +11 -4
- package/dist/vscode-lean4/vscode-lean4/src/utils/projectInfo.js +18 -16
- package/dist/vscode-lean4/vscode-lean4/src/utils/semverRegex.d.ts +1 -0
- package/dist/vscode-lean4/vscode-lean4/src/utils/semverRegex.js +2 -0
- package/dist/vscode-lean4/vscode-lean4/src/utils/viewColumn.d.ts +3 -0
- package/dist/vscode-lean4/vscode-lean4/src/utils/viewColumn.js +22 -0
- package/dist/vscode-lean4/vscode-lean4/tsconfig.json +2 -1
- package/dist/vscode-lean4/vscode-lean4/webview/tsconfig.json +3 -1
- package/dist/vscode.css +7 -0
- package/package.json +7 -5
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { EventEmitter, window } from 'vscode';
|
|
2
|
-
import { getPowerShellPath, isRunningTest } from '../config';
|
|
3
|
-
import { ExecutionExitCode,
|
|
4
|
-
import { elanSelfUpdate } from './elan';
|
|
2
|
+
import { getPowerShellPath, isRunningTest, setAlwaysAskBeforeInstallingLeanVersions } from '../config';
|
|
3
|
+
import { ExecutionExitCode, displayResultError } from './batch';
|
|
4
|
+
import { elanSelfUninstall, elanSelfUpdate, elanVersion, isElanEagerResolutionVersion } from './elan';
|
|
5
5
|
import { logger } from './logger';
|
|
6
|
-
import {
|
|
6
|
+
import { displayNotification, displayNotificationWithInput, displayNotificationWithOptionalInput, displayStickyNotificationWithOptionalInput, } from './notifs';
|
|
7
7
|
export class LeanVersion {
|
|
8
8
|
version;
|
|
9
9
|
error;
|
|
@@ -13,11 +13,8 @@ export class LeanInstaller {
|
|
|
13
13
|
leanInstallerWindows = 'https://raw.githubusercontent.com/leanprover/elan/master/elan-init.ps1';
|
|
14
14
|
outputChannel;
|
|
15
15
|
prompting = false;
|
|
16
|
-
|
|
16
|
+
pendingOperation;
|
|
17
17
|
freshInstallDefaultToolchain;
|
|
18
|
-
elanDefaultToolchain = ''; // the default toolchain according to elan (toolchain marked with '(default)')
|
|
19
|
-
workspaceSuffix = '(workspace override)';
|
|
20
|
-
defaultSuffix = '(default)';
|
|
21
18
|
promptUser = true;
|
|
22
19
|
// This event is raised whenever a version change happens.
|
|
23
20
|
// The event provides the workspace Uri where the change happened.
|
|
@@ -57,154 +54,274 @@ export class LeanInstaller {
|
|
|
57
54
|
const finalizer = () => {
|
|
58
55
|
this.prompting = false;
|
|
59
56
|
};
|
|
60
|
-
|
|
57
|
+
displayNotificationWithOptionalInput('Error', message, [{ input: 'Restart Lean', action: () => this.installChangedEmitter.fire(packageUri) }], finalizer);
|
|
61
58
|
}
|
|
62
59
|
handleLakeFileChanged(packageUri) {
|
|
63
60
|
void this.showRestartPromptAndRestart('Lake file configuration changed', packageUri);
|
|
64
61
|
}
|
|
65
|
-
|
|
66
|
-
let
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
}
|
|
73
|
-
|
|
62
|
+
installElanPrompt(reason) {
|
|
63
|
+
let message;
|
|
64
|
+
if (reason !== undefined) {
|
|
65
|
+
message = `${reason} Do you wish to install Lean's version manager Elan?`;
|
|
66
|
+
}
|
|
67
|
+
else {
|
|
68
|
+
message = "This command will install Lean's version manager Elan.\n\n" + 'Do you wish to proceed?';
|
|
69
|
+
}
|
|
70
|
+
const item = 'Install Elan';
|
|
71
|
+
return { message, item };
|
|
74
72
|
}
|
|
75
|
-
async
|
|
76
|
-
if (this.
|
|
77
|
-
|
|
73
|
+
async displayInstallElanPromptWithItems(severity, reason, otherItems = [], defaultItem) {
|
|
74
|
+
if (!this.getPromptUser()) {
|
|
75
|
+
// Used in tests
|
|
76
|
+
await this.autoInstall();
|
|
77
|
+
return { kind: 'InstallElan', success: true };
|
|
78
78
|
}
|
|
79
|
-
const
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
result = this.removeSuffix(s);
|
|
84
|
-
}
|
|
85
|
-
});
|
|
86
|
-
this.elanDefaultToolchain = result;
|
|
87
|
-
return result;
|
|
88
|
-
}
|
|
89
|
-
async elanListToolChains(packageUri) {
|
|
90
|
-
try {
|
|
91
|
-
const cmd = 'elan';
|
|
92
|
-
const options = ['toolchain', 'list'];
|
|
93
|
-
const cwd = packageUri.scheme === 'file' ? packageUri.fsPath : undefined;
|
|
94
|
-
const stdout = (await batchExecute(cmd, options, cwd)).stdout;
|
|
95
|
-
if (!stdout) {
|
|
96
|
-
throw new Error('elan toolchain list returned no output.');
|
|
97
|
-
}
|
|
98
|
-
const result = [];
|
|
99
|
-
stdout.split(/\r?\n/).forEach(s => {
|
|
100
|
-
s = s.trim();
|
|
101
|
-
if (s !== '') {
|
|
102
|
-
result.push(s);
|
|
103
|
-
}
|
|
104
|
-
});
|
|
105
|
-
return result;
|
|
79
|
+
const p = this.installElanPrompt(reason);
|
|
80
|
+
const choice = await displayNotificationWithInput(severity, p.message, [p.item, ...otherItems], defaultItem);
|
|
81
|
+
if (choice === undefined) {
|
|
82
|
+
return undefined;
|
|
106
83
|
}
|
|
107
|
-
|
|
108
|
-
return
|
|
84
|
+
if (choice === p.item) {
|
|
85
|
+
return { kind: 'InstallElan', success: (await this.installElanAndDisplaySettingPrompt()) === 'Success' };
|
|
109
86
|
}
|
|
87
|
+
return { kind: 'OtherItem', choice };
|
|
110
88
|
}
|
|
111
|
-
async
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
const filterVersion = /elan (\d+)\.\d+\..+/;
|
|
116
|
-
const match = filterVersion.exec(result.stdout);
|
|
117
|
-
return match !== null;
|
|
89
|
+
async displayInstallElanPrompt(severity, reason) {
|
|
90
|
+
const r = await this.displayInstallElanPromptWithItems(severity, reason);
|
|
91
|
+
if (r !== undefined && r.kind === 'InstallElan') {
|
|
92
|
+
return r.success;
|
|
118
93
|
}
|
|
119
|
-
|
|
120
|
-
|
|
94
|
+
return false;
|
|
95
|
+
}
|
|
96
|
+
displayStickyInstallElanPrompt(severity, reason,
|
|
97
|
+
// eslint-disable-next-line @typescript-eslint/no-redundant-type-constituents
|
|
98
|
+
options, otherItems = []) {
|
|
99
|
+
const p = this.installElanPrompt(reason);
|
|
100
|
+
const installElanItem = {
|
|
101
|
+
input: p.item,
|
|
102
|
+
continueDisplaying: false,
|
|
103
|
+
action: async () => {
|
|
104
|
+
await this.installElanAndDisplaySettingPrompt();
|
|
105
|
+
},
|
|
106
|
+
};
|
|
107
|
+
return displayStickyNotificationWithOptionalInput(severity, p.message, options, [
|
|
108
|
+
installElanItem,
|
|
109
|
+
...otherItems,
|
|
110
|
+
]);
|
|
111
|
+
}
|
|
112
|
+
updateElanPrompt(mode) {
|
|
113
|
+
switch (mode.kind) {
|
|
114
|
+
case 'Manual':
|
|
115
|
+
return {
|
|
116
|
+
message: "This command will update Lean's version manager Elan to its most recent version.\n\n" +
|
|
117
|
+
'Do you wish to proceed?',
|
|
118
|
+
item: 'Update Elan',
|
|
119
|
+
};
|
|
120
|
+
case 'Outdated':
|
|
121
|
+
return {
|
|
122
|
+
message: `Lean's version manager Elan is outdated: the installed version is ${mode.versions.currentVersion.toString()}, but a version of ${mode.versions.recommendedVersion.toString()} is recommended.\n\n` +
|
|
123
|
+
'Do you wish to update Elan?',
|
|
124
|
+
item: 'Update Elan',
|
|
125
|
+
};
|
|
121
126
|
}
|
|
122
127
|
}
|
|
123
|
-
async
|
|
124
|
-
if (
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
return true;
|
|
128
|
+
async displayElanUpdateSuccessfulPrompt(currentVersion) {
|
|
129
|
+
if (isElanEagerResolutionVersion(currentVersion)) {
|
|
130
|
+
displayNotification('Information', 'Elan update successful!');
|
|
131
|
+
return;
|
|
128
132
|
}
|
|
129
|
-
const
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
133
|
+
const prompt = 'Elan update successful!\n\n' +
|
|
134
|
+
'Do you want Elan in VS Code to continue downloading and installing Lean versions automatically, or would you prefer it to ask for confirmation before downloading and installing new Lean versions?\n' +
|
|
135
|
+
'Asking for confirmation is especially desirable if you are ever using a limited internet data plan or your internet connection tends to be slow, whereas automatic installs are less tedious on fast and unlimited internet connections.';
|
|
136
|
+
const choice = await displayNotificationWithInput('Information', prompt, ['Always Ask For Confirmation'], 'Install Lean Versions Automatically');
|
|
137
|
+
if (choice === 'Always Ask For Confirmation') {
|
|
138
|
+
await setAlwaysAskBeforeInstallingLeanVersions(true);
|
|
139
|
+
}
|
|
140
|
+
if (choice === 'Install Lean Versions Automatically') {
|
|
141
|
+
await setAlwaysAskBeforeInstallingLeanVersions(false);
|
|
134
142
|
}
|
|
135
|
-
await this.installElan();
|
|
136
|
-
return true;
|
|
137
143
|
}
|
|
138
|
-
async
|
|
139
|
-
const
|
|
140
|
-
|
|
141
|
-
|
|
144
|
+
async updateElan(currentVersion) {
|
|
145
|
+
const r = await this.performOperation('Update', async () => {
|
|
146
|
+
if (currentVersion.compare('3.1.0') === 0) {
|
|
147
|
+
// `elan self update` was broken in elan 3.1.0, so we need to take a different approach to updating elan here.
|
|
148
|
+
const installElanResult = await this.installElanAndDisplaySettingPrompt();
|
|
149
|
+
if (installElanResult !== 'Success') {
|
|
150
|
+
return false;
|
|
151
|
+
}
|
|
152
|
+
await this.displayElanUpdateSuccessfulPrompt(currentVersion);
|
|
153
|
+
return true;
|
|
154
|
+
}
|
|
155
|
+
const elanSelfUpdateResult = await elanSelfUpdate(this.outputChannel, 'Update Elan');
|
|
156
|
+
if (elanSelfUpdateResult.exitCode !== ExecutionExitCode.Success) {
|
|
157
|
+
displayResultError(elanSelfUpdateResult, "Cannot update Elan. If you suspect that this is due to the way that you have set up Elan (e.g. from a package repository that ships an outdated version of Elan), you can disable these warnings using the 'Lean4: Show Setup Warnings' setting under 'File' > 'Preferences' > 'Settings'.");
|
|
158
|
+
return false;
|
|
159
|
+
}
|
|
160
|
+
await this.displayElanUpdateSuccessfulPrompt(currentVersion);
|
|
161
|
+
return true;
|
|
162
|
+
});
|
|
163
|
+
if (r === 'PendingOperation') {
|
|
142
164
|
return false;
|
|
143
165
|
}
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
166
|
+
return r;
|
|
167
|
+
}
|
|
168
|
+
async displayUpdateElanPromptWithItems(severity, mode, otherItems = [], defaultItem) {
|
|
169
|
+
const p = this.updateElanPrompt(mode);
|
|
170
|
+
const choice = await displayNotificationWithInput(severity, p.message, [p.item, ...otherItems], defaultItem);
|
|
171
|
+
if (choice === undefined) {
|
|
172
|
+
return undefined;
|
|
173
|
+
}
|
|
174
|
+
if (choice === p.item) {
|
|
175
|
+
return { kind: 'UpdateElan', success: await this.updateElan(mode.versions.currentVersion) };
|
|
148
176
|
}
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
177
|
+
return { kind: 'OtherItem', choice };
|
|
178
|
+
}
|
|
179
|
+
async displayUpdateElanPrompt(severity, mode) {
|
|
180
|
+
const r = await this.displayUpdateElanPromptWithItems(severity, mode);
|
|
181
|
+
if (r !== undefined && r.kind === 'UpdateElan') {
|
|
182
|
+
return r.success;
|
|
183
|
+
}
|
|
184
|
+
return false;
|
|
185
|
+
}
|
|
186
|
+
displayStickyUpdateElanPrompt(severity, mode,
|
|
187
|
+
// eslint-disable-next-line @typescript-eslint/no-redundant-type-constituents
|
|
188
|
+
options, otherItems = []) {
|
|
189
|
+
const p = this.updateElanPrompt(mode);
|
|
190
|
+
const updateElanItem = {
|
|
191
|
+
input: p.item,
|
|
192
|
+
continueDisplaying: false,
|
|
193
|
+
action: async () => {
|
|
194
|
+
await this.updateElan(mode.versions.currentVersion);
|
|
195
|
+
},
|
|
196
|
+
};
|
|
197
|
+
return displayStickyNotificationWithOptionalInput(severity, p.message, options, [updateElanItem, ...otherItems]);
|
|
198
|
+
}
|
|
199
|
+
async displayManualUpdateElanPrompt() {
|
|
200
|
+
const versionResult = await elanVersion();
|
|
201
|
+
switch (versionResult.kind) {
|
|
202
|
+
case 'Success':
|
|
203
|
+
await this.displayUpdateElanPrompt('Information', {
|
|
204
|
+
kind: 'Manual',
|
|
205
|
+
versions: { currentVersion: versionResult.version },
|
|
206
|
+
});
|
|
207
|
+
break;
|
|
208
|
+
case 'ElanNotInstalled':
|
|
209
|
+
displayNotification('Error', 'Elan is not installed.');
|
|
210
|
+
break;
|
|
211
|
+
case 'ExecutionError':
|
|
212
|
+
displayNotification('Error', `Error while determining current Elan version: ${versionResult.message}`);
|
|
213
|
+
break;
|
|
153
214
|
}
|
|
154
|
-
return true;
|
|
155
215
|
}
|
|
156
216
|
async autoInstall() {
|
|
157
217
|
logger.log('[LeanInstaller] Installing Elan ...');
|
|
158
218
|
await this.installElan();
|
|
159
219
|
logger.log('[LeanInstaller] Elan installed');
|
|
160
220
|
}
|
|
221
|
+
async installElanAndDisplaySettingPrompt() {
|
|
222
|
+
const r = await this.installElan();
|
|
223
|
+
if (r !== 'Success') {
|
|
224
|
+
return r;
|
|
225
|
+
}
|
|
226
|
+
const prompt = 'Elan installation successful!\n\n' +
|
|
227
|
+
'Do you want Elan in VS Code to download and install Lean versions automatically, or would you prefer it to ask for confirmation before downloading and installing new Lean versions?\n' +
|
|
228
|
+
'Asking for confirmation is especially desirable if you are ever using a limited internet data plan or your internet connection tends to be slow, whereas automatic installs are less tedious on fast and unlimited internet connections.';
|
|
229
|
+
const choice = await displayNotificationWithInput('Information', prompt, ['Always Ask For Confirmation'], 'Install Lean Versions Automatically');
|
|
230
|
+
if (choice === 'Always Ask For Confirmation') {
|
|
231
|
+
await setAlwaysAskBeforeInstallingLeanVersions(true);
|
|
232
|
+
}
|
|
233
|
+
if (choice === 'Install Lean Versions Automatically') {
|
|
234
|
+
await setAlwaysAskBeforeInstallingLeanVersions(false);
|
|
235
|
+
}
|
|
236
|
+
return r;
|
|
237
|
+
}
|
|
161
238
|
async installElan() {
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
}
|
|
180
|
-
else {
|
|
181
|
-
logger.log('[LeanInstaller] ignoring terminal closed: ' + t.name + ', waiting for: ' + terminalName);
|
|
182
|
-
}
|
|
239
|
+
return await this.performOperation('Install', async () => {
|
|
240
|
+
const terminalName = 'Lean installation via elan';
|
|
241
|
+
let terminalOptions = { name: terminalName };
|
|
242
|
+
if (process.platform === 'win32') {
|
|
243
|
+
terminalOptions = { name: terminalName, shellPath: getPowerShellPath() };
|
|
244
|
+
}
|
|
245
|
+
const terminal = window.createTerminal(terminalOptions);
|
|
246
|
+
terminal.show();
|
|
247
|
+
// We register a listener, to restart the Lean extension once elan has finished.
|
|
248
|
+
const resultPromise = new Promise(function (resolve, reject) {
|
|
249
|
+
window.onDidCloseTerminal(async (t) => {
|
|
250
|
+
if (t === terminal) {
|
|
251
|
+
resolve(true);
|
|
252
|
+
}
|
|
253
|
+
else {
|
|
254
|
+
logger.log('[LeanInstaller] ignoring terminal closed: ' + t.name + ', waiting for: ' + terminalName);
|
|
255
|
+
}
|
|
256
|
+
});
|
|
183
257
|
});
|
|
258
|
+
if (process.platform === 'win32') {
|
|
259
|
+
terminal.sendText(`Start-BitsTransfer -Source "${this.leanInstallerWindows}" -Destination "elan-init.ps1"\r\n` +
|
|
260
|
+
'Set-ExecutionPolicy -ExecutionPolicy Unrestricted -Scope Process\r\n' +
|
|
261
|
+
`$rc = .\\elan-init.ps1 -NoPrompt 1 -DefaultToolchain ${this.freshInstallDefaultToolchain}\r\n` +
|
|
262
|
+
'Write-Host "elan-init returned [$rc]"\r\n' +
|
|
263
|
+
'del .\\elan-init.ps1\r\n' +
|
|
264
|
+
'if ($rc -ne 0) {\r\n' +
|
|
265
|
+
' Read-Host -Prompt "Press ENTER to continue"\r\n' +
|
|
266
|
+
'}\r\n' +
|
|
267
|
+
'exit\r\n');
|
|
268
|
+
}
|
|
269
|
+
else {
|
|
270
|
+
const elanArgs = `-y --default-toolchain ${this.freshInstallDefaultToolchain}`;
|
|
271
|
+
const prompt = '(echo && read -n 1 -s -r -p "Install failed, press ENTER to continue...")';
|
|
272
|
+
terminal.sendText(`bash -c 'curl ${this.leanInstallerLinux} -sSf | sh -s -- ${elanArgs} || ${prompt}' && exit `);
|
|
273
|
+
}
|
|
274
|
+
const result = await resultPromise;
|
|
275
|
+
if (!result) {
|
|
276
|
+
displayNotification('Error', 'Elan installation failed. Check the terminal output for details.');
|
|
277
|
+
return 'InstallationFailed';
|
|
278
|
+
}
|
|
279
|
+
return 'Success';
|
|
280
|
+
});
|
|
281
|
+
}
|
|
282
|
+
async uninstallElan() {
|
|
283
|
+
await this.performOperation('Uninstall', async () => {
|
|
284
|
+
const prompt = "This command will uninstall Lean's version manager Elan and all installed Lean versions.\n\n" +
|
|
285
|
+
'Do you wish to proceed?';
|
|
286
|
+
const choice = await displayNotificationWithInput('Information', prompt, ['Proceed']);
|
|
287
|
+
if (choice !== 'Proceed') {
|
|
288
|
+
return;
|
|
289
|
+
}
|
|
290
|
+
const r = await elanSelfUninstall(this.outputChannel, 'Uninstall Elan');
|
|
291
|
+
switch (r.exitCode) {
|
|
292
|
+
case ExecutionExitCode.Success:
|
|
293
|
+
displayNotification('Information', 'Elan uninstalled successfully.');
|
|
294
|
+
break;
|
|
295
|
+
case ExecutionExitCode.CannotLaunch:
|
|
296
|
+
displayNotification('Error', 'Elan is not installed.');
|
|
297
|
+
break;
|
|
298
|
+
case ExecutionExitCode.ExecutionError:
|
|
299
|
+
displayNotification('Error', `Error while installing Elan: ${r.combined}`);
|
|
300
|
+
break;
|
|
301
|
+
case ExecutionExitCode.Cancelled:
|
|
302
|
+
displayNotification('Information', 'Uninstalling Elan cancelled.');
|
|
303
|
+
}
|
|
184
304
|
});
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
'
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
'
|
|
193
|
-
'
|
|
194
|
-
|
|
305
|
+
}
|
|
306
|
+
async performOperation(kind, op) {
|
|
307
|
+
switch (this.pendingOperation) {
|
|
308
|
+
case 'Install':
|
|
309
|
+
displayNotification('Error', 'Elan is being installed. Please wait until the installation has finished.');
|
|
310
|
+
return 'PendingOperation';
|
|
311
|
+
case 'Update':
|
|
312
|
+
displayNotification('Error', 'Elan is being updated. Please wait until the update has finished.');
|
|
313
|
+
return 'PendingOperation';
|
|
314
|
+
case 'Uninstall':
|
|
315
|
+
displayNotification('Error', 'Elan is being uninstalled. Please wait until the deinstallation has finished.');
|
|
316
|
+
return 'PendingOperation';
|
|
317
|
+
case undefined:
|
|
318
|
+
this.pendingOperation = kind;
|
|
319
|
+
try {
|
|
320
|
+
return await op();
|
|
321
|
+
}
|
|
322
|
+
finally {
|
|
323
|
+
this.pendingOperation = undefined;
|
|
324
|
+
}
|
|
195
325
|
}
|
|
196
|
-
else {
|
|
197
|
-
const elanArgs = `-y --default-toolchain ${this.freshInstallDefaultToolchain}`;
|
|
198
|
-
const prompt = '(echo && read -n 1 -s -r -p "Install failed, press ENTER to continue...")';
|
|
199
|
-
terminal.sendText(`bash -c 'curl ${this.leanInstallerLinux} -sSf | sh -s -- ${elanArgs} || ${prompt}' && exit `);
|
|
200
|
-
}
|
|
201
|
-
const result = await resultPromise;
|
|
202
|
-
this.elanDefaultToolchain = this.freshInstallDefaultToolchain;
|
|
203
|
-
this.installing = false;
|
|
204
|
-
if (!result) {
|
|
205
|
-
displayError('Elan installation failed. Check the terminal output for details.');
|
|
206
|
-
return 'InstallationFailed';
|
|
207
|
-
}
|
|
208
|
-
return 'Success';
|
|
209
326
|
}
|
|
210
327
|
}
|
|
@@ -1,24 +1,29 @@
|
|
|
1
|
+
import { Disposable } from 'vscode';
|
|
1
2
|
export type NotificationSeverity = 'Information' | 'Warning' | 'Error';
|
|
3
|
+
export declare function setStickyNotificationActiveButHidden(isActiveButHidden: boolean): Promise<void>;
|
|
4
|
+
export type StickyNotificationOptions<T> = {
|
|
5
|
+
onInput: (lastChoice: T, continueDisplaying: boolean) => Promise<boolean>;
|
|
6
|
+
onDisplay: () => Promise<void>;
|
|
7
|
+
};
|
|
8
|
+
export declare function displayActiveStickyNotification(): void;
|
|
2
9
|
export declare function displayNotification(severity: NotificationSeverity, message: string, finalizer?: (() => void) | undefined): void;
|
|
3
|
-
export declare function
|
|
4
|
-
export declare function
|
|
5
|
-
export declare function
|
|
6
|
-
export
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
export declare function
|
|
11
|
-
export
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
export declare function
|
|
17
|
-
export declare function
|
|
18
|
-
export declare function
|
|
19
|
-
export declare function
|
|
20
|
-
export declare function
|
|
21
|
-
export declare function
|
|
22
|
-
export declare function
|
|
23
|
-
export declare function displayInformationWithOutput(message: string, finalizer?: (() => void) | undefined): void;
|
|
24
|
-
export declare function displayInformationWithSetupGuide(message: string, finalizer?: (() => void) | undefined): void;
|
|
10
|
+
export declare function displayStickyNotification(severity: NotificationSeverity, message: string, options: StickyNotificationOptions<void>): Disposable;
|
|
11
|
+
export declare function displayNotificationWithInput<T extends string>(severity: NotificationSeverity, message: string, items: T[], defaultItem?: T | undefined): Promise<T | undefined>;
|
|
12
|
+
export declare function displayModalNotification(severity: NotificationSeverity, message: string): Promise<void>;
|
|
13
|
+
export type Input<T> = {
|
|
14
|
+
input: T;
|
|
15
|
+
action: () => void;
|
|
16
|
+
};
|
|
17
|
+
export declare function displayNotificationWithOptionalInput<T extends string>(severity: NotificationSeverity, message: string, inputs: Input<T>[], finalizer?: (() => void) | undefined): void;
|
|
18
|
+
export type StickyInput<T> = {
|
|
19
|
+
input: T;
|
|
20
|
+
continueDisplaying: boolean;
|
|
21
|
+
action: () => Promise<void>;
|
|
22
|
+
};
|
|
23
|
+
export declare function displayStickyNotificationWithOptionalInput<T extends string>(severity: NotificationSeverity, message: string, options: StickyNotificationOptions<T>, inputs: StickyInput<T>[]): Disposable;
|
|
24
|
+
export declare function displayNotificationWithOutput(severity: NotificationSeverity, message: string, otherInputs?: Input<string>[], finalizer?: (() => void) | undefined): void;
|
|
25
|
+
export declare function displayModalNotificationWithOutput(severity: NotificationSeverity, message: string, otherItems?: string[], defaultItem?: string | undefined): Promise<'Show Output' | string | undefined>;
|
|
26
|
+
export declare function displayStickyNotificationWithOutput(severity: NotificationSeverity, message: string, options: StickyNotificationOptions<'Show Output' | string>, otherInputs?: StickyInput<string>[]): Disposable;
|
|
27
|
+
export declare function displayNotificationWithSetupGuide(severity: NotificationSeverity, message: string, otherInputs?: Input<string>[], finalizer?: (() => void) | undefined): void;
|
|
28
|
+
export declare function displayStickyNotificationWithSetupGuide(severity: NotificationSeverity, message: string, options: StickyNotificationOptions<'Open Setup Guide' | string>, otherInputs?: StickyInput<string>[]): Disposable;
|
|
29
|
+
export declare function displayModalNotificationWithSetupGuide(severity: NotificationSeverity, message: string, otherItems?: string[], defaultItem?: string | undefined): Promise<'Open Setup Guide' | string | undefined>;
|