protected override async Task UpdateAsync(CommandArrayInfo info, CancellationToken cancelToken) { var editor = IdeApp.Workbench.ActiveDocument?.Editor; var ext = editor?.GetContent <CodeActionEditorExtension> (); if (ext == null) { return; } var quickFixMenu = new CommandInfoSet(); quickFixMenu.Text = GettextCatalog.GetString("Quick Fix"); quickFixMenu.CommandInfos.Add(new CommandInfo(GettextCatalog.GetString("Loading..."), false, false), null); info.Add(quickFixMenu); try { var menu = await CodeFixMenuService.CreateFixMenu(editor, ext.GetCurrentFixes(), cancelToken); quickFixMenu.CommandInfos.Clear(); foreach (var item in menu.Items) { AddItem(quickFixMenu, item); } if (menu.Items.Count == 0) { quickFixMenu.CommandInfos.Add(new CommandInfo(GettextCatalog.GetString("No code fixes available"), false, false), null); } } catch (OperationCanceledException) { } catch (Exception e) { LoggingService.LogError("Error while creating quick fix menu.", e); quickFixMenu.CommandInfos.Clear(); quickFixMenu.CommandInfos.Add(new CommandInfo(GettextCatalog.GetString("No code fixes available"), false, false), null); } }
protected override async Task UpdateAsync(CommandArrayInfo info, CancellationToken cancelToken) { var editor = IdeApp.Workbench.ActiveDocument?.Editor; var ext = editor?.GetContent <CodeActionEditorExtension> (); if (ext == null) { return; } var metadata = new Counters.FixesMenuMetadata(); using (var timer = Counters.FixesMenu.BeginTiming("Quick Fix menu", metadata)) { try { info.Add(new CommandInfo(GettextCatalog.GetString("Loading..."), false, false), null); var currentFixes = await ext.GetCurrentFixesAsync(cancelToken); var menu = CodeFixMenuService.CreateFixMenu(editor, currentFixes, cancelToken); info.Clear(); foreach (var item in menu.Items) { AddItem(info, item); } if (menu.Items.Count == 0) { info.Add(new CommandInfo(GettextCatalog.GetString("No code fixes available"), false, false), null); } metadata.SetSuccess(); info.NotifyChanged(); } catch (OperationCanceledException) { metadata.SetUserCancel(); } catch (Exception e) { metadata.SetFailure(); LoggingService.LogError("Error while creating quick fix menu.", e); info.Clear(); info.Add(new CommandInfo(GettextCatalog.GetString("No code fixes available"), false, false), null); info.NotifyChanged(); } } }