/// <summary> /// Closes the document /// </summary> public void Close() { if (IsClosed) { return; } IsClosed = true; Closing?.Invoke(this, null); EditorTree?.Dispose(); // this will also remove event handlers EditorTree = null; if (Closing != null) { foreach (var eh in Closing.GetInvocationList()) { var closingHandler = eh as EventHandler <EventArgs>; if (closingHandler != null) { Debug.Fail(Invariant($"There are still listeners in the EditorDocument.OnDocumentClosing event list: {eh.Target}")); Closing -= closingHandler; } } } EditorBuffer?.Services?.RemoveService(this); EditorBuffer = null; }
public RIntellisenseContext(IEditorIntellisenseSession session, IEditorBuffer editorBuffer, IREditorTree editorTree, int position, bool autoShown = true, bool isRHistoryRequest = false) : base(session, editorBuffer, position) { _editorTree = editorTree; AutoShownCompletion = autoShown; IsRHistoryRequest = isRHistoryRequest; }
public TreeValidator(IREditorTree editorTree, IServiceContainer services) { #if DEBUG TraceValidation.Enabled = false; #endif _editorTree = editorTree; _editorTree.NodesRemoved += OnNodesRemoved; _editorTree.UpdateCompleted += OnTreeUpdateCompleted; _editorTree.Closing += OnTreeClose; _settings = services.GetService <IREditorSettings>(); _idleTime = services.GetService <IIdleTimeService>(); // Advise to settings changed *after* accessing the RSettings, // since accessing the host application (VS) settings object may // cause it fire Changed notification in some cases. _settings.SettingsChanged += OnSettingsChanged; _syntaxCheckEnabled = IsSyntaxCheckEnabled(_editorTree.EditorBuffer, _settings); // We don't want to start validation right away since it may // interfere with the editor perceived startup performance. StartValidationNextIdle(); ValidationResults = new ConcurrentQueue <IValidationError>(); editorTree.EditorBuffer.AddService(this); }
public ErrorTagCollection(IREditorTree editorTree) { RemovedTags = new ConcurrentQueue <EditorErrorTag>(); _editorTree = editorTree; _editorTree.Closing += OnTreeClosing; _editorTree.NodesRemoved += OnNodesRemoved; _editorTree.UpdateCompleted += OnUpdateCompleted; }
public ROutlineRegionBuilder(IREditorDocument document, IServiceContainer services) : base(document.EditorTree.TextBuffer(), services, services.GetService <IREditorSettings>().EnableOutlining) { EditorDocument = document; EditorDocument.Closing += OnDocumentClosing; EditorTree = document.EditorTree; EditorTree.UpdateCompleted += OnTreeUpdateCompleted; EditorTree.Closing += OnEditorTreeClosing; }
private void OnTreeClosing(object sender, EventArgs e) { if (_editorTree != null) { _editorTree.Closing -= OnTreeClosing; _editorTree.NodesRemoved -= OnNodesRemoved; _editorTree.UpdateCompleted -= OnUpdateCompleted; _editorTree = null; } }
private void OnTreeClose(object sender, EventArgs e) { _editorTree.EditorBuffer.RemoveService(this); StopValidation(); _editorTree.NodesRemoved -= OnNodesRemoved; _editorTree.UpdateCompleted -= OnTreeUpdateCompleted; _editorTree.Closing -= OnTreeClose; _editorTree = null; _settings.SettingsChanged -= OnSettingsChanged; _idleTime.Idle -= OnIdle; }
public RSectionsCollection(IREditorTree tree, IReadOnlyList <ITextRange> sections) { _tree = tree; _tree.EditorBuffer.Changed += OnTextBufferChanged; foreach (var s in sections) { var span = s.ToSpan(); _spans.Add(new SpanContent() { TrackingSpan = _tree.TextSnapshot().CreateTrackingSpan(span, SpanTrackingMode.EdgePositive), OriginalLength = s.Length }); } }
public EditorErrorTag(IREditorTree editorTree, IValidationError error) : base(GetErrorType(error), error.Message) { _textBuffer = editorTree.EditorBuffer.As <ITextBuffer>(); var document = _textBuffer.GetEditorDocument <IREditorDocument>(); FileName = document?.FilePath; Description = error.Message; TaskType = GetTaskType(error); _range = error; if (_range == null || _range.Start < 0) { _range = TextRange.EmptyRange; } }
public TextChangeContext(IREditorTree editorTree, TreeTextChange change, TreeTextChange pendingChanges) { EditorTree = editorTree; TreeTextChange ttc; if (change.OldTextProvider == null || change.NewTextProvider == null) { var oldTextProvider = change.OldTextProvider ?? editorTree.AstRoot.TextProvider; var newTextProvider = change.NewTextProvider ?? editorTree.AstRoot.TextProvider; ttc = new TreeTextChange(change.Start, change.OldLength, change.NewLength, oldTextProvider, newTextProvider); } else { ttc = change; } PendingChanges = pendingChanges; PendingChanges.Combine(ttc); }
public EditorDocumentMock(IREditorTree tree) { EditorTree = tree; tree.EditorBuffer.AddService(this); }
/// <summary> /// Retrieves (or creates) the validator (syntax checker) /// for the document that is associated with the text buffer /// </summary> /// <param name="editorTree"></param> /// <param name="services"></param> public static TreeValidator FromEditorBuffer(IREditorTree editorTree, IServiceContainer services) => editorTree.EditorBuffer.GetService <TreeValidator>() ?? new TreeValidator(editorTree, services);
public static ITextBuffer TextBuffer(this IREditorTree tree) => tree.EditorBuffer.As <ITextBuffer>();
public static ITextSnapshot TextSnapshot(this IREditorTree tree) => tree.BufferSnapshot.As <ITextSnapshot>();