public async void VsTextViewCreated(IVsTextView textViewAdapter) { IWpfTextView view = AdaptersFactory.GetWpfTextView(textViewAdapter); if (!DocumentService.TryGetTextDocument(view.TextBuffer, out ITextDocument doc)) { return; } string ext = Path.GetExtension(doc.FilePath); if (!FileExtensions.Contains(ext, StringComparer.OrdinalIgnoreCase)) { return; } ITextBufferUndoManager undoManager = UndoProvider.GetTextBufferUndoManager(view.TextBuffer); NodeProcess node = view.Properties.GetOrCreateSingletonProperty(() => new NodeProcess()); AddCommandFilter(textViewAdapter, new AutoPrefixCommand(view, undoManager, node)); if (!node.IsReadyToExecute()) { await Install(node); } }
private static async System.Threading.Tasks.Task Install(NodeProcess node) { var statusbar = (IVsStatusbar)ServiceProvider.GlobalProvider.GetService(typeof(SVsStatusbar)); statusbar.FreezeOutput(0); statusbar.SetText($"Installing {NodeProcess.Packages} npm modules..."); statusbar.FreezeOutput(1); bool success = await node.EnsurePackageInstalled(); string status = success ? "Done" : "Failed"; statusbar.FreezeOutput(0); statusbar.SetText($"Installing {NodeProcess.Packages} npm modules... {status}"); statusbar.FreezeOutput(1); }
public AutoPrefixCommand(IWpfTextView view, ITextBufferUndoManager undoManager, NodeProcess node) { _view = view; _undoManager = undoManager; _node = node; }