@@ -48,29 +48,43 @@ export async function activate(context: vscode.ExtensionContext): Promise<void>
4848 traceLog ( `Module: ${ serverInfo . module } ` ) ;
4949 traceVerbose ( `Full Server Info: ${ JSON . stringify ( serverInfo ) } ` ) ;
5050
51+ let isRestarting = false ;
52+ let restartTimer : NodeJS . Timeout | undefined ;
5153 const runServer = async ( ) => {
52- const interpreter = getInterpreterFromSetting ( serverId ) ;
53- if ( interpreter && interpreter . length > 0 ) {
54- if ( checkVersion ( await resolveInterpreter ( interpreter ) ) ) {
55- traceVerbose ( `Using interpreter from ${ serverInfo . module } .interpreter: ${ interpreter . join ( ' ' ) } ` ) ;
56- lsClient = await restartServer ( serverId , serverName , outputChannel , lsClient ) ;
54+ if ( isRestarting ) {
55+ if ( restartTimer ) {
56+ clearTimeout ( restartTimer ) ;
5757 }
58+ restartTimer = setTimeout ( runServer , 1000 ) ;
5859 return ;
5960 }
61+ isRestarting = true ;
62+ try {
63+ const interpreter = getInterpreterFromSetting ( serverId ) ;
64+ if ( interpreter && interpreter . length > 0 ) {
65+ if ( checkVersion ( await resolveInterpreter ( interpreter ) ) ) {
66+ traceVerbose ( `Using interpreter from ${ serverInfo . module } .interpreter: ${ interpreter . join ( ' ' ) } ` ) ;
67+ lsClient = await restartServer ( serverId , serverName , outputChannel , lsClient ) ;
68+ }
69+ return ;
70+ }
6071
61- const interpreterDetails = await getInterpreterDetails ( ) ;
62- if ( interpreterDetails . path ) {
63- traceVerbose ( `Using interpreter from Python extension: ${ interpreterDetails . path . join ( ' ' ) } ` ) ;
64- lsClient = await restartServer ( serverId , serverName , outputChannel , lsClient ) ;
65- return ;
66- }
72+ const interpreterDetails = await getInterpreterDetails ( ) ;
73+ if ( interpreterDetails . path ) {
74+ traceVerbose ( `Using interpreter from Python extension: ${ interpreterDetails . path . join ( ' ' ) } ` ) ;
75+ lsClient = await restartServer ( serverId , serverName , outputChannel , lsClient ) ;
76+ return ;
77+ }
6778
68- traceError (
69- 'Python interpreter missing:\r\n' +
70- '[Option 1] Select python interpreter using the ms-python.python.\r\n' +
71- `[Option 2] Set an interpreter using "${ serverId } .interpreter" setting.\r\n` +
72- 'Please use Python 3.8 or greater.' ,
73- ) ;
79+ traceError (
80+ 'Python interpreter missing:\r\n' +
81+ '[Option 1] Select python interpreter using the ms-python.python.\r\n' +
82+ `[Option 2] Set an interpreter using "${ serverId } .interpreter" setting.\r\n` +
83+ 'Please use Python 3.8 or greater.' ,
84+ ) ;
85+ } finally {
86+ isRestarting = false ;
87+ }
7488 } ;
7589
7690 context . subscriptions . push (
0 commit comments