public IAsyncContextMenu ShowContextMenu(string header, bool async, params ContextMenuItem[] contextMenuItems) { var contextMenuManager = new ContextMenuManager(UiResourceProvider.Instance); ContextMenu contextMenu = contextMenuManager.CreateContextMenu(header, contextMenuItems); var caretPosition = VsUtils.GetCaretPosition(IdeScope.ServiceProvider); if (caretPosition != null) { Logger.LogVerbose($"Caret screen position: {caretPosition.Value.X}:{caretPosition.Value.Y}"); contextMenuManager.ShowContextMenu(contextMenu, caretPosition.Value); } else { contextMenuManager.ShowContextMenu(contextMenu); } if (async) { return(new AsyncContextMenu(contextMenu, IdeScope, contextMenuManager)); } return(null); }