Beispiel #1
0
        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);
        }
Beispiel #2
0
        internal void RemoveBuffer(ITextBuffer subjectBuffer)
        {
            lock (this) {
                EnsureMutableBuffers();

                UninitBuffer(subjectBuffer);

                _buffers.Remove(subjectBuffer);

                _parser.DisconnectErrorList(AnalysisEntry, subjectBuffer);
            }
        }
Beispiel #3
0
 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>();
     }
 }
Beispiel #4
0
        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;
            }
        }