@@ -10,12 +10,20 @@ import { languageServerOptions } from '../shared/options';
1010import { ServerState } from './serverStateChange' ;
1111import { getCSharpDevKit } from '../utils/getCSharpDevKit' ;
1212import { RazorLanguage } from '../razor/src/razorLanguage' ;
13+ import { VSWorkspaceKind } from './roslynProtocol' ;
14+
15+ let currentServerState : ServerState = ServerState . Stopped ;
1316
1417export function registerLanguageStatusItems (
1518 context : vscode . ExtensionContext ,
1619 languageServer : RoslynLanguageServer ,
1720 languageServerEvents : RoslynLanguageServerEvents
1821) {
22+ // Track the current server state.
23+ languageServerEvents . onServerStateChange ( ( e ) => {
24+ currentServerState = e . state ;
25+ } ) ;
26+
1927 // DevKit will provide an equivalent workspace status item.
2028 if ( ! getCSharpDevKit ( ) ) {
2129 WorkspaceStatus . createStatusItem ( context , languageServerEvents ) ;
@@ -44,14 +52,16 @@ class WorkspaceStatus {
4452
4553 const item = vscode . languages . createLanguageStatusItem ( 'csharp.workspaceStatus' , documentSelector ) ;
4654 item . name = vscode . l10n . t ( 'C# Workspace Status' ) ;
55+ item . severity = vscode . LanguageStatusSeverity . Error ;
56+ item . command = openSolutionCommand ;
4757 context . subscriptions . push ( item ) ;
4858
4959 languageServerEvents . onServerStateChange ( ( e ) => {
5060 item . text = e . workspaceLabel ;
5161 item . busy = e . state === ServerState . ProjectInitializationStarted ;
5262 item . severity =
5363 e . state === ServerState . Stopped
54- ? vscode . LanguageStatusSeverity . Warning
64+ ? vscode . LanguageStatusSeverity . Error
5565 : vscode . LanguageStatusSeverity . Information ;
5666 item . command = e . state === ServerState . Stopped ? restartServerCommand : openSolutionCommand ;
5767 } ) ;
@@ -73,6 +83,17 @@ class ProjectContextStatus {
7383
7484 projectContextService . onActiveFileContextChanged ( ( e ) => {
7585 item . text = e . context . _vs_label ;
86+
87+ // Show a warning when the active file is part of the Miscellaneous File workspace and
88+ // project initialization is complete.
89+ if ( currentServerState === ServerState . ProjectInitializationComplete ) {
90+ item . severity =
91+ e . context . _vs_workspace_kind === VSWorkspaceKind . MiscellaneousFiles
92+ ? vscode . LanguageStatusSeverity . Warning
93+ : vscode . LanguageStatusSeverity . Information ;
94+ } else {
95+ item . severity = vscode . LanguageStatusSeverity . Information ;
96+ }
7697 } ) ;
7798
7899 // Trigger a refresh, but don't block creation on the refresh completing.
0 commit comments