void HandleActivatedDiagnostic(EditCodeVM vm, CompilerDiagnosticVM diag) { if (string.IsNullOrEmpty(diag.FullPath)) { return; } var doc = vm.Documents.FirstOrDefault(a => a.Name == diag.FullPath); Debug.Assert(doc != null); if (doc == null) { return; } vm.SelectedDocument = doc; if (diag.LineLocationSpan != null) { UIUtilities.Focus(doc.TextView.VisualElement, () => { // The caret isn't always moved unless we wait a little Dispatcher.BeginInvoke(DispatcherPriority.Background, new Action(() => { if (doc == vm.SelectedDocument) { doc.TextView.MoveCaretTo(diag.LineLocationSpan.Value.StartLinePosition.Line, diag.LineLocationSpan.Value.StartLinePosition.Character); doc.TextView.Caret.EnsureVisible(); doc.TextView.Selection.Clear(); } })); }); } }
protected override CodeEditorContext CreateContext(IMenuItemContext context) { if (context.CreatorObject.Guid != new Guid(MenuConstants.GUIDOBJ_CODE_EDITOR_GUID)) { return(null); } var codeEditor = context.Find <ICodeEditor>(); if (codeEditor == null) { return(null); } var vm = EditCodeVM.TryGet(codeEditor.TextView); if (vm == null) { return(null); } return(new CodeEditorContext(vm, codeEditor)); }
public CodeEditorContext(EditCodeVM vm, ICodeEditor codeEditor) { VM = vm; CodeEditor = codeEditor; }
EditCodeVM TryGetInstance() => __editCodeVM ?? (__editCodeVM = EditCodeVM.TryGet(textView));