@@ -47,40 +47,43 @@ export function FortranDocumentSelector(folder?: vscode.WorkspaceFolder) {
47
47
* e.g 'hansec.fortran-ls'
48
48
*
49
49
* @param tool name of the tool e.g. fortran-language-server
50
- * @param msg optional message for installing said package
50
+ * @param msg message for installing said package
51
51
* @param toolType type of tool, supports `Python` (through pip) and 'VSExt'
52
+ * @param opts options for the prompt. "Install" and "Don't Show Again" are coded
53
+ * @param logger log channel output
54
+ * @param action a void function for an action to perform when "Don't Show Again" is pressed
52
55
*/
53
56
export function promptForMissingTool (
54
57
tool : string ,
55
58
msg : string ,
56
59
toolType : string ,
57
- logger ?: LoggingService
60
+ opts : string [ ] ,
61
+ logger ?: LoggingService ,
62
+ action ?: ( ) => void
58
63
) {
59
64
const items = [ 'Install' ] ;
60
- return new Promise ( ( resolve , reject ) => {
61
- resolve (
62
- vscode . window . showInformationMessage ( msg , ...items ) . then ( selected => {
63
- if ( selected === 'Install' ) {
64
- switch ( toolType ) {
65
- case 'Python' :
66
- installPythonTool ( tool , logger ) ;
67
- break ;
65
+ return vscode . window . showInformationMessage ( msg , ...opts ) . then ( selected => {
66
+ if ( selected === 'Install' ) {
67
+ switch ( toolType ) {
68
+ case 'Python' :
69
+ installPythonTool ( tool , logger ) ;
70
+ break ;
68
71
69
- case 'VSExt' :
70
- logger . logInfo ( `Installing VS Marketplace Extension with id: ${ tool } ` ) ;
71
- vscode . commands . executeCommand ( 'extension.open' , tool ) ;
72
- vscode . commands . executeCommand ( 'workbench.extensions.installExtension' , tool ) ;
73
- logger . logInfo ( `Extension ${ tool } successfully installed` ) ;
74
- break ;
72
+ case 'VSExt' :
73
+ logger . logInfo ( `Installing VS Marketplace Extension with id: ${ tool } ` ) ;
74
+ vscode . commands . executeCommand ( 'extension.open' , tool ) ;
75
+ vscode . commands . executeCommand ( 'workbench.extensions.installExtension' , tool ) ;
76
+ logger . logInfo ( `Extension ${ tool } successfully installed` ) ;
77
+ break ;
75
78
76
- default :
77
- logger . logError ( `Failed to install tool: ${ tool } ` ) ;
78
- vscode . window . showErrorMessage ( `Failed to install tool: ${ tool } ` ) ;
79
- break ;
80
- }
81
- }
82
- } )
83
- ) ;
79
+ default :
80
+ logger . logError ( `Failed to install tool: ${ tool } ` ) ;
81
+ vscode . window . showErrorMessage ( `Failed to install tool: ${ tool } ` ) ;
82
+ break ;
83
+ }
84
+ } else if ( selected === "Don't Show Again" ) {
85
+ action ( ) ;
86
+ }
84
87
} ) ;
85
88
}
86
89
0 commit comments