@@ -174,6 +174,26 @@ function setupStatusBarItems(context: vscode.ExtensionContext) {
174174 } ) ;
175175
176176 let menuItems = getMenuItems ( ) ;
177+
178+ // Always register the command, regardless of menu items
179+ let disposable = vscode . commands . registerCommand ( 'extension.openMenu' , ( ) => {
180+ const items = getMenuItems ( ) ;
181+ if ( ! items || items . length === 0 ) {
182+ // Directly open settings and show a temporary notification
183+ vscode . commands . executeCommand ( 'workbench.action.openSettings' , 'smart.menuCommands' ) ;
184+ vscode . window . setStatusBarMessage ( '$(info) 自定义菜单命令未配置,请添加自定义命令' , 5000 ) ;
185+ } else {
186+ vscode . window . showQuickPick ( items ) . then ( selectedItem => {
187+ if ( selectedItem ) {
188+ executeCommand ( selectedItem ) ;
189+ }
190+ } ) ;
191+ }
192+ } ) ;
193+
194+ context . subscriptions . push ( disposable ) ;
195+
196+ // Only show status bar item if menu items exist
177197 if ( menuItems && menuItems . length > 0 ) {
178198 const statusItem = vscode . window . createStatusBarItem ( vscode . StatusBarAlignment . Right , 100 ) ;
179199 statusItem . text = '$(menu) 自定义构建...' ;
@@ -182,17 +202,6 @@ function setupStatusBarItems(context: vscode.ExtensionContext) {
182202 statusItem . show ( ) ;
183203
184204 context . subscriptions . push ( statusItem ) ;
185-
186- let disposable = vscode . commands . registerCommand ( 'extension.openMenu' , ( ) => {
187- const items = getMenuItems ( ) ;
188- vscode . window . showQuickPick ( items ) . then ( selectedItem => {
189- if ( selectedItem ) {
190- executeCommand ( selectedItem ) ;
191- }
192- } ) ;
193- } ) ;
194-
195- context . subscriptions . push ( disposable ) ;
196205 }
197206}
198207
0 commit comments