internal int RemoveBuffer(ITextBuffer subjectBuffer) { int result; var bi = PythonTextBufferInfo.TryGetForBuffer(subjectBuffer); lock (this) { if (bi != null) { var existing = _buffers.FirstOrDefault(b => b.Buffer == bi); if (existing != null && existing.Release()) { _buffers = _buffers.Where(b => b != existing).ToArray(); bi.RemoveSink(this); VsProjectAnalyzer.DisconnectErrorList(bi); _bufferIdMapping.Remove(bi.AnalysisBufferId); bi.SetAnalysisBufferId(-1); bi.Buffer.Properties.RemoveProperty(typeof(PythonTextBufferInfo)); } } result = _buffers.Length; } return(result); }
internal void RemoveBuffer(ITextBuffer subjectBuffer) { lock (this) { EnsureMutableBuffers(); UninitBuffer(subjectBuffer); _buffers.Remove(subjectBuffer); _parser.DisconnectErrorList(AnalysisEntry, subjectBuffer); } }
internal void ClearBuffers() { lock (this) { DefaultBufferInfo = null; foreach (var bi in _buffers) { bi.Buffer.ClearAnalysisEntry(); bi.Buffer.RemoveSink(this); VsProjectAnalyzer.DisconnectErrorList(bi.Buffer); } _buffers = Array.Empty <PythonTextBufferInfoWithRefCount>(); } }
private void UninitBuffer(PythonTextBufferInfo subjectBuffer) { if (subjectBuffer == null) { throw new ArgumentNullException(nameof(subjectBuffer)); } subjectBuffer.OnChangedLowPriority -= BufferChangedLowPriority; VsProjectAnalyzer.DisconnectErrorList(subjectBuffer); lock (this) { _bufferIdMapping.Remove(subjectBuffer.AnalysisEntryId); subjectBuffer.SetAnalysisEntryId(-1); } if (_document != null) { _document.EncodingChanged -= EncodingChanged; _document = null; } }