@@ -11,11 +11,18 @@ import { ServerState } from './serverStateChange';
1111import { getCSharpDevKit } from '../utils/getCSharpDevKit' ;
1212import { RazorLanguage } from '../razor/src/razorLanguage' ;
1313
14+ let currentServerState : ServerState = ServerState . Stopped ;
15+
1416export function registerLanguageStatusItems (
1517 context : vscode . ExtensionContext ,
1618 languageServer : RoslynLanguageServer ,
1719 languageServerEvents : RoslynLanguageServerEvents
1820) {
21+ // Track the current server state.
22+ languageServerEvents . onServerStateChange ( ( e ) => {
23+ currentServerState = e . state ;
24+ } ) ;
25+
1926 // DevKit will provide an equivalent workspace status item.
2027 if ( ! getCSharpDevKit ( ) ) {
2128 WorkspaceStatus . createStatusItem ( context , languageServerEvents ) ;
@@ -44,14 +51,16 @@ class WorkspaceStatus {
4451
4552 const item = vscode . languages . createLanguageStatusItem ( 'csharp.workspaceStatus' , documentSelector ) ;
4653 item . name = vscode . l10n . t ( 'C# Workspace Status' ) ;
54+ item . severity = vscode . LanguageStatusSeverity . Error ;
55+ item . command = openSolutionCommand ;
4756 context . subscriptions . push ( item ) ;
4857
4958 languageServerEvents . onServerStateChange ( ( e ) => {
5059 item . text = e . workspaceLabel ;
5160 item . busy = e . state === ServerState . ProjectInitializationStarted ;
5261 item . severity =
5362 e . state === ServerState . Stopped
54- ? vscode . LanguageStatusSeverity . Warning
63+ ? vscode . LanguageStatusSeverity . Error
5564 : vscode . LanguageStatusSeverity . Information ;
5665 item . command = e . state === ServerState . Stopped ? restartServerCommand : openSolutionCommand ;
5766 } ) ;
@@ -73,6 +82,16 @@ class ProjectContextStatus {
7382
7483 projectContextService . onActiveFileContextChanged ( ( e ) => {
7584 item . text = e . context . _vs_label ;
85+
86+ // Show a warning when the active file is part of the Miscellaneous File workspace and
87+ // project initialization is complete.
88+ if ( currentServerState === ServerState . ProjectInitializationComplete ) {
89+ item . severity = e . context . _vs_is_miscellaneous
90+ ? vscode . LanguageStatusSeverity . Warning
91+ : vscode . LanguageStatusSeverity . Information ;
92+ } else {
93+ item . severity = vscode . LanguageStatusSeverity . Information ;
94+ }
7695 } ) ;
7796
7897 // Trigger a refresh, but don't block creation on the refresh completing.
0 commit comments