@@ -47,40 +47,43 @@ export function FortranDocumentSelector(folder?: vscode.WorkspaceFolder) {
4747 * e.g 'hansec.fortran-ls'
4848 *
4949 * @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
5151 * @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
5255 */
5356export function promptForMissingTool (
5457 tool : string ,
5558 msg : string ,
5659 toolType : string ,
57- logger ?: LoggingService
60+ opts : string [ ] ,
61+ logger ?: LoggingService ,
62+ action ?: ( ) => void
5863) {
5964 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 ;
6871
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 ;
7578
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+ }
8487 } ) ;
8588}
8689
0 commit comments