@@ -32,11 +32,14 @@ export class InoLanguage extends SketchContribution {
32
32
private languageServerStartMutex = new Mutex ( ) ;
33
33
34
34
override onReady ( ) : void {
35
- const start = ( { selectedBoard } : BoardsConfig . Config ) => {
35
+ const start = (
36
+ { selectedBoard } : BoardsConfig . Config ,
37
+ forceStart = false
38
+ ) => {
36
39
if ( selectedBoard ) {
37
40
const { name, fqbn } = selectedBoard ;
38
41
if ( fqbn ) {
39
- this . startLanguageServer ( fqbn , name ) ;
42
+ this . startLanguageServer ( fqbn , name , forceStart ) ;
40
43
}
41
44
}
42
45
} ;
@@ -49,11 +52,12 @@ export class InoLanguage extends SketchContribution {
49
52
) ;
50
53
this . preferences . onPreferenceChanged (
51
54
( { preferenceName, oldValue, newValue } ) => {
52
- if (
53
- preferenceName === 'arduino.language.log' &&
54
- newValue !== oldValue
55
- ) {
56
- start ( this . boardsServiceProvider . boardsConfig ) ;
55
+ if ( oldValue !== newValue ) {
56
+ switch ( preferenceName ) {
57
+ case 'arduino.language.log' :
58
+ case 'arduino.language.realTimeDiagnostics' :
59
+ start ( this . boardsServiceProvider . boardsConfig , true ) ;
60
+ }
57
61
}
58
62
}
59
63
) ;
@@ -62,7 +66,8 @@ export class InoLanguage extends SketchContribution {
62
66
63
67
private async startLanguageServer (
64
68
fqbn : string ,
65
- name : string | undefined
69
+ name : string | undefined ,
70
+ forceStart = false
66
71
) : Promise < void > {
67
72
const port = await this . daemon . tryGetPort ( ) ;
68
73
if ( ! port ) {
@@ -96,7 +101,7 @@ export class InoLanguage extends SketchContribution {
96
101
}
97
102
return ;
98
103
}
99
- if ( fqbn === this . languageServerFqbn ) {
104
+ if ( ! forceStart && fqbn === this . languageServerFqbn ) {
100
105
// NOOP
101
106
return ;
102
107
}
0 commit comments